greenpak4: Added GP_DFFxI cells
authorAndrew Zonenberg <azonenberg@drawersteak.com>
Sun, 14 Aug 2016 07:11:44 +0000 (00:11 -0700)
committerAndrew Zonenberg <azonenberg@drawersteak.com>
Sun, 14 Aug 2016 07:11:44 +0000 (00:11 -0700)
techlibs/greenpak4/cells_map.v
techlibs/greenpak4/cells_sim.v

index b7d750ae06372e0571a849bad31e100021468adc..36d2d03103a93a659f61d1229cb10eeafa923d19 100644 (file)
@@ -24,6 +24,32 @@ module GP_DFFR(input D, CLK, nRST, output reg Q);
        );
 endmodule
 
+module GP_DFFSI(input D, CLK, nSET, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       GP_DFFSRI #(
+               .INIT(INIT),
+               .SRMODE(1'b1),
+       ) _TECHMAP_REPLACE_ (
+               .D(D),
+               .CLK(CLK),
+               .nSR(nSET),
+               .Q(Q)
+       );
+endmodule
+
+module GP_DFFRI(input D, CLK, nRST, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       GP_DFFSRI #(
+               .INIT(INIT),
+               .SRMODE(1'b0),
+       ) _TECHMAP_REPLACE_ (
+               .D(D),
+               .CLK(CLK),
+               .nSR(nRST),
+               .Q(Q)
+       );
+endmodule
+
 module GP_OBUFT(input IN, input OE, output OUT);
        GP_IOBUF _TECHMAP_REPLACE_ (
                .IN(IN),
index ceec2869693c1a248b0c88dc9eae92b8feb210e8..e99c0c82799747a4d01fc7df28e507016e8ffc85 100644 (file)
@@ -165,6 +165,14 @@ module GP_DFF(input D, CLK, output reg Q);
        end
 endmodule
 
+module GP_DFFI(input D, CLK, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       initial Q = INIT;
+       always @(posedge CLK) begin
+               Q <= ~D;
+       end
+endmodule
+
 module GP_DFFR(input D, CLK, nRST, output reg Q);
        parameter [0:0] INIT = 1'bx;
        initial Q = INIT;
@@ -176,6 +184,17 @@ module GP_DFFR(input D, CLK, nRST, output reg Q);
        end
 endmodule
 
+module GP_DFFRI(input D, CLK, nRST, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       initial Q = INIT;
+       always @(posedge CLK, negedge nRST) begin
+               if (!nRST)
+                       Q <= 1'b1;
+               else
+                       Q <= ~D;
+       end
+endmodule
+
 module GP_DFFS(input D, CLK, nSET, output reg Q);
        parameter [0:0] INIT = 1'bx;
        initial Q = INIT;
@@ -187,6 +206,17 @@ module GP_DFFS(input D, CLK, nSET, output reg Q);
        end
 endmodule
 
+module GP_DFFSI(input D, CLK, nSET, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       initial Q = INIT;
+       always @(posedge CLK, negedge nSET) begin
+               if (!nSET)
+                       Q <= 1'b0;
+               else
+                       Q <= ~D;
+       end
+endmodule
+
 module GP_DFFSR(input D, CLK, nSR, output reg Q);
        parameter [0:0] INIT = 1'bx;
        parameter [0:0] SRMODE = 1'bx;
@@ -199,6 +229,18 @@ module GP_DFFSR(input D, CLK, nSR, output reg Q);
        end
 endmodule
 
+module GP_DFFSRI(input D, CLK, nSR, output reg Q);
+       parameter [0:0] INIT = 1'bx;
+       parameter [0:0] SRMODE = 1'bx;
+       initial Q = INIT;
+       always @(posedge CLK, negedge nSR) begin
+               if (!nSR)
+                       Q <= ~SRMODE;
+               else
+                       Q <= ~D;
+       end
+endmodule
+
 module GP_IBUF(input IN, output OUT);
        assign OUT = IN;
 endmodule