mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Revert FF models to include IS_x_INVERTED parameters.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									5ebeca12eb
								
							
						
					
					
						commit
						3e16f75bc6
					
				
					 1 changed files with 34 additions and 6 deletions
				
			
		|  | @ -147,26 +147,54 @@ endmodule | |||
| 
 | ||||
| module FDRE (output reg Q, input C, CE, D, R); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_R_INVERTED = 1'b0; | ||||
|   initial Q <= INIT; | ||||
|   always @(posedge C) if (R) Q <= 1'b0; else if(CE) Q <= D; | ||||
|   generate case (|IS_C_INVERTED) | ||||
|     1'b0: always @(posedge C) if (R == !IS_R_INVERTED) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     1'b1: always @(negedge C) if (R == !IS_R_INVERTED) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|   endcase endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module FDSE (output reg Q, input C, CE, D, S); | ||||
|   parameter [0:0] INIT = 1'b1; | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_S_INVERTED = 1'b0; | ||||
|   initial Q <= INIT; | ||||
|   always @(posedge C) if (S) Q <= 1'b1; else if(CE) Q <= D; | ||||
|   generate case (|IS_C_INVERTED) | ||||
|     1'b0: always @(posedge C) if (S == !IS_S_INVERTED) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     1'b1: always @(negedge C) if (S == !IS_S_INVERTED) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|   endcase endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module FDCE (output reg Q, input C, CE, D, CLR); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_CLR_INVERTED = 1'b0; | ||||
|   initial Q <= INIT; | ||||
|   always @(posedge C, posedge CLR) if (CLR) Q <= 1'b0; else if (CE) Q <= D; | ||||
|   generate case ({|IS_C_INVERTED, |IS_CLR_INVERTED}) | ||||
|     2'b00: always @(posedge C, posedge CLR) if ( CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b01: always @(posedge C, negedge CLR) if (!CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b10: always @(negedge C, posedge CLR) if ( CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b11: always @(negedge C, negedge CLR) if (!CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|   endcase endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module FDPE (output reg Q, input C, CE, D, PRE); | ||||
|   parameter [0:0] INIT = 1'b1; | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_PRE_INVERTED = 1'b0; | ||||
|   initial Q <= INIT; | ||||
|   always @(negedge C, posedge PRE) if (PRE) Q <= 1'b1; else if (CE) Q <= D; | ||||
|   generate case ({|IS_C_INVERTED, |IS_PRE_INVERTED}) | ||||
|     2'b00: always @(posedge C, posedge PRE) if ( PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b01: always @(posedge C, negedge PRE) if (!PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b10: always @(negedge C, posedge PRE) if ( PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|     2'b11: always @(negedge C, negedge PRE) if (!PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; | ||||
|   endcase endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module FDRE_1 (output reg Q, input C, CE, D, R); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue