Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / l2t / rtl / l2t_deccck_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: l2t_deccck_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_deccck_ctl (
36 tcu_pce_ov,
37 tcu_aclk,
38 tcu_bclk,
39 tcu_scan_en,
40 tag_deccck_addr3_c7,
41 arb_inst_l2data_vld_c6,
42 tag_data_ecc_active_c3,
43 bist_data_enable_c1,
44 bist_data_waddr_c1,
45 arbadr_arbdp_addr22_c7,
46 arbadr_arbdp_waddr_c6,
47 deccck_bscd_corr_err_c8,
48 deccck_bscd_uncorr_err_c8,
49 deccck_bscd_notdata_err_c8,
50 deccck_spcd_corr_err_c8,
51 deccck_spcd_uncorr_err_c8,
52 deccck_spcd_notdata_err_c8,
53 deccck_scrd_corr_err_c8,
54 deccck_scrd_uncorr_err_c8,
55 deccck_spcfb_corr_err_c8,
56 deccck_spcfb_uncorr_err_c8,
57 deccck_uncorr_err_c8,
58 deccck_corr_err_c8,
59 deccck_notdata_err_c8,
60 deccdp_decck_uncorr_err_c7,
61 deccdp_decck_corr_err_c7,
62 tag_spc_rd_vld_c6,
63 tag_bsc_rd_vld_c7,
64 tag_scrub_rd_vld_c7,
65 filbuf_spc_corr_err_c6,
66 filbuf_spc_uncorr_err_c6,
67 filbuf_spc_rd_vld_c6,
68 deccck_dword_sel_c7,
69 deccck_muxsel_diag_out_c7,
70 arbadr_arbdp_line_addr_c7,
71 arbadr_arbdp_line_addr_c6,
72 l2clk,
73 scan_in,
74 scan_out);
75wire pce_ov;
76wire stop;
77wire siclk;
78wire soclk;
79wire se;
80wire l1clk;
81wire spares_scanin;
82wire spares_scanout;
83wire ff_bist_en_c2_scanin;
84wire ff_bist_en_c2_scanout;
85wire ff_bist_en_c3_scanin;
86wire ff_bist_en_c3_scanout;
87wire ff_bist_en_c4_scanin;
88wire ff_bist_en_c4_scanout;
89wire ff_bist_en_c5_scanin;
90wire ff_bist_en_c5_scanout;
91wire ff_bist_en_c52_scanin;
92wire ff_bist_en_c52_scanout;
93wire ff_bist_en_c6_scanin;
94wire ff_bist_en_c6_scanout;
95wire ff_bist_waddr_c2_scanin;
96wire ff_bist_waddr_c2_scanout;
97wire ff_bist_waddr_c3_scanin;
98wire ff_bist_waddr_c3_scanout;
99wire ff_bist_waddr_c4_scanin;
100wire ff_bist_waddr_c4_scanout;
101wire ff_bist_waddr_c5_scanin;
102wire ff_bist_waddr_c5_scanout;
103wire ff_bist_waddr_c52_scanin;
104wire ff_bist_waddr_c52_scanout;
105wire ff_bist_waddr_c6_scanin;
106wire ff_bist_waddr_c6_scanout;
107wire ff_misc_terms_scanin;
108wire ff_misc_terms_scanout;
109wire tag_spc_rd_vld_c7;
110wire filbuf_spc_rd_vld_c7;
111wire filbuf_spc_corr_err_c7;
112wire filbuf_spc_uncorr_err_c7;
113wire ff_spc_rd_vld_c8_scanin;
114wire ff_spc_rd_vld_c8_scanout;
115wire ff_deccck_scrd_corr_err_c8_scanin;
116wire ff_deccck_scrd_corr_err_c8_scanout;
117wire ff_deccck_scrd_uncorr_err_c8_scanin;
118wire ff_deccck_scrd_uncorr_err_c8_scanout;
119wire ff_filbuf_spc_rd_vld_c8_scanin;
120wire ff_filbuf_spc_rd_vld_c8_scanout;
121wire ff_filbuf_spc_corr_err_c8_scanin;
122wire ff_filbuf_spc_corr_err_c8_scanout;
123wire ff_filbuf_spc_uncorr_err_c8_scanin;
124wire ff_filbuf_spc_uncorr_err_c8_scanout;
125wire ff_bsc_rd_vld_c8_scanin;
126wire ff_bsc_rd_vld_c8_scanout;
127wire ff_waddr_c7_scanin;
128wire ff_waddr_c7_scanout;
129wire data_ecc_active_c4;
130wire ff_deccck_active_c4_scanin;
131wire ff_deccck_active_c4_scanout;
132wire data_ecc_active_c5;
133wire ff_deccck_active_c5_scanin;
134wire ff_deccck_active_c5_scanout;
135wire data_ecc_active_c52;
136wire ff_deccck_active_c52_scanin;
137wire ff_deccck_active_c52_scanout;
138wire data_ecc_active_c6;
139wire ff_deccck_active_c6_scanin;
140wire ff_deccck_active_c6_scanout;
141wire data_ecc_active_c7;
142wire ff_deccck_active_c7_scanin;
143wire ff_deccck_active_c7_scanout;
144wire diag_data_vld_c7;
145wire ff_diag_data_vld_c7_scanin;
146wire ff_diag_data_vld_c7_scanout;
147wire [3:0] deccck_muxsel_diag_out_c6;
148wire ff_deccck_muxsel_diag_out_c7_scanin;
149wire ff_deccck_muxsel_diag_out_c7_scanout;
150
151
152 input tcu_pce_ov;
153 input tcu_aclk;
154 input tcu_bclk;
155 input tcu_scan_en;
156
157input tag_deccck_addr3_c7;
158input arb_inst_l2data_vld_c6;
159input tag_data_ecc_active_c3;
160
161input bist_data_enable_c1;
162input [1:0] bist_data_waddr_c1;
163input arbadr_arbdp_addr22_c7;
164input [1:0] arbadr_arbdp_waddr_c6;
165
166//input csr_error_ceen ; // Correctable error enables
167//input csr_error_nceen ; // Uncorrectable error enables
168
169
170
171output deccck_bscd_corr_err_c8 ; // siu data
172output deccck_bscd_uncorr_err_c8 ; // siu data
173output deccck_bscd_notdata_err_c8; // siu data
174
175output deccck_spcd_corr_err_c8 ; // spc data
176output deccck_spcd_uncorr_err_c8 ; // spc data
177output deccck_spcd_notdata_err_c8; // spc data
178output deccck_scrd_corr_err_c8 ; // scrub
179output deccck_scrd_uncorr_err_c8 ; // scrub
180output deccck_spcfb_corr_err_c8 ; // spc data from fb
181output deccck_spcfb_uncorr_err_c8 ; // spc data from fb
182
183//output deccck_uncorr_err_c8; // an uncorr err has happenned Unqual
184//output deccck_corr_err_c8; // a correctable err has happened
185//output deccck_notdata_err_c8; // a notdata err has happened
186
187input deccck_uncorr_err_c8; // an uncorr err has happenned Unqual
188input deccck_corr_err_c8; // a correctable err has happened
189input deccck_notdata_err_c8; // a notdata err has happened
190
191//input data_uncorr_err_c7; // an uncorr err has happenned Unqual
192//input data_corr_err_c7; // a correctable err has happened
193//input data_notdata_err_c7; // a notdata err has happened
194
195input [3:0] deccdp_decck_uncorr_err_c7; // an uncorr err has happenned Unqual
196input [3:0] deccdp_decck_corr_err_c7; // a correctable err has happened
197//input [3:0] deccck_notdata_err_c7; // a notdata err has happened
198
199//input tag_spc_rd_vld_c7 ; // input for err classification
200input tag_spc_rd_vld_c6 ; // input for err classification
201input tag_bsc_rd_vld_c7; // NEW_PIN
202input tag_scrub_rd_vld_c7 ; // input for err classification
203
204//input filbuf_spc_corr_err_c7; // indicates that an corr err was
205// // received from the DRAM
206//input filbuf_spc_uncorr_err_c7; // indicates that an uncorr err was
207// // received from the DRAM
208//input filbuf_spc_rd_vld_c7; // indicates that an FB read is active for a
209// // sparc instruction
210
211input filbuf_spc_corr_err_c6;
212input filbuf_spc_uncorr_err_c6;
213input filbuf_spc_rd_vld_c6;
214
215
216//output deccck_sel_higher_dword_c7;
217output deccck_dword_sel_c7;
218
219output [3:0] deccck_muxsel_diag_out_c7;
220
221//output [2:0] deccck_ret_err_c8;
222//output [2:0] deccck_ret_err_c7;
223
224output [5:4] arbadr_arbdp_line_addr_c7;
225input [5:4] arbadr_arbdp_line_addr_c6;
226
227input l2clk;
228input scan_in;
229output scan_out;
230
231// from deccckdp.
232//input [5:0] decc_check0_c7;
233//input [5:0] decc_check1_c7;
234//input [5:0] decc_check2_c7;
235//input [5:0] decc_check3_c7;
236//input decc_parity0_c7;
237//input decc_parity1_c7;
238//input decc_parity2_c7;
239//input decc_parity3_c7;
240
241
242
243//////////////////////////////////////////////////
244// L1 clk header
245//////////////////////////////////////////////////
246assign pce_ov = tcu_pce_ov;
247assign stop = 1'b0;
248assign siclk = tcu_aclk;
249assign soclk = tcu_bclk;
250assign se = tcu_scan_en;
251
252l2t_deccck_ctl_l1clkhdr_ctl_macro clkgen (
253 .l2clk(l2clk),
254 .l1en(1'b1 ),
255 .l1clk(l1clk),
256 .pce_ov(pce_ov),
257 .stop(stop),
258 .se(se));
259
260//////////////////////////////////////////////////
261
262//////////////////////////////////////////
263// Spare gate insertion
264//////////////////////////////////////////
265l2t_deccck_ctl_spare_ctl_macro__num_4 spares (
266 .scan_in(spares_scanin),
267 .scan_out(spares_scanout),
268 .l1clk (l1clk),
269 .siclk(siclk),
270 .soclk(soclk)
271);
272//////////////////////////////////////////
273
274
275
276wire [3:0] corr_err_c7;
277wire [3:0] uncorr_err_c7;
278wire data_corr_err_c7;
279wire data_uncorr_err_c7;
280
281wire [1:0] bist_data_waddr_c2;
282wire [1:0] bist_data_waddr_c3;
283wire [1:0] bist_data_waddr_c4;
284wire [1:0] bist_data_waddr_c5;
285wire [1:0] bist_data_waddr_c52; // BS 03/11/04 extra cycle for mem access
286wire [1:0] bist_data_waddr_c6;
287
288wire bist_data_enable_c2;
289wire bist_data_enable_c3;
290wire bist_data_enable_c4;
291wire bist_data_enable_c5;
292wire bist_data_enable_c52; // BS 03/11/04 extra cycle for mem access
293wire bist_data_enable_c6;
294
295wire scr_data_corr_err_c7 ;
296wire scr_data_uncorr_err_c7 ;
297
298
299wire [2:0] ret_err_c7 ;
300wire error_ceen_d1 ;
301wire error_nceen_d1 ;
302
303
304
305wire [1:0] waddr_c7; // 3:2
306wire [1:0] diag_addr_c7;
307
308wire sel_higher_word_c6;
309wire sel_higher_dword_c6;
310
311wire sel_bist_c6;
312wire sel_diag_c7;
313wire sel_def_c6;
314
315
316wire data_corr_err_c8, filbuf_spc_rd_vld_c8, filbuf_spc_corr_err_c8;
317wire spc_rd_vld_c8, bsc_rd_vld_c8;
318wire filbuf_spc_uncorr_err_c8;
319
320
321
322
323/////////////
324//// Bug id 91419
325//// to distinguish not data from CE need to qualify it with
326//// not notdata
327////
328//// assign corr_err_c7[0] = decc_parity0_c7 ;
329//// assign corr_err_c7[1] = decc_parity1_c7 ;
330//// assign corr_err_c7[2] = decc_parity2_c7 ;
331//// assign corr_err_c7[3] = decc_parity3_c7 ;
332//
333//assign corr_err_c7[0] = decc_parity0_c7 & ~(decc_check0_c7[5:0] == 6'b111111);
334//assign corr_err_c7[1] = decc_parity1_c7 & ~(decc_check1_c7[5:0] == 6'b111111);
335//assign corr_err_c7[2] = decc_parity2_c7 & ~(decc_check2_c7[5:0] == 6'b111111);
336//assign corr_err_c7[3] = decc_parity3_c7 & ~(decc_check3_c7[5:0] == 6'b111111);
337//
338//
339//
340//
341//assign data_corr_err_c7 = |( corr_err_c7[3:0] ) ;
342//
343//// BS 06/13/04 added Notdata logic
344//// detect Notdata if check bits are all 1's on any 4 byte segment, and it is not a sparc
345//// read of the fill buffer before the fill.
346//
347//assign data_notdata_err_c7 = (({decc_parity0_c7,decc_check0_c7[5:0]} == 7'b1111111) |
348// ({decc_parity1_c7,decc_check1_c7[5:0]} == 7'b1111111) |
349// ({decc_parity2_c7,decc_check2_c7[5:0]} == 7'b1111111) |
350// ({decc_parity3_c7,decc_check3_c7[5:0]} == 7'b1111111))
351// & ~filbuf_spc_rd_vld_c7;
352//
353//// in case the Notdata is detected on a sparc read of the Fill buffer itself, should
354//// treat it as UE . this is because a UE trap has not been issued yet, as the
355//// read of the fill buffer is happening before the fill.
356//
357//assign uncorr_err_c7[0] = (|(decc_check0_c7[5:0]) & ~decc_parity0_c7) |
358// (({decc_parity0_c7,decc_check0_c7[5:0]} == 7'b1111111) & filbuf_spc_rd_vld_c7) ;
359//assign uncorr_err_c7[1] = (|(decc_check1_c7[5:0]) & ~decc_parity1_c7) |
360// (({decc_parity1_c7,decc_check1_c7[5:0]} == 7'b1111111) & filbuf_spc_rd_vld_c7);
361//assign uncorr_err_c7[2] = (|(decc_check2_c7[5:0]) & ~decc_parity2_c7) |
362// (({decc_parity2_c7,decc_check2_c7[5:0]} == 7'b1111111) & filbuf_spc_rd_vld_c7) ;
363//assign uncorr_err_c7[3] = (|(decc_check3_c7[5:0]) & ~decc_parity3_c7) |
364// (({decc_parity3_c7,decc_check3_c7[5:0]} == 7'b1111111) & filbuf_spc_rd_vld_c7) ;
365//
366//assign data_uncorr_err_c7 = |(uncorr_err_c7[3:0]) ;
367//
368//
369
370assign uncorr_err_c7[3:0] = deccdp_decck_uncorr_err_c7[3:0];
371assign corr_err_c7[3:0] = deccdp_decck_corr_err_c7[3:0];
372
373
374l2t_deccck_ctl_msff_ctl_macro__width_3 ff_bist_en_c2
375 (.dout ({arbadr_arbdp_line_addr_c7[5:4],bist_data_enable_c2}),
376 .scan_in(ff_bist_en_c2_scanin),
377 .scan_out(ff_bist_en_c2_scanout),
378 .din ({arbadr_arbdp_line_addr_c6[5:4],bist_data_enable_c1}),
379 .l1clk (l1clk),
380 .siclk(siclk),
381 .soclk(soclk)
382) ;
383l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bist_en_c3
384 (.dout (bist_data_enable_c3), .din (bist_data_enable_c2),
385 .scan_in(ff_bist_en_c3_scanin),
386 .scan_out(ff_bist_en_c3_scanout),
387 .l1clk (l1clk),
388 .siclk(siclk),
389 .soclk(soclk)
390) ;
391l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bist_en_c4
392 (.dout (bist_data_enable_c4), .din (bist_data_enable_c3),
393 .scan_in(ff_bist_en_c4_scanin),
394 .scan_out(ff_bist_en_c4_scanout),
395 .l1clk (l1clk),
396 .siclk(siclk),
397 .soclk(soclk)
398) ;
399l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bist_en_c5
400 (.dout (bist_data_enable_c5), .din (bist_data_enable_c4),
401 .scan_in(ff_bist_en_c5_scanin),
402 .scan_out(ff_bist_en_c5_scanout),
403 .l1clk (l1clk),
404 .siclk(siclk),
405 .soclk(soclk)
406) ;
407
408// BS 03/11/04 extra cycle for mem access
409
410l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bist_en_c52
411 (.dout (bist_data_enable_c52), .din (bist_data_enable_c5),
412 .scan_in(ff_bist_en_c52_scanin),
413 .scan_out(ff_bist_en_c52_scanout),
414 .l1clk (l1clk),
415 .siclk(siclk),
416 .soclk(soclk)
417) ;
418
419l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bist_en_c6
420 (.dout (bist_data_enable_c6), .din (bist_data_enable_c52),
421 .scan_in(ff_bist_en_c6_scanin),
422 .scan_out(ff_bist_en_c6_scanout),
423 .l1clk (l1clk),
424 .siclk(siclk),
425 .soclk(soclk)
426) ;
427
428
429l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c2
430 (.dout (bist_data_waddr_c2[1:0]), .din (bist_data_waddr_c1[1:0]),
431 .scan_in(ff_bist_waddr_c2_scanin),
432 .scan_out(ff_bist_waddr_c2_scanout),
433 .l1clk (l1clk),
434 .siclk(siclk),
435 .soclk(soclk)
436) ;
437l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c3
438 (.dout (bist_data_waddr_c3[1:0]), .din (bist_data_waddr_c2[1:0]),
439 .scan_in(ff_bist_waddr_c3_scanin),
440 .scan_out(ff_bist_waddr_c3_scanout),
441 .l1clk (l1clk),
442 .siclk(siclk),
443 .soclk(soclk)
444) ;
445l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c4
446 (.dout (bist_data_waddr_c4[1:0]), .din (bist_data_waddr_c3[1:0]),
447 .scan_in(ff_bist_waddr_c4_scanin),
448 .scan_out(ff_bist_waddr_c4_scanout),
449 .l1clk (l1clk),
450 .siclk(siclk),
451 .soclk(soclk)
452) ;
453l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c5
454 (.dout (bist_data_waddr_c5[1:0]), .din (bist_data_waddr_c4[1:0]),
455 .scan_in(ff_bist_waddr_c5_scanin),
456 .scan_out(ff_bist_waddr_c5_scanout),
457 .l1clk (l1clk),
458 .siclk(siclk),
459 .soclk(soclk)
460) ;
461
462// BS 03/11/04 extra cycle for mem access
463
464l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c52
465 (.dout (bist_data_waddr_c52[1:0]), .din (bist_data_waddr_c5[1:0]),
466 .scan_in(ff_bist_waddr_c52_scanin),
467 .scan_out(ff_bist_waddr_c52_scanout),
468 .l1clk (l1clk),
469 .siclk(siclk),
470 .soclk(soclk)
471) ;
472
473l2t_deccck_ctl_msff_ctl_macro__width_2 ff_bist_waddr_c6
474 (.dout (bist_data_waddr_c6[1:0]), .din (bist_data_waddr_c52[1:0]),
475 .scan_in(ff_bist_waddr_c6_scanin),
476 .scan_out(ff_bist_waddr_c6_scanout),
477 .l1clk (l1clk),
478 .siclk(siclk),
479 .soclk(soclk)
480) ;
481
482
483//
484//msff_ctl_macro ff_deccck_uncorr_err_c8 (width=1)
485// (.dout (deccck_uncorr_err_c8), .din (data_uncorr_err_c7),
486// .scan_in(ff_deccck_uncorr_err_c8_scanin),
487// .scan_out(ff_deccck_uncorr_err_c8_scanout),
488// .l1clk (l1clk)
489//) ;
490
491// BS 06/13/04 : added Notdata logic
492// register notdata error bit
493//
494//msff_ctl_macro ff_deccck_notdata_err_c8 (width=1)
495// (.dout (deccck_notdata_err_c8), .din (data_notdata_err_c7),
496// .scan_in(ff_deccck_notdata_err_c8_scanin),
497// .scan_out(ff_deccck_notdata_err_c8_scanout),
498// .l1clk (l1clk)
499//) ;
500//
501//
502//msff_ctl_macro ff_data_corr_err_c8 (width=1)
503// (.dout (data_corr_err_c8), .din (data_corr_err_c7),
504// .scan_in(ff_data_corr_err_c8_scanin),
505// .scan_out(ff_data_corr_err_c8_scanout),
506// .l1clk (l1clk)
507// ) ;
508////
509//assign deccck_corr_err_c8 = data_corr_err_c8; // BS 03/18/04 : taking out deccck_corr_err_c8 to gate off cas and
510// // swap/ldstub stores updates in case of Correctable Error as part
511// // of new requirment for RAS in N2 to retry the atomics on a CE.
512// // because of the retry, the update for the store should not happen
513// // in L2.
514
515assign data_corr_err_c8 = deccck_corr_err_c8;
516
517
518l2t_deccck_ctl_msff_ctl_macro__width_4 ff_misc_terms
519 (
520 .scan_in(ff_misc_terms_scanin),
521 .scan_out(ff_misc_terms_scanout),
522 .dout ({tag_spc_rd_vld_c7,filbuf_spc_rd_vld_c7,filbuf_spc_corr_err_c7,filbuf_spc_uncorr_err_c7}),
523 .din ({tag_spc_rd_vld_c6,filbuf_spc_rd_vld_c6, filbuf_spc_corr_err_c6,filbuf_spc_uncorr_err_c6}),
524 .l1clk (l1clk),
525 .siclk(siclk),
526 .soclk(soclk)
527 );
528
529l2t_deccck_ctl_msff_ctl_macro__width_1 ff_spc_rd_vld_c8
530 (.dout (spc_rd_vld_c8), .din (tag_spc_rd_vld_c7),
531 .scan_in(ff_spc_rd_vld_c8_scanin),
532 .scan_out(ff_spc_rd_vld_c8_scanout),
533 .l1clk (l1clk),
534 .siclk(siclk),
535 .soclk(soclk)
536
537 ) ;
538
539assign deccck_spcd_corr_err_c8 = data_corr_err_c8 & spc_rd_vld_c8;
540assign deccck_spcd_uncorr_err_c8 = deccck_uncorr_err_c8 & spc_rd_vld_c8;
541assign deccck_spcd_notdata_err_c8 = deccck_notdata_err_c8 & spc_rd_vld_c8;
542
543assign scr_data_corr_err_c7 = (((corr_err_c7[3] | corr_err_c7[2]) & ~tag_deccck_addr3_c7) |
544 ((corr_err_c7[1] | corr_err_c7[0]) & tag_deccck_addr3_c7)
545 ) & tag_scrub_rd_vld_c7 ;
546
547l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_scrd_corr_err_c8
548 (.dout (deccck_scrd_corr_err_c8), .din (scr_data_corr_err_c7),
549 .scan_in(ff_deccck_scrd_corr_err_c8_scanin),
550 .scan_out(ff_deccck_scrd_corr_err_c8_scanout),
551 .l1clk (l1clk),
552 .siclk(siclk),
553 .soclk(soclk)
554
555 ) ;
556
557assign scr_data_uncorr_err_c7 = (((uncorr_err_c7[3] | uncorr_err_c7[2]) & ~tag_deccck_addr3_c7) |
558 ((uncorr_err_c7[1] | uncorr_err_c7[0]) & tag_deccck_addr3_c7)
559 ) & tag_scrub_rd_vld_c7 ;
560
561l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_scrd_uncorr_err_c8
562 (.dout (deccck_scrd_uncorr_err_c8), .din (scr_data_uncorr_err_c7),
563 .scan_in(ff_deccck_scrd_uncorr_err_c8_scanin),
564 .scan_out(ff_deccck_scrd_uncorr_err_c8_scanout),
565 .l1clk (l1clk),
566 .siclk(siclk),
567 .soclk(soclk)
568) ;
569
570
571
572l2t_deccck_ctl_msff_ctl_macro__width_1 ff_filbuf_spc_rd_vld_c8
573 (.dout (filbuf_spc_rd_vld_c8), .din (filbuf_spc_rd_vld_c7),
574 .scan_in(ff_filbuf_spc_rd_vld_c8_scanin),
575 .scan_out(ff_filbuf_spc_rd_vld_c8_scanout),
576 .l1clk (l1clk),
577 .siclk(siclk),
578 .soclk(soclk)
579
580 ) ;
581
582l2t_deccck_ctl_msff_ctl_macro__width_1 ff_filbuf_spc_corr_err_c8
583 (.dout (filbuf_spc_corr_err_c8), .din (filbuf_spc_corr_err_c7),
584 .scan_in(ff_filbuf_spc_corr_err_c8_scanin),
585 .scan_out(ff_filbuf_spc_corr_err_c8_scanout),
586 .l1clk (l1clk),
587 .siclk(siclk),
588 .soclk(soclk)
589
590 ) ;
591
592l2t_deccck_ctl_msff_ctl_macro__width_1 ff_filbuf_spc_uncorr_err_c8
593 (.dout (filbuf_spc_uncorr_err_c8), .din (filbuf_spc_uncorr_err_c7),
594 .scan_in(ff_filbuf_spc_uncorr_err_c8_scanin),
595 .scan_out(ff_filbuf_spc_uncorr_err_c8_scanout),
596 .l1clk (l1clk),
597 .siclk(siclk),
598 .soclk(soclk)
599
600 ) ;
601
602assign deccck_spcfb_corr_err_c8 = (data_corr_err_c8 & filbuf_spc_rd_vld_c8) |
603 filbuf_spc_corr_err_c8;
604
605
606assign deccck_spcfb_uncorr_err_c8 = (deccck_uncorr_err_c8 & filbuf_spc_rd_vld_c8) |
607 filbuf_spc_uncorr_err_c8;
608
609
610l2t_deccck_ctl_msff_ctl_macro__width_1 ff_bsc_rd_vld_c8
611 (.dout (bsc_rd_vld_c8), .din (tag_bsc_rd_vld_c7),
612 .scan_in(ff_bsc_rd_vld_c8_scanin),
613 .scan_out(ff_bsc_rd_vld_c8_scanout),
614 .l1clk (l1clk),
615 .siclk(siclk),
616 .soclk(soclk)
617
618 ) ;
619
620assign deccck_bscd_corr_err_c8 = data_corr_err_c8 & bsc_rd_vld_c8;
621
622assign deccck_bscd_uncorr_err_c8 = deccck_uncorr_err_c8 & bsc_rd_vld_c8;
623
624assign deccck_bscd_notdata_err_c8 = deccck_notdata_err_c8 & bsc_rd_vld_c8;
625
626
627
628
629
630// csr_error_ceen and csr_error_nceen are the register bits for enabling the reporting
631// of the correctable and uncorrectable error respectively.
632//
633//msff_ctl_macro ff_error_ceen_d1 (width=1)
634// (.dout (error_ceen_d1), .din (csr_error_ceen),
635// .scan_in(ff_error_ceen_d1_scanin),
636// .scan_out(ff_error_ceen_d1_scanout),
637// .l1clk (l1clk),
638//) ;
639//
640//msff_ctl_macro ff_error_nceen_d1 (width=1)
641// (.dout (error_nceen_d1), .din (csr_error_nceen),
642// .scan_in(ff_error_nceen_d1_scanin),
643// .scan_out(ff_error_nceen_d1_scanout),
644// .l1clk (l1clk)
645//) ;
646//
647
648// only precise error reporting is handled here.
649//
650//assign ret_err_c7[0] = ((data_corr_err_c7 | filbuf_spc_corr_err_c7) &
651// ( ( tag_spc_rd_vld_c7 | filbuf_spc_rd_vld_c7 |
652// filbuf_spc_corr_err_c7 ) & error_ceen_d1 )) |
653// (data_notdata_err_c7 & tag_spc_rd_vld_c7 & error_nceen_d1);
654// // Notdata encoding is err[1:0] = 2'b11
655//
656//assign ret_err_c7[1] = ((data_uncorr_err_c7 | filbuf_spc_uncorr_err_c7) &
657// ( ( tag_spc_rd_vld_c7 | filbuf_spc_rd_vld_c7 |
658// filbuf_spc_uncorr_err_c7 ) & error_nceen_d1 )) |
659// (data_notdata_err_c7 & tag_spc_rd_vld_c7 & error_nceen_d1);
660// // Notdata encoding is err[1:0] = 2'b11
661//
662//
663//
664//assign ret_err_c7_uece[0] = ((data_corr_err_c7 | filbuf_spc_corr_err_c7) &
665// ((tag_spc_rd_vld_c7 | filbuf_spc_rd_vld_c7 | filbuf_spc_corr_err_c7 )
666// & error_ceen_d1 ));
667//
668//assign ret_err_c7_uece[1] = ((data_uncorr_err_c7 | filbuf_spc_uncorr_err_c7) &
669// ((tag_spc_rd_vld_c7 | filbuf_spc_rd_vld_c7 | filbuf_spc_uncorr_err_c7 )
670// & error_nceen_d1 )) ;
671//
672//assign ret_err_c7_nd[0] = (data_notdata_err_c7 & tag_spc_rd_vld_c7 & error_nceen_d1);
673//assign ret_err_c7_nd[1] = (data_notdata_err_c7 & tag_spc_rd_vld_c7 & error_nceen_d1);
674//
675//assign ret_err_c7[0] = (ret_err_c7_uece[0] & ~ret_err_c7_uece[1]) | ret_err_c7_nd[0];
676//assign ret_err_c7[1] = ret_err_c7_uece[1] | ret_err_c7_nd[0];
677//
678//assign ret_err_c7[2] = 1'b0 ; // RSVD
679//
680//msff_ctl_macro ff_ret_err_c8 (width=3)
681// (.dout (deccck_ret_err_c8[2:0]), .din (ret_err_c7[2:0]),
682// .scan_in(ff_ret_err_c8_scanin),
683// .scan_out(ff_ret_err_c8_scanout),
684// .l1clk (l1clk)
685//
686//) ;
687//
688//
689//assign deccck_ret_err_c7[2:0] = ret_err_c7[2:0] ;
690//
691
692//////////////////////////////////////////////////////////////////////////
693//
694// data that is xmitted to the arbdat block
695// The following 2-1 mUX is used for psts.
696// In C6, the data is merged with partial dirty data and written into
697// the Miss Buffer.
698// arbadr_arbdp_waddr_c6[1:0] is the Address bit[3:2] of the regular instruction.
699// "arbdp_addr22_c7" is the Address Bit[22] of the Diagnostic access.
700// It is equivalent to the address bit[2] for the diagnostic access and is
701// used for selecting 32 bit out of 128 bit read from the L2$ data array.
702//
703//////////////////////////////////////////////////////////////////////////
704
705// arbadr_arbdp_waddr_c6[1:0] is the Address bit[3:2] of the regular instruction.
706l2t_deccck_ctl_msff_ctl_macro__width_2 ff_waddr_c7
707 (.dout (waddr_c7[1:0]),
708 .scan_in(ff_waddr_c7_scanin),
709 .scan_out(ff_waddr_c7_scanout),
710 .din (arbadr_arbdp_waddr_c6[1:0]),
711 .l1clk (l1clk),
712 .siclk(siclk),
713 .soclk(soclk)
714
715
716 ) ;
717
718assign diag_addr_c7 = {waddr_c7[1], arbadr_arbdp_addr22_c7} ;
719
720
721
722// Address bit[3] of Scrub instruction, used for selecting 64 bit out of
723// 128 bit read from the L2$ data array.
724
725
726
727l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_active_c4
728 (.dout (data_ecc_active_c4),
729 .scan_in(ff_deccck_active_c4_scanin),
730 .scan_out(ff_deccck_active_c4_scanout),
731 .din (tag_data_ecc_active_c3),
732 .l1clk (l1clk),
733 .siclk(siclk),
734 .soclk(soclk)
735
736
737 ) ;
738l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_active_c5
739 (.dout (data_ecc_active_c5),
740 .scan_in(ff_deccck_active_c5_scanin),
741 .scan_out(ff_deccck_active_c5_scanout),
742 .din (data_ecc_active_c4),
743 .l1clk (l1clk),
744 .siclk(siclk),
745 .soclk(soclk)
746
747
748 ) ;
749
750// BS 03/11/04 extra cycle for mem access
751
752l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_active_c52
753 (.dout (data_ecc_active_c52),
754 .scan_in(ff_deccck_active_c52_scanin),
755 .scan_out(ff_deccck_active_c52_scanout),
756 .din (data_ecc_active_c5),
757 .l1clk (l1clk),
758 .siclk(siclk),
759 .soclk(soclk)
760
761
762 ) ;
763
764l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_active_c6
765 (.dout (data_ecc_active_c6),
766 .scan_in(ff_deccck_active_c6_scanin),
767 .scan_out(ff_deccck_active_c6_scanout),
768 .din (data_ecc_active_c52),
769 .l1clk (l1clk),
770 .siclk(siclk),
771 .soclk(soclk)
772
773
774 ) ;
775l2t_deccck_ctl_msff_ctl_macro__width_1 ff_deccck_active_c7
776 (.dout (data_ecc_active_c7),
777 .scan_in(ff_deccck_active_c7_scanin),
778 .scan_out(ff_deccck_active_c7_scanout),
779 .din (data_ecc_active_c6),
780 .l1clk (l1clk),
781 .siclk(siclk),
782 .soclk(soclk)
783
784
785 ) ;
786
787assign deccck_dword_sel_c7 = (diag_addr_c7[1] & ~data_ecc_active_c7)
788 | tag_deccck_addr3_c7 ;
789
790// the following data muxes are used for
791// 1. diagnostic accesses to l2data
792// 2. tap reads to DRAm addresses.
793// 3. bist accesses to l2data.
794// these operation need 39 bit data out of the 156 bit read from the L2 array,
795// so the data needs to be muxed 4:1. The 4to1 muxing is mbist_done in two stages
796// of 2to1 muxing using the address bit[3:2] as the select signals.
797
798l2t_deccck_ctl_msff_ctl_macro__width_1 ff_diag_data_vld_c7
799 (.dout (diag_data_vld_c7), .din (arb_inst_l2data_vld_c6),
800 .scan_in(ff_diag_data_vld_c7_scanin),
801 .scan_out(ff_diag_data_vld_c7_scanout),
802 .l1clk (l1clk),
803 .siclk(siclk),
804 .soclk(soclk)
805) ;
806
807
808assign sel_bist_c6 = bist_data_enable_c6 ;
809assign sel_diag_c7 = diag_data_vld_c7 & ~bist_data_enable_c6 ;
810assign sel_def_c6 = ~diag_data_vld_c7 & ~bist_data_enable_c6 ;
811
812assign sel_higher_word_c6 = (diag_addr_c7[0] & sel_diag_c7) |
813 (bist_data_waddr_c6[0] & sel_bist_c6) |
814 (arbadr_arbdp_waddr_c6[0] & sel_def_c6) ;
815
816
817
818
819assign sel_higher_dword_c6 = (diag_addr_c7[1] & sel_diag_c7) |
820 (bist_data_waddr_c6[1] & sel_bist_c6) |
821 (arbadr_arbdp_waddr_c6[1] & sel_def_c6) ;
822
823//msff_ctl_macro ff_sel_higher_dword_c7 (width=1)
824// (.dout (deccck_sel_higher_dword_c7), .din (sel_higher_dword_c6),
825// .scan_in(ff_sel_higher_dword_c7_scanin),
826// .scan_out(ff_sel_higher_dword_c7_scanout),
827// .l1clk (l1clk),
828//) ;
829
830
831
832assign deccck_muxsel_diag_out_c6[0] = ~sel_higher_word_c6 & ~sel_higher_dword_c6;
833assign deccck_muxsel_diag_out_c6[1] = sel_higher_word_c6 & ~sel_higher_dword_c6;
834assign deccck_muxsel_diag_out_c6[2] = ~sel_higher_word_c6 & sel_higher_dword_c6;
835assign deccck_muxsel_diag_out_c6[3] = sel_higher_word_c6 & sel_higher_dword_c6;
836
837
838l2t_deccck_ctl_msff_ctl_macro__width_4 ff_deccck_muxsel_diag_out_c7
839 (
840 .scan_in(ff_deccck_muxsel_diag_out_c7_scanin),
841 .scan_out(ff_deccck_muxsel_diag_out_c7_scanout),
842 .dout (deccck_muxsel_diag_out_c7[3:0]),
843 .din (deccck_muxsel_diag_out_c6[3:0]),
844 .l1clk (l1clk),
845 .siclk(siclk),
846 .soclk(soclk)
847 ) ;
848
849
850// fixscan start:
851assign spares_scanin = scan_in ;
852assign ff_bist_en_c2_scanin = spares_scanout ;
853assign ff_bist_en_c3_scanin = ff_bist_en_c2_scanout ;
854assign ff_bist_en_c4_scanin = ff_bist_en_c3_scanout ;
855assign ff_bist_en_c5_scanin = ff_bist_en_c4_scanout ;
856assign ff_bist_en_c52_scanin = ff_bist_en_c5_scanout ;
857assign ff_bist_en_c6_scanin = ff_bist_en_c52_scanout ;
858assign ff_bist_waddr_c2_scanin = ff_bist_en_c6_scanout ;
859assign ff_bist_waddr_c3_scanin = ff_bist_waddr_c2_scanout ;
860assign ff_bist_waddr_c4_scanin = ff_bist_waddr_c3_scanout ;
861assign ff_bist_waddr_c5_scanin = ff_bist_waddr_c4_scanout ;
862assign ff_bist_waddr_c52_scanin = ff_bist_waddr_c5_scanout ;
863assign ff_bist_waddr_c6_scanin = ff_bist_waddr_c52_scanout;
864assign ff_misc_terms_scanin = ff_bist_waddr_c6_scanout ;
865assign ff_spc_rd_vld_c8_scanin = ff_misc_terms_scanout ;
866assign ff_deccck_scrd_corr_err_c8_scanin = ff_spc_rd_vld_c8_scanout ;
867assign ff_deccck_scrd_uncorr_err_c8_scanin = ff_deccck_scrd_corr_err_c8_scanout;
868assign ff_filbuf_spc_rd_vld_c8_scanin = ff_deccck_scrd_uncorr_err_c8_scanout;
869assign ff_filbuf_spc_corr_err_c8_scanin = ff_filbuf_spc_rd_vld_c8_scanout;
870assign ff_filbuf_spc_uncorr_err_c8_scanin = ff_filbuf_spc_corr_err_c8_scanout;
871assign ff_bsc_rd_vld_c8_scanin = ff_filbuf_spc_uncorr_err_c8_scanout;
872assign ff_waddr_c7_scanin = ff_bsc_rd_vld_c8_scanout ;
873assign ff_deccck_active_c4_scanin = ff_waddr_c7_scanout ;
874assign ff_deccck_active_c5_scanin = ff_deccck_active_c4_scanout;
875assign ff_deccck_active_c52_scanin = ff_deccck_active_c5_scanout;
876assign ff_deccck_active_c6_scanin = ff_deccck_active_c52_scanout;
877assign ff_deccck_active_c7_scanin = ff_deccck_active_c6_scanout;
878assign ff_diag_data_vld_c7_scanin = ff_deccck_active_c7_scanout;
879assign ff_deccck_muxsel_diag_out_c7_scanin = ff_diag_data_vld_c7_scanout;
880assign scan_out = ff_deccck_muxsel_diag_out_c7_scanout;
881// fixscan end:
882endmodule
883
884
885
886
887
888
889
890// any PARAMS parms go into naming of macro
891
892module l2t_deccck_ctl_l1clkhdr_ctl_macro (
893 l2clk,
894 l1en,
895 pce_ov,
896 stop,
897 se,
898 l1clk);
899
900
901 input l2clk;
902 input l1en;
903 input pce_ov;
904 input stop;
905 input se;
906 output l1clk;
907
908
909
910
911
912cl_sc1_l1hdr_8x c_0 (
913
914
915 .l2clk(l2clk),
916 .pce(l1en),
917 .l1clk(l1clk),
918 .se(se),
919 .pce_ov(pce_ov),
920 .stop(stop)
921);
922
923
924
925endmodule
926
927
928
929
930
931
932
933
934
935// Description: Spare gate macro for control blocks
936//
937// Param num controls the number of times the macro is added
938// flops=0 can be used to use only combination spare logic
939
940
941module l2t_deccck_ctl_spare_ctl_macro__num_4 (
942 l1clk,
943 scan_in,
944 siclk,
945 soclk,
946 scan_out);
947wire si_0;
948wire so_0;
949wire spare0_flop_unused;
950wire spare0_buf_32x_unused;
951wire spare0_nand3_8x_unused;
952wire spare0_inv_8x_unused;
953wire spare0_aoi22_4x_unused;
954wire spare0_buf_8x_unused;
955wire spare0_oai22_4x_unused;
956wire spare0_inv_16x_unused;
957wire spare0_nand2_16x_unused;
958wire spare0_nor3_4x_unused;
959wire spare0_nand2_8x_unused;
960wire spare0_buf_16x_unused;
961wire spare0_nor2_16x_unused;
962wire spare0_inv_32x_unused;
963wire si_1;
964wire so_1;
965wire spare1_flop_unused;
966wire spare1_buf_32x_unused;
967wire spare1_nand3_8x_unused;
968wire spare1_inv_8x_unused;
969wire spare1_aoi22_4x_unused;
970wire spare1_buf_8x_unused;
971wire spare1_oai22_4x_unused;
972wire spare1_inv_16x_unused;
973wire spare1_nand2_16x_unused;
974wire spare1_nor3_4x_unused;
975wire spare1_nand2_8x_unused;
976wire spare1_buf_16x_unused;
977wire spare1_nor2_16x_unused;
978wire spare1_inv_32x_unused;
979wire si_2;
980wire so_2;
981wire spare2_flop_unused;
982wire spare2_buf_32x_unused;
983wire spare2_nand3_8x_unused;
984wire spare2_inv_8x_unused;
985wire spare2_aoi22_4x_unused;
986wire spare2_buf_8x_unused;
987wire spare2_oai22_4x_unused;
988wire spare2_inv_16x_unused;
989wire spare2_nand2_16x_unused;
990wire spare2_nor3_4x_unused;
991wire spare2_nand2_8x_unused;
992wire spare2_buf_16x_unused;
993wire spare2_nor2_16x_unused;
994wire spare2_inv_32x_unused;
995wire si_3;
996wire so_3;
997wire spare3_flop_unused;
998wire spare3_buf_32x_unused;
999wire spare3_nand3_8x_unused;
1000wire spare3_inv_8x_unused;
1001wire spare3_aoi22_4x_unused;
1002wire spare3_buf_8x_unused;
1003wire spare3_oai22_4x_unused;
1004wire spare3_inv_16x_unused;
1005wire spare3_nand2_16x_unused;
1006wire spare3_nor3_4x_unused;
1007wire spare3_nand2_8x_unused;
1008wire spare3_buf_16x_unused;
1009wire spare3_nor2_16x_unused;
1010wire spare3_inv_32x_unused;
1011
1012
1013input l1clk;
1014input scan_in;
1015input siclk;
1016input soclk;
1017output scan_out;
1018
1019cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
1020 .siclk(siclk),
1021 .soclk(soclk),
1022 .si(si_0),
1023 .so(so_0),
1024 .d(1'b0),
1025 .q(spare0_flop_unused));
1026assign si_0 = scan_in;
1027
1028cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
1029 .out(spare0_buf_32x_unused));
1030cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
1031 .in1(1'b1),
1032 .in2(1'b1),
1033 .out(spare0_nand3_8x_unused));
1034cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
1035 .out(spare0_inv_8x_unused));
1036cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
1037 .in01(1'b1),
1038 .in10(1'b1),
1039 .in11(1'b1),
1040 .out(spare0_aoi22_4x_unused));
1041cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
1042 .out(spare0_buf_8x_unused));
1043cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
1044 .in01(1'b1),
1045 .in10(1'b1),
1046 .in11(1'b1),
1047 .out(spare0_oai22_4x_unused));
1048cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
1049 .out(spare0_inv_16x_unused));
1050cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
1051 .in1(1'b1),
1052 .out(spare0_nand2_16x_unused));
1053cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
1054 .in1(1'b0),
1055 .in2(1'b0),
1056 .out(spare0_nor3_4x_unused));
1057cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
1058 .in1(1'b1),
1059 .out(spare0_nand2_8x_unused));
1060cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
1061 .out(spare0_buf_16x_unused));
1062cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
1063 .in1(1'b0),
1064 .out(spare0_nor2_16x_unused));
1065cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
1066 .out(spare0_inv_32x_unused));
1067
1068cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
1069 .siclk(siclk),
1070 .soclk(soclk),
1071 .si(si_1),
1072 .so(so_1),
1073 .d(1'b0),
1074 .q(spare1_flop_unused));
1075assign si_1 = so_0;
1076
1077cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
1078 .out(spare1_buf_32x_unused));
1079cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
1080 .in1(1'b1),
1081 .in2(1'b1),
1082 .out(spare1_nand3_8x_unused));
1083cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
1084 .out(spare1_inv_8x_unused));
1085cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
1086 .in01(1'b1),
1087 .in10(1'b1),
1088 .in11(1'b1),
1089 .out(spare1_aoi22_4x_unused));
1090cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
1091 .out(spare1_buf_8x_unused));
1092cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
1093 .in01(1'b1),
1094 .in10(1'b1),
1095 .in11(1'b1),
1096 .out(spare1_oai22_4x_unused));
1097cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
1098 .out(spare1_inv_16x_unused));
1099cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
1100 .in1(1'b1),
1101 .out(spare1_nand2_16x_unused));
1102cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
1103 .in1(1'b0),
1104 .in2(1'b0),
1105 .out(spare1_nor3_4x_unused));
1106cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
1107 .in1(1'b1),
1108 .out(spare1_nand2_8x_unused));
1109cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
1110 .out(spare1_buf_16x_unused));
1111cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
1112 .in1(1'b0),
1113 .out(spare1_nor2_16x_unused));
1114cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
1115 .out(spare1_inv_32x_unused));
1116
1117cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
1118 .siclk(siclk),
1119 .soclk(soclk),
1120 .si(si_2),
1121 .so(so_2),
1122 .d(1'b0),
1123 .q(spare2_flop_unused));
1124assign si_2 = so_1;
1125
1126cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
1127 .out(spare2_buf_32x_unused));
1128cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
1129 .in1(1'b1),
1130 .in2(1'b1),
1131 .out(spare2_nand3_8x_unused));
1132cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
1133 .out(spare2_inv_8x_unused));
1134cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
1135 .in01(1'b1),
1136 .in10(1'b1),
1137 .in11(1'b1),
1138 .out(spare2_aoi22_4x_unused));
1139cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
1140 .out(spare2_buf_8x_unused));
1141cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
1142 .in01(1'b1),
1143 .in10(1'b1),
1144 .in11(1'b1),
1145 .out(spare2_oai22_4x_unused));
1146cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
1147 .out(spare2_inv_16x_unused));
1148cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
1149 .in1(1'b1),
1150 .out(spare2_nand2_16x_unused));
1151cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
1152 .in1(1'b0),
1153 .in2(1'b0),
1154 .out(spare2_nor3_4x_unused));
1155cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
1156 .in1(1'b1),
1157 .out(spare2_nand2_8x_unused));
1158cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
1159 .out(spare2_buf_16x_unused));
1160cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
1161 .in1(1'b0),
1162 .out(spare2_nor2_16x_unused));
1163cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
1164 .out(spare2_inv_32x_unused));
1165
1166cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
1167 .siclk(siclk),
1168 .soclk(soclk),
1169 .si(si_3),
1170 .so(so_3),
1171 .d(1'b0),
1172 .q(spare3_flop_unused));
1173assign si_3 = so_2;
1174
1175cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
1176 .out(spare3_buf_32x_unused));
1177cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
1178 .in1(1'b1),
1179 .in2(1'b1),
1180 .out(spare3_nand3_8x_unused));
1181cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
1182 .out(spare3_inv_8x_unused));
1183cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
1184 .in01(1'b1),
1185 .in10(1'b1),
1186 .in11(1'b1),
1187 .out(spare3_aoi22_4x_unused));
1188cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
1189 .out(spare3_buf_8x_unused));
1190cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
1191 .in01(1'b1),
1192 .in10(1'b1),
1193 .in11(1'b1),
1194 .out(spare3_oai22_4x_unused));
1195cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
1196 .out(spare3_inv_16x_unused));
1197cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
1198 .in1(1'b1),
1199 .out(spare3_nand2_16x_unused));
1200cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
1201 .in1(1'b0),
1202 .in2(1'b0),
1203 .out(spare3_nor3_4x_unused));
1204cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
1205 .in1(1'b1),
1206 .out(spare3_nand2_8x_unused));
1207cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
1208 .out(spare3_buf_16x_unused));
1209cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
1210 .in1(1'b0),
1211 .out(spare3_nor2_16x_unused));
1212cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
1213 .out(spare3_inv_32x_unused));
1214assign scan_out = so_3;
1215
1216
1217
1218endmodule
1219
1220
1221
1222
1223
1224
1225// any PARAMS parms go into naming of macro
1226
1227module l2t_deccck_ctl_msff_ctl_macro__width_3 (
1228 din,
1229 l1clk,
1230 scan_in,
1231 siclk,
1232 soclk,
1233 dout,
1234 scan_out);
1235wire [2:0] fdin;
1236wire [1:0] so;
1237
1238 input [2:0] din;
1239 input l1clk;
1240 input scan_in;
1241
1242
1243 input siclk;
1244 input soclk;
1245
1246 output [2:0] dout;
1247 output scan_out;
1248assign fdin[2:0] = din[2:0];
1249
1250
1251
1252
1253
1254
1255dff #(3) d0_0 (
1256.l1clk(l1clk),
1257.siclk(siclk),
1258.soclk(soclk),
1259.d(fdin[2:0]),
1260.si({scan_in,so[1:0]}),
1261.so({so[1:0],scan_out}),
1262.q(dout[2:0])
1263);
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276endmodule
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290// any PARAMS parms go into naming of macro
1291
1292module l2t_deccck_ctl_msff_ctl_macro__width_1 (
1293 din,
1294 l1clk,
1295 scan_in,
1296 siclk,
1297 soclk,
1298 dout,
1299 scan_out);
1300wire [0:0] fdin;
1301
1302 input [0:0] din;
1303 input l1clk;
1304 input scan_in;
1305
1306
1307 input siclk;
1308 input soclk;
1309
1310 output [0:0] dout;
1311 output scan_out;
1312assign fdin[0:0] = din[0:0];
1313
1314
1315
1316
1317
1318
1319dff #(1) d0_0 (
1320.l1clk(l1clk),
1321.siclk(siclk),
1322.soclk(soclk),
1323.d(fdin[0:0]),
1324.si(scan_in),
1325.so(scan_out),
1326.q(dout[0:0])
1327);
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340endmodule
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354// any PARAMS parms go into naming of macro
1355
1356module l2t_deccck_ctl_msff_ctl_macro__width_2 (
1357 din,
1358 l1clk,
1359 scan_in,
1360 siclk,
1361 soclk,
1362 dout,
1363 scan_out);
1364wire [1:0] fdin;
1365wire [0:0] so;
1366
1367 input [1:0] din;
1368 input l1clk;
1369 input scan_in;
1370
1371
1372 input siclk;
1373 input soclk;
1374
1375 output [1:0] dout;
1376 output scan_out;
1377assign fdin[1:0] = din[1:0];
1378
1379
1380
1381
1382
1383
1384dff #(2) d0_0 (
1385.l1clk(l1clk),
1386.siclk(siclk),
1387.soclk(soclk),
1388.d(fdin[1:0]),
1389.si({scan_in,so[0:0]}),
1390.so({so[0:0],scan_out}),
1391.q(dout[1:0])
1392);
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405endmodule
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419// any PARAMS parms go into naming of macro
1420
1421module l2t_deccck_ctl_msff_ctl_macro__width_4 (
1422 din,
1423 l1clk,
1424 scan_in,
1425 siclk,
1426 soclk,
1427 dout,
1428 scan_out);
1429wire [3:0] fdin;
1430wire [2:0] so;
1431
1432 input [3:0] din;
1433 input l1clk;
1434 input scan_in;
1435
1436
1437 input siclk;
1438 input soclk;
1439
1440 output [3:0] dout;
1441 output scan_out;
1442assign fdin[3:0] = din[3:0];
1443
1444
1445
1446
1447
1448
1449dff #(4) d0_0 (
1450.l1clk(l1clk),
1451.siclk(siclk),
1452.soclk(soclk),
1453.d(fdin[3:0]),
1454.si({scan_in,so[2:0]}),
1455.so({so[2:0],scan_out}),
1456.q(dout[3:0])
1457);
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470endmodule
1471
1472
1473
1474
1475
1476
1477
1478