aboutsummaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-05-12 20:10:00 +0100
committerYann Herklotz <git@ymhg.org>2019-05-12 20:10:00 +0100
commit5a42718b3e0577589cf1ee2142016d8907a1fbf3 (patch)
tree936d686b11b4489ac1d3414dda261a97b2e1014a /data
parent8769b3dd59e59d7dd27d726cc125d5bdbd9f096a (diff)
downloadverismith-5a42718b3e0577589cf1ee2142016d8907a1fbf3.tar.gz
verismith-5a42718b3e0577589cf1ee2142016d8907a1fbf3.zip
Add all the flip flops and latches
Diffstat (limited to 'data')
-rw-r--r--data/cells_xilinx_7.v842
1 files changed, 728 insertions, 114 deletions
diff --git a/data/cells_xilinx_7.v b/data/cells_xilinx_7.v
index b4b5467..0e92739 100644
--- a/data/cells_xilinx_7.v
+++ b/data/cells_xilinx_7.v
@@ -126,142 +126,756 @@ module CARRY4(CO, O, CI, CYINIT, DI, S);
assign ci_or_cyinit = CI | CYINIT;
endmodule
-module LDCE (Q, CLR, D, G, GE);
- parameter [0:0] INIT = 1'b0;
- parameter [0:0] IS_CLR_INVERTED = 1'b0;
- parameter [0:0] IS_G_INVERTED = 1'b0;
+module FD_1 (Q, C, D);
- output Q;
- reg Q = INIT;
+ parameter INIT = 1'b0;
- input CLR, D, G, GE;
- wire CLR_in, G_in;
+ output Q;
+ reg Q;
- assign CLR_in = IS_CLR_INVERTED ^ CLR;
- assign G_in = IS_G_INVERTED ^ G;
+ input C, D;
- always @( CLR_in or D or G_in or GE)
- if (CLR_in)
- Q <= 0;
- else if (G_in && GE)
- Q <= D;
-endmodule
+ always @(negedge C)
+ Q <= D;
-module BUFG (O, I);
- output O;
- input I;
- buf B1 (O, I);
-endmodule
+endmodule // FD_1
+
+module FDC_1 (Q, C, CLR, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CLR, D;
+
+ always @(posedge CLR or negedge C)
+ if (CLR)
+ Q <= 0;
+ else
+ Q <= D;
+
+endmodule // FDC_1
+
+module FDCE_1 (Q, C, CE, CLR, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, CLR, D;
+
+ always @(posedge CLR or negedge C)
+ if (CLR)
+ Q <= 0;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDCE_1
+
+module FDCE (Q, C, CE, CLR, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, CLR, D;
+
+ always @(posedge CLR or posedge C)
+ if (CLR)
+ Q <= 0;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDCE
+
+module FDCP_1 (Q, C, CLR, D, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CLR, D, PRE;
+
+ always @(posedge CLR or posedge PRE or negedge C)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDCP_1
+
+module FDCPE_1 (Q, C, CE, CLR, D, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, CLR, D, PRE;
+
+ always @(posedge CLR or posedge PRE or negedge C)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDCPE_1
+
+module FDCPE (Q, C, CE, CLR, D, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, CLR, D, PRE;
+
+ always @(posedge CLR or posedge PRE or posedge C)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDCPE
+
+module FDCP (Q, C, CLR, D, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CLR, D, PRE;
+
+ always @(posedge CLR or posedge PRE or posedge C)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDCP
+
+module FDC (Q, C, CLR, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CLR, D;
+
+ always @(posedge CLR or posedge C)
+ if (CLR)
+ Q <= 0;
+ else
+ Q <= D;
+
+endmodule // FDC
+
+module FDE_1 (Q, C, CE, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D;
+
+ always @(negedge C)
+ if (CE)
+ Q <= D;
+
+endmodule // FDE_1
+
+module FDE (Q, C, CE, D);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D;
+
+ always @(posedge C)
+ if (CE)
+ Q <= D;
+
+endmodule // FDE
+
+module FDP_1 (Q, C, D, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, D, PRE;
+
+ always @(posedge PRE or negedge C)
+ if (PRE)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDP_1
+
+module FDPE_1 (Q, C, CE, D, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, PRE;
+
+ always @(posedge PRE or negedge C)
+ if (PRE)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDPE_1
+
+module FDPE (Q, C, CE, D, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, PRE;
+
+ always @(posedge PRE or posedge C)
+ if (PRE)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDPE
+
+module FDP (Q, C, D, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, D, PRE;
+
+ always @(posedge PRE or posedge C)
+ if (PRE)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDP
+
+module FDR_1 (Q, C, D, R);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, D, R;
+
+ always @(negedge C)
+ if (R)
+ Q <= 0;
+ else
+ Q <= D;
+
+endmodule // FDR_1
+
+module FDRE_1 (Q, C, CE, D, R);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, R;
+
+ always @(negedge C)
+ if (R)
+ Q <= 0;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDRE_1
module FDRE (Q, 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;
-
- output Q;
- reg Q = INIT;
-
- input C, CE, D, R;
- wire C_in, D_in, R_in;
-
- assign C_in = C ^ IS_C_INVERTED;
- assign D_in = D ^ IS_D_INVERTED;
- assign R_in = R ^ IS_R_INVERTED;
-
- always @(posedge C_in)
- if (R_in)
- Q <= 0;
- else if (CE)
- Q <= D_in;
-endmodule
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, R;
+
+ always @(posedge C)
+ if (R)
+ Q <= 0;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDRE
+
+module FDRS_1 (Q, C, D, R, S);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, D, R, S;
+
+ always @(negedge C)
+ if (R)
+ Q <= 0;
+ else if (S)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDRS_1
+
+module FDRSE_1 (Q, C, CE, D, R, S);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, R, S;
+
+ always @(negedge C)
+ if (R)
+ Q <= 0;
+ else if (S)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDRSE_1
+
+module FDRSE (Q, C, CE, D, R, S);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, R, S;
+
+ always @(posedge C)
+ if (R)
+ Q <= 0;
+ else if (S)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDRSE
+
+module FDRS (Q, C, D, R, S);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, D, R, S;
+
+ always @(posedge C)
+ if (R)
+ Q <= 0;
+ else if (S)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDRS
+
+module FDR (Q, C, D, R);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input C, D, R;
+
+ always @(posedge C)
+ if (R)
+ Q <= 0;
+ else
+ Q <= D;
+
+endmodule // FDR
+
+module FDS_1 (Q, C, D, S);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, D, S;
+
+ always @(negedge C)
+ if (S)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDS_1
+
+module FDSE_1 (Q, C, CE, D, S);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, CE, D, S;
+
+ always @(negedge C)
+ if (S)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDSE_1
module FDSE (Q, C, CE, D, S);
- parameter INIT = 1'b1;
- parameter [0:0] IS_C_INVERTED = 1'b0;
- parameter [0:0] IS_S_INVERTED = 1'b0;
- parameter [0:0] IS_D_INVERTED = 1'b0;
-
- output Q;
-
- input C, CE, D, S;
-
- wire Q;
- wire C_in;
- wire S_in;
- wire D_in;
- wire rst_int = 0;
- wire set_int = S;
- reg q_out;
-
- initial q_out = INIT;
-
- assign Q = q_out;
- assign C_in = IS_C_INVERTED ^ C;
- assign S_in = IS_S_INVERTED ^ S;
- assign D_in = IS_D_INVERTED ^ D;
-
- always @(posedge C_in)
- if (S_in)
- q_out <= 1;
- else if (CE)
- q_out <= D_in;
-endmodule
-module LD (Q, D, G);
- parameter INIT = 1'b0;
- output Q;
- wire Q;
- input D, G;
- reg q_out;
+ parameter INIT = 1'b1;
- initial q_out = INIT;
+ output Q;
+ reg Q;
- assign Q = q_out;
+ input C, CE, D, S;
- always @(D or G)
- if (G)
- q_out <= D;
-endmodule
+ always @(posedge C)
+ if (S)
+ Q <= 1;
+ else if (CE)
+ Q <= D;
+
+endmodule // FDSE
+
+module FDS (Q, C, D, S);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input C, D, S;
+
+ always @(posedge C)
+ if (S)
+ Q <= 1;
+ else
+ Q <= D;
+
+endmodule // FDS
module FD (Q, C, D);
- parameter INIT = 1'b0;
- output Q;
- input C, D;
- wire Q;
- reg q_out;
+ parameter INIT = 1'b0;
- initial q_out = INIT;
+ output Q;
+ reg Q;
- always @(posedge C)
- q_out <= D;
+ input C, D;
- assign Q = q_out;
-endmodule
+ always @(posedge C)
+ Q <= D;
+
+endmodule // FD
+
+module LD_1 (Q, D, G);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input D, G;
+
+ always @( D or G)
+ if (!G)
+ Q <= D;
+
+endmodule // LD_1
+
+module LDC_1 (Q, CLR, D, G);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G;
+
+ always @( CLR or D or G)
+ if (CLR)
+ Q <= 0;
+ else if (!G)
+ Q <= D;
+
+endmodule // LDC_1
+
+module LDCE_1 (Q, CLR, D, G, GE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, GE;
+
+ always @( CLR or D or G or GE)
+ if (CLR)
+ Q <= 0;
+ else if (!G && GE)
+ Q <= D;
+
+endmodule // LDCE_1
+
+module LDCE (Q, CLR, D, G, GE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, GE;
+
+ always @( CLR or D or G or GE)
+ if (CLR)
+ Q <= 0;
+ else if (G && GE)
+ Q <= D;
+
+endmodule // LDCE
+
+module LDCP_1 (Q, CLR, D, G, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, PRE;
+
+ always @( CLR or PRE or D or G)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (!G)
+ Q <= D;
+
+endmodule // LDCP_1
+
+module LDCPE_1 (Q, CLR, D, G, GE, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, GE, PRE;
+
+ always @( CLR or PRE or D or G or GE)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (!G && GE)
+ Q <= D;
+
+endmodule // LDCPE_1
+
+module LDCPE (Q, CLR, D, G, GE, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, GE, PRE;
+
+ always @( CLR or PRE or D or G or GE)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (G && GE)
+ Q <= D;
+
+endmodule // LDCPE
+
+module LDCP (Q, CLR, D, G, PRE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G, PRE;
+
+ always @( CLR or PRE or D or G)
+ if (CLR)
+ Q <= 0;
+ else if (PRE)
+ Q <= 1;
+ else if (G)
+ Q <= D;
+
+endmodule // LDCP
+
+module LDC (Q, CLR, D, G);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input CLR, D, G;
+
+ always @( CLR or D or G)
+ if (CLR)
+ Q <= 0;
+ else if (G)
+ Q <= D;
+
+endmodule // LDC
+
+module LDE_1 (Q, D, G, GE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input D, G, GE;
+
+ always @( D or G or GE)
+ if (!G && GE)
+ Q <= D;
+
+endmodule // LDE_1
+
+module LDE (Q, D, G, GE);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input D, G, GE;
+
+ always @( D or G or GE)
+ if (G && GE)
+ Q <= D;
+
+endmodule // LDE
+
+module LDP_1 (Q, D, G, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input D, G, PRE;
+
+ always @( PRE or D or G)
+ if (PRE)
+ Q <= 1;
+ else if (!G)
+ Q <= D;
+
+endmodule // LDP_1
+
+module LDPE_1 (Q, D, G, GE, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input D, G, GE, PRE;
+
+ always @( PRE or D or G or GE)
+ if (PRE)
+ Q <= 1;
+ else if (!G && GE)
+ Q <= D;
+
+endmodule // LDPE_1
module LDPE (Q, D, G, GE, PRE);
- parameter INIT = 1'b1;
- output Q;
- reg Q;
+ parameter INIT = 1'b1;
- input D, G, GE, PRE;
+ output Q;
+ reg Q;
- always @( PRE or D or G or GE)
- if (PRE)
- Q <= 1;
- else if (G && GE)
- Q <= D;
-endmodule
+ input D, G, GE, PRE;
-module FDE (Q, C, CE, D);
- parameter INIT = 1'b0;
- output Q;
- reg Q;
- input C, CE, D;
-
- always @(posedge C)
- if (CE)
- Q <= D;
-endmodule
+ always @( PRE or D or G or GE)
+ if (PRE)
+ Q <= 1;
+ else if (G && GE)
+ Q <= D;
+
+endmodule // LDPE
+
+module LDP (Q, D, G, PRE);
+
+ parameter INIT = 1'b1;
+
+ output Q;
+ reg Q;
+
+ input D, G, PRE;
+
+ always @( PRE or D or G)
+ if (PRE)
+ Q <= 1;
+ else if (G)
+ Q <= D;
+
+endmodule // LDP
+
+module LD (Q, D, G);
+
+ parameter INIT = 1'b0;
+
+ output Q;
+ reg Q;
+
+ input D, G;
+
+ always @( D or G)
+ if (G)
+ Q <= D;
+
+endmodule // LD