mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	intel_alm: ABC9 sequential optimisations
This commit is contained in:
		
							parent
							
								
									a9b61080a4
								
							
						
					
					
						commit
						83cde2d02b
					
				
					 7 changed files with 149 additions and 19 deletions
				
			
		
							
								
								
									
										55
									
								
								techlibs/intel_alm/common/abc9_model.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								techlibs/intel_alm/common/abc9_model.v
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,55 @@ | |||
| `ifdef cyclonev | ||||
| `define SYNCPATH 262 | ||||
| `define SYNCSETUP 522 | ||||
| `define COMBPATH 0 | ||||
| `endif | ||||
| `ifdef cyclone10gx | ||||
| `define SYNCPATH 219 | ||||
| `define SYNCSETUP 268 | ||||
| `define COMBPATH 0 | ||||
| `endif | ||||
| 
 | ||||
| // fallback for when a family isn't detected (e.g. when techmapping for equivalence)
 | ||||
| `ifndef SYNCPATH | ||||
| `define SYNCPATH 0 | ||||
| `define SYNCSETUP 0 | ||||
| `define COMBPATH 0 | ||||
| `endif | ||||
| 
 | ||||
| // This is a purely-synchronous flop, that ABC9 can use for sequential synthesis.
 | ||||
| (* abc9_flop, lib_whitebox *) | ||||
| module MISTRAL_FF_SYNCONLY( | ||||
|     input DATAIN, CLK, ENA, SCLR, SLOAD, SDATA, | ||||
|     output reg Q | ||||
| ); | ||||
| 
 | ||||
| specify | ||||
|     if (ENA) (posedge CLK => (Q : DATAIN)) = `SYNCPATH; | ||||
|     if (ENA) (posedge CLK => (Q : SCLR)) = `SYNCPATH; | ||||
|     if (ENA) (posedge CLK => (Q : SLOAD)) = `SYNCPATH; | ||||
|     if (ENA) (posedge CLK => (Q : SDATA)) = `SYNCPATH; | ||||
| 
 | ||||
|     $setup(DATAIN, posedge CLK, `SYNCSETUP); | ||||
|     $setup(ENA, posedge CLK, `SYNCSETUP); | ||||
|     $setup(SCLR, posedge CLK, `SYNCSETUP); | ||||
|     $setup(SLOAD, posedge CLK, `SYNCSETUP); | ||||
|     $setup(SDATA, posedge CLK, `SYNCSETUP); | ||||
| endspecify | ||||
| 
 | ||||
| initial begin | ||||
|     // Altera flops initialise to zero.
 | ||||
| 	Q = 0; | ||||
| end | ||||
| 
 | ||||
| always @(posedge CLK) begin | ||||
|     // Clock-enable
 | ||||
| 	if (ENA) begin | ||||
|         // Synchronous clear
 | ||||
|         if (SCLR) Q <= 0; | ||||
|         // Synchronous load
 | ||||
|         else if (SLOAD) Q <= SDATA; | ||||
|         else Q <= DATAIN; | ||||
|     end | ||||
| end | ||||
| 
 | ||||
| endmodule | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue