Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / l2t / rtl / l2t_vuad_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: l2t_vuad_ctl.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 ============================================
35module l2t_vuad_ctl (
36 l2clk,
37 tcu_pce_ov,
38 tcu_aclk,
39 tcu_bclk,
40 tcu_scan_en,
41 tcu_clk_stop,
42 scan_in,
43 scan_out,
44 rd_addr1,
45 rd_addr2,
46 rd_addr_sel,
47 wr_addr,
48 wr_en0,
49 wr_en1,
50 array_rd_en,
51 bist_vuad_idx_c3,
52 evctag_vuad_idx_c3,
53 bist_wr_vd_c3,
54 arb_decdp_wr64_inst_c2,
55 arb_acc_vd_c2,
56 arb_acc_ua_c2,
57 arbadr_idx_c1c2comp_c1_n,
58 arbadr_idx_c1c3comp_c1_n,
59 arbadr_idx_c1c4comp_c1_n,
60 arbadr_idx_c1c5comp_c1_n,
61 arb_decdp_inst_int_c1,
62 csr_l2_bypass_mode_on,
63 arb_inst_diag_c1,
64 bist_vuad_wr_en,
65 arb_inst_vld_c2,
66 arb_inst_l2vuad_vld_c3,
67 arb_decdp_st_inst_c3,
68 arbdec_arbdp_inst_fb_c2,
69 vuadpm_vd_ue_c4,
70 vuadpm_ua_ue_c4,
71 arbdec_arbdp_inst_way_c2,
72 arb_arbdp_vuadctl_pst_no_ctrue_c2,
73 arb_decdp_cas1_inst_c2,
74 arb_arbdp_pst_with_ctrue_c2,
75 arb_decdp_cas2_inst_c2,
76 arbdec_arbdp_inst_mb_c2,
77 arb_vuadctl_no_bypass_px2,
78 vuaddp_vuad_sel_c2,
79 vuaddp_vuad_sel_c2_d1,
80 vuaddp_vuad_sel_c4,
81 vuaddp_vuad_sel_rd,
82 vuaddp_vuad_tagd_sel_c2_d1,
83 vuaddp_wr64_inst_c3,
84 vuaddp_alloc_set_cond_c3,
85 vuaddp_alloc_rst_cond_c3,
86 vuaddp_vuad_error_c8,
87 vuaddp_fill_way_c3,
88 vuaddp_bistordiag_wr_vd_c4,
89 vuaddp_bistordiag_wr_ua_c4,
90 vuaddp_sel_ua_wr_data_byp,
91 vuaddp_sel_vd_wr_data_byp,
92 vuaddp_sel_diag0_data_wr_c3,
93 vuaddp_sel_diag1_data_wr_c3,
94 vuaddp_vuad_array_wr_en0_c4,
95 vuaddp_vuad_array_wr_en1_c4,
96 vuaddp_vuad_idx_c4,
97 vuad_rd_addr1_r0,
98 vuad_rd_addr2_r0,
99 vuad_rd_addr_sel_r0,
100 vuad_wr_addr_r0,
101 vuad_word_en_r0,
102 vuad_wr_en_r0c0,
103 vuad_wr_en_r0c1,
104 vuad_mux1_h_sel_r0,
105 vuad_mux1_l_sel_r0,
106 vuad_mux2_sel_r0,
107 vuad_rd_en_r0,
108 vuad_rd_addr1_r1,
109 vuad_rd_addr2_r1,
110 vuad_rd_addr_sel_r1,
111 vuad_wr_addr_r1,
112 vuad_word_en_r1,
113 vuad_wr_en_r1c0,
114 vuad_wr_en_r1c1,
115 vuad_rd_en_r1,
116 vuad_rd_addr1_r2,
117 vuad_rd_addr2_r2,
118 vuad_rd_addr_sel_r2,
119 vuad_wr_addr_r2,
120 vuad_word_en_r2,
121 vuad_wr_en_r2c0,
122 vuad_wr_en_r2c1,
123 vuad_mux1_h_sel_r2,
124 vuad_mux1_l_sel_r2,
125 vuad_mux2_sel_r2,
126 vuad_rd_en_r2,
127 vuad_rd_addr1_r3,
128 vuad_rd_addr2_r3,
129 vuad_rd_addr_sel_r3,
130 vuad_wr_addr_r3,
131 vuad_word_en_r3,
132 vuad_wr_en_r3c0,
133 vuad_wr_en_r3c1,
134 vuad_rd_en_r3,
135 vuad_mux_sel,
136 mbist_run,
137 vuad_usaloc_mux_used_and_alloc_comb_sel0,
138 vuad_usaloc_mux_used_and_alloc_comb_sel1,
139 vuad_usaloc_mux_used_and_alloc_comb_sel2,
140 vuad_usaloc_mux_used_and_alloc_comb_sel3,
141 vuad_usaloc_mux_used_and_alloc_comb_sel4,
142 vuad_usaloc_mux_used_and_alloc_comb_sel5,
143 mux_valid_dirty_c1_sel0,
144 mux_valid_dirty_c1_sel1,
145 mux_valid_dirty_c1_sel2);
146wire [4:0] wr_addr_entry;
147wire [3:0] wr_word_en;
148wire [3:0] wr_en;
149wire rd_addr_sel_n;
150wire [1:0] addr1to0_px2;
151wire ff_addr1to0_c1_scanin;
152wire ff_addr1to0_c1_scanout;
153wire l1clk;
154wire [1:0] addr1to0_c1;
155wire addr8_px2;
156wire ff_addr8_c1_scanin;
157wire ff_addr8_c1_scanout;
158wire addr8_c1;
159wire addr7_px2;
160wire ff_addr7_c1_scanin;
161wire ff_addr7_c1_scanout;
162wire addr7_c1;
163wire pce_ov;
164wire stop;
165wire siclk;
166wire soclk;
167wire se;
168wire spares_scanin;
169wire spares_scanout;
170wire ff_vuadctl_no_bypass_c1_scanin;
171wire ff_vuadctl_no_bypass_c1_scanout;
172wire vuaddp_vuad_sel_c2orc3;
173wire vuaddp_vuad_sel_rd_c2;
174wire vuadctl_no_bypass_c1_1;
175wire ff_vuadctl_no_bypass_c1_1_scanin;
176wire ff_vuadctl_no_bypass_c1_1_scanout;
177wire ff_vuaddp_vuad_sel_c2_scanin;
178wire ff_vuaddp_vuad_sel_c2_scanout;
179wire ff_vuaddp_vuad_sel_c2_d1_scanin;
180wire ff_vuaddp_vuad_sel_c2_d1_scanout;
181wire ff_vuad_sel_wr_d1_scanin;
182wire ff_vuad_sel_wr_d1_scanout;
183wire vuad_sel_wr_d1;
184wire ff_vuad_tagd_sel_c2_d1_scanin;
185wire ff_vuad_tagd_sel_c2_d1_scanout;
186wire ff_wr64_inst_c3_scanin;
187wire ff_wr64_inst_c3_scanout;
188wire ff_arb_acc_vd_c3_scanin;
189wire ff_arb_acc_vd_c3_scanout;
190wire ff_arb_acc_ua_c3_scanin;
191wire ff_arb_acc_ua_c3_scanout;
192wire ff_inst_vld_c3_scanin;
193wire ff_inst_vld_c3_scanout;
194wire ff_inst_vld_c4_scanin;
195wire ff_inst_vld_c4_scanout;
196wire ff_inst_vld_c5_scanin;
197wire ff_inst_vld_c5_scanout;
198wire ff_arb_inst_diag_c2_scanin;
199wire ff_arb_inst_diag_c2_scanout;
200wire ff_arb_inst_diag_c3_scanin;
201wire ff_arb_inst_diag_c3_scanout;
202wire ff_arb_inst_diag_c4_scanin;
203wire ff_arb_inst_diag_c4_scanout;
204wire mbist_run_r1;
205wire ff_mux_idx_c4_scanin;
206wire ff_mux_idx_c4_scanout;
207wire ff_l2_bypass_mode_on_d1_scanin;
208wire ff_l2_bypass_mode_on_d1_scanout;
209wire ff_bistordiag_wr_vd_c4_scanin;
210wire ff_bistordiag_wr_vd_c4_scanout;
211wire ff_bistordiag_wr_ua_c4_scanin;
212wire ff_bistordiag_wr_ua_c4_scanout;
213wire ff_vuad_array_wr_en0_c4_scanin;
214wire ff_vuad_array_wr_en0_c4_scanout;
215wire ff_vuad_array_wr_en1_c4_scanin;
216wire ff_vuad_array_wr_en1_c4_scanout;
217wire ff_vuad_array_wr_en0_c5_scanin;
218wire ff_vuad_array_wr_en0_c5_scanout;
219wire ff_vuad_array_wr_en1_c5_scanin;
220wire ff_vuad_array_wr_en1_c5_scanout;
221wire ff_vuad_array_wr_en0_c52_scanin;
222wire ff_vuad_array_wr_en0_c52_scanout;
223wire ff_vuad_array_wr_en1_c52_scanin;
224wire ff_vuad_array_wr_en1_c52_scanout;
225wire ff_inst_int_c2_scanin;
226wire ff_inst_int_c2_scanout;
227wire ff_inst_int_c3_scanin;
228wire ff_inst_int_c3_scanout;
229wire ff_inst_int_c4_scanin;
230wire ff_inst_int_c4_scanout;
231wire ff_inst_int_c5_scanin;
232wire ff_inst_int_c5_scanout;
233wire ff_vuad_error_c5_scanin;
234wire ff_vuad_error_c5_scanout;
235wire ff_vuad_error_c52_scanin;
236wire ff_vuad_error_c52_scanout;
237wire ff_vuad_error_c6_scanin;
238wire ff_vuad_error_c6_scanout;
239wire ff_vuad_error_c7_scanin;
240wire ff_vuad_error_c7_scanout;
241wire ff_vuad_error_c8_scanin;
242wire ff_vuad_error_c8_scanout;
243wire ff_fill_way_c3_scanin;
244wire ff_fill_way_c3_scanout;
245wire ff_alloc_set_cond_c3_scanin;
246wire ff_alloc_set_cond_c3_scanout;
247wire ff_alloc_rst_cond_c3_scanin;
248wire ff_alloc_rst_cond_c3_scanout;
249
250
251input l2clk;
252input tcu_pce_ov;
253input tcu_aclk;
254input tcu_bclk;
255input tcu_scan_en;
256// l2t_vuad_ctl
257input tcu_clk_stop;
258
259input scan_in;
260output scan_out;
261
262//////////////////////////////////////////////////////////////
263// l2t_vuad_ctl
264//////////////////////////////////////////////////////////////
265input [8:0] rd_addr1;
266input [8:0] rd_addr2;
267input rd_addr_sel;
268input [8:0] wr_addr;
269input wr_en0;
270input wr_en1;
271input array_rd_en;
272//
273
274
275input [8:0] bist_vuad_idx_c3 ;
276input [8:0] evctag_vuad_idx_c3;
277input bist_wr_vd_c3 ;
278
279//input [15:0] tag_hit_way_vld_c3;
280//input [15:0] tagdp_lru_way_sel_c3;
281//input tag_st_to_data_array_c3;
282input arb_decdp_wr64_inst_c2;
283
284input arb_acc_vd_c2; // Top // diagnostic access only
285input arb_acc_ua_c2; // Top // diagnostic access only
286
287// C1 outputs
288input arbadr_idx_c1c2comp_c1_n ; // from arbaddr Top
289input arbadr_idx_c1c3comp_c1_n ; // from arbaddr Top
290input arbadr_idx_c1c4comp_c1_n ; // from arbaddr Top
291input arbadr_idx_c1c5comp_c1_n ; // from arbaddr. POST_3.0 Top
292
293input arb_decdp_inst_int_c1; // Top // int 5.0 changes
294input csr_l2_bypass_mode_on; // Top
295input arb_inst_diag_c1; // Top
296input bist_vuad_wr_en; // Top // This is a C3 signal.
297input arb_inst_vld_c2; // Top
298input arb_inst_l2vuad_vld_c3; // Top
299input arb_decdp_st_inst_c3; // Top
300input arbdec_arbdp_inst_fb_c2; // Top
301
302input vuadpm_vd_ue_c4;
303input vuadpm_ua_ue_c4;
304//input arb_vuad_ce_err_c3;
305
306input [3:0] arbdec_arbdp_inst_way_c2;
307
308input arb_arbdp_vuadctl_pst_no_ctrue_c2; // Top
309input arb_decdp_cas1_inst_c2; // Top
310input arb_arbdp_pst_with_ctrue_c2; // Top
311input arb_decdp_cas2_inst_c2; // Top
312input arbdec_arbdp_inst_mb_c2; // Top
313
314input arb_vuadctl_no_bypass_px2; // Top
315
316
317output vuaddp_vuad_sel_c2; // Bottom
318output vuaddp_vuad_sel_c2_d1; // Bottom
319output vuaddp_vuad_sel_c4; // Bottom
320output vuaddp_vuad_sel_rd; // Bottom
321output vuaddp_vuad_tagd_sel_c2_d1; // Top
322
323//output vuaddp_st_to_data_array_c3; // Bottom
324output vuaddp_wr64_inst_c3 ; // Bottom
325
326
327output vuaddp_alloc_set_cond_c3; // Bottom
328output vuaddp_alloc_rst_cond_c3; // Bottom
329
330output vuaddp_vuad_error_c8; // Bottom
331
332//output [15:0] vuaddp_hit_wayvld_c3; // Bottom
333output [15:0] vuaddp_fill_way_c3; // Bottom
334//output [15:0] vuaddp_lru_way_c3; // Bottom
335
336output vuaddp_bistordiag_wr_vd_c4 ; // Bottom // bist or diag access
337output vuaddp_bistordiag_wr_ua_c4 ; // Bottom // bist or diag access
338
339output vuaddp_sel_ua_wr_data_byp; // Bottom
340output vuaddp_sel_vd_wr_data_byp; // Bottom
341
342output vuaddp_sel_diag0_data_wr_c3; // Bottom sel between diagnostic and bist data
343output vuaddp_sel_diag1_data_wr_c3; // Bottom sel between diagnostic and bist data
344
345output vuaddp_vuad_array_wr_en0_c4; // Bottom // Change to C4
346output vuaddp_vuad_array_wr_en1_c4; // Bottom // Change to C4
347
348output [8:0] vuaddp_vuad_idx_c4; // NEW PIN
349
350// from l2t_vuad_ctl
351output [4:0] vuad_rd_addr1_r0;
352output [4:0] vuad_rd_addr2_r0;
353output vuad_rd_addr_sel_r0;
354output [4:0] vuad_wr_addr_r0; // address bits 6:2
355output [3:0] vuad_word_en_r0; // decoded address bits 1:0
356output vuad_wr_en_r0c0; // decoded address bits 8:7
357output vuad_wr_en_r0c1; // decoded address bits 8:7
358output [3:0] vuad_mux1_h_sel_r0;
359output [3:0] vuad_mux1_l_sel_r0;
360output vuad_mux2_sel_r0; //int 5.0 change
361output vuad_rd_en_r0;
362
363output [4:0] vuad_rd_addr1_r1;
364output [4:0] vuad_rd_addr2_r1;
365output vuad_rd_addr_sel_r1;
366output [4:0] vuad_wr_addr_r1; // address bits 6:2
367output [3:0] vuad_word_en_r1; // decoded address bits 1:0
368output vuad_wr_en_r1c0; // decoded address bits 8:7
369output vuad_wr_en_r1c1; // decoded address bits 8:7
370output vuad_rd_en_r1;
371
372output [4:0] vuad_rd_addr1_r2;
373output [4:0] vuad_rd_addr2_r2;
374output vuad_rd_addr_sel_r2;
375output [4:0] vuad_wr_addr_r2; // address bits 6:2
376output [3:0] vuad_word_en_r2; // decoded address bits 1:0
377output vuad_wr_en_r2c0; // decoded address bits 8:7
378output vuad_wr_en_r2c1; // decoded address bits 8:7
379output [3:0] vuad_mux1_h_sel_r2;
380output [3:0] vuad_mux1_l_sel_r2;
381output vuad_mux2_sel_r2; // int 5.0 changes
382output vuad_rd_en_r2;
383
384output [4:0] vuad_rd_addr1_r3;
385output [4:0] vuad_rd_addr2_r3;
386output vuad_rd_addr_sel_r3;
387output [4:0] vuad_wr_addr_r3; // address bits 6:2
388output [3:0] vuad_word_en_r3; // decoded address bits 1:0
389output vuad_wr_en_r3c0; // decoded address bits 8:7
390output vuad_wr_en_r3c1; // decoded address bits 8:7
391output vuad_rd_en_r3;
392
393output [1:0] vuad_mux_sel; // middle mux select.
394//
395
396input mbist_run;
397
398
399//
400//
401//
402
403
404output vuad_usaloc_mux_used_and_alloc_comb_sel0;
405output vuad_usaloc_mux_used_and_alloc_comb_sel1;
406output vuad_usaloc_mux_used_and_alloc_comb_sel2;
407output vuad_usaloc_mux_used_and_alloc_comb_sel3;
408output vuad_usaloc_mux_used_and_alloc_comb_sel4;
409output vuad_usaloc_mux_used_and_alloc_comb_sel5;
410
411
412output mux_valid_dirty_c1_sel0;
413output mux_valid_dirty_c1_sel1;
414output mux_valid_dirty_c1_sel2;
415
416
417
418
419
420wire vuad_array_wr_en0_c3, vuad_array_wr_en0_c5, vuad_array_wr_en0_c52;
421 // BS 03/11/04 extra cycle for mem access
422wire vuad_array_wr_en1_c3, vuad_array_wr_en1_c5, vuad_array_wr_en1_c52;
423 // BS 03/11/04 extra cycle for mem access
424wire vuad_sel_wr, vuad_sel_c4orc5;
425
426wire inst_vld_c3;
427wire inst_vld_c4;
428wire inst_vld_c5;
429
430wire arb_inst_diag_c2;
431wire arb_inst_diag_c3;
432wire arb_inst_diag_c4;
433
434wire l2_bypass_mode_on_d1;
435wire wr_disable_c3;
436wire inst_int_c2; // int 5.0 changes
437wire inst_int_c3; // int 5.0 changes
438wire inst_int_c4; // int 5.0 changes
439wire inst_int_c5; // int 5.0 changes
440wire vuad_error_c4, vuad_error_c5, vuad_error_c52; // BS 03/11/04 extra cycle for mem access
441wire vuad_error_c6, vuad_error_c7;
442
443
444
445wire alloc_set_cond_c2;
446wire alloc_rst_cond_c2;
447wire fill_inst_vld_c2;
448wire [3:0] dec_lo_fill_way_c2;
449wire [3:0] dec_hi_fill_way_c2;
450wire [15:0] fill_way_c2;
451
452wire acc_vd_c3;
453wire acc_ua_c3;
454wire bistordiag_wr_vd_c3, bistordiag_wr_ua_c3 ;
455wire [8:0] vuad_acc_idx_c3;
456wire vuadctl_no_bypass_c1;
457
458
459//////////////////////////////////////////////////
460// l2t_vuad_ctl
461//////////////////////////////////////////////////
462assign wr_addr_entry = wr_addr[6:2] ;
463assign wr_word_en[0] = ~wr_addr[1] & ~wr_addr[0] ;
464assign wr_word_en[1] = ~wr_addr[1] & wr_addr[0] ;
465assign wr_word_en[2] = wr_addr[1] & ~wr_addr[0] ;
466assign wr_word_en[3] = wr_addr[1] & wr_addr[0] ;
467assign wr_en[0] = ~wr_addr[8] & ~wr_addr[7] ;
468assign wr_en[1] = ~wr_addr[8] & wr_addr[7] ;
469assign wr_en[2] = wr_addr[8] & ~wr_addr[7] ;
470assign wr_en[3] = wr_addr[8] & wr_addr[7] ;
471
472assign rd_addr_sel_n = ~rd_addr_sel;
473
474// LSb 1:0
475l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_2 mux_addr1to0_px2
476 (.dout (addr1to0_px2[1:0] ) ,
477 .din0(rd_addr1[1:0]),
478 .din1(rd_addr2[1:0]),
479 .sel0(rd_addr_sel),
480 .sel1(rd_addr_sel_n));
481
482l2t_vuad_ctl_msff_ctl_macro__width_2 ff_addr1to0_c1 // int 5.0 change
483 (.din(addr1to0_px2[1:0]),
484 .scan_in(ff_addr1to0_c1_scanin),
485 .scan_out(ff_addr1to0_c1_scanout),
486 .l1clk(l1clk),
487 .dout(addr1to0_c1[1:0]),
488 .siclk(siclk),
489 .soclk(soclk)
490 );
491
492// LSb 8
493l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 mux_addr8_px2
494 (.dout (addr8_px2) ,
495 .din0(rd_addr1[8]),
496 .din1(rd_addr2[8]),
497 .sel0(rd_addr_sel),
498 .sel1(rd_addr_sel_n));
499
500l2t_vuad_ctl_msff_ctl_macro__width_1 ff_addr8_c1
501 (.din(addr8_px2),
502 .scan_in(ff_addr8_c1_scanin),
503 .scan_out(ff_addr8_c1_scanout),
504 .l1clk(l1clk),
505 .dout(addr8_c1),
506 .siclk(siclk),
507 .soclk(soclk)
508);
509
510
511// Lsb 7
512l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 mux_addr7_px2
513 (.dout (addr7_px2) ,
514 .din0(rd_addr1[7]),
515 .din1(rd_addr2[7]),
516 .sel0(rd_addr_sel),
517 .sel1(rd_addr_sel_n));
518
519l2t_vuad_ctl_msff_ctl_macro__width_1 ff_addr7_c1 // int 5.0 change
520 (.din(addr7_px2),
521 .scan_in(ff_addr7_c1_scanin),
522 .scan_out(ff_addr7_c1_scanout),
523 .l1clk(l1clk),
524 .dout(addr7_c1),
525 .siclk(siclk),
526 .soclk(soclk)
527);
528
529
530
531
532// Mux2 of the read address.
533// Buffer appropriately to get the following
534// signals.
535
536
537// XY = 75 X 50
538assign vuad_rd_addr1_r0 = rd_addr1[6:2];
539assign vuad_rd_addr2_r0 = rd_addr2[6:2];
540assign vuad_rd_addr_sel_r0 = rd_addr_sel ;
541
542assign vuad_wr_addr_r0[4:0] = wr_addr_entry[4:0] ;
543assign vuad_word_en_r0 = wr_word_en ;
544assign vuad_wr_en_r0c0 = wr_en[0] & wr_en0 ;
545assign vuad_wr_en_r0c1 = wr_en[0] & wr_en1 ;
546
547assign vuad_mux1_h_sel_r0[0] = ~addr1to0_c1[1] & ~addr1to0_c1[0] ;
548assign vuad_mux1_h_sel_r0[1] = ~addr1to0_c1[1] & addr1to0_c1[0] ;
549assign vuad_mux1_h_sel_r0[2] = addr1to0_c1[1] & ~addr1to0_c1[0] ;
550assign vuad_mux1_h_sel_r0[3] = addr1to0_c1[1] & addr1to0_c1[0] ;
551
552assign vuad_mux1_l_sel_r0 = vuad_mux1_h_sel_r0 ;
553assign vuad_mux2_sel_r0= addr7_c1; // int 5.0 change
554assign vuad_rd_en_r0 = ~addr7_px2 & array_rd_en;
555
556// XY = 75 X 50
557assign vuad_rd_addr1_r1 = rd_addr1[6:2];
558assign vuad_rd_addr2_r1 = rd_addr2[6:2];
559assign vuad_rd_addr_sel_r1 = rd_addr_sel ;
560assign vuad_wr_addr_r1[4:0] = wr_addr_entry[4:0] ;
561assign vuad_word_en_r1 = wr_word_en ;
562assign vuad_wr_en_r1c0 = wr_en[1] & wr_en0 ;
563assign vuad_wr_en_r1c1 = wr_en[1] & wr_en1 ;
564assign vuad_rd_en_r1 = addr7_px2 & array_rd_en ;
565
566// XY = 75 X 50
567assign vuad_rd_addr1_r2 = rd_addr1[6:2];
568assign vuad_rd_addr2_r2 = rd_addr2[6:2];
569assign vuad_rd_addr_sel_r2 = rd_addr_sel ;
570assign vuad_wr_addr_r2[4:0] = wr_addr_entry[4:0] ;
571assign vuad_word_en_r2 = wr_word_en ;
572assign vuad_wr_en_r2c0 = wr_en[2] & wr_en0 ;
573assign vuad_wr_en_r2c1 = wr_en[2] & wr_en1 ;
574
575assign vuad_mux1_h_sel_r2[0] = ~addr1to0_c1[1] & ~addr1to0_c1[0] ;
576assign vuad_mux1_h_sel_r2[1] = ~addr1to0_c1[1] & addr1to0_c1[0] ;
577assign vuad_mux1_h_sel_r2[2] = addr1to0_c1[1] & ~addr1to0_c1[0] ;
578assign vuad_mux1_h_sel_r2[3] = addr1to0_c1[1] & addr1to0_c1[0] ;
579assign vuad_mux1_l_sel_r2 = vuad_mux1_h_sel_r2 ;
580assign vuad_mux2_sel_r2 = addr7_c1;
581assign vuad_rd_en_r2 = ~addr7_px2 & array_rd_en;
582
583
584// XY = 75 X 50
585assign vuad_rd_addr1_r3 = rd_addr1[6:2];
586assign vuad_rd_addr2_r3 = rd_addr2[6:2];
587assign vuad_rd_addr_sel_r3 = rd_addr_sel ;
588assign vuad_wr_addr_r3[4:0] = wr_addr_entry[4:0] ;
589assign vuad_word_en_r3 = wr_word_en ;
590assign vuad_wr_en_r3c0 = wr_en[3] & wr_en0 ;
591assign vuad_wr_en_r3c1 = wr_en[3] & wr_en1 ;
592assign vuad_rd_en_r3 = addr7_px2 & array_rd_en;
593
594// Middle Io = 75 X 50
595
596assign vuad_mux_sel[0] = ~addr8_c1 ;
597assign vuad_mux_sel[1] = addr8_c1 ;
598
599//////////////////////////////////////////////////
600// L1 clk header
601//////////////////////////////////////////////////
602assign pce_ov = tcu_pce_ov;
603//assign stop = 1'b0;
604assign stop = tcu_clk_stop;
605assign siclk = tcu_aclk;
606assign soclk = tcu_bclk;
607assign se = tcu_scan_en;
608
609l2t_vuad_ctl_l1clkhdr_ctl_macro clkgen (
610 .l2clk(l2clk),
611 .l1en(1'b1 ),
612 .l1clk(l1clk),
613 .pce_ov(pce_ov),
614 .stop(stop),
615 .se(se));
616
617//////////////////////////////////////////////////
618
619//////////////////////////////////////////
620// Spare gate insertion
621//////////////////////////////////////////
622l2t_vuad_ctl_spare_ctl_macro__num_4 spares (
623 .scan_in(spares_scanin),
624 .scan_out(spares_scanout),
625 .l1clk (l1clk),
626 .siclk(siclk),
627 .soclk(soclk)
628);
629//////////////////////////////////////////
630
631
632//assign vuaddp_st_to_data_array_c3 = tag_st_to_data_array_c3;
633//assign vuaddp_lru_way_c3 = tagdp_lru_way_sel_c3;
634//assign vuaddp_hit_wayvld_c3 = tag_hit_way_vld_c3 & ~{16{arb_vuad_ce_err_c3}};
635
636
637l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuadctl_no_bypass_c1
638 (.din(arb_vuadctl_no_bypass_px2),
639 .scan_in(ff_vuadctl_no_bypass_c1_scanin),
640 .scan_out(ff_vuadctl_no_bypass_c1_scanout),
641 .l1clk(l1clk),
642 .dout(vuadctl_no_bypass_c1),
643 .siclk(siclk),
644 .soclk(soclk)
645);
646
647////////////////////////////////////////////////////////////////////////
648 // index compares to for vuad mux selects.
649 ////////////////////////////////////////////////////////////////////////
650
651 assign vuaddp_vuad_sel_c2 = ~arbadr_idx_c1c2comp_c1_n & arb_inst_vld_c2 &
652 ~( arb_decdp_inst_int_c1 | inst_int_c2 ) ; // int 5.0 changes
653
654 assign vuaddp_vuad_sel_c4 = ~arbadr_idx_c1c4comp_c1_n & inst_vld_c4 &
655 ~( arb_decdp_inst_int_c1 | inst_int_c4) ; // int 5.0 changes
656
657 assign vuaddp_vuad_sel_c2orc3 = ((( ~arbadr_idx_c1c3comp_c1_n & inst_vld_c3) &
658 ~( arb_decdp_inst_int_c1 | inst_int_c3) ) |
659 vuaddp_vuad_sel_c2 ); // int 5.0 change
660
661 assign vuad_sel_wr = ~arbadr_idx_c1c5comp_c1_n & inst_vld_c5 &
662 ~( arb_decdp_inst_int_c1 | inst_int_c5); // int 5.0 change
663
664 assign vuad_sel_c4orc5 = vuaddp_vuad_sel_c4 | vuad_sel_wr ;
665
666 assign vuaddp_vuad_sel_rd = ~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | // int 5.0 changes
667 vuadctl_no_bypass_c1; // BIST or DECC read of VUAD
668
669
670assign vuad_usaloc_mux_used_and_alloc_comb_sel0 = vuaddp_vuad_sel_rd_c2 & ~vuaddp_vuad_sel_c2_d1 &
671 vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
672assign vuad_usaloc_mux_used_and_alloc_comb_sel1 = ~vuaddp_vuad_sel_rd_c2 & ~vuaddp_vuad_sel_c2_d1 &
673 vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
674assign vuad_usaloc_mux_used_and_alloc_comb_sel2 = vuaddp_vuad_sel_c2_d1 & vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 &
675 ~vuaddp_vuad_sel_rd;
676assign vuad_usaloc_mux_used_and_alloc_comb_sel3 = ~vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd ;
677assign vuad_usaloc_mux_used_and_alloc_comb_sel4 = ~vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
678assign vuad_usaloc_mux_used_and_alloc_comb_sel5 = vuaddp_vuad_sel_rd;
679
680
681
682//assign mux_valid_dirty_c1_sel0 = vuaddp_vuad_sel_rd;
683//assign mux_valid_dirty_c1_sel1 = ~vuaddp_vuad_sel_rd & vuaddp_vuad_sel_c2orc3;
684//assign mux_valid_dirty_c1_sel2 = ~vuaddp_vuad_sel_rd & ~vuaddp_vuad_sel_c2orc3;
685
686assign mux_valid_dirty_c1_sel0 = ~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1;
687assign mux_valid_dirty_c1_sel1 = ~(~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1) & vuaddp_vuad_sel_c2orc3;
688assign mux_valid_dirty_c1_sel2 = ~(~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1) & ~vuaddp_vuad_sel_c2orc3;
689
690
691
692l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuadctl_no_bypass_c1_1
693 (.din(arb_vuadctl_no_bypass_px2),
694 .scan_in(ff_vuadctl_no_bypass_c1_1_scanin),
695 .scan_out(ff_vuadctl_no_bypass_c1_1_scanout),
696 .l1clk(l1clk),
697 .dout(vuadctl_no_bypass_c1_1),
698 .siclk(siclk),
699 .soclk(soclk)
700);
701
702
703
704l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuaddp_vuad_sel_c2
705 (.din(vuaddp_vuad_sel_rd), .l1clk(l1clk),
706 .scan_in(ff_vuaddp_vuad_sel_c2_scanin),
707 .scan_out(ff_vuaddp_vuad_sel_c2_scanout),
708 .dout(vuaddp_vuad_sel_rd_c2),
709 .siclk(siclk),
710 .soclk(soclk)
711);
712
713
714
715
716l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuaddp_vuad_sel_c2_d1
717 (.din(vuaddp_vuad_sel_c2), .l1clk(l1clk),
718 .scan_in(ff_vuaddp_vuad_sel_c2_d1_scanin),
719 .scan_out(ff_vuaddp_vuad_sel_c2_d1_scanout),
720 .dout(vuaddp_vuad_sel_c2_d1),
721 .siclk(siclk),
722 .soclk(soclk)
723);
724
725
726l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_sel_wr_d1
727 (.din(vuad_sel_wr), .l1clk(l1clk),
728 .scan_in(ff_vuad_sel_wr_d1_scanin),
729 .scan_out(ff_vuad_sel_wr_d1_scanout),
730 .dout(vuad_sel_wr_d1),
731 .siclk(siclk),
732 .soclk(soclk)
733);
734
735
736l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_tagd_sel_c2_d1
737 (.din(vuaddp_vuad_sel_c2), .l1clk(l1clk),
738 .scan_in(ff_vuad_tagd_sel_c2_d1_scanin),
739 .scan_out(ff_vuad_tagd_sel_c2_d1_scanout),
740 .dout(vuaddp_vuad_tagd_sel_c2_d1),
741 .siclk(siclk),
742 .soclk(soclk)
743);
744
745
746
747
748
749
750
751l2t_vuad_ctl_msff_ctl_macro__width_1 ff_wr64_inst_c3
752 (.din(arb_decdp_wr64_inst_c2), .l1clk(l1clk),
753 .scan_in(ff_wr64_inst_c3_scanin),
754 .scan_out(ff_wr64_inst_c3_scanout),
755 .dout(vuaddp_wr64_inst_c3),
756 .siclk(siclk),
757 .soclk(soclk)
758
759 );
760
761
762l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_acc_vd_c3
763 (.dout (acc_vd_c3), .din (arb_acc_vd_c2),
764 .scan_in(ff_arb_acc_vd_c3_scanin),
765 .scan_out(ff_arb_acc_vd_c3_scanout),
766 .l1clk (l1clk),
767 .siclk(siclk),
768 .soclk(soclk)
769
770 ) ;
771
772l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_acc_ua_c3
773 (.dout (acc_ua_c3), .din (arb_acc_ua_c2),
774 .scan_in(ff_arb_acc_ua_c3_scanin),
775 .scan_out(ff_arb_acc_ua_c3_scanout),
776 .l1clk (l1clk),
777 .siclk(siclk),
778 .soclk(soclk)
779
780 ) ;
781
782
783l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c3
784 (.dout (inst_vld_c3), .din (arb_inst_vld_c2),
785 .scan_in(ff_inst_vld_c3_scanin),
786 .scan_out(ff_inst_vld_c3_scanout),
787 .l1clk (l1clk),
788 .siclk(siclk),
789 .soclk(soclk)
790
791 ) ;
792
793l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c4
794 (.dout (inst_vld_c4), .din (inst_vld_c3),
795 .scan_in(ff_inst_vld_c4_scanin),
796 .scan_out(ff_inst_vld_c4_scanout),
797 .l1clk (l1clk),
798 .siclk(siclk),
799 .soclk(soclk)
800
801 ) ;
802
803l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c5
804 (.dout (inst_vld_c5), .din (inst_vld_c4),
805 .scan_in(ff_inst_vld_c5_scanin),
806 .scan_out(ff_inst_vld_c5_scanout),
807 .l1clk (l1clk),
808 .siclk(siclk),
809 .soclk(soclk)
810
811 ) ;
812
813
814l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c2
815 (.dout (arb_inst_diag_c2), .din (arb_inst_diag_c1),
816 .scan_in(ff_arb_inst_diag_c2_scanin),
817 .scan_out(ff_arb_inst_diag_c2_scanout),
818 .l1clk (l1clk),
819 .siclk(siclk),
820 .soclk(soclk)
821
822 ) ;
823l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c3
824 (.dout (arb_inst_diag_c3), .din (arb_inst_diag_c2),
825 .scan_in(ff_arb_inst_diag_c3_scanin),
826 .scan_out(ff_arb_inst_diag_c3_scanout),
827 .l1clk (l1clk),
828 .siclk(siclk),
829 .soclk(soclk)
830
831 ) ;
832l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c4
833 (.dout (arb_inst_diag_c4), .din (arb_inst_diag_c3),
834 .scan_in(ff_arb_inst_diag_c4_scanin),
835 .scan_out(ff_arb_inst_diag_c4_scanout),
836 .l1clk (l1clk),
837 .siclk(siclk),
838 .soclk(soclk)
839
840 ) ;
841
842// msff_ctl_macro ff_filbuf_vuad_bypassed_c3 (width=1)
843 //(.dout (filbuf_vuad_bypassed_c3), .din (filbuf_vuad_bypassed_c2),
844 //.l1clk (l1clk),
845 // .scan_in (),
846 // .scan_out()
847
848 //) ;
849
850l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_9 mux_idx_c3
851 (.dout (vuad_acc_idx_c3[8:0]) ,
852 .din0(bist_vuad_idx_c3[8:0] ),
853 .din1(evctag_vuad_idx_c3[8:0]),
854 .sel0(bist_vuad_wr_en & mbist_run_r1),
855 .sel1(~bist_vuad_wr_en & ~mbist_run_r1)) ;
856
857l2t_vuad_ctl_msff_ctl_macro__width_9 ff_mux_idx_c4
858 (.dout (vuaddp_vuad_idx_c4[8:0]), .din (vuad_acc_idx_c3[8:0]),
859 .scan_in(ff_mux_idx_c4_scanin),
860 .scan_out(ff_mux_idx_c4_scanout),
861 .l1clk (l1clk),
862 .siclk(siclk),
863 .soclk(soclk)
864
865 ) ;
866
867
868
869
870//////////////////////////////////////////////////////////////////////////////////////////
871// Disable L2 VUAD writes if
872// 1. Instruction is an INT.
873// 2. L2 is OFF and the instruction is a non-diag instruction.
874// 3. diag instruction is not a VUAD store.
875// (in implementation disable the write whenever there is Diag Inst and
876// enable it if the inst is a Diag write to the VUAD array.)
877//////////////////////////////////////////////////////////////////////////////////////////
878
879
880l2t_vuad_ctl_msff_ctl_macro__width_1 ff_l2_bypass_mode_on_d1
881 (.dout (l2_bypass_mode_on_d1), .din (csr_l2_bypass_mode_on),
882 .scan_in(ff_l2_bypass_mode_on_d1_scanin),
883 .scan_out(ff_l2_bypass_mode_on_d1_scanout),
884 .l1clk (l1clk),
885 .siclk(siclk),
886 .soclk(soclk)
887
888 ) ;
889
890
891//////////////////////////////////////////////////////////////////////////////
892//If a diagnostic access, normal write is disabled by wr_disable_c3.
893//If not a diagnostic access :
894// if bypass mode is on, write is disabled by wr_disable_c3
895// if bypass mode is off, write is always enabled ( even upon vuad CE)
896// hence we dont need to use CE to force the write to happen ??
897/////////////////////////////////////////////////////////////////////////////////////
898
899assign wr_disable_c3 = inst_int_c3 | // int 5.0 changes // VUAD ecc changes
900 (l2_bypass_mode_on_d1 & ~arb_inst_diag_c3) |
901 arb_inst_diag_c3 ;
902
903//////////////////////////
904// access PV, PD, V, P
905//////////////////////////
906assign vuaddp_sel_diag0_data_wr_c3 = arb_inst_l2vuad_vld_c3 &
907 arb_decdp_st_inst_c3 & acc_vd_c3 ; // sel diag over bist data
908
909assign bistordiag_wr_vd_c3 = (vuaddp_sel_diag0_data_wr_c3 & ~mbist_run_r1)| // diagorbist over normal data
910 ( bist_vuad_wr_en & bist_wr_vd_c3 & mbist_run_r1 );
911
912l2t_vuad_ctl_msff_ctl_macro__width_1 ff_bistordiag_wr_vd_c4
913 (.dout (vuaddp_bistordiag_wr_vd_c4), .din (bistordiag_wr_vd_c3),
914 .scan_in(ff_bistordiag_wr_vd_c4_scanin),
915 .scan_out(ff_bistordiag_wr_vd_c4_scanout),
916 .l1clk (l1clk),
917 .siclk(siclk),
918 .soclk(soclk)
919
920 ) ;
921
922//assign vuad_array_wr_en1_c3 = ((inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
923// (bistordiag_wr_vd_c3 & mbist_run_r1); // bist or diag write
924
925assign vuad_array_wr_en1_c3 = ((inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
926 bistordiag_wr_vd_c3;
927
928//////////////////////////
929// access PU, PA, U, A
930//////////////////////////
931assign vuaddp_sel_diag1_data_wr_c3 = arb_inst_l2vuad_vld_c3 &
932 arb_decdp_st_inst_c3 & acc_ua_c3 ; // sel diag over bist data
933
934assign bistordiag_wr_ua_c3 = (vuaddp_sel_diag1_data_wr_c3 & ~mbist_run_r1)| // diagorbist over normal data
935 ( mbist_run_r1 & bist_vuad_wr_en & ~bist_wr_vd_c3 );
936
937l2t_vuad_ctl_msff_ctl_macro__width_2 ff_bistordiag_wr_ua_c4
938 (.dout ({mbist_run_r1,vuaddp_bistordiag_wr_ua_c4}),
939 .scan_in(ff_bistordiag_wr_ua_c4_scanin),
940 .scan_out(ff_bistordiag_wr_ua_c4_scanout),
941 .din ({mbist_run,bistordiag_wr_ua_c3}),
942 .l1clk (l1clk),
943 .siclk(siclk),
944 .soclk(soclk)
945 ) ;
946
947
948assign vuad_array_wr_en0_c3 = (( inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
949 bistordiag_wr_ua_c3; // bist or diag write
950
951
952l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c4
953 (.din(vuad_array_wr_en0_c3), .l1clk(l1clk),
954 .scan_in(ff_vuad_array_wr_en0_c4_scanin),
955 .scan_out(ff_vuad_array_wr_en0_c4_scanout),
956 .dout(vuaddp_vuad_array_wr_en0_c4),
957 .siclk(siclk),
958 .soclk(soclk)
959
960 );
961
962l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c4
963 (.din(vuad_array_wr_en1_c3), .l1clk(l1clk),
964 .scan_in(ff_vuad_array_wr_en1_c4_scanin),
965 .scan_out(ff_vuad_array_wr_en1_c4_scanout),
966 .dout(vuaddp_vuad_array_wr_en1_c4),
967 .siclk(siclk),
968 .soclk(soclk)
969
970 );
971
972l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c5
973 (.din(vuaddp_vuad_array_wr_en0_c4), .l1clk(l1clk),
974 .scan_in(ff_vuad_array_wr_en0_c5_scanin),
975 .scan_out(ff_vuad_array_wr_en0_c5_scanout),
976 .dout(vuad_array_wr_en0_c5),
977 .siclk(siclk),
978 .soclk(soclk)
979
980 );
981
982l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c5
983 (.din(vuaddp_vuad_array_wr_en1_c4), .l1clk(l1clk),
984 .scan_in(ff_vuad_array_wr_en1_c5_scanin),
985 .scan_out(ff_vuad_array_wr_en1_c5_scanout),
986 .dout(vuad_array_wr_en1_c5),
987 .siclk(siclk),
988 .soclk(soclk)
989
990 );
991
992// BS 03/11/04 extra cycle for mem access
993
994l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c52
995 (.din(vuad_array_wr_en0_c5), .l1clk(l1clk),
996 .scan_in(ff_vuad_array_wr_en0_c52_scanin),
997 .scan_out(ff_vuad_array_wr_en0_c52_scanout),
998 .dout(vuad_array_wr_en0_c52),
999 .siclk(siclk),
1000 .soclk(soclk)
1001
1002 );
1003
1004
1005l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c52
1006 (.din(vuad_array_wr_en1_c5), .l1clk(l1clk),
1007 .scan_in(ff_vuad_array_wr_en1_c52_scanin),
1008 .scan_out(ff_vuad_array_wr_en1_c52_scanout),
1009 .dout(vuad_array_wr_en1_c52),
1010 .siclk(siclk),
1011 .soclk(soclk)
1012
1013 );
1014
1015//
1016//msff_ctl_macro ff_vuad_array_wr_en0_c6 (width=1)
1017// (.din(vuad_array_wr_en0_c52), .l1clk(l1clk),
1018// .scan_in(ff_vuad_array_wr_en0_c6_scanin),
1019// .scan_out(ff_vuad_array_wr_en0_c6_scanout),
1020// .dout(vuad_array_wr_en0_c6),
1021//
1022// );
1023//
1024//msff_ctl_macro ff_vuad_array_wr_en1_c6 (width=1)
1025// (.din(vuad_array_wr_en1_c52), .l1clk(l1clk),
1026// .scan_in(ff_vuad_array_wr_en1_c6_scanin),
1027// .scan_out(ff_vuad_array_wr_en1_c6_scanout),
1028// .dout(vuad_array_wr_en1_c6),
1029//
1030// );
1031//
1032//assign vuaddp_sel_ua_wr_data_byp = vuad_sel_wr_d1
1033// & vuad_array_wr_en1_c6 ;
1034//assign vuaddp_sel_vd_wr_data_byp = vuad_sel_wr_d1
1035// & vuad_array_wr_en0_c6 ;
1036//
1037
1038assign vuaddp_sel_ua_wr_data_byp = vuad_sel_wr_d1
1039 & vuad_array_wr_en1_c52 ;
1040assign vuaddp_sel_vd_wr_data_byp = vuad_sel_wr_d1
1041 & vuad_array_wr_en0_c52 ;
1042
1043
1044
1045
1046//* All errors are qualififed in the block that generates them
1047
1048l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c2 // int 5.0 changes
1049 (.dout (inst_int_c2), .din (arb_decdp_inst_int_c1),
1050 .scan_in(ff_inst_int_c2_scanin),
1051 .scan_out(ff_inst_int_c2_scanout),
1052 .l1clk (l1clk),
1053 .siclk(siclk),
1054 .soclk(soclk)
1055
1056 ) ;
1057
1058l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c3 // int 5.0 changes
1059 (.dout (inst_int_c3), .din (inst_int_c2),
1060 .scan_in(ff_inst_int_c3_scanin),
1061 .scan_out(ff_inst_int_c3_scanout),
1062 .l1clk (l1clk),
1063 .siclk(siclk),
1064 .soclk(soclk)
1065
1066 ) ;
1067
1068l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c4 // int 5.0 changes
1069 (.dout (inst_int_c4), .din (inst_int_c3),
1070 .scan_in(ff_inst_int_c4_scanin),
1071 .scan_out(ff_inst_int_c4_scanout),
1072 .l1clk (l1clk),
1073 .siclk(siclk),
1074 .soclk(soclk)
1075
1076 ) ;
1077
1078l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c5 // int 5.0 changes
1079 (.dout (inst_int_c5), .din (inst_int_c4),
1080 .scan_in(ff_inst_int_c5_scanin),
1081 .scan_out(ff_inst_int_c5_scanout),
1082 .l1clk (l1clk),
1083 .siclk(siclk),
1084 .soclk(soclk)
1085
1086 ) ;
1087
1088
1089
1090
1091// Used bit error will not be reported as they are harmless.
1092
1093assign vuad_error_c4 = ~(arb_inst_diag_c4 | inst_int_c4) &
1094 (vuadpm_vd_ue_c4 | vuadpm_ua_ue_c4) & // int 5.0 changes
1095 inst_vld_c4;
1096
1097l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c5
1098 (.dout (vuad_error_c5), .din (vuad_error_c4),
1099 .scan_in(ff_vuad_error_c5_scanin),
1100 .scan_out(ff_vuad_error_c5_scanout),
1101 .l1clk (l1clk),
1102 .siclk(siclk),
1103 .soclk(soclk)
1104
1105 ) ;
1106
1107// BS 03/11/04 extra cycle for mem access
1108
1109l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c52
1110 (.dout (vuad_error_c52), .din (vuad_error_c5),
1111 .scan_in(ff_vuad_error_c52_scanin),
1112 .scan_out(ff_vuad_error_c52_scanout),
1113 .l1clk (l1clk),
1114 .siclk(siclk),
1115 .soclk(soclk)
1116
1117 ) ;
1118
1119
1120l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c6
1121 (.dout (vuad_error_c6), .din (vuad_error_c52),
1122 .scan_in(ff_vuad_error_c6_scanin),
1123 .scan_out(ff_vuad_error_c6_scanout),
1124 .l1clk (l1clk),
1125 .siclk(siclk),
1126 .soclk(soclk)
1127
1128 ) ;
1129
1130l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c7
1131 (.dout (vuad_error_c7), .din (vuad_error_c6),
1132 .scan_in(ff_vuad_error_c7_scanin),
1133 .scan_out(ff_vuad_error_c7_scanout),
1134 .l1clk (l1clk),
1135 .siclk(siclk),
1136 .soclk(soclk)
1137
1138 ) ;
1139
1140l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c8
1141 (.dout (vuaddp_vuad_error_c8), .din (vuad_error_c7),
1142 .scan_in(ff_vuad_error_c8_scanin),
1143 .scan_out(ff_vuad_error_c8_scanout),
1144 .l1clk (l1clk),
1145 .siclk(siclk),
1146 .soclk(soclk)
1147
1148 ) ;
1149
1150////////////////////////////////////////////////////////////////////////////////
1151// 4-16 decoder for the fill way
1152// Conditions for altering the VUAD bits.
1153////////////////////////////////////////////////////////////////////////////////
1154assign fill_inst_vld_c2 = arbdec_arbdp_inst_fb_c2 & arb_inst_vld_c2 ;
1155
1156
1157
1158assign dec_lo_fill_way_c2[0] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd0 )
1159 & fill_inst_vld_c2 ;
1160assign dec_lo_fill_way_c2[1] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd1 )
1161 & fill_inst_vld_c2 ;
1162assign dec_lo_fill_way_c2[2] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd2 )
1163 & fill_inst_vld_c2 ;
1164assign dec_lo_fill_way_c2[3] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd3 )
1165 & fill_inst_vld_c2 ;
1166
1167
1168assign dec_hi_fill_way_c2[0] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd0 ) ;
1169
1170assign dec_hi_fill_way_c2[1] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd1 ) ;
1171
1172assign dec_hi_fill_way_c2[2] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd2 ) ;
1173
1174assign dec_hi_fill_way_c2[3] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd3 ) ;
1175
1176
1177assign fill_way_c2[0] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[0] ; // 0000
1178
1179assign fill_way_c2[1] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[1] ; // 0001
1180
1181assign fill_way_c2[2] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[2] ; // 0010
1182
1183assign fill_way_c2[3] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[3] ; // 0011
1184
1185
1186
1187assign fill_way_c2[4] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[0] ; // 0100
1188
1189assign fill_way_c2[5] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[1] ; // 0101
1190
1191assign fill_way_c2[6] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[2] ; // 0110
1192
1193assign fill_way_c2[7] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[3] ; // 0111
1194
1195
1196
1197assign fill_way_c2[8] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[0] ; // 1000
1198
1199assign fill_way_c2[9] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[1] ; // 1001
1200
1201assign fill_way_c2[10] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[2] ; // 1010
1202
1203assign fill_way_c2[11] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[3] ; // 1011
1204
1205
1206assign fill_way_c2[12] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[0] ; // 1100
1207
1208assign fill_way_c2[13] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[1] ; // 1101
1209
1210assign fill_way_c2[14] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[2] ; // 1110
1211
1212assign fill_way_c2[15] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[3] ; // 1111
1213
1214
1215l2t_vuad_ctl_msff_ctl_macro__width_16 ff_fill_way_c3
1216 (.dout (vuaddp_fill_way_c3[15:0]), .din (fill_way_c2[15:0]),
1217 .scan_in(ff_fill_way_c3_scanin),
1218 .scan_out(ff_fill_way_c3_scanout),
1219 .l1clk (l1clk),
1220 .siclk(siclk),
1221 .soclk(soclk)
1222
1223 ) ;
1224
1225
1226
1227
1228assign alloc_set_cond_c2 = (arb_arbdp_vuadctl_pst_no_ctrue_c2 | arb_decdp_cas1_inst_c2) ;
1229
1230
1231
1232assign alloc_rst_cond_c2 = arb_arbdp_pst_with_ctrue_c2 |
1233 (arb_decdp_cas2_inst_c2 & arbdec_arbdp_inst_mb_c2) |
1234 (arbdec_arbdp_inst_mb_c2 & ~alloc_set_cond_c2) ;
1235
1236
1237
1238
1239
1240l2t_vuad_ctl_msff_ctl_macro__width_1 ff_alloc_set_cond_c3
1241 (.dout (vuaddp_alloc_set_cond_c3), .din (alloc_set_cond_c2),
1242 .scan_in(ff_alloc_set_cond_c3_scanin),
1243 .scan_out(ff_alloc_set_cond_c3_scanout),
1244 .l1clk (l1clk),
1245 .siclk(siclk),
1246 .soclk(soclk)
1247
1248 ) ;
1249
1250l2t_vuad_ctl_msff_ctl_macro__width_1 ff_alloc_rst_cond_c3
1251 (.dout (vuaddp_alloc_rst_cond_c3), .din (alloc_rst_cond_c2),
1252 .scan_in(ff_alloc_rst_cond_c3_scanin),
1253 .scan_out(ff_alloc_rst_cond_c3_scanout),
1254 .l1clk (l1clk),
1255 .siclk(siclk),
1256 .soclk(soclk)
1257
1258 ) ;
1259
1260
1261// fixscan start:
1262assign ff_addr1to0_c1_scanin = scan_in ;
1263assign ff_addr8_c1_scanin = ff_addr1to0_c1_scanout ;
1264assign ff_addr7_c1_scanin = ff_addr8_c1_scanout ;
1265assign spares_scanin = ff_addr7_c1_scanout ;
1266assign ff_vuadctl_no_bypass_c1_scanin = spares_scanout ;
1267assign ff_vuadctl_no_bypass_c1_1_scanin = ff_vuadctl_no_bypass_c1_scanout;
1268assign ff_vuaddp_vuad_sel_c2_scanin = ff_vuadctl_no_bypass_c1_1_scanout;
1269assign ff_vuaddp_vuad_sel_c2_d1_scanin = ff_vuaddp_vuad_sel_c2_scanout;
1270assign ff_vuad_sel_wr_d1_scanin = ff_vuaddp_vuad_sel_c2_d1_scanout;
1271assign ff_vuad_tagd_sel_c2_d1_scanin = ff_vuad_sel_wr_d1_scanout;
1272assign ff_wr64_inst_c3_scanin = ff_vuad_tagd_sel_c2_d1_scanout;
1273assign ff_arb_acc_vd_c3_scanin = ff_wr64_inst_c3_scanout ;
1274assign ff_arb_acc_ua_c3_scanin = ff_arb_acc_vd_c3_scanout ;
1275assign ff_inst_vld_c3_scanin = ff_arb_acc_ua_c3_scanout ;
1276assign ff_inst_vld_c4_scanin = ff_inst_vld_c3_scanout ;
1277assign ff_inst_vld_c5_scanin = ff_inst_vld_c4_scanout ;
1278assign ff_arb_inst_diag_c2_scanin = ff_inst_vld_c5_scanout ;
1279assign ff_arb_inst_diag_c3_scanin = ff_arb_inst_diag_c2_scanout;
1280assign ff_arb_inst_diag_c4_scanin = ff_arb_inst_diag_c3_scanout;
1281assign ff_mux_idx_c4_scanin = ff_arb_inst_diag_c4_scanout;
1282assign ff_l2_bypass_mode_on_d1_scanin = ff_mux_idx_c4_scanout ;
1283assign ff_bistordiag_wr_vd_c4_scanin = ff_l2_bypass_mode_on_d1_scanout;
1284assign ff_bistordiag_wr_ua_c4_scanin = ff_bistordiag_wr_vd_c4_scanout;
1285assign ff_vuad_array_wr_en0_c4_scanin = ff_bistordiag_wr_ua_c4_scanout;
1286assign ff_vuad_array_wr_en1_c4_scanin = ff_vuad_array_wr_en0_c4_scanout;
1287assign ff_vuad_array_wr_en0_c5_scanin = ff_vuad_array_wr_en1_c4_scanout;
1288assign ff_vuad_array_wr_en1_c5_scanin = ff_vuad_array_wr_en0_c5_scanout;
1289assign ff_vuad_array_wr_en0_c52_scanin = ff_vuad_array_wr_en1_c5_scanout;
1290assign ff_vuad_array_wr_en1_c52_scanin = ff_vuad_array_wr_en0_c52_scanout;
1291assign ff_inst_int_c2_scanin = ff_vuad_array_wr_en1_c52_scanout;
1292assign ff_inst_int_c3_scanin = ff_inst_int_c2_scanout ;
1293assign ff_inst_int_c4_scanin = ff_inst_int_c3_scanout ;
1294assign ff_inst_int_c5_scanin = ff_inst_int_c4_scanout ;
1295assign ff_vuad_error_c5_scanin = ff_inst_int_c5_scanout ;
1296assign ff_vuad_error_c52_scanin = ff_vuad_error_c5_scanout ;
1297assign ff_vuad_error_c6_scanin = ff_vuad_error_c52_scanout;
1298assign ff_vuad_error_c7_scanin = ff_vuad_error_c6_scanout ;
1299assign ff_vuad_error_c8_scanin = ff_vuad_error_c7_scanout ;
1300assign ff_fill_way_c3_scanin = ff_vuad_error_c8_scanout ;
1301assign ff_alloc_set_cond_c3_scanin = ff_fill_way_c3_scanout ;
1302assign ff_alloc_rst_cond_c3_scanin = ff_alloc_set_cond_c3_scanout;
1303assign scan_out = ff_alloc_rst_cond_c3_scanout;
1304// fixscan end:
1305endmodule
1306
1307
1308// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1309// also for pass-gate with decoder
1310
1311
1312
1313
1314
1315// any PARAMS parms go into naming of macro
1316
1317module l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_2 (
1318 din0,
1319 sel0,
1320 din1,
1321 sel1,
1322 dout);
1323 input [1:0] din0;
1324 input sel0;
1325 input [1:0] din1;
1326 input sel1;
1327 output [1:0] dout;
1328
1329
1330
1331
1332
1333assign dout[1:0] = ( {2{sel0}} & din0[1:0] ) |
1334 ( {2{sel1}} & din1[1:0]);
1335
1336
1337
1338
1339
1340endmodule
1341
1342
1343
1344
1345
1346
1347// any PARAMS parms go into naming of macro
1348
1349module l2t_vuad_ctl_msff_ctl_macro__width_2 (
1350 din,
1351 l1clk,
1352 scan_in,
1353 siclk,
1354 soclk,
1355 dout,
1356 scan_out);
1357wire [1:0] fdin;
1358wire [0:0] so;
1359
1360 input [1:0] din;
1361 input l1clk;
1362 input scan_in;
1363
1364
1365 input siclk;
1366 input soclk;
1367
1368 output [1:0] dout;
1369 output scan_out;
1370assign fdin[1:0] = din[1:0];
1371
1372
1373
1374
1375
1376
1377dff #(2) d0_0 (
1378.l1clk(l1clk),
1379.siclk(siclk),
1380.soclk(soclk),
1381.d(fdin[1:0]),
1382.si({scan_in,so[0:0]}),
1383.so({so[0:0],scan_out}),
1384.q(dout[1:0])
1385);
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398endmodule
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1409// also for pass-gate with decoder
1410
1411
1412
1413
1414
1415// any PARAMS parms go into naming of macro
1416
1417module l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 (
1418 din0,
1419 sel0,
1420 din1,
1421 sel1,
1422 dout);
1423 input [0:0] din0;
1424 input sel0;
1425 input [0:0] din1;
1426 input sel1;
1427 output [0:0] dout;
1428
1429
1430
1431
1432
1433assign dout[0:0] = ( {1{sel0}} & din0[0:0] ) |
1434 ( {1{sel1}} & din1[0:0]);
1435
1436
1437
1438
1439
1440endmodule
1441
1442
1443
1444
1445
1446
1447// any PARAMS parms go into naming of macro
1448
1449module l2t_vuad_ctl_msff_ctl_macro__width_1 (
1450 din,
1451 l1clk,
1452 scan_in,
1453 siclk,
1454 soclk,
1455 dout,
1456 scan_out);
1457wire [0:0] fdin;
1458
1459 input [0:0] din;
1460 input l1clk;
1461 input scan_in;
1462
1463
1464 input siclk;
1465 input soclk;
1466
1467 output [0:0] dout;
1468 output scan_out;
1469assign fdin[0:0] = din[0:0];
1470
1471
1472
1473
1474
1475
1476dff #(1) d0_0 (
1477.l1clk(l1clk),
1478.siclk(siclk),
1479.soclk(soclk),
1480.d(fdin[0:0]),
1481.si(scan_in),
1482.so(scan_out),
1483.q(dout[0:0])
1484);
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497endmodule
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511// any PARAMS parms go into naming of macro
1512
1513module l2t_vuad_ctl_l1clkhdr_ctl_macro (
1514 l2clk,
1515 l1en,
1516 pce_ov,
1517 stop,
1518 se,
1519 l1clk);
1520
1521
1522 input l2clk;
1523 input l1en;
1524 input pce_ov;
1525 input stop;
1526 input se;
1527 output l1clk;
1528
1529
1530
1531
1532
1533cl_sc1_l1hdr_8x c_0 (
1534
1535
1536 .l2clk(l2clk),
1537 .pce(l1en),
1538 .l1clk(l1clk),
1539 .se(se),
1540 .pce_ov(pce_ov),
1541 .stop(stop)
1542);
1543
1544
1545
1546endmodule
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556// Description: Spare gate macro for control blocks
1557//
1558// Param num controls the number of times the macro is added
1559// flops=0 can be used to use only combination spare logic
1560
1561
1562module l2t_vuad_ctl_spare_ctl_macro__num_4 (
1563 l1clk,
1564 scan_in,
1565 siclk,
1566 soclk,
1567 scan_out);
1568wire si_0;
1569wire so_0;
1570wire spare0_flop_unused;
1571wire spare0_buf_32x_unused;
1572wire spare0_nand3_8x_unused;
1573wire spare0_inv_8x_unused;
1574wire spare0_aoi22_4x_unused;
1575wire spare0_buf_8x_unused;
1576wire spare0_oai22_4x_unused;
1577wire spare0_inv_16x_unused;
1578wire spare0_nand2_16x_unused;
1579wire spare0_nor3_4x_unused;
1580wire spare0_nand2_8x_unused;
1581wire spare0_buf_16x_unused;
1582wire spare0_nor2_16x_unused;
1583wire spare0_inv_32x_unused;
1584wire si_1;
1585wire so_1;
1586wire spare1_flop_unused;
1587wire spare1_buf_32x_unused;
1588wire spare1_nand3_8x_unused;
1589wire spare1_inv_8x_unused;
1590wire spare1_aoi22_4x_unused;
1591wire spare1_buf_8x_unused;
1592wire spare1_oai22_4x_unused;
1593wire spare1_inv_16x_unused;
1594wire spare1_nand2_16x_unused;
1595wire spare1_nor3_4x_unused;
1596wire spare1_nand2_8x_unused;
1597wire spare1_buf_16x_unused;
1598wire spare1_nor2_16x_unused;
1599wire spare1_inv_32x_unused;
1600wire si_2;
1601wire so_2;
1602wire spare2_flop_unused;
1603wire spare2_buf_32x_unused;
1604wire spare2_nand3_8x_unused;
1605wire spare2_inv_8x_unused;
1606wire spare2_aoi22_4x_unused;
1607wire spare2_buf_8x_unused;
1608wire spare2_oai22_4x_unused;
1609wire spare2_inv_16x_unused;
1610wire spare2_nand2_16x_unused;
1611wire spare2_nor3_4x_unused;
1612wire spare2_nand2_8x_unused;
1613wire spare2_buf_16x_unused;
1614wire spare2_nor2_16x_unused;
1615wire spare2_inv_32x_unused;
1616wire si_3;
1617wire so_3;
1618wire spare3_flop_unused;
1619wire spare3_buf_32x_unused;
1620wire spare3_nand3_8x_unused;
1621wire spare3_inv_8x_unused;
1622wire spare3_aoi22_4x_unused;
1623wire spare3_buf_8x_unused;
1624wire spare3_oai22_4x_unused;
1625wire spare3_inv_16x_unused;
1626wire spare3_nand2_16x_unused;
1627wire spare3_nor3_4x_unused;
1628wire spare3_nand2_8x_unused;
1629wire spare3_buf_16x_unused;
1630wire spare3_nor2_16x_unused;
1631wire spare3_inv_32x_unused;
1632
1633
1634input l1clk;
1635input scan_in;
1636input siclk;
1637input soclk;
1638output scan_out;
1639
1640cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
1641 .siclk(siclk),
1642 .soclk(soclk),
1643 .si(si_0),
1644 .so(so_0),
1645 .d(1'b0),
1646 .q(spare0_flop_unused));
1647assign si_0 = scan_in;
1648
1649cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
1650 .out(spare0_buf_32x_unused));
1651cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
1652 .in1(1'b1),
1653 .in2(1'b1),
1654 .out(spare0_nand3_8x_unused));
1655cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
1656 .out(spare0_inv_8x_unused));
1657cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
1658 .in01(1'b1),
1659 .in10(1'b1),
1660 .in11(1'b1),
1661 .out(spare0_aoi22_4x_unused));
1662cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
1663 .out(spare0_buf_8x_unused));
1664cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
1665 .in01(1'b1),
1666 .in10(1'b1),
1667 .in11(1'b1),
1668 .out(spare0_oai22_4x_unused));
1669cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
1670 .out(spare0_inv_16x_unused));
1671cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
1672 .in1(1'b1),
1673 .out(spare0_nand2_16x_unused));
1674cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
1675 .in1(1'b0),
1676 .in2(1'b0),
1677 .out(spare0_nor3_4x_unused));
1678cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
1679 .in1(1'b1),
1680 .out(spare0_nand2_8x_unused));
1681cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
1682 .out(spare0_buf_16x_unused));
1683cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
1684 .in1(1'b0),
1685 .out(spare0_nor2_16x_unused));
1686cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
1687 .out(spare0_inv_32x_unused));
1688
1689cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
1690 .siclk(siclk),
1691 .soclk(soclk),
1692 .si(si_1),
1693 .so(so_1),
1694 .d(1'b0),
1695 .q(spare1_flop_unused));
1696assign si_1 = so_0;
1697
1698cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
1699 .out(spare1_buf_32x_unused));
1700cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
1701 .in1(1'b1),
1702 .in2(1'b1),
1703 .out(spare1_nand3_8x_unused));
1704cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
1705 .out(spare1_inv_8x_unused));
1706cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
1707 .in01(1'b1),
1708 .in10(1'b1),
1709 .in11(1'b1),
1710 .out(spare1_aoi22_4x_unused));
1711cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
1712 .out(spare1_buf_8x_unused));
1713cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
1714 .in01(1'b1),
1715 .in10(1'b1),
1716 .in11(1'b1),
1717 .out(spare1_oai22_4x_unused));
1718cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
1719 .out(spare1_inv_16x_unused));
1720cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
1721 .in1(1'b1),
1722 .out(spare1_nand2_16x_unused));
1723cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
1724 .in1(1'b0),
1725 .in2(1'b0),
1726 .out(spare1_nor3_4x_unused));
1727cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
1728 .in1(1'b1),
1729 .out(spare1_nand2_8x_unused));
1730cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
1731 .out(spare1_buf_16x_unused));
1732cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
1733 .in1(1'b0),
1734 .out(spare1_nor2_16x_unused));
1735cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
1736 .out(spare1_inv_32x_unused));
1737
1738cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
1739 .siclk(siclk),
1740 .soclk(soclk),
1741 .si(si_2),
1742 .so(so_2),
1743 .d(1'b0),
1744 .q(spare2_flop_unused));
1745assign si_2 = so_1;
1746
1747cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
1748 .out(spare2_buf_32x_unused));
1749cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
1750 .in1(1'b1),
1751 .in2(1'b1),
1752 .out(spare2_nand3_8x_unused));
1753cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
1754 .out(spare2_inv_8x_unused));
1755cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
1756 .in01(1'b1),
1757 .in10(1'b1),
1758 .in11(1'b1),
1759 .out(spare2_aoi22_4x_unused));
1760cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
1761 .out(spare2_buf_8x_unused));
1762cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
1763 .in01(1'b1),
1764 .in10(1'b1),
1765 .in11(1'b1),
1766 .out(spare2_oai22_4x_unused));
1767cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
1768 .out(spare2_inv_16x_unused));
1769cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
1770 .in1(1'b1),
1771 .out(spare2_nand2_16x_unused));
1772cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
1773 .in1(1'b0),
1774 .in2(1'b0),
1775 .out(spare2_nor3_4x_unused));
1776cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
1777 .in1(1'b1),
1778 .out(spare2_nand2_8x_unused));
1779cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
1780 .out(spare2_buf_16x_unused));
1781cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
1782 .in1(1'b0),
1783 .out(spare2_nor2_16x_unused));
1784cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
1785 .out(spare2_inv_32x_unused));
1786
1787cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
1788 .siclk(siclk),
1789 .soclk(soclk),
1790 .si(si_3),
1791 .so(so_3),
1792 .d(1'b0),
1793 .q(spare3_flop_unused));
1794assign si_3 = so_2;
1795
1796cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
1797 .out(spare3_buf_32x_unused));
1798cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
1799 .in1(1'b1),
1800 .in2(1'b1),
1801 .out(spare3_nand3_8x_unused));
1802cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
1803 .out(spare3_inv_8x_unused));
1804cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
1805 .in01(1'b1),
1806 .in10(1'b1),
1807 .in11(1'b1),
1808 .out(spare3_aoi22_4x_unused));
1809cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
1810 .out(spare3_buf_8x_unused));
1811cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
1812 .in01(1'b1),
1813 .in10(1'b1),
1814 .in11(1'b1),
1815 .out(spare3_oai22_4x_unused));
1816cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
1817 .out(spare3_inv_16x_unused));
1818cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
1819 .in1(1'b1),
1820 .out(spare3_nand2_16x_unused));
1821cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
1822 .in1(1'b0),
1823 .in2(1'b0),
1824 .out(spare3_nor3_4x_unused));
1825cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
1826 .in1(1'b1),
1827 .out(spare3_nand2_8x_unused));
1828cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
1829 .out(spare3_buf_16x_unused));
1830cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
1831 .in1(1'b0),
1832 .out(spare3_nor2_16x_unused));
1833cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
1834 .out(spare3_inv_32x_unused));
1835assign scan_out = so_3;
1836
1837
1838
1839endmodule
1840
1841
1842// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1843// also for pass-gate with decoder
1844
1845
1846
1847
1848
1849// any PARAMS parms go into naming of macro
1850
1851module l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_9 (
1852 din0,
1853 sel0,
1854 din1,
1855 sel1,
1856 dout);
1857 input [8:0] din0;
1858 input sel0;
1859 input [8:0] din1;
1860 input sel1;
1861 output [8:0] dout;
1862
1863
1864
1865
1866
1867assign dout[8:0] = ( {9{sel0}} & din0[8:0] ) |
1868 ( {9{sel1}} & din1[8:0]);
1869
1870
1871
1872
1873
1874endmodule
1875
1876
1877
1878
1879
1880
1881// any PARAMS parms go into naming of macro
1882
1883module l2t_vuad_ctl_msff_ctl_macro__width_9 (
1884 din,
1885 l1clk,
1886 scan_in,
1887 siclk,
1888 soclk,
1889 dout,
1890 scan_out);
1891wire [8:0] fdin;
1892wire [7:0] so;
1893
1894 input [8:0] din;
1895 input l1clk;
1896 input scan_in;
1897
1898
1899 input siclk;
1900 input soclk;
1901
1902 output [8:0] dout;
1903 output scan_out;
1904assign fdin[8:0] = din[8:0];
1905
1906
1907
1908
1909
1910
1911dff #(9) d0_0 (
1912.l1clk(l1clk),
1913.siclk(siclk),
1914.soclk(soclk),
1915.d(fdin[8:0]),
1916.si({scan_in,so[7:0]}),
1917.so({so[7:0],scan_out}),
1918.q(dout[8:0])
1919);
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932endmodule
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946// any PARAMS parms go into naming of macro
1947
1948module l2t_vuad_ctl_msff_ctl_macro__width_16 (
1949 din,
1950 l1clk,
1951 scan_in,
1952 siclk,
1953 soclk,
1954 dout,
1955 scan_out);
1956wire [15:0] fdin;
1957wire [14:0] so;
1958
1959 input [15:0] din;
1960 input l1clk;
1961 input scan_in;
1962
1963
1964 input siclk;
1965 input soclk;
1966
1967 output [15:0] dout;
1968 output scan_out;
1969assign fdin[15:0] = din[15:0];
1970
1971
1972
1973
1974
1975
1976dff #(16) d0_0 (
1977.l1clk(l1clk),
1978.siclk(siclk),
1979.soclk(soclk),
1980.d(fdin[15:0]),
1981.si({scan_in,so[14:0]}),
1982.so({so[14:0],scan_out}),
1983.q(dout[15:0])
1984);
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997endmodule
1998
1999
2000
2001
2002
2003
2004
2005