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