mirror of https://github.com/YosysHQ/yosys.git
2332 lines
90 KiB
Plaintext
2332 lines
90 KiB
Plaintext
|
|
||
|
-- Executing script file `fifo.ys' --
|
||
|
$ yosys fifo.v
|
||
|
|
||
|
-- Parsing `fifo.v' using frontend ` -vlog2k' --
|
||
|
|
||
|
1. Executing Verilog-2005 frontend: fifo.v
|
||
|
Parsing Verilog input from `fifo.v' to AST representation.
|
||
|
Storing AST representation for module `$abstract\addr_gen'.
|
||
|
Storing AST representation for module `$abstract\fifo'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
echo on
|
||
|
|
||
|
yosys> hierarchy -top addr_gen
|
||
|
|
||
|
2. Executing HIERARCHY pass (managing design hierarchy).
|
||
|
|
||
|
3. Executing AST frontend in derive mode using pre-parsed AST for module `\addr_gen'.
|
||
|
Generating RTLIL representation for module `\addr_gen'.
|
||
|
|
||
|
3.1. Analyzing design hierarchy..
|
||
|
Top module: \addr_gen
|
||
|
|
||
|
3.2. Analyzing design hierarchy..
|
||
|
Top module: \addr_gen
|
||
|
Removing unused module `$abstract\fifo'.
|
||
|
Removing unused module `$abstract\addr_gen'.
|
||
|
Removed 2 unused modules.
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix addr_gen_hier
|
||
|
|
||
|
4. Generating Graphviz representation of design.
|
||
|
Writing dot description to `addr_gen_hier.dot'.
|
||
|
Dumping module addr_gen to page 1.
|
||
|
|
||
|
yosys> proc
|
||
|
|
||
|
5. Executing PROC pass (convert processes to netlists).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
5.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Cleaned up 0 empty switches.
|
||
|
|
||
|
yosys> proc_rmdead
|
||
|
|
||
|
5.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
|
||
|
Marked 2 switch rules as full_case in process $proc$fifo.v:13$1 in module addr_gen.
|
||
|
Removed a total of 0 dead cases.
|
||
|
|
||
|
yosys> proc_prune
|
||
|
|
||
|
5.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
|
||
|
Removed 0 redundant assignments.
|
||
|
Promoted 1 assignment to connection.
|
||
|
|
||
|
yosys> proc_init
|
||
|
|
||
|
5.4. Executing PROC_INIT pass (extract init attributes).
|
||
|
Found init rule in `\addr_gen.$proc$fifo.v:0$4'.
|
||
|
Set init value: \addr = 8'00000000
|
||
|
|
||
|
yosys> proc_arst
|
||
|
|
||
|
5.5. Executing PROC_ARST pass (detect async resets in processes).
|
||
|
Found async reset \rst in `\addr_gen.$proc$fifo.v:13$1'.
|
||
|
|
||
|
yosys> proc_rom
|
||
|
|
||
|
5.6. Executing PROC_ROM pass (convert switches to ROMs).
|
||
|
Converted 0 switches.
|
||
|
<suppressed ~2 debug messages>
|
||
|
|
||
|
yosys> proc_mux
|
||
|
|
||
|
5.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
|
||
|
Creating decoders for process `\addr_gen.$proc$fifo.v:0$4'.
|
||
|
Creating decoders for process `\addr_gen.$proc$fifo.v:13$1'.
|
||
|
1/1: $0\addr[7:0]
|
||
|
|
||
|
yosys> proc_dlatch
|
||
|
|
||
|
5.8. Executing PROC_DLATCH pass (convert process syncs to latches).
|
||
|
|
||
|
yosys> proc_dff
|
||
|
|
||
|
5.9. Executing PROC_DFF pass (convert process syncs to FFs).
|
||
|
Creating register for signal `\addr_gen.\addr' using process `\addr_gen.$proc$fifo.v:13$1'.
|
||
|
created $adff cell `$procdff$10' with positive edge clock and positive level reset.
|
||
|
|
||
|
yosys> proc_memwr
|
||
|
|
||
|
5.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
5.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Removing empty process `addr_gen.$proc$fifo.v:0$4'.
|
||
|
Found and cleaned up 2 empty switches in `\addr_gen.$proc$fifo.v:13$1'.
|
||
|
Removing empty process `addr_gen.$proc$fifo.v:13$1'.
|
||
|
Cleaned up 2 empty switches.
|
||
|
|
||
|
yosys> opt_expr -keepdc
|
||
|
|
||
|
5.12. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module addr_gen.
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix addr_gen_proc
|
||
|
|
||
|
6. Generating Graphviz representation of design.
|
||
|
Writing dot description to `addr_gen_proc.dot'.
|
||
|
Dumping module addr_gen to page 1.
|
||
|
|
||
|
yosys> design -reset
|
||
|
|
||
|
yosys> read_verilog fifo.v
|
||
|
|
||
|
7. Executing Verilog-2005 frontend: fifo.v
|
||
|
Parsing Verilog input from `fifo.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\addr_gen'.
|
||
|
Generating RTLIL representation for module `\fifo'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
yosys> hierarchy -check -top fifo
|
||
|
|
||
|
8. Executing HIERARCHY pass (managing design hierarchy).
|
||
|
|
||
|
8.1. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: \addr_gen
|
||
|
Parameter \MAX_DATA = 256
|
||
|
|
||
|
8.2. Executing AST frontend in derive mode using pre-parsed AST for module `\addr_gen'.
|
||
|
Parameter \MAX_DATA = 256
|
||
|
Generating RTLIL representation for module `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000'.
|
||
|
Parameter \MAX_DATA = 256
|
||
|
Found cached RTLIL representation for module `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000'.
|
||
|
|
||
|
8.3. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000
|
||
|
|
||
|
8.4. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000
|
||
|
Removing unused module `\addr_gen'.
|
||
|
Removed 1 unused modules.
|
||
|
|
||
|
yosys> proc
|
||
|
|
||
|
9. Executing PROC pass (convert processes to netlists).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
9.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Cleaned up 0 empty switches.
|
||
|
|
||
|
yosys> proc_rmdead
|
||
|
|
||
|
9.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
|
||
|
Marked 2 switch rules as full_case in process $proc$fifo.v:64$24 in module fifo.
|
||
|
Marked 1 switch rules as full_case in process $proc$fifo.v:38$16 in module fifo.
|
||
|
Marked 2 switch rules as full_case in process $proc$fifo.v:13$32 in module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
Removed a total of 0 dead cases.
|
||
|
|
||
|
yosys> proc_prune
|
||
|
|
||
|
9.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
|
||
|
Removed 0 redundant assignments.
|
||
|
Promoted 6 assignments to connections.
|
||
|
|
||
|
yosys> proc_init
|
||
|
|
||
|
9.4. Executing PROC_INIT pass (extract init attributes).
|
||
|
Found init rule in `\fifo.$proc$fifo.v:0$31'.
|
||
|
Set init value: \count = 9'000000000
|
||
|
Found init rule in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$35'.
|
||
|
Set init value: \addr = 8'00000000
|
||
|
|
||
|
yosys> proc_arst
|
||
|
|
||
|
9.5. Executing PROC_ARST pass (detect async resets in processes).
|
||
|
Found async reset \rst in `\fifo.$proc$fifo.v:64$24'.
|
||
|
Found async reset \rst in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$32'.
|
||
|
|
||
|
yosys> proc_rom
|
||
|
|
||
|
9.6. Executing PROC_ROM pass (convert switches to ROMs).
|
||
|
Converted 0 switches.
|
||
|
<suppressed ~5 debug messages>
|
||
|
|
||
|
yosys> proc_mux
|
||
|
|
||
|
9.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:0$31'.
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:64$24'.
|
||
|
1/1: $0\count[8:0]
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:38$16'.
|
||
|
1/3: $1$memwr$\data$fifo.v:40$15_EN[7:0]$22
|
||
|
2/3: $1$memwr$\data$fifo.v:40$15_DATA[7:0]$21
|
||
|
3/3: $1$memwr$\data$fifo.v:40$15_ADDR[7:0]$20
|
||
|
Creating decoders for process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$35'.
|
||
|
Creating decoders for process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$32'.
|
||
|
1/1: $0\addr[7:0]
|
||
|
|
||
|
yosys> proc_dlatch
|
||
|
|
||
|
9.8. Executing PROC_DLATCH pass (convert process syncs to latches).
|
||
|
|
||
|
yosys> proc_dff
|
||
|
|
||
|
9.9. Executing PROC_DFF pass (convert process syncs to FFs).
|
||
|
Creating register for signal `\fifo.\count' using process `\fifo.$proc$fifo.v:64$24'.
|
||
|
created $adff cell `$procdff$55' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\fifo.\rdata' using process `\fifo.$proc$fifo.v:38$16'.
|
||
|
created $dff cell `$procdff$56' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$15_ADDR' using process `\fifo.$proc$fifo.v:38$16'.
|
||
|
created $dff cell `$procdff$57' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$15_DATA' using process `\fifo.$proc$fifo.v:38$16'.
|
||
|
created $dff cell `$procdff$58' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$15_EN' using process `\fifo.$proc$fifo.v:38$16'.
|
||
|
created $dff cell `$procdff$59' with positive edge clock.
|
||
|
Creating register for signal `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.\addr' using process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$32'.
|
||
|
created $adff cell `$procdff$60' with positive edge clock and positive level reset.
|
||
|
|
||
|
yosys> proc_memwr
|
||
|
|
||
|
9.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
9.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Removing empty process `fifo.$proc$fifo.v:0$31'.
|
||
|
Found and cleaned up 2 empty switches in `\fifo.$proc$fifo.v:64$24'.
|
||
|
Removing empty process `fifo.$proc$fifo.v:64$24'.
|
||
|
Found and cleaned up 1 empty switch in `\fifo.$proc$fifo.v:38$16'.
|
||
|
Removing empty process `fifo.$proc$fifo.v:38$16'.
|
||
|
Removing empty process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$35'.
|
||
|
Found and cleaned up 2 empty switches in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$32'.
|
||
|
Removing empty process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$32'.
|
||
|
Cleaned up 5 empty switches.
|
||
|
|
||
|
yosys> opt_expr -keepdc
|
||
|
|
||
|
9.12. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
Optimizing module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix rdata_proc o:rdata %ci*
|
||
|
|
||
|
10. Generating Graphviz representation of design.
|
||
|
Writing dot description to `rdata_proc.dot'.
|
||
|
Dumping selected parts of module fifo to page 1.
|
||
|
|
||
|
yosys> flatten
|
||
|
|
||
|
11. Executing FLATTEN pass (flatten design).
|
||
|
Deleting now unused module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
<suppressed ~2 debug messages>
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix rdata_flat o:rdata %ci*
|
||
|
|
||
|
12. Generating Graphviz representation of design.
|
||
|
Writing dot description to `rdata_flat.dot'.
|
||
|
Dumping selected parts of module fifo to page 1.
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
13. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 3 unused cells and 25 unused wires.
|
||
|
<suppressed ~4 debug messages>
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix fifo_flat
|
||
|
|
||
|
14. Generating Graphviz representation of design.
|
||
|
Writing dot description to `fifo_flat.dot'.
|
||
|
Dumping module fifo to page 1.
|
||
|
|
||
|
yosys> design -reset
|
||
|
|
||
|
yosys> read_verilog fifo.v
|
||
|
|
||
|
15. Executing Verilog-2005 frontend: fifo.v
|
||
|
Parsing Verilog input from `fifo.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\addr_gen'.
|
||
|
Generating RTLIL representation for module `\fifo'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
yosys> synth_ice40 -dsp -top fifo
|
||
|
|
||
|
16. Executing SYNTH_ICE40 pass.
|
||
|
|
||
|
yosys> read_verilog -D ICE40_HX -lib -specify +/ice40/cells_sim.v
|
||
|
|
||
|
16.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/cells_sim.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/cells_sim.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\SB_IO'.
|
||
|
Generating RTLIL representation for module `\SB_GB_IO'.
|
||
|
Generating RTLIL representation for module `\SB_GB'.
|
||
|
Generating RTLIL representation for module `\SB_LUT4'.
|
||
|
Generating RTLIL representation for module `\SB_CARRY'.
|
||
|
Generating RTLIL representation for module `\SB_DFF'.
|
||
|
Generating RTLIL representation for module `\SB_DFFE'.
|
||
|
Generating RTLIL representation for module `\SB_DFFSR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFSS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFESR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFER'.
|
||
|
Generating RTLIL representation for module `\SB_DFFESS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFES'.
|
||
|
Generating RTLIL representation for module `\SB_DFFN'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNE'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNSR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNSS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNESR'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNER'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNESS'.
|
||
|
Generating RTLIL representation for module `\SB_DFFNES'.
|
||
|
Generating RTLIL representation for module `\SB_RAM40_4K'.
|
||
|
Generating RTLIL representation for module `\SB_RAM40_4KNR'.
|
||
|
Generating RTLIL representation for module `\SB_RAM40_4KNW'.
|
||
|
Generating RTLIL representation for module `\SB_RAM40_4KNRNW'.
|
||
|
Generating RTLIL representation for module `\ICESTORM_LC'.
|
||
|
Generating RTLIL representation for module `\SB_PLL40_CORE'.
|
||
|
Generating RTLIL representation for module `\SB_PLL40_PAD'.
|
||
|
Generating RTLIL representation for module `\SB_PLL40_2_PAD'.
|
||
|
Generating RTLIL representation for module `\SB_PLL40_2F_CORE'.
|
||
|
Generating RTLIL representation for module `\SB_PLL40_2F_PAD'.
|
||
|
Generating RTLIL representation for module `\SB_WARMBOOT'.
|
||
|
Generating RTLIL representation for module `\SB_SPRAM256KA'.
|
||
|
Generating RTLIL representation for module `\SB_HFOSC'.
|
||
|
Generating RTLIL representation for module `\SB_LFOSC'.
|
||
|
Generating RTLIL representation for module `\SB_RGBA_DRV'.
|
||
|
Generating RTLIL representation for module `\SB_LED_DRV_CUR'.
|
||
|
Generating RTLIL representation for module `\SB_RGB_DRV'.
|
||
|
Generating RTLIL representation for module `\SB_I2C'.
|
||
|
Generating RTLIL representation for module `\SB_SPI'.
|
||
|
Generating RTLIL representation for module `\SB_LEDDA_IP'.
|
||
|
Generating RTLIL representation for module `\SB_FILTER_50NS'.
|
||
|
Generating RTLIL representation for module `\SB_IO_I3C'.
|
||
|
Generating RTLIL representation for module `\SB_IO_OD'.
|
||
|
Generating RTLIL representation for module `\SB_MAC16'.
|
||
|
Generating RTLIL representation for module `\ICESTORM_RAM'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
yosys> hierarchy -check -top fifo
|
||
|
|
||
|
16.2. Executing HIERARCHY pass (managing design hierarchy).
|
||
|
|
||
|
16.2.1. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: \addr_gen
|
||
|
Parameter \MAX_DATA = 256
|
||
|
|
||
|
16.2.2. Executing AST frontend in derive mode using pre-parsed AST for module `\addr_gen'.
|
||
|
Parameter \MAX_DATA = 256
|
||
|
Generating RTLIL representation for module `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000'.
|
||
|
Parameter \MAX_DATA = 256
|
||
|
Found cached RTLIL representation for module `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000'.
|
||
|
|
||
|
16.2.3. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000
|
||
|
|
||
|
16.2.4. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Used module: $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000
|
||
|
Removing unused module `\addr_gen'.
|
||
|
Removed 1 unused modules.
|
||
|
|
||
|
yosys> proc
|
||
|
|
||
|
16.3. Executing PROC pass (convert processes to netlists).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
16.3.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Cleaned up 0 empty switches.
|
||
|
|
||
|
yosys> proc_rmdead
|
||
|
|
||
|
16.3.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323 in module SB_DFFNES.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1353$316 in module SB_DFFNESS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312 in module SB_DFFNER.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1212$305 in module SB_DFFNESR.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1138$302 in module SB_DFFNS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1088$299 in module SB_DFFNSS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:1017$296 in module SB_DFFNR.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:967$293 in module SB_DFFNSR.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285 in module SB_DFFES.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:742$278 in module SB_DFFESS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274 in module SB_DFFER.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:601$267 in module SB_DFFESR.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:527$264 in module SB_DFFS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:477$261 in module SB_DFFSS.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:406$258 in module SB_DFFR.
|
||
|
Marked 1 switch rules as full_case in process $proc$/home/dawn/yosys/share/ice40/cells_sim.v:356$255 in module SB_DFFSR.
|
||
|
Marked 2 switch rules as full_case in process $proc$fifo.v:64$75 in module fifo.
|
||
|
Marked 1 switch rules as full_case in process $proc$fifo.v:38$67 in module fifo.
|
||
|
Marked 2 switch rules as full_case in process $proc$fifo.v:13$463 in module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
Removed a total of 0 dead cases.
|
||
|
|
||
|
yosys> proc_prune
|
||
|
|
||
|
16.3.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
|
||
|
Removed 8 redundant assignments.
|
||
|
Promoted 28 assignments to connections.
|
||
|
|
||
|
yosys> proc_init
|
||
|
|
||
|
16.3.4. Executing PROC_INIT pass (extract init attributes).
|
||
|
Found init rule in `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$326'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$322'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$315'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$311'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$304'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$301'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$298'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$295'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$292'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$290'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$288'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$284'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$277'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$273'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$266'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$263'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$260'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$257'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$254'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$252'.
|
||
|
Set init value: \Q = 1'0
|
||
|
Found init rule in `\fifo.$proc$fifo.v:0$82'.
|
||
|
Set init value: \count = 9'000000000
|
||
|
Found init rule in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$466'.
|
||
|
Set init value: \addr = 8'00000000
|
||
|
|
||
|
yosys> proc_arst
|
||
|
|
||
|
16.3.5. Executing PROC_ARST pass (detect async resets in processes).
|
||
|
Found async reset \S in `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323'.
|
||
|
Found async reset \R in `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312'.
|
||
|
Found async reset \S in `\SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1138$302'.
|
||
|
Found async reset \R in `\SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1017$296'.
|
||
|
Found async reset \S in `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285'.
|
||
|
Found async reset \R in `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274'.
|
||
|
Found async reset \S in `\SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:527$264'.
|
||
|
Found async reset \R in `\SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:406$258'.
|
||
|
Found async reset \rst in `\fifo.$proc$fifo.v:64$75'.
|
||
|
Found async reset \rst in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$463'.
|
||
|
|
||
|
yosys> proc_rom
|
||
|
|
||
|
16.3.6. Executing PROC_ROM pass (convert switches to ROMs).
|
||
|
Converted 0 switches.
|
||
|
<suppressed ~23 debug messages>
|
||
|
|
||
|
yosys> proc_mux
|
||
|
|
||
|
16.3.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
|
||
|
Creating decoders for process `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$326'.
|
||
|
Creating decoders for process `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$322'.
|
||
|
Creating decoders for process `\SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1353$316'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$315'.
|
||
|
Creating decoders for process `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$311'.
|
||
|
Creating decoders for process `\SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1212$305'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$304'.
|
||
|
Creating decoders for process `\SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1138$302'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$301'.
|
||
|
Creating decoders for process `\SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1088$299'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$298'.
|
||
|
Creating decoders for process `\SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1017$296'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$295'.
|
||
|
Creating decoders for process `\SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:967$293'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$292'.
|
||
|
Creating decoders for process `\SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:922$291'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$290'.
|
||
|
Creating decoders for process `\SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:882$289'.
|
||
|
Creating decoders for process `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$288'.
|
||
|
Creating decoders for process `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$284'.
|
||
|
Creating decoders for process `\SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:742$278'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$277'.
|
||
|
Creating decoders for process `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$273'.
|
||
|
Creating decoders for process `\SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:601$267'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$266'.
|
||
|
Creating decoders for process `\SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:527$264'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$263'.
|
||
|
Creating decoders for process `\SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:477$261'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$260'.
|
||
|
Creating decoders for process `\SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:406$258'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$257'.
|
||
|
Creating decoders for process `\SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:356$255'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$254'.
|
||
|
Creating decoders for process `\SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:311$253'.
|
||
|
1/1: $0\Q[0:0]
|
||
|
Creating decoders for process `\SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$252'.
|
||
|
Creating decoders for process `\SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:271$251'.
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:0$82'.
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:64$75'.
|
||
|
1/1: $0\count[8:0]
|
||
|
Creating decoders for process `\fifo.$proc$fifo.v:38$67'.
|
||
|
1/3: $1$memwr$\data$fifo.v:40$66_EN[7:0]$73
|
||
|
2/3: $1$memwr$\data$fifo.v:40$66_DATA[7:0]$72
|
||
|
3/3: $1$memwr$\data$fifo.v:40$66_ADDR[7:0]$71
|
||
|
Creating decoders for process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$466'.
|
||
|
Creating decoders for process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$463'.
|
||
|
1/1: $0\addr[7:0]
|
||
|
|
||
|
yosys> proc_dlatch
|
||
|
|
||
|
16.3.8. Executing PROC_DLATCH pass (convert process syncs to latches).
|
||
|
|
||
|
yosys> proc_dff
|
||
|
|
||
|
16.3.9. Executing PROC_DFF pass (convert process syncs to FFs).
|
||
|
Creating register for signal `\SB_DFFNES.\Q' using process `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323'.
|
||
|
created $adff cell `$procdff$530' with negative edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFNESS.\Q' using process `\SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1353$316'.
|
||
|
created $dff cell `$procdff$531' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFNER.\Q' using process `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312'.
|
||
|
created $adff cell `$procdff$532' with negative edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFNESR.\Q' using process `\SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1212$305'.
|
||
|
created $dff cell `$procdff$533' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFNS.\Q' using process `\SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1138$302'.
|
||
|
created $adff cell `$procdff$534' with negative edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFNSS.\Q' using process `\SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1088$299'.
|
||
|
created $dff cell `$procdff$535' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFNR.\Q' using process `\SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1017$296'.
|
||
|
created $adff cell `$procdff$536' with negative edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFNSR.\Q' using process `\SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:967$293'.
|
||
|
created $dff cell `$procdff$537' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFNE.\Q' using process `\SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:922$291'.
|
||
|
created $dff cell `$procdff$538' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFN.\Q' using process `\SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:882$289'.
|
||
|
created $dff cell `$procdff$539' with negative edge clock.
|
||
|
Creating register for signal `\SB_DFFES.\Q' using process `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285'.
|
||
|
created $adff cell `$procdff$540' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFESS.\Q' using process `\SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:742$278'.
|
||
|
created $dff cell `$procdff$541' with positive edge clock.
|
||
|
Creating register for signal `\SB_DFFER.\Q' using process `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274'.
|
||
|
created $adff cell `$procdff$542' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFESR.\Q' using process `\SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:601$267'.
|
||
|
created $dff cell `$procdff$543' with positive edge clock.
|
||
|
Creating register for signal `\SB_DFFS.\Q' using process `\SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:527$264'.
|
||
|
created $adff cell `$procdff$544' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFSS.\Q' using process `\SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:477$261'.
|
||
|
created $dff cell `$procdff$545' with positive edge clock.
|
||
|
Creating register for signal `\SB_DFFR.\Q' using process `\SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:406$258'.
|
||
|
created $adff cell `$procdff$546' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\SB_DFFSR.\Q' using process `\SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:356$255'.
|
||
|
created $dff cell `$procdff$547' with positive edge clock.
|
||
|
Creating register for signal `\SB_DFFE.\Q' using process `\SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:311$253'.
|
||
|
created $dff cell `$procdff$548' with positive edge clock.
|
||
|
Creating register for signal `\SB_DFF.\Q' using process `\SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:271$251'.
|
||
|
created $dff cell `$procdff$549' with positive edge clock.
|
||
|
Creating register for signal `\fifo.\count' using process `\fifo.$proc$fifo.v:64$75'.
|
||
|
created $adff cell `$procdff$550' with positive edge clock and positive level reset.
|
||
|
Creating register for signal `\fifo.\rdata' using process `\fifo.$proc$fifo.v:38$67'.
|
||
|
created $dff cell `$procdff$551' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$66_ADDR' using process `\fifo.$proc$fifo.v:38$67'.
|
||
|
created $dff cell `$procdff$552' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$66_DATA' using process `\fifo.$proc$fifo.v:38$67'.
|
||
|
created $dff cell `$procdff$553' with positive edge clock.
|
||
|
Creating register for signal `\fifo.$memwr$\data$fifo.v:40$66_EN' using process `\fifo.$proc$fifo.v:38$67'.
|
||
|
created $dff cell `$procdff$554' with positive edge clock.
|
||
|
Creating register for signal `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.\addr' using process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$463'.
|
||
|
created $adff cell `$procdff$555' with positive edge clock and positive level reset.
|
||
|
|
||
|
yosys> proc_memwr
|
||
|
|
||
|
16.3.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
16.3.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Removing empty process `SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$326'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323'.
|
||
|
Removing empty process `SB_DFFNES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1414$323'.
|
||
|
Removing empty process `SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$322'.
|
||
|
Found and cleaned up 2 empty switches in `\SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1353$316'.
|
||
|
Removing empty process `SB_DFFNESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1353$316'.
|
||
|
Removing empty process `SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$315'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312'.
|
||
|
Removing empty process `SB_DFFNER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1273$312'.
|
||
|
Removing empty process `SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$311'.
|
||
|
Found and cleaned up 2 empty switches in `\SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1212$305'.
|
||
|
Removing empty process `SB_DFFNESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1212$305'.
|
||
|
Removing empty process `SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$304'.
|
||
|
Removing empty process `SB_DFFNS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1138$302'.
|
||
|
Removing empty process `SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$301'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1088$299'.
|
||
|
Removing empty process `SB_DFFNSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1088$299'.
|
||
|
Removing empty process `SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$298'.
|
||
|
Removing empty process `SB_DFFNR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:1017$296'.
|
||
|
Removing empty process `SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$295'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:967$293'.
|
||
|
Removing empty process `SB_DFFNSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:967$293'.
|
||
|
Removing empty process `SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$292'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:922$291'.
|
||
|
Removing empty process `SB_DFFNE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:922$291'.
|
||
|
Removing empty process `SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$290'.
|
||
|
Removing empty process `SB_DFFN.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:882$289'.
|
||
|
Removing empty process `SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$288'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285'.
|
||
|
Removing empty process `SB_DFFES.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:803$285'.
|
||
|
Removing empty process `SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$284'.
|
||
|
Found and cleaned up 2 empty switches in `\SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:742$278'.
|
||
|
Removing empty process `SB_DFFESS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:742$278'.
|
||
|
Removing empty process `SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$277'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274'.
|
||
|
Removing empty process `SB_DFFER.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:662$274'.
|
||
|
Removing empty process `SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$273'.
|
||
|
Found and cleaned up 2 empty switches in `\SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:601$267'.
|
||
|
Removing empty process `SB_DFFESR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:601$267'.
|
||
|
Removing empty process `SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$266'.
|
||
|
Removing empty process `SB_DFFS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:527$264'.
|
||
|
Removing empty process `SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$263'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:477$261'.
|
||
|
Removing empty process `SB_DFFSS.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:477$261'.
|
||
|
Removing empty process `SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$260'.
|
||
|
Removing empty process `SB_DFFR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:406$258'.
|
||
|
Removing empty process `SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$257'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:356$255'.
|
||
|
Removing empty process `SB_DFFSR.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:356$255'.
|
||
|
Removing empty process `SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$254'.
|
||
|
Found and cleaned up 1 empty switch in `\SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:311$253'.
|
||
|
Removing empty process `SB_DFFE.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:311$253'.
|
||
|
Removing empty process `SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:0$252'.
|
||
|
Removing empty process `SB_DFF.$proc$/home/dawn/yosys/share/ice40/cells_sim.v:271$251'.
|
||
|
Removing empty process `fifo.$proc$fifo.v:0$82'.
|
||
|
Found and cleaned up 2 empty switches in `\fifo.$proc$fifo.v:64$75'.
|
||
|
Removing empty process `fifo.$proc$fifo.v:64$75'.
|
||
|
Found and cleaned up 1 empty switch in `\fifo.$proc$fifo.v:38$67'.
|
||
|
Removing empty process `fifo.$proc$fifo.v:38$67'.
|
||
|
Removing empty process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:0$466'.
|
||
|
Found and cleaned up 2 empty switches in `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$463'.
|
||
|
Removing empty process `$paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.$proc$fifo.v:13$463'.
|
||
|
Cleaned up 23 empty switches.
|
||
|
|
||
|
yosys> opt_expr -keepdc
|
||
|
|
||
|
16.3.12. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
Optimizing module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
|
||
|
yosys> flatten
|
||
|
|
||
|
16.4. Executing FLATTEN pass (flatten design).
|
||
|
Deleting now unused module $paramod\addr_gen\MAX_DATA=s32'00000000000000000000000100000000.
|
||
|
<suppressed ~2 debug messages>
|
||
|
|
||
|
yosys> tribuf -logic
|
||
|
|
||
|
16.5. Executing TRIBUF pass.
|
||
|
|
||
|
yosys> deminout
|
||
|
|
||
|
16.6. Executing DEMINOUT pass (demote inout ports to input or output).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.7. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.8. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 3 unused cells and 25 unused wires.
|
||
|
<suppressed ~4 debug messages>
|
||
|
|
||
|
yosys> check
|
||
|
|
||
|
16.9. Executing CHECK pass (checking for obvious problems).
|
||
|
Checking module fifo...
|
||
|
Found and reported 0 problems.
|
||
|
|
||
|
yosys> opt -nodffe -nosdff
|
||
|
|
||
|
16.10. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.10.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.10.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.10.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.10.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Consolidated identical input bits for $mux cell $procmux$517:
|
||
|
Old ports: A=8'00000000, B=8'11111111, Y=$0$memwr$\data$fifo.v:40$66_EN[7:0]$70
|
||
|
New ports: A=1'0, B=1'1, Y=$0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0]
|
||
|
New connections: $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [7:1] = { $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] $0$memwr$\data$fifo.v:40$66_EN[7:0]$70 [0] }
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 1 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.10.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff -nodffe -nosdff
|
||
|
|
||
|
16.10.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.10.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.10.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.10.9. Rerunning OPT passes. (Maybe there is more to do..)
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.10.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.10.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.10.12. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff -nodffe -nosdff
|
||
|
|
||
|
16.10.13. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.10.14. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.10.15. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.10.16. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> fsm
|
||
|
|
||
|
16.11. Executing FSM pass (extract and optimize FSM).
|
||
|
|
||
|
yosys> fsm_detect
|
||
|
|
||
|
16.11.1. Executing FSM_DETECT pass (finding FSMs in design).
|
||
|
|
||
|
yosys> fsm_extract
|
||
|
|
||
|
16.11.2. Executing FSM_EXTRACT pass (extracting FSM from design).
|
||
|
|
||
|
yosys> fsm_opt
|
||
|
|
||
|
16.11.3. Executing FSM_OPT pass (simple optimizations of FSMs).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.11.4. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> fsm_opt
|
||
|
|
||
|
16.11.5. Executing FSM_OPT pass (simple optimizations of FSMs).
|
||
|
|
||
|
yosys> fsm_recode
|
||
|
|
||
|
16.11.6. Executing FSM_RECODE pass (re-assigning FSM state encoding).
|
||
|
|
||
|
yosys> fsm_info
|
||
|
|
||
|
16.11.7. Executing FSM_INFO pass (dumping all available information on FSM cells).
|
||
|
|
||
|
yosys> fsm_map
|
||
|
|
||
|
16.11.8. Executing FSM_MAP pass (mapping FSMs to basic logic).
|
||
|
|
||
|
yosys> opt
|
||
|
|
||
|
16.12. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.12.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.12.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.12.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.12.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.12.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.12.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
Adding EN signal on $procdff$550 ($adff) from module fifo (D = $0\count[8:0], Q = \count).
|
||
|
Adding EN signal on $flatten\fifo_writer.$procdff$555 ($adff) from module fifo (D = $flatten\fifo_writer.$procmux$526_Y, Q = \fifo_writer.addr).
|
||
|
Adding EN signal on $flatten\fifo_reader.$procdff$555 ($adff) from module fifo (D = $flatten\fifo_reader.$procmux$526_Y, Q = \fifo_reader.addr).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.12.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 2 unused cells and 2 unused wires.
|
||
|
<suppressed ~3 debug messages>
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.12.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
16.12.9. Rerunning OPT passes. (Maybe there is more to do..)
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.12.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.12.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.12.12. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.12.13. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.12.14. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.12.15. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.12.16. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> wreduce
|
||
|
|
||
|
16.13. Executing WREDUCE pass (reducing word size of cells).
|
||
|
Removed top 31 bits (of 32) from port B of cell fifo.$add$fifo.v:68$78 ($add).
|
||
|
Removed top 23 bits (of 32) from port Y of cell fifo.$add$fifo.v:68$78 ($add).
|
||
|
Removed top 31 bits (of 32) from port B of cell fifo.$sub$fifo.v:70$81 ($sub).
|
||
|
Removed top 23 bits (of 32) from port Y of cell fifo.$sub$fifo.v:70$81 ($sub).
|
||
|
Removed top 31 bits (of 32) from port B of cell fifo.$flatten\fifo_writer.$add$fifo.v:20$465 ($add).
|
||
|
Removed top 24 bits (of 32) from port Y of cell fifo.$flatten\fifo_writer.$add$fifo.v:20$465 ($add).
|
||
|
Removed top 31 bits (of 32) from port B of cell fifo.$flatten\fifo_reader.$add$fifo.v:20$465 ($add).
|
||
|
Removed top 24 bits (of 32) from port Y of cell fifo.$flatten\fifo_reader.$add$fifo.v:20$465 ($add).
|
||
|
Removed top 23 bits (of 32) from wire fifo.$add$fifo.v:68$78_Y.
|
||
|
Removed top 23 bits (of 32) from wire fifo.$sub$fifo.v:70$81_Y.
|
||
|
|
||
|
yosys> peepopt
|
||
|
|
||
|
16.14. Executing PEEPOPT pass (run peephole optimizers).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.15. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 0 unused cells and 2 unused wires.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
yosys> share
|
||
|
|
||
|
16.16. Executing SHARE pass (SAT-based resource sharing).
|
||
|
|
||
|
yosys> techmap -map +/cmp2lut.v -D LUT_WIDTH=4
|
||
|
|
||
|
16.17. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.17.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/cmp2lut.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/cmp2lut.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_90_lut_cmp_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.17.2. Continuing TECHMAP pass.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.18. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.19. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> memory_dff
|
||
|
|
||
|
16.20. Executing MEMORY_DFF pass (merging $dff cells to $memrd).
|
||
|
Checking read port `\data'[0] in module `\fifo': merging output FF to cell.
|
||
|
Write port 0: non-transparent.
|
||
|
|
||
|
yosys> wreduce t:$mul
|
||
|
|
||
|
16.21. Executing WREDUCE pass (reducing word size of cells).
|
||
|
|
||
|
yosys> techmap -map +/mul2dsp.v -map +/ice40/dsp_map.v -D DSP_A_MAXWIDTH=16 -D DSP_B_MAXWIDTH=16 -D DSP_A_MINWIDTH=2 -D DSP_B_MINWIDTH=2 -D DSP_Y_MINWIDTH=11 -D DSP_NAME=$__MUL16X16
|
||
|
|
||
|
16.22. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.22.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/mul2dsp.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/mul2dsp.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_80_mul'.
|
||
|
Generating RTLIL representation for module `\_90_soft_mul'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.22.2. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/dsp_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/dsp_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$__MUL16X16'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.22.3. Continuing TECHMAP pass.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~5 debug messages>
|
||
|
|
||
|
yosys> select a:mul2dsp
|
||
|
|
||
|
yosys*> setattr -unset mul2dsp
|
||
|
|
||
|
yosys*> opt_expr -fine
|
||
|
|
||
|
16.23. Executing OPT_EXPR pass (perform const folding).
|
||
|
|
||
|
yosys*> wreduce
|
||
|
|
||
|
16.24. Executing WREDUCE pass (reducing word size of cells).
|
||
|
|
||
|
yosys*> select -clear
|
||
|
|
||
|
yosys> ice40_dsp
|
||
|
|
||
|
16.25. Executing ICE40_DSP pass (map multipliers).
|
||
|
|
||
|
yosys> chtype -set $mul t:$__soft_mul
|
||
|
|
||
|
yosys> alumacc
|
||
|
|
||
|
16.26. Executing ALUMACC pass (create $alu and $macc cells).
|
||
|
Extracting $alu and $macc cells in module fifo:
|
||
|
creating $macc model for $add$fifo.v:68$78 ($add).
|
||
|
creating $macc model for $flatten\fifo_reader.$add$fifo.v:20$465 ($add).
|
||
|
creating $macc model for $flatten\fifo_writer.$add$fifo.v:20$465 ($add).
|
||
|
creating $macc model for $sub$fifo.v:70$81 ($sub).
|
||
|
creating $alu model for $macc $sub$fifo.v:70$81.
|
||
|
creating $alu model for $macc $flatten\fifo_writer.$add$fifo.v:20$465.
|
||
|
creating $alu model for $macc $flatten\fifo_reader.$add$fifo.v:20$465.
|
||
|
creating $alu model for $macc $add$fifo.v:68$78.
|
||
|
creating $alu cell for $add$fifo.v:68$78: $auto$alumacc.cc:485:replace_alu$574
|
||
|
creating $alu cell for $flatten\fifo_reader.$add$fifo.v:20$465: $auto$alumacc.cc:485:replace_alu$577
|
||
|
creating $alu cell for $flatten\fifo_writer.$add$fifo.v:20$465: $auto$alumacc.cc:485:replace_alu$580
|
||
|
creating $alu cell for $sub$fifo.v:70$81: $auto$alumacc.cc:485:replace_alu$583
|
||
|
created 4 $alu and 0 $macc cells.
|
||
|
|
||
|
yosys> opt
|
||
|
|
||
|
16.27. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.27.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.27.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.27.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.27.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.27.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.27.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.27.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 1 unused cells and 9 unused wires.
|
||
|
<suppressed ~2 debug messages>
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.27.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.27.9. Rerunning OPT passes. (Maybe there is more to do..)
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.27.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~6 debug messages>
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.27.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.27.12. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.27.13. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.27.14. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.27.15. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.27.16. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> memory -nomap
|
||
|
|
||
|
16.28. Executing MEMORY pass.
|
||
|
|
||
|
yosys> opt_mem
|
||
|
|
||
|
16.28.1. Executing OPT_MEM pass (optimize memories).
|
||
|
Performed a total of 0 transformations.
|
||
|
|
||
|
yosys> opt_mem_priority
|
||
|
|
||
|
16.28.2. Executing OPT_MEM_PRIORITY pass (removing unnecessary memory write priority relations).
|
||
|
Performed a total of 0 transformations.
|
||
|
|
||
|
yosys> opt_mem_feedback
|
||
|
|
||
|
16.28.3. Executing OPT_MEM_FEEDBACK pass (finding memory read-to-write feedback paths).
|
||
|
|
||
|
yosys> memory_bmux2rom
|
||
|
|
||
|
16.28.4. Executing MEMORY_BMUX2ROM pass (converting muxes to ROMs).
|
||
|
|
||
|
yosys> memory_dff
|
||
|
|
||
|
16.28.5. Executing MEMORY_DFF pass (merging $dff cells to $memrd).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.28.6. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> memory_share
|
||
|
|
||
|
16.28.7. Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells).
|
||
|
|
||
|
yosys> opt_mem_widen
|
||
|
|
||
|
16.28.8. Executing OPT_MEM_WIDEN pass (optimize memories where all ports are wide).
|
||
|
Performed a total of 0 transformations.
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.28.9. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> memory_collect
|
||
|
|
||
|
16.28.10. Executing MEMORY_COLLECT pass (generating $mem cells).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.29. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> memory_libmap -lib +/ice40/brams.txt -lib +/ice40/spram.txt -no-auto-huge
|
||
|
|
||
|
16.30. Executing MEMORY_LIBMAP pass (mapping memories to cells).
|
||
|
mapping memory fifo.data via $__ICE40_RAM4K_
|
||
|
<suppressed ~68 debug messages>
|
||
|
|
||
|
yosys> techmap -map +/ice40/brams_map.v -map +/ice40/spram_map.v
|
||
|
|
||
|
16.31. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.31.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/brams_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/brams_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$__ICE40_RAM4K_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.31.2. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/spram_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/spram_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$__ICE40_SPRAM_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.31.3. Continuing TECHMAP pass.
|
||
|
Using template $paramod$13b3947419e62b7bbba1b93c77e4155efbe69a94\$__ICE40_RAM4K_ for cells of type $__ICE40_RAM4K_.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~26 debug messages>
|
||
|
|
||
|
yosys> ice40_braminit
|
||
|
|
||
|
16.32. Executing ICE40_BRAMINIT pass.
|
||
|
|
||
|
yosys> opt -fast -mux_undef -undriven -fine
|
||
|
|
||
|
16.33. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven -fine
|
||
|
|
||
|
16.33.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~13 debug messages>
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.33.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.33.3. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
Removing always-active EN on $auto$mem.cc:1146:emulate_transparency$593 ($dffe) from module fifo.
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.33.4. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 0 unused cells and 18 unused wires.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
16.33.5. Rerunning OPT passes. (Removed registers in this run.)
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven -fine
|
||
|
|
||
|
16.33.6. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.33.7. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.33.8. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.33.9. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
16.33.10. Finished fast OPT passes.
|
||
|
|
||
|
yosys> memory_map
|
||
|
|
||
|
16.34. Executing MEMORY_MAP pass (converting memories to logic and flip-flops).
|
||
|
|
||
|
yosys> opt -undriven -fine
|
||
|
|
||
|
16.35. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr -undriven -fine
|
||
|
|
||
|
16.35.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.35.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.35.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
Evaluating internal representation of mux trees.
|
||
|
Analyzing evaluation results.
|
||
|
Removed 0 multiplexer ports.
|
||
|
<suppressed ~4 debug messages>
|
||
|
|
||
|
yosys> opt_reduce -fine
|
||
|
|
||
|
16.35.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.35.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.35.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.35.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr -undriven -fine
|
||
|
|
||
|
16.35.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.35.9. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> ice40_wrapcarry
|
||
|
|
||
|
16.36. Executing ICE40_WRAPCARRY pass (wrap carries).
|
||
|
|
||
|
yosys> techmap -map +/techmap.v -map +/ice40/arith_map.v
|
||
|
|
||
|
16.37. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.37.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/techmap.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/techmap.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_bool_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_reduce_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_logic_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_compare_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_various'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_registers'.
|
||
|
Generating RTLIL representation for module `\_90_shift_ops_shr_shl_sshl_sshr'.
|
||
|
Generating RTLIL representation for module `\_90_shift_shiftx'.
|
||
|
Generating RTLIL representation for module `\_90_fa'.
|
||
|
Generating RTLIL representation for module `\_90_lcu'.
|
||
|
Generating RTLIL representation for module `\_90_alu'.
|
||
|
Generating RTLIL representation for module `\_90_macc'.
|
||
|
Generating RTLIL representation for module `\_90_alumacc'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_u'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_trunc'.
|
||
|
Generating RTLIL representation for module `\_90_div'.
|
||
|
Generating RTLIL representation for module `\_90_mod'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_floor'.
|
||
|
Generating RTLIL representation for module `\_90_divfloor'.
|
||
|
Generating RTLIL representation for module `\_90_modfloor'.
|
||
|
Generating RTLIL representation for module `\_90_pow'.
|
||
|
Generating RTLIL representation for module `\_90_pmux'.
|
||
|
Generating RTLIL representation for module `\_90_demux'.
|
||
|
Generating RTLIL representation for module `\_90_lut'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.37.2. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/arith_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/arith_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_80_ice40_alu'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.37.3. Continuing TECHMAP pass.
|
||
|
Using template $paramod$c3cd1564c35d873179656addd6052d7ea8b6d991\_80_ice40_alu for cells of type $alu.
|
||
|
Using extmapper simplemap for cells of type $dff.
|
||
|
Using extmapper simplemap for cells of type $logic_not.
|
||
|
Using extmapper simplemap for cells of type $logic_and.
|
||
|
Using extmapper simplemap for cells of type $mux.
|
||
|
Using extmapper simplemap for cells of type $eq.
|
||
|
Using extmapper simplemap for cells of type $and.
|
||
|
Using extmapper simplemap for cells of type $adffe.
|
||
|
Using template $paramod$53700bbee849b2010ad0b60a61ccd204a10e24ca\_80_ice40_alu for cells of type $alu.
|
||
|
Using extmapper simplemap for cells of type $reduce_bool.
|
||
|
Using template $paramod$6f67705c43e5e94c02b6ebb52209ce5aa5ade4c1\_80_ice40_alu for cells of type $alu.
|
||
|
Using extmapper simplemap for cells of type $xor.
|
||
|
Using extmapper simplemap for cells of type $not.
|
||
|
Using extmapper simplemap for cells of type $pos.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~175 debug messages>
|
||
|
|
||
|
yosys> opt -fast
|
||
|
|
||
|
16.38. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.38.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~109 debug messages>
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.38.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
<suppressed ~81 debug messages>
|
||
|
Removed a total of 27 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.38.3. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.38.4. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 11 unused cells and 83 unused wires.
|
||
|
<suppressed ~12 debug messages>
|
||
|
|
||
|
16.38.5. Finished fast OPT passes.
|
||
|
|
||
|
yosys> ice40_opt
|
||
|
|
||
|
16.39. Executing ICE40_OPT pass (performing simple optimizations).
|
||
|
|
||
|
16.39.1. Running ICE40 specific optimizations.
|
||
|
Optimized $__ICE40_CARRY_WRAPPER cell back to logic (without SB_CARRY) fifo.$auto$alumacc.cc:485:replace_alu$574.slice[0].carry: CO=\count [0]
|
||
|
Optimized $__ICE40_CARRY_WRAPPER cell back to logic (without SB_CARRY) fifo.$auto$alumacc.cc:485:replace_alu$577.slice[0].carry: CO=\fifo_reader.addr [0]
|
||
|
Optimized $__ICE40_CARRY_WRAPPER cell back to logic (without SB_CARRY) fifo.$auto$alumacc.cc:485:replace_alu$580.slice[0].carry: CO=\fifo_writer.addr [0]
|
||
|
Optimized $__ICE40_CARRY_WRAPPER cell back to logic (without SB_CARRY) fifo.$auto$alumacc.cc:485:replace_alu$583.slice[0].carry: CO=\count [0]
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven
|
||
|
|
||
|
16.39.2. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.39.3. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.39.4. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.39.5. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
16.39.6. Rerunning OPT passes. (Removed registers in this run.)
|
||
|
|
||
|
16.39.7. Running ICE40 specific optimizations.
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven
|
||
|
|
||
|
16.39.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.39.9. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.39.10. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.39.11. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
16.39.12. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> dfflegalize -cell $_DFF_?_ 0 -cell $_DFFE_?P_ 0 -cell $_DFF_?P?_ 0 -cell $_DFFE_?P?P_ 0 -cell $_SDFF_?P?_ 0 -cell $_SDFFCE_?P?P_ 0 -cell $_DLATCH_?_ x -mince -1
|
||
|
|
||
|
16.40. Executing DFFLEGALIZE pass (convert FFs to types supported by the target).
|
||
|
|
||
|
yosys> techmap -map +/ice40/ff_map.v
|
||
|
|
||
|
16.41. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.41.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/ff_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/ff_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$_DFF_N_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_NP0_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_NP1_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_PP0_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_PP1_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP0P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP1P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP0P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP1P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_NP0_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_NP1_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_PP0_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_PP1_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_NP0P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_NP1P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_PP0P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_PP1P_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.41.2. Continuing TECHMAP pass.
|
||
|
Using template \$_DFFE_PP0P_ for cells of type $_DFFE_PP0P_.
|
||
|
Using template \$_DFF_P_ for cells of type $_DFF_P_.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~73 debug messages>
|
||
|
|
||
|
yosys> opt_expr -mux_undef
|
||
|
|
||
|
16.42. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> simplemap
|
||
|
|
||
|
16.43. Executing SIMPLEMAP pass (map simple cells to gate primitives).
|
||
|
Mapping fifo.$auto$alumacc.cc:485:replace_alu$577.slice[0].carry ($lut).
|
||
|
Mapping fifo.$auto$alumacc.cc:485:replace_alu$580.slice[0].carry ($lut).
|
||
|
Mapping fifo.$auto$alumacc.cc:485:replace_alu$583.slice[0].carry ($lut).
|
||
|
Mapping fifo.$auto$alumacc.cc:485:replace_alu$574.slice[0].carry ($lut).
|
||
|
|
||
|
yosys> ice40_opt -full
|
||
|
|
||
|
16.44. Executing ICE40_OPT pass (performing simple optimizations).
|
||
|
|
||
|
16.44.1. Running ICE40 specific optimizations.
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven -full
|
||
|
|
||
|
16.44.2. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~71 debug messages>
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.44.3. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
<suppressed ~12 debug messages>
|
||
|
Removed a total of 4 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.44.4. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.44.5. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 0 unused cells and 270 unused wires.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
16.44.6. Rerunning OPT passes. (Removed registers in this run.)
|
||
|
|
||
|
16.44.7. Running ICE40 specific optimizations.
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven -full
|
||
|
|
||
|
16.44.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.44.9. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.44.10. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.44.11. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
16.44.12. Rerunning OPT passes. (Removed registers in this run.)
|
||
|
|
||
|
16.44.13. Running ICE40 specific optimizations.
|
||
|
|
||
|
yosys> opt_expr -mux_undef -undriven -full
|
||
|
|
||
|
16.44.14. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.44.15. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.44.16. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.44.17. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
16.44.18. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> techmap -map +/ice40/latches_map.v
|
||
|
|
||
|
16.45. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.45.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/latches_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/latches_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$_DLATCH_N_'.
|
||
|
Generating RTLIL representation for module `\$_DLATCH_P_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.45.2. Continuing TECHMAP pass.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~4 debug messages>
|
||
|
|
||
|
yosys> read_verilog -D ICE40_HX -icells -lib -specify +/ice40/abc9_model.v
|
||
|
|
||
|
16.46. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/abc9_model.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/abc9_model.v' to AST representation.
|
||
|
Generating RTLIL representation for module `$__ICE40_CARRY_WRAPPER'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
yosys> abc9 -W 250
|
||
|
|
||
|
16.47. Executing ABC9 pass.
|
||
|
|
||
|
yosys> abc9_ops -check
|
||
|
|
||
|
16.47.1. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys> abc9_ops -prep_hier
|
||
|
|
||
|
16.47.2. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys> scc -specify -set_attr abc9_scc_id {}
|
||
|
|
||
|
16.47.3. Executing SCC pass (detecting logic loops).
|
||
|
Found 0 SCCs in module fifo.
|
||
|
Found 0 SCCs.
|
||
|
|
||
|
yosys> abc9_ops -prep_bypass
|
||
|
|
||
|
16.47.4. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys> design -stash $abc9
|
||
|
|
||
|
yosys> design -load $abc9_map
|
||
|
|
||
|
yosys> proc
|
||
|
|
||
|
16.47.5. Executing PROC pass (convert processes to netlists).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
16.47.5.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Cleaned up 0 empty switches.
|
||
|
|
||
|
yosys> proc_rmdead
|
||
|
|
||
|
16.47.5.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
|
||
|
Removed a total of 0 dead cases.
|
||
|
|
||
|
yosys> proc_prune
|
||
|
|
||
|
16.47.5.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
|
||
|
Removed 0 redundant assignments.
|
||
|
Promoted 0 assignments to connections.
|
||
|
|
||
|
yosys> proc_init
|
||
|
|
||
|
16.47.5.4. Executing PROC_INIT pass (extract init attributes).
|
||
|
|
||
|
yosys> proc_arst
|
||
|
|
||
|
16.47.5.5. Executing PROC_ARST pass (detect async resets in processes).
|
||
|
|
||
|
yosys> proc_rom
|
||
|
|
||
|
16.47.5.6. Executing PROC_ROM pass (convert switches to ROMs).
|
||
|
Converted 0 switches.
|
||
|
|
||
|
yosys> proc_mux
|
||
|
|
||
|
16.47.5.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
|
||
|
|
||
|
yosys> proc_dlatch
|
||
|
|
||
|
16.47.5.8. Executing PROC_DLATCH pass (convert process syncs to latches).
|
||
|
|
||
|
yosys> proc_dff
|
||
|
|
||
|
16.47.5.9. Executing PROC_DFF pass (convert process syncs to FFs).
|
||
|
|
||
|
yosys> proc_memwr
|
||
|
|
||
|
16.47.5.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
|
||
|
|
||
|
yosys> proc_clean
|
||
|
|
||
|
16.47.5.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
|
||
|
Cleaned up 0 empty switches.
|
||
|
|
||
|
yosys> opt_expr -keepdc
|
||
|
|
||
|
16.47.5.12. Executing OPT_EXPR pass (perform const folding).
|
||
|
|
||
|
yosys> wbflip
|
||
|
|
||
|
yosys> techmap -wb -map %$abc9 -map +/techmap.v A:abc9_flop
|
||
|
|
||
|
16.47.6. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.47.6.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/techmap.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/techmap.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_bool_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_reduce_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_logic_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_compare_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_various'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_registers'.
|
||
|
Generating RTLIL representation for module `\_90_shift_ops_shr_shl_sshl_sshr'.
|
||
|
Generating RTLIL representation for module `\_90_shift_shiftx'.
|
||
|
Generating RTLIL representation for module `\_90_fa'.
|
||
|
Generating RTLIL representation for module `\_90_lcu'.
|
||
|
Generating RTLIL representation for module `\_90_alu'.
|
||
|
Generating RTLIL representation for module `\_90_macc'.
|
||
|
Generating RTLIL representation for module `\_90_alumacc'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_u'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_trunc'.
|
||
|
Generating RTLIL representation for module `\_90_div'.
|
||
|
Generating RTLIL representation for module `\_90_mod'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_floor'.
|
||
|
Generating RTLIL representation for module `\_90_divfloor'.
|
||
|
Generating RTLIL representation for module `\_90_modfloor'.
|
||
|
Generating RTLIL representation for module `\_90_pow'.
|
||
|
Generating RTLIL representation for module `\_90_pmux'.
|
||
|
Generating RTLIL representation for module `\_90_demux'.
|
||
|
Generating RTLIL representation for module `\_90_lut'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.47.6.2. Continuing TECHMAP pass.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~128 debug messages>
|
||
|
|
||
|
yosys> opt -nodffe -nosdff
|
||
|
|
||
|
16.47.7. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.47.7.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module SB_DFFER.
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.47.7.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\SB_DFFER'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.47.7.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \SB_DFFER..
|
||
|
Creating internal representation of mux trees.
|
||
|
No muxes found in this module.
|
||
|
Removed 0 multiplexer ports.
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.47.7.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \SB_DFFER.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.47.7.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\SB_DFFER'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff -nodffe -nosdff
|
||
|
|
||
|
16.47.7.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean
|
||
|
|
||
|
16.47.7.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \SB_DFFER..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.47.7.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module SB_DFFER.
|
||
|
|
||
|
16.47.7.9. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> design -stash $abc9_map
|
||
|
|
||
|
yosys> design -load $abc9
|
||
|
|
||
|
yosys> design -delete $abc9
|
||
|
|
||
|
yosys> techmap -wb -max_iter 1 -map %$abc9_map -map +/abc9_map.v a:abc9_scc_id %n
|
||
|
|
||
|
16.47.8. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.47.8.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/abc9_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/abc9_map.v' to AST representation.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.47.8.2. Continuing TECHMAP pass.
|
||
|
Using template SB_DFFER for cells of type SB_DFFER.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~28 debug messages>
|
||
|
|
||
|
yosys> design -delete $abc9_map
|
||
|
|
||
|
yosys> read_verilog -icells -lib -specify +/abc9_model.v
|
||
|
|
||
|
16.47.9. Executing Verilog-2005 frontend: /home/dawn/yosys/share/abc9_model.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/abc9_model.v' to AST representation.
|
||
|
Generating RTLIL representation for module `$__ABC9_DELAY'.
|
||
|
Generating RTLIL representation for module `$__ABC9_SCC_BREAKER'.
|
||
|
Generating RTLIL representation for module `$__DFF_N__$abc9_flop'.
|
||
|
Generating RTLIL representation for module `$__DFF_P__$abc9_flop'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
yosys> abc9_ops -break_scc -prep_delays -prep_xaiger
|
||
|
|
||
|
16.47.10. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
<suppressed ~86 debug messages>
|
||
|
|
||
|
yosys> abc9_ops -prep_lut 0
|
||
|
|
||
|
16.47.11. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys> abc9_ops -prep_box
|
||
|
|
||
|
16.47.12. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
<suppressed ~2 debug messages>
|
||
|
|
||
|
yosys> design -stash $abc9
|
||
|
|
||
|
yosys> design -load $abc9_holes
|
||
|
|
||
|
yosys> techmap -wb -map %$abc9 -map +/techmap.v
|
||
|
|
||
|
16.47.13. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.47.13.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/techmap.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/techmap.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_bool_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_reduce_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_logic_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_compare_ops'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_various'.
|
||
|
Generating RTLIL representation for module `\_90_simplemap_registers'.
|
||
|
Generating RTLIL representation for module `\_90_shift_ops_shr_shl_sshl_sshr'.
|
||
|
Generating RTLIL representation for module `\_90_shift_shiftx'.
|
||
|
Generating RTLIL representation for module `\_90_fa'.
|
||
|
Generating RTLIL representation for module `\_90_lcu'.
|
||
|
Generating RTLIL representation for module `\_90_alu'.
|
||
|
Generating RTLIL representation for module `\_90_macc'.
|
||
|
Generating RTLIL representation for module `\_90_alumacc'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_u'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_trunc'.
|
||
|
Generating RTLIL representation for module `\_90_div'.
|
||
|
Generating RTLIL representation for module `\_90_mod'.
|
||
|
Generating RTLIL representation for module `\$__div_mod_floor'.
|
||
|
Generating RTLIL representation for module `\_90_divfloor'.
|
||
|
Generating RTLIL representation for module `\_90_modfloor'.
|
||
|
Generating RTLIL representation for module `\_90_pow'.
|
||
|
Generating RTLIL representation for module `\_90_pmux'.
|
||
|
Generating RTLIL representation for module `\_90_demux'.
|
||
|
Generating RTLIL representation for module `\_90_lut'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.47.13.2. Continuing TECHMAP pass.
|
||
|
Using template $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1 for cells of type $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1.
|
||
|
Using template $paramod\SB_LUT4\LUT_INIT=16'0110100110010110 for cells of type SB_LUT4.
|
||
|
Using template SB_CARRY for cells of type SB_CARRY.
|
||
|
Using extmapper simplemap for cells of type $mux.
|
||
|
Using extmapper simplemap for cells of type $logic_and.
|
||
|
Using extmapper simplemap for cells of type $logic_or.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~155 debug messages>
|
||
|
|
||
|
yosys> opt -purge
|
||
|
|
||
|
16.47.14. Executing OPT pass (performing simple optimizations).
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.47.14.1. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
<suppressed ~4 debug messages>
|
||
|
|
||
|
yosys> opt_merge -nomux
|
||
|
|
||
|
16.47.14.2. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
<suppressed ~29 debug messages>
|
||
|
Removed a total of 12 cells.
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.47.14.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
No muxes found in this module.
|
||
|
Removed 0 multiplexer ports.
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.47.14.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.47.14.5. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.47.14.6. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean -purge
|
||
|
|
||
|
16.47.14.7. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
Removed 0 unused cells and 24 unused wires.
|
||
|
<suppressed ~1 debug messages>
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.47.14.8. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.47.14.9. Rerunning OPT passes. (Maybe there is more to do..)
|
||
|
|
||
|
yosys> opt_muxtree
|
||
|
|
||
|
16.47.14.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
|
||
|
Running muxtree optimizer on module \fifo..
|
||
|
Creating internal representation of mux trees.
|
||
|
No muxes found in this module.
|
||
|
Removed 0 multiplexer ports.
|
||
|
|
||
|
yosys> opt_reduce
|
||
|
|
||
|
16.47.14.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
|
||
|
Optimizing cells in module \fifo.
|
||
|
Performed a total of 0 changes.
|
||
|
|
||
|
yosys> opt_merge
|
||
|
|
||
|
16.47.14.12. Executing OPT_MERGE pass (detect identical cells).
|
||
|
Finding identical cells in module `\fifo'.
|
||
|
Removed a total of 0 cells.
|
||
|
|
||
|
yosys> opt_dff
|
||
|
|
||
|
16.47.14.13. Executing OPT_DFF pass (perform DFF optimizations).
|
||
|
|
||
|
yosys> opt_clean -purge
|
||
|
|
||
|
16.47.14.14. Executing OPT_CLEAN pass (remove unused cells and wires).
|
||
|
Finding unused cells or wires in module \fifo..
|
||
|
|
||
|
yosys> opt_expr
|
||
|
|
||
|
16.47.14.15. Executing OPT_EXPR pass (perform const folding).
|
||
|
Optimizing module fifo.
|
||
|
|
||
|
16.47.14.16. Finished OPT passes. (There is nothing left to do.)
|
||
|
|
||
|
yosys> aigmap
|
||
|
|
||
|
16.47.15. Executing AIGMAP pass (map logic to AIG).
|
||
|
Module fifo: replaced 7 cells with 43 new cells, skipped 11 cells.
|
||
|
replaced 2 cell types:
|
||
|
2 $_OR_
|
||
|
5 $_MUX_
|
||
|
not replaced 3 cell types:
|
||
|
8 $specify2
|
||
|
1 $_NOT_
|
||
|
2 $_AND_
|
||
|
|
||
|
yosys> design -stash $abc9_holes
|
||
|
|
||
|
yosys> design -load $abc9
|
||
|
|
||
|
yosys> design -delete $abc9
|
||
|
|
||
|
yosys> aigmap
|
||
|
|
||
|
16.47.16. Executing AIGMAP pass (map logic to AIG).
|
||
|
Module fifo: replaced 46 cells with 256 new cells, skipped 230 cells.
|
||
|
replaced 3 cell types:
|
||
|
22 $_OR_
|
||
|
8 $_XOR_
|
||
|
16 $_MUX_
|
||
|
not replaced 15 cell types:
|
||
|
20 $_NOT_
|
||
|
19 $_AND_
|
||
|
11 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000011100000
|
||
|
26 SB_DFF
|
||
|
25 SB_DFFER
|
||
|
30 $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1
|
||
|
11 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000011001011
|
||
|
25 SB_DFFER_$abc9_byp
|
||
|
1 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000001100010
|
||
|
2 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000100001011
|
||
|
16 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000010100001
|
||
|
1 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000010000101
|
||
|
1 $paramod$ba68a0420314c29d51ab7ddbd2ec9361aa29f018\SB_RAM40_4K
|
||
|
16 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000100010010
|
||
|
26 $paramod$__ABC9_DELAY\DELAY=32'00000000000000000000000000010101
|
||
|
|
||
|
yosys*> abc9_ops -write_lut /tmp/yosys-abc-Sf9BQI/input.lut
|
||
|
|
||
|
16.47.16.1. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys*> abc9_ops -write_box /tmp/yosys-abc-Sf9BQI/input.box
|
||
|
|
||
|
16.47.16.2. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
|
||
|
yosys*> write_xaiger -map /tmp/yosys-abc-Sf9BQI/input.sym /tmp/yosys-abc-Sf9BQI/input.xaig
|
||
|
|
||
|
16.47.16.3. Executing XAIGER backend.
|
||
|
<suppressed ~78 debug messages>
|
||
|
Extracted 113 AND gates and 562 wires from module `fifo' to a netlist network with 71 inputs and 127 outputs.
|
||
|
|
||
|
yosys*> abc9_exe -W 250 -cwd /tmp/yosys-abc-Sf9BQI -lut /tmp/yosys-abc-Sf9BQI/input.lut -box /tmp/yosys-abc-Sf9BQI/input.box
|
||
|
|
||
|
16.47.16.4. Executing ABC9_EXE pass (technology mapping using ABC9).
|
||
|
|
||
|
16.47.16.5. Executing ABC9.
|
||
|
Running ABC command: "<yosys-exe-dir>/yosys-abc" -s -f <abc-temp-dir>/abc.script 2>&1
|
||
|
ABC: ABC command line: "source <abc-temp-dir>/abc.script".
|
||
|
ABC:
|
||
|
ABC: + read_lut <abc-temp-dir>/input.lut
|
||
|
ABC: + read_box <abc-temp-dir>/input.box
|
||
|
ABC: + &read <abc-temp-dir>/input.xaig
|
||
|
ABC: + &ps
|
||
|
ABC: <abc-temp-dir>/input : i/o = 71/ 127 and = 113 lev = 6 (0.27) mem = 0.01 MB box = 139 bb = 109
|
||
|
ABC: Warning: AIG with boxes has internal fanout in 0 complex flops and 20 carries.
|
||
|
ABC: + &scorr
|
||
|
ABC: Warning: The network is combinational.
|
||
|
ABC: + &sweep
|
||
|
ABC: + &dc2
|
||
|
ABC: + &dch -f
|
||
|
ABC: + &ps
|
||
|
ABC: <abc-temp-dir>/input : i/o = 71/ 127 and = 160 lev = 6 (0.12) mem = 0.01 MB ch = 20 box = 139 bb = 109
|
||
|
ABC: Warning: AIG with boxes has internal fanout in 0 complex flops and 20 carries.
|
||
|
ABC: + &if -W 250 -v
|
||
|
ABC: K = 4. Memory (bytes): Truth = 0. Cut = 48. Obj = 128. Set = 528. CutMin = no
|
||
|
ABC: Node = 160. Ch = 19. Total mem = 0.11 MB. Peak cut mem = 0.01 MB.
|
||
|
ABC: P: Del = 2712.00. Ar = 28.0. Edge = 81. Cut = 569. T = 0.00 sec
|
||
|
ABC: P: Del = 2712.00. Ar = 27.0. Edge = 87. Cut = 564. T = 0.00 sec
|
||
|
ABC: P: Del = 2712.00. Ar = 26.0. Edge = 86. Cut = 565. T = 0.00 sec
|
||
|
ABC: F: Del = 2712.00. Ar = 26.0. Edge = 88. Cut = 554. T = 0.00 sec
|
||
|
ABC: A: Del = 2712.00. Ar = 26.0. Edge = 86. Cut = 537. T = 0.00 sec
|
||
|
ABC: A: Del = 2712.00. Ar = 26.0. Edge = 86. Cut = 545. T = 0.00 sec
|
||
|
ABC: Total time = 0.00 sec
|
||
|
ABC: + &write -n <abc-temp-dir>/output.aig
|
||
|
ABC: + &mfs
|
||
|
ABC: The network is not changed by "&mfs".
|
||
|
ABC: + &ps -l
|
||
|
ABC: <abc-temp-dir>/input : i/o = 71/ 127 and = 91 lev = 6 (0.12) mem = 0.01 MB box = 139 bb = 109
|
||
|
ABC: Mapping (K=4) : lut = 26 edge = 86 lev = 3 (0.05) levB = 10 mem = 0.00 MB
|
||
|
ABC: LUT = 26 : 2=4 15.4 % 3=10 38.5 % 4=12 46.2 % Ave = 3.31
|
||
|
ABC: Warning: AIG with boxes has internal fanout in 0 complex flops and 20 carries.
|
||
|
ABC: + &write -n <abc-temp-dir>/output.aig
|
||
|
ABC: + time
|
||
|
ABC: elapse: 0.01 seconds, total: 0.01 seconds
|
||
|
|
||
|
yosys*> read_aiger -xaiger -wideports -module_name fifo$abc9 -map /tmp/yosys-abc-Sf9BQI/input.sym /tmp/yosys-abc-Sf9BQI/output.aig
|
||
|
|
||
|
16.47.16.6. Executing AIGER frontend.
|
||
|
|
||
|
yosys> clean
|
||
|
<suppressed ~408 debug messages>
|
||
|
Removed 175 unused cells and 883 unused wires.
|
||
|
|
||
|
yosys*> abc9_ops -reintegrate
|
||
|
|
||
|
16.47.16.7. Executing ABC9_OPS pass (helper functions for ABC9).
|
||
|
ABC RESULTS: $lut cells: 29
|
||
|
ABC RESULTS: $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1 cells: 30
|
||
|
ABC RESULTS: \SB_DFFER_$abc9_byp cells: 25
|
||
|
ABC RESULTS: input signals: 36
|
||
|
ABC RESULTS: output signals: 91
|
||
|
Removing temp directory.
|
||
|
|
||
|
yosys> techmap -wb -map %$abc9_unmap -map +/abc9_unmap.v
|
||
|
|
||
|
16.47.17. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.47.17.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/abc9_unmap.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/abc9_unmap.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$__DFF_x__$abc9_flop'.
|
||
|
Generating RTLIL representation for module `\$__ABC9_SCC_BREAKER'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.47.17.2. Continuing TECHMAP pass.
|
||
|
Using template SB_DFFER_$abc9_byp for cells of type SB_DFFER_$abc9_byp.
|
||
|
Using template $paramod$ba68a0420314c29d51ab7ddbd2ec9361aa29f018\SB_RAM40_4K for cells of type $paramod$ba68a0420314c29d51ab7ddbd2ec9361aa29f018\SB_RAM40_4K.
|
||
|
Using template $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1 for cells of type $paramod$__ICE40_CARRY_WRAPPER\LUT=16'0110100110010110\I3_IS_CI=1'1.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~64 debug messages>
|
||
|
|
||
|
yosys> design -delete $abc9_unmap
|
||
|
|
||
|
yosys> design -delete $abc9_holes
|
||
|
|
||
|
yosys> delete =*_$abc9_byp
|
||
|
|
||
|
yosys> setattr -mod -unset abc9_box_id
|
||
|
|
||
|
yosys> ice40_wrapcarry -unwrap
|
||
|
|
||
|
16.48. Executing ICE40_WRAPCARRY pass (wrap carries).
|
||
|
|
||
|
yosys> techmap -map +/ice40/ff_map.v
|
||
|
|
||
|
16.49. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.49.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/ff_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/ff_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$_DFF_N_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_NP0_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_NP1_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_PP0_'.
|
||
|
Generating RTLIL representation for module `\$_DFF_PP1_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP0P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_NP1P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP0P_'.
|
||
|
Generating RTLIL representation for module `\$_DFFE_PP1P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_NP0_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_NP1_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_PP0_'.
|
||
|
Generating RTLIL representation for module `\$_SDFF_PP1_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_NP0P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_NP1P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_PP0P_'.
|
||
|
Generating RTLIL representation for module `\$_SDFFCE_PP1P_'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.49.2. Continuing TECHMAP pass.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~22 debug messages>
|
||
|
|
||
|
yosys> clean
|
||
|
Removed 7 unused cells and 1055 unused wires.
|
||
|
|
||
|
yosys> opt_lut -dlogic SB_CARRY:I0=1:I1=2:CI=3 -dlogic SB_CARRY:CO=3
|
||
|
|
||
|
16.50. Executing OPT_LUT pass (optimize LUTs).
|
||
|
Discovering LUTs.
|
||
|
Number of LUTs: 58
|
||
|
1-LUT 3
|
||
|
2-LUT 8
|
||
|
3-LUT 35
|
||
|
4-LUT 12
|
||
|
with \SB_CARRY (#0) 25
|
||
|
with \SB_CARRY (#1) 26
|
||
|
|
||
|
Eliminating LUTs.
|
||
|
Number of LUTs: 58
|
||
|
1-LUT 3
|
||
|
2-LUT 8
|
||
|
3-LUT 35
|
||
|
4-LUT 12
|
||
|
with \SB_CARRY (#0) 25
|
||
|
with \SB_CARRY (#1) 26
|
||
|
|
||
|
Combining LUTs.
|
||
|
Number of LUTs: 58
|
||
|
1-LUT 3
|
||
|
2-LUT 8
|
||
|
3-LUT 35
|
||
|
4-LUT 12
|
||
|
with \SB_CARRY (#0) 25
|
||
|
with \SB_CARRY (#1) 26
|
||
|
|
||
|
Eliminated 0 LUTs.
|
||
|
Combined 0 LUTs.
|
||
|
<suppressed ~334 debug messages>
|
||
|
|
||
|
yosys> techmap -map +/ice40/cells_map.v
|
||
|
|
||
|
16.51. Executing TECHMAP pass (map to technology primitives).
|
||
|
|
||
|
16.51.1. Executing Verilog-2005 frontend: /home/dawn/yosys/share/ice40/cells_map.v
|
||
|
Parsing Verilog input from `/home/dawn/yosys/share/ice40/cells_map.v' to AST representation.
|
||
|
Generating RTLIL representation for module `\$lut'.
|
||
|
Successfully finished Verilog frontend.
|
||
|
|
||
|
16.51.2. Continuing TECHMAP pass.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000011\LUT=8'10111000 for cells of type $lut.
|
||
|
Using template $paramod$fd904e9e35cfd343a9df248824bd3f1408724879\$lut for cells of type $lut.
|
||
|
Using template $paramod$e87f431398fe61dc3cef677df705fdf1c11aa0f7\$lut for cells of type $lut.
|
||
|
Using template $paramod$8d7a8d6e3356de09670738ba85f2c6b874f6b06d\$lut for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000011\LUT=8'10010000 for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000010\LUT=4'0100 for cells of type $lut.
|
||
|
Using template $paramod$2b29ccbd5fb8b9c557f92ddec1023c75686f32ae\$lut for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000010\LUT=4'0010 for cells of type $lut.
|
||
|
Using template $paramod$ba7c22fadfbf9ee7abcb895a21403114111dd201\$lut for cells of type $lut.
|
||
|
Using template $paramod$5c7d886f3b88971ac55fed4bca034a87bf180f7d\$lut for cells of type $lut.
|
||
|
Using template $paramod$571404c0889eaf57f492cb5e37f8acb5df5852f9\$lut for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000010\LUT=4'0110 for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000001\LUT=2'01 for cells of type $lut.
|
||
|
Using template $paramod\$lut\WIDTH=32'00000000000000000000000000000011\LUT=8'01001011 for cells of type $lut.
|
||
|
No more expansions possible.
|
||
|
<suppressed ~243 debug messages>
|
||
|
|
||
|
yosys> clean
|
||
|
Removed 0 unused cells and 130 unused wires.
|
||
|
|
||
|
yosys> autoname
|
||
|
|
||
|
16.52. Executing AUTONAME pass.
|
||
|
Renamed 1254 objects in module fifo (21 iterations).
|
||
|
<suppressed ~213 debug messages>
|
||
|
|
||
|
yosys> hierarchy -check
|
||
|
|
||
|
16.53. Executing HIERARCHY pass (managing design hierarchy).
|
||
|
|
||
|
16.53.1. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
|
||
|
16.53.2. Analyzing design hierarchy..
|
||
|
Top module: \fifo
|
||
|
Removed 0 unused modules.
|
||
|
|
||
|
yosys> stat
|
||
|
|
||
|
16.54. Printing statistics.
|
||
|
|
||
|
=== fifo ===
|
||
|
|
||
|
Number of wires: 91
|
||
|
Number of wire bits: 246
|
||
|
Number of public wires: 91
|
||
|
Number of public wire bits: 246
|
||
|
Number of memories: 0
|
||
|
Number of memory bits: 0
|
||
|
Number of processes: 0
|
||
|
Number of cells: 136
|
||
|
SB_CARRY 26
|
||
|
SB_DFF 26
|
||
|
SB_DFFER 25
|
||
|
SB_LUT4 58
|
||
|
SB_RAM40_4K 1
|
||
|
|
||
|
|
||
|
yosys> check -noinit
|
||
|
|
||
|
16.55. Executing CHECK pass (checking for obvious problems).
|
||
|
Checking module fifo...
|
||
|
Found and reported 0 problems.
|
||
|
|
||
|
yosys> blackbox =A:whitebox
|
||
|
|
||
|
yosys> show -notitle -format dot -prefix fifo_synth
|
||
|
|
||
|
17. Generating Graphviz representation of design.
|
||
|
Writing dot description to `fifo_synth.dot'.
|
||
|
Dumping module fifo to page 1.
|
||
|
|
||
|
yosys> stat
|
||
|
|
||
|
18. Printing statistics.
|
||
|
|
||
|
=== fifo ===
|
||
|
|
||
|
Number of wires: 91
|
||
|
Number of wire bits: 246
|
||
|
Number of public wires: 91
|
||
|
Number of public wire bits: 246
|
||
|
Number of memories: 0
|
||
|
Number of memory bits: 0
|
||
|
Number of processes: 0
|
||
|
Number of cells: 136
|
||
|
SB_CARRY 26
|
||
|
SB_DFF 26
|
||
|
SB_DFFER 25
|
||
|
SB_LUT4 58
|
||
|
SB_RAM40_4K 1
|
||
|
|
||
|
End of script. Logfile hash: 7fbdf4b991, CPU: user 0.68s system 0.01s, MEM: 29.84 MB peak
|
||
|
Yosys 0.35+39 (git sha1 0cd4a10c8, clang 10.0.0-4ubuntu1 -fPIC -Os)
|
||
|
Time spent: 37% 27x read_verilog (0 sec), 33% 12x techmap (0 sec), ...
|