mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	intel_alm: Add global buffer insertion
Signed-off-by: gatecat <gatecat@ds0.me>
This commit is contained in:
		
							parent
							
								
									5dba138c87
								
							
						
					
					
						commit
						eb106732d9
					
				
					 19 changed files with 119 additions and 45 deletions
				
			
		|  | @ -56,7 +56,9 @@ | |||
| 
 | ||||
| (* abc9_box, lib_whitebox *) | ||||
| module MISTRAL_FF( | ||||
|     input DATAIN, CLK, ACLR, ENA, SCLR, SLOAD, SDATA, | ||||
|     input DATAIN, | ||||
|     (* clkbuf_sink *) input CLK, | ||||
|     input ACLR, ENA, SCLR, SLOAD, SDATA, | ||||
|     output reg Q | ||||
| ); | ||||
| 
 | ||||
|  |  | |||
|  | @ -662,3 +662,38 @@ input [15:0] parallelterminationcontrol; | |||
| (* iopad_external_pin *) output obar; | ||||
| 
 | ||||
| endmodule | ||||
| 
 | ||||
| (* blackbox *) | ||||
| module cyclonev_clkena(inclk, ena, enaout, outclk); | ||||
| 
 | ||||
| parameter clock_type = "auto"; | ||||
| parameter ena_register_mode = "always enabled"; | ||||
| parameter lpm_type = "cyclonev_clkena"; | ||||
| parameter ena_register_power_up = "high"; | ||||
| parameter disable_mode = "low"; | ||||
| parameter test_syn = "high"; | ||||
| 
 | ||||
| input inclk; | ||||
| input ena; | ||||
| output enaout; | ||||
| output outclk; | ||||
| 
 | ||||
| endmodule | ||||
| 
 | ||||
| (* blackbox *) | ||||
| module cyclone10gx_clkena(inclk, ena, enaout, outclk); | ||||
| 
 | ||||
| parameter clock_type = "auto"; | ||||
| parameter ena_register_mode = "always enabled"; | ||||
| parameter lpm_type = "cyclone10gx_clkena"; | ||||
| parameter ena_register_power_up = "high"; | ||||
| parameter disable_mode = "low"; | ||||
| parameter test_syn = "high"; | ||||
| 
 | ||||
| input inclk; | ||||
| input ena; | ||||
| output enaout; | ||||
| output outclk; | ||||
| 
 | ||||
| endmodule | ||||
| 
 | ||||
|  |  | |||
|  | @ -50,7 +50,9 @@ | |||
| // model can be treated as always returning a defined result.
 | ||||
| 
 | ||||
| (* abc9_box, lib_whitebox *) | ||||
| module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, CLK1, input [4:0] B1ADDR, output B1DATA); | ||||
| module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, | ||||
|     (* clkbuf_sink *) input CLK1, | ||||
|     input [4:0] B1ADDR, output B1DATA); | ||||
| 
 | ||||
| reg [31:0] mem = 32'b0; | ||||
| 
 | ||||
|  | @ -83,7 +85,7 @@ module MISTRAL_M10K(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); | |||
| parameter CFG_ABITS = 10; | ||||
| parameter CFG_DBITS = 10; | ||||
| 
 | ||||
| input CLK1; | ||||
| (* clkbuf_sink *) input CLK1; | ||||
| input [CFG_ABITS-1:0] A1ADDR, B1ADDR; | ||||
| input [CFG_DBITS-1:0] A1DATA; | ||||
| input A1EN, B1EN; | ||||
|  |  | |||
|  | @ -10,3 +10,12 @@ module MISTRAL_IO((* iopad_external_pin *)  inout PAD, input I, input OE, output | |||
| 	assign PAD = OE ? I : 1'bz; | ||||
| 	assign O = PAD; | ||||
| endmodule | ||||
| 
 | ||||
| // Eventually, we should support clock enables and model them here too.
 | ||||
| // For now, CLKENA is used as a basic entry point to global routing.
 | ||||
| module MISTRAL_CLKBUF ( | ||||
| 	input A, | ||||
| 	(* clkbuf_driver *) output Q | ||||
| ); | ||||
| 	assign Q = A; | ||||
| endmodule | ||||
|  | @ -4,6 +4,7 @@ | |||
| `define MLAB cyclonev_mlab_cell | ||||
| `define IBUF cyclonev_io_ibuf | ||||
| `define OBUF cyclonev_io_obuf | ||||
| `define CLKENA cyclonev_clkena | ||||
| `endif | ||||
| `ifdef cyclone10gx | ||||
| `define LCELL cyclone10gx_lcell_comb | ||||
|  | @ -11,6 +12,7 @@ | |||
| `define MLAB cyclone10gx_mlab_cell | ||||
| `define IBUF cyclone10gx_io_ibuf | ||||
| `define OBUF cyclone10gx_io_obuf | ||||
| `define CLKENA cyclone10gx_clkena | ||||
| `endif | ||||
| 
 | ||||
| module __MISTRAL_VCC(output Q); | ||||
|  | @ -277,3 +279,17 @@ module MISTRAL_IO(output PAD, input I, OE, output O); | |||
|     .oe(OE) | ||||
| ); | ||||
| endmodule | ||||
| 
 | ||||
| module MISTRAL_CLKBUF (input A, output Q); | ||||
| `CLKENA #( | ||||
|     .clock_type("auto"), | ||||
|     .ena_register_mode("always enabled"), | ||||
|     .ena_register_power_up("high"), | ||||
|     .disable_mode("low"), | ||||
|     .test_syn("high") | ||||
| ) _TECHMAP_REPLACE_ ( | ||||
|     .inclk(A), | ||||
|     .ena(1'b1), | ||||
|     .outclk(Q) | ||||
| ); | ||||
| endmodule | ||||
|  |  | |||
|  | @ -75,13 +75,16 @@ struct SynthIntelALMPass : public ScriptPass { | |||
| 		log("    -noiopad\n"); | ||||
| 		log("        do not instantiate IO buffers\n"); | ||||
| 		log("\n"); | ||||
| 		log("    -noclkbuf\n"); | ||||
| 		log("        do not insert global clock buffers\n"); | ||||
| 		log("\n"); | ||||
| 		log("The following commands are executed by this synthesis command:\n"); | ||||
| 		help_script(); | ||||
| 		log("\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	string top_opt, family_opt, bram_type, vout_file; | ||||
| 	bool flatten, quartus, nolutram, nobram, dff, nodsp, noiopad; | ||||
| 	bool flatten, quartus, nolutram, nobram, dff, nodsp, noiopad, noclkbuf; | ||||
| 
 | ||||
| 	void clear_flags() override | ||||
| 	{ | ||||
|  | @ -96,6 +99,7 @@ struct SynthIntelALMPass : public ScriptPass { | |||
| 		dff = false; | ||||
| 		nodsp = false; | ||||
| 		noiopad = false; | ||||
| 		noclkbuf = false; | ||||
| 	} | ||||
| 
 | ||||
| 	void execute(std::vector<std::string> args, RTLIL::Design *design) override | ||||
|  | @ -154,6 +158,10 @@ struct SynthIntelALMPass : public ScriptPass { | |||
| 				noiopad = true; | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (args[argidx] == "-noclkbuf") { | ||||
| 				noclkbuf = true; | ||||
| 				continue; | ||||
| 			} | ||||
| 			break; | ||||
| 		} | ||||
| 		extra_args(args, argidx, design); | ||||
|  | @ -268,6 +276,8 @@ struct SynthIntelALMPass : public ScriptPass { | |||
| 			run("techmap -map +/intel_alm/common/dff_map.v"); | ||||
| 			run("opt -full -undriven -mux_undef"); | ||||
| 			run("clean -purge"); | ||||
| 			if (!noclkbuf) | ||||
| 				run("clkbufmap -buf MISTRAL_CLKBUF Q:A", "(unless -noclkbuf)"); | ||||
| 		} | ||||
| 
 | ||||
| 		if (check_label("map_luts")) { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| read_verilog ../common/add_sub.v | ||||
| hierarchy -top top | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| stat | ||||
|  | @ -10,7 +10,7 @@ select -assert-none t:MISTRAL_ALUT_ARITH %% t:* %D | |||
| design -reset | ||||
| read_verilog ../common/add_sub.v | ||||
| hierarchy -top top | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| stat | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ design -save read | |||
| 
 | ||||
| hierarchy -top adff | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm  -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm  -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd adff # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -15,7 +15,7 @@ select -assert-none t:MISTRAL_FF t:MISTRAL_NOT %% t:* %D | |||
| design -load read | ||||
| hierarchy -top adff | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd adff # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -27,7 +27,7 @@ select -assert-none t:MISTRAL_FF t:MISTRAL_NOT %% t:* %D | |||
| design -load read | ||||
| hierarchy -top adffn | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd adffn # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -38,7 +38,7 @@ select -assert-none t:MISTRAL_FF %% t:* %D | |||
| design -load read | ||||
| hierarchy -top adffn | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd adffn # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -49,7 +49,7 @@ select -assert-none t:MISTRAL_FF %% t:* %D | |||
| design -load read | ||||
| hierarchy -top dffs | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dffs # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -61,7 +61,7 @@ select -assert-none t:MISTRAL_FF t:MISTRAL_ALUT2 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top dffs | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dffs # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -73,7 +73,7 @@ select -assert-none t:MISTRAL_FF t:MISTRAL_ALUT2 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top ndffnr | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd ndffnr # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -85,7 +85,7 @@ select -assert-none t:MISTRAL_FF t:MISTRAL_NOT %% t:* %D | |||
| design -load read | ||||
| hierarchy -top ndffnr | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd ndffnr # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| read_verilog ../common/blockram.v | ||||
| chparam -set ADDRESS_WIDTH 10 -set DATA_WIDTH 10 sync_ram_sdp | ||||
| synth_intel_alm -family cyclonev -noiopad | ||||
| synth_intel_alm -family cyclonev -noiopad -noclkbuf | ||||
| cd sync_ram_sdp | ||||
| select -assert-count 1 t:MISTRAL_M10K | ||||
| select -assert-none t:MISTRAL_M10K %% t:* %D | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ read_verilog ../common/counter.v | |||
| hierarchy -top top | ||||
| proc | ||||
| flatten | ||||
| equiv_opt -async2sync -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -17,7 +17,7 @@ read_verilog ../common/counter.v | |||
| hierarchy -top top | ||||
| proc | ||||
| flatten | ||||
| equiv_opt -async2sync -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ design -save read | |||
| 
 | ||||
| hierarchy -top dff | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dff # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -13,7 +13,7 @@ select -assert-none t:MISTRAL_FF %% t:* %D | |||
| design -load read | ||||
| hierarchy -top dff | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dff # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -24,7 +24,7 @@ select -assert-none t:MISTRAL_FF %% t:* %D | |||
| design -load read | ||||
| hierarchy -top dffe | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dffe # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  | @ -35,7 +35,7 @@ select -assert-none t:MISTRAL_FF %% t:* %D | |||
| design -load read | ||||
| hierarchy -top dffe | ||||
| proc | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd dffe # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_FF | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ hierarchy -top fsm | |||
| proc | ||||
| flatten | ||||
| 
 | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf | ||||
| async2sync | ||||
| miter -equiv -make_assert -flatten gold gate miter | ||||
| sat -verify -prove-asserts -show-public -set-at 1 in_reset 1 -seq 20 -prove-skip 1 miter | ||||
|  | @ -26,7 +26,7 @@ hierarchy -top fsm | |||
| proc | ||||
| flatten | ||||
| 
 | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf | ||||
| async2sync | ||||
| miter -equiv -make_assert -flatten gold gate miter | ||||
| sat -verify -prove-asserts -show-public -set-at 1 in_reset 1 -seq 20 -prove-skip 1 miter | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| read_verilog ../common/logic.v | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -15,7 +15,7 @@ design -reset | |||
| read_verilog ../common/logic.v | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ read_verilog ../common/lutram.v | |||
| hierarchy -top lutram_1w1r | ||||
| proc | ||||
| memory -nomap | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v -map +/intel_alm/common/mem_sim.v synth_intel_alm -family cyclonev -nobram -noiopad | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v -map +/intel_alm/common/mem_sim.v synth_intel_alm -family cyclonev -nobram -noiopad -noclkbuf | ||||
| memory | ||||
| opt -full | ||||
| 
 | ||||
|  | @ -24,7 +24,7 @@ read_verilog ../common/lutram.v | |||
| hierarchy -top lutram_1w1r | ||||
| proc | ||||
| memory -nomap | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v -map +/intel_alm/common/mem_sim.v synth_intel_alm -family cyclonev -nobram -noiopad | ||||
| equiv_opt -run :prove -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v -map +/intel_alm/common/mem_sim.v synth_intel_alm -family cyclonev -nobram -noiopad -noclkbuf | ||||
| memory | ||||
| opt -full | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ read_verilog ../common/mul.v | |||
| chparam -set X_WIDTH 8 -set Y_WIDTH 8 -set A_WIDTH 16 | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -16,7 +16,7 @@ read_verilog ../common/mul.v | |||
| chparam -set X_WIDTH 17 -set Y_WIDTH 17 -set A_WIDTH 34 | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -28,7 +28,7 @@ read_verilog ../common/mul.v | |||
| chparam -set X_WIDTH 17 -set Y_WIDTH 17 -set A_WIDTH 34 | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -40,7 +40,7 @@ read_verilog ../common/mul.v | |||
| chparam -set X_WIDTH 26 -set Y_WIDTH 26 -set A_WIDTH 52 | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  | @ -52,7 +52,7 @@ read_verilog ../common/mul.v | |||
| chparam -set X_WIDTH 26 -set Y_WIDTH 26 -set A_WIDTH 52 | ||||
| hierarchy -top top | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/dsp_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ design -save read | |||
| 
 | ||||
| hierarchy -top mux2 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd mux2 # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  | @ -14,7 +14,7 @@ select -assert-none t:MISTRAL_ALUT3 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux2 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd mux2 # Constrain all select calls below inside the top module | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  | @ -24,7 +24,7 @@ select -assert-none t:MISTRAL_ALUT3 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux4 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT6 | ||||
|  | @ -34,7 +34,7 @@ select -assert-none t:MISTRAL_ALUT6 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux4 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT6 | ||||
|  | @ -44,7 +44,7 @@ select -assert-none t:MISTRAL_ALUT6 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux8 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  | @ -55,7 +55,7 @@ select -assert-none t:MISTRAL_ALUT3 t:MISTRAL_ALUT6 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux8 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  | @ -66,7 +66,7 @@ select -assert-none t:MISTRAL_ALUT3 t:MISTRAL_ALUT6 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux16 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  | @ -78,7 +78,7 @@ select -assert-none t:MISTRAL_ALUT3 t:MISTRAL_ALUT5 t:MISTRAL_ALUT6 %% t:* %D | |||
| design -load read | ||||
| hierarchy -top mux16 | ||||
| proc | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx # equivalency check | ||||
| equiv_opt -assert -map +/intel_alm/common/alm_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 1 t:MISTRAL_ALUT3 | ||||
|  |  | |||
|  | @ -22,5 +22,5 @@ module top(); | |||
| endmodule | ||||
| EOT | ||||
| 
 | ||||
| synth_intel_alm -family cyclone10gx -quartus -noiopad | ||||
| synth_intel_alm -family cyclone10gx -quartus -noiopad -noclkbuf | ||||
| select -assert-none w:*[* w:*]* | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ read_verilog ../common/shifter.v | |||
| hierarchy -top top | ||||
| proc | ||||
| flatten | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 8 t:MISTRAL_FF | ||||
|  | @ -14,7 +14,7 @@ read_verilog ../common/shifter.v | |||
| hierarchy -top top | ||||
| proc | ||||
| flatten | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -async2sync -assert -map +/intel_alm/common/alm_sim.v -map +/intel_alm/common/dff_sim.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| 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 | ||||
| select -assert-count 8 t:MISTRAL_FF | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ proc | |||
| tribuf | ||||
| flatten | ||||
| synth | ||||
| equiv_opt -assert -map +/simcells.v synth_intel_alm -family cyclonev -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/simcells.v synth_intel_alm -family cyclonev -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd tristate # Constrain all select calls below inside the top module | ||||
| #Internal cell type used. Need support it. | ||||
|  | @ -19,7 +19,7 @@ proc | |||
| tribuf | ||||
| flatten | ||||
| synth | ||||
| equiv_opt -assert -map +/simcells.v synth_intel_alm -family cyclone10gx -noiopad # equivalency check | ||||
| equiv_opt -assert -map +/simcells.v synth_intel_alm -family cyclone10gx -noiopad -noclkbuf # equivalency check | ||||
| design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design) | ||||
| cd tristate # Constrain all select calls below inside the top module | ||||
| #Internal cell type used. Need support it. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue