Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: niu_zcp_macros.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | /*%W% %G%*/ | |
36 | ||
37 | /***************************************************************** | |
38 | * | |
39 | * File Name : niu_zcp_macros.v | |
40 | * Author Name : John Lo | |
41 | * Description : It contains ZCP macros, | |
42 | * | |
43 | * Parent Module: | |
44 | * Child Module: | |
45 | * Interface Mod: | |
46 | * Date Created : 3/26/04 | |
47 | * | |
48 | * Copyright (c) 2020, Sun Microsystems, Inc. | |
49 | * Sun Proprietary and Confidential | |
50 | * | |
51 | * Modification : | |
52 | * | |
53 | ****************************************************************/ | |
54 | ||
55 | ||
56 | module zcp_par_gen (chk_bit_data,din,par); | |
57 | parameter dwidth = 8; | |
58 | input chk_bit_data; | |
59 | input [dwidth-1:0] din; | |
60 | output par; | |
61 | ||
62 | wire par_temp = ^(din[dwidth-1:0]); | |
63 | wire par = chk_bit_data ^ par_temp; | |
64 | ||
65 | endmodule | |
66 | ||
67 | //***************************** | |
68 | // Loadable Register | |
69 | //***************************** | |
70 | module zcp_RegLd (clk,reset,ld,ld_value,we,din,qout); | |
71 | ||
72 | parameter dwidth = 10; | |
73 | input clk, reset; | |
74 | input ld; | |
75 | input [dwidth-1:0] ld_value; | |
76 | input we; | |
77 | input [dwidth-1:0] din; | |
78 | output [dwidth-1:0] qout; | |
79 | ||
80 | reg [dwidth-1:0] qout; | |
81 | ||
82 | always @ (posedge clk) | |
83 | if (reset) | |
84 | qout <= 0; | |
85 | else | |
86 | casex({we, ld}) // synopsys parallel_case full_case | |
87 | 2'b00: qout <= qout; | |
88 | 2'b01: qout <= ld_value; | |
89 | 2'b1x: qout <= din; | |
90 | endcase | |
91 | ||
92 | endmodule | |
93 | ||
94 | ||
95 | /*********************************** | |
96 | * RegDff | |
97 | * *********************************/ | |
98 | module zcp_RegDff (din,clk,qout); | |
99 | ||
100 | parameter dwidth = 10; | |
101 | input clk; | |
102 | input [dwidth-1:0] din; | |
103 | output [dwidth-1:0] qout; | |
104 | ||
105 | reg [dwidth-1:0] qout; | |
106 | ||
107 | always @ (posedge clk) | |
108 | qout <= din; | |
109 | ||
110 | ||
111 | endmodule // RegDff | |
112 | ||
113 | ||
114 | //***************************** | |
115 | // Register xREG | |
116 | //***************************** | |
117 | module zcp_xREG (clk,reset,en,din,qout); | |
118 | ||
119 | parameter dwidth = 10; | |
120 | input clk, en, reset; | |
121 | input [dwidth-1:0] din; | |
122 | output [dwidth-1:0] qout; | |
123 | ||
124 | reg [dwidth-1:0] qout; | |
125 | ||
126 | always @ (posedge clk) | |
127 | if (reset) | |
128 | qout <= 0; | |
129 | else if (en) | |
130 | qout <= din; | |
131 | else | |
132 | qout <= qout; | |
133 | ||
134 | ||
135 | endmodule | |
136 | ||
137 | //***************************** | |
138 | // Register xREG2 | |
139 | //***************************** | |
140 | module zcp_xREG2 (clk,reset,reset_value,load,din,qout); | |
141 | ||
142 | parameter dwidth = 10; | |
143 | input clk; | |
144 | input reset; | |
145 | input [dwidth-1:0] reset_value; | |
146 | input load; | |
147 | input [dwidth-1:0] din; | |
148 | output [dwidth-1:0] qout; | |
149 | ||
150 | reg [dwidth-1:0] qout; | |
151 | ||
152 | ||
153 | always @ (posedge clk) | |
154 | if (reset) | |
155 | qout <= reset_value; | |
156 | else if (load) | |
157 | qout <= din; | |
158 | else | |
159 | qout <= qout; | |
160 | ||
161 | endmodule // zcp_xREG2 | |
162 | ||
163 | /***************************** | |
164 | * RegRst | |
165 | *****************************/ | |
166 | module zcp_RegRst (clk,reset,din,qout); | |
167 | ||
168 | parameter dwidth = 10; | |
169 | input clk, reset; | |
170 | input [dwidth-1:0] din; | |
171 | output [dwidth-1:0] qout; | |
172 | ||
173 | reg [dwidth-1:0] qout; | |
174 | ||
175 | always @ (posedge clk) | |
176 | if (reset) | |
177 | qout <= 0; | |
178 | else | |
179 | qout <= din; | |
180 | ||
181 | endmodule | |
182 | ||
183 | ||
184 | ||
185 | /*********************************** | |
186 | * Counter | |
187 | ***********************************/ | |
188 | module zcp_counter (reset,clk,ce,count); | |
189 | parameter dwidth = 9; | |
190 | input reset,clk,ce; | |
191 | output [dwidth-1:0] count; | |
192 | ||
193 | reg [dwidth-1:0] count; | |
194 | ||
195 | always @ (posedge clk) | |
196 | if (reset) | |
197 | count <= 0; | |
198 | else | |
199 | casex(ce) | |
200 | 1'b0: count <= count; | |
201 | 1'b1: count <= count + 1; | |
202 | endcase | |
203 | ||
204 | endmodule | |
205 | ||
206 | module zcp_ud_cntr (clk,reset,reset_value,inc,dec,count); | |
207 | parameter dwidth = 9; | |
208 | input reset,clk,inc,dec; | |
209 | input [dwidth-1:0] reset_value; | |
210 | output [dwidth-1:0] count; | |
211 | ||
212 | reg [dwidth-1:0] count; | |
213 | ||
214 | always @ (posedge clk) | |
215 | if (reset) | |
216 | count <= reset_value; | |
217 | else | |
218 | casex({inc,dec}) | |
219 | 2'b00: count <= count; | |
220 | 2'b01: count <= count - 1; | |
221 | 2'b10: count <= count + 1; | |
222 | 2'b11: count <= count; | |
223 | default:count <= count; | |
224 | endcase | |
225 | ||
226 | endmodule | |
227 | ||
228 | ||
229 | module zcp_pls_gen2_reg (clk,sig_in,lead,trail); | |
230 | input clk; | |
231 | input sig_in; | |
232 | output lead; | |
233 | output trail; | |
234 | ||
235 | reg sig_in_reg,sig_out; | |
236 | wire lead,trail; | |
237 | ||
238 | always @ (posedge clk) | |
239 | begin | |
240 | sig_in_reg <= sig_in; | |
241 | sig_out <= sig_in_reg; | |
242 | end | |
243 | ||
244 | assign lead = sig_in_reg & ~sig_out; | |
245 | ||
246 | assign trail= ~sig_in_reg & sig_out; | |
247 | ||
248 | endmodule // pls_gen2_reg | |
249 | ||
250 | ||
251 | module zcp_pls_gen2 (clk,sig_in,lead,trail); | |
252 | input clk; | |
253 | input sig_in; | |
254 | output lead; | |
255 | output trail; | |
256 | ||
257 | wire sig_in,lead,trail; | |
258 | reg sig_out; | |
259 | ||
260 | ||
261 | always @ (posedge clk) | |
262 | begin | |
263 | sig_out <= sig_in; | |
264 | end | |
265 | ||
266 | assign lead = sig_in & ~sig_out; | |
267 | ||
268 | assign trail= ~sig_in & sig_out; | |
269 | ||
270 | endmodule // zcp_pls_gen2 | |
271 | ||
272 | module zcp_pls_gen1 (clk,sig_in,lead); | |
273 | input clk; | |
274 | input sig_in; | |
275 | output lead; | |
276 | ||
277 | wire sig_in,lead; | |
278 | reg sig_out; | |
279 | ||
280 | ||
281 | always @ (posedge clk) | |
282 | begin | |
283 | sig_out <= sig_in; | |
284 | end | |
285 | ||
286 | assign lead = sig_in & ~sig_out; | |
287 | ||
288 | ||
289 | endmodule // zcp_pls_gen1 | |
290 | ||
291 | ||
292 | module zcp_w1c_ff (clk,reset,set,ld,w1c,w1c_data,q); | |
293 | input clk; | |
294 | input reset; | |
295 | input set; | |
296 | input ld; | |
297 | input w1c; | |
298 | input w1c_data; | |
299 | output q; | |
300 | ||
301 | wire w1c,w1c_data; | |
302 | wire set; | |
303 | wire set_pls; | |
304 | wire rst = w1c & w1c_data; | |
305 | wire ld; | |
306 | reg q; | |
307 | ||
308 | zcp_pls_gen1 zcp_pls_gen1(.clk(clk),.sig_in(set),.lead(set_pls)); | |
309 | ||
310 | always @ (posedge clk) | |
311 | if (reset) | |
312 | q <= 0; | |
313 | else if (ld) | |
314 | q <= w1c_data; | |
315 | else | |
316 | case({set_pls, rst}) | |
317 | 2'b00: q <= q; | |
318 | 2'b01: q <= 0; // rst | |
319 | 2'b11: q <= 0; // rst has hi pri | |
320 | 2'b10: q <= 1; // set | |
321 | default: q <= q; | |
322 | endcase | |
323 | ||
324 | ||
325 | ||
326 | endmodule // zcp_w1c_ff | |
327 | ||
328 | ||
329 | ||
330 | module zcp_SRFF (clk,reset,set,rst,q); | |
331 | ||
332 | input reset, clk, set, rst; | |
333 | output q; | |
334 | ||
335 | reg q; | |
336 | ||
337 | always @ (posedge clk) | |
338 | if (reset) | |
339 | q <= 0; | |
340 | else | |
341 | casex({set, rst}) | |
342 | 2'b00: q <= q; | |
343 | 2'b01: q <= 0; | |
344 | 2'b1x: q <= 1; | |
345 | default:q <= 0; | |
346 | endcase | |
347 | ||
348 | endmodule | |
349 | ||
350 | ||
351 | module zcp_RSFF (clk,reset,set,rst,q); | |
352 | ||
353 | input reset, clk, set, rst; | |
354 | output q; | |
355 | ||
356 | reg q; | |
357 | ||
358 | always @ (posedge clk) | |
359 | if (reset) | |
360 | q <= 0; | |
361 | else | |
362 | casex({set, rst}) | |
363 | 2'b00: q <= q; | |
364 | 2'bx1: q <= 0; | |
365 | 2'b10: q <= 1; | |
366 | default:q <= 0; | |
367 | endcase | |
368 | ||
369 | endmodule | |
370 | ||
371 | ||
372 | // ************************************************************************* | |
373 | // Copyright (c) 1995 - 2001 Sun Microsystems, Inc. | |
374 | // | |
375 | // All rights reserved. No part of this design may be reproduced stored | |
376 | // in a retrieval system, or transmitted, in any form or by any means, | |
377 | // electronic, mechanical, photocopying, recording, or otherwise, without | |
378 | // prior written permission of Sun Microsystems, Inc. | |
379 | // | |
380 | // Sun Proprietary: Need-To-Know | |
381 | // ************************************************************************* | |
382 | // | |
383 | // | |
384 | // Description : A parameterizable register file made using flip flops. | |
385 | // Warning: Appropriate only for small number of entries. | |
386 | // | |
387 | // | |
388 | ||
389 | module zcp_RegFile ( | |
390 | d_in, | |
391 | wr_addr, | |
392 | rd_addr, | |
393 | wr, | |
394 | ||
395 | clk, | |
396 | ||
397 | d_out | |
398 | ||
399 | ); | |
400 | ||
401 | parameter WIDTH = 16, // Width (# of bits) | |
402 | ADDR_BITS = 4, // number of address bits | |
403 | DEPTH = 1<<ADDR_BITS; // number of entries | |
404 | ||
405 | //====================================================================== | |
406 | // Input/Outputs declarations | |
407 | //====================================================================== | |
408 | input clk; // Clock | |
409 | ||
410 | input wr; // Write strobe | |
411 | input [WIDTH-1:0] d_in; // data in | |
412 | input [ADDR_BITS-1:0] wr_addr; // write address | |
413 | input [ADDR_BITS-1:0] rd_addr; // read address | |
414 | ||
415 | output [WIDTH-1:0] d_out; | |
416 | ||
417 | ||
418 | ||
419 | // The memory array | |
420 | reg [WIDTH-1:0] mem [DEPTH-1:0]; | |
421 | ||
422 | ||
423 | ||
424 | // Output mux | |
425 | assign d_out = mem[rd_addr]; | |
426 | ||
427 | ||
428 | // verilint 257 off | |
429 | // verilint 280 off | |
430 | // verilint 548 off | |
431 | // verilint 193 off | |
432 | // verilint 529 off | |
433 | ||
434 | ||
435 | // data_in | |
436 | always @(posedge clk) | |
437 | begin | |
438 | if (wr) | |
439 | mem[wr_addr] <= #1 d_in; | |
440 | else | |
441 | ; | |
442 | end | |
443 | ||
444 | //---------------------------------------------------------------------- | |
445 | // Debugging stuff | |
446 | // verilint translate off | |
447 | // synopsys translate_off | |
448 | //simtech modcovoff -bpe | |
449 | `ifdef DEBUG | |
450 | ||
451 | wire [WIDTH-1:0] peek_0 = mem[0]; | |
452 | wire [WIDTH-1:0] peek_1 = mem[1]; | |
453 | wire [WIDTH-1:0] peek_2 = mem[2]; | |
454 | wire [WIDTH-1:0] peek_3 = mem[3]; | |
455 | wire [WIDTH-1:0] peek_4 = mem[4]; | |
456 | wire [WIDTH-1:0] peek_5 = mem[5]; | |
457 | wire [WIDTH-1:0] peek_6 = mem[6]; | |
458 | wire [WIDTH-1:0] peek_7 = mem[7]; | |
459 | wire [WIDTH-1:0] peek_8 = mem[8]; | |
460 | wire [WIDTH-1:0] peek_9 = mem[9]; | |
461 | wire [WIDTH-1:0] peek_10 = mem[10]; | |
462 | wire [WIDTH-1:0] peek_11 = mem[11]; | |
463 | wire [WIDTH-1:0] peek_12 = mem[12]; | |
464 | wire [WIDTH-1:0] peek_13 = mem[13]; | |
465 | wire [WIDTH-1:0] peek_14 = mem[14]; | |
466 | wire [WIDTH-1:0] peek_15 = mem[15]; | |
467 | ||
468 | integer i; | |
469 | ||
470 | task dump; | |
471 | begin | |
472 | $display("========================================"); | |
473 | $display("Memory dump. Width=%0d, Depth=%0d",WIDTH,DEPTH); | |
474 | `ifdef VERILOG | |
475 | $showscopes; | |
476 | `endif | |
477 | for (i=0; i<DEPTH; i=i+1) begin | |
478 | $display("#%0x: mem(%x)",i,mem[i]); | |
479 | end | |
480 | $display("========================================"); | |
481 | ||
482 | end | |
483 | endtask | |
484 | ||
485 | ||
486 | `endif // DEBUG | |
487 | // synopsys translate_on | |
488 | // verilint translate on | |
489 | //simtech modcovon -bpe | |
490 | ||
491 | ||
492 | endmodule | |
493 | ||
494 | ||
495 | ||
496 | ||
497 | module zcpfifo_16d (clk,reset,we,wp,din,rp,dout); | |
498 | parameter WIDTH = 16; | |
499 | input clk; | |
500 | input reset; | |
501 | input we; | |
502 | input [3:0] wp,rp; | |
503 | input [WIDTH-1:0] din; | |
504 | output [WIDTH-1:0] dout; | |
505 | ||
506 | reg [WIDTH-1:0] zcpfifo_reg [0:15]; // 16 deep | |
507 | ||
508 | // vlint flag_empty_statement off | |
509 | // vlint flag_null_else_statement off | |
510 | always @ (posedge clk) | |
511 | begin | |
512 | if (reset) | |
513 | begin | |
514 | zcpfifo_reg[0] <= 0; | |
515 | zcpfifo_reg[1] <= 0; | |
516 | zcpfifo_reg[2] <= 0; | |
517 | zcpfifo_reg[3] <= 0; | |
518 | zcpfifo_reg[4] <= 0; | |
519 | zcpfifo_reg[5] <= 0; | |
520 | zcpfifo_reg[6] <= 0; | |
521 | zcpfifo_reg[7] <= 0; | |
522 | zcpfifo_reg[8] <= 0; | |
523 | zcpfifo_reg[9] <= 0; | |
524 | zcpfifo_reg[10] <= 0; | |
525 | zcpfifo_reg[11] <= 0; | |
526 | zcpfifo_reg[12] <= 0; | |
527 | zcpfifo_reg[13] <= 0; | |
528 | zcpfifo_reg[14] <= 0; | |
529 | zcpfifo_reg[15] <= 0; | |
530 | end | |
531 | else | |
532 | case (we) // synopsys parallel_case full_case infer_mux | |
533 | 1'b1: zcpfifo_reg[wp] <= din; | |
534 | 1'b0: zcpfifo_reg[wp] <= zcpfifo_reg[wp]; // hold | |
535 | endcase | |
536 | end // always @ (posedge clk) | |
537 | // vlint flag_empty_statement on | |
538 | // vlint flag_null_else_statement on | |
539 | ||
540 | assign dout = zcpfifo_reg[rp]; | |
541 | ||
542 | ||
543 | endmodule // zcpfifo_16d | |
544 | ||
545 | ||
546 | ||
547 | ||
548 | /********************************************************* | |
549 | ||
550 | Project : Niu | |
551 | ||
552 | Date : Oct. 2005 | |
553 | ||
554 | Description : 4 sets of {nand3, nor2, inv, mux2, reg} | |
555 | ||
556 | Synthesis Notes: | |
557 | ||
558 | Modification History: | |
559 | ||
560 | Date Description | |
561 | ---- ----------- | |
562 | ||
563 | ***********************************************************/ | |
564 | ||
565 | ||
566 | `ifdef NEPTUNE | |
567 | module zcp_spare_gates ( | |
568 | di_nd3, | |
569 | di_nd2, | |
570 | di_nd1, | |
571 | di_nd0, | |
572 | di_nr3, | |
573 | di_nr2, | |
574 | di_nr1, | |
575 | di_nr0, | |
576 | di_inv, | |
577 | di_mx3, | |
578 | di_mx2, | |
579 | di_mx1, | |
580 | di_mx0, | |
581 | mx_sel, | |
582 | di_reg, | |
583 | wt_ena, | |
584 | rst, | |
585 | si, | |
586 | se, | |
587 | clk, | |
588 | do_nad, | |
589 | do_nor, | |
590 | do_inv, | |
591 | do_mux, | |
592 | do_q, | |
593 | so | |
594 | ); | |
595 | ||
596 | input [2:0] di_nd3; | |
597 | input [2:0] di_nd2; | |
598 | input [2:0] di_nd1; | |
599 | input [2:0] di_nd0; | |
600 | ||
601 | input [1:0] di_nr3; | |
602 | input [1:0] di_nr2; | |
603 | input [1:0] di_nr1; | |
604 | input [1:0] di_nr0; | |
605 | ||
606 | input [3:0] di_inv; | |
607 | ||
608 | input [1:0] di_mx3; | |
609 | input [1:0] di_mx2; | |
610 | input [1:0] di_mx1; | |
611 | input [1:0] di_mx0; | |
612 | input [3:0] mx_sel; | |
613 | ||
614 | input [3:0] di_reg; | |
615 | input [3:0] wt_ena; | |
616 | input [3:0] rst; | |
617 | ||
618 | input si; | |
619 | input se; | |
620 | input clk; | |
621 | ||
622 | output [3:0] do_nad; | |
623 | output [3:0] do_nor; | |
624 | output [3:0] do_inv; | |
625 | output [3:0] do_mux; | |
626 | output [3:0] do_q; | |
627 | output so; | |
628 | ||
629 | wire [3:0] do_nad; | |
630 | wire [3:0] do_nor; | |
631 | wire [3:0] do_inv; | |
632 | wire [3:0] do_mux; | |
633 | wire [3:0] do_q; | |
634 | wire so = do_q[3]; | |
635 | ||
636 | wire [3:0] rst_l; | |
637 | ||
638 | ND3M1P nand3_3 ( .Z(do_nad[3]), .A(di_nd3[0]), .B(di_nd3[1]), .C(di_nd3[2]) ); | |
639 | ND3M1P nand3_2 ( .Z(do_nad[2]), .A(di_nd2[0]), .B(di_nd2[1]), .C(di_nd2[2]) ); | |
640 | ND3M1P nand3_1 ( .Z(do_nad[1]), .A(di_nd1[0]), .B(di_nd1[1]), .C(di_nd1[2]) ); | |
641 | ND3M1P nand3_0 ( .Z(do_nad[0]), .A(di_nd0[0]), .B(di_nd0[1]), .C(di_nd0[2]) ); | |
642 | ||
643 | NR2M1P nor_3 ( .Z(do_nor[3]), .A(di_nr3[0]), .B(di_nr3[1]) ); | |
644 | NR2M1P nor_2 ( .Z(do_nor[2]), .A(di_nr2[0]), .B(di_nr2[1]) ); | |
645 | NR2M1P nor_1 ( .Z(do_nor[1]), .A(di_nr1[0]), .B(di_nr1[1]) ); | |
646 | NR2M1P nor_0 ( .Z(do_nor[0]), .A(di_nr0[0]), .B(di_nr0[1]) ); | |
647 | ||
648 | N1M1P inv_3 ( .Z(do_inv[3]), .A(di_inv[3]) ); | |
649 | N1M1P inv_2 ( .Z(do_inv[2]), .A(di_inv[2]) ); | |
650 | N1M1P inv_1 ( .Z(do_inv[1]), .A(di_inv[1]) ); | |
651 | N1M1P inv_0 ( .Z(do_inv[0]), .A(di_inv[0]) ); | |
652 | ||
653 | MUX21HM1P mux21_3 ( .Z(do_mux[3]), .A(di_mx3[0]), .B(di_mx3[1]), .S(mx_sel[3]) ); | |
654 | MUX21HM1P mux21_2 ( .Z(do_mux[2]), .A(di_mx2[0]), .B(di_mx2[1]), .S(mx_sel[2]) ); | |
655 | MUX21HM1P mux21_1 ( .Z(do_mux[1]), .A(di_mx1[0]), .B(di_mx1[1]), .S(mx_sel[1]) ); | |
656 | MUX21HM1P mux21_0 ( .Z(do_mux[0]), .A(di_mx0[0]), .B(di_mx0[1]), .S(mx_sel[0]) ); | |
657 | ||
658 | FD2SL2QM1P regtre_3 ( .Q(do_q[3]), .D(di_reg[3]), .CP(clk), .CD(rst_l[3]), .TI(do_q[2]), .TE(se), .LD(wt_ena[3]) ); | |
659 | FD2SL2QM1P regtre_2 ( .Q(do_q[2]), .D(di_reg[2]), .CP(clk), .CD(rst_l[2]), .TI(do_q[1]), .TE(se), .LD(wt_ena[2]) ); | |
660 | FD2SL2QM1P regtre_1 ( .Q(do_q[1]), .D(di_reg[1]), .CP(clk), .CD(rst_l[1]), .TI(do_q[0]), .TE(se), .LD(wt_ena[1]) ); | |
661 | FD2SL2QM1P regtre_0 ( .Q(do_q[0]), .D(di_reg[0]), .CP(clk), .CD(rst_l[0]), .TI(si), .TE(se), .LD(wt_ena[0]) ); | |
662 | ||
663 | N1M1P inv_rst_3( .Z(rst_l[3]), .A(rst[3]) ); | |
664 | N1M1P inv_rst_2( .Z(rst_l[2]), .A(rst[2]) ); | |
665 | N1M1P inv_rst_1( .Z(rst_l[1]), .A(rst[1]) ); | |
666 | N1M1P inv_rst_0( .Z(rst_l[0]), .A(rst[0]) ); | |
667 | ||
668 | endmodule | |
669 | ||
670 | ||
671 | `else // !ifdef NEPTUNE | |
672 | `endif | |
673 | ||
674 | ||
675 |