mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	anlogic: add support for Eagle Distributed RAM
The MSLICEs on the Eagle series of FPGA can be configured as Distributed RAM. Enable to synthesis to DRAM. As the Anlogic software suite doesn't support any 'bx to exist in the initializtion data of DRAM, do not enable the initialization support of the inferred DRAM. Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
This commit is contained in:
		
							parent
							
								
									634d7d1c14
								
							
						
					
					
						commit
						d53a2bd1d3
					
				
					 4 changed files with 43 additions and 1 deletions
				
			
		| 
						 | 
					@ -5,4 +5,5 @@ OBJS += techlibs/anlogic/anlogic_eqn.o
 | 
				
			||||||
$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/cells_map.v))
 | 
					$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/cells_map.v))
 | 
				
			||||||
$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/arith_map.v))
 | 
					$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/arith_map.v))
 | 
				
			||||||
$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/cells_sim.v))
 | 
					$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/cells_sim.v))
 | 
				
			||||||
$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/eagle_bb.v))
 | 
					$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/drams.txt))
 | 
				
			||||||
 | 
					$(eval $(call add_share_file,share/anlogic,techlibs/anlogic/drams_map.v))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								techlibs/anlogic/drams.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								techlibs/anlogic/drams.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					bram $__ANLOGIC_DRAM16X4
 | 
				
			||||||
 | 
					  init 0
 | 
				
			||||||
 | 
					  abits 4
 | 
				
			||||||
 | 
					  dbits 2
 | 
				
			||||||
 | 
					  groups 2
 | 
				
			||||||
 | 
					  ports  1 1
 | 
				
			||||||
 | 
					  wrmode 0 1
 | 
				
			||||||
 | 
					  enable 0 1
 | 
				
			||||||
 | 
					  transp 0 0
 | 
				
			||||||
 | 
					  clocks 0 1
 | 
				
			||||||
 | 
					  clkpol 0 1
 | 
				
			||||||
 | 
					endbram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					match $__ANLOGIC_DRAM16X4
 | 
				
			||||||
 | 
					  make_outreg
 | 
				
			||||||
 | 
					endmatch
 | 
				
			||||||
							
								
								
									
										19
									
								
								techlibs/anlogic/drams_map.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								techlibs/anlogic/drams_map.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					module \$__ANLOGIC_DRAM16X4 (CLK1, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN);
 | 
				
			||||||
 | 
						input CLK1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						input [3:0] A1ADDR;
 | 
				
			||||||
 | 
						output [3:0] A1DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						input [3:0] B1ADDR;
 | 
				
			||||||
 | 
						input [3:0] B1DATA;
 | 
				
			||||||
 | 
						input B1EN;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EG_LOGIC_DRAM16X4 _TECHMAP_REPLACE_ (
 | 
				
			||||||
 | 
							.di(B1DATA),
 | 
				
			||||||
 | 
							.waddr(B1ADDR),
 | 
				
			||||||
 | 
							.wclk(CLK1),
 | 
				
			||||||
 | 
							.we(B1EN),
 | 
				
			||||||
 | 
							.raddr(A1ADDR),
 | 
				
			||||||
 | 
							.do(A1DATA)
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					endmodule
 | 
				
			||||||
| 
						 | 
					@ -150,6 +150,12 @@ struct SynthAnlogicPass : public ScriptPass
 | 
				
			||||||
			run("synth -run coarse");
 | 
								run("synth -run coarse");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (check_label("dram"))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								run("memory_bram -rules +/anlogic/drams.txt");
 | 
				
			||||||
 | 
								run("techmap -map +/anlogic/drams_map.v");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (check_label("fine"))
 | 
							if (check_label("fine"))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			run("opt -fast -mux_undef -undriven -fine");
 | 
								run("opt -fast -mux_undef -undriven -fine");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue