mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-19 02:42:03 +00:00
add negedge DFF
This commit is contained in:
parent
af7bdd598e
commit
8a2699c40c
2 changed files with 139 additions and 15 deletions
|
@ -3,15 +3,8 @@
|
||||||
// DFFSE D Flip-Flop with Clock Enable and Synchronous Set
|
// DFFSE D Flip-Flop with Clock Enable and Synchronous Set
|
||||||
// DFFRE D Flip-Flop with Clock Enable and Synchronous Reset
|
// DFFRE D Flip-Flop with Clock Enable and Synchronous Reset
|
||||||
|
|
||||||
// DFFNS D Flip-Flop with Negative-Edge Clock and Synchronous Set
|
|
||||||
// DFFNSE D Flip-Flop with Negative-Edge Clock,Clock Enable,and Synchronous Set
|
// DFFNSE D Flip-Flop with Negative-Edge Clock,Clock Enable,and Synchronous Set
|
||||||
// DFFNR D Flip-Flop with Negative-Edge Clock and Synchronous Reset
|
|
||||||
// DFFNRE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Synchronous Reset
|
// DFFNRE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Synchronous Reset
|
||||||
// DFFNP D Flip-Flop with Negative-Edge Clock and Asynchronous Preset
|
|
||||||
// DFFNPE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Asynchronous Preset
|
|
||||||
// DFFNC D Flip-Flop with Negative-Edge Clock and Asynchronous Clear
|
|
||||||
// DFFNCE D Flip-Flop with Negative-Edge Clock,Clock Enable and Asynchronous Clear
|
|
||||||
|
|
||||||
//TODO all DFF* have INIT
|
//TODO all DFF* have INIT
|
||||||
|
|
||||||
// DFFN D Flip-Flop with Negative-Edge Clock
|
// DFFN D Flip-Flop with Negative-Edge Clock
|
||||||
|
@ -31,24 +24,50 @@ module \$_DFFE_NN_ (input D, C, E, output Q); DFFNE _TECHMAP_REPLACE_ (.D(D), .
|
||||||
module \$__DFFS_PN0_ (input D, C, R, output Q); DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(!R)); endmodule
|
module \$__DFFS_PN0_ (input D, C, R, output Q); DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(!R)); endmodule
|
||||||
module \$__DFFS_PP0_ (input D, C, R, output Q); DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R)); endmodule
|
module \$__DFFS_PP0_ (input D, C, R, output Q); DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R)); endmodule
|
||||||
|
|
||||||
|
// DFFNR D Flip-Flop with Negative-Edge Clock and Synchronous Reset
|
||||||
|
module \$__DFFS_NN0_ (input D, C, R, output Q); DFFNR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(!R)); endmodule
|
||||||
|
module \$__DFFS_NP0_ (input D, C, R, output Q); DFFNR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R)); endmodule
|
||||||
|
|
||||||
// DFFS D Flip-Flop with Synchronous Set
|
// DFFS D Flip-Flop with Synchronous Set
|
||||||
module \$__DFFS_PN1_ (input D, C, R, output Q); DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(!R)); endmodule
|
module \$__DFFS_PN1_ (input D, C, R, output Q); DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(!R)); endmodule
|
||||||
module \$__DFFS_PP1_ (input D, C, R, output Q); DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R)); endmodule
|
module \$__DFFS_PP1_ (input D, C, R, output Q); DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R)); endmodule
|
||||||
|
|
||||||
|
// DFFNS D Flip-Flop with Negative-Edge Clock and Synchronous Set
|
||||||
|
module \$__DFFS_NN1_ (input D, C, R, output Q); DFFNS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(!R)); endmodule
|
||||||
|
module \$__DFFS_NP1_ (input D, C, R, output Q); DFFNS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R)); endmodule
|
||||||
|
|
||||||
// DFFP D Flip-Flop with Asynchronous Preset
|
// DFFP D Flip-Flop with Asynchronous Preset
|
||||||
module \$_DFF_PP1_ (input D, C, R, output Q); DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R)); endmodule
|
module \$_DFF_PP1_ (input D, C, R, output Q); DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R)); endmodule
|
||||||
module \$_DFF_PN1_ (input D, C, R, output Q); DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R)); endmodule
|
module \$_DFF_PN1_ (input D, C, R, output Q); DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R)); endmodule
|
||||||
|
|
||||||
|
// DFFNP D Flip-Flop with Negative-Edge Clock and Asynchronous Preset
|
||||||
|
module \$_DFF_NP1_ (input D, C, R, output Q); DFFNP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R)); endmodule
|
||||||
|
module \$_DFF_NN1_ (input D, C, R, output Q); DFFNP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R)); endmodule
|
||||||
|
|
||||||
// DFFC D Flip-Flop with Asynchronous Clear
|
// DFFC D Flip-Flop with Asynchronous Clear
|
||||||
module \$_DFF_PP0_ (input D, C, R, output Q); DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R)); endmodule
|
module \$_DFF_PP0_ (input D, C, R, output Q); DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R)); endmodule
|
||||||
module \$_DFF_PN0_ (input D, C, R, output Q); DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R)); endmodule
|
module \$_DFF_PN0_ (input D, C, R, output Q); DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R)); endmodule
|
||||||
|
|
||||||
|
// DFFNC D Flip-Flop with Negative-Edge Clock and Asynchronous Clear
|
||||||
|
module \$_DFF_NP0_ (input D, C, R, output Q); DFFNC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R)); endmodule
|
||||||
|
module \$_DFF_NN0_ (input D, C, R, output Q); DFFNC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R)); endmodule
|
||||||
|
|
||||||
// DFFPE D Flip-Flop with Clock Enable and Asynchronous Preset
|
// DFFPE D Flip-Flop with Clock Enable and Asynchronous Preset
|
||||||
module \$__DFFE_PP1 (input D, C, R, E, output Q); DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E)); endmodule
|
module \$__DFFE_PP1 (input D, C, R, E, output Q); DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E)); endmodule
|
||||||
module \$__DFFE_PN1 (input D, C, R, E, output Q); DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R), .CE(E)); endmodule
|
module \$__DFFE_PN1 (input D, C, R, E, output Q); DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R), .CE(E)); endmodule
|
||||||
|
|
||||||
|
// DFFNPE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Asynchronous Preset
|
||||||
|
module \$__DFFE_NP1 (input D, C, R, E, output Q); DFFNPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E)); endmodule
|
||||||
|
module \$__DFFE_NN1 (input D, C, R, E, output Q); DFFNPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(!R), .CE(E)); endmodule
|
||||||
|
|
||||||
// DFFCE D Flip-Flop with Clock Enable and Asynchronous Clear
|
// DFFCE D Flip-Flop with Clock Enable and Asynchronous Clear
|
||||||
module \$__DFFE_PP0 (input D, C, R, E, output Q); DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E)); endmodule
|
module \$__DFFE_PP0 (input D, C, R, E, output Q); DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E)); endmodule
|
||||||
module \$__DFFE_PN0 (input D, C, R, E, output Q); DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R), .CE(E)); endmodule
|
module \$__DFFE_PN0 (input D, C, R, E, output Q); DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R), .CE(E)); endmodule
|
||||||
|
|
||||||
|
// DFFNCE D Flip-Flop with Negative-Edge Clock,Clock Enable and Asynchronous Clear
|
||||||
|
module \$__DFFE_NP0 (input D, C, R, E, output Q); DFFNCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E)); endmodule
|
||||||
|
module \$__DFFE_NN0 (input D, C, R, E, output Q); DFFNCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(!R), .CE(E)); endmodule
|
||||||
|
|
||||||
|
|
||||||
module \$lut (A, Y);
|
module \$lut (A, Y);
|
||||||
parameter WIDTH = 0;
|
parameter WIDTH = 0;
|
||||||
|
|
|
@ -31,14 +31,6 @@ module DFF (output reg Q, input CLK, D);
|
||||||
Q <= D;
|
Q <= D;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module DFFN (output reg Q, input CLK, D);
|
|
||||||
parameter [0:0] INIT = 1'b0;
|
|
||||||
initial Q = INIT;
|
|
||||||
always @(negedge CLK)
|
|
||||||
Q <= D;
|
|
||||||
endmodule
|
|
||||||
|
|
||||||
|
|
||||||
module DFFE (output reg Q, input D, CLK, CE);
|
module DFFE (output reg Q, input D, CLK, CE);
|
||||||
parameter [0:0] INIT = 1'b0;
|
parameter [0:0] INIT = 1'b0;
|
||||||
initial Q = INIT;
|
initial Q = INIT;
|
||||||
|
@ -144,6 +136,119 @@ module DFFCE (output reg Q, input D, CLK, CE, CLEAR);
|
||||||
end
|
end
|
||||||
endmodule // DFFCE (positive clock edge; asynchronous clear; clock enable)
|
endmodule // DFFCE (positive clock edge; asynchronous clear; clock enable)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFN (output reg Q, input CLK, D);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK)
|
||||||
|
Q <= D;
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module DFFNE (output reg Q, input D, CLK, CE);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK) begin
|
||||||
|
if (CE)
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNE (negative clock edge; clock enable)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNS (output reg Q, input D, CLK, SET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK) begin
|
||||||
|
if (SET)
|
||||||
|
Q <= 1'b1;
|
||||||
|
else
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNS (negative clock edge; synchronous set)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNSE (output reg Q, input D, CLK, CE, SET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK) begin
|
||||||
|
if (SET)
|
||||||
|
Q <= 1'b1;
|
||||||
|
else if (CE)
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNSE (negative clock edge; synchronous set takes precedence over clock enable)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNR (output reg Q, input D, CLK, RESET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK) begin
|
||||||
|
if (RESET)
|
||||||
|
Q <= 1'b0;
|
||||||
|
else
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNR (negative clock edge; synchronous reset)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNRE (output reg Q, input D, CLK, CE, RESET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK) begin
|
||||||
|
if (RESET)
|
||||||
|
Q <= 1'b0;
|
||||||
|
else if (CE)
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNRE (negative clock edge; synchronous reset takes precedence over clock enable)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNP (output reg Q, input D, CLK, PRESET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK or posedge PRESET) begin
|
||||||
|
if(PRESET)
|
||||||
|
Q <= 1'b1;
|
||||||
|
else
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNP (negative clock edge; asynchronous preset)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNPE (output reg Q, input D, CLK, CE, PRESET);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK or posedge PRESET) begin
|
||||||
|
if(PRESET)
|
||||||
|
Q <= 1'b1;
|
||||||
|
else if (CE)
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNPE (negative clock edge; asynchronous preset; clock enable)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNC (output reg Q, input D, CLK, CLEAR);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK or posedge CLEAR) begin
|
||||||
|
if(CLEAR)
|
||||||
|
Q <= 1'b0;
|
||||||
|
else
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNC (negative clock edge; asynchronous clear)
|
||||||
|
|
||||||
|
|
||||||
|
module DFFNCE (output reg Q, input D, CLK, CE, CLEAR);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
initial Q = INIT;
|
||||||
|
always @(negedge CLK or posedge CLEAR) begin
|
||||||
|
if(CLEAR)
|
||||||
|
Q <= 1'b0;
|
||||||
|
else if (CE)
|
||||||
|
Q <= D;
|
||||||
|
end
|
||||||
|
endmodule // DFFNCE (negative clock edge; asynchronous clear; clock enable)
|
||||||
|
|
||||||
// TODO add more DFF sim cells
|
// TODO add more DFF sim cells
|
||||||
|
|
||||||
module VCC(output V);
|
module VCC(output V);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue