mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Added read-enable to memory model
This commit is contained in:
		
							parent
							
								
									ec92c89659
								
							
						
					
					
						commit
						924d9d6e86
					
				
					 17 changed files with 157 additions and 76 deletions
				
			
		|  | @ -6,7 +6,7 @@ bram $__XILINX_RAMB36_SDP | |||
|   groups 2 | ||||
|   ports  1 1 | ||||
|   wrmode 0 1 | ||||
|   enable 0 8 | ||||
|   enable 1 8 | ||||
|   transp 0 0 | ||||
|   clocks 2 3 | ||||
|   clkpol 2 3 | ||||
|  | @ -19,7 +19,7 @@ bram $__XILINX_RAMB18_SDP | |||
|   groups 2 | ||||
|   ports  1 1 | ||||
|   wrmode 0 1 | ||||
|   enable 0 4 | ||||
|   enable 1 4 | ||||
|   transp 0 0 | ||||
|   clocks 2 3 | ||||
|   clkpol 2 3 | ||||
|  | @ -42,9 +42,9 @@ bram $__XILINX_RAMB36_TDP | |||
|   groups 2 | ||||
|   ports  1 1 | ||||
|   wrmode 0 1 | ||||
|   enable 0 4   @a10d36 | ||||
|   enable 0 2   @a11d18 | ||||
|   enable 0 1   @a12d9 @a13d4 @a14d2 @a15d1 | ||||
|   enable 1 4   @a10d36 | ||||
|   enable 1 2   @a11d18 | ||||
|   enable 1 1   @a12d9 @a13d4 @a14d2 @a15d1 | ||||
|   transp 0 0 | ||||
|   clocks 2 3 | ||||
|   clkpol 2 3 | ||||
|  | @ -65,8 +65,8 @@ bram $__XILINX_RAMB18_TDP | |||
|   groups 2 | ||||
|   ports  1 1 | ||||
|   wrmode 0 1 | ||||
|   enable 0 2   @a10d18 | ||||
|   enable 0 1   @a11d9 @a12d4 @a13d2 @a14d1 | ||||
|   enable 1 2   @a10d18 | ||||
|   enable 1 1   @a11d9 @a12d4 @a13d2 @a14d1 | ||||
|   transp 0 0 | ||||
|   clocks 2 3 | ||||
|   clkpol 2 3 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| module \$__XILINX_RAMB36_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | ||||
| module \$__XILINX_RAMB36_SDP (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); | ||||
| 	parameter CLKPOL2 = 1; | ||||
| 	parameter CLKPOL3 = 1; | ||||
| 	parameter [36863:0] INIT = 36864'bx; | ||||
|  | @ -8,6 +8,7 @@ module \$__XILINX_RAMB36_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 	input [8:0] A1ADDR; | ||||
| 	output [71:0] A1DATA; | ||||
| 	input A1EN; | ||||
| 
 | ||||
| 	input [8:0] B1ADDR; | ||||
| 	input [71:0] B1DATA; | ||||
|  | @ -47,7 +48,7 @@ module \$__XILINX_RAMB36_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 		.ADDRARDADDR(A1ADDR_16), | ||||
| 		.CLKARDCLK(CLK2), | ||||
| 		.ENARDEN(|1), | ||||
| 		.ENARDEN(A1EN), | ||||
| 		.REGCEAREGCE(|1), | ||||
| 		.RSTRAMARSTRAM(|0), | ||||
| 		.RSTREGARSTREG(|0), | ||||
|  | @ -65,7 +66,7 @@ endmodule | |||
| 
 | ||||
| // ------------------------------------------------------------------------ | ||||
| 
 | ||||
| module \$__XILINX_RAMB18_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | ||||
| module \$__XILINX_RAMB18_SDP (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); | ||||
| 	parameter CLKPOL2 = 1; | ||||
| 	parameter CLKPOL3 = 1; | ||||
| 	parameter [18431:0] INIT = 18432'bx; | ||||
|  | @ -75,6 +76,7 @@ module \$__XILINX_RAMB18_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 	input [8:0] A1ADDR; | ||||
| 	output [35:0] A1DATA; | ||||
| 	input A1EN; | ||||
| 
 | ||||
| 	input [8:0] B1ADDR; | ||||
| 	input [35:0] B1DATA; | ||||
|  | @ -111,7 +113,7 @@ module \$__XILINX_RAMB18_SDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 		.ADDRARDADDR(A1ADDR_14), | ||||
| 		.CLKARDCLK(CLK2), | ||||
| 		.ENARDEN(|1), | ||||
| 		.ENARDEN(A1EN), | ||||
| 		.REGCEAREGCE(|1), | ||||
| 		.RSTRAMARSTRAM(|0), | ||||
| 		.RSTREGARSTREG(|0), | ||||
|  | @ -129,7 +131,7 @@ endmodule | |||
| 
 | ||||
| // ------------------------------------------------------------------------ | ||||
| 
 | ||||
| module \$__XILINX_RAMB36_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | ||||
| module \$__XILINX_RAMB36_TDP (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); | ||||
| 	parameter CFG_ABITS = 10; | ||||
| 	parameter CFG_DBITS = 36; | ||||
| 	parameter CFG_ENABLE_B = 4; | ||||
|  | @ -143,6 +145,7 @@ module \$__XILINX_RAMB36_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 	input [CFG_ABITS-1:0] A1ADDR; | ||||
| 	output [CFG_DBITS-1:0] A1DATA; | ||||
| 	input A1EN; | ||||
| 
 | ||||
| 	input [CFG_ABITS-1:0] B1ADDR; | ||||
| 	input [CFG_DBITS-1:0] B1DATA; | ||||
|  | @ -181,7 +184,7 @@ module \$__XILINX_RAMB36_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 			.DOPADOP(DOP[3:0]), | ||||
| 			.ADDRARDADDR(A1ADDR_16), | ||||
| 			.CLKARDCLK(CLK2), | ||||
| 			.ENARDEN(|1), | ||||
| 			.ENARDEN(A1EN), | ||||
| 			.REGCEAREGCE(|1), | ||||
| 			.RSTRAMARSTRAM(|0), | ||||
| 			.RSTREGARSTREG(|0), | ||||
|  | @ -219,7 +222,7 @@ module \$__XILINX_RAMB36_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 			.DOPADOP(DOP[3:0]), | ||||
| 			.ADDRARDADDR(A1ADDR_16), | ||||
| 			.CLKARDCLK(CLK2), | ||||
| 			.ENARDEN(|1), | ||||
| 			.ENARDEN(A1EN), | ||||
| 			.REGCEAREGCE(|1), | ||||
| 			.RSTRAMARSTRAM(|0), | ||||
| 			.RSTREGARSTREG(|0), | ||||
|  | @ -242,7 +245,7 @@ endmodule | |||
| 
 | ||||
| // ------------------------------------------------------------------------ | ||||
| 
 | ||||
| module \$__XILINX_RAMB18_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | ||||
| module \$__XILINX_RAMB18_TDP (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); | ||||
| 	parameter CFG_ABITS = 10; | ||||
| 	parameter CFG_DBITS = 18; | ||||
| 	parameter CFG_ENABLE_B = 2; | ||||
|  | @ -256,6 +259,7 @@ module \$__XILINX_RAMB18_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 
 | ||||
| 	input [CFG_ABITS-1:0] A1ADDR; | ||||
| 	output [CFG_DBITS-1:0] A1DATA; | ||||
| 	input A1EN; | ||||
| 
 | ||||
| 	input [CFG_ABITS-1:0] B1ADDR; | ||||
| 	input [CFG_DBITS-1:0] B1DATA; | ||||
|  | @ -294,7 +298,7 @@ module \$__XILINX_RAMB18_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 			.DOPADOP(DOP), | ||||
| 			.ADDRARDADDR(A1ADDR_14), | ||||
| 			.CLKARDCLK(CLK2), | ||||
| 			.ENARDEN(|1), | ||||
| 			.ENARDEN(A1EN), | ||||
| 			.REGCEAREGCE(|1), | ||||
| 			.RSTRAMARSTRAM(|0), | ||||
| 			.RSTREGARSTREG(|0), | ||||
|  | @ -332,7 +336,7 @@ module \$__XILINX_RAMB18_TDP (CLK2, CLK3, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN); | |||
| 			.DOPADOP(DOP), | ||||
| 			.ADDRARDADDR(A1ADDR_14), | ||||
| 			.CLKARDCLK(CLK2), | ||||
| 			.ENARDEN(|1), | ||||
| 			.ENARDEN(A1EN), | ||||
| 			.REGCEAREGCE(|1), | ||||
| 			.RSTRAMARSTRAM(|0), | ||||
| 			.RSTREGARSTREG(|0), | ||||
|  |  | |||
|  | @ -79,7 +79,6 @@ struct SynthXilinxPass : public Pass { | |||
| 		log("\n"); | ||||
| 		log("    coarse:\n"); | ||||
| 		log("        synth -run coarse\n"); | ||||
| 		log("        dff2dffe\n"); | ||||
| 		log("\n"); | ||||
| 		log("    bram:\n"); | ||||
| 		log("        memory_bram -rules +/xilinx/brams.txt\n"); | ||||
|  | @ -92,6 +91,7 @@ struct SynthXilinxPass : public Pass { | |||
| 		log("    fine:\n"); | ||||
| 		log("        opt -fast -full\n"); | ||||
| 		log("        memory_map\n"); | ||||
| 		log("        dff2dffe\n"); | ||||
| 		log("        opt -full\n"); | ||||
| 		log("        techmap -map +/techmap.v -map +/xilinx/arith_map.v\n"); | ||||
| 		log("        opt -fast\n"); | ||||
|  | @ -178,7 +178,6 @@ struct SynthXilinxPass : public Pass { | |||
| 		if (check_label(active, run_from, run_to, "coarse")) | ||||
| 		{ | ||||
| 			Pass::call(design, "synth -run coarse"); | ||||
| 			Pass::call(design, "dff2dffe"); | ||||
| 		} | ||||
| 
 | ||||
| 		if (check_label(active, run_from, run_to, "bram")) | ||||
|  | @ -197,6 +196,7 @@ struct SynthXilinxPass : public Pass { | |||
| 		{ | ||||
| 			Pass::call(design, "opt -fast -full"); | ||||
| 			Pass::call(design, "memory_map"); | ||||
| 			Pass::call(design, "dff2dffe"); | ||||
| 			Pass::call(design, "opt -full"); | ||||
| 			Pass::call(design, "techmap -map +/techmap.v -map +/xilinx/arith_map.v"); | ||||
| 			Pass::call(design, "opt -fast"); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue