FABulous¶
synth_fabulous - FABulous synthesis script¶
- yosys> help synth_fabulous¶
- synth_fabulous [options]¶
This command runs synthesis for FPGA fabrics generated with FABulous. This command does not operate on partly selected designs.
-top <module>use the specified module as top module (default='top')
-auto-topautomatically determine the top of the design hierarchy
-json <file>write the design to the specified JSON file. writing of an output file is omitted if this parameter is not specified.
-lut <k>perform synthesis for a k-LUT architecture (default 4).
-ff <cell_type_pattern> <init_values>convert FFs to cell types via dfflegalize (can be specified multiple times).
-cells-map <cells_map>map luts to corresponding cells.
-arith-map <arith_map>mapping file for arithmetic operations.
-clkbuf-map <clkbuf_map>insert clock buffers using clkbufmap and map to the specified Verilog file.
-multiplier-map <multiplier_map> <a_max> <b_max> <a_min> <b_min> <y_min>convert multiplications to multiplier primitives and map to the specified Verilog file.
-extra-plib <primitive_library.v>use the specified Verilog file for extra primitives (can be specified multiple times).
-extra-map <techmap.v>use the specified Verilog file for extra techmap rules (can be specified multiple times).
-extra-mlibmap <memory_map.txt>use the provided library convert memory into hardware supported memory (can be specified multiple times).
-nofsmdo not run FSM optimization
-noalumaccdo not run 'alumacc' pass. i.e. keep arithmetic operators in their direct form ($add, $sub, etc.).
-carry <none|ha>carry mapping style (none, half-adders, ...) default=none
-noiopaddisable I/O buffer insertion (useful for hierarchical or out-of-context flows).
-noflattendo not flatten design after elaboration
-nordffpassed to 'memory'. prohibits merging of FFs into memory read ports
-nosharedo not run SAT-based resource sharing
-run <from_label>[:<to_label>]only run the commands between the labels (see below). an empty from label is synonymous to 'begin', and empty to label is synonymous to the end of the command list.
-no-rw-checkmarks all recognized read ports as "return don't-care value on read/write collision" (same result as setting the no_rw_check attribute on all memories).
-latches <info|warn|error>select the behaviour for latches that cannot be mapped to a dedicated hardware primitive and are implemented using LUTs instead. 'error' (the default) aborts synthesis, 'warn' only prints a warning, and 'info' permits them with an info-level message.
The following commands are executed by this synthesis command: read_verilog -lib <extra_plib.v> (for each -extra-plib) begin: hierarchy -check proc -latches warn flatten: (unless -noflatten) check flatten tribuf -logic deminout coarse: tribuf -logic deminout opt_expr opt_clean check opt -nodffe -nosdff fsm (unless -nofsm) opt wreduce peepopt opt_clean techmap -map +/cmp2lut.v -map +/cmp2lcu.v (if -lut) wreduce t:$mul techmap -map +/mul2dsp.v -map <multiplier_map> -D DSP_A_MAXWIDTH=<a_max> -D DSP_B_MAXWIDTH=<b_max> -D DSP_A_MINWIDTH=<a_min> -D DSP_B_MINWIDTH=<b_min> -D DSP_Y_MINWIDTH=<y_min> -D DSP_NAME=$__FABULOUS_MUL (if -multiplier-map) select a:mul2dsp (if -multiplier-map) setattr -unset mul2dsp (if -multiplier-map) opt_expr -fine (if -multiplier-map) wreduce (if -multiplier-map) select -clear (if -multiplier-map) chtype -set $mul t:$__soft_mul (if -multiplier-map) alumacc (unless -noalumacc) share (unless -noshare) opt memory -nomap opt_clean map_memory: memory_libmap -lib <memory_map.txt> (for each -extra-mlibmap) map_ffram: opt -fast -mux_undef -undriven -fine memory_map opt -undriven -fine map_arith: techmap -map <arith_map.v> -D ARITH_<carry> clean map_gates: opt -full techmap -map +/techmap.v opt -fast map_iopad: (skip if -noiopad) opt -full iopadmap -bits -inpad $__FABULOUS_IBUF OUT:PAD -outpad $__FABULOUS_OBUF IN:PAD -toutpad $__FABULOUS_TBUF EN:IN:PAD -tinoutpad $__FABULOUS_IOBUF EN:OUT:IN:PAD map_ffs: dfflegalize -cell <cell_type_pattern> <init_values>... (for each -ff) check -latchonly -assert (only if -latches error, the default) opt_merge map_extra: techmap -map <extra_map.v>... (for each -extra-map) simplemap clean map_luts: abc -lut 4 -dress clean map_cells: techmap -D LUT_K=<lut> -map <cells_map.v> clean map_clkbufs: clkbufmap -buf $__FABULOUS_GBUF OUT:IN (if -clkbuf-map <clkbuf_map.v>) techmap -map <clkbuf_map.v> (if -clkbuf-map <clkbuf_map.v>) check: hierarchy -check stat json: write_json <file-name>Note
Help text automatically generated from
techlibs/fabulous/synth_fabulous.cc:29