mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	machxo2: Switch to LUT4 sim model which propagates less undefined/don't care values.
This commit is contained in:
		
							parent
							
								
									353ace5034
								
							
						
					
					
						commit
						ae07298a6b
					
				
					 2 changed files with 6 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -4,17 +4,11 @@ module LUT4 #(
 | 
			
		|||
	input A, B, C, D,
 | 
			
		||||
	output Z
 | 
			
		||||
);
 | 
			
		||||
	wire [3:0] I;
 | 
			
		||||
	wire [3:0] I_pd;
 | 
			
		||||
 | 
			
		||||
	genvar ii;
 | 
			
		||||
	generate
 | 
			
		||||
		for (ii = 0; ii < 4; ii = ii + 1'b1)
 | 
			
		||||
			assign I_pd[ii] = (I[ii] === 1'bz) ? 1'b0 : I[ii];
 | 
			
		||||
	endgenerate
 | 
			
		||||
 | 
			
		||||
	assign I = {D, C, B, A};
 | 
			
		||||
	assign Z = INIT[I_pd];
 | 
			
		||||
	// This form of LUT propagates as few x's as possible.
 | 
			
		||||
	wire [7:0] s3 = D ?     INIT[15:8] :     INIT[7:0];
 | 
			
		||||
	wire [3:0] s2 = C ?       s3[ 7:4] :       s3[3:0];
 | 
			
		||||
	wire [1:0] s1 = B ?       s2[ 3:2] :       s2[1:0];
 | 
			
		||||
	assign Z =      A ?          s1[1] :         s1[0];
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module FACADE_FF #(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,6 @@ proc
 | 
			
		|||
equiv_opt -assert -map +/machxo2/cells_sim.v synth_machxo2 # 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 12 t:LUT4
 | 
			
		||||
select -assert-count 11 t:LUT4
 | 
			
		||||
 | 
			
		||||
select -assert-none t:LUT4 t:FACADE_IO %% t:* %D
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue