mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merge pull request #3727 from YosysHQ/micko/pll_bram
MachXO2: Add PLL and EBR related primitives
This commit is contained in:
		
						commit
						b377a39b73
					
				
					 5 changed files with 325 additions and 124 deletions
				
			
		|  | @ -4,6 +4,7 @@ OBJS += techlibs/machxo2/synth_machxo2.o | ||||||
| $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/cells_io.vh)) | $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/cells_io.vh)) | ||||||
| $(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_map.v)) | $(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_map.v)) | ||||||
| $(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_sim.v)) | $(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_sim.v)) | ||||||
|  | $(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_bb.v)) | ||||||
| 
 | 
 | ||||||
| $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams.txt)) | $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams.txt)) | ||||||
| $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams_map.v)) | $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams_map.v)) | ||||||
|  |  | ||||||
|  | @ -45,38 +45,38 @@ assign PORT_A_RD_DATA = DOA; | ||||||
| assign PORT_B_RD_DATA = DOB; | assign PORT_B_RD_DATA = DOB; | ||||||
| 
 | 
 | ||||||
| DP8KC #( | DP8KC #( | ||||||
| 	.INITVAL_00($sformatf("0x%080x", init_slice('h00))), | 	.INITVAL_00(init_slice('h00)), | ||||||
| 	.INITVAL_01($sformatf("0x%080x", init_slice('h01))), | 	.INITVAL_01(init_slice('h01)), | ||||||
| 	.INITVAL_02($sformatf("0x%080x", init_slice('h02))), | 	.INITVAL_02(init_slice('h02)), | ||||||
| 	.INITVAL_03($sformatf("0x%080x", init_slice('h03))), | 	.INITVAL_03(init_slice('h03)), | ||||||
| 	.INITVAL_04($sformatf("0x%080x", init_slice('h04))), | 	.INITVAL_04(init_slice('h04)), | ||||||
| 	.INITVAL_05($sformatf("0x%080x", init_slice('h05))), | 	.INITVAL_05(init_slice('h05)), | ||||||
| 	.INITVAL_06($sformatf("0x%080x", init_slice('h06))), | 	.INITVAL_06(init_slice('h06)), | ||||||
| 	.INITVAL_07($sformatf("0x%080x", init_slice('h07))), | 	.INITVAL_07(init_slice('h07)), | ||||||
| 	.INITVAL_08($sformatf("0x%080x", init_slice('h08))), | 	.INITVAL_08(init_slice('h08)), | ||||||
| 	.INITVAL_09($sformatf("0x%080x", init_slice('h09))), | 	.INITVAL_09(init_slice('h09)), | ||||||
| 	.INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), | 	.INITVAL_0A(init_slice('h0a)), | ||||||
| 	.INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), | 	.INITVAL_0B(init_slice('h0b)), | ||||||
| 	.INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), | 	.INITVAL_0C(init_slice('h0c)), | ||||||
| 	.INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), | 	.INITVAL_0D(init_slice('h0d)), | ||||||
| 	.INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), | 	.INITVAL_0E(init_slice('h0e)), | ||||||
| 	.INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), | 	.INITVAL_0F(init_slice('h0f)), | ||||||
| 	.INITVAL_10($sformatf("0x%080x", init_slice('h10))), | 	.INITVAL_10(init_slice('h10)), | ||||||
| 	.INITVAL_11($sformatf("0x%080x", init_slice('h11))), | 	.INITVAL_11(init_slice('h11)), | ||||||
| 	.INITVAL_12($sformatf("0x%080x", init_slice('h12))), | 	.INITVAL_12(init_slice('h12)), | ||||||
| 	.INITVAL_13($sformatf("0x%080x", init_slice('h13))), | 	.INITVAL_13(init_slice('h13)), | ||||||
| 	.INITVAL_14($sformatf("0x%080x", init_slice('h14))), | 	.INITVAL_14(init_slice('h14)), | ||||||
| 	.INITVAL_15($sformatf("0x%080x", init_slice('h15))), | 	.INITVAL_15(init_slice('h15)), | ||||||
| 	.INITVAL_16($sformatf("0x%080x", init_slice('h16))), | 	.INITVAL_16(init_slice('h16)), | ||||||
| 	.INITVAL_17($sformatf("0x%080x", init_slice('h17))), | 	.INITVAL_17(init_slice('h17)), | ||||||
| 	.INITVAL_18($sformatf("0x%080x", init_slice('h18))), | 	.INITVAL_18(init_slice('h18)), | ||||||
| 	.INITVAL_19($sformatf("0x%080x", init_slice('h19))), | 	.INITVAL_19(init_slice('h19)), | ||||||
| 	.INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), | 	.INITVAL_1A(init_slice('h1a)), | ||||||
| 	.INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), | 	.INITVAL_1B(init_slice('h1b)), | ||||||
| 	.INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), | 	.INITVAL_1C(init_slice('h1c)), | ||||||
| 	.INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), | 	.INITVAL_1D(init_slice('h1d)), | ||||||
| 	.INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), | 	.INITVAL_1E(init_slice('h1e)), | ||||||
| 	.INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), | 	.INITVAL_1F(init_slice('h1f)), | ||||||
| 	.DATA_WIDTH_A(PORT_A_WIDTH), | 	.DATA_WIDTH_A(PORT_A_WIDTH), | ||||||
| 	.DATA_WIDTH_B(PORT_B_WIDTH), | 	.DATA_WIDTH_B(PORT_B_WIDTH), | ||||||
| 	.REGMODE_A("NOREG"), | 	.REGMODE_A("NOREG"), | ||||||
|  | @ -211,38 +211,38 @@ wire [17:0] DO; | ||||||
| assign PORT_R_RD_DATA = PORT_R_WIDTH == 18 ? DO : DO[17:9]; | assign PORT_R_RD_DATA = PORT_R_WIDTH == 18 ? DO : DO[17:9]; | ||||||
| 
 | 
 | ||||||
| DP8KC #( | DP8KC #( | ||||||
| 	.INITVAL_00($sformatf("0x%080x", init_slice('h00))), | 	.INITVAL_00(init_slice('h00)), | ||||||
| 	.INITVAL_01($sformatf("0x%080x", init_slice('h01))), | 	.INITVAL_01(init_slice('h01)), | ||||||
| 	.INITVAL_02($sformatf("0x%080x", init_slice('h02))), | 	.INITVAL_02(init_slice('h02)), | ||||||
| 	.INITVAL_03($sformatf("0x%080x", init_slice('h03))), | 	.INITVAL_03(init_slice('h03)), | ||||||
| 	.INITVAL_04($sformatf("0x%080x", init_slice('h04))), | 	.INITVAL_04(init_slice('h04)), | ||||||
| 	.INITVAL_05($sformatf("0x%080x", init_slice('h05))), | 	.INITVAL_05(init_slice('h05)), | ||||||
| 	.INITVAL_06($sformatf("0x%080x", init_slice('h06))), | 	.INITVAL_06(init_slice('h06)), | ||||||
| 	.INITVAL_07($sformatf("0x%080x", init_slice('h07))), | 	.INITVAL_07(init_slice('h07)), | ||||||
| 	.INITVAL_08($sformatf("0x%080x", init_slice('h08))), | 	.INITVAL_08(init_slice('h08)), | ||||||
| 	.INITVAL_09($sformatf("0x%080x", init_slice('h09))), | 	.INITVAL_09(init_slice('h09)), | ||||||
| 	.INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), | 	.INITVAL_0A(init_slice('h0a)), | ||||||
| 	.INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), | 	.INITVAL_0B(init_slice('h0b)), | ||||||
| 	.INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), | 	.INITVAL_0C(init_slice('h0c)), | ||||||
| 	.INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), | 	.INITVAL_0D(init_slice('h0d)), | ||||||
| 	.INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), | 	.INITVAL_0E(init_slice('h0e)), | ||||||
| 	.INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), | 	.INITVAL_0F(init_slice('h0f)), | ||||||
| 	.INITVAL_10($sformatf("0x%080x", init_slice('h10))), | 	.INITVAL_10(init_slice('h10)), | ||||||
| 	.INITVAL_11($sformatf("0x%080x", init_slice('h11))), | 	.INITVAL_11(init_slice('h11)), | ||||||
| 	.INITVAL_12($sformatf("0x%080x", init_slice('h12))), | 	.INITVAL_12(init_slice('h12)), | ||||||
| 	.INITVAL_13($sformatf("0x%080x", init_slice('h13))), | 	.INITVAL_13(init_slice('h13)), | ||||||
| 	.INITVAL_14($sformatf("0x%080x", init_slice('h14))), | 	.INITVAL_14(init_slice('h14)), | ||||||
| 	.INITVAL_15($sformatf("0x%080x", init_slice('h15))), | 	.INITVAL_15(init_slice('h15)), | ||||||
| 	.INITVAL_16($sformatf("0x%080x", init_slice('h16))), | 	.INITVAL_16(init_slice('h16)), | ||||||
| 	.INITVAL_17($sformatf("0x%080x", init_slice('h17))), | 	.INITVAL_17(init_slice('h17)), | ||||||
| 	.INITVAL_18($sformatf("0x%080x", init_slice('h18))), | 	.INITVAL_18(init_slice('h18)), | ||||||
| 	.INITVAL_19($sformatf("0x%080x", init_slice('h19))), | 	.INITVAL_19(init_slice('h19)), | ||||||
| 	.INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), | 	.INITVAL_1A(init_slice('h1a)), | ||||||
| 	.INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), | 	.INITVAL_1B(init_slice('h1b)), | ||||||
| 	.INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), | 	.INITVAL_1C(init_slice('h1c)), | ||||||
| 	.INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), | 	.INITVAL_1D(init_slice('h1d)), | ||||||
| 	.INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), | 	.INITVAL_1E(init_slice('h1e)), | ||||||
| 	.INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), | 	.INITVAL_1F(init_slice('h1f)), | ||||||
| 	.DATA_WIDTH_A(PORT_W_WIDTH), | 	.DATA_WIDTH_A(PORT_W_WIDTH), | ||||||
| 	.DATA_WIDTH_B(PORT_R_WIDTH), | 	.DATA_WIDTH_B(PORT_R_WIDTH), | ||||||
| 	.REGMODE_A("NOREG"), | 	.REGMODE_A("NOREG"), | ||||||
|  |  | ||||||
							
								
								
									
										227
									
								
								techlibs/machxo2/cells_bb.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										227
									
								
								techlibs/machxo2/cells_bb.v
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,227 @@ | ||||||
|  | (* blackbox *) | ||||||
|  | module EHXPLLJ ( | ||||||
|  |     input CLKI, CLKFB, | ||||||
|  |     input PHASESEL1, PHASESEL0, PHASEDIR, PHASESTEP,  | ||||||
|  |     input LOADREG, STDBY, PLLWAKESYNC, RST, RESETM, RESETC, RESETD,  | ||||||
|  |     input ENCLKOP, ENCLKOS, ENCLKOS2, ENCLKOS3, PLLCLK, PLLRST, PLLSTB, PLLWE,  | ||||||
|  |     input PLLDATI7, PLLDATI6, PLLDATI5, PLLDATI4, PLLDATI3, PLLDATI2, PLLDATI1, PLLDATI0,  | ||||||
|  |     input PLLADDR4, PLLADDR3, PLLADDR2, PLLADDR1, PLLADDR0, | ||||||
|  |     output CLKOP, CLKOS, CLKOS2, CLKOS3, LOCK, INTLOCK, REFCLK,  | ||||||
|  |     output PLLDATO7, PLLDATO6, PLLDATO5, PLLDATO4, PLLDATO3, PLLDATO2, PLLDATO1, PLLDATO0, PLLACK,  | ||||||
|  |     output DPHSRC, CLKINTFB | ||||||
|  | ); | ||||||
|  |     parameter CLKI_DIV = 1; | ||||||
|  |     parameter CLKFB_DIV = 1; | ||||||
|  |     parameter CLKOP_DIV = 8; | ||||||
|  |     parameter CLKOS_DIV = 8; | ||||||
|  |     parameter CLKOS2_DIV = 8; | ||||||
|  |     parameter CLKOS3_DIV = 8; | ||||||
|  |     parameter CLKOP_ENABLE = "ENABLED"; | ||||||
|  |     parameter CLKOS_ENABLE = "ENABLED"; | ||||||
|  |     parameter CLKOS2_ENABLE = "ENABLED"; | ||||||
|  |     parameter CLKOS3_ENABLE = "ENABLED"; | ||||||
|  |     parameter VCO_BYPASS_A0 = "DISABLED"; | ||||||
|  |     parameter VCO_BYPASS_B0 = "DISABLED"; | ||||||
|  |     parameter VCO_BYPASS_C0 = "DISABLED"; | ||||||
|  |     parameter VCO_BYPASS_D0 = "DISABLED"; | ||||||
|  |     parameter CLKOP_CPHASE = 0; | ||||||
|  |     parameter CLKOS_CPHASE = 0; | ||||||
|  |     parameter CLKOS2_CPHASE = 0; | ||||||
|  |     parameter CLKOS3_CPHASE = 0; | ||||||
|  |     parameter CLKOP_FPHASE = 0; | ||||||
|  |     parameter CLKOS_FPHASE = 0; | ||||||
|  |     parameter CLKOS2_FPHASE = 0; | ||||||
|  |     parameter CLKOS3_FPHASE = 0; | ||||||
|  |     parameter FEEDBK_PATH = "CLKOP"; | ||||||
|  |     parameter FRACN_ENABLE = "DISABLED"; | ||||||
|  |     parameter FRACN_DIV = 0; | ||||||
|  |     parameter CLKOP_TRIM_POL = "RISING"; | ||||||
|  |     parameter CLKOP_TRIM_DELAY = 0; | ||||||
|  |     parameter CLKOS_TRIM_POL = "RISING"; | ||||||
|  |     parameter CLKOS_TRIM_DELAY = 0; | ||||||
|  |     parameter PLL_USE_WB = "DISABLED"; | ||||||
|  |     parameter PREDIVIDER_MUXA1 = 0; | ||||||
|  |     parameter PREDIVIDER_MUXB1 = 0; | ||||||
|  |     parameter PREDIVIDER_MUXC1 = 0; | ||||||
|  |     parameter PREDIVIDER_MUXD1 = 0; | ||||||
|  |     parameter OUTDIVIDER_MUXA2 = "DIVA"; | ||||||
|  |     parameter OUTDIVIDER_MUXB2 = "DIVB"; | ||||||
|  |     parameter OUTDIVIDER_MUXC2 = "DIVC"; | ||||||
|  |     parameter OUTDIVIDER_MUXD2 = "DIVD"; | ||||||
|  |     parameter PLL_LOCK_MODE = 0; | ||||||
|  |     parameter STDBY_ENABLE = "DISABLED"; | ||||||
|  |     parameter DPHASE_SOURCE = "DISABLED"; | ||||||
|  |     parameter PLLRST_ENA = "DISABLED"; | ||||||
|  |     parameter MRST_ENA = "DISABLED"; | ||||||
|  |     parameter DCRST_ENA = "DISABLED"; | ||||||
|  |     parameter DDRST_ENA = "DISABLED"; | ||||||
|  |     parameter INTFB_WAKE = "DISABLED"; | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module OSCH #( | ||||||
|  | 	parameter NOM_FREQ = "2.08" | ||||||
|  | ) ( | ||||||
|  | 	input STDBY, | ||||||
|  | 	output OSC, | ||||||
|  | 	output SEDSTDBY | ||||||
|  | ); | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module DCCA ( | ||||||
|  | 	input CLKI, | ||||||
|  | 	input CE, | ||||||
|  | 	output CLKO | ||||||
|  | ); | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module DCMA ( | ||||||
|  | 	input CLK0, | ||||||
|  | 	input CLK1, | ||||||
|  | 	input SEL, | ||||||
|  | 	output DCMOUT | ||||||
|  | ); | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module PDPW8KC ( | ||||||
|  |     input DI17, DI16, DI15, DI14, DI13, DI12, DI11, DI10, DI9, DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0, | ||||||
|  |     input ADW8, ADW7, ADW6, ADW5, ADW4, ADW3, ADW2, ADW1, ADW0, | ||||||
|  |     input BE1, BE0, | ||||||
|  |     input CEW, CLKW, CSW2, CSW1, CSW0, | ||||||
|  |     input ADR12, ADR11, ADR10, ADR9, ADR8, ADR7, ADR6, ADR5, ADR4,  ADR3,  ADR2, ADR1, ADR0, | ||||||
|  |     input CER, OCER, CLKR, CSR2, CSR1, CSR0, RST, | ||||||
|  |     output DO17, DO16, DO15, DO14, DO13, DO12, DO11, DO10, DO9, DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0 | ||||||
|  | ); | ||||||
|  |     parameter DATA_WIDTH_W = 18; | ||||||
|  |     parameter DATA_WIDTH_R = 9; | ||||||
|  | 
 | ||||||
|  |     parameter GSR = "ENABLED"; | ||||||
|  | 
 | ||||||
|  |     parameter REGMODE = "NOREG"; | ||||||
|  | 
 | ||||||
|  |     parameter RESETMODE = "SYNC"; | ||||||
|  |     parameter ASYNC_RESET_RELEASE = "SYNC"; | ||||||
|  | 
 | ||||||
|  |     parameter CSDECODE_W = "0b000"; | ||||||
|  |     parameter CSDECODE_R = "0b000"; | ||||||
|  | 
 | ||||||
|  |     parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INIT_DATA = "STATIC"; | ||||||
|  | 
 | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module SP8KC ( | ||||||
|  |     input DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0, | ||||||
|  |     input AD12, AD11, AD10, AD9, AD8, AD7, AD6, AD5, AD4, AD3, AD2, AD1, AD0, | ||||||
|  |     input CE, OCE, CLK, WE, CS2, CS1, CS0, RST, | ||||||
|  |     output DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0 | ||||||
|  | ); | ||||||
|  |     parameter DATA_WIDTH = 9; | ||||||
|  |     parameter GSR = "ENABLED"; | ||||||
|  | 
 | ||||||
|  |     parameter REGMODE = "NOREG"; | ||||||
|  | 
 | ||||||
|  |     parameter RESETMODE = "SYNC"; | ||||||
|  |     parameter ASYNC_RESET_RELEASE = "SYNC"; | ||||||
|  | 
 | ||||||
|  |     parameter CSDECODE = "0b000"; | ||||||
|  | 
 | ||||||
|  |     parameter WRITEMODE = "NORMAL"; | ||||||
|  | 
 | ||||||
|  |     parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
|  |     parameter INIT_DATA = "STATIC"; | ||||||
|  | endmodule | ||||||
|  | 
 | ||||||
|  | (* blackbox *) | ||||||
|  | module FIFO8KB ( | ||||||
|  |     input DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16, DI17, | ||||||
|  |     input CSW0, CSW1, CSR0, CSR1, WE, RE, ORE, CLKW, CLKR, RST, RPRST, FULLI, EMPTYI, | ||||||
|  |     output DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10, DO11, DO12, DO13, DO14, DO15, DO16, DO17, | ||||||
|  |     input EF, AEF, AFF, FF | ||||||
|  | ); | ||||||
|  |     parameter DATA_WIDTH_W = 18; | ||||||
|  |     parameter DATA_WIDTH_R = 18; | ||||||
|  | 
 | ||||||
|  |     parameter GSR = "DISABLED"; | ||||||
|  | 
 | ||||||
|  |     parameter REGMODE = "NOREG"; | ||||||
|  | 
 | ||||||
|  |     parameter RESETMODE = "ASYNC"; | ||||||
|  |     parameter ASYNC_RESET_RELEASE = "SYNC"; | ||||||
|  | 
 | ||||||
|  |     parameter CSDECODE_W = "0b00"; | ||||||
|  |     parameter CSDECODE_R = "0b00"; | ||||||
|  | 
 | ||||||
|  |     parameter AEPOINTER    = "0b00000000000000"; | ||||||
|  |     parameter AEPOINTER1   = "0b00000000000000"; | ||||||
|  |     parameter AFPOINTER    = "0b00000000000000"; | ||||||
|  |     parameter AFPOINTER1   = "0b00000000000000"; | ||||||
|  |     parameter FULLPOINTER  = "0b00000000000000"; | ||||||
|  |     parameter FULLPOINTER1 = "0b00000000000000"; | ||||||
|  | endmodule | ||||||
|  | @ -179,33 +179,6 @@ module TRELLIS_IO #( | ||||||
| 	endgenerate | 	endgenerate | ||||||
| endmodule | endmodule | ||||||
| 
 | 
 | ||||||
| (* blackbox *) |  | ||||||
| module OSCH #( |  | ||||||
| 	parameter NOM_FREQ = "2.08" |  | ||||||
| ) ( |  | ||||||
| 	input STDBY, |  | ||||||
| 	output OSC, |  | ||||||
| 	output SEDSTDBY |  | ||||||
| ); |  | ||||||
| endmodule |  | ||||||
| 
 |  | ||||||
| (* blackbox *) |  | ||||||
| module DCCA ( |  | ||||||
| 	input CLKI, |  | ||||||
| 	input CE, |  | ||||||
| 	output CLKO |  | ||||||
| ); |  | ||||||
| endmodule |  | ||||||
| 
 |  | ||||||
| (* blackbox *) |  | ||||||
| module DCMA ( |  | ||||||
| 	input CLK0, |  | ||||||
| 	input CLK1, |  | ||||||
| 	input SEL, |  | ||||||
| 	output DCMOUT |  | ||||||
| ); |  | ||||||
| endmodule |  | ||||||
| 
 |  | ||||||
| (* abc9_box, lib_whitebox *) | (* abc9_box, lib_whitebox *) | ||||||
| module TRELLIS_DPR16X4 ( | module TRELLIS_DPR16X4 ( | ||||||
| 	input  [3:0] DI, | 	input  [3:0] DI, | ||||||
|  | @ -371,38 +344,38 @@ module DP8KC( | ||||||
| 	parameter GSR = "ENABLED"; | 	parameter GSR = "ENABLED"; | ||||||
| 	parameter INIT_DATA = "STATIC"; | 	parameter INIT_DATA = "STATIC"; | ||||||
| 
 | 
 | ||||||
| 	parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| 	parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; | 	parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | ||||||
| endmodule | endmodule | ||||||
| 
 | 
 | ||||||
| `ifndef NO_INCLUDES | `ifndef NO_INCLUDES | ||||||
|  |  | ||||||
|  | @ -178,7 +178,7 @@ struct SynthMachXO2Pass : public ScriptPass | ||||||
| 	{ | 	{ | ||||||
| 		if (check_label("begin")) | 		if (check_label("begin")) | ||||||
| 		{ | 		{ | ||||||
| 			run("read_verilog -lib -icells +/machxo2/cells_sim.v"); | 			run("read_verilog -lib -icells +/machxo2/cells_sim.v +/machxo2/cells_bb.v"); | ||||||
| 			run(stringf("hierarchy -check %s", help_mode ? "-top <top>" : top_opt.c_str())); | 			run(stringf("hierarchy -check %s", help_mode ? "-top <top>" : top_opt.c_str())); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue