1089 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			1089 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | yosys -p "read_verilog -sv top.sv bram.sv; synth_ecp5 -top top -json top.json" | ||
|  | 
 | ||
|  |  /----------------------------------------------------------------------------\ | ||
|  |  |                                                                            | | ||
|  |  |  yosys -- Yosys Open SYnthesis Suite                                       | | ||
|  |  |                                                                            | | ||
|  |  |  Copyright (C) 2012 - 2020  Claire Xenia Wolf <claire@yosyshq.com>         | | ||
|  |  |                                                                            | | ||
|  |  |  Permission to use, copy, modify, and/or distribute this software for any  | | ||
|  |  |  purpose with or without fee is hereby granted, provided that the above    | | ||
|  |  |  copyright notice and this permission notice appear in all copies.         | | ||
|  |  |                                                                            | | ||
|  |  |  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES  | | ||
|  |  |  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF          | | ||
|  |  |  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   | | ||
|  |  |  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    | | ||
|  |  |  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN     | | ||
|  |  |  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   | | ||
|  |  |  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.            | | ||
|  |  |                                                                            | | ||
|  |  \----------------------------------------------------------------------------/ | ||
|  | 
 | ||
|  |  Yosys 0.13+28 (git sha1 fc40df091, gcc 11.2.0-7ubuntu2 -fPIC -Os) | ||
|  | 
 | ||
|  | 
 | ||
|  | -- Running command `read_verilog -sv top.sv bram.sv; synth_ecp5 -top top -json top.json' -- | ||
|  | 
 | ||
|  | 1. Executing Verilog-2005 frontend: top.sv | ||
|  | Parsing SystemVerilog input from `top.sv' to AST representation. | ||
|  | Generating RTLIL representation for module `\top'. | ||
|  |  Model running... | ||
|  | 
 | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 2. Executing Verilog-2005 frontend: bram.sv | ||
|  | Parsing SystemVerilog input from `bram.sv' to AST representation. | ||
|  | Generating RTLIL representation for module `\bram'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3. Executing SYNTH_ECP5 pass. | ||
|  | 
 | ||
|  | 3.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/cells_sim.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/cells_sim.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\LUT4'. | ||
|  | Generating RTLIL representation for module `\$__ABC9_LUT5'. | ||
|  | Generating RTLIL representation for module `\$__ABC9_LUT6'. | ||
|  | Generating RTLIL representation for module `\$__ABC9_LUT7'. | ||
|  | Generating RTLIL representation for module `\L6MUX21'. | ||
|  | Generating RTLIL representation for module `\CCU2C'. | ||
|  | Generating RTLIL representation for module `\TRELLIS_RAM16X2'. | ||
|  | Generating RTLIL representation for module `\PFUMX'. | ||
|  | Generating RTLIL representation for module `\TRELLIS_DPR16X4'. | ||
|  | Generating RTLIL representation for module `\DPR16X4C'. | ||
|  | Generating RTLIL representation for module `\LUT2'. | ||
|  | Generating RTLIL representation for module `\TRELLIS_FF'. | ||
|  | Generating RTLIL representation for module `\TRELLIS_IO'. | ||
|  | Generating RTLIL representation for module `\INV'. | ||
|  | Generating RTLIL representation for module `\TRELLIS_SLICE'. | ||
|  | Generating RTLIL representation for module `\DP16KD'. | ||
|  | Generating RTLIL representation for module `\FD1P3AX'. | ||
|  | Generating RTLIL representation for module `\FD1P3AY'. | ||
|  | Generating RTLIL representation for module `\FD1P3BX'. | ||
|  | Generating RTLIL representation for module `\FD1P3DX'. | ||
|  | Generating RTLIL representation for module `\FD1P3IX'. | ||
|  | Generating RTLIL representation for module `\FD1P3JX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AY'. | ||
|  | Generating RTLIL representation for module `\FD1S3BX'. | ||
|  | Generating RTLIL representation for module `\FD1S3DX'. | ||
|  | Generating RTLIL representation for module `\FD1S3IX'. | ||
|  | Generating RTLIL representation for module `\FD1S3JX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\IB'. | ||
|  | Generating RTLIL representation for module `\IBPU'. | ||
|  | Generating RTLIL representation for module `\IBPD'. | ||
|  | Generating RTLIL representation for module `\OB'. | ||
|  | Generating RTLIL representation for module `\OBZ'. | ||
|  | Generating RTLIL representation for module `\OBZPU'. | ||
|  | Generating RTLIL representation for module `\OBZPD'. | ||
|  | Generating RTLIL representation for module `\OBCO'. | ||
|  | Generating RTLIL representation for module `\BB'. | ||
|  | Generating RTLIL representation for module `\BBPU'. | ||
|  | Generating RTLIL representation for module `\BBPD'. | ||
|  | Generating RTLIL representation for module `\ILVDS'. | ||
|  | Generating RTLIL representation for module `\OLVDS'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.2. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/cells_bb.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/cells_bb.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\MULT18X18D'. | ||
|  | Generating RTLIL representation for module `\ALU54B'. | ||
|  | Generating RTLIL representation for module `\EHXPLLL'. | ||
|  | Generating RTLIL representation for module `\DTR'. | ||
|  | Generating RTLIL representation for module `\OSCG'. | ||
|  | Generating RTLIL representation for module `\USRMCLK'. | ||
|  | Generating RTLIL representation for module `\JTAGG'. | ||
|  | Generating RTLIL representation for module `\DELAYF'. | ||
|  | Generating RTLIL representation for module `\DELAYG'. | ||
|  | Generating RTLIL representation for module `\IDDRX1F'. | ||
|  | Generating RTLIL representation for module `\IDDRX2F'. | ||
|  | Generating RTLIL representation for module `\IDDR71B'. | ||
|  | Generating RTLIL representation for module `\IDDRX2DQA'. | ||
|  | Generating RTLIL representation for module `\ODDRX1F'. | ||
|  | Generating RTLIL representation for module `\ODDRX2F'. | ||
|  | Generating RTLIL representation for module `\ODDR71B'. | ||
|  | Generating RTLIL representation for module `\OSHX2A'. | ||
|  | Generating RTLIL representation for module `\ODDRX2DQA'. | ||
|  | Generating RTLIL representation for module `\ODDRX2DQSB'. | ||
|  | Generating RTLIL representation for module `\TSHX2DQA'. | ||
|  | Generating RTLIL representation for module `\TSHX2DQSA'. | ||
|  | Generating RTLIL representation for module `\DQSBUFM'. | ||
|  | Generating RTLIL representation for module `\DDRDLLA'. | ||
|  | Generating RTLIL representation for module `\DLLDELD'. | ||
|  | Generating RTLIL representation for module `\CLKDIVF'. | ||
|  | Generating RTLIL representation for module `\ECLKSYNCB'. | ||
|  | Generating RTLIL representation for module `\ECLKBRIDGECS'. | ||
|  | Generating RTLIL representation for module `\DCCA'. | ||
|  | Generating RTLIL representation for module `\DCSC'. | ||
|  | Generating RTLIL representation for module `\DCUA'. | ||
|  | Generating RTLIL representation for module `\EXTREFB'. | ||
|  | Generating RTLIL representation for module `\PCSCLKDIV'. | ||
|  | Generating RTLIL representation for module `\PUR'. | ||
|  | Generating RTLIL representation for module `\GSR'. | ||
|  | Generating RTLIL representation for module `\SGSR'. | ||
|  | Generating RTLIL representation for module `\PDPW16KD'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.3. Executing HIERARCHY pass (managing design hierarchy). | ||
|  | 
 | ||
|  | 3.3.1. Analyzing design hierarchy.. | ||
|  | Top module:  \top | ||
|  | Used module:     \bram | ||
|  | Parameter \WIDTH = 8 | ||
|  | Parameter \DEPTH = 10 | ||
|  | Parameter \SIZE = 4096 | ||
|  | 
 | ||
|  | 3.3.2. Executing AST frontend in derive mode using pre-parsed AST for module `\bram'. | ||
|  | Parameter \WIDTH = 8 | ||
|  | Parameter \DEPTH = 10 | ||
|  | Parameter \SIZE = 4096 | ||
|  | Generating RTLIL representation for module `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram'. | ||
|  | 
 | ||
|  | 3.3.3. Analyzing design hierarchy.. | ||
|  | Top module:  \top | ||
|  | Used module:     $paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram | ||
|  | 
 | ||
|  | 3.3.4. Analyzing design hierarchy.. | ||
|  | Top module:  \top | ||
|  | Used module:     $paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram | ||
|  | Removing unused module `\bram'. | ||
|  | Removed 1 unused modules. | ||
|  | 
 | ||
|  | 3.4. Executing PROC pass (convert processes to netlists). | ||
|  | 
 | ||
|  | 3.4.1. Executing PROC_CLEAN pass (remove empty switches from decision trees). | ||
|  | Found and cleaned up 1 empty switch in `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:213$135'. | ||
|  | Removing empty process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:0$251'. | ||
|  | Cleaned up 1 empty switch. | ||
|  | 
 | ||
|  | 3.4.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees). | ||
|  | Marked 1 switch rules as full_case in process $proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:350$235 in module TRELLIS_FF. | ||
|  | Marked 1 switch rules as full_case in process $proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194 in module DPR16X4C. | ||
|  | Marked 1 switch rules as full_case in process $proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136 in module TRELLIS_DPR16X4. | ||
|  | Marked 1 switch rules as full_case in process $proc$bram.sv:20$241 in module $paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram. | ||
|  | Removed a total of 0 dead cases. | ||
|  | 
 | ||
|  | 3.4.3. Executing PROC_PRUNE pass (remove redundant assignments in processes). | ||
|  | Removed 0 redundant assignments. | ||
|  | Promoted 52 assignments to connections. | ||
|  | 
 | ||
|  | 3.4.4. Executing PROC_INIT pass (extract init attributes). | ||
|  | Found init rule in `\TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$239'. | ||
|  |   Set init value: \Q = 1'0 | ||
|  | Found init rule in `\top.$proc$top.sv:0$4'. | ||
|  |   Set init value: \read_addr = 10'0000000000 | ||
|  |   Set init value: \write_addr = 10'0000000000 | ||
|  |   Set init value: \write_data = 8'00000000 | ||
|  | 
 | ||
|  | 3.4.5. Executing PROC_ARST pass (detect async resets in processes). | ||
|  | 
 | ||
|  | 3.4.6. Executing PROC_MUX pass (convert decision trees to multiplexers). | ||
|  | Creating decoders for process `\TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$239'. | ||
|  | Creating decoders for process `\TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:350$235'. | ||
|  |      1/1: $0\Q[0:0] | ||
|  | Creating decoders for process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  | Creating decoders for process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194'. | ||
|  |      1/3: $1$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_EN[3:0]$200 | ||
|  |      2/3: $1$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_DATA[3:0]$199 | ||
|  |      3/3: $1$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_ADDR[3:0]$198 | ||
|  | Creating decoders for process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  | Creating decoders for process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136'. | ||
|  |      1/3: $1$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_EN[3:0]$142 | ||
|  |      2/3: $1$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_DATA[3:0]$141 | ||
|  |      3/3: $1$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_ADDR[3:0]$140 | ||
|  | Creating decoders for process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:213$135'. | ||
|  | Creating decoders for process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:26$248'. | ||
|  |      1/1: $0\data_rd[7:0] | ||
|  | Creating decoders for process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  |      1/3: $1$memwr$\ram$bram.sv:22$240_EN[7:0]$247 | ||
|  |      2/3: $1$memwr$\ram$bram.sv:22$240_DATA[7:0]$246 | ||
|  |      3/3: $1$memwr$\ram$bram.sv:22$240_ADDR[11:0]$245 | ||
|  | Creating decoders for process `\top.$proc$top.sv:0$4'. | ||
|  | Creating decoders for process `\top.$proc$top.sv:29$3'. | ||
|  | 
 | ||
|  | 3.4.7. Executing PROC_DLATCH pass (convert process syncs to latches). | ||
|  | 
 | ||
|  | 3.4.8. Executing PROC_DFF pass (convert process syncs to FFs). | ||
|  | Creating register for signal `\TRELLIS_FF.\Q' using process `\TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:350$235'. | ||
|  |   created $dff cell `$procdff$286' with positive edge clock. | ||
|  | Creating register for signal `\DPR16X4C.\i' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$178_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$179_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$180_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$181_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$182_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$183_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$184_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$185_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$186_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$187_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$188_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$189_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$190_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$191_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:281$192_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_ADDR' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194'. | ||
|  |   created $dff cell `$procdff$287' with positive edge clock. | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_DATA' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194'. | ||
|  |   created $dff cell `$procdff$288' with positive edge clock. | ||
|  | Creating register for signal `\DPR16X4C.$memwr$\ram$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:287$193_EN' using process `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194'. | ||
|  |   created $dff cell `$procdff$289' with positive edge clock. | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.\i' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$118_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$119_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$120_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$121_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$122_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$123_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$124_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$125_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$126_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$127_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$128_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$129_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$130_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$131_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$132_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:207$133_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_ADDR' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136'. | ||
|  |   created $dff cell `$procdff$290' with positive edge clock. | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_DATA' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136'. | ||
|  |   created $dff cell `$procdff$291' with positive edge clock. | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.$memwr$\mem$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:223$134_EN' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136'. | ||
|  |   created $dff cell `$procdff$292' with positive edge clock. | ||
|  | Creating register for signal `\TRELLIS_DPR16X4.\muxwre' using process `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:213$135'. | ||
|  |   created direct connection (no actual register cell created). | ||
|  | Creating register for signal `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.\data_rd' using process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:26$248'. | ||
|  |   created $dff cell `$procdff$293' with positive edge clock. | ||
|  | Creating register for signal `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$memwr$\ram$bram.sv:22$240_ADDR' using process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  |   created $dff cell `$procdff$294' with positive edge clock. | ||
|  | Creating register for signal `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$memwr$\ram$bram.sv:22$240_DATA' using process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  |   created $dff cell `$procdff$295' with positive edge clock. | ||
|  | Creating register for signal `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$memwr$\ram$bram.sv:22$240_EN' using process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  |   created $dff cell `$procdff$296' with positive edge clock. | ||
|  | Creating register for signal `\top.\led_o' using process `\top.$proc$top.sv:29$3'. | ||
|  |   created $dff cell `$procdff$297' with positive edge clock. | ||
|  | Creating register for signal `\top.\read_addr' using process `\top.$proc$top.sv:29$3'. | ||
|  |   created $dff cell `$procdff$298' with positive edge clock. | ||
|  | Creating register for signal `\top.\write_addr' using process `\top.$proc$top.sv:29$3'. | ||
|  |   created $dff cell `$procdff$299' with positive edge clock. | ||
|  | Creating register for signal `\top.\write_data' using process `\top.$proc$top.sv:29$3'. | ||
|  |   created $dff cell `$procdff$300' with positive edge clock. | ||
|  | 
 | ||
|  | 3.4.9. Executing PROC_MEMWR pass (convert process memory writes to cells). | ||
|  | 
 | ||
|  | 3.4.10. Executing PROC_CLEAN pass (remove empty switches from decision trees). | ||
|  | Removing empty process `TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$239'. | ||
|  | Found and cleaned up 2 empty switches in `\TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:350$235'. | ||
|  | Removing empty process `TRELLIS_FF.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:350$235'. | ||
|  | Removing empty process `DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$217'. | ||
|  | Found and cleaned up 1 empty switch in `\DPR16X4C.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:285$194'. | ||
|  | Removing empty process `TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:0$160'. | ||
|  | Found and cleaned up 1 empty switch in `\TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:221$136'. | ||
|  | Removing empty process `TRELLIS_DPR16X4.$proc$/usr/local/bin/../share/yosys/ecp5/cells_sim.v:213$135'. | ||
|  | Found and cleaned up 1 empty switch in `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:26$248'. | ||
|  | Removing empty process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:26$248'. | ||
|  | Found and cleaned up 1 empty switch in `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  | Removing empty process `$paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram.$proc$bram.sv:20$241'. | ||
|  | Removing empty process `top.$proc$top.sv:0$4'. | ||
|  | Removing empty process `top.$proc$top.sv:29$3'. | ||
|  | Cleaned up 6 empty switches. | ||
|  | 
 | ||
|  | 3.4.11. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module $paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram. | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.5. Executing FLATTEN pass (flatten design). | ||
|  | Deleting now unused module $paramod$27c53d37c91ca9b8b077500dcff58f781e672cc9\bram. | ||
|  | <suppressed ~1 debug messages> | ||
|  | 
 | ||
|  | 3.6. Executing TRIBUF pass. | ||
|  | 
 | ||
|  | 3.7. Executing DEMINOUT pass (demote inout ports to input or output). | ||
|  | 
 | ||
|  | 3.8. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | <suppressed ~4 debug messages> | ||
|  | 
 | ||
|  | 3.9. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 6 unused cells and 32 unused wires. | ||
|  | <suppressed ~12 debug messages> | ||
|  | 
 | ||
|  | 3.10. Executing CHECK pass (checking for obvious problems). | ||
|  | Checking module top... | ||
|  | Found and reported 0 problems. | ||
|  | 
 | ||
|  | 3.11. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.11.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.11.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.11.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees). | ||
|  | Running muxtree optimizer on module \top.. | ||
|  |   Creating internal representation of mux trees. | ||
|  |   No muxes found in this module. | ||
|  | Removed 0 multiplexer ports. | ||
|  | 
 | ||
|  | 3.11.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs). | ||
|  |   Optimizing cells in module \top. | ||
|  | Performed a total of 0 changes. | ||
|  | 
 | ||
|  | 3.11.5. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.11.6. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.11.7. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.11.8. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.11.9. Finished OPT passes. (There is nothing left to do.) | ||
|  | 
 | ||
|  | 3.12. Executing FSM pass (extract and optimize FSM). | ||
|  | 
 | ||
|  | 3.12.1. Executing FSM_DETECT pass (finding FSMs in design). | ||
|  | 
 | ||
|  | 3.12.2. Executing FSM_EXTRACT pass (extracting FSM from design). | ||
|  | 
 | ||
|  | 3.12.3. Executing FSM_OPT pass (simple optimizations of FSMs). | ||
|  | 
 | ||
|  | 3.12.4. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.12.5. Executing FSM_OPT pass (simple optimizations of FSMs). | ||
|  | 
 | ||
|  | 3.12.6. Executing FSM_RECODE pass (re-assigning FSM state encoding). | ||
|  | 
 | ||
|  | 3.12.7. Executing FSM_INFO pass (dumping all available information on FSM cells). | ||
|  | 
 | ||
|  | 3.12.8. Executing FSM_MAP pass (mapping FSMs to basic logic). | ||
|  | 
 | ||
|  | 3.13. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.13.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.13.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.13.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees). | ||
|  | Running muxtree optimizer on module \top.. | ||
|  |   Creating internal representation of mux trees. | ||
|  |   No muxes found in this module. | ||
|  | Removed 0 multiplexer ports. | ||
|  | 
 | ||
|  | 3.13.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs). | ||
|  |   Optimizing cells in module \top. | ||
|  | Performed a total of 0 changes. | ||
|  | 
 | ||
|  | 3.13.5. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.13.6. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.13.7. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.13.8. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.13.9. Finished OPT passes. (There is nothing left to do.) | ||
|  | 
 | ||
|  | 3.14. Executing WREDUCE pass (reducing word size of cells). | ||
|  | Removed top 20 address bits (of 32) from memory init port top.$flatten\bram_i.$meminit$\ram$bram.sv:0$250 (bram_i.ram). | ||
|  | Removed top 7 bits (of 8) from FF cell top.$flatten\bram_i.$procdff$293 ($dff). | ||
|  | Removed top 7 bits (of 8) from wire top.read_data. | ||
|  | 
 | ||
|  | 3.15. Executing PEEPOPT pass (run peephole optimizers). | ||
|  | 
 | ||
|  | 3.16. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 0 unused cells and 1 unused wires. | ||
|  | <suppressed ~1 debug messages> | ||
|  | 
 | ||
|  | 3.17. Executing SHARE pass (SAT-based resource sharing). | ||
|  | 
 | ||
|  | 3.18. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.18.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/cmp2lut.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/cmp2lut.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\_90_lut_cmp_'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.18.2. Continuing TECHMAP pass. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~6 debug messages> | ||
|  | 
 | ||
|  | 3.19. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.20. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.21. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.21.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/mul2dsp.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/mul2dsp.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\_80_mul'. | ||
|  | Generating RTLIL representation for module `\_90_soft_mul'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.21.2. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/dsp_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/dsp_map.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\$__MUL18X18'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.21.3. Continuing TECHMAP pass. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~5 debug messages> | ||
|  | 
 | ||
|  | 3.22. Executing ALUMACC pass (create $alu and $macc cells). | ||
|  | Extracting $alu and $macc cells in module top: | ||
|  |   creating $macc model for $add$top.sv:10$1 ($add). | ||
|  |   creating $alu model for $macc $add$top.sv:10$1. | ||
|  |   creating $alu cell for $add$top.sv:10$1: $auto$alumacc.cc:485:replace_alu$304 | ||
|  |   created 1 $alu and 0 $macc cells. | ||
|  | 
 | ||
|  | 3.23. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.23.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.23.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.23.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees). | ||
|  | Running muxtree optimizer on module \top.. | ||
|  |   Creating internal representation of mux trees. | ||
|  |   No muxes found in this module. | ||
|  | Removed 0 multiplexer ports. | ||
|  | 
 | ||
|  | 3.23.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs). | ||
|  |   Optimizing cells in module \top. | ||
|  | Performed a total of 0 changes. | ||
|  | 
 | ||
|  | 3.23.5. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.23.6. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.23.7. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.23.8. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.23.9. Finished OPT passes. (There is nothing left to do.) | ||
|  | 
 | ||
|  | 3.24. Executing MEMORY pass. | ||
|  | 
 | ||
|  | 3.24.1. Executing OPT_MEM pass (optimize memories). | ||
|  | Performed a total of 1 transformations. | ||
|  | 
 | ||
|  | 3.24.2. Executing OPT_MEM_PRIORITY pass (removing unnecessary memory write priority relations). | ||
|  | Performed a total of 0 transformations. | ||
|  | 
 | ||
|  | 3.24.3. Executing OPT_MEM_FEEDBACK pass (finding memory read-to-write feedback paths). | ||
|  | 
 | ||
|  | 3.24.4. Executing MEMORY_DFF pass (merging $dff cells to $memrd). | ||
|  | Checking read port `\bram_i.ram'[0] in module `\top': merging output FF to cell. | ||
|  | 
 | ||
|  | 3.24.5. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 1 unused cells and 1 unused wires. | ||
|  | <suppressed ~2 debug messages> | ||
|  | 
 | ||
|  | 3.24.6. Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells). | ||
|  | 
 | ||
|  | 3.24.7. Executing OPT_MEM_WIDEN pass (optimize memories where all ports are wide). | ||
|  | Performed a total of 0 transformations. | ||
|  | 
 | ||
|  | 3.24.8. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.24.9. Executing MEMORY_COLLECT pass (generating $mem cells). | ||
|  | 
 | ||
|  | 3.25. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.26. Executing MEMORY_BRAM pass (mapping $mem cells to block memories). | ||
|  | Processing top.bram_i.ram: | ||
|  |   Properties: ports=1 bits=32768 rports=1 wports=0 dbits=8 abits=12 words=4096 | ||
|  |   Checking rule #1 for bram type $__ECP5_PDPW16KD (variant 1): | ||
|  |     Bram geometry: abits=9 dbits=36 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_PDPW16KD: awaste=0 dwaste=28 bwaste=14336 waste=14336 efficiency=22 | ||
|  |     Rule #1 for bram type $__ECP5_PDPW16KD (variant 1) accepted. | ||
|  |     Mapping to bram type $__ECP5_PDPW16KD (variant 1): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=14336 efficiency=22 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #2 for bram type $__ECP5_PDPW16KD (variant 1): | ||
|  |     Bram geometry: abits=9 dbits=36 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_PDPW16KD: awaste=0 dwaste=28 bwaste=14336 waste=14336 efficiency=22 | ||
|  |     Rule #2 for bram type $__ECP5_PDPW16KD (variant 1) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #3 for bram type $__ECP5_PDPW16KD (variant 1): | ||
|  |     Bram geometry: abits=9 dbits=36 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_PDPW16KD: awaste=0 dwaste=28 bwaste=14336 waste=14336 efficiency=22 | ||
|  |     Rule for bram type $__ECP5_PDPW16KD (variant 1) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Checking rule #4 for bram type $__ECP5_DP16KD (variant 1): | ||
|  |     Bram geometry: abits=10 dbits=18 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=10 bwaste=10240 waste=10240 efficiency=44 | ||
|  |     Rule #4 for bram type $__ECP5_DP16KD (variant 1) accepted. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 1): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=10240 efficiency=44 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #4 for bram type $__ECP5_DP16KD (variant 2): | ||
|  |     Bram geometry: abits=11 dbits=9 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=1 bwaste=2048 waste=2048 efficiency=88 | ||
|  |     Rule #4 for bram type $__ECP5_DP16KD (variant 2) accepted. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 2): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=2048 efficiency=88 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #4 for bram type $__ECP5_DP16KD (variant 3): | ||
|  |     Bram geometry: abits=12 dbits=4 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=0 bwaste=0 waste=0 efficiency=100 | ||
|  |     Rule #4 for bram type $__ECP5_DP16KD (variant 3) accepted. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 3): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=0 efficiency=100 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #4 for bram type $__ECP5_DP16KD (variant 4): | ||
|  |     Bram geometry: abits=13 dbits=2 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=4096 dwaste=0 bwaste=8192 waste=8192 efficiency=50 | ||
|  |     Rule #4 for bram type $__ECP5_DP16KD (variant 4) accepted. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 4): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=8192 efficiency=50 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #4 for bram type $__ECP5_DP16KD (variant 5): | ||
|  |     Bram geometry: abits=14 dbits=1 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=12288 dwaste=0 bwaste=12288 waste=12288 efficiency=25 | ||
|  |     Rule #4 for bram type $__ECP5_DP16KD (variant 5) accepted. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 5): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Updated properties: dups=1 waste=12288 efficiency=25 | ||
|  |       Storing for later selection. | ||
|  |   Checking rule #5 for bram type $__ECP5_DP16KD (variant 1): | ||
|  |     Bram geometry: abits=10 dbits=18 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=10 bwaste=10240 waste=10240 efficiency=44 | ||
|  |     Rule #5 for bram type $__ECP5_DP16KD (variant 1) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #5 for bram type $__ECP5_DP16KD (variant 2): | ||
|  |     Bram geometry: abits=11 dbits=9 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=1 bwaste=2048 waste=2048 efficiency=88 | ||
|  |     Rule #5 for bram type $__ECP5_DP16KD (variant 2) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #5 for bram type $__ECP5_DP16KD (variant 3): | ||
|  |     Bram geometry: abits=12 dbits=4 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=0 bwaste=0 waste=0 efficiency=100 | ||
|  |     Rule #5 for bram type $__ECP5_DP16KD (variant 3) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #5 for bram type $__ECP5_DP16KD (variant 4): | ||
|  |     Bram geometry: abits=13 dbits=2 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=4096 dwaste=0 bwaste=8192 waste=8192 efficiency=50 | ||
|  |     Rule #5 for bram type $__ECP5_DP16KD (variant 4) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #5 for bram type $__ECP5_DP16KD (variant 5): | ||
|  |     Bram geometry: abits=14 dbits=1 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=12288 dwaste=0 bwaste=12288 waste=12288 efficiency=25 | ||
|  |     Rule #5 for bram type $__ECP5_DP16KD (variant 5) rejected: requirement 'min wports 1' not met. | ||
|  |   Checking rule #6 for bram type $__ECP5_DP16KD (variant 1): | ||
|  |     Bram geometry: abits=10 dbits=18 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=10 bwaste=10240 waste=10240 efficiency=44 | ||
|  |     Rule for bram type $__ECP5_DP16KD (variant 1) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Checking rule #6 for bram type $__ECP5_DP16KD (variant 2): | ||
|  |     Bram geometry: abits=11 dbits=9 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=1 bwaste=2048 waste=2048 efficiency=88 | ||
|  |     Rule for bram type $__ECP5_DP16KD (variant 2) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Checking rule #6 for bram type $__ECP5_DP16KD (variant 3): | ||
|  |     Bram geometry: abits=12 dbits=4 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=0 dwaste=0 bwaste=0 waste=0 efficiency=100 | ||
|  |     Rule for bram type $__ECP5_DP16KD (variant 3) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Checking rule #6 for bram type $__ECP5_DP16KD (variant 4): | ||
|  |     Bram geometry: abits=13 dbits=2 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=4096 dwaste=0 bwaste=8192 waste=8192 efficiency=50 | ||
|  |     Rule for bram type $__ECP5_DP16KD (variant 4) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Checking rule #6 for bram type $__ECP5_DP16KD (variant 5): | ||
|  |     Bram geometry: abits=14 dbits=1 wports=0 rports=0 | ||
|  |     Estimated number of duplicates for more read ports: dups=1 | ||
|  |     Metrics for $__ECP5_DP16KD: awaste=12288 dwaste=0 bwaste=12288 waste=12288 efficiency=25 | ||
|  |     Rule for bram type $__ECP5_DP16KD (variant 5) rejected: requirement 'attribute syn_romstyle="ebr" ...' not met. | ||
|  |   Selecting best of 6 rules: | ||
|  |     Efficiency for rule 4.5: efficiency=25, cells=8, acells=1 | ||
|  |     Efficiency for rule 4.4: efficiency=50, cells=4, acells=1 | ||
|  |     Efficiency for rule 4.3: efficiency=100, cells=2, acells=1 | ||
|  |     Efficiency for rule 4.2: efficiency=88, cells=2, acells=2 | ||
|  |     Efficiency for rule 4.1: efficiency=44, cells=4, acells=4 | ||
|  |     Efficiency for rule 1.1: efficiency=22, cells=8, acells=8 | ||
|  |     Selected rule 4.3 with efficiency 100. | ||
|  |     Mapping to bram type $__ECP5_DP16KD (variant 3): | ||
|  |       Read port #0 is in clock domain \clk. | ||
|  |         Mapped to bram port B1.1. | ||
|  |       Creating $__ECP5_DP16KD cell at grid position <0 0 0>: bram_i.ram.0.0.0 | ||
|  |       Creating $__ECP5_DP16KD cell at grid position <1 0 0>: bram_i.ram.1.0.0 | ||
|  | 
 | ||
|  | 3.27. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.27.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/brams_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/brams_map.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\$__ECP5_DP16KD'. | ||
|  | Generating RTLIL representation for module `\$__ECP5_PDPW16KD'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.27.2. Continuing TECHMAP pass. | ||
|  | Using template $paramod$ba9148b1adcb2e75ad39c74e24db38e574379cd3\$__ECP5_DP16KD for cells of type $__ECP5_DP16KD. | ||
|  | Using template $paramod$30fb7e36c476b971e3c7167d64eb66b5cf299a0d\$__ECP5_DP16KD for cells of type $__ECP5_DP16KD. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~44 debug messages> | ||
|  | 
 | ||
|  | 3.28. Executing MEMORY_BRAM pass (mapping $mem cells to block memories). | ||
|  | 
 | ||
|  | 3.29. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.29.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/lutrams_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/lutrams_map.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\$__TRELLIS_DPR16X4'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.29.2. Continuing TECHMAP pass. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~3 debug messages> | ||
|  | 
 | ||
|  | 3.30. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.30.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | <suppressed ~10 debug messages> | ||
|  | 
 | ||
|  | 3.30.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.30.3. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.30.4. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 1 unused cells and 21 unused wires. | ||
|  | <suppressed ~2 debug messages> | ||
|  | 
 | ||
|  | 3.30.5. Finished fast OPT passes. | ||
|  | 
 | ||
|  | 3.31. Executing MEMORY_MAP pass (converting memories to logic and flip-flops). | ||
|  | 
 | ||
|  | 3.32. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.32.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.32.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.32.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees). | ||
|  | Running muxtree optimizer on module \top.. | ||
|  |   Creating internal representation of mux trees. | ||
|  |   No muxes found in this module. | ||
|  | Removed 0 multiplexer ports. | ||
|  | 
 | ||
|  | 3.32.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs). | ||
|  |   Optimizing cells in module \top. | ||
|  | Performed a total of 0 changes. | ||
|  | 
 | ||
|  | 3.32.5. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | Removed a total of 0 cells. | ||
|  | 
 | ||
|  | 3.32.6. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.32.7. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.32.8. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.32.9. Finished OPT passes. (There is nothing left to do.) | ||
|  | 
 | ||
|  | 3.33. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.33.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/techmap.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/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. | ||
|  | 
 | ||
|  | 3.33.2. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/arith_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/arith_map.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\_80_ecp5_alu'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.33.3. Continuing TECHMAP pass. | ||
|  | Using extmapper simplemap for cells of type $dff. | ||
|  | Using template $paramod$754650b284649a026620fc6856e5b6886cbfe794\_80_ecp5_alu for cells of type $alu. | ||
|  | Using extmapper simplemap for cells of type $logic_or. | ||
|  | Using extmapper simplemap for cells of type $logic_and. | ||
|  | Using extmapper simplemap for cells of type $xor. | ||
|  | Using extmapper simplemap for cells of type $mux. | ||
|  | Using extmapper simplemap for cells of type $not. | ||
|  | Using extmapper simplemap for cells of type $pos. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~118 debug messages> | ||
|  | 
 | ||
|  | 3.34. Executing OPT pass (performing simple optimizations). | ||
|  | 
 | ||
|  | 3.34.1. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | <suppressed ~36 debug messages> | ||
|  | 
 | ||
|  | 3.34.2. Executing OPT_MERGE pass (detect identical cells). | ||
|  | Finding identical cells in module `\top'. | ||
|  | <suppressed ~3 debug messages> | ||
|  | Removed a total of 1 cells. | ||
|  | 
 | ||
|  | 3.34.3. Executing OPT_DFF pass (perform DFF optimizations). | ||
|  | 
 | ||
|  | 3.34.4. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 14 unused cells and 40 unused wires. | ||
|  | <suppressed ~15 debug messages> | ||
|  | 
 | ||
|  | 3.34.5. Finished fast OPT passes. | ||
|  | 
 | ||
|  | 3.35. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | 
 | ||
|  | 3.36. Executing DFFLEGALIZE pass (convert FFs to types supported by the target). | ||
|  | 
 | ||
|  | 3.37. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.37.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/cells_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/cells_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_NN_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PN_'. | ||
|  | 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 `\$_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 `\$_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 `\$_DFFE_NP0N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_NP1N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PP0N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PP1N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP0P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP1P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP0P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP1P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP0N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP1N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP0N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP1N_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFF_NP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFF_PP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_NPN_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_NPP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_PPN_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_PPP_'. | ||
|  | Generating RTLIL representation for module `\FD1P3AX'. | ||
|  | Generating RTLIL representation for module `\FD1P3AY'. | ||
|  | Generating RTLIL representation for module `\FD1P3BX'. | ||
|  | Generating RTLIL representation for module `\FD1P3DX'. | ||
|  | Generating RTLIL representation for module `\FD1P3IX'. | ||
|  | Generating RTLIL representation for module `\FD1P3JX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AY'. | ||
|  | Generating RTLIL representation for module `\FD1S3BX'. | ||
|  | Generating RTLIL representation for module `\FD1S3DX'. | ||
|  | Generating RTLIL representation for module `\FD1S3IX'. | ||
|  | Generating RTLIL representation for module `\FD1S3JX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\IB'. | ||
|  | Generating RTLIL representation for module `\IBPU'. | ||
|  | Generating RTLIL representation for module `\IBPD'. | ||
|  | Generating RTLIL representation for module `\OB'. | ||
|  | Generating RTLIL representation for module `\OBZ'. | ||
|  | Generating RTLIL representation for module `\OBZPU'. | ||
|  | Generating RTLIL representation for module `\OBZPD'. | ||
|  | Generating RTLIL representation for module `\OBCO'. | ||
|  | Generating RTLIL representation for module `\BB'. | ||
|  | Generating RTLIL representation for module `\BBPU'. | ||
|  | Generating RTLIL representation for module `\BBPD'. | ||
|  | Generating RTLIL representation for module `\ILVDS'. | ||
|  | Generating RTLIL representation for module `\OLVDS'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.37.2. Continuing TECHMAP pass. | ||
|  | Using template $paramod\$_DFF_P_\_TECHMAP_WIREINIT_Q_=1'0 for cells of type $_DFF_P_. | ||
|  | Using template $paramod\$_DFF_P_\_TECHMAP_WIREINIT_Q_=1'x for cells of type $_DFF_P_. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~104 debug messages> | ||
|  | 
 | ||
|  | 3.38. Executing OPT_EXPR pass (perform const folding). | ||
|  | Optimizing module top. | ||
|  | 
 | ||
|  | 3.39. Executing SIMPLEMAP pass (map simple cells to gate primitives). | ||
|  | 
 | ||
|  | 3.40. Executing ECP5_GSR pass (implement FF init values). | ||
|  | Handling GSR in top. | ||
|  | 
 | ||
|  | 3.41. Executing ATTRMVCP pass (move or copy attributes). | ||
|  | 
 | ||
|  | 3.42. Executing OPT_CLEAN pass (remove unused cells and wires). | ||
|  | Finding unused cells or wires in module \top.. | ||
|  | Removed 0 unused cells and 44 unused wires. | ||
|  | <suppressed ~1 debug messages> | ||
|  | 
 | ||
|  | 3.43. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.43.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/latches_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/latches_map.v' to AST representation. | ||
|  | Generating RTLIL representation for module `\$_DLATCH_N_'. | ||
|  | Generating RTLIL representation for module `\$_DLATCH_P_'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.43.2. Continuing TECHMAP pass. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~4 debug messages> | ||
|  | 
 | ||
|  | 3.44. Executing ABC pass (technology mapping using ABC). | ||
|  | 
 | ||
|  | 3.44.1. Extracting gate netlist of module `\top' to `<abc-temp-dir>/input.blif'.. | ||
|  | Extracted 0 gates and 0 wires to a netlist network with 0 inputs and 0 outputs. | ||
|  | Don't call ABC as there is nothing to map. | ||
|  | Removing temp directory. | ||
|  | 
 | ||
|  | 3.45. Executing TECHMAP pass (map to technology primitives). | ||
|  | 
 | ||
|  | 3.45.1. Executing Verilog-2005 frontend: /usr/local/bin/../share/yosys/ecp5/cells_map.v | ||
|  | Parsing Verilog input from `/usr/local/bin/../share/yosys/ecp5/cells_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_NN_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PN_'. | ||
|  | 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 `\$_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 `\$_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 `\$_DFFE_NP0N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_NP1N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PP0N_'. | ||
|  | Generating RTLIL representation for module `\$_DFFE_PP1N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP0P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP1P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP0P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP1P_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP0N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_NP1N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP0N_'. | ||
|  | Generating RTLIL representation for module `\$_SDFFE_PP1N_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFF_NP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFF_PP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_NPN_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_NPP_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_PPN_'. | ||
|  | Generating RTLIL representation for module `\$_ALDFFE_PPP_'. | ||
|  | Generating RTLIL representation for module `\FD1P3AX'. | ||
|  | Generating RTLIL representation for module `\FD1P3AY'. | ||
|  | Generating RTLIL representation for module `\FD1P3BX'. | ||
|  | Generating RTLIL representation for module `\FD1P3DX'. | ||
|  | Generating RTLIL representation for module `\FD1P3IX'. | ||
|  | Generating RTLIL representation for module `\FD1P3JX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AX'. | ||
|  | Generating RTLIL representation for module `\FD1S3AY'. | ||
|  | Generating RTLIL representation for module `\FD1S3BX'. | ||
|  | Generating RTLIL representation for module `\FD1S3DX'. | ||
|  | Generating RTLIL representation for module `\FD1S3IX'. | ||
|  | Generating RTLIL representation for module `\FD1S3JX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\IFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3BX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3DX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3IX'. | ||
|  | Generating RTLIL representation for module `\OFS1P3JX'. | ||
|  | Generating RTLIL representation for module `\IB'. | ||
|  | Generating RTLIL representation for module `\IBPU'. | ||
|  | Generating RTLIL representation for module `\IBPD'. | ||
|  | Generating RTLIL representation for module `\OB'. | ||
|  | Generating RTLIL representation for module `\OBZ'. | ||
|  | Generating RTLIL representation for module `\OBZPU'. | ||
|  | Generating RTLIL representation for module `\OBZPD'. | ||
|  | Generating RTLIL representation for module `\OBCO'. | ||
|  | Generating RTLIL representation for module `\BB'. | ||
|  | Generating RTLIL representation for module `\BBPU'. | ||
|  | Generating RTLIL representation for module `\BBPD'. | ||
|  | Generating RTLIL representation for module `\ILVDS'. | ||
|  | Generating RTLIL representation for module `\OLVDS'. | ||
|  | Generating RTLIL representation for module `\$lut'. | ||
|  | Successfully finished Verilog frontend. | ||
|  | 
 | ||
|  | 3.45.2. Continuing TECHMAP pass. | ||
|  | No more expansions possible. | ||
|  | <suppressed ~72 debug messages> | ||
|  | 
 | ||
|  | 3.46. Executing OPT_LUT_INS pass (discard unused LUT inputs). | ||
|  | Optimizing LUTs in top. | ||
|  | 
 | ||
|  | 3.47. Executing AUTONAME pass. | ||
|  | Renamed 19 objects in module top (3 iterations). | ||
|  | <suppressed ~19 debug messages> | ||
|  | 
 | ||
|  | 3.48. Executing HIERARCHY pass (managing design hierarchy). | ||
|  | 
 | ||
|  | 3.48.1. Analyzing design hierarchy.. | ||
|  | Top module:  \top | ||
|  | 
 | ||
|  | 3.48.2. Analyzing design hierarchy.. | ||
|  | Top module:  \top | ||
|  | Removed 0 unused modules. | ||
|  | 
 | ||
|  | 3.49. Printing statistics. | ||
|  | 
 | ||
|  | === top === | ||
|  | 
 | ||
|  |    Number of wires:                 13 | ||
|  |    Number of wire bits:             72 | ||
|  |    Number of public wires:          13 | ||
|  |    Number of public wire bits:      72 | ||
|  |    Number of memories:               0 | ||
|  |    Number of memory bits:            0 | ||
|  |    Number of processes:              0 | ||
|  |    Number of cells:                 17 | ||
|  |      CCU2C                           5 | ||
|  |      DP16KD                          1 | ||
|  |      TRELLIS_FF                     11 | ||
|  | 
 | ||
|  | 3.50. Executing CHECK pass (checking for obvious problems). | ||
|  | Checking module top... | ||
|  | Found and reported 0 problems. | ||
|  | 
 | ||
|  | 3.51. Executing JSON backend. | ||
|  | 
 | ||
|  | End of script. Logfile hash: 190f20a9ac, CPU: user 0.98s system 0.04s, MEM: 374.53 MB peak | ||
|  | Yosys 0.13+28 (git sha1 fc40df091, gcc 11.2.0-7ubuntu2 -fPIC -Os) | ||
|  | Time spent: 42% 8x techmap (0 sec), 40% 16x read_verilog (0 sec), ... | ||
|  | nextpnr-ecp5 --25k --package CABGA381 --speed 6 --json top.json --textcfg top.config --lpf top.lpf --freq 65 |