1 module GP_DFFS(input D, CLK, nSET, output reg Q);
2 parameter [0:0] INIT = 1'bx;
14 module GP_DFFR(input D, CLK, nRST, output reg Q);
15 parameter [0:0] INIT = 1'bx;
27 module GP_DFFSI(input D, CLK, nSET, output reg nQ);
28 parameter [0:0] INIT = 1'bx;
40 module GP_DFFRI(input D, CLK, nRST, output reg nQ);
41 parameter [0:0] INIT = 1'bx;
53 module GP_DLATCHS(input D, nCLK, nSET, output reg Q);
54 parameter [0:0] INIT = 1'bx;
66 module GP_DLATCHR(input D, nCLK, nRST, output reg Q);
67 parameter [0:0] INIT = 1'bx;
79 module GP_DLATCHSI(input D, nCLK, nSET, output reg nQ);
80 parameter [0:0] INIT = 1'bx;
92 module GP_DLATCHRI(input D, nCLK, nRST, output reg nQ);
93 parameter [0:0] INIT = 1'bx;
105 module GP_OBUFT(input IN, input OE, output OUT);
106 GP_IOBUF _TECHMAP_REPLACE_ (
122 if (WIDTH == 1) begin
123 if(LUT == 2'b01) begin
124 GP_INV _TECHMAP_REPLACE_ (.OUT(Y), .IN(A[0]) );
127 GP_2LUT #(.INIT({2'b00, LUT})) _TECHMAP_REPLACE_ (.OUT(Y),
128 .IN0(A[0]), .IN1(1'b0));
131 if (WIDTH == 2) begin
132 GP_2LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y),
133 .IN0(A[0]), .IN1(A[1]));
135 if (WIDTH == 3) begin
136 GP_3LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y),
137 .IN0(A[0]), .IN1(A[1]), .IN2(A[2]));
139 if (WIDTH == 4) begin
140 GP_4LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y),
141 .IN0(A[0]), .IN1(A[1]), .IN2(A[2]), .IN3(A[3]));
143 wire _TECHMAP_FAIL_ = 1;
148 module \$__COUNT_ (CE, CLK, OUT, POUT, RST, UP);
153 output reg[WIDTH-1:0] POUT;
157 parameter COUNT_TO = 1;
158 parameter RESET_MODE = "RISING";
159 parameter RESET_TO_MAX = 0;
160 parameter HAS_POUT = 0;
161 parameter HAS_CE = 0;
163 parameter DIRECTION = "DOWN";
165 //If we have a DIRECTION other than DOWN fail... GP_COUNTx_ADV is not supported yet
166 if(DIRECTION != "DOWN") begin
168 $display("ERROR: \$__COUNT_ support for GP_COUNTx_ADV is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?).");
173 //If counter is more than 14 bits wide, complain (also shouldn't happen)
174 else if(WIDTH > 14) begin
176 $display("ERROR: \$__COUNT_ support for cascaded counters is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?).");
181 //If counter is more than 8 bits wide and has parallel output, we have a problem
182 else if(WIDTH > 8 && HAS_POUT) begin
184 $display("ERROR: \$__COUNT_ support for 9-14 bit counters with parallel output is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?).");
189 //Looks like a legal counter! Do something with it
190 else if(WIDTH <= 8) begin
199 .RESET_MODE(RESET_MODE),
200 .RESET_VALUE(RESET_TO_MAX ? "COUNT_TO" : "ZERO"),
202 ) _TECHMAP_REPLACE_ (
206 .UP(1'b0), //always count down for now
214 .RESET_MODE(RESET_MODE),
216 ) _TECHMAP_REPLACE_ (
234 .RESET_MODE(RESET_TO_MAX ? "COUNT_TO" : "ZERO"),
235 .RESET_VALUE("COUNT_TO"),
237 ) _TECHMAP_REPLACE_ (
241 .UP(1'b0), //always count down for now
249 .RESET_MODE(RESET_MODE),
251 ) _TECHMAP_REPLACE_ (