mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	ice40, ecp5, gowin: enable ABC9 by default
This commit is contained in:
		
							parent
							
								
									5691cd0958
								
							
						
					
					
						commit
						7ae4041e20
					
				
					 10 changed files with 46 additions and 22 deletions
				
			
		|  | @ -93,8 +93,8 @@ struct SynthEcp5Pass : public ScriptPass | ||||||
| 		log("    -abc2\n"); | 		log("    -abc2\n"); | ||||||
| 		log("        run two passes of 'abc' for slightly improved logic density\n"); | 		log("        run two passes of 'abc' for slightly improved logic density\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -abc9\n"); | 		log("    -noabc9\n"); | ||||||
| 		log("        use new ABC9 flow (EXPERIMENTAL)\n"); | 		log("        disable use of new ABC9 flow\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -vpr\n"); | 		log("    -vpr\n"); | ||||||
| 		log("        generate an output netlist (and BLIF file) suitable for VPR\n"); | 		log("        generate an output netlist (and BLIF file) suitable for VPR\n"); | ||||||
|  | @ -137,7 +137,7 @@ struct SynthEcp5Pass : public ScriptPass | ||||||
| 		retime = false; | 		retime = false; | ||||||
| 		abc2 = false; | 		abc2 = false; | ||||||
| 		vpr = false; | 		vpr = false; | ||||||
| 		abc9 = false; | 		abc9 = true; | ||||||
| 		iopad = false; | 		iopad = false; | ||||||
| 		nodsp = false; | 		nodsp = false; | ||||||
| 		no_rw_check = false; | 		no_rw_check = false; | ||||||
|  | @ -224,7 +224,11 @@ struct SynthEcp5Pass : public ScriptPass | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (args[argidx] == "-abc9") { | 			if (args[argidx] == "-abc9") { | ||||||
| 				abc9 = true; | 				// removed, ABC9 is on by default.
 | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 			if (args[argidx] == "-noabc9") { | ||||||
|  | 				abc9 = false; | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (args[argidx] == "-iopad") { | 			if (args[argidx] == "-iopad") { | ||||||
|  |  | ||||||
|  | @ -78,8 +78,8 @@ struct SynthGowinPass : public ScriptPass | ||||||
| 		log("    -noalu\n"); | 		log("    -noalu\n"); | ||||||
| 		log("        do not use ALU cells\n"); | 		log("        do not use ALU cells\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -abc9\n"); | 		log("    -noabc9\n"); | ||||||
| 		log("        use new ABC9 flow (EXPERIMENTAL)\n"); | 		log("        disable use of new ABC9 flow\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -no-rw-check\n"); | 		log("    -no-rw-check\n"); | ||||||
| 		log("        marks all recognized read ports as \"return don't-care value on\n"); | 		log("        marks all recognized read ports as \"return don't-care value on\n"); | ||||||
|  | @ -106,7 +106,7 @@ struct SynthGowinPass : public ScriptPass | ||||||
| 		nodffe = false; | 		nodffe = false; | ||||||
| 		nolutram = false; | 		nolutram = false; | ||||||
| 		nowidelut = false; | 		nowidelut = false; | ||||||
| 		abc9 = false; | 		abc9 = true; | ||||||
| 		noiopads = false; | 		noiopads = false; | ||||||
| 		noalu = false; | 		noalu = false; | ||||||
| 		no_rw_check = false; | 		no_rw_check = false; | ||||||
|  | @ -170,7 +170,11 @@ struct SynthGowinPass : public ScriptPass | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (args[argidx] == "-abc9") { | 			if (args[argidx] == "-abc9") { | ||||||
| 				abc9 = true; | 				// removed, ABC9 is on by default.
 | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 			if (args[argidx] == "-abc9") { | ||||||
|  | 				abc9 = false; | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (args[argidx] == "-noiopads") { | 			if (args[argidx] == "-noiopads") { | ||||||
|  |  | ||||||
|  | @ -106,8 +106,8 @@ struct SynthIce40Pass : public ScriptPass | ||||||
| 		log("        generate an output netlist (and BLIF file) suitable for VPR\n"); | 		log("        generate an output netlist (and BLIF file) suitable for VPR\n"); | ||||||
| 		log("        (this feature is experimental and incomplete)\n"); | 		log("        (this feature is experimental and incomplete)\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -abc9\n"); | 		log("    -noabc9\n"); | ||||||
| 		log("        use new ABC9 flow (EXPERIMENTAL)\n"); | 		log("        disable use of new ABC9 flow\n"); | ||||||
| 		log("\n"); | 		log("\n"); | ||||||
| 		log("    -flowmap\n"); | 		log("    -flowmap\n"); | ||||||
| 		log("        use FlowMap LUT techmapping instead of abc (EXPERIMENTAL)\n"); | 		log("        use FlowMap LUT techmapping instead of abc (EXPERIMENTAL)\n"); | ||||||
|  | @ -144,7 +144,7 @@ struct SynthIce40Pass : public ScriptPass | ||||||
| 		noabc = false; | 		noabc = false; | ||||||
| 		abc2 = false; | 		abc2 = false; | ||||||
| 		vpr = false; | 		vpr = false; | ||||||
| 		abc9 = false; | 		abc9 = true; | ||||||
| 		flowmap = false; | 		flowmap = false; | ||||||
| 		device_opt = "hx"; | 		device_opt = "hx"; | ||||||
| 		no_rw_check = false; | 		no_rw_check = false; | ||||||
|  | @ -235,6 +235,10 @@ struct SynthIce40Pass : public ScriptPass | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (args[argidx] == "-abc9") { | 			if (args[argidx] == "-abc9") { | ||||||
|  | 				// removed, ABC9 is on by default.
 | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 			if (args[argidx] == "-noabc9") { | ||||||
| 				abc9 = true; | 				abc9 = true; | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -4,6 +4,9 @@ proc | ||||||
| equiv_opt -assert -map +/ecp5/cells_sim.v synth_ecp5 # equivalency check | equiv_opt -assert -map +/ecp5/cells_sim.v synth_ecp5 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd top # Constrain all select calls below inside the top module | cd top # Constrain all select calls below inside the top module | ||||||
| select -assert-count 10 t:LUT4 | select -assert-min 25 t:LUT4 | ||||||
| select -assert-none t:LUT4 %% t:* %D | select -assert-max 26 t:LUT4 | ||||||
|  | select -assert-count 10 t:PFUMX | ||||||
|  | select -assert-count 6 t:L6MUX21 | ||||||
|  | select -assert-none t:LUT4 t:PFUMX t:L6MUX21 %% t:* %D | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ flatten | ||||||
| equiv_opt -assert -multiclock -map +/ecp5/cells_sim.v synth_ecp5 # equivalency check | equiv_opt -assert -multiclock -map +/ecp5/cells_sim.v synth_ecp5 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd top # Constrain all select calls below inside the top module | cd top # Constrain all select calls below inside the top module | ||||||
|  | select -assert-count 1 t:LUT4 | ||||||
| select -assert-count 4 t:CCU2C | select -assert-count 4 t:CCU2C | ||||||
| select -assert-count 8 t:TRELLIS_FF | select -assert-count 8 t:TRELLIS_FF | ||||||
| select -assert-none t:CCU2C t:TRELLIS_FF %% t:* %D | select -assert-none t:LUT4 t:CCU2C t:TRELLIS_FF %% t:* %D | ||||||
|  |  | ||||||
|  | @ -6,10 +6,11 @@ equiv_opt -assert -multiclock -map +/gowin/cells_sim.v synth_gowin # equivalency | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd top # Constrain all select calls below inside the top module | cd top # Constrain all select calls below inside the top module | ||||||
| 
 | 
 | ||||||
|  | select -assert-count 1 t:LUT1 | ||||||
| select -assert-count 8 t:DFFC | select -assert-count 8 t:DFFC | ||||||
| select -assert-count 8 t:ALU | select -assert-count 8 t:ALU | ||||||
| select -assert-count 1 t:GND | select -assert-count 1 t:GND | ||||||
| select -assert-count 1 t:VCC | select -assert-count 1 t:VCC | ||||||
| select -assert-count 2 t:IBUF | select -assert-count 2 t:IBUF | ||||||
| select -assert-count 8 t:OBUF | select -assert-count 8 t:OBUF | ||||||
| select -assert-none t:DFFC t:ALU t:GND t:VCC t:IBUF t:OBUF %% t:* %D | select -assert-none t:LUT1 t:DFFC t:ALU t:GND t:VCC t:IBUF t:OBUF %% t:* %D | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| read_verilog init.v | read_verilog init.v | ||||||
| read_verilog -lib +/gowin/cells_sim.v | read_verilog -lib -specify +/gowin/cells_sim.v | ||||||
| design -save read | design -save read | ||||||
| 
 | 
 | ||||||
| proc | proc | ||||||
|  |  | ||||||
|  | @ -32,10 +32,17 @@ proc | ||||||
| equiv_opt -assert -map +/gowin/cells_sim.v synth_gowin # equivalency check | equiv_opt -assert -map +/gowin/cells_sim.v synth_gowin # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd mux8 # Constrain all select calls below inside the top module | cd mux8 # Constrain all select calls below inside the top module | ||||||
|  | select -assert-count 1 t:LUT1 | ||||||
|  | select -assert-count 10 t:LUT3 | ||||||
|  | select -assert-count 1 t:LUT4 | ||||||
|  | select -assert-count 5 t:MUX2_LUT5 | ||||||
|  | select -assert-count 2 t:MUX2_LUT6 | ||||||
|  | select -assert-count 1 t:MUX2_LUT7 | ||||||
| select -assert-count 11 t:IBUF | select -assert-count 11 t:IBUF | ||||||
| select -assert-count 1 t:OBUF | select -assert-count 1 t:OBUF | ||||||
|  | select -assert-count 1 t:GND | ||||||
| 
 | 
 | ||||||
| select -assert-none t:LUT* t:MUX2_LUT6 t:MUX2_LUT5 t:IBUF t:OBUF %% t:* %D | select -assert-none t:LUT* t:MUX2_LUT7 t:MUX2_LUT6 t:MUX2_LUT5 t:IBUF t:OBUF t:GND %% t:* %D | ||||||
| 
 | 
 | ||||||
| design -load read | design -load read | ||||||
| hierarchy -top mux16 | hierarchy -top mux16 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ hierarchy -top top | ||||||
| equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd top # Constrain all select calls below inside the top module | cd top # Constrain all select calls below inside the top module | ||||||
| select -assert-count 11 t:SB_LUT4 | select -assert-count 10 t:SB_LUT4 | ||||||
| select -assert-count 6 t:SB_CARRY | select -assert-count 6 t:SB_CARRY | ||||||
| select -assert-none t:SB_LUT4 t:SB_CARRY %% t:* %D | select -assert-none t:SB_LUT4 t:SB_CARRY %% t:* %D | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ proc | ||||||
| equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd mux4 # Constrain all select calls below inside the top module | cd mux4 # Constrain all select calls below inside the top module | ||||||
| select -assert-count 2 t:SB_LUT4 | select -assert-count 3 t:SB_LUT4 | ||||||
| 
 | 
 | ||||||
| select -assert-none t:SB_LUT4 %% t:* %D | select -assert-none t:SB_LUT4 %% t:* %D | ||||||
| 
 | 
 | ||||||
|  | @ -25,7 +25,7 @@ proc | ||||||
| equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd mux8 # Constrain all select calls below inside the top module | cd mux8 # Constrain all select calls below inside the top module | ||||||
| select -assert-count 5 t:SB_LUT4 | select -assert-count 6 t:SB_LUT4 | ||||||
| 
 | 
 | ||||||
| select -assert-none t:SB_LUT4 %% t:* %D | select -assert-none t:SB_LUT4 %% t:* %D | ||||||
| 
 | 
 | ||||||
|  | @ -35,7 +35,7 @@ proc | ||||||
| equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | equiv_opt -assert -map +/ice40/cells_sim.v synth_ice40 # equivalency check | ||||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||||
| cd mux16 # Constrain all select calls below inside the top module | cd mux16 # Constrain all select calls below inside the top module | ||||||
| select -assert-min 11 t:SB_LUT4 | select -assert-min 13 t:SB_LUT4 | ||||||
| select -assert-max 12 t:SB_LUT4 | select -assert-max 14 t:SB_LUT4 | ||||||
| 
 | 
 | ||||||
| select -assert-none t:SB_LUT4 %% t:* %D | select -assert-none t:SB_LUT4 %% t:* %D | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue