Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / niu_mb1.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: niu_mb1.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
36///////////////////////////////////////////////////////////////////////////////
37//
38//
39// Released: 1/16/05
40// Contacts: carlos.castil@sun.com / shahryar.aryani@sun.com
41// Description: Memory BIST Controller for Niagara2 NIU core
42// Block Type: Control Block
43// Chip Name:
44// Unit Name:
45// Module:
46// Where Instantiated:
47//
48//
49// (c) 2005 Sun Microsystems, Inc.
50// Sun Proprietary/Confidential
51// Internal use only.
52//
53// All rights reserved. No part of this design may be reproduced stored
54// in a retrieval system, or transmitted, in any form or by any means,
55// electronic, mechanical, photocopying, recording, or otherwise, without
56// prior written permission of Sun Microsystems, Inc.
57//
58///////////////////////////////////////////////////////////////////////////////
59
60
61module niu_mb1 (
62 niu_mb1_xmit_store_rd_en,
63 niu_mb1_xmit_store_wr_en,
64 niu_mb1_xmit_realign_rd_en,
65 niu_mb1_xmit_realign_wr_en,
66 niu_mb1_addr,
67 niu_mb1_wdata,
68 niu_mb1_run,
69 niu_tcu_mbist_fail_1,
70 niu_tcu_mbist_done_1,
71 mb1_scan_out,
72 mb1_dmo_dout,
73 l1clk,
74 rst_l,
75 tcu_mbist_user_mode,
76 mb1_scan_in,
77 tcu_aclk,
78 tcu_bclk,
79 tcu_niu_mbist_start_1,
80 niu_mb1_xmit_store_data_out,
81 niu_mb1_xmit_realign_data_out,
82 tcu_mbist_bisi_en);
83wire siclk;
84wire soclk;
85wire reset;
86wire config_reg_scanin;
87wire config_reg_scanout;
88wire [8:0] config_in;
89wire [8:0] config_out;
90wire start_transition;
91wire reset_engine;
92wire mbist_user_loop_mode;
93wire mbist_done;
94wire run;
95wire bisi;
96wire user_mode;
97wire user_data_mode;
98wire user_addr_mode;
99wire user_loop_mode;
100wire user_cmpsel_hold;
101wire ten_n_mode;
102wire mbist_user_data_mode;
103wire mbist_user_addr_mode;
104wire mbist_user_cmpsel_hold;
105wire mbist_ten_n_mode;
106wire user_data_reg_scanin;
107wire user_data_reg_scanout;
108wire [7:0] user_data_in;
109wire [7:0] user_data_out;
110wire user_start_addr_reg_scanin;
111wire user_start_addr_reg_scanout;
112wire [9:0] user_start_addr_in;
113wire [9:0] user_start_addr;
114wire user_stop_addr_reg_scanin;
115wire user_stop_addr_reg_scanout;
116wire [9:0] user_stop_addr_in;
117wire [9:0] user_stop_addr;
118wire user_incr_addr_reg_scanin;
119wire user_incr_addr_reg_scanout;
120wire [9:0] user_incr_addr_in;
121wire [9:0] user_incr_addr;
122wire user_array_sel_reg_scanin;
123wire user_array_sel_reg_scanout;
124wire user_array_sel_in;
125wire user_array_sel;
126wire user_cmpsel_reg_scanin;
127wire user_cmpsel_reg_scanout;
128wire [1:0] user_cmpsel_in;
129wire [1:0] user_cmpsel;
130wire user_bisi_wr_reg_scanin;
131wire user_bisi_wr_reg_scanout;
132wire user_bisi_wr_mode_in;
133wire user_bisi_wr_mode;
134wire user_bisi_rd_reg_scanin;
135wire user_bisi_rd_reg_scanout;
136wire user_bisi_rd_mode_in;
137wire user_bisi_rd_mode;
138wire mbist_user_bisi_wr_mode;
139wire mbist_user_bisi_wr_rd_mode;
140wire start_transition_reg_scanin;
141wire start_transition_reg_scanout;
142wire start_transition_piped;
143wire run_reg_scanin;
144wire run_reg_scanout;
145wire run1_reg_scanin;
146wire run1_reg_scanout;
147wire run1_in;
148wire run1_out;
149wire run2_reg_scanin;
150wire run2_reg_scanout;
151wire run2_in;
152wire run2_out;
153wire run_piped3;
154wire msb;
155wire control_reg_scanin;
156wire control_reg_scanout;
157wire [24:0] control_in;
158wire [24:0] control_out;
159wire bisi_wr_rd;
160wire array_sel;
161wire [1:0] cmpsel;
162wire [1:0] data_control;
163wire address_mix;
164wire [3:0] march_element;
165wire [9:0] array_address;
166wire upaddress_march;
167wire [2:0] read_write_control;
168wire five_cycle_march;
169wire increment_addr;
170wire [9:0] start_addr;
171wire [9:0] next_array_address;
172wire next_upaddr_march;
173wire next_downaddr_march;
174wire [9:0] stop_addr;
175wire [10:0] overflow_addr;
176wire array_sel1;
177wire [9:0] incr_addr;
178wire overflow;
179wire [10:0] compare_addr;
180wire [9:0] add;
181wire [9:0] adj_address;
182wire [9:0] mbist_address;
183wire increment_march_elem;
184wire next_array_sel;
185wire [1:0] next_cmpsel;
186wire [1:0] next_data_control;
187wire next_address_mix;
188wire [3:0] next_march_element;
189wire array_write;
190wire one_op_march;
191wire array_read;
192wire [7:0] mbist_wdata;
193wire true_data;
194wire [7:0] data_pattern;
195wire [7:0] exp_read_data;
196wire array_sel0;
197wire done_counter_reg_scanin;
198wire done_counter_reg_scanout;
199wire [2:0] done_counter_in;
200wire [2:0] done_counter_out;
201wire done_reg_in;
202wire done_reg_out;
203wire done_reg_scanin;
204wire done_reg_scanout;
205wire data_pipe_reg1_scanin;
206wire data_pipe_reg1_scanout;
207wire [7:0] data_pipe_reg1_in;
208wire [7:0] data_pipe_out1;
209wire data_pipe_reg2_scanin;
210wire data_pipe_reg2_scanout;
211wire [7:0] data_pipe_reg2_in;
212wire [7:0] data_pipe_out2;
213wire [7:0] old_piped_data;
214wire cmpsel_reg1_scanin;
215wire cmpsel_reg1_scanout;
216wire [1:0] cmpsel_reg1_in;
217wire [1:0] cmpsel_reg1_out1;
218wire [1:0] cmpsel_pipe1;
219wire ren_pipe_reg1_scanin;
220wire ren_pipe_reg1_scanout;
221wire ren_pipe_reg1_in;
222wire ren_pipe_out1;
223wire ren_pipe_reg2_scanin;
224wire ren_pipe_reg2_scanout;
225wire ren_pipe_reg2_in;
226wire ren_pipe_out2;
227wire old_piped_ren;
228wire sel_pipe_reg1_scanin;
229wire sel_pipe_reg1_scanout;
230wire sel_pipe_reg1_in;
231wire sel_pipe_out1;
232wire sel_pipe_reg2_scanin;
233wire sel_pipe_reg2_scanout;
234wire sel_pipe_reg2_in;
235wire sel_pipe_out2;
236wire old_piped_sel2;
237wire old_piped_sel1;
238wire fail_out_reg_in;
239wire fail;
240wire fail_out_reg_out;
241wire fail_out_reg_scanin;
242wire fail_out_reg_scanout;
243wire [39:0] read_data_reg_in;
244wire [39:0] read_data_mux2;
245wire [39:0] read_data_reg_out;
246wire read_data_pipe_reg_scanin;
247wire read_data_pipe_reg_scanout;
248wire fail_reg_scanin;
249wire fail_reg_scanout;
250wire [1:0] fail_reg_in;
251wire [1:0] fail_reg_out;
252wire qual_old_fail1;
253wire qual_old_fail0;
254wire fail_detect;
255wire qual_old_fail;
256wire [151:0] read_data_mux1;
257
258
259
260
261
262// /////////////////////////////////////////////////////////////////////////////
263// Outputs
264// /////////////////////////////////////////////////////////////////////////////
265
266 output niu_mb1_xmit_store_rd_en;
267 output niu_mb1_xmit_store_wr_en;
268
269 output niu_mb1_xmit_realign_rd_en;
270 output niu_mb1_xmit_realign_wr_en;
271
272 output [9:0] niu_mb1_addr;
273 output [7:0] niu_mb1_wdata;
274
275 output niu_mb1_run;
276
277 output niu_tcu_mbist_fail_1;
278 output niu_tcu_mbist_done_1;
279
280 output mb1_scan_out;
281
282 output [39:0] mb1_dmo_dout;
283
284
285// /////////////////////////////////////////////////////////////////////////////
286// Inputs
287// /////////////////////////////////////////////////////////////////////////////
288
289 input l1clk;
290 input rst_l;
291 input tcu_mbist_user_mode;
292
293 input mb1_scan_in;
294 input tcu_aclk;
295 input tcu_bclk;
296
297 input tcu_niu_mbist_start_1;
298
299 input [151:0] niu_mb1_xmit_store_data_out;
300 input [151:0] niu_mb1_xmit_realign_data_out;
301
302 input tcu_mbist_bisi_en;
303
304
305// /////////////////////////////////////////////////////////////////////////////
306// Scan Renames
307// /////////////////////////////////////////////////////////////////////////////
308
309// assign se = tcu_scan_en;
310// assign pce_ov = tcu_pce_ov;
311// assign stop = tcu_clk_stop;
312
313assign siclk = tcu_aclk;
314assign soclk = tcu_bclk;
315
316// /////////////////////////////////////////////////////////////////////////////
317// Invert reset
318// /////////////////////////////////////////////////////////////////////////////
319
320assign reset = rst_l;
321
322////////////////////////////////////////////////////////////////////////////////
323// Clock header
324
325// l1clkhdr_ctl_macro clkgen (
326// .l2clk (iol2clk ),
327// .l1en (1'b1 ),
328// .l1clk (l1clk )
329// );
330//assign siclk = 1'b0;
331//assign soclk = 1'b0;
332
333
334// /////////////////////////////////////////////////////////////////////////////
335//
336// MBIST Config Register
337//
338// /////////////////////////////////////////////////////////////////////////////
339//
340// A low to high transition on mbist_start will reset and start the engine.
341// mbist_start must remain active high for the duration of MBIST.
342// If mbist_start deasserts the engine will stop but not reset.
343// Once MBIST has completed niu_tcu_mbist_done_1 will assert and the fail status
344// signals will be valid.
345// To run MBIST again the mbist_start signal must transition low then high.
346//
347// Loop on Address will disable the address mix function.
348//
349// /////////////////////////////////////////////////////////////////////////////
350
351 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_9 config_reg (
352 .scan_in(config_reg_scanin),
353 .scan_out(config_reg_scanout),
354 .din ( config_in[8:0] ),
355 .dout ( config_out[8:0] ),
356 .reset(reset),
357 .l1clk(l1clk),
358 .siclk(siclk),
359 .soclk(soclk));
360
361 assign config_in[0] = tcu_niu_mbist_start_1;
362 assign config_in[1] = config_out[0];
363 assign start_transition = config_out[0] & ~config_out[1];
364 assign reset_engine = start_transition | (mbist_user_loop_mode & mbist_done);
365 assign run = config_out[0] & config_out[1]; // 9/19/05 run to follow start only!
366
367 assign config_in[2] = start_transition ? tcu_mbist_bisi_en: config_out[2];
368 assign bisi = config_out[2];
369
370 assign config_in[3] = start_transition ? tcu_mbist_user_mode : config_out[3];
371 assign user_mode = config_out[3];
372
373 assign config_in[4] = config_out[4];
374 assign user_data_mode = config_out[4];
375
376 assign config_in[5] = config_out[5];
377 assign user_addr_mode = config_out[5];
378
379 assign config_in[6] = config_out[6];
380 assign user_loop_mode = config_out[6];
381
382 assign config_in[7] = config_out[7];
383 assign user_cmpsel_hold = config_out[7]; //cmpsel_hold = 0 : Default, All cominations
384 // = 1 :
385 // User-specified cmpsel
386
387 assign config_in[8] = config_out[8];
388 assign ten_n_mode = config_out[8];
389
390 assign mbist_user_data_mode = user_mode & user_data_mode;
391 assign mbist_user_addr_mode = user_mode & user_addr_mode;
392 assign mbist_user_loop_mode = user_mode & user_loop_mode;
393 assign mbist_user_cmpsel_hold = user_mode & user_cmpsel_hold;
394 assign mbist_ten_n_mode = user_mode & ten_n_mode;
395
396
397 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_8 user_data_reg (
398 .scan_in(user_data_reg_scanin),
399 .scan_out(user_data_reg_scanout),
400 .din ( user_data_in[7:0] ),
401 .dout ( user_data_out[7:0] ),
402 .reset(reset),
403 .l1clk(l1clk),
404 .siclk(siclk),
405 .soclk(soclk));
406
407 assign user_data_in[7:0] = user_data_out[7:0];
408
409
410// Defining User start, stop, and increment addresses.
411
412 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_10 user_start_addr_reg (
413 .scan_in(user_start_addr_reg_scanin),
414 .scan_out(user_start_addr_reg_scanout),
415 .din ( user_start_addr_in[9:0] ),
416 .dout ( user_start_addr[9:0] ),
417 .reset(reset),
418 .l1clk(l1clk),
419 .siclk(siclk),
420 .soclk(soclk));
421
422 assign user_start_addr_in[9:0] = user_start_addr[9:0];
423
424 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_10 user_stop_addr_reg (
425 .scan_in(user_stop_addr_reg_scanin),
426 .scan_out(user_stop_addr_reg_scanout),
427 .din ( user_stop_addr_in[9:0] ),
428 .dout ( user_stop_addr[9:0] ),
429 .reset(reset),
430 .l1clk(l1clk),
431 .siclk(siclk),
432 .soclk(soclk));
433
434 assign user_stop_addr_in[9:0] = user_stop_addr[9:0];
435
436
437 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_10 user_incr_addr_reg (
438 .scan_in(user_incr_addr_reg_scanin),
439 .scan_out(user_incr_addr_reg_scanout),
440 .din ( user_incr_addr_in[9:0] ),
441 .dout ( user_incr_addr[9:0] ),
442 .reset(reset),
443 .l1clk(l1clk),
444 .siclk(siclk),
445 .soclk(soclk));
446
447 assign user_incr_addr_in[9:0] = user_incr_addr[9:0];
448
449// Defining User array_sel.
450
451 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 user_array_sel_reg (
452 .scan_in(user_array_sel_reg_scanin),
453 .scan_out(user_array_sel_reg_scanout),
454 .din ( user_array_sel_in ),
455 .dout ( user_array_sel ),
456 .reset(reset),
457 .l1clk(l1clk),
458 .siclk(siclk),
459 .soclk(soclk));
460
461 assign user_array_sel_in = user_array_sel;
462
463// Defining User cmpsel.
464
465 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_2 user_cmpsel_reg (
466 .scan_in(user_cmpsel_reg_scanin),
467 .scan_out(user_cmpsel_reg_scanout),
468 .din ( user_cmpsel_in[1:0] ),
469 .dout ( user_cmpsel[1:0] ),
470 .reset(reset),
471 .l1clk(l1clk),
472 .siclk(siclk),
473 .soclk(soclk));
474
475 assign user_cmpsel_in[1:0] = user_cmpsel[1:0];
476
477// Defining user_bisi write and read registers
478
479 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 user_bisi_wr_reg (
480 .scan_in(user_bisi_wr_reg_scanin),
481 .scan_out(user_bisi_wr_reg_scanout),
482 .din ( user_bisi_wr_mode_in ),
483 .dout ( user_bisi_wr_mode ),
484 .reset(reset),
485 .l1clk(l1clk),
486 .siclk(siclk),
487 .soclk(soclk));
488
489 assign user_bisi_wr_mode_in = user_bisi_wr_mode;
490
491 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 user_bisi_rd_reg (
492 .scan_in(user_bisi_rd_reg_scanin),
493 .scan_out(user_bisi_rd_reg_scanout),
494 .din ( user_bisi_rd_mode_in ),
495 .dout ( user_bisi_rd_mode ),
496 .reset(reset),
497 .l1clk(l1clk),
498 .siclk(siclk),
499 .soclk(soclk));
500
501 assign user_bisi_rd_mode_in = user_bisi_rd_mode;
502
503 assign mbist_user_bisi_wr_mode = user_mode & bisi & user_bisi_wr_mode & ~user_bisi_rd_mode;
504// assign mbist_user_bisi_rd_mode = user_mode & bisi & user_bisi_rd_mode & ~user_bisi_wr_mode;
505
506 assign mbist_user_bisi_wr_rd_mode = user_mode & bisi &
507 ((user_bisi_wr_mode & user_bisi_rd_mode) |
508 (~user_bisi_wr_mode & ~user_bisi_rd_mode));
509
510
511////////////////////////////////////////////////////////////////////////////////
512// Piping start_transition
513////////////////////////////////////////////////////////////////////////////////
514
515 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 start_transition_reg (
516 .scan_in(start_transition_reg_scanin),
517 .scan_out(start_transition_reg_scanout),
518 .din ( start_transition ),
519 .dout ( start_transition_piped ),
520 .reset(reset),
521 .l1clk(l1clk),
522 .siclk(siclk),
523 .soclk(soclk));
524
525
526////////////////////////////////////////////////////////////////////////////////
527// Adding 2 extra pipeline stages to run to delay the start of mbist for 3 cycles.
528////////////////////////////////////////////////////////////////////////////////
529
530 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 run_reg (
531 .scan_in(run_reg_scanin),
532 .scan_out(run_reg_scanout),
533 .din ( run ),
534 .dout ( niu_mb1_run ),
535 .reset(reset),
536 .l1clk(l1clk),
537 .siclk(siclk),
538 .soclk(soclk));
539
540 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 run1_reg (
541 .scan_in(run1_reg_scanin),
542 .scan_out(run1_reg_scanout),
543 .din ( run1_in ),
544 .dout ( run1_out ),
545 .reset(reset),
546 .l1clk(l1clk),
547 .siclk(siclk),
548 .soclk(soclk));
549
550 assign run1_in = reset_engine ? 1'b0: niu_mb1_run;
551
552 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 run2_reg (
553 .scan_in(run2_reg_scanin),
554 .scan_out(run2_reg_scanout),
555 .din ( run2_in ),
556 .dout ( run2_out ),
557 .reset(reset),
558 .l1clk(l1clk),
559 .siclk(siclk),
560 .soclk(soclk));
561
562 assign run2_in = reset_engine ? 1'b0: run1_out;
563
564 assign run_piped3 = config_out[0] & run2_out & ~msb;
565
566// /////////////////////////////////////////////////////////////////////////////
567//
568// MBIST Control Register
569//
570// /////////////////////////////////////////////////////////////////////////////
571// Remove Address mix disable before delivery
572// /////////////////////////////////////////////////////////////////////////////
573
574 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_25 control_reg (
575 .scan_in(control_reg_scanin),
576 .scan_out(control_reg_scanout),
577 .din ( control_in[24:0] ),
578 .dout ( control_out[24:0] ),
579 .reset(reset),
580 .l1clk(l1clk),
581 .siclk(siclk),
582 .soclk(soclk));
583
584
585 assign msb = control_out[24];
586 assign bisi_wr_rd = (bisi & ~user_mode) | mbist_user_bisi_wr_rd_mode ? control_out[23] : 1'b1;
587 assign array_sel = user_mode ? user_array_sel : control_out[22];
588 assign cmpsel[1:0] = mbist_user_cmpsel_hold ? user_cmpsel[1:0] : control_out[21:20];
589 assign data_control[1:0] = control_out[19:18];
590 assign address_mix = (bisi | mbist_user_addr_mode) ? 1'b0 : control_out[17];
591 assign march_element[3:0] = control_out[16:13];
592
593 assign array_address[9:0] = upaddress_march ? control_out[12:3] : ~control_out[12:3];
594
595 assign read_write_control[2:0] = ~five_cycle_march ? {2'b11, control_out[0]} :
596 control_out[2:0];
597
598 assign control_in[2:0] = reset_engine ? 3'b0:
599 ~run_piped3 ? control_out[2:0]:
600 (five_cycle_march && (read_write_control[2:0] == 3'b100)) ? 3'b000:
601 (read_write_control[2:0] == 3'b110) ? 3'b000:
602 control_out[2:0] + 3'b001;
603
604 assign increment_addr = (five_cycle_march && (read_write_control[2:0] == 3'b100)) ||
605 (read_write_control[2:0] == 3'b110);
606
607// start_transition_piped was added to have the correct start_addr at the start
608// of mbist during user_addr_mode
609 assign control_in[12:3] = start_transition_piped || reset_engine ? start_addr[9:0]:
610 ~run_piped3 || ~increment_addr ? control_out[12:3]:
611 next_array_address[9:0];
612
613 assign next_array_address[9:0] = next_upaddr_march ? start_addr[9:0]:
614 next_downaddr_march ? ~stop_addr[9:0]:
615 (overflow_addr[9:0]); // array_addr + incr_addr
616
617 assign start_addr[9:0] = mbist_user_addr_mode ? user_start_addr[9:0]: 10'b0000000000;
618 assign stop_addr[9:0] = mbist_user_addr_mode ? user_stop_addr[9:0] :
619 array_sel1 ? 10'b1001111111 :
620 10'b1111111111;
621
622 assign incr_addr[9:0] = mbist_user_addr_mode ? user_incr_addr[9:0] : 10'b0000000001;
623
624 assign overflow_addr[10:0] = {1'b0,control_out[12:3]} + {1'b0,incr_addr[9:0]};
625 assign overflow = compare_addr[10:0] < overflow_addr[10:0];
626
627 assign compare_addr[10:0] = upaddress_march ? {1'b0, stop_addr[9:0]} :
628 {1'b0, ~start_addr[9:0]};
629
630
631 assign next_upaddr_march = ( (march_element[3:0] == 4'h0) || (march_element[3:0] == 4'h1) ||
632 (march_element[3:0] == 4'h6) || (march_element[3:0] == 4'h5) ||
633 (march_element[3:0] == 4'h8) ) && overflow;
634
635 assign next_downaddr_march = ( (march_element[3:0] == 4'h2) || (march_element[3:0] == 4'h7) ||
636 (march_element[3:0] == 4'h3) || (march_element[3:0] == 4'h4) ) &&
637 overflow;
638
639
640 assign add[9:0] = five_cycle_march && ( (read_write_control[2:0] == 3'h1) ||
641 (read_write_control[2:0] == 3'h3)) ?
642 adj_address[9:0]: array_address[9:0];
643
644
645 assign adj_address[9:0] = address_mix ? { array_address[9:1], ~array_address[0] } :
646 { array_address[9:3], ~array_address[2], array_address[1:0]};
647
648// Address mix
649// The 2 lsb of the address are col addresses and the msb address for 1K
650// is the mux select between the top and bottom
651//
652// assign mbist_address[9:0] = (address_mix & array_sel0) ? {add[7:0], add[9:8]}: // Fast row array 0
653// (address_mix & array_sel1) ? {add[9:7], add[4:0], add[6:5]}: // Fast row array 1
654// add[9:0]; // Fast column
655
656// Same for both arrays
657 assign mbist_address[9:0] = (address_mix) ? {add[9:7], add[4:0], add[6:5]}: // Fast row array 1
658 add[9:0]; // Fast column
659
660// Definition of the rest of the control register
661
662 assign increment_march_elem = increment_addr && overflow;
663
664 assign control_in[24:13] = reset_engine ? 12'b0:
665 ~run_piped3 ? control_out[24:13]:
666 {msb, bisi_wr_rd, next_array_sel, next_cmpsel[1:0], next_data_control[1:0], next_address_mix, next_march_element[3:0]} +
667 {11'b0, increment_march_elem};
668
669 assign next_address_mix = ( bisi | mbist_user_addr_mode) ? 1'b1 : address_mix;
670
671 assign next_array_sel = user_mode ? 1'b1 : control_out[22];
672
673 assign next_cmpsel[1:0] = ( mbist_user_cmpsel_hold || (~bisi_wr_rd) || mbist_user_bisi_wr_mode ) ? 2'b11 : control_out[21:20];
674
675 assign next_data_control[1:0] = (bisi || (mbist_user_data_mode && (data_control[1:0] == 2'b00))) ? 2'b11:
676 data_control[1:0];
677
678// Incorporated ten_n_mode!
679 assign next_march_element[3:0] = ( bisi ||
680 (mbist_ten_n_mode && (march_element[3:0] == 4'b0101)) ||
681 ((march_element[3:0] == 4'b1000) && (read_write_control[2:0] == 3'b100)) )
682 && overflow ? 4'b1111: march_element[3:0];
683
684
685 assign array_write = ~run_piped3 ? 1'b0:
686 five_cycle_march ? (read_write_control[2:0] == 3'h0) ||
687 (read_write_control[2:0] == 3'h1) ||
688 (read_write_control[2:0] == 3'h4):
689 (~five_cycle_march & ~one_op_march) ? (read_write_control[0] == 1'b0) :
690 ( ((march_element[3:0] == 4'h0) & (~bisi || ~bisi_wr_rd || mbist_user_bisi_wr_mode)) || (march_element[3:0] == 4'h7) );
691
692 assign array_read = (~five_cycle_march & ~one_op_march) ? run_piped3 :
693 (~array_write) && run_piped3;
694
695
696 assign mbist_wdata[7:0] = true_data ? data_pattern[7:0]: ~data_pattern[7:0];
697
698
699 assign five_cycle_march = (march_element[3:0] == 4'h6) || (march_element[3:0] == 4'h8);
700 assign one_op_march = (march_element[3:0] == 4'h0) || (march_element[3:0] == 4'h5) ||
701 (march_element[3:0] == 4'h7);
702
703 assign upaddress_march = (march_element[3:0] == 4'h0) || (march_element[3:0] == 4'h1) ||
704 (march_element[3:0] == 4'h2) || (march_element[3:0] == 4'h6) ||
705 (march_element[3:0] == 4'h7);
706
707 assign true_data = (five_cycle_march && (march_element[3:0] == 4'h6)) ?
708 ((read_write_control[2:0] == 3'h0) || (read_write_control[2:0] == 3'h2)):
709 (five_cycle_march && (march_element[3:0] == 4'h8)) ?
710 ((read_write_control[2:0] == 3'h1) ||
711 (read_write_control[2:0] == 3'h3) || (read_write_control[2:0] == 3'h4)):
712 one_op_march ? (march_element[3:0] == 4'h7) :
713 (march_element[3:0] == 4'h1) || (march_element[3:0] == 4'h3);
714
715
716 assign data_pattern[7:0] = (bisi & mbist_user_data_mode) ? ~user_data_out[7:0]:
717 mbist_user_data_mode ? user_data_out[7:0]:
718 bisi ? 8'hFF: // true_data function will invert to 8'h00
719 (data_control[1:0] == 2'h0) ? 8'hAA:
720 (data_control[1:0] == 2'h1) ? 8'h99:
721 (data_control[1:0] == 2'h2) ? 8'hCC:
722 8'h00;
723
724// /////////////////////////////////////////////////////////////////////////////
725// Write data and address may need pipelining !!!
726// /////////////////////////////////////////////////////////////////////////////
727
728 assign niu_mb1_wdata[7:0] = mbist_wdata[7:0];
729 assign niu_mb1_addr[9:0] = mbist_address[9:0];
730
731 assign exp_read_data[7:0] = (~five_cycle_march & ~one_op_march) ? ~mbist_wdata[7:0] : mbist_wdata[7:0];
732
733// /////////////////////////////////////////////////////////////////////////////
734// Read and write selects
735// /////////////////////////////////////////////////////////////////////////////
736
737 assign array_sel0 = ~array_sel;
738 assign array_sel1 = array_sel;
739
740 assign niu_mb1_xmit_realign_rd_en = (array_sel0 && array_read );
741 assign niu_mb1_xmit_realign_wr_en = (array_sel0) && array_write;
742
743 assign niu_mb1_xmit_store_rd_en = (array_sel1 && array_read);
744 assign niu_mb1_xmit_store_wr_en = (array_sel1) && array_write;
745
746/////////////////////////////////////////////////////////////////////////
747// Creating the mbist_done signal
748/////////////////////////////////////////////////////////////////////////
749// Delaying mbist_done 8 clock signals after msb going high, to provide
750// a generic solution for done going high after the last fail has come back!
751
752 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_3 done_counter_reg (
753 .scan_in(done_counter_reg_scanin),
754 .scan_out(done_counter_reg_scanout),
755 .din ( done_counter_in[2:0] ),
756 .dout ( done_counter_out[2:0] ),
757 .reset(reset),
758 .l1clk(l1clk),
759 .siclk(siclk),
760 .soclk(soclk));
761
762// config_out[1] is AND'ed to force mbist_done low 2 cycles after mbist_start
763// goes low.
764
765 assign mbist_done = (&done_counter_out[2:0] == 1'b1) & config_out[1];
766 assign done_counter_in[2:0] = reset_engine ? 3'b000:
767 msb & ~mbist_done & config_out[1] ? done_counter_out[2:0] + 3'b001:
768 done_counter_out[2:0];
769
770// /////////////////////////////////////////////////////////////////////////////
771// Done Detection
772// /////////////////////////////////////////////////////////////////////////////
773
774 assign done_reg_in = mbist_done;
775 assign niu_tcu_mbist_done_1 = done_reg_out;
776
777
778 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 done_reg (
779 .scan_in(done_reg_scanin),
780 .scan_out(done_reg_scanout),
781 .din ( done_reg_in ),
782 .dout ( done_reg_out ),
783 .reset(reset),
784 .l1clk(l1clk),
785 .siclk(siclk),
786 .soclk(soclk));
787
788
789// /////////////////////////////////////////////////////////////////////////////
790// Pipeline for wdata, and Read_en
791// /////////////////////////////////////////////////////////////////////////////
792
793// /////////////////////////////////////////////////////////////////////////////
794// Pipeline for wdata
795// /////////////////////////////////////////////////////////////////////////////
796
797 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_8 data_pipe_reg1 (
798 .scan_in(data_pipe_reg1_scanin),
799 .scan_out(data_pipe_reg1_scanout),
800 .din ( data_pipe_reg1_in[7:0] ),
801 .dout ( data_pipe_out1[7:0] ),
802 .reset(reset),
803 .l1clk(l1clk),
804 .siclk(siclk),
805 .soclk(soclk));
806
807 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_8 data_pipe_reg2 (
808 .scan_in(data_pipe_reg2_scanin),
809 .scan_out(data_pipe_reg2_scanout),
810 .din ( data_pipe_reg2_in[7:0] ),
811 .dout ( data_pipe_out2[7:0] ),
812 .reset(reset),
813 .l1clk(l1clk),
814 .siclk(siclk),
815 .soclk(soclk));
816
817 assign data_pipe_reg1_in[7:0] = reset_engine ? 8'h00: exp_read_data[7:0];
818 assign data_pipe_reg2_in[7:0] = reset_engine ? 8'h00: data_pipe_out1[7:0];
819 assign old_piped_data[7:0] = data_pipe_out2[7:0];
820
821// /////////////////////////////////////////////////////////////////////////////
822// Pipeline for comp sel
823// /////////////////////////////////////////////////////////////////////////////
824
825 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_2 cmpsel_reg1 (
826 .scan_in(cmpsel_reg1_scanin),
827 .scan_out(cmpsel_reg1_scanout),
828 .din ( cmpsel_reg1_in[1:0] ),
829 .dout ( cmpsel_reg1_out1[1:0] ),
830 .reset(reset),
831 .l1clk(l1clk),
832 .siclk(siclk),
833 .soclk(soclk));
834
835 assign cmpsel_reg1_in[1:0] = cmpsel[1:0];
836
837 assign cmpsel_pipe1[1:0] = cmpsel_reg1_out1[1:0];
838
839
840// /////////////////////////////////////////////////////////////////////////////
841// Pipeline for Read_en
842// /////////////////////////////////////////////////////////////////////////////
843
844 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 ren_pipe_reg1 (
845 .scan_in(ren_pipe_reg1_scanin),
846 .scan_out(ren_pipe_reg1_scanout),
847 .din ( ren_pipe_reg1_in ),
848 .dout ( ren_pipe_out1 ),
849 .reset(reset),
850 .l1clk(l1clk),
851 .siclk(siclk),
852 .soclk(soclk));
853
854 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 ren_pipe_reg2 (
855 .scan_in(ren_pipe_reg2_scanin),
856 .scan_out(ren_pipe_reg2_scanout),
857 .din ( ren_pipe_reg2_in ),
858 .dout ( ren_pipe_out2 ),
859 .reset(reset),
860 .l1clk(l1clk),
861 .siclk(siclk),
862 .soclk(soclk));
863
864 assign ren_pipe_reg1_in = reset_engine ? 1'b0: array_read;
865 assign ren_pipe_reg2_in = reset_engine ? 1'b0: ren_pipe_out1;
866 assign old_piped_ren = ren_pipe_out2;
867
868// piped sel
869 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 sel_pipe_reg1 (
870 .scan_in(sel_pipe_reg1_scanin),
871 .scan_out(sel_pipe_reg1_scanout),
872 .din ( sel_pipe_reg1_in ),
873 .dout ( sel_pipe_out1 ),
874 .reset(reset),
875 .l1clk(l1clk),
876 .siclk(siclk),
877 .soclk(soclk));
878
879 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 sel_pipe_reg2 (
880 .scan_in(sel_pipe_reg2_scanin),
881 .scan_out(sel_pipe_reg2_scanout),
882 .din ( sel_pipe_reg2_in ),
883 .dout ( sel_pipe_out2 ),
884 .reset(reset),
885 .l1clk(l1clk),
886 .siclk(siclk),
887 .soclk(soclk));
888
889 assign sel_pipe_reg1_in = reset_engine ? 1'b0: array_sel;
890 assign sel_pipe_reg2_in = reset_engine ? 1'b0: sel_pipe_out1;
891 assign old_piped_sel2 = sel_pipe_out2;
892 assign old_piped_sel1 = sel_pipe_out1;
893
894// /////////////////////////////////////////////////////////////////////////////
895// Fail Detection
896// /////////////////////////////////////////////////////////////////////////////
897
898 assign fail_out_reg_in = fail;
899 assign niu_tcu_mbist_fail_1 = fail_out_reg_out;
900
901 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 fail_out_reg (
902 .scan_in(fail_out_reg_scanin),
903 .scan_out(fail_out_reg_scanout),
904 .din ( fail_out_reg_in ),
905 .dout ( fail_out_reg_out ),
906 .reset(reset),
907 .l1clk(l1clk),
908 .siclk(siclk),
909 .soclk(soclk));
910
911// /////////////////////////////////////////////////////////////////////////////
912// Fail Detection
913// /////////////////////////////////////////////////////////////////////////////
914
915 assign read_data_reg_in[39:0] = read_data_mux2[39:0];
916 assign mb1_dmo_dout[39:0] = read_data_reg_out[39:0];
917
918 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_40 read_data_pipe_reg (
919 .scan_in(read_data_pipe_reg_scanin),
920 .scan_out(read_data_pipe_reg_scanout),
921 .din ( read_data_reg_in[39:0] ),
922 .dout ( read_data_reg_out[39:0] ),
923 .reset(reset),
924 .l1clk(l1clk),
925 .siclk(siclk),
926 .soclk(soclk));
927
928 niu_mb1_msff_ctl_macro__library_a1__reset_1__width_2 fail_reg (
929 .scan_in(fail_reg_scanin),
930 .scan_out(fail_reg_scanout),
931 .din ( fail_reg_in ),
932 .dout ( fail_reg_out ),
933 .reset(reset),
934 .l1clk(l1clk),
935 .siclk(siclk),
936 .soclk(soclk));
937
938 assign fail_reg_in[1:0] = reset_engine ? 2'b00 : {qual_old_fail1, qual_old_fail0} | fail_reg_out[1:0];
939
940 assign qual_old_fail0 = fail_detect && !old_piped_sel2;
941 assign qual_old_fail1 = fail_detect && old_piped_sel2;
942 assign qual_old_fail = qual_old_fail0 || qual_old_fail1;
943
944 assign fail_detect = ({old_piped_data[7:0],
945 old_piped_data[7:0],
946 old_piped_data[7:0],
947 old_piped_data[7:0],
948 old_piped_data[7:0]}) != mb1_dmo_dout[39:0] && old_piped_ren;
949
950 assign fail = mbist_done ? |fail_reg_out[1:0] : qual_old_fail;
951
952// Pipelining the read_data to meet the timing requirement
953// Check if need to reset??
954
955 assign read_data_mux1[151:0] = old_piped_sel1 ? niu_mb1_xmit_store_data_out[151:0] :
956 niu_mb1_xmit_realign_data_out[151:0];
957
958 assign read_data_mux2[39:0] = (cmpsel_pipe1[1:0] == 2'b00) ? read_data_mux1[39:0] :
959 (cmpsel_pipe1[1:0] == 2'b01) ? read_data_mux1[79:40] :
960 (cmpsel_pipe1[1:0] == 2'b10) ? read_data_mux1[119:80] :
961 {data_pipe_out1[7:0], read_data_mux1[151:120]} ;
962
963supply0 vss; // <- port for ground
964supply1 vdd; // <- port for power
965// /////////////////////////////////////////////////////////////////////////////
966// fixscan start:
967assign config_reg_scanin = mb1_scan_in ;
968assign user_data_reg_scanin = config_reg_scanout ;
969assign user_start_addr_reg_scanin = user_data_reg_scanout ;
970assign user_stop_addr_reg_scanin = user_start_addr_reg_scanout;
971assign user_incr_addr_reg_scanin = user_stop_addr_reg_scanout;
972assign user_array_sel_reg_scanin = user_incr_addr_reg_scanout;
973assign user_cmpsel_reg_scanin = user_array_sel_reg_scanout;
974assign user_bisi_wr_reg_scanin = user_cmpsel_reg_scanout ;
975assign user_bisi_rd_reg_scanin = user_bisi_wr_reg_scanout ;
976assign start_transition_reg_scanin = user_bisi_rd_reg_scanout ;
977assign run_reg_scanin = start_transition_reg_scanout;
978assign run1_reg_scanin = run_reg_scanout ;
979assign run2_reg_scanin = run1_reg_scanout ;
980assign control_reg_scanin = run2_reg_scanout ;
981assign done_counter_reg_scanin = control_reg_scanout ;
982assign done_reg_scanin = done_counter_reg_scanout ;
983assign data_pipe_reg1_scanin = done_reg_scanout ;
984assign data_pipe_reg2_scanin = data_pipe_reg1_scanout ;
985assign cmpsel_reg1_scanin = data_pipe_reg2_scanout ;
986assign ren_pipe_reg1_scanin = cmpsel_reg1_scanout ;
987assign ren_pipe_reg2_scanin = ren_pipe_reg1_scanout ;
988assign sel_pipe_reg1_scanin = ren_pipe_reg2_scanout ;
989assign sel_pipe_reg2_scanin = sel_pipe_reg1_scanout ;
990assign fail_out_reg_scanin = sel_pipe_reg2_scanout ;
991assign read_data_pipe_reg_scanin = fail_out_reg_scanout ;
992assign fail_reg_scanin = read_data_pipe_reg_scanout;
993assign mb1_scan_out = fail_reg_scanout ;
994// fixscan end:
995endmodule
996// /////////////////////////////////////////////////////////////////////////////
997
998
999
1000
1001
1002
1003// any PARAMS parms go into naming of macro
1004
1005module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_9 (
1006 din,
1007 reset,
1008 l1clk,
1009 scan_in,
1010 siclk,
1011 soclk,
1012 dout,
1013 scan_out);
1014wire [8:0] fdin;
1015wire [8:1] sout;
1016
1017 input [8:0] din;
1018 input reset;
1019 input l1clk;
1020 input scan_in;
1021
1022
1023 input siclk;
1024 input soclk;
1025
1026 output [8:0] dout;
1027 output scan_out;
1028assign fdin[8:0] = din[8:0] & {9 {reset}};
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046cl_a1_msff_syrst_4x d0_0 (
1047.l1clk(l1clk),
1048.siclk(siclk),
1049.soclk(soclk),
1050.d(fdin[0]),
1051.si(sout[1]),
1052.so(scan_out),
1053.reset(reset),
1054.q(dout[0])
1055);
1056cl_a1_msff_syrst_4x d0_1 (
1057.l1clk(l1clk),
1058.siclk(siclk),
1059.soclk(soclk),
1060.d(fdin[1]),
1061.si(sout[2]),
1062.so(sout[1]),
1063.reset(reset),
1064.q(dout[1])
1065);
1066cl_a1_msff_syrst_4x d0_2 (
1067.l1clk(l1clk),
1068.siclk(siclk),
1069.soclk(soclk),
1070.d(fdin[2]),
1071.si(sout[3]),
1072.so(sout[2]),
1073.reset(reset),
1074.q(dout[2])
1075);
1076cl_a1_msff_syrst_4x d0_3 (
1077.l1clk(l1clk),
1078.siclk(siclk),
1079.soclk(soclk),
1080.d(fdin[3]),
1081.si(sout[4]),
1082.so(sout[3]),
1083.reset(reset),
1084.q(dout[3])
1085);
1086cl_a1_msff_syrst_4x d0_4 (
1087.l1clk(l1clk),
1088.siclk(siclk),
1089.soclk(soclk),
1090.d(fdin[4]),
1091.si(sout[5]),
1092.so(sout[4]),
1093.reset(reset),
1094.q(dout[4])
1095);
1096cl_a1_msff_syrst_4x d0_5 (
1097.l1clk(l1clk),
1098.siclk(siclk),
1099.soclk(soclk),
1100.d(fdin[5]),
1101.si(sout[6]),
1102.so(sout[5]),
1103.reset(reset),
1104.q(dout[5])
1105);
1106cl_a1_msff_syrst_4x d0_6 (
1107.l1clk(l1clk),
1108.siclk(siclk),
1109.soclk(soclk),
1110.d(fdin[6]),
1111.si(sout[7]),
1112.so(sout[6]),
1113.reset(reset),
1114.q(dout[6])
1115);
1116cl_a1_msff_syrst_4x d0_7 (
1117.l1clk(l1clk),
1118.siclk(siclk),
1119.soclk(soclk),
1120.d(fdin[7]),
1121.si(sout[8]),
1122.so(sout[7]),
1123.reset(reset),
1124.q(dout[7])
1125);
1126cl_a1_msff_syrst_4x d0_8 (
1127.l1clk(l1clk),
1128.siclk(siclk),
1129.soclk(soclk),
1130.d(fdin[8]),
1131.si(scan_in),
1132.so(sout[8]),
1133.reset(reset),
1134.q(dout[8])
1135);
1136
1137
1138
1139
1140endmodule
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154// any PARAMS parms go into naming of macro
1155
1156module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_8 (
1157 din,
1158 reset,
1159 l1clk,
1160 scan_in,
1161 siclk,
1162 soclk,
1163 dout,
1164 scan_out);
1165wire [7:0] fdin;
1166wire [7:1] sout;
1167
1168 input [7:0] din;
1169 input reset;
1170 input l1clk;
1171 input scan_in;
1172
1173
1174 input siclk;
1175 input soclk;
1176
1177 output [7:0] dout;
1178 output scan_out;
1179assign fdin[7:0] = din[7:0] & {8 {reset}};
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197cl_a1_msff_syrst_4x d0_0 (
1198.l1clk(l1clk),
1199.siclk(siclk),
1200.soclk(soclk),
1201.d(fdin[0]),
1202.si(sout[1]),
1203.so(scan_out),
1204.reset(reset),
1205.q(dout[0])
1206);
1207cl_a1_msff_syrst_4x d0_1 (
1208.l1clk(l1clk),
1209.siclk(siclk),
1210.soclk(soclk),
1211.d(fdin[1]),
1212.si(sout[2]),
1213.so(sout[1]),
1214.reset(reset),
1215.q(dout[1])
1216);
1217cl_a1_msff_syrst_4x d0_2 (
1218.l1clk(l1clk),
1219.siclk(siclk),
1220.soclk(soclk),
1221.d(fdin[2]),
1222.si(sout[3]),
1223.so(sout[2]),
1224.reset(reset),
1225.q(dout[2])
1226);
1227cl_a1_msff_syrst_4x d0_3 (
1228.l1clk(l1clk),
1229.siclk(siclk),
1230.soclk(soclk),
1231.d(fdin[3]),
1232.si(sout[4]),
1233.so(sout[3]),
1234.reset(reset),
1235.q(dout[3])
1236);
1237cl_a1_msff_syrst_4x d0_4 (
1238.l1clk(l1clk),
1239.siclk(siclk),
1240.soclk(soclk),
1241.d(fdin[4]),
1242.si(sout[5]),
1243.so(sout[4]),
1244.reset(reset),
1245.q(dout[4])
1246);
1247cl_a1_msff_syrst_4x d0_5 (
1248.l1clk(l1clk),
1249.siclk(siclk),
1250.soclk(soclk),
1251.d(fdin[5]),
1252.si(sout[6]),
1253.so(sout[5]),
1254.reset(reset),
1255.q(dout[5])
1256);
1257cl_a1_msff_syrst_4x d0_6 (
1258.l1clk(l1clk),
1259.siclk(siclk),
1260.soclk(soclk),
1261.d(fdin[6]),
1262.si(sout[7]),
1263.so(sout[6]),
1264.reset(reset),
1265.q(dout[6])
1266);
1267cl_a1_msff_syrst_4x d0_7 (
1268.l1clk(l1clk),
1269.siclk(siclk),
1270.soclk(soclk),
1271.d(fdin[7]),
1272.si(scan_in),
1273.so(sout[7]),
1274.reset(reset),
1275.q(dout[7])
1276);
1277
1278
1279
1280
1281endmodule
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295// any PARAMS parms go into naming of macro
1296
1297module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_10 (
1298 din,
1299 reset,
1300 l1clk,
1301 scan_in,
1302 siclk,
1303 soclk,
1304 dout,
1305 scan_out);
1306wire [9:0] fdin;
1307wire [9:1] sout;
1308
1309 input [9:0] din;
1310 input reset;
1311 input l1clk;
1312 input scan_in;
1313
1314
1315 input siclk;
1316 input soclk;
1317
1318 output [9:0] dout;
1319 output scan_out;
1320assign fdin[9:0] = din[9:0] & {10 {reset}};
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338cl_a1_msff_syrst_4x d0_0 (
1339.l1clk(l1clk),
1340.siclk(siclk),
1341.soclk(soclk),
1342.d(fdin[0]),
1343.si(sout[1]),
1344.so(scan_out),
1345.reset(reset),
1346.q(dout[0])
1347);
1348cl_a1_msff_syrst_4x d0_1 (
1349.l1clk(l1clk),
1350.siclk(siclk),
1351.soclk(soclk),
1352.d(fdin[1]),
1353.si(sout[2]),
1354.so(sout[1]),
1355.reset(reset),
1356.q(dout[1])
1357);
1358cl_a1_msff_syrst_4x d0_2 (
1359.l1clk(l1clk),
1360.siclk(siclk),
1361.soclk(soclk),
1362.d(fdin[2]),
1363.si(sout[3]),
1364.so(sout[2]),
1365.reset(reset),
1366.q(dout[2])
1367);
1368cl_a1_msff_syrst_4x d0_3 (
1369.l1clk(l1clk),
1370.siclk(siclk),
1371.soclk(soclk),
1372.d(fdin[3]),
1373.si(sout[4]),
1374.so(sout[3]),
1375.reset(reset),
1376.q(dout[3])
1377);
1378cl_a1_msff_syrst_4x d0_4 (
1379.l1clk(l1clk),
1380.siclk(siclk),
1381.soclk(soclk),
1382.d(fdin[4]),
1383.si(sout[5]),
1384.so(sout[4]),
1385.reset(reset),
1386.q(dout[4])
1387);
1388cl_a1_msff_syrst_4x d0_5 (
1389.l1clk(l1clk),
1390.siclk(siclk),
1391.soclk(soclk),
1392.d(fdin[5]),
1393.si(sout[6]),
1394.so(sout[5]),
1395.reset(reset),
1396.q(dout[5])
1397);
1398cl_a1_msff_syrst_4x d0_6 (
1399.l1clk(l1clk),
1400.siclk(siclk),
1401.soclk(soclk),
1402.d(fdin[6]),
1403.si(sout[7]),
1404.so(sout[6]),
1405.reset(reset),
1406.q(dout[6])
1407);
1408cl_a1_msff_syrst_4x d0_7 (
1409.l1clk(l1clk),
1410.siclk(siclk),
1411.soclk(soclk),
1412.d(fdin[7]),
1413.si(sout[8]),
1414.so(sout[7]),
1415.reset(reset),
1416.q(dout[7])
1417);
1418cl_a1_msff_syrst_4x d0_8 (
1419.l1clk(l1clk),
1420.siclk(siclk),
1421.soclk(soclk),
1422.d(fdin[8]),
1423.si(sout[9]),
1424.so(sout[8]),
1425.reset(reset),
1426.q(dout[8])
1427);
1428cl_a1_msff_syrst_4x d0_9 (
1429.l1clk(l1clk),
1430.siclk(siclk),
1431.soclk(soclk),
1432.d(fdin[9]),
1433.si(scan_in),
1434.so(sout[9]),
1435.reset(reset),
1436.q(dout[9])
1437);
1438
1439
1440
1441
1442endmodule
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456// any PARAMS parms go into naming of macro
1457
1458module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_1 (
1459 din,
1460 reset,
1461 l1clk,
1462 scan_in,
1463 siclk,
1464 soclk,
1465 dout,
1466 scan_out);
1467wire [0:0] fdin;
1468
1469 input [0:0] din;
1470 input reset;
1471 input l1clk;
1472 input scan_in;
1473
1474
1475 input siclk;
1476 input soclk;
1477
1478 output [0:0] dout;
1479 output scan_out;
1480assign fdin[0:0] = din[0:0] & {1 {reset}};
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498cl_a1_msff_syrst_4x d0_0 (
1499.l1clk(l1clk),
1500.siclk(siclk),
1501.soclk(soclk),
1502.d(fdin[0]),
1503.si(scan_in),
1504.so(scan_out),
1505.reset(reset),
1506.q(dout[0])
1507);
1508
1509
1510
1511
1512endmodule
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526// any PARAMS parms go into naming of macro
1527
1528module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_2 (
1529 din,
1530 reset,
1531 l1clk,
1532 scan_in,
1533 siclk,
1534 soclk,
1535 dout,
1536 scan_out);
1537wire [1:0] fdin;
1538wire [1:1] sout;
1539
1540 input [1:0] din;
1541 input reset;
1542 input l1clk;
1543 input scan_in;
1544
1545
1546 input siclk;
1547 input soclk;
1548
1549 output [1:0] dout;
1550 output scan_out;
1551assign fdin[1:0] = din[1:0] & {2 {reset}};
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569cl_a1_msff_syrst_4x d0_0 (
1570.l1clk(l1clk),
1571.siclk(siclk),
1572.soclk(soclk),
1573.d(fdin[0]),
1574.si(sout[1]),
1575.so(scan_out),
1576.reset(reset),
1577.q(dout[0])
1578);
1579cl_a1_msff_syrst_4x d0_1 (
1580.l1clk(l1clk),
1581.siclk(siclk),
1582.soclk(soclk),
1583.d(fdin[1]),
1584.si(scan_in),
1585.so(sout[1]),
1586.reset(reset),
1587.q(dout[1])
1588);
1589
1590
1591
1592
1593endmodule
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607// any PARAMS parms go into naming of macro
1608
1609module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_25 (
1610 din,
1611 reset,
1612 l1clk,
1613 scan_in,
1614 siclk,
1615 soclk,
1616 dout,
1617 scan_out);
1618wire [24:0] fdin;
1619wire [24:1] sout;
1620
1621 input [24:0] din;
1622 input reset;
1623 input l1clk;
1624 input scan_in;
1625
1626
1627 input siclk;
1628 input soclk;
1629
1630 output [24:0] dout;
1631 output scan_out;
1632assign fdin[24:0] = din[24:0] & {25 {reset}};
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650cl_a1_msff_syrst_4x d0_0 (
1651.l1clk(l1clk),
1652.siclk(siclk),
1653.soclk(soclk),
1654.d(fdin[0]),
1655.si(sout[1]),
1656.so(scan_out),
1657.reset(reset),
1658.q(dout[0])
1659);
1660cl_a1_msff_syrst_4x d0_1 (
1661.l1clk(l1clk),
1662.siclk(siclk),
1663.soclk(soclk),
1664.d(fdin[1]),
1665.si(sout[2]),
1666.so(sout[1]),
1667.reset(reset),
1668.q(dout[1])
1669);
1670cl_a1_msff_syrst_4x d0_2 (
1671.l1clk(l1clk),
1672.siclk(siclk),
1673.soclk(soclk),
1674.d(fdin[2]),
1675.si(sout[3]),
1676.so(sout[2]),
1677.reset(reset),
1678.q(dout[2])
1679);
1680cl_a1_msff_syrst_4x d0_3 (
1681.l1clk(l1clk),
1682.siclk(siclk),
1683.soclk(soclk),
1684.d(fdin[3]),
1685.si(sout[4]),
1686.so(sout[3]),
1687.reset(reset),
1688.q(dout[3])
1689);
1690cl_a1_msff_syrst_4x d0_4 (
1691.l1clk(l1clk),
1692.siclk(siclk),
1693.soclk(soclk),
1694.d(fdin[4]),
1695.si(sout[5]),
1696.so(sout[4]),
1697.reset(reset),
1698.q(dout[4])
1699);
1700cl_a1_msff_syrst_4x d0_5 (
1701.l1clk(l1clk),
1702.siclk(siclk),
1703.soclk(soclk),
1704.d(fdin[5]),
1705.si(sout[6]),
1706.so(sout[5]),
1707.reset(reset),
1708.q(dout[5])
1709);
1710cl_a1_msff_syrst_4x d0_6 (
1711.l1clk(l1clk),
1712.siclk(siclk),
1713.soclk(soclk),
1714.d(fdin[6]),
1715.si(sout[7]),
1716.so(sout[6]),
1717.reset(reset),
1718.q(dout[6])
1719);
1720cl_a1_msff_syrst_4x d0_7 (
1721.l1clk(l1clk),
1722.siclk(siclk),
1723.soclk(soclk),
1724.d(fdin[7]),
1725.si(sout[8]),
1726.so(sout[7]),
1727.reset(reset),
1728.q(dout[7])
1729);
1730cl_a1_msff_syrst_4x d0_8 (
1731.l1clk(l1clk),
1732.siclk(siclk),
1733.soclk(soclk),
1734.d(fdin[8]),
1735.si(sout[9]),
1736.so(sout[8]),
1737.reset(reset),
1738.q(dout[8])
1739);
1740cl_a1_msff_syrst_4x d0_9 (
1741.l1clk(l1clk),
1742.siclk(siclk),
1743.soclk(soclk),
1744.d(fdin[9]),
1745.si(sout[10]),
1746.so(sout[9]),
1747.reset(reset),
1748.q(dout[9])
1749);
1750cl_a1_msff_syrst_4x d0_10 (
1751.l1clk(l1clk),
1752.siclk(siclk),
1753.soclk(soclk),
1754.d(fdin[10]),
1755.si(sout[11]),
1756.so(sout[10]),
1757.reset(reset),
1758.q(dout[10])
1759);
1760cl_a1_msff_syrst_4x d0_11 (
1761.l1clk(l1clk),
1762.siclk(siclk),
1763.soclk(soclk),
1764.d(fdin[11]),
1765.si(sout[12]),
1766.so(sout[11]),
1767.reset(reset),
1768.q(dout[11])
1769);
1770cl_a1_msff_syrst_4x d0_12 (
1771.l1clk(l1clk),
1772.siclk(siclk),
1773.soclk(soclk),
1774.d(fdin[12]),
1775.si(sout[13]),
1776.so(sout[12]),
1777.reset(reset),
1778.q(dout[12])
1779);
1780cl_a1_msff_syrst_4x d0_13 (
1781.l1clk(l1clk),
1782.siclk(siclk),
1783.soclk(soclk),
1784.d(fdin[13]),
1785.si(sout[14]),
1786.so(sout[13]),
1787.reset(reset),
1788.q(dout[13])
1789);
1790cl_a1_msff_syrst_4x d0_14 (
1791.l1clk(l1clk),
1792.siclk(siclk),
1793.soclk(soclk),
1794.d(fdin[14]),
1795.si(sout[15]),
1796.so(sout[14]),
1797.reset(reset),
1798.q(dout[14])
1799);
1800cl_a1_msff_syrst_4x d0_15 (
1801.l1clk(l1clk),
1802.siclk(siclk),
1803.soclk(soclk),
1804.d(fdin[15]),
1805.si(sout[16]),
1806.so(sout[15]),
1807.reset(reset),
1808.q(dout[15])
1809);
1810cl_a1_msff_syrst_4x d0_16 (
1811.l1clk(l1clk),
1812.siclk(siclk),
1813.soclk(soclk),
1814.d(fdin[16]),
1815.si(sout[17]),
1816.so(sout[16]),
1817.reset(reset),
1818.q(dout[16])
1819);
1820cl_a1_msff_syrst_4x d0_17 (
1821.l1clk(l1clk),
1822.siclk(siclk),
1823.soclk(soclk),
1824.d(fdin[17]),
1825.si(sout[18]),
1826.so(sout[17]),
1827.reset(reset),
1828.q(dout[17])
1829);
1830cl_a1_msff_syrst_4x d0_18 (
1831.l1clk(l1clk),
1832.siclk(siclk),
1833.soclk(soclk),
1834.d(fdin[18]),
1835.si(sout[19]),
1836.so(sout[18]),
1837.reset(reset),
1838.q(dout[18])
1839);
1840cl_a1_msff_syrst_4x d0_19 (
1841.l1clk(l1clk),
1842.siclk(siclk),
1843.soclk(soclk),
1844.d(fdin[19]),
1845.si(sout[20]),
1846.so(sout[19]),
1847.reset(reset),
1848.q(dout[19])
1849);
1850cl_a1_msff_syrst_4x d0_20 (
1851.l1clk(l1clk),
1852.siclk(siclk),
1853.soclk(soclk),
1854.d(fdin[20]),
1855.si(sout[21]),
1856.so(sout[20]),
1857.reset(reset),
1858.q(dout[20])
1859);
1860cl_a1_msff_syrst_4x d0_21 (
1861.l1clk(l1clk),
1862.siclk(siclk),
1863.soclk(soclk),
1864.d(fdin[21]),
1865.si(sout[22]),
1866.so(sout[21]),
1867.reset(reset),
1868.q(dout[21])
1869);
1870cl_a1_msff_syrst_4x d0_22 (
1871.l1clk(l1clk),
1872.siclk(siclk),
1873.soclk(soclk),
1874.d(fdin[22]),
1875.si(sout[23]),
1876.so(sout[22]),
1877.reset(reset),
1878.q(dout[22])
1879);
1880cl_a1_msff_syrst_4x d0_23 (
1881.l1clk(l1clk),
1882.siclk(siclk),
1883.soclk(soclk),
1884.d(fdin[23]),
1885.si(sout[24]),
1886.so(sout[23]),
1887.reset(reset),
1888.q(dout[23])
1889);
1890cl_a1_msff_syrst_4x d0_24 (
1891.l1clk(l1clk),
1892.siclk(siclk),
1893.soclk(soclk),
1894.d(fdin[24]),
1895.si(scan_in),
1896.so(sout[24]),
1897.reset(reset),
1898.q(dout[24])
1899);
1900
1901
1902
1903
1904endmodule
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918// any PARAMS parms go into naming of macro
1919
1920module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_3 (
1921 din,
1922 reset,
1923 l1clk,
1924 scan_in,
1925 siclk,
1926 soclk,
1927 dout,
1928 scan_out);
1929wire [2:0] fdin;
1930wire [2:1] sout;
1931
1932 input [2:0] din;
1933 input reset;
1934 input l1clk;
1935 input scan_in;
1936
1937
1938 input siclk;
1939 input soclk;
1940
1941 output [2:0] dout;
1942 output scan_out;
1943assign fdin[2:0] = din[2:0] & {3 {reset}};
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961cl_a1_msff_syrst_4x d0_0 (
1962.l1clk(l1clk),
1963.siclk(siclk),
1964.soclk(soclk),
1965.d(fdin[0]),
1966.si(sout[1]),
1967.so(scan_out),
1968.reset(reset),
1969.q(dout[0])
1970);
1971cl_a1_msff_syrst_4x d0_1 (
1972.l1clk(l1clk),
1973.siclk(siclk),
1974.soclk(soclk),
1975.d(fdin[1]),
1976.si(sout[2]),
1977.so(sout[1]),
1978.reset(reset),
1979.q(dout[1])
1980);
1981cl_a1_msff_syrst_4x d0_2 (
1982.l1clk(l1clk),
1983.siclk(siclk),
1984.soclk(soclk),
1985.d(fdin[2]),
1986.si(scan_in),
1987.so(sout[2]),
1988.reset(reset),
1989.q(dout[2])
1990);
1991
1992
1993
1994
1995endmodule
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009// any PARAMS parms go into naming of macro
2010
2011module niu_mb1_msff_ctl_macro__library_a1__reset_1__width_40 (
2012 din,
2013 reset,
2014 l1clk,
2015 scan_in,
2016 siclk,
2017 soclk,
2018 dout,
2019 scan_out);
2020wire [39:0] fdin;
2021wire [39:1] sout;
2022
2023 input [39:0] din;
2024 input reset;
2025 input l1clk;
2026 input scan_in;
2027
2028
2029 input siclk;
2030 input soclk;
2031
2032 output [39:0] dout;
2033 output scan_out;
2034assign fdin[39:0] = din[39:0] & {40 {reset}};
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052cl_a1_msff_syrst_4x d0_0 (
2053.l1clk(l1clk),
2054.siclk(siclk),
2055.soclk(soclk),
2056.d(fdin[0]),
2057.si(sout[1]),
2058.so(scan_out),
2059.reset(reset),
2060.q(dout[0])
2061);
2062cl_a1_msff_syrst_4x d0_1 (
2063.l1clk(l1clk),
2064.siclk(siclk),
2065.soclk(soclk),
2066.d(fdin[1]),
2067.si(sout[2]),
2068.so(sout[1]),
2069.reset(reset),
2070.q(dout[1])
2071);
2072cl_a1_msff_syrst_4x d0_2 (
2073.l1clk(l1clk),
2074.siclk(siclk),
2075.soclk(soclk),
2076.d(fdin[2]),
2077.si(sout[3]),
2078.so(sout[2]),
2079.reset(reset),
2080.q(dout[2])
2081);
2082cl_a1_msff_syrst_4x d0_3 (
2083.l1clk(l1clk),
2084.siclk(siclk),
2085.soclk(soclk),
2086.d(fdin[3]),
2087.si(sout[4]),
2088.so(sout[3]),
2089.reset(reset),
2090.q(dout[3])
2091);
2092cl_a1_msff_syrst_4x d0_4 (
2093.l1clk(l1clk),
2094.siclk(siclk),
2095.soclk(soclk),
2096.d(fdin[4]),
2097.si(sout[5]),
2098.so(sout[4]),
2099.reset(reset),
2100.q(dout[4])
2101);
2102cl_a1_msff_syrst_4x d0_5 (
2103.l1clk(l1clk),
2104.siclk(siclk),
2105.soclk(soclk),
2106.d(fdin[5]),
2107.si(sout[6]),
2108.so(sout[5]),
2109.reset(reset),
2110.q(dout[5])
2111);
2112cl_a1_msff_syrst_4x d0_6 (
2113.l1clk(l1clk),
2114.siclk(siclk),
2115.soclk(soclk),
2116.d(fdin[6]),
2117.si(sout[7]),
2118.so(sout[6]),
2119.reset(reset),
2120.q(dout[6])
2121);
2122cl_a1_msff_syrst_4x d0_7 (
2123.l1clk(l1clk),
2124.siclk(siclk),
2125.soclk(soclk),
2126.d(fdin[7]),
2127.si(sout[8]),
2128.so(sout[7]),
2129.reset(reset),
2130.q(dout[7])
2131);
2132cl_a1_msff_syrst_4x d0_8 (
2133.l1clk(l1clk),
2134.siclk(siclk),
2135.soclk(soclk),
2136.d(fdin[8]),
2137.si(sout[9]),
2138.so(sout[8]),
2139.reset(reset),
2140.q(dout[8])
2141);
2142cl_a1_msff_syrst_4x d0_9 (
2143.l1clk(l1clk),
2144.siclk(siclk),
2145.soclk(soclk),
2146.d(fdin[9]),
2147.si(sout[10]),
2148.so(sout[9]),
2149.reset(reset),
2150.q(dout[9])
2151);
2152cl_a1_msff_syrst_4x d0_10 (
2153.l1clk(l1clk),
2154.siclk(siclk),
2155.soclk(soclk),
2156.d(fdin[10]),
2157.si(sout[11]),
2158.so(sout[10]),
2159.reset(reset),
2160.q(dout[10])
2161);
2162cl_a1_msff_syrst_4x d0_11 (
2163.l1clk(l1clk),
2164.siclk(siclk),
2165.soclk(soclk),
2166.d(fdin[11]),
2167.si(sout[12]),
2168.so(sout[11]),
2169.reset(reset),
2170.q(dout[11])
2171);
2172cl_a1_msff_syrst_4x d0_12 (
2173.l1clk(l1clk),
2174.siclk(siclk),
2175.soclk(soclk),
2176.d(fdin[12]),
2177.si(sout[13]),
2178.so(sout[12]),
2179.reset(reset),
2180.q(dout[12])
2181);
2182cl_a1_msff_syrst_4x d0_13 (
2183.l1clk(l1clk),
2184.siclk(siclk),
2185.soclk(soclk),
2186.d(fdin[13]),
2187.si(sout[14]),
2188.so(sout[13]),
2189.reset(reset),
2190.q(dout[13])
2191);
2192cl_a1_msff_syrst_4x d0_14 (
2193.l1clk(l1clk),
2194.siclk(siclk),
2195.soclk(soclk),
2196.d(fdin[14]),
2197.si(sout[15]),
2198.so(sout[14]),
2199.reset(reset),
2200.q(dout[14])
2201);
2202cl_a1_msff_syrst_4x d0_15 (
2203.l1clk(l1clk),
2204.siclk(siclk),
2205.soclk(soclk),
2206.d(fdin[15]),
2207.si(sout[16]),
2208.so(sout[15]),
2209.reset(reset),
2210.q(dout[15])
2211);
2212cl_a1_msff_syrst_4x d0_16 (
2213.l1clk(l1clk),
2214.siclk(siclk),
2215.soclk(soclk),
2216.d(fdin[16]),
2217.si(sout[17]),
2218.so(sout[16]),
2219.reset(reset),
2220.q(dout[16])
2221);
2222cl_a1_msff_syrst_4x d0_17 (
2223.l1clk(l1clk),
2224.siclk(siclk),
2225.soclk(soclk),
2226.d(fdin[17]),
2227.si(sout[18]),
2228.so(sout[17]),
2229.reset(reset),
2230.q(dout[17])
2231);
2232cl_a1_msff_syrst_4x d0_18 (
2233.l1clk(l1clk),
2234.siclk(siclk),
2235.soclk(soclk),
2236.d(fdin[18]),
2237.si(sout[19]),
2238.so(sout[18]),
2239.reset(reset),
2240.q(dout[18])
2241);
2242cl_a1_msff_syrst_4x d0_19 (
2243.l1clk(l1clk),
2244.siclk(siclk),
2245.soclk(soclk),
2246.d(fdin[19]),
2247.si(sout[20]),
2248.so(sout[19]),
2249.reset(reset),
2250.q(dout[19])
2251);
2252cl_a1_msff_syrst_4x d0_20 (
2253.l1clk(l1clk),
2254.siclk(siclk),
2255.soclk(soclk),
2256.d(fdin[20]),
2257.si(sout[21]),
2258.so(sout[20]),
2259.reset(reset),
2260.q(dout[20])
2261);
2262cl_a1_msff_syrst_4x d0_21 (
2263.l1clk(l1clk),
2264.siclk(siclk),
2265.soclk(soclk),
2266.d(fdin[21]),
2267.si(sout[22]),
2268.so(sout[21]),
2269.reset(reset),
2270.q(dout[21])
2271);
2272cl_a1_msff_syrst_4x d0_22 (
2273.l1clk(l1clk),
2274.siclk(siclk),
2275.soclk(soclk),
2276.d(fdin[22]),
2277.si(sout[23]),
2278.so(sout[22]),
2279.reset(reset),
2280.q(dout[22])
2281);
2282cl_a1_msff_syrst_4x d0_23 (
2283.l1clk(l1clk),
2284.siclk(siclk),
2285.soclk(soclk),
2286.d(fdin[23]),
2287.si(sout[24]),
2288.so(sout[23]),
2289.reset(reset),
2290.q(dout[23])
2291);
2292cl_a1_msff_syrst_4x d0_24 (
2293.l1clk(l1clk),
2294.siclk(siclk),
2295.soclk(soclk),
2296.d(fdin[24]),
2297.si(sout[25]),
2298.so(sout[24]),
2299.reset(reset),
2300.q(dout[24])
2301);
2302cl_a1_msff_syrst_4x d0_25 (
2303.l1clk(l1clk),
2304.siclk(siclk),
2305.soclk(soclk),
2306.d(fdin[25]),
2307.si(sout[26]),
2308.so(sout[25]),
2309.reset(reset),
2310.q(dout[25])
2311);
2312cl_a1_msff_syrst_4x d0_26 (
2313.l1clk(l1clk),
2314.siclk(siclk),
2315.soclk(soclk),
2316.d(fdin[26]),
2317.si(sout[27]),
2318.so(sout[26]),
2319.reset(reset),
2320.q(dout[26])
2321);
2322cl_a1_msff_syrst_4x d0_27 (
2323.l1clk(l1clk),
2324.siclk(siclk),
2325.soclk(soclk),
2326.d(fdin[27]),
2327.si(sout[28]),
2328.so(sout[27]),
2329.reset(reset),
2330.q(dout[27])
2331);
2332cl_a1_msff_syrst_4x d0_28 (
2333.l1clk(l1clk),
2334.siclk(siclk),
2335.soclk(soclk),
2336.d(fdin[28]),
2337.si(sout[29]),
2338.so(sout[28]),
2339.reset(reset),
2340.q(dout[28])
2341);
2342cl_a1_msff_syrst_4x d0_29 (
2343.l1clk(l1clk),
2344.siclk(siclk),
2345.soclk(soclk),
2346.d(fdin[29]),
2347.si(sout[30]),
2348.so(sout[29]),
2349.reset(reset),
2350.q(dout[29])
2351);
2352cl_a1_msff_syrst_4x d0_30 (
2353.l1clk(l1clk),
2354.siclk(siclk),
2355.soclk(soclk),
2356.d(fdin[30]),
2357.si(sout[31]),
2358.so(sout[30]),
2359.reset(reset),
2360.q(dout[30])
2361);
2362cl_a1_msff_syrst_4x d0_31 (
2363.l1clk(l1clk),
2364.siclk(siclk),
2365.soclk(soclk),
2366.d(fdin[31]),
2367.si(sout[32]),
2368.so(sout[31]),
2369.reset(reset),
2370.q(dout[31])
2371);
2372cl_a1_msff_syrst_4x d0_32 (
2373.l1clk(l1clk),
2374.siclk(siclk),
2375.soclk(soclk),
2376.d(fdin[32]),
2377.si(sout[33]),
2378.so(sout[32]),
2379.reset(reset),
2380.q(dout[32])
2381);
2382cl_a1_msff_syrst_4x d0_33 (
2383.l1clk(l1clk),
2384.siclk(siclk),
2385.soclk(soclk),
2386.d(fdin[33]),
2387.si(sout[34]),
2388.so(sout[33]),
2389.reset(reset),
2390.q(dout[33])
2391);
2392cl_a1_msff_syrst_4x d0_34 (
2393.l1clk(l1clk),
2394.siclk(siclk),
2395.soclk(soclk),
2396.d(fdin[34]),
2397.si(sout[35]),
2398.so(sout[34]),
2399.reset(reset),
2400.q(dout[34])
2401);
2402cl_a1_msff_syrst_4x d0_35 (
2403.l1clk(l1clk),
2404.siclk(siclk),
2405.soclk(soclk),
2406.d(fdin[35]),
2407.si(sout[36]),
2408.so(sout[35]),
2409.reset(reset),
2410.q(dout[35])
2411);
2412cl_a1_msff_syrst_4x d0_36 (
2413.l1clk(l1clk),
2414.siclk(siclk),
2415.soclk(soclk),
2416.d(fdin[36]),
2417.si(sout[37]),
2418.so(sout[36]),
2419.reset(reset),
2420.q(dout[36])
2421);
2422cl_a1_msff_syrst_4x d0_37 (
2423.l1clk(l1clk),
2424.siclk(siclk),
2425.soclk(soclk),
2426.d(fdin[37]),
2427.si(sout[38]),
2428.so(sout[37]),
2429.reset(reset),
2430.q(dout[37])
2431);
2432cl_a1_msff_syrst_4x d0_38 (
2433.l1clk(l1clk),
2434.siclk(siclk),
2435.soclk(soclk),
2436.d(fdin[38]),
2437.si(sout[39]),
2438.so(sout[38]),
2439.reset(reset),
2440.q(dout[38])
2441);
2442cl_a1_msff_syrst_4x d0_39 (
2443.l1clk(l1clk),
2444.siclk(siclk),
2445.soclk(soclk),
2446.d(fdin[39]),
2447.si(scan_in),
2448.so(sout[39]),
2449.reset(reset),
2450.q(dout[39])
2451);
2452
2453
2454
2455
2456endmodule
2457
2458
2459
2460
2461
2462
2463
2464