Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / mcu / rtl / mcu_rdata_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: mcu_rdata_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 mcu_rdata_ctl (
36 mcu_ucb_rd_request_out,
37 mcu_ucb_wr_req_out,
38 mcu_ucb_mecc_err,
39 mcu_ucb_secc_err,
40 mcu_ucb_fbd_err,
41 mcu_ucb_err_mode,
42 mcu_ucb_err_event,
43 ccu_mcu_cmp_io_sync_en,
44 mcu_l2t0_qword_id_r0,
45 mcu_l2t0_data_vld_r0,
46 mcu_l2t0_rd_req_id_r0,
47 mcu_l2t0_mecc_err_r3,
48 mcu_l2t0_secc_err_r3,
49 mcu_l2t0_scb_mecc_err,
50 mcu_l2t0_scb_secc_err,
51 mcu_l2t1_qword_id_r0,
52 mcu_l2t1_data_vld_r0,
53 mcu_l2t1_rd_req_id_r0,
54 mcu_l2t1_mecc_err_r3,
55 mcu_l2t1_secc_err_r3,
56 mcu_l2t1_scb_mecc_err,
57 mcu_l2t1_scb_secc_err,
58 rdata_drif_rd_req_vld,
59 rdata_drif_wr_req_vld,
60 rdata_drif_addr,
61 rdata_drif_data,
62 rdata_mcu_selfrsh,
63 rdata_err_ecci,
64 rdata_err_fbri,
65 rdata_err_fbui,
66 mcu_ucb_ack_vld,
67 mcu_ucb_nack_vld,
68 mcu_ucb_data,
69 rdata_err_intr,
70 rdata_err_fbr,
71 rdata_cmp_ddr_sync_en,
72 rdata_ddr_cmp_sync_en,
73 rdata_rddata_sel,
74 rdata_pa_err,
75 rdata_pm_1mcu,
76 rdata_pm_2mcu,
77 mbist_read_data,
78 rdata0_wdq_rd,
79 rdata1_wdq_rd,
80 rdata_wdq_radr,
81 mbist_run_d1,
82 mbist_run_d1_l,
83 mbist_sel_hiorlo_72bits_d1,
84 mbist_sel_bank0or1_d1,
85 rdata_serdes_dtm,
86 ccu_mcu_cmp_ddr_sync_en,
87 ccu_mcu_ddr_cmp_sync_en,
88 ccu_mcu_io_cmp_sync_en,
89 ucb_rdata_selfrsh,
90 ucb_mcu_rd_req_vld,
91 ucb_mcu_wr_req_vld,
92 ucb_mcu_addr,
93 ucb_mcu_data,
94 ucb_err_ecci,
95 ucb_err_fbri,
96 ucb_err_fbui,
97 drif_rdata_ack_vld,
98 drif_rdata_nack_vld,
99 drif_rdata_data,
100 fbdic_err_fbr,
101 rdpctl_l2t0_data_valid,
102 rdpctl_l2t1_data_valid,
103 rdpctl_qword_id,
104 rdpctl_rd_req_id,
105 rdpctl_pa_err,
106 rdpctl_scrb0_err_valid,
107 rdpctl_scrb1_err_valid,
108 rdpctl_fbd0_recov_err,
109 rdpctl_fbd1_recov_err,
110 rdpctl_fbd_unrecov_err,
111 rdpctl_secc_cnt_intr,
112 rdpctl_dbg_trig_enable,
113 fbdic_fbd_error,
114 drif_mcu_error_mode,
115 woq_wr_req_out,
116 ucb_pm,
117 ucb_pm_ba01,
118 ucb_pm_ba23,
119 ucb_pm_ba45,
120 ucb_pm_ba67,
121 readdp_l2_secc_err_dly1,
122 readdp_l2_mecc_err_dly1,
123 mbist_run,
124 mbist_addr,
125 mbist_sel_bank0or1,
126 mbist_sel_hiorlo_72bits,
127 mbist_wdqrf00_rd_en,
128 mbist_wdqrf01_rd_en,
129 mbist_wdqrf10_rd_en,
130 mbist_wdqrf11_rd_en,
131 drif0_wdq_rd,
132 drif1_wdq_rd,
133 drif_wdq_radr,
134 wdqrf00_data,
135 wdqrf01_data,
136 wdqrf10_data,
137 wdqrf11_data,
138 fbdic_srds_dtm_muxsel,
139 array_wr_inhibit,
140 cmp_array_wr_inhibit,
141 dr_array_wr_inhibit,
142 l2clk,
143 scan_in,
144 scan_out,
145 tcu_pce_ov,
146 tcu_aclk,
147 tcu_bclk,
148 tcu_scan_en);
149wire pce_ov;
150wire siclk;
151wire soclk;
152wire se;
153wire l1clk;
154wire ff_mcu_sync_pulses_scanin;
155wire ff_mcu_sync_pulses_scanout;
156wire ff_io_sync_pulses_scanin;
157wire ff_io_sync_pulses_scanout;
158wire rdata_io_cmp_sync_en;
159wire rdata_cmp_io_sync_en;
160wire ff_mcu_sync_pulse_delays_scanin;
161wire ff_mcu_sync_pulse_delays_scanout;
162wire rdata_ddr_cmp_sync_en_d1;
163wire rdata_ddr_cmp_sync_en_d2;
164wire rdata_ddr_cmp_sync_en_d3;
165wire rdata_io_cmp_sync_en_d1;
166wire [1:0] rdata_data_word_cnt_in;
167wire [1:0] rdata_data_word_cnt;
168wire ff_data_word_cnt_scanin;
169wire ff_data_word_cnt_scanout;
170wire mcu_ucb_data_vld;
171wire [4:0] mcu_ucb_rd_request_out_d1_in;
172wire [4:0] mcu_ucb_rd_request_out_d1;
173wire [2:0] rdata_rd_req_id;
174wire ff_ucb_rdata_rd_req_id_scanin;
175wire ff_ucb_rdata_rd_req_id_scanout;
176wire ff_ucb_rdata_rd_req_id_d1_scanin;
177wire ff_ucb_rdata_rd_req_id_d1_scanout;
178wire mcu_ucb_any_mecc_err;
179wire mcu_ucb_mecc_err_o;
180wire mcu_ucb_mecc_err_d1;
181wire ff_ucb_mecc_err_o_scanin;
182wire ff_ucb_mecc_err_o_scanout;
183wire ff_ucb_mecc_err_d1_scanin;
184wire ff_ucb_mecc_err_d1_scanout;
185wire mcu_ucb_any_secc_err;
186wire mcu_ucb_secc_err_o;
187wire mcu_ucb_secc_err_d1;
188wire ff_ucb_secc_err_o_scanin;
189wire ff_ucb_secc_err_o_scanout;
190wire ff_ucb_secc_err_d1_scanin;
191wire ff_ucb_secc_err_d1_scanout;
192wire mcu_ucb_l1clk_err_event;
193wire rdata_dbg_trig_enable;
194wire mcu_ucb_err_event_o;
195wire mcu_ucb_err_event_d1;
196wire ff_ucb_err_event_d1_scanin;
197wire ff_ucb_err_event_d1_scanout;
198wire ff_ucb_err_event_scanin;
199wire ff_ucb_err_event_scanout;
200wire mcu_ucb_l1clk_fbd_error_o;
201wire rdata_fbd_error;
202wire mcu_ucb_fbd_error_d1;
203wire ff_ucb_fbd_error_d1_scanin;
204wire ff_ucb_fbd_error_d1_scanout;
205wire ff_ucb_fbd_error_scanin;
206wire ff_ucb_fbd_error_scanout;
207wire ff_mcu_ucb_err_mode_scanin;
208wire ff_mcu_ucb_err_mode_scanout;
209wire rdata_mcu_error_mode;
210wire rdata_wr_req_out_cnt_incr;
211wire [1:0] rdata_wr_req_out;
212wire [1:0] rdata_wr_req_out_cnt;
213wire rdata_wr_req_out_cnt_decr;
214wire [1:0] rdata_wr_req_out_cnt_in;
215wire ff_wr_req_out_cnt_scanin;
216wire ff_wr_req_out_cnt_scanout;
217wire [1:1] mcu_ucb_l1clk_wr_req_out_o;
218wire [1:0] mcu_ucb_wr_req_out_d1;
219wire ff_ucb_wr_req_out1_d1_scanin;
220wire ff_ucb_wr_req_out1_d1_scanout;
221wire ff_ucb_wr_req_out1_scanin;
222wire ff_ucb_wr_req_out1_scanout;
223wire ff_ucb_wr_req_out0_scanin;
224wire ff_ucb_wr_req_out0_scanout;
225wire ff_ucb_test_signals_scanin;
226wire ff_ucb_test_signals_scanout;
227wire rdata_selfrsh;
228wire ucb_rd_wr_vld_scanin;
229wire ucb_rd_wr_vld_scanout;
230wire rdata_ucb_rd_req_vld;
231wire rdata_ucb_wr_req_vld;
232wire ucb_addr_in_scanin;
233wire ucb_addr_in_scanout;
234wire [12:0] rdata_ucb_addr;
235wire ucb_data_in_scanin;
236wire ucb_data_in_scanout;
237wire [63:0] rdata_ucb_data;
238wire ff_ucb_err_inj_scanin;
239wire ff_ucb_err_inj_scanout;
240wire rdata_ucb_err_ecci;
241wire rdata_ucb_err_fbri;
242wire rdata_ucb_err_fbui;
243wire ff_partial_bank_mode_scanin;
244wire ff_partial_bank_mode_scanout;
245wire rdata_pm;
246wire rdata_pm_ba01;
247wire rdata_pm_ba23;
248wire rdata_pm_ba45;
249wire rdata_pm_ba67;
250wire rdata_ucb_wr_req_vld_en;
251wire rdata_ucb_wr_req_reset;
252wire rdata_ucb_wr_req_vld_cpu;
253wire rdata_wr_vld_scanin;
254wire rdata_wr_vld_scanout;
255wire rdata_ucb_rd_req_vld_en;
256wire rdata_ucb_rd_req_reset;
257wire rdata_ucb_rd_req_vld_cpu;
258wire rdata_rd_vld_scanin;
259wire rdata_rd_vld_scanout;
260wire rdata_ucb_addr_en;
261wire ff_rdata_ucb_addr_cpu_scanin;
262wire ff_rdata_ucb_addr_cpu_scanout;
263wire [12:0] rdata_ucb_addr_cpu;
264wire ff_rdata_ucb_data_cpu_scanin;
265wire ff_rdata_ucb_data_cpu_scanout;
266wire [63:0] rdata_ucb_data_cpu;
267wire rdata_ucb_ack_en;
268wire rdata_ucb_ack_vld;
269wire rdata_ucb_nack_en;
270wire rdata_ucb_nack_vld;
271wire rdata_ucb_ack_reset;
272wire rdata_ucb_ack_vld_cpu;
273wire rdata_ucb_nack_reset;
274wire rdata_ucb_nack_vld_cpu;
275wire ucb_ack_scanin;
276wire ucb_ack_scanout;
277wire ucb_nack_scanin;
278wire ucb_nack_scanout;
279wire ucb_data_cpu_scanin;
280wire ucb_data_cpu_scanout;
281wire [63:0] rdata_ucb_drif_data;
282wire [63:0] rdata_ucb_drif_data_cpu;
283wire rdata_secc_intr_en;
284wire rdata_secc_cnt_intr;
285wire rdata_secc_intr_reset;
286wire rdata_secc_cnt_intr_cpu;
287wire ff_ecc_intr_scanin;
288wire ff_ecc_intr_scanout;
289wire rdata_fbr_intr_en;
290wire rdata_fbr_intr;
291wire rdata_fbr_intr_reset;
292wire rdata_fbr_intr_cpu;
293wire ff_fbr_intr_scanin;
294wire ff_fbr_intr_scanout;
295wire ucb_ack_nack_scanin;
296wire ucb_ack_nack_scanout;
297wire ucb_data_out_scanin;
298wire ucb_data_out_scanout;
299wire ff_ncu_intr_scanin;
300wire ff_ncu_intr_scanout;
301wire ff_serdes_dtm_scanin;
302wire ff_serdes_dtm_scanout;
303wire rdata_serdes_dtm_cpu;
304wire ff_test_signals_scanin;
305wire ff_test_signals_scanout;
306wire rdata_ucb_rd_wr_vld_scanin;
307wire rdata_ucb_rd_wr_vld_scanout;
308wire rdata_ucb_addr_in_scanin;
309wire rdata_ucb_addr_in_scanout;
310wire rdata_ucb_data_in_scanin;
311wire rdata_ucb_data_in_scanout;
312wire ff_err_inj_scanin;
313wire ff_err_inj_scanout;
314wire rdata_pm_two_mcus;
315wire rdata_pm_2mcu_in;
316wire rdata_pm_1mcu_in;
317wire ff_pm_mcus_scanin;
318wire ff_pm_mcus_scanout;
319wire rdata_ucb_ack_nack_scanin;
320wire rdata_ucb_ack_nack_scanout;
321wire ff_ucb_data_out_scanin;
322wire ff_ucb_data_out_scanout;
323wire ff_data_valid_scanin;
324wire ff_data_valid_scanout;
325wire rdata_l2t0_data_valid;
326wire rdata_l2t1_data_valid;
327wire ff_rd_req_id_scanin;
328wire ff_rd_req_id_scanout;
329wire ff_qword_id_scanin;
330wire ff_qword_id_scanout;
331wire rdata_qword_id;
332wire ff_scrub_err_valid_scanin;
333wire ff_scrub_err_valid_scanout;
334wire rdata_scrb0_err_valid;
335wire rdata_scrb1_err_valid;
336wire rdata_fbd0_recov_err;
337wire rdata_fbd1_recov_err;
338wire ff_pa_err_p2_scanin;
339wire ff_pa_err_p2_scanout;
340wire rdata_pa_err_p2;
341wire rdata_fbd_unrecov_err_p1_1;
342wire rdata_fbd_unrecov_err_p2_0;
343wire ff_dbg_trig_scanin;
344wire ff_dbg_trig_scanout;
345wire ff_debug_signals_scanin;
346wire ff_debug_signals_scanout;
347wire rdata_fbd_error_out;
348wire [1:0] rdata_wr_req_out_out;
349wire ff_rdata_intr_scanin;
350wire ff_rdata_intr_scanout;
351wire ff_serdes_dtm_cpu_scanin;
352wire ff_serdes_dtm_cpu_scanout;
353wire rdata_ddr_cmp_sync_en_d12;
354wire rdata_ddr_cmp_sync_en_d12_in;
355wire ff_ddr_cmp_sync_en_d12_scanin;
356wire ff_ddr_cmp_sync_en_d12_scanout;
357wire mcu_l2t0_scb_secc_err_in;
358wire mcu_l2t0_scb_mecc_err_in;
359wire mcu_l2t1_scb_secc_err_in;
360wire mcu_l2t1_scb_mecc_err_in;
361wire ff_l2_scb_mecc_secc_scanin;
362wire ff_l2_scb_mecc_secc_scanout;
363wire rdata_ddr_cmp_sync_en_d23_in;
364wire ff_ddr_cmp_sync_en_d23_scanin;
365wire ff_ddr_cmp_sync_en_d23_scanout;
366wire rdata_ddr_cmp_sync_en_d23;
367wire ff_data_valid_d1_scanin;
368wire ff_data_valid_d1_scanout;
369wire rdata_l2t0_data_valid_d1;
370wire rdata_l2t1_data_valid_d1;
371wire ff_pa_err_p1_scanin;
372wire ff_pa_err_p1_scanout;
373wire rdata_pa_err_p1;
374wire rdata_fbd_unrecov_err_p1_0;
375wire mcu_l2t0_mecc_err_r1;
376wire mcu_l2t1_mecc_err_r1;
377wire mcu_l2t0_secc_err_r1;
378wire mcu_l2t1_secc_err_r1;
379wire ff_l2_mecc_secc_r2_scanin;
380wire ff_l2_mecc_secc_r2_scanout;
381wire mcu_l2t0_mecc_err_r2;
382wire mcu_l2t0_secc_err_r2;
383wire mcu_l2t1_mecc_err_r2;
384wire mcu_l2t1_secc_err_r2;
385wire ff_l2_mecc_secc_r3_scanin;
386wire ff_l2_mecc_secc_r3_scanout;
387wire rdata_pa_err_in;
388wire ff_pa_err_scanin;
389wire ff_pa_err_scanout;
390wire ff_mbist_data_scanin;
391wire ff_mbist_data_scanout;
392wire [7:0] wdqrf00_data_reg;
393wire [7:0] wdqrf01_data_reg;
394wire [7:0] wdqrf10_data_reg;
395wire [7:0] wdqrf11_data_reg;
396wire ff_mbist_addr_scanin;
397wire ff_mbist_run_d1_scanout;
398wire ff_mbist_addr_scanout;
399wire [4:0] mbist_addr_d1;
400wire mbist_wdqrf00_rd_en_d1;
401wire mbist_wdqrf01_rd_en_d1;
402wire mbist_wdqrf10_rd_en_d1;
403wire mbist_wdqrf11_rd_en_d1;
404wire spares_scanin;
405wire spares_scanout;
406
407
408//##dbg signal
409output [4:0] mcu_ucb_rd_request_out ; // sent to dbg
410output [1:0] mcu_ucb_wr_req_out ; // sent to dbg
411output mcu_ucb_mecc_err ; // sent to dbg
412output mcu_ucb_secc_err ; // sent to dbg
413output mcu_ucb_fbd_err ; // sent to dbg
414output mcu_ucb_err_mode ; // sent to dbg
415output mcu_ucb_err_event ; // sent to dbg
416input ccu_mcu_cmp_io_sync_en; // clock synchronization signal from cpu to io
417
418// mcu to l2 cache signals accompanying read data
419output [1:0] mcu_l2t0_qword_id_r0; // quad word id to l2 cache bank 0
420output mcu_l2t0_data_vld_r0; // data valid to l2 cache bank 0
421output [2:0] mcu_l2t0_rd_req_id_r0; // read request id to l2 cache bank 0
422output mcu_l2t0_mecc_err_r3; // multi-bit ecc error
423output mcu_l2t0_secc_err_r3; // single-bit ecc error
424output mcu_l2t0_scb_mecc_err; // multi-bit ecc error on scrubbing request
425output mcu_l2t0_scb_secc_err; // single-bit ecc error on scrubbing request
426
427output [1:0] mcu_l2t1_qword_id_r0; // quad word id to l2 cache bank 1
428output mcu_l2t1_data_vld_r0; // data valid to l2 cache bank 1
429output [2:0] mcu_l2t1_rd_req_id_r0; // read request id to l2 cache bank 1
430output mcu_l2t1_mecc_err_r3; // multi-bit ecc error
431output mcu_l2t1_secc_err_r3; // single-bit ecc error
432output mcu_l2t1_scb_mecc_err; // multi-bit ecc error on scrubbing request
433output mcu_l2t1_scb_secc_err; // single-bit ecc error on scrubbing request
434
435// ucb rd/wr request
436output rdata_drif_rd_req_vld;
437output rdata_drif_wr_req_vld;
438output [12:0] rdata_drif_addr;
439output [63:0] rdata_drif_data;
440
441output rdata_mcu_selfrsh; // put mcu in self refresh mode
442
443output rdata_err_ecci;
444output rdata_err_fbri;
445output rdata_err_fbui;
446
447// register rd/wr reply to ucb
448output mcu_ucb_ack_vld;
449output mcu_ucb_nack_vld;
450output [63:0] mcu_ucb_data;
451
452output rdata_err_intr; // interrupt signal to ucb module
453output rdata_err_fbr;
454
455output rdata_cmp_ddr_sync_en; // clock synchronization signal from cpu to mcu for dp blocks
456output rdata_ddr_cmp_sync_en; // clock synchronization signal from mcu to cpu for dp blocks
457
458output [1:0] rdata_rddata_sel; // dummy data vs. upper/lower word select to readdp
459output rdata_pa_err; // physical address error bit to readdp to corrupt L2 ECC
460
461output rdata_pm_1mcu;
462output rdata_pm_2mcu;
463
464output [7:0] mbist_read_data;
465output [1:0] rdata0_wdq_rd;
466output [1:0] rdata1_wdq_rd;
467output [4:0] rdata_wdq_radr;
468
469// delayed versions of mbist signals for wrdp
470output mbist_run_d1;
471output mbist_run_d1_l;
472output mbist_sel_hiorlo_72bits_d1;
473output mbist_sel_bank0or1_d1;
474
475output rdata_serdes_dtm;
476
477input ccu_mcu_cmp_ddr_sync_en; // clock synchronization signal from cpu to mcu
478input ccu_mcu_ddr_cmp_sync_en; // clock synchronization signal from mcu to cpu
479input ccu_mcu_io_cmp_sync_en; // clock synchronization signal from io to cpu
480
481input ucb_rdata_selfrsh; // put mcu in self refresh mode
482
483// register rd/wr request from ucb
484input ucb_mcu_rd_req_vld;
485input ucb_mcu_wr_req_vld;
486input [12:0] ucb_mcu_addr;
487input [63:0] ucb_mcu_data;
488
489input ucb_err_ecci;
490input ucb_err_fbri;
491input ucb_err_fbui;
492
493// register rd reply to ucb
494input drif_rdata_ack_vld;
495input drif_rdata_nack_vld;
496input [63:0] drif_rdata_data;
497
498input fbdic_err_fbr;
499
500input rdpctl_l2t0_data_valid; // data valid for returning l2t0 read data
501input rdpctl_l2t1_data_valid; // data valid for returning l2t1 read data
502input rdpctl_qword_id; // qword id for returning transaction
503input [2:0] rdpctl_rd_req_id; // read request id for returning transaction
504input rdpctl_pa_err; // physical address error to OR with mecc
505
506input rdpctl_scrb0_err_valid; // scrub error valid for l2t0
507input rdpctl_scrb1_err_valid; // scrub error valid for l2t1
508
509input rdpctl_fbd0_recov_err;
510input rdpctl_fbd1_recov_err;
511input [1:0] rdpctl_fbd_unrecov_err;
512
513input rdpctl_secc_cnt_intr; // secc error count interrupt to NCU
514input rdpctl_dbg_trig_enable; // debug trigger
515
516input fbdic_fbd_error;
517input drif_mcu_error_mode;
518input [1:0] woq_wr_req_out;
519
520input ucb_pm; // partial bank mode signals
521input ucb_pm_ba01;
522input ucb_pm_ba23;
523input ucb_pm_ba45;
524input ucb_pm_ba67;
525
526// ecc error signals
527input readdp_l2_secc_err_dly1;
528input readdp_l2_mecc_err_dly1;
529
530// mbist signals
531input mbist_run;
532input [4:0] mbist_addr;
533input mbist_sel_bank0or1;
534input mbist_sel_hiorlo_72bits;
535input mbist_wdqrf00_rd_en;
536input mbist_wdqrf01_rd_en;
537input mbist_wdqrf10_rd_en;
538input mbist_wdqrf11_rd_en;
539
540input drif0_wdq_rd;
541input drif1_wdq_rd;
542input [4:0] drif_wdq_radr;
543
544input [7:0] wdqrf00_data;
545input [7:0] wdqrf01_data;
546input [7:0] wdqrf10_data;
547input [7:0] wdqrf11_data;
548
549input fbdic_srds_dtm_muxsel;
550
551output array_wr_inhibit;
552input cmp_array_wr_inhibit;
553input dr_array_wr_inhibit;
554
555// Global Signals
556input l2clk;
557input scan_in;
558output scan_out;
559input tcu_pce_ov;
560input tcu_aclk;
561input tcu_bclk;
562input tcu_scan_en;
563
564// Code
565assign pce_ov = tcu_pce_ov;
566assign siclk = tcu_aclk;
567assign soclk = tcu_bclk;
568assign se = tcu_scan_en;
569
570assign array_wr_inhibit = cmp_array_wr_inhibit & dr_array_wr_inhibit;
571
572mcu_rdata_ctl_l1clkhdr_ctl_macro clkgen (
573 .l2clk(l2clk),
574 .l1en(1'b1 ),
575 .stop(1'b0),
576 .l1clk(l1clk),
577 .pce_ov(pce_ov),
578 .se(se));
579
580// sync pulses to transfer data between clock domains
581mcu_rdata_ctl_msff_ctl_macro__width_2 ff_mcu_sync_pulses (
582 .scan_in(ff_mcu_sync_pulses_scanin),
583 .scan_out(ff_mcu_sync_pulses_scanout),
584 .din({ccu_mcu_ddr_cmp_sync_en, ccu_mcu_cmp_ddr_sync_en}),
585 .dout({rdata_ddr_cmp_sync_en, rdata_cmp_ddr_sync_en}),
586 .l1clk(l1clk),
587 .siclk(siclk),
588 .soclk(soclk));
589
590mcu_rdata_ctl_msff_ctl_macro__width_2 ff_io_sync_pulses (
591 .scan_in(ff_io_sync_pulses_scanin),
592 .scan_out(ff_io_sync_pulses_scanout),
593 .din({ccu_mcu_io_cmp_sync_en, ccu_mcu_cmp_io_sync_en}),
594 .dout({rdata_io_cmp_sync_en, rdata_cmp_io_sync_en}),
595 .l1clk(l1clk),
596 .siclk(siclk),
597 .soclk(soclk));
598
599mcu_rdata_ctl_msff_ctl_macro__width_4 ff_mcu_sync_pulse_delays (
600 .scan_in(ff_mcu_sync_pulse_delays_scanin),
601 .scan_out(ff_mcu_sync_pulse_delays_scanout),
602 .din({rdata_ddr_cmp_sync_en, rdata_ddr_cmp_sync_en_d1, rdata_ddr_cmp_sync_en_d2, rdata_io_cmp_sync_en}),
603 .dout({rdata_ddr_cmp_sync_en_d1, rdata_ddr_cmp_sync_en_d2, rdata_ddr_cmp_sync_en_d3, rdata_io_cmp_sync_en_d1}),
604 .l1clk(l1clk),
605 .siclk(siclk),
606 .soclk(soclk));
607//////////////////////////////////////////////////////////////////
608//## SIGNALS from l1clk to ioclk then send to dbg module
609//////////////////////////////////////////////////////////////////
610assign rdata_data_word_cnt_in[1:0] = (mcu_l2t0_data_vld_r0 | mcu_l2t1_data_vld_r0) ? rdata_data_word_cnt[1:0] + 2'h1 :
611 rdata_data_word_cnt[1:0];
612mcu_rdata_ctl_msff_ctl_macro__width_2 ff_data_word_cnt (
613 .scan_in(ff_data_word_cnt_scanin),
614 .scan_out(ff_data_word_cnt_scanout),
615 .din(rdata_data_word_cnt_in[1:0]),
616 .dout(rdata_data_word_cnt[1:0]),
617 .l1clk(l1clk),
618 .siclk(siclk),
619 .soclk(soclk));
620
621assign mcu_ucb_data_vld = (mcu_l2t0_data_vld_r0 | mcu_l2t1_data_vld_r0) & rdata_data_word_cnt[1:0] == 2'h0;
622
623assign mcu_ucb_rd_request_out_d1_in[4] = mcu_ucb_data_vld ? 1'b1 :
624 rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_rd_request_out_d1[4];
625assign mcu_ucb_rd_request_out_d1_in[3] = mcu_ucb_data_vld ? mcu_l2t1_data_vld_r0 :
626 rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_rd_request_out_d1[3];
627assign mcu_ucb_rd_request_out_d1_in[2:0] = mcu_ucb_data_vld ? rdata_rd_req_id[2:0] :
628 rdata_cmp_io_sync_en ? 3'h0 : mcu_ucb_rd_request_out_d1[2:0];
629
630mcu_rdata_ctl_msff_ctl_macro__width_5 ff_ucb_rdata_rd_req_id (
631 .scan_in(ff_ucb_rdata_rd_req_id_scanin),
632 .scan_out(ff_ucb_rdata_rd_req_id_scanout),
633 .din (mcu_ucb_rd_request_out_d1_in[4:0]),
634 .dout (mcu_ucb_rd_request_out_d1[4:0]),
635 .l1clk (l1clk),
636 .siclk(siclk),
637 .soclk(soclk));
638
639mcu_rdata_ctl_msff_ctl_macro__en_1__width_5 ff_ucb_rdata_rd_req_id_d1 (
640 .scan_in(ff_ucb_rdata_rd_req_id_d1_scanin),
641 .scan_out(ff_ucb_rdata_rd_req_id_d1_scanout),
642 .din (mcu_ucb_rd_request_out_d1[4:0]),
643 .dout (mcu_ucb_rd_request_out[4:0]),
644 .en (rdata_cmp_io_sync_en),
645 .l1clk (l1clk),
646 .siclk(siclk),
647 .soclk(soclk));
648//## or all mecc and secc signals before sync to cross clock domains
649assign mcu_ucb_any_mecc_err = mcu_l2t0_mecc_err_r3 | mcu_l2t0_scb_mecc_err | mcu_l2t1_mecc_err_r3 | mcu_l2t1_scb_mecc_err ;
650assign mcu_ucb_mecc_err_o = mcu_ucb_any_mecc_err ? 1'b1 : rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_mecc_err_d1 ;
651mcu_rdata_ctl_msff_ctl_macro__width_1 ff_ucb_mecc_err_o (
652 .scan_in(ff_ucb_mecc_err_o_scanin),
653 .scan_out(ff_ucb_mecc_err_o_scanout),
654 .din ( mcu_ucb_mecc_err_o ) ,
655 .dout ( mcu_ucb_mecc_err_d1 ) ,
656 .l1clk (l1clk),
657 .siclk(siclk),
658 .soclk(soclk));
659mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_mecc_err_d1 (
660 .scan_in(ff_ucb_mecc_err_d1_scanin),
661 .scan_out(ff_ucb_mecc_err_d1_scanout),
662 .din ( mcu_ucb_mecc_err_d1 ) ,
663 .dout ( mcu_ucb_mecc_err ) ,
664 .en ( rdata_cmp_io_sync_en ) ,
665 .l1clk (l1clk),
666 .siclk(siclk),
667 .soclk(soclk));
668
669assign mcu_ucb_any_secc_err = mcu_l2t0_secc_err_r3 | mcu_l2t0_scb_secc_err | mcu_l2t1_secc_err_r3 | mcu_l2t1_scb_secc_err ;
670assign mcu_ucb_secc_err_o = mcu_ucb_any_secc_err ? 1'b1 : rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_secc_err_d1 ;
671mcu_rdata_ctl_msff_ctl_macro__width_1 ff_ucb_secc_err_o (
672 .scan_in(ff_ucb_secc_err_o_scanin),
673 .scan_out(ff_ucb_secc_err_o_scanout),
674 .din ( mcu_ucb_secc_err_o ) ,
675 .dout ( mcu_ucb_secc_err_d1 ) ,
676 .l1clk (l1clk),
677 .siclk(siclk),
678 .soclk(soclk));
679mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_secc_err_d1 (
680 .scan_in(ff_ucb_secc_err_d1_scanin),
681 .scan_out(ff_ucb_secc_err_d1_scanout),
682 .din ( mcu_ucb_secc_err_d1 ) ,
683 .dout ( mcu_ucb_secc_err ) ,
684 .en ( rdata_cmp_io_sync_en ) ,
685 .l1clk (l1clk),
686 .siclk(siclk),
687 .soclk(soclk));
688
689assign mcu_ucb_l1clk_err_event = rdata_dbg_trig_enable & (mcu_ucb_any_secc_err | mcu_ucb_any_mecc_err);
690assign mcu_ucb_err_event_o = mcu_ucb_l1clk_err_event ? 1'b1 : rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_err_event_d1 ;
691mcu_rdata_ctl_msff_ctl_macro__width_1 ff_ucb_err_event_d1 (
692 .scan_in(ff_ucb_err_event_d1_scanin),
693 .scan_out(ff_ucb_err_event_d1_scanout),
694 .din ( mcu_ucb_err_event_o ) ,
695 .dout ( mcu_ucb_err_event_d1 ) ,
696 .l1clk (l1clk),
697 .siclk(siclk),
698 .soclk(soclk));
699mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_err_event (
700 .scan_in(ff_ucb_err_event_scanin),
701 .scan_out(ff_ucb_err_event_scanout),
702 .din ( mcu_ucb_err_event_d1 ) ,
703 .dout ( mcu_ucb_err_event ) ,
704 .en ( rdata_cmp_io_sync_en ) ,
705 .l1clk (l1clk),
706 .siclk(siclk),
707 .soclk(soclk));
708//###
709//assign mcu_ucb_fbd_err = rdata_fbd_error ;
710
711//###
712assign mcu_ucb_l1clk_fbd_error_o = rdata_fbd_error ? 1'b1 : rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_fbd_error_d1 ;
713mcu_rdata_ctl_msff_ctl_macro__width_1 ff_ucb_fbd_error_d1 (
714 .scan_in(ff_ucb_fbd_error_d1_scanin),
715 .scan_out(ff_ucb_fbd_error_d1_scanout),
716 .din ( mcu_ucb_l1clk_fbd_error_o ) ,
717 .dout ( mcu_ucb_fbd_error_d1 ) ,
718 .l1clk (l1clk),
719 .siclk(siclk),
720 .soclk(soclk));
721mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_fbd_error (
722 .scan_in(ff_ucb_fbd_error_scanin),
723 .scan_out(ff_ucb_fbd_error_scanout),
724 .din ( mcu_ucb_fbd_error_d1 ) ,
725 .dout ( mcu_ucb_fbd_err ) ,
726 .en ( rdata_cmp_io_sync_en ) ,
727 .l1clk (l1clk),
728 .siclk(siclk),
729 .soclk(soclk));
730//
731mcu_rdata_ctl_msff_ctl_macro__en_1 ff_mcu_ucb_err_mode (
732 .scan_in(ff_mcu_ucb_err_mode_scanin),
733 .scan_out(ff_mcu_ucb_err_mode_scanout),
734 .din(rdata_mcu_error_mode),
735 .dout(mcu_ucb_err_mode),
736 .en(rdata_cmp_io_sync_en),
737 .l1clk(l1clk),
738 .siclk(siclk),
739 .soclk(soclk));
740
741
742// 0in overflow -var rdata_wr_req_out_cnt[1:0]
743// 0in underflow -var rdata_wr_req_out_cnt[1:0]
744assign rdata_wr_req_out_cnt_incr = rdata_wr_req_out[0] & (~rdata_cmp_io_sync_en & (|rdata_wr_req_out_cnt[1:0]) |
745 ~(|rdata_wr_req_out_cnt[1:0]));
746assign rdata_wr_req_out_cnt_decr = rdata_cmp_io_sync_en & (|rdata_wr_req_out_cnt[1:0]) & ~rdata_wr_req_out[0];
747
748assign rdata_wr_req_out_cnt_in[1:0] = rdata_wr_req_out_cnt_incr ? rdata_wr_req_out_cnt[1:0] + 2'h1 :
749 rdata_wr_req_out_cnt_decr ? rdata_wr_req_out_cnt[1:0] - 2'h1 : rdata_wr_req_out_cnt[1:0];
750
751mcu_rdata_ctl_msff_ctl_macro__width_2 ff_wr_req_out_cnt (
752 .scan_in(ff_wr_req_out_cnt_scanin),
753 .scan_out(ff_wr_req_out_cnt_scanout),
754 .din(rdata_wr_req_out_cnt_in[1:0]),
755 .dout(rdata_wr_req_out_cnt[1:0]),
756 .l1clk(l1clk),
757 .siclk(siclk),
758 .soclk(soclk));
759
760assign mcu_ucb_l1clk_wr_req_out_o[1] = rdata_wr_req_out[1] ? 1'b1 :
761 rdata_cmp_io_sync_en ? 1'b0 : mcu_ucb_wr_req_out_d1[1] ;
762mcu_rdata_ctl_msff_ctl_macro__width_1 ff_ucb_wr_req_out1_d1 (
763 .scan_in(ff_ucb_wr_req_out1_d1_scanin),
764 .scan_out(ff_ucb_wr_req_out1_d1_scanout),
765 .din ( mcu_ucb_l1clk_wr_req_out_o[1] ) ,
766 .dout ( mcu_ucb_wr_req_out_d1[1] ) ,
767 .l1clk (l1clk),
768 .siclk(siclk),
769 .soclk(soclk));
770
771mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_wr_req_out1 (
772 .scan_in(ff_ucb_wr_req_out1_scanin),
773 .scan_out(ff_ucb_wr_req_out1_scanout),
774 .din ( mcu_ucb_wr_req_out_d1[1] ) ,
775 .dout ( mcu_ucb_wr_req_out[1] ) ,
776 .en ( rdata_cmp_io_sync_en ) ,
777 .l1clk (l1clk),
778 .siclk(siclk),
779 .soclk(soclk));
780
781assign mcu_ucb_wr_req_out_d1[0] = |rdata_wr_req_out_cnt[1:0];
782
783mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_wr_req_out0 (
784 .scan_in(ff_ucb_wr_req_out0_scanin),
785 .scan_out(ff_ucb_wr_req_out0_scanout),
786 .din ( mcu_ucb_wr_req_out_d1[0] ) ,
787 .dout ( mcu_ucb_wr_req_out[0] ) ,
788 .en ( rdata_cmp_io_sync_en ) ,
789 .l1clk (l1clk),
790 .siclk(siclk),
791 .soclk(soclk));
792
793
794
795//////////////////////////////////////////////////////////////////
796// SIGNALS FROM IO TO CPU CLK
797//////////////////////////////////////////////////////////////////
798
799// Test signals
800mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_ucb_test_signals (
801 .scan_in(ff_ucb_test_signals_scanin),
802 .scan_out(ff_ucb_test_signals_scanout),
803 .din (ucb_rdata_selfrsh),
804 .dout (rdata_selfrsh),
805 .en (rdata_io_cmp_sync_en),
806 .l1clk (l1clk),
807 .siclk(siclk),
808 .soclk(soclk));
809
810// flop ucb write and read valid
811mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ucb_rd_wr_vld (
812 .scan_in(ucb_rd_wr_vld_scanin),
813 .scan_out(ucb_rd_wr_vld_scanout),
814 .din ({ucb_mcu_rd_req_vld, ucb_mcu_wr_req_vld}),
815 .dout ({rdata_ucb_rd_req_vld, rdata_ucb_wr_req_vld}),
816 .en (rdata_io_cmp_sync_en),
817 .l1clk (l1clk),
818 .siclk(siclk),
819 .soclk(soclk));
820
821// flop ucb addr in
822mcu_rdata_ctl_msff_ctl_macro__en_1__width_13 ucb_addr_in (
823 .scan_in(ucb_addr_in_scanin),
824 .scan_out(ucb_addr_in_scanout),
825 .din (ucb_mcu_addr[12:0]),
826 .dout (rdata_ucb_addr[12:0]),
827 .en (rdata_io_cmp_sync_en),
828 .l1clk (l1clk),
829 .siclk(siclk),
830 .soclk(soclk));
831
832// flop ucb data in
833mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 ucb_data_in (
834 .scan_in(ucb_data_in_scanin),
835 .scan_out(ucb_data_in_scanout),
836 .din(ucb_mcu_data[63:0]),
837 .dout(rdata_ucb_data[63:0]),
838 .en(rdata_io_cmp_sync_en),
839 .l1clk(l1clk),
840 .siclk(siclk),
841 .soclk(soclk));
842
843// error injection signals
844mcu_rdata_ctl_msff_ctl_macro__en_1__width_3 ff_ucb_err_inj (
845 .scan_in(ff_ucb_err_inj_scanin),
846 .scan_out(ff_ucb_err_inj_scanout),
847 .din({ucb_err_ecci,ucb_err_fbri,ucb_err_fbui}),
848 .dout({rdata_ucb_err_ecci,rdata_ucb_err_fbri,rdata_ucb_err_fbui}),
849 .en(rdata_io_cmp_sync_en),
850 .l1clk(l1clk),
851 .siclk(siclk),
852 .soclk(soclk));
853
854mcu_rdata_ctl_msff_ctl_macro__en_1__width_5 ff_partial_bank_mode (
855 .scan_in(ff_partial_bank_mode_scanin),
856 .scan_out(ff_partial_bank_mode_scanout),
857 .din({ucb_pm, ucb_pm_ba01, ucb_pm_ba23, ucb_pm_ba45, ucb_pm_ba67}),
858 .dout({rdata_pm, rdata_pm_ba01, rdata_pm_ba23, rdata_pm_ba45, rdata_pm_ba67}),
859 .en(rdata_io_cmp_sync_en),
860 .l1clk(l1clk),
861 .siclk(siclk),
862 .soclk(soclk));
863
864////////////////////////
865// Flop enables so that they are reset on mcu sync pulse
866////////////////////////
867
868// flop write valid
869assign rdata_ucb_wr_req_vld_en = rdata_io_cmp_sync_en_d1 & rdata_ucb_wr_req_vld;
870assign rdata_ucb_wr_req_reset = rdata_cmp_ddr_sync_en & rdata_ucb_wr_req_vld_cpu;
871
872mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 rdata_wr_vld (
873 .scan_in(rdata_wr_vld_scanin),
874 .scan_out(rdata_wr_vld_scanout),
875 .din(rdata_ucb_wr_req_vld),
876 .dout(rdata_ucb_wr_req_vld_cpu),
877 .en(rdata_ucb_wr_req_vld_en),
878 .clr(rdata_ucb_wr_req_reset),
879 .l1clk(l1clk),
880 .siclk(siclk),
881 .soclk(soclk));
882
883// flop read valid
884assign rdata_ucb_rd_req_vld_en = rdata_io_cmp_sync_en_d1 & rdata_ucb_rd_req_vld;
885assign rdata_ucb_rd_req_reset = rdata_cmp_ddr_sync_en & rdata_ucb_rd_req_vld_cpu;
886
887mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 rdata_rd_vld (
888 .scan_in(rdata_rd_vld_scanin),
889 .scan_out(rdata_rd_vld_scanout),
890 .din(rdata_ucb_rd_req_vld),
891 .dout(rdata_ucb_rd_req_vld_cpu),
892 .en(rdata_ucb_rd_req_vld_en),
893 .clr(rdata_ucb_rd_req_reset),
894 .l1clk(l1clk),
895 .siclk(siclk),
896 .soclk(soclk));
897
898assign rdata_ucb_addr_en = rdata_ucb_wr_req_vld_en | rdata_ucb_rd_req_vld_en;
899
900// flop addr in
901mcu_rdata_ctl_msff_ctl_macro__en_1__width_13 ff_rdata_ucb_addr_cpu (
902 .scan_in(ff_rdata_ucb_addr_cpu_scanin),
903 .scan_out(ff_rdata_ucb_addr_cpu_scanout),
904 .din(rdata_ucb_addr[12:0]),
905 .dout(rdata_ucb_addr_cpu[12:0]),
906 .en(rdata_ucb_addr_en),
907 .l1clk(l1clk),
908 .siclk(siclk),
909 .soclk(soclk));
910
911// flop data in
912mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 ff_rdata_ucb_data_cpu (
913 .scan_in(ff_rdata_ucb_data_cpu_scanin),
914 .scan_out(ff_rdata_ucb_data_cpu_scanout),
915 .din(rdata_ucb_data[63:0]),
916 .dout(rdata_ucb_data_cpu[63:0]),
917 .en(rdata_ucb_wr_req_vld),
918 .l1clk(l1clk),
919 .siclk(siclk),
920 .soclk(soclk));
921
922////////////////////////////////////////
923// Flop enable so that its reset on io sync pulse
924////////////////////////////////////////
925
926assign rdata_ucb_ack_en = rdata_ddr_cmp_sync_en_d1 & rdata_ucb_ack_vld;
927assign rdata_ucb_nack_en = rdata_ddr_cmp_sync_en_d1 & rdata_ucb_nack_vld;
928assign rdata_ucb_ack_reset = rdata_cmp_io_sync_en & rdata_ucb_ack_vld_cpu;
929assign rdata_ucb_nack_reset = rdata_cmp_io_sync_en & rdata_ucb_nack_vld_cpu;
930
931// flop ack
932mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 ucb_ack (
933 .scan_in(ucb_ack_scanin),
934 .scan_out(ucb_ack_scanout),
935 .din(rdata_ucb_ack_vld),
936 .dout(rdata_ucb_ack_vld_cpu),
937 .en(rdata_ucb_ack_en),
938 .clr(rdata_ucb_ack_reset),
939 .l1clk(l1clk),
940 .siclk(siclk),
941 .soclk(soclk));
942
943// flop nack
944mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 ucb_nack (
945 .scan_in(ucb_nack_scanin),
946 .scan_out(ucb_nack_scanout),
947 .din(rdata_ucb_nack_vld),
948 .dout(rdata_ucb_nack_vld_cpu),
949 .en(rdata_ucb_nack_en),
950 .clr(rdata_ucb_nack_reset),
951 .l1clk(l1clk),
952 .siclk(siclk),
953 .soclk(soclk));
954
955// flop data
956mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 ucb_data_cpu (
957 .scan_in(ucb_data_cpu_scanin),
958 .scan_out(ucb_data_cpu_scanout),
959 .din(rdata_ucb_drif_data[63:0]),
960 .dout(rdata_ucb_drif_data_cpu[63:0]),
961 .en(rdata_ucb_ack_en),
962 .l1clk(l1clk),
963 .siclk(siclk),
964 .soclk(soclk));
965
966// secc counter interrupt for NCU
967assign rdata_secc_intr_en = rdata_ddr_cmp_sync_en_d1 & rdata_secc_cnt_intr;
968assign rdata_secc_intr_reset = rdata_cmp_io_sync_en & rdata_secc_cnt_intr_cpu;
969
970mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 ff_ecc_intr (
971 .scan_in(ff_ecc_intr_scanin),
972 .scan_out(ff_ecc_intr_scanout),
973 .din(rdata_secc_cnt_intr),
974 .dout(rdata_secc_cnt_intr_cpu),
975 .en(rdata_secc_intr_en),
976 .clr(rdata_secc_intr_reset),
977 .l1clk(l1clk),
978 .siclk(siclk),
979 .soclk(soclk));
980
981// fbdimm channel recoverable error interrupt for NCU
982assign rdata_fbr_intr_en = rdata_ddr_cmp_sync_en_d1 & rdata_fbr_intr;
983assign rdata_fbr_intr_reset = rdata_cmp_io_sync_en & rdata_fbr_intr_cpu;
984
985mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 ff_fbr_intr (
986 .scan_in(ff_fbr_intr_scanin),
987 .scan_out(ff_fbr_intr_scanout),
988 .din(rdata_fbr_intr),
989 .dout(rdata_fbr_intr_cpu),
990 .en(rdata_fbr_intr_en),
991 .clr(rdata_fbr_intr_reset),
992 .l1clk(l1clk),
993 .siclk(siclk),
994 .soclk(soclk));
995
996
997//////////////////////////////////////////////////////////////////
998// SIGNALS FROM CPU TO IO CLK
999//////////////////////////////////////////////////////////////////
1000
1001// flop ack and nack
1002mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ucb_ack_nack (
1003 .scan_in(ucb_ack_nack_scanin),
1004 .scan_out(ucb_ack_nack_scanout),
1005 .din({rdata_ucb_ack_vld_cpu, rdata_ucb_nack_vld_cpu}),
1006 .dout({mcu_ucb_ack_vld, mcu_ucb_nack_vld}),
1007 .en(rdata_cmp_io_sync_en),
1008 .l1clk(l1clk),
1009 .siclk(siclk),
1010 .soclk(soclk));
1011
1012// flop data
1013mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 ucb_data_out (
1014 .scan_in(ucb_data_out_scanin),
1015 .scan_out(ucb_data_out_scanout),
1016 .din(rdata_ucb_drif_data_cpu[63:0]),
1017 .dout(mcu_ucb_data[63:0]),
1018 .en(rdata_cmp_io_sync_en),
1019 .l1clk(l1clk),
1020 .siclk(siclk),
1021 .soclk(soclk));
1022
1023// flop secc counter interrupt
1024mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ff_ncu_intr (
1025 .scan_in(ff_ncu_intr_scanin),
1026 .scan_out(ff_ncu_intr_scanout),
1027 .din({rdata_secc_cnt_intr_cpu,rdata_fbr_intr_cpu}),
1028 .dout({rdata_err_intr,rdata_err_fbr}),
1029 .en(rdata_cmp_io_sync_en),
1030 .l1clk(l1clk),
1031 .siclk(siclk),
1032 .soclk(soclk));
1033
1034//
1035mcu_rdata_ctl_msff_ctl_macro__en_1 ff_serdes_dtm (
1036 .scan_in(ff_serdes_dtm_scanin),
1037 .scan_out(ff_serdes_dtm_scanout),
1038 .din(rdata_serdes_dtm_cpu),
1039 .dout(rdata_serdes_dtm),
1040 .en(rdata_cmp_io_sync_en),
1041 .l1clk(l1clk),
1042 .siclk(siclk),
1043 .soclk(soclk));
1044
1045/////////////////////////////////////////////////
1046// SIGNALS FROM CPU CLK TO DRAM CLK
1047/////////////////////////////////////////////////
1048mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_test_signals (
1049 .scan_in(ff_test_signals_scanin),
1050 .scan_out(ff_test_signals_scanout),
1051 .din({rdata_selfrsh}),
1052 .dout({rdata_mcu_selfrsh}),
1053 .en(rdata_cmp_ddr_sync_en),
1054 .l1clk(l1clk),
1055 .siclk(siclk),
1056 .soclk(soclk));
1057
1058// flop write and read valid
1059mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 rdata_ucb_rd_wr_vld (
1060 .scan_in(rdata_ucb_rd_wr_vld_scanin),
1061 .scan_out(rdata_ucb_rd_wr_vld_scanout),
1062 .din({rdata_ucb_rd_req_vld_cpu, rdata_ucb_wr_req_vld_cpu}),
1063 .dout({rdata_drif_rd_req_vld, rdata_drif_wr_req_vld}),
1064 .en(rdata_cmp_ddr_sync_en),
1065 .l1clk(l1clk),
1066 .siclk(siclk),
1067 .soclk(soclk));
1068
1069// flop addr in
1070mcu_rdata_ctl_msff_ctl_macro__en_1__width_13 rdata_ucb_addr_in (
1071 .scan_in(rdata_ucb_addr_in_scanin),
1072 .scan_out(rdata_ucb_addr_in_scanout),
1073 .din(rdata_ucb_addr_cpu[12:0]),
1074 .dout(rdata_drif_addr[12:0]),
1075 .en(rdata_cmp_ddr_sync_en),
1076 .l1clk(l1clk),
1077 .siclk(siclk),
1078 .soclk(soclk));
1079
1080// flop data in
1081mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 rdata_ucb_data_in (
1082 .scan_in(rdata_ucb_data_in_scanin),
1083 .scan_out(rdata_ucb_data_in_scanout),
1084 .din(rdata_ucb_data_cpu[63:0]),
1085 .dout(rdata_drif_data[63:0]),
1086 .en(rdata_cmp_ddr_sync_en),
1087 .l1clk(l1clk),
1088 .siclk(siclk),
1089 .soclk(soclk));
1090
1091// error injection signals
1092mcu_rdata_ctl_msff_ctl_macro__en_1__width_3 ff_err_inj (
1093 .scan_in(ff_err_inj_scanin),
1094 .scan_out(ff_err_inj_scanout),
1095 .din({rdata_ucb_err_ecci,rdata_ucb_err_fbri,rdata_ucb_err_fbui}),
1096 .dout({rdata_err_ecci,rdata_err_fbri,rdata_err_fbui}),
1097 .en(rdata_cmp_ddr_sync_en),
1098 .l1clk(l1clk),
1099 .siclk(siclk),
1100 .soclk(soclk));
1101
1102assign rdata_pm_two_mcus = rdata_pm_ba01 & rdata_pm_ba23 |
1103 rdata_pm_ba01 & rdata_pm_ba45 |
1104 rdata_pm_ba01 & rdata_pm_ba67 |
1105 rdata_pm_ba23 & rdata_pm_ba45 |
1106 rdata_pm_ba23 & rdata_pm_ba67 |
1107 rdata_pm_ba45 & rdata_pm_ba67;
1108
1109assign rdata_pm_2mcu_in = rdata_pm & rdata_pm_two_mcus;
1110assign rdata_pm_1mcu_in = rdata_pm & ~rdata_pm_two_mcus;
1111
1112mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ff_pm_mcus (
1113 .scan_in(ff_pm_mcus_scanin),
1114 .scan_out(ff_pm_mcus_scanout),
1115 .din({rdata_pm_1mcu_in,rdata_pm_2mcu_in}),
1116 .dout({rdata_pm_1mcu,rdata_pm_2mcu}),
1117 .en(rdata_cmp_ddr_sync_en),
1118 .l1clk(l1clk),
1119 .siclk(siclk),
1120 .soclk(soclk));
1121
1122/////////////////////////////////////////////////
1123// SIGNALS FROM MCU CLK TO CPU CLK
1124/////////////////////////////////////////////////
1125// flop ucb read ack and nack
1126mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 rdata_ucb_ack_nack (
1127 .scan_in(rdata_ucb_ack_nack_scanin),
1128 .scan_out(rdata_ucb_ack_nack_scanout),
1129 .din({drif_rdata_ack_vld, drif_rdata_nack_vld}),
1130 .dout({rdata_ucb_ack_vld, rdata_ucb_nack_vld}),
1131 .en(rdata_ddr_cmp_sync_en),
1132 .l1clk(l1clk),
1133 .siclk(siclk),
1134 .soclk(soclk));
1135
1136// flop ucb read data
1137mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 ff_ucb_data_out (
1138 .scan_in(ff_ucb_data_out_scanin),
1139 .scan_out(ff_ucb_data_out_scanout),
1140 .din(drif_rdata_data[63:0]),
1141 .dout(rdata_ucb_drif_data[63:0]),
1142 .en(rdata_ddr_cmp_sync_en),
1143 .l1clk(l1clk),
1144 .siclk(siclk),
1145 .soclk(soclk));
1146
1147//////////////////////////////////////////////////////
1148// incoming signals from rdpctl
1149//////////////////////////////////////////////////////
1150
1151// data valids for l2 cache
1152mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ff_data_valid (
1153 .scan_in(ff_data_valid_scanin),
1154 .scan_out(ff_data_valid_scanout),
1155 .din({rdpctl_l2t0_data_valid,rdpctl_l2t1_data_valid}),
1156 .dout({rdata_l2t0_data_valid,rdata_l2t1_data_valid}),
1157 .en(rdata_ddr_cmp_sync_en),
1158 .l1clk(l1clk),
1159 .siclk(siclk),
1160 .soclk(soclk));
1161
1162// read request id's for l2 cache
1163mcu_rdata_ctl_msff_ctl_macro__en_1__width_3 ff_rd_req_id (
1164 .scan_in(ff_rd_req_id_scanin),
1165 .scan_out(ff_rd_req_id_scanout),
1166 .din(rdpctl_rd_req_id[2:0]),
1167 .dout(rdata_rd_req_id[2:0]),
1168 .en(rdata_ddr_cmp_sync_en),
1169 .l1clk(l1clk),
1170 .siclk(siclk),
1171 .soclk(soclk));
1172
1173// quad word id's for l2 cache
1174mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_qword_id (
1175 .scan_in(ff_qword_id_scanin),
1176 .scan_out(ff_qword_id_scanout),
1177 .din(rdpctl_qword_id),
1178 .dout(rdata_qword_id),
1179 .en(rdata_ddr_cmp_sync_en),
1180 .l1clk(l1clk),
1181 .siclk(siclk),
1182 .soclk(soclk));
1183
1184// error flags for l2 cache
1185mcu_rdata_ctl_msff_ctl_macro__en_1__width_4 ff_scrub_err_valid (
1186 .scan_in(ff_scrub_err_valid_scanin),
1187 .scan_out(ff_scrub_err_valid_scanout),
1188 .din({rdpctl_scrb0_err_valid, rdpctl_scrb1_err_valid, rdpctl_fbd0_recov_err, rdpctl_fbd1_recov_err}),
1189 .dout({rdata_scrb0_err_valid, rdata_scrb1_err_valid, rdata_fbd0_recov_err, rdata_fbd1_recov_err}),
1190 .en(rdata_ddr_cmp_sync_en),
1191 .l1clk(l1clk),
1192 .siclk(siclk),
1193 .soclk(soclk));
1194
1195mcu_rdata_ctl_msff_ctl_macro__en_1__width_3 ff_pa_err_p2 (
1196 .scan_in(ff_pa_err_p2_scanin),
1197 .scan_out(ff_pa_err_p2_scanout),
1198 .din({rdpctl_pa_err, rdpctl_fbd_unrecov_err[1:0]}),
1199 .dout({rdata_pa_err_p2, rdata_fbd_unrecov_err_p1_1, rdata_fbd_unrecov_err_p2_0}),
1200 .en(rdata_ddr_cmp_sync_en),
1201 .l1clk(l1clk),
1202 .siclk(siclk),
1203 .soclk(soclk));
1204
1205// debug trigger enable
1206mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 ff_dbg_trig (
1207 .scan_in(ff_dbg_trig_scanin),
1208 .scan_out(ff_dbg_trig_scanout),
1209 .din(rdpctl_dbg_trig_enable),
1210 .dout(rdata_dbg_trig_enable),
1211 .en(rdata_ddr_cmp_sync_en),
1212 .l1clk(l1clk),
1213 .siclk(siclk),
1214 .soclk(soclk));
1215
1216mcu_rdata_ctl_msff_ctl_macro__en_1__width_4 ff_debug_signals (
1217 .scan_in(ff_debug_signals_scanin),
1218 .scan_out(ff_debug_signals_scanout),
1219 .din({fbdic_fbd_error,drif_mcu_error_mode,woq_wr_req_out[1:0]}),
1220 .dout({rdata_fbd_error_out,rdata_mcu_error_mode,rdata_wr_req_out_out[1:0]}),
1221 .en(rdata_ddr_cmp_sync_en),
1222 .l1clk(l1clk),
1223 .siclk(siclk),
1224 .soclk(soclk));
1225
1226assign rdata_fbd_error = rdata_fbd_error_out & rdata_ddr_cmp_sync_en_d1;
1227assign rdata_wr_req_out[1:0] = rdata_wr_req_out_out[1:0] & {2{rdata_ddr_cmp_sync_en_d1}};
1228
1229// interrupts for NCU
1230mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 ff_rdata_intr (
1231 .scan_in(ff_rdata_intr_scanin),
1232 .scan_out(ff_rdata_intr_scanout),
1233 .din({rdpctl_secc_cnt_intr,fbdic_err_fbr}),
1234 .dout({rdata_secc_cnt_intr,rdata_fbr_intr}),
1235 .en(rdata_ddr_cmp_sync_en),
1236 .l1clk(l1clk),
1237 .siclk(siclk),
1238 .soclk(soclk));
1239
1240// SERDES DTM mux select for ucb
1241mcu_rdata_ctl_msff_ctl_macro__en_1 ff_serdes_dtm_cpu (
1242 .scan_in(ff_serdes_dtm_cpu_scanin),
1243 .scan_out(ff_serdes_dtm_cpu_scanout),
1244 .din(fbdic_srds_dtm_muxsel),
1245 .dout(rdata_serdes_dtm_cpu),
1246 .en(rdata_ddr_cmp_sync_en),
1247 .l1clk(l1clk),
1248 .siclk(siclk),
1249 .soclk(soclk));
1250
1251//////////////////////////////////////////////////////////////////
1252// Generate L2 response for read requests
1253//////////////////////////////////////////////////////////////////
1254
1255assign mcu_l2t0_data_vld_r0 = rdata_l2t0_data_valid & rdata_ddr_cmp_sync_en_d12;
1256assign mcu_l2t1_data_vld_r0 = rdata_l2t1_data_valid & rdata_ddr_cmp_sync_en_d12;
1257assign mcu_l2t0_rd_req_id_r0[2:0] = rdata_rd_req_id[2:0];
1258assign mcu_l2t1_rd_req_id_r0[2:0] = rdata_rd_req_id[2:0];
1259assign mcu_l2t0_qword_id_r0[1:0] = {rdata_qword_id, rdata_ddr_cmp_sync_en_d2 & rdata_l2t0_data_valid};
1260assign mcu_l2t1_qword_id_r0[1:0] = {rdata_qword_id, rdata_ddr_cmp_sync_en_d2 & rdata_l2t1_data_valid};
1261
1262assign rdata_ddr_cmp_sync_en_d12_in = rdata_ddr_cmp_sync_en | rdata_ddr_cmp_sync_en_d1;
1263mcu_rdata_ctl_msff_ctl_macro ff_ddr_cmp_sync_en_d12 (
1264 .scan_in(ff_ddr_cmp_sync_en_d12_scanin),
1265 .scan_out(ff_ddr_cmp_sync_en_d12_scanout),
1266 .din(rdata_ddr_cmp_sync_en_d12_in),
1267 .dout(rdata_ddr_cmp_sync_en_d12),
1268 .l1clk(l1clk),
1269 .siclk(siclk),
1270 .soclk(soclk));
1271
1272// select signal to force data and l2ecc to zero for dummy reads
1273assign rdata_rddata_sel[1:0] = rdata_ddr_cmp_sync_en_d1 ? 2'h2 : 2'h1;
1274
1275/////////////////////////////////////////////////
1276// ECC Detect and Correct data
1277/////////////////////////////////////////////////
1278
1279// scrubbing ecc error signals
1280assign mcu_l2t0_scb_secc_err_in = readdp_l2_secc_err_dly1 & rdata_scrb0_err_valid & rdata_ddr_cmp_sync_en_d12 |
1281 rdata_fbd0_recov_err & rdata_ddr_cmp_sync_en_d1;
1282assign mcu_l2t0_scb_mecc_err_in = readdp_l2_mecc_err_dly1 & rdata_scrb0_err_valid & rdata_ddr_cmp_sync_en_d12 |
1283 rdata_fbd_unrecov_err_p1_1 & rdata_ddr_cmp_sync_en_d1;
1284assign mcu_l2t1_scb_secc_err_in = readdp_l2_secc_err_dly1 & rdata_scrb1_err_valid & rdata_ddr_cmp_sync_en_d12 |
1285 rdata_fbd1_recov_err & rdata_ddr_cmp_sync_en_d1;
1286assign mcu_l2t1_scb_mecc_err_in = readdp_l2_mecc_err_dly1 & rdata_scrb1_err_valid & rdata_ddr_cmp_sync_en_d12;
1287
1288mcu_rdata_ctl_msff_ctl_macro__width_4 ff_l2_scb_mecc_secc (
1289 .scan_in(ff_l2_scb_mecc_secc_scanin),
1290 .scan_out(ff_l2_scb_mecc_secc_scanout),
1291 .din({ mcu_l2t0_scb_mecc_err_in, mcu_l2t0_scb_secc_err_in, mcu_l2t1_scb_mecc_err_in, mcu_l2t1_scb_secc_err_in}),
1292 .dout({mcu_l2t0_scb_mecc_err, mcu_l2t0_scb_secc_err, mcu_l2t1_scb_mecc_err, mcu_l2t1_scb_secc_err}),
1293 .l1clk(l1clk),
1294 .siclk(siclk),
1295 .soclk(soclk));
1296
1297// L2 read ecc error signals
1298assign rdata_ddr_cmp_sync_en_d23_in = rdata_ddr_cmp_sync_en_d1 | rdata_ddr_cmp_sync_en_d2;
1299mcu_rdata_ctl_msff_ctl_macro ff_ddr_cmp_sync_en_d23 (
1300 .scan_in(ff_ddr_cmp_sync_en_d23_scanin),
1301 .scan_out(ff_ddr_cmp_sync_en_d23_scanout),
1302 .din(rdata_ddr_cmp_sync_en_d23_in),
1303 .dout(rdata_ddr_cmp_sync_en_d23),
1304 .l1clk(l1clk),
1305 .siclk(siclk),
1306 .soclk(soclk));
1307
1308mcu_rdata_ctl_msff_ctl_macro__width_2 ff_data_valid_d1 (
1309 .scan_in(ff_data_valid_d1_scanin),
1310 .scan_out(ff_data_valid_d1_scanout),
1311 .din({rdata_l2t0_data_valid,rdata_l2t1_data_valid}),
1312 .dout({rdata_l2t0_data_valid_d1,rdata_l2t1_data_valid_d1}),
1313 .l1clk(l1clk),
1314 .siclk(siclk),
1315 .soclk(soclk));
1316
1317mcu_rdata_ctl_msff_ctl_macro__width_2 ff_pa_err_p1 (
1318 .scan_in(ff_pa_err_p1_scanin),
1319 .scan_out(ff_pa_err_p1_scanout),
1320 .din({rdata_pa_err_p2, rdata_fbd_unrecov_err_p2_0}),
1321 .dout({rdata_pa_err_p1, rdata_fbd_unrecov_err_p1_0}),
1322 .l1clk(l1clk),
1323 .siclk(siclk),
1324 .soclk(soclk));
1325
1326assign mcu_l2t0_mecc_err_r1 = (readdp_l2_mecc_err_dly1 | rdata_pa_err_p1 | rdata_fbd_unrecov_err_p1_0) &
1327 rdata_l2t0_data_valid_d1 & rdata_ddr_cmp_sync_en_d23;
1328assign mcu_l2t1_mecc_err_r1 = (readdp_l2_mecc_err_dly1 | rdata_pa_err_p1 | rdata_fbd_unrecov_err_p1_0) &
1329 rdata_l2t1_data_valid_d1 & rdata_ddr_cmp_sync_en_d23;
1330
1331assign mcu_l2t0_secc_err_r1 = readdp_l2_secc_err_dly1 & rdata_l2t0_data_valid_d1 & rdata_ddr_cmp_sync_en_d23;
1332assign mcu_l2t1_secc_err_r1 = readdp_l2_secc_err_dly1 & rdata_l2t1_data_valid_d1 & rdata_ddr_cmp_sync_en_d23;
1333
1334// delay the error bits to match up with the data
1335mcu_rdata_ctl_msff_ctl_macro__width_4 ff_l2_mecc_secc_r2 (
1336 .scan_in(ff_l2_mecc_secc_r2_scanin),
1337 .scan_out(ff_l2_mecc_secc_r2_scanout),
1338 .din({mcu_l2t0_mecc_err_r1, mcu_l2t0_secc_err_r1, mcu_l2t1_mecc_err_r1, mcu_l2t1_secc_err_r1}),
1339 .dout({mcu_l2t0_mecc_err_r2, mcu_l2t0_secc_err_r2, mcu_l2t1_mecc_err_r2, mcu_l2t1_secc_err_r2}),
1340 .l1clk(l1clk),
1341 .siclk(siclk),
1342 .soclk(soclk));
1343
1344mcu_rdata_ctl_msff_ctl_macro__width_4 ff_l2_mecc_secc_r3 (
1345 .scan_in(ff_l2_mecc_secc_r3_scanin),
1346 .scan_out(ff_l2_mecc_secc_r3_scanout),
1347 .din({mcu_l2t0_mecc_err_r2, mcu_l2t0_secc_err_r2, mcu_l2t1_mecc_err_r2, mcu_l2t1_secc_err_r2}),
1348 .dout({mcu_l2t0_mecc_err_r3, mcu_l2t0_secc_err_r3, mcu_l2t1_mecc_err_r3, mcu_l2t1_secc_err_r3}),
1349 .l1clk(l1clk),
1350 .siclk(siclk),
1351 .soclk(soclk));
1352
1353assign rdata_pa_err_in = (rdata_pa_err_p1 | rdata_fbd_unrecov_err_p1_0) &
1354 (rdata_l2t0_data_valid_d1 | rdata_l2t1_data_valid_d1) & rdata_ddr_cmp_sync_en_d23;
1355mcu_rdata_ctl_msff_ctl_macro ff_pa_err (
1356 .scan_in(ff_pa_err_scanin),
1357 .scan_out(ff_pa_err_scanout),
1358 .din(rdata_pa_err_in),
1359 .dout(rdata_pa_err),
1360 .l1clk(l1clk),
1361 .siclk(siclk),
1362 .soclk(soclk));
1363
1364// MBIST read data
1365
1366mcu_rdata_ctl_msff_ctl_macro__width_32 ff_mbist_data (
1367 .scan_in(ff_mbist_data_scanin),
1368 .scan_out(ff_mbist_data_scanout),
1369 .din({wdqrf00_data[7:0],wdqrf01_data[7:0],wdqrf10_data[7:0],wdqrf11_data[7:0]}),
1370 .dout({wdqrf00_data_reg[7:0],wdqrf01_data_reg[7:0],wdqrf10_data_reg[7:0],wdqrf11_data_reg[7:0]}),
1371 .l1clk(l1clk),
1372 .siclk(siclk),
1373 .soclk(soclk));
1374
1375assign mbist_read_data[7:0] =
1376 wdqrf00_data_reg[7:0] & {8{~mbist_sel_bank0or1_d1 & ~mbist_sel_hiorlo_72bits_d1 & mbist_run_d1}} |
1377 wdqrf01_data_reg[7:0] & {8{~mbist_sel_bank0or1_d1 & mbist_sel_hiorlo_72bits_d1 & mbist_run_d1}} |
1378 wdqrf10_data_reg[7:0] & {8{ mbist_sel_bank0or1_d1 & ~mbist_sel_hiorlo_72bits_d1 & mbist_run_d1}} |
1379 wdqrf11_data_reg[7:0] & {8{ mbist_sel_bank0or1_d1 & mbist_sel_hiorlo_72bits_d1 & mbist_run_d1}};
1380
1381// MBIST read enable and address
1382mcu_rdata_ctl_msff_ctl_macro ff_mbist_run_d1 (
1383 .scan_in(ff_mbist_addr_scanin),
1384 .scan_out(ff_mbist_run_d1_scanout),
1385 .din(mbist_run),
1386 .dout(mbist_run_d1),
1387 .l1clk(l1clk),
1388 .siclk(siclk),
1389 .soclk(soclk));
1390
1391mcu_rdata_ctl_msff_ctl_macro__en_1__width_11 ff_mbist_addr (
1392 .scan_in(ff_mbist_run_d1_scanout),
1393 .scan_out(ff_mbist_addr_scanout),
1394 .din({mbist_addr[4:0],mbist_sel_bank0or1,mbist_sel_hiorlo_72bits,
1395 mbist_wdqrf00_rd_en,mbist_wdqrf01_rd_en,mbist_wdqrf10_rd_en,mbist_wdqrf11_rd_en}),
1396 .dout({mbist_addr_d1[4:0],mbist_sel_bank0or1_d1,mbist_sel_hiorlo_72bits_d1,
1397 mbist_wdqrf00_rd_en_d1,mbist_wdqrf01_rd_en_d1,mbist_wdqrf10_rd_en_d1,mbist_wdqrf11_rd_en_d1}),
1398 .en(mbist_run),
1399 .l1clk(l1clk),
1400 .siclk(siclk),
1401 .soclk(soclk));
1402
1403assign mbist_run_d1_l = ~mbist_run_d1;
1404
1405assign rdata_wdq_radr[4:0] = mbist_run_d1 ? mbist_addr_d1[4:0] : drif_wdq_radr[4:0];
1406assign rdata0_wdq_rd[0] = mbist_run_d1 ? mbist_wdqrf00_rd_en_d1 : drif0_wdq_rd;
1407assign rdata0_wdq_rd[1] = mbist_run_d1 ? mbist_wdqrf01_rd_en_d1 : drif0_wdq_rd;
1408assign rdata1_wdq_rd[0] = mbist_run_d1 ? mbist_wdqrf10_rd_en_d1 : drif1_wdq_rd;
1409assign rdata1_wdq_rd[1] = mbist_run_d1 ? mbist_wdqrf11_rd_en_d1 : drif1_wdq_rd;
1410
1411// spare gates
1412mcu_rdata_ctl_spare_ctl_macro__num_5 spares (
1413 .scan_in(spares_scanin),
1414 .scan_out(spares_scanout),
1415 .l1clk(l1clk),
1416 .siclk(siclk),
1417 .soclk(soclk)
1418);
1419
1420// fixscan start:
1421assign ff_mcu_sync_pulses_scanin = scan_in ;
1422assign ff_io_sync_pulses_scanin = ff_mcu_sync_pulses_scanout;
1423assign ff_mcu_sync_pulse_delays_scanin = ff_io_sync_pulses_scanout;
1424assign ff_data_word_cnt_scanin = ff_mcu_sync_pulse_delays_scanout;
1425assign ff_ucb_rdata_rd_req_id_scanin = ff_data_word_cnt_scanout ;
1426assign ff_ucb_rdata_rd_req_id_d1_scanin = ff_ucb_rdata_rd_req_id_scanout;
1427assign ff_ucb_mecc_err_o_scanin = ff_ucb_rdata_rd_req_id_d1_scanout;
1428assign ff_ucb_mecc_err_d1_scanin = ff_ucb_mecc_err_o_scanout;
1429assign ff_ucb_secc_err_o_scanin = ff_ucb_mecc_err_d1_scanout;
1430assign ff_ucb_secc_err_d1_scanin = ff_ucb_secc_err_o_scanout;
1431assign ff_ucb_err_event_d1_scanin = ff_ucb_secc_err_d1_scanout;
1432assign ff_ucb_err_event_scanin = ff_ucb_err_event_d1_scanout;
1433assign ff_ucb_fbd_error_d1_scanin = ff_ucb_err_event_scanout ;
1434assign ff_ucb_fbd_error_scanin = ff_ucb_fbd_error_d1_scanout;
1435assign ff_mcu_ucb_err_mode_scanin = ff_ucb_fbd_error_scanout ;
1436assign ff_wr_req_out_cnt_scanin = ff_mcu_ucb_err_mode_scanout;
1437assign ff_ucb_wr_req_out1_d1_scanin = ff_wr_req_out_cnt_scanout;
1438assign ff_ucb_wr_req_out1_scanin = ff_ucb_wr_req_out1_d1_scanout;
1439assign ff_ucb_wr_req_out0_scanin = ff_ucb_wr_req_out1_scanout;
1440assign ff_ucb_test_signals_scanin = ff_ucb_wr_req_out0_scanout;
1441assign ucb_rd_wr_vld_scanin = ff_ucb_test_signals_scanout;
1442assign ucb_addr_in_scanin = ucb_rd_wr_vld_scanout ;
1443assign ucb_data_in_scanin = ucb_addr_in_scanout ;
1444assign ff_ucb_err_inj_scanin = ucb_data_in_scanout ;
1445assign ff_partial_bank_mode_scanin = ff_ucb_err_inj_scanout ;
1446assign rdata_wr_vld_scanin = ff_partial_bank_mode_scanout;
1447assign rdata_rd_vld_scanin = rdata_wr_vld_scanout ;
1448assign ff_rdata_ucb_addr_cpu_scanin = rdata_rd_vld_scanout ;
1449assign ff_rdata_ucb_data_cpu_scanin = ff_rdata_ucb_addr_cpu_scanout;
1450assign ucb_ack_scanin = ff_rdata_ucb_data_cpu_scanout;
1451assign ucb_nack_scanin = ucb_ack_scanout ;
1452assign ucb_data_cpu_scanin = ucb_nack_scanout ;
1453assign ff_ecc_intr_scanin = ucb_data_cpu_scanout ;
1454assign ff_fbr_intr_scanin = ff_ecc_intr_scanout ;
1455assign ucb_ack_nack_scanin = ff_fbr_intr_scanout ;
1456assign ucb_data_out_scanin = ucb_ack_nack_scanout ;
1457assign ff_ncu_intr_scanin = ucb_data_out_scanout ;
1458assign ff_serdes_dtm_scanin = ff_ncu_intr_scanout ;
1459assign ff_test_signals_scanin = ff_serdes_dtm_scanout ;
1460assign rdata_ucb_rd_wr_vld_scanin = ff_test_signals_scanout ;
1461assign rdata_ucb_addr_in_scanin = rdata_ucb_rd_wr_vld_scanout;
1462assign rdata_ucb_data_in_scanin = rdata_ucb_addr_in_scanout;
1463assign ff_err_inj_scanin = rdata_ucb_data_in_scanout;
1464assign ff_pm_mcus_scanin = ff_err_inj_scanout ;
1465assign rdata_ucb_ack_nack_scanin = ff_pm_mcus_scanout ;
1466assign ff_ucb_data_out_scanin = rdata_ucb_ack_nack_scanout;
1467assign ff_data_valid_scanin = ff_ucb_data_out_scanout ;
1468assign ff_rd_req_id_scanin = ff_data_valid_scanout ;
1469assign ff_qword_id_scanin = ff_rd_req_id_scanout ;
1470assign ff_scrub_err_valid_scanin = ff_qword_id_scanout ;
1471assign ff_pa_err_p2_scanin = ff_scrub_err_valid_scanout;
1472assign ff_dbg_trig_scanin = ff_pa_err_p2_scanout ;
1473assign ff_debug_signals_scanin = ff_dbg_trig_scanout ;
1474assign ff_rdata_intr_scanin = ff_debug_signals_scanout ;
1475assign ff_serdes_dtm_cpu_scanin = ff_rdata_intr_scanout ;
1476assign ff_ddr_cmp_sync_en_d12_scanin = ff_serdes_dtm_cpu_scanout;
1477assign ff_l2_scb_mecc_secc_scanin = ff_ddr_cmp_sync_en_d12_scanout;
1478assign ff_ddr_cmp_sync_en_d23_scanin = ff_l2_scb_mecc_secc_scanout;
1479assign ff_data_valid_d1_scanin = ff_ddr_cmp_sync_en_d23_scanout;
1480assign ff_pa_err_p1_scanin = ff_data_valid_d1_scanout ;
1481assign ff_l2_mecc_secc_r2_scanin = ff_pa_err_p1_scanout ;
1482assign ff_l2_mecc_secc_r3_scanin = ff_l2_mecc_secc_r2_scanout;
1483assign ff_pa_err_scanin = ff_l2_mecc_secc_r3_scanout;
1484assign ff_mbist_data_scanin = ff_pa_err_scanout ;
1485assign ff_mbist_addr_scanin = ff_mbist_data_scanout ;
1486assign spares_scanin = ff_mbist_addr_scanout ;
1487assign scan_out = spares_scanout ;
1488// fixscan end:
1489endmodule
1490
1491
1492
1493
1494
1495
1496// any PARAMS parms go into naming of macro
1497
1498module mcu_rdata_ctl_l1clkhdr_ctl_macro (
1499 l2clk,
1500 l1en,
1501 pce_ov,
1502 stop,
1503 se,
1504 l1clk);
1505
1506
1507 input l2clk;
1508 input l1en;
1509 input pce_ov;
1510 input stop;
1511 input se;
1512 output l1clk;
1513
1514
1515
1516
1517
1518cl_sc1_l1hdr_8x c_0 (
1519
1520
1521 .l2clk(l2clk),
1522 .pce(l1en),
1523 .l1clk(l1clk),
1524 .se(se),
1525 .pce_ov(pce_ov),
1526 .stop(stop)
1527);
1528
1529
1530
1531endmodule
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545// any PARAMS parms go into naming of macro
1546
1547module mcu_rdata_ctl_msff_ctl_macro__width_2 (
1548 din,
1549 l1clk,
1550 scan_in,
1551 siclk,
1552 soclk,
1553 dout,
1554 scan_out);
1555wire [1:0] fdin;
1556wire [0:0] so;
1557
1558 input [1:0] din;
1559 input l1clk;
1560 input scan_in;
1561
1562
1563 input siclk;
1564 input soclk;
1565
1566 output [1:0] dout;
1567 output scan_out;
1568assign fdin[1:0] = din[1:0];
1569
1570
1571
1572
1573
1574
1575dff #(2) d0_0 (
1576.l1clk(l1clk),
1577.siclk(siclk),
1578.soclk(soclk),
1579.d(fdin[1:0]),
1580.si({scan_in,so[0:0]}),
1581.so({so[0:0],scan_out}),
1582.q(dout[1:0])
1583);
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596endmodule
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610// any PARAMS parms go into naming of macro
1611
1612module mcu_rdata_ctl_msff_ctl_macro__width_4 (
1613 din,
1614 l1clk,
1615 scan_in,
1616 siclk,
1617 soclk,
1618 dout,
1619 scan_out);
1620wire [3:0] fdin;
1621wire [2:0] so;
1622
1623 input [3:0] din;
1624 input l1clk;
1625 input scan_in;
1626
1627
1628 input siclk;
1629 input soclk;
1630
1631 output [3:0] dout;
1632 output scan_out;
1633assign fdin[3:0] = din[3:0];
1634
1635
1636
1637
1638
1639
1640dff #(4) d0_0 (
1641.l1clk(l1clk),
1642.siclk(siclk),
1643.soclk(soclk),
1644.d(fdin[3:0]),
1645.si({scan_in,so[2:0]}),
1646.so({so[2:0],scan_out}),
1647.q(dout[3:0])
1648);
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661endmodule
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675// any PARAMS parms go into naming of macro
1676
1677module mcu_rdata_ctl_msff_ctl_macro__width_5 (
1678 din,
1679 l1clk,
1680 scan_in,
1681 siclk,
1682 soclk,
1683 dout,
1684 scan_out);
1685wire [4:0] fdin;
1686wire [3:0] so;
1687
1688 input [4:0] din;
1689 input l1clk;
1690 input scan_in;
1691
1692
1693 input siclk;
1694 input soclk;
1695
1696 output [4:0] dout;
1697 output scan_out;
1698assign fdin[4:0] = din[4:0];
1699
1700
1701
1702
1703
1704
1705dff #(5) d0_0 (
1706.l1clk(l1clk),
1707.siclk(siclk),
1708.soclk(soclk),
1709.d(fdin[4:0]),
1710.si({scan_in,so[3:0]}),
1711.so({so[3:0],scan_out}),
1712.q(dout[4:0])
1713);
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726endmodule
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740// any PARAMS parms go into naming of macro
1741
1742module mcu_rdata_ctl_msff_ctl_macro__en_1__width_5 (
1743 din,
1744 en,
1745 l1clk,
1746 scan_in,
1747 siclk,
1748 soclk,
1749 dout,
1750 scan_out);
1751wire [4:0] fdin;
1752wire [3:0] so;
1753
1754 input [4:0] din;
1755 input en;
1756 input l1clk;
1757 input scan_in;
1758
1759
1760 input siclk;
1761 input soclk;
1762
1763 output [4:0] dout;
1764 output scan_out;
1765assign fdin[4:0] = (din[4:0] & {5{en}}) | (dout[4:0] & ~{5{en}});
1766
1767
1768
1769
1770
1771
1772dff #(5) d0_0 (
1773.l1clk(l1clk),
1774.siclk(siclk),
1775.soclk(soclk),
1776.d(fdin[4:0]),
1777.si({scan_in,so[3:0]}),
1778.so({so[3:0],scan_out}),
1779.q(dout[4:0])
1780);
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793endmodule
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807// any PARAMS parms go into naming of macro
1808
1809module mcu_rdata_ctl_msff_ctl_macro__width_1 (
1810 din,
1811 l1clk,
1812 scan_in,
1813 siclk,
1814 soclk,
1815 dout,
1816 scan_out);
1817wire [0:0] fdin;
1818
1819 input [0:0] din;
1820 input l1clk;
1821 input scan_in;
1822
1823
1824 input siclk;
1825 input soclk;
1826
1827 output [0:0] dout;
1828 output scan_out;
1829assign fdin[0:0] = din[0:0];
1830
1831
1832
1833
1834
1835
1836dff #(1) d0_0 (
1837.l1clk(l1clk),
1838.siclk(siclk),
1839.soclk(soclk),
1840.d(fdin[0:0]),
1841.si(scan_in),
1842.so(scan_out),
1843.q(dout[0:0])
1844);
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857endmodule
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871// any PARAMS parms go into naming of macro
1872
1873module mcu_rdata_ctl_msff_ctl_macro__en_1__width_1 (
1874 din,
1875 en,
1876 l1clk,
1877 scan_in,
1878 siclk,
1879 soclk,
1880 dout,
1881 scan_out);
1882wire [0:0] fdin;
1883
1884 input [0:0] din;
1885 input en;
1886 input l1clk;
1887 input scan_in;
1888
1889
1890 input siclk;
1891 input soclk;
1892
1893 output [0:0] dout;
1894 output scan_out;
1895assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
1896
1897
1898
1899
1900
1901
1902dff #(1) d0_0 (
1903.l1clk(l1clk),
1904.siclk(siclk),
1905.soclk(soclk),
1906.d(fdin[0:0]),
1907.si(scan_in),
1908.so(scan_out),
1909.q(dout[0:0])
1910);
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923endmodule
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937// any PARAMS parms go into naming of macro
1938
1939module mcu_rdata_ctl_msff_ctl_macro__en_1 (
1940 din,
1941 en,
1942 l1clk,
1943 scan_in,
1944 siclk,
1945 soclk,
1946 dout,
1947 scan_out);
1948wire [0:0] fdin;
1949
1950 input [0:0] din;
1951 input en;
1952 input l1clk;
1953 input scan_in;
1954
1955
1956 input siclk;
1957 input soclk;
1958
1959 output [0:0] dout;
1960 output scan_out;
1961assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
1962
1963
1964
1965
1966
1967
1968dff #(1) d0_0 (
1969.l1clk(l1clk),
1970.siclk(siclk),
1971.soclk(soclk),
1972.d(fdin[0:0]),
1973.si(scan_in),
1974.so(scan_out),
1975.q(dout[0:0])
1976);
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989endmodule
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003// any PARAMS parms go into naming of macro
2004
2005module mcu_rdata_ctl_msff_ctl_macro__en_1__width_2 (
2006 din,
2007 en,
2008 l1clk,
2009 scan_in,
2010 siclk,
2011 soclk,
2012 dout,
2013 scan_out);
2014wire [1:0] fdin;
2015wire [0:0] so;
2016
2017 input [1:0] din;
2018 input en;
2019 input l1clk;
2020 input scan_in;
2021
2022
2023 input siclk;
2024 input soclk;
2025
2026 output [1:0] dout;
2027 output scan_out;
2028assign fdin[1:0] = (din[1:0] & {2{en}}) | (dout[1:0] & ~{2{en}});
2029
2030
2031
2032
2033
2034
2035dff #(2) d0_0 (
2036.l1clk(l1clk),
2037.siclk(siclk),
2038.soclk(soclk),
2039.d(fdin[1:0]),
2040.si({scan_in,so[0:0]}),
2041.so({so[0:0],scan_out}),
2042.q(dout[1:0])
2043);
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056endmodule
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070// any PARAMS parms go into naming of macro
2071
2072module mcu_rdata_ctl_msff_ctl_macro__en_1__width_13 (
2073 din,
2074 en,
2075 l1clk,
2076 scan_in,
2077 siclk,
2078 soclk,
2079 dout,
2080 scan_out);
2081wire [12:0] fdin;
2082wire [11:0] so;
2083
2084 input [12:0] din;
2085 input en;
2086 input l1clk;
2087 input scan_in;
2088
2089
2090 input siclk;
2091 input soclk;
2092
2093 output [12:0] dout;
2094 output scan_out;
2095assign fdin[12:0] = (din[12:0] & {13{en}}) | (dout[12:0] & ~{13{en}});
2096
2097
2098
2099
2100
2101
2102dff #(13) d0_0 (
2103.l1clk(l1clk),
2104.siclk(siclk),
2105.soclk(soclk),
2106.d(fdin[12:0]),
2107.si({scan_in,so[11:0]}),
2108.so({so[11:0],scan_out}),
2109.q(dout[12:0])
2110);
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123endmodule
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137// any PARAMS parms go into naming of macro
2138
2139module mcu_rdata_ctl_msff_ctl_macro__en_1__width_64 (
2140 din,
2141 en,
2142 l1clk,
2143 scan_in,
2144 siclk,
2145 soclk,
2146 dout,
2147 scan_out);
2148wire [63:0] fdin;
2149wire [62:0] so;
2150
2151 input [63:0] din;
2152 input en;
2153 input l1clk;
2154 input scan_in;
2155
2156
2157 input siclk;
2158 input soclk;
2159
2160 output [63:0] dout;
2161 output scan_out;
2162assign fdin[63:0] = (din[63:0] & {64{en}}) | (dout[63:0] & ~{64{en}});
2163
2164
2165
2166
2167
2168
2169dff #(64) d0_0 (
2170.l1clk(l1clk),
2171.siclk(siclk),
2172.soclk(soclk),
2173.d(fdin[63:0]),
2174.si({scan_in,so[62:0]}),
2175.so({so[62:0],scan_out}),
2176.q(dout[63:0])
2177);
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190endmodule
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204// any PARAMS parms go into naming of macro
2205
2206module mcu_rdata_ctl_msff_ctl_macro__en_1__width_3 (
2207 din,
2208 en,
2209 l1clk,
2210 scan_in,
2211 siclk,
2212 soclk,
2213 dout,
2214 scan_out);
2215wire [2:0] fdin;
2216wire [1:0] so;
2217
2218 input [2:0] din;
2219 input en;
2220 input l1clk;
2221 input scan_in;
2222
2223
2224 input siclk;
2225 input soclk;
2226
2227 output [2:0] dout;
2228 output scan_out;
2229assign fdin[2:0] = (din[2:0] & {3{en}}) | (dout[2:0] & ~{3{en}});
2230
2231
2232
2233
2234
2235
2236dff #(3) d0_0 (
2237.l1clk(l1clk),
2238.siclk(siclk),
2239.soclk(soclk),
2240.d(fdin[2:0]),
2241.si({scan_in,so[1:0]}),
2242.so({so[1:0],scan_out}),
2243.q(dout[2:0])
2244);
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257endmodule
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271// any PARAMS parms go into naming of macro
2272
2273module mcu_rdata_ctl_msff_ctl_macro__clr_1__en_1__width_1 (
2274 din,
2275 en,
2276 clr,
2277 l1clk,
2278 scan_in,
2279 siclk,
2280 soclk,
2281 dout,
2282 scan_out);
2283wire [0:0] fdin;
2284
2285 input [0:0] din;
2286 input en;
2287 input clr;
2288 input l1clk;
2289 input scan_in;
2290
2291
2292 input siclk;
2293 input soclk;
2294
2295 output [0:0] dout;
2296 output scan_out;
2297assign fdin[0:0] = (din[0:0] & {1{en}} & ~{1{clr}}) | (dout[0:0] & ~{1{en}} & ~{1{clr}});
2298
2299
2300
2301
2302
2303
2304dff #(1) d0_0 (
2305.l1clk(l1clk),
2306.siclk(siclk),
2307.soclk(soclk),
2308.d(fdin[0:0]),
2309.si(scan_in),
2310.so(scan_out),
2311.q(dout[0:0])
2312);
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325endmodule
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339// any PARAMS parms go into naming of macro
2340
2341module mcu_rdata_ctl_msff_ctl_macro__en_1__width_4 (
2342 din,
2343 en,
2344 l1clk,
2345 scan_in,
2346 siclk,
2347 soclk,
2348 dout,
2349 scan_out);
2350wire [3:0] fdin;
2351wire [2:0] so;
2352
2353 input [3:0] din;
2354 input en;
2355 input l1clk;
2356 input scan_in;
2357
2358
2359 input siclk;
2360 input soclk;
2361
2362 output [3:0] dout;
2363 output scan_out;
2364assign fdin[3:0] = (din[3:0] & {4{en}}) | (dout[3:0] & ~{4{en}});
2365
2366
2367
2368
2369
2370
2371dff #(4) d0_0 (
2372.l1clk(l1clk),
2373.siclk(siclk),
2374.soclk(soclk),
2375.d(fdin[3:0]),
2376.si({scan_in,so[2:0]}),
2377.so({so[2:0],scan_out}),
2378.q(dout[3:0])
2379);
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392endmodule
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406// any PARAMS parms go into naming of macro
2407
2408module mcu_rdata_ctl_msff_ctl_macro (
2409 din,
2410 l1clk,
2411 scan_in,
2412 siclk,
2413 soclk,
2414 dout,
2415 scan_out);
2416wire [0:0] fdin;
2417
2418 input [0:0] din;
2419 input l1clk;
2420 input scan_in;
2421
2422
2423 input siclk;
2424 input soclk;
2425
2426 output [0:0] dout;
2427 output scan_out;
2428assign fdin[0:0] = din[0:0];
2429
2430
2431
2432
2433
2434
2435dff #(1) d0_0 (
2436.l1clk(l1clk),
2437.siclk(siclk),
2438.soclk(soclk),
2439.d(fdin[0:0]),
2440.si(scan_in),
2441.so(scan_out),
2442.q(dout[0:0])
2443);
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456endmodule
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470// any PARAMS parms go into naming of macro
2471
2472module mcu_rdata_ctl_msff_ctl_macro__width_32 (
2473 din,
2474 l1clk,
2475 scan_in,
2476 siclk,
2477 soclk,
2478 dout,
2479 scan_out);
2480wire [31:0] fdin;
2481wire [30:0] so;
2482
2483 input [31:0] din;
2484 input l1clk;
2485 input scan_in;
2486
2487
2488 input siclk;
2489 input soclk;
2490
2491 output [31:0] dout;
2492 output scan_out;
2493assign fdin[31:0] = din[31:0];
2494
2495
2496
2497
2498
2499
2500dff #(32) d0_0 (
2501.l1clk(l1clk),
2502.siclk(siclk),
2503.soclk(soclk),
2504.d(fdin[31:0]),
2505.si({scan_in,so[30:0]}),
2506.so({so[30:0],scan_out}),
2507.q(dout[31:0])
2508);
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521endmodule
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535// any PARAMS parms go into naming of macro
2536
2537module mcu_rdata_ctl_msff_ctl_macro__en_1__width_11 (
2538 din,
2539 en,
2540 l1clk,
2541 scan_in,
2542 siclk,
2543 soclk,
2544 dout,
2545 scan_out);
2546wire [10:0] fdin;
2547wire [9:0] so;
2548
2549 input [10:0] din;
2550 input en;
2551 input l1clk;
2552 input scan_in;
2553
2554
2555 input siclk;
2556 input soclk;
2557
2558 output [10:0] dout;
2559 output scan_out;
2560assign fdin[10:0] = (din[10:0] & {11{en}}) | (dout[10:0] & ~{11{en}});
2561
2562
2563
2564
2565
2566
2567dff #(11) d0_0 (
2568.l1clk(l1clk),
2569.siclk(siclk),
2570.soclk(soclk),
2571.d(fdin[10:0]),
2572.si({scan_in,so[9:0]}),
2573.so({so[9:0],scan_out}),
2574.q(dout[10:0])
2575);
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588endmodule
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598// Description: Spare gate macro for control blocks
2599//
2600// Param num controls the number of times the macro is added
2601// flops=0 can be used to use only combination spare logic
2602
2603
2604module mcu_rdata_ctl_spare_ctl_macro__num_5 (
2605 l1clk,
2606 scan_in,
2607 siclk,
2608 soclk,
2609 scan_out);
2610wire si_0;
2611wire so_0;
2612wire spare0_flop_unused;
2613wire spare0_buf_32x_unused;
2614wire spare0_nand3_8x_unused;
2615wire spare0_inv_8x_unused;
2616wire spare0_aoi22_4x_unused;
2617wire spare0_buf_8x_unused;
2618wire spare0_oai22_4x_unused;
2619wire spare0_inv_16x_unused;
2620wire spare0_nand2_16x_unused;
2621wire spare0_nor3_4x_unused;
2622wire spare0_nand2_8x_unused;
2623wire spare0_buf_16x_unused;
2624wire spare0_nor2_16x_unused;
2625wire spare0_inv_32x_unused;
2626wire si_1;
2627wire so_1;
2628wire spare1_flop_unused;
2629wire spare1_buf_32x_unused;
2630wire spare1_nand3_8x_unused;
2631wire spare1_inv_8x_unused;
2632wire spare1_aoi22_4x_unused;
2633wire spare1_buf_8x_unused;
2634wire spare1_oai22_4x_unused;
2635wire spare1_inv_16x_unused;
2636wire spare1_nand2_16x_unused;
2637wire spare1_nor3_4x_unused;
2638wire spare1_nand2_8x_unused;
2639wire spare1_buf_16x_unused;
2640wire spare1_nor2_16x_unused;
2641wire spare1_inv_32x_unused;
2642wire si_2;
2643wire so_2;
2644wire spare2_flop_unused;
2645wire spare2_buf_32x_unused;
2646wire spare2_nand3_8x_unused;
2647wire spare2_inv_8x_unused;
2648wire spare2_aoi22_4x_unused;
2649wire spare2_buf_8x_unused;
2650wire spare2_oai22_4x_unused;
2651wire spare2_inv_16x_unused;
2652wire spare2_nand2_16x_unused;
2653wire spare2_nor3_4x_unused;
2654wire spare2_nand2_8x_unused;
2655wire spare2_buf_16x_unused;
2656wire spare2_nor2_16x_unused;
2657wire spare2_inv_32x_unused;
2658wire si_3;
2659wire so_3;
2660wire spare3_flop_unused;
2661wire spare3_buf_32x_unused;
2662wire spare3_nand3_8x_unused;
2663wire spare3_inv_8x_unused;
2664wire spare3_aoi22_4x_unused;
2665wire spare3_buf_8x_unused;
2666wire spare3_oai22_4x_unused;
2667wire spare3_inv_16x_unused;
2668wire spare3_nand2_16x_unused;
2669wire spare3_nor3_4x_unused;
2670wire spare3_nand2_8x_unused;
2671wire spare3_buf_16x_unused;
2672wire spare3_nor2_16x_unused;
2673wire spare3_inv_32x_unused;
2674wire si_4;
2675wire so_4;
2676wire spare4_flop_unused;
2677wire spare4_buf_32x_unused;
2678wire spare4_nand3_8x_unused;
2679wire spare4_inv_8x_unused;
2680wire spare4_aoi22_4x_unused;
2681wire spare4_buf_8x_unused;
2682wire spare4_oai22_4x_unused;
2683wire spare4_inv_16x_unused;
2684wire spare4_nand2_16x_unused;
2685wire spare4_nor3_4x_unused;
2686wire spare4_nand2_8x_unused;
2687wire spare4_buf_16x_unused;
2688wire spare4_nor2_16x_unused;
2689wire spare4_inv_32x_unused;
2690
2691
2692input l1clk;
2693input scan_in;
2694input siclk;
2695input soclk;
2696output scan_out;
2697
2698cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
2699 .siclk(siclk),
2700 .soclk(soclk),
2701 .si(si_0),
2702 .so(so_0),
2703 .d(1'b0),
2704 .q(spare0_flop_unused));
2705assign si_0 = scan_in;
2706
2707cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
2708 .out(spare0_buf_32x_unused));
2709cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
2710 .in1(1'b1),
2711 .in2(1'b1),
2712 .out(spare0_nand3_8x_unused));
2713cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
2714 .out(spare0_inv_8x_unused));
2715cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
2716 .in01(1'b1),
2717 .in10(1'b1),
2718 .in11(1'b1),
2719 .out(spare0_aoi22_4x_unused));
2720cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
2721 .out(spare0_buf_8x_unused));
2722cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
2723 .in01(1'b1),
2724 .in10(1'b1),
2725 .in11(1'b1),
2726 .out(spare0_oai22_4x_unused));
2727cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
2728 .out(spare0_inv_16x_unused));
2729cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
2730 .in1(1'b1),
2731 .out(spare0_nand2_16x_unused));
2732cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
2733 .in1(1'b0),
2734 .in2(1'b0),
2735 .out(spare0_nor3_4x_unused));
2736cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
2737 .in1(1'b1),
2738 .out(spare0_nand2_8x_unused));
2739cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
2740 .out(spare0_buf_16x_unused));
2741cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
2742 .in1(1'b0),
2743 .out(spare0_nor2_16x_unused));
2744cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
2745 .out(spare0_inv_32x_unused));
2746
2747cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
2748 .siclk(siclk),
2749 .soclk(soclk),
2750 .si(si_1),
2751 .so(so_1),
2752 .d(1'b0),
2753 .q(spare1_flop_unused));
2754assign si_1 = so_0;
2755
2756cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
2757 .out(spare1_buf_32x_unused));
2758cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
2759 .in1(1'b1),
2760 .in2(1'b1),
2761 .out(spare1_nand3_8x_unused));
2762cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
2763 .out(spare1_inv_8x_unused));
2764cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
2765 .in01(1'b1),
2766 .in10(1'b1),
2767 .in11(1'b1),
2768 .out(spare1_aoi22_4x_unused));
2769cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
2770 .out(spare1_buf_8x_unused));
2771cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
2772 .in01(1'b1),
2773 .in10(1'b1),
2774 .in11(1'b1),
2775 .out(spare1_oai22_4x_unused));
2776cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
2777 .out(spare1_inv_16x_unused));
2778cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
2779 .in1(1'b1),
2780 .out(spare1_nand2_16x_unused));
2781cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
2782 .in1(1'b0),
2783 .in2(1'b0),
2784 .out(spare1_nor3_4x_unused));
2785cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
2786 .in1(1'b1),
2787 .out(spare1_nand2_8x_unused));
2788cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
2789 .out(spare1_buf_16x_unused));
2790cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
2791 .in1(1'b0),
2792 .out(spare1_nor2_16x_unused));
2793cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
2794 .out(spare1_inv_32x_unused));
2795
2796cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
2797 .siclk(siclk),
2798 .soclk(soclk),
2799 .si(si_2),
2800 .so(so_2),
2801 .d(1'b0),
2802 .q(spare2_flop_unused));
2803assign si_2 = so_1;
2804
2805cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
2806 .out(spare2_buf_32x_unused));
2807cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
2808 .in1(1'b1),
2809 .in2(1'b1),
2810 .out(spare2_nand3_8x_unused));
2811cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
2812 .out(spare2_inv_8x_unused));
2813cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
2814 .in01(1'b1),
2815 .in10(1'b1),
2816 .in11(1'b1),
2817 .out(spare2_aoi22_4x_unused));
2818cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
2819 .out(spare2_buf_8x_unused));
2820cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
2821 .in01(1'b1),
2822 .in10(1'b1),
2823 .in11(1'b1),
2824 .out(spare2_oai22_4x_unused));
2825cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
2826 .out(spare2_inv_16x_unused));
2827cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
2828 .in1(1'b1),
2829 .out(spare2_nand2_16x_unused));
2830cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
2831 .in1(1'b0),
2832 .in2(1'b0),
2833 .out(spare2_nor3_4x_unused));
2834cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
2835 .in1(1'b1),
2836 .out(spare2_nand2_8x_unused));
2837cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
2838 .out(spare2_buf_16x_unused));
2839cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
2840 .in1(1'b0),
2841 .out(spare2_nor2_16x_unused));
2842cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
2843 .out(spare2_inv_32x_unused));
2844
2845cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
2846 .siclk(siclk),
2847 .soclk(soclk),
2848 .si(si_3),
2849 .so(so_3),
2850 .d(1'b0),
2851 .q(spare3_flop_unused));
2852assign si_3 = so_2;
2853
2854cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
2855 .out(spare3_buf_32x_unused));
2856cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
2857 .in1(1'b1),
2858 .in2(1'b1),
2859 .out(spare3_nand3_8x_unused));
2860cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
2861 .out(spare3_inv_8x_unused));
2862cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
2863 .in01(1'b1),
2864 .in10(1'b1),
2865 .in11(1'b1),
2866 .out(spare3_aoi22_4x_unused));
2867cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
2868 .out(spare3_buf_8x_unused));
2869cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
2870 .in01(1'b1),
2871 .in10(1'b1),
2872 .in11(1'b1),
2873 .out(spare3_oai22_4x_unused));
2874cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
2875 .out(spare3_inv_16x_unused));
2876cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
2877 .in1(1'b1),
2878 .out(spare3_nand2_16x_unused));
2879cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
2880 .in1(1'b0),
2881 .in2(1'b0),
2882 .out(spare3_nor3_4x_unused));
2883cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
2884 .in1(1'b1),
2885 .out(spare3_nand2_8x_unused));
2886cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
2887 .out(spare3_buf_16x_unused));
2888cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
2889 .in1(1'b0),
2890 .out(spare3_nor2_16x_unused));
2891cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
2892 .out(spare3_inv_32x_unused));
2893
2894cl_sc1_msff_8x spare4_flop (.l1clk(l1clk),
2895 .siclk(siclk),
2896 .soclk(soclk),
2897 .si(si_4),
2898 .so(so_4),
2899 .d(1'b0),
2900 .q(spare4_flop_unused));
2901assign si_4 = so_3;
2902
2903cl_u1_buf_32x spare4_buf_32x (.in(1'b1),
2904 .out(spare4_buf_32x_unused));
2905cl_u1_nand3_8x spare4_nand3_8x (.in0(1'b1),
2906 .in1(1'b1),
2907 .in2(1'b1),
2908 .out(spare4_nand3_8x_unused));
2909cl_u1_inv_8x spare4_inv_8x (.in(1'b1),
2910 .out(spare4_inv_8x_unused));
2911cl_u1_aoi22_4x spare4_aoi22_4x (.in00(1'b1),
2912 .in01(1'b1),
2913 .in10(1'b1),
2914 .in11(1'b1),
2915 .out(spare4_aoi22_4x_unused));
2916cl_u1_buf_8x spare4_buf_8x (.in(1'b1),
2917 .out(spare4_buf_8x_unused));
2918cl_u1_oai22_4x spare4_oai22_4x (.in00(1'b1),
2919 .in01(1'b1),
2920 .in10(1'b1),
2921 .in11(1'b1),
2922 .out(spare4_oai22_4x_unused));
2923cl_u1_inv_16x spare4_inv_16x (.in(1'b1),
2924 .out(spare4_inv_16x_unused));
2925cl_u1_nand2_16x spare4_nand2_16x (.in0(1'b1),
2926 .in1(1'b1),
2927 .out(spare4_nand2_16x_unused));
2928cl_u1_nor3_4x spare4_nor3_4x (.in0(1'b0),
2929 .in1(1'b0),
2930 .in2(1'b0),
2931 .out(spare4_nor3_4x_unused));
2932cl_u1_nand2_8x spare4_nand2_8x (.in0(1'b1),
2933 .in1(1'b1),
2934 .out(spare4_nand2_8x_unused));
2935cl_u1_buf_16x spare4_buf_16x (.in(1'b1),
2936 .out(spare4_buf_16x_unused));
2937cl_u1_nor2_16x spare4_nor2_16x (.in0(1'b0),
2938 .in1(1'b0),
2939 .out(spare4_nor2_16x_unused));
2940cl_u1_inv_32x spare4_inv_32x (.in(1'b1),
2941 .out(spare4_inv_32x_unused));
2942assign scan_out = so_4;
2943
2944
2945
2946endmodule
2947