Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / mcu / rtl / mcu_ucb_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: mcu_ucb_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 ============================================
35`define DRIF_MCU_STATE_00 5'd0
36`define DRIF_MCU_STATE_01 5'd1
37`define DRIF_MCU_STATE_02 5'd2
38`define DRIF_MCU_STATE_03 5'd3
39`define DRIF_MCU_STATE_04 5'd4
40`define DRIF_MCU_STATE_05 5'd5
41`define DRIF_MCU_STATE_06 5'd6
42`define DRIF_MCU_STATE_07 5'd7
43`define DRIF_MCU_STATE_08 5'd8
44`define DRIF_MCU_STATE_09 5'd9
45`define DRIF_MCU_STATE_10 5'd10
46`define DRIF_MCU_STATE_11 5'd11
47`define DRIF_MCU_STATE_12 5'd12
48`define DRIF_MCU_STATE_13 5'd13
49`define DRIF_MCU_STATE_14 5'd14
50`define DRIF_MCU_STATE_15 5'd15
51`define DRIF_MCU_STATE_16 5'd16
52`define DRIF_MCU_STATE_17 5'd17
53`define DRIF_MCU_STATE_18 5'd18
54`define DRIF_MCU_STATE_19 5'd19
55`define DRIF_MCU_STATE_20 5'd20
56`define DRIF_MCU_STATE_21 5'd21
57`define DRIF_MCU_STATE_22 5'd22
58`define DRIF_MCU_STATE_23 5'd23
59`define DRIF_MCU_STATE_24 5'd24
60`define DRIF_MCU_STATE_25 5'd25
61`define DRIF_MCU_STATE_26 5'd26
62
63`define DRIF_MCU_STATE_MAX 4
64`define DRIF_MCU_STATE_WIDTH 5
65
66//
67// UCB Packet Type
68// ===============
69//
70`define UCB_READ_NACK 4'b0000 // ack/nack types
71`define UCB_READ_ACK 4'b0001
72`define UCB_WRITE_ACK 4'b0010
73`define UCB_IFILL_ACK 4'b0011
74`define UCB_IFILL_NACK 4'b0111
75
76`define UCB_READ_REQ 4'b0100 // req types
77`define UCB_WRITE_REQ 4'b0101
78`define UCB_IFILL_REQ 4'b0110
79
80`define UCB_INT 4'b1000 // plain interrupt
81`define UCB_INT_VEC 4'b1100 // interrupt with vector
82`define UCB_RESET_VEC 4'b1101 // reset with vector
83`define UCB_IDLE_VEC 4'b1110 // idle with vector
84`define UCB_RESUME_VEC 4'b1111 // resume with vector
85
86
87//
88// UCB Data Packet Format
89// ======================
90//
91`define UCB_NOPAY_PKT_WIDTH 64 // packet without payload
92`define UCB_64PAY_PKT_WIDTH 128 // packet with 64 bit payload
93`define UCB_128PAY_PKT_WIDTH 192 // packet with 128 bit payload
94
95`define UCB_DATA_EXT_HI 191 // (64) extended data
96`define UCB_DATA_EXT_LO 128
97`define UCB_DATA_HI 127 // (64) data
98`define UCB_DATA_LO 64
99`define UCB_RSV_HI 63 // (9) reserved bits
100`define UCB_RSV_LO 55
101`define UCB_ADDR_HI 54 // (40) bit address
102`define UCB_ADDR_LO 15
103`define UCB_SIZE_HI 14 // (3) request size
104`define UCB_SIZE_LO 12
105`define UCB_BUF_HI 11 // (2) buffer ID
106`define UCB_BUF_LO 10
107`define UCB_THR_HI 9 // (6) cpu/thread ID
108`define UCB_THR_LO 4
109`define UCB_PKT_HI 3 // (4) packet type
110`define UCB_PKT_LO 0
111
112`define UCB_DATA_EXT_WIDTH 64
113`define UCB_DATA_WIDTH 64
114`define UCB_RSV_WIDTH 9
115`define UCB_ADDR_WIDTH 40
116`define UCB_SIZE_WIDTH 3
117`define UCB_BUF_WIDTH 2
118`define UCB_THR_WIDTH 6
119`define UCB_PKT_WIDTH 4
120
121// Size encoding for the UCB_SIZE_HI/LO field
122// 000 - byte
123// 001 - half-word
124// 010 - word
125// 011 - double-word
126`define UCB_SIZE_1B 3'b000
127`define UCB_SIZE_2B 3'b001
128`define UCB_SIZE_4B 3'b010
129`define UCB_SIZE_8B 3'b011
130`define UCB_SIZE_16B 3'b100
131
132
133//
134// UCB Interrupt Packet Format
135// ===========================
136//
137`define UCB_INT_PKT_WIDTH 64
138
139`define UCB_INT_RSV_HI 63 // (7) reserved bits
140`define UCB_INT_RSV_LO 57
141`define UCB_INT_VEC_HI 56 // (6) interrupt vector
142`define UCB_INT_VEC_LO 51
143`define UCB_INT_STAT_HI 50 // (32) interrupt status
144`define UCB_INT_STAT_LO 19
145`define UCB_INT_DEV_HI 18 // (9) device ID
146`define UCB_INT_DEV_LO 10
147//`define UCB_THR_HI 9 // (6) cpu/thread ID shared with
148//`define UCB_THR_LO 4 data packet format
149//`define UCB_PKT_HI 3 // (4) packet type shared with
150//`define UCB_PKT_LO 0 // data packet format
151
152`define UCB_INT_RSV_WIDTH 7
153`define UCB_INT_VEC_WIDTH 6
154`define UCB_INT_STAT_WIDTH 32
155`define UCB_INT_DEV_WIDTH 9
156
157
158`define MCU_CAS_BIT2_SEL_PA10 4'h1
159`define MCU_CAS_BIT2_SEL_PA32 4'h2
160`define MCU_CAS_BIT2_SEL_PA33 4'h4
161`define MCU_CAS_BIT2_SEL_PA34 4'h8
162
163`define MCU_CAS_BIT3_SEL_PA11 4'h1
164`define MCU_CAS_BIT3_SEL_PA33 4'h2
165`define MCU_CAS_BIT3_SEL_PA34 4'h4
166`define MCU_CAS_BIT3_SEL_PA35 4'h8
167
168`define MCU_CAS_BIT4_SEL_PA12 3'h1
169`define MCU_CAS_BIT4_SEL_PA35 3'h2
170`define MCU_CAS_BIT4_SEL_PA36 3'h4
171
172`define MCU_DIMMHI_SEL_ZERO 6'h01
173`define MCU_DIMMHI_SEL_PA32 6'h02
174`define MCU_DIMMHI_SEL_PA33 6'h04
175`define MCU_DIMMHI_SEL_PA34 6'h08
176`define MCU_DIMMHI_SEL_PA35 6'h10
177`define MCU_DIMMHI_SEL_PA36 6'h20
178
179`define MCU_DIMMLO_SEL_ZERO 4'h1
180`define MCU_DIMMLO_SEL_PA10 4'h2
181`define MCU_DIMMLO_SEL_PA11 4'h4
182`define MCU_DIMMLO_SEL_PA12 4'h8
183
184`define MCU_RANK_SEL_ZERO 7'h01
185`define MCU_RANK_SEL_PA32 7'h02
186`define MCU_RANK_SEL_PA33 7'h04
187`define MCU_RANK_SEL_PA34 7'h08
188`define MCU_RANK_SEL_PA35 7'h10
189`define MCU_RANK_SEL_PA10 7'h20
190`define MCU_RANK_SEL_PA11 7'h40
191
192`define MCU_ADDR_ERR_SEL_39_32 6'h01
193`define MCU_ADDR_ERR_SEL_39_33 6'h02
194`define MCU_ADDR_ERR_SEL_39_34 6'h04
195`define MCU_ADDR_ERR_SEL_39_35 6'h08
196`define MCU_ADDR_ERR_SEL_39_36 6'h10
197`define MCU_ADDR_ERR_SEL_39_37 6'h20
198
199`define DRIF_ERR_IDLE 0
200`define DRIF_ERR_IDLE_ST 5'h1
201`define DRIF_ERR_READ0 1
202`define DRIF_ERR_READ0_ST 5'h2
203`define DRIF_ERR_WRITE 2
204`define DRIF_ERR_WRITE_ST 5'h4
205`define DRIF_ERR_READ1 3
206`define DRIF_ERR_READ1_ST 5'h8
207`define DRIF_ERR_CRC_FR 4
208`define DRIF_ERR_CRC_FR_ST 5'h10
209
210`define MCU_WDQ_RF_DATA_WIDTH 72
211`define MCU_WDQ_RF_ADDR_WIDTH 5
212`define MCU_WDQ_RF_DEPTH 32
213
214// FBDIMM header defines
215`define FBD_TS0_HDR 12'hbfe
216`define FBD_TS1_HDR 12'hffe
217`define FBD_TS2_HDR 12'h7fe
218`define FBD_TS3_HDR 12'h3fe
219
220// MCU FBDIMM Channel commands
221`define FBD_DRAM_CMD_NOP 3'h0
222`define FBD_DRAM_CMD_OTHER 3'h1
223`define FBD_DRAM_CMD_RD 3'h2
224`define FBD_DRAM_CMD_WR 3'h3
225`define FBD_DRAM_CMD_ACT 3'h4
226`define FBD_DRAM_CMD_WDATA 3'h5
227
228`define FBD_DRAM_CMD_OTHER_REF 3'h5
229`define FBD_DRAM_CMD_OTHER_SRE 3'h4
230`define FBD_DRAM_CMD_OTHER_PDE 3'h2
231`define FBD_DRAM_CMD_OTHER_SRPDX 3'h3
232
233`define FBD_CHNL_CMD_NOP 2'h0
234`define FBD_CHNL_CMD_SYNC 2'h1
235`define FBD_CHNL_CMD_SCRST 2'h2
236
237`define FBDIC_ERR_IDLE_ST 7'h01
238`define FBDIC_ERR_IDLE 0
239
240`define FBDIC_ERR_STS_ST 7'h02
241`define FBDIC_ERR_STS 1
242
243`define FBDIC_ERR_SCRST_ST 7'h04
244`define FBDIC_ERR_SCRST 2
245
246`define FBDIC_ERR_SCRST_STS_ST 7'h08
247`define FBDIC_ERR_SCRST_STS 3
248
249`define FBDIC_ERR_STS2_ST 7'h10
250`define FBDIC_ERR_STS2 4
251
252`define FBDIC_ERR_FASTRST_ST 7'h20
253`define FBDIC_ERR_FASTRST 5
254
255`define FBDIC_ERR_FASTRST_STS_ST 7'h40
256`define FBDIC_ERR_FASTRST_STS 6
257
258
259// IBIST DEFINITION
260
261`define L_2_0 12'h555
262`define L_2_1 12'h555
263`define L_4_0 12'h333
264`define L_4_1 12'h333
265`define L_6_0 12'h1c7
266`define L_6_1 12'h1c7
267`define L_8_0 12'h0f0
268`define L_8_1 12'hf0f
269`define L_24_0 12'h000
270`define L_24_1 12'hfff
271
272`define idle 4'h0
273
274`define error_0 4'h1
275`define error_1 4'h2
276
277`define start1_0 4'h3
278`define start1_1 4'h4
279`define start2_0 4'h5
280`define start2_1 4'h6
281
282`define pat1_0 4'h7
283`define pat1_1 4'h8
284
285`define clkpat_0 4'h9
286`define clkpat_1 4'ha
287
288`define const_0 4'hb
289`define const_1 4'hc
290
291`define stop1_0 4'h1
292`define stop1_1 4'h2
293
294`define stop2_0 4'hd
295`define stop2_1 4'he
296`define error 4'hf
297
298`define IBTX_STATE_IDLE 0
299`define IBTX_STATE_PATT 1
300`define IBTX_STATE_MODN 2
301`define IBTX_STATE_CONST 3
302
303`define IBRX_STATE_IDLE 0
304`define IBRX_STATE_PATT 1
305`define IBRX_STATE_MODN 2
306`define IBRX_STATE_CONST 3
307
308
309
310module mcu_ucb_ctl (
311 mcu_ucb_rd_request_out,
312 mcu_ucb_wr_req_out,
313 mcu_ucb_mecc_err,
314 mcu_ucb_secc_err,
315 mcu_ucb_fbd_err,
316 mcu_ucb_err_mode,
317 mcu_ucb_err_event,
318 mcu_ucb_rd_req_in_0,
319 mcu_ucb_wr_req_in_0,
320 mcu_ucb_rd_req_in_1,
321 mcu_ucb_wr_req_in_1,
322 mcu_dbg1_rd_req_out,
323 mcu_dbg1_wr_req_out,
324 mcu_dbg1_mecc_err,
325 mcu_dbg1_secc_err,
326 mcu_dbg1_fbd_err,
327 mcu_dbg1_err_mode,
328 mcu_dbg1_err_event,
329 mcu_dbg1_rd_req_in_0,
330 mcu_dbg1_wr_req_in_0,
331 mcu_dbg1_rd_req_in_1,
332 mcu_dbg1_wr_req_in_1,
333 mcu_dbg1_crc21,
334 ucb_mcu_rd_req_vld0,
335 ucb_mcu_wr_req_vld0,
336 ucb_mcu_addr,
337 ucb_mcu_data,
338 ucb_rdata_selfrsh,
339 ucb_err_ecci,
340 ucb_err_fbui,
341 ucb_err_fbri,
342 ucb_pm,
343 ucb_pm_ba01,
344 ucb_pm_ba23,
345 ucb_pm_ba45,
346 ucb_pm_ba67,
347 mcu_ncu_vld,
348 mcu_ncu_data,
349 mcu_ncu_stall,
350 mcu_ncu_ecc,
351 mcu_ncu_fbr,
352 clspine_mcu_selfrsh,
353 ncu_mcu_vld,
354 ncu_mcu_data,
355 ncu_mcu_stall,
356 ncu_mcu_ecci,
357 ncu_mcu_fbui,
358 ncu_mcu_fbri,
359 ncu_mcu_pm,
360 ncu_mcu_ba01,
361 ncu_mcu_ba23,
362 ncu_mcu_ba45,
363 ncu_mcu_ba67,
364 mcu_ucb_ack_vld0,
365 mcu_ucb_nack_vld0,
366 mcu_ucb_data0,
367 rdata_err_intr0,
368 rdata_err_fbr,
369 fbdiwr_dtm_crc,
370 rdata_serdes_dtm,
371 iol2clk,
372 scan_in,
373 scan_out,
374 tcu_pce_ov,
375 tcu_aclk,
376 tcu_bclk,
377 tcu_scan_en);
378wire pce_ov;
379wire siclk;
380wire soclk;
381wire se;
382wire l1clk;
383wire ff_serdes_dtm_scanin;
384wire ff_serdes_dtm_scanout;
385wire ucb_serdes_dtm;
386wire mcu_dbg1_crc21_in;
387wire [21:0] ucb_dtm_crc;
388wire ff_dbg1_crc21_scanin;
389wire ff_dbg1_crc21_scanout;
390wire [3:0] mcu_dbg1_rd_req_in_0_in;
391wire ff_mcu_ucb_rd_req_in_0_scanin;
392wire ff_mcu_ucb_rd_req_in_0_scanout;
393wire [3:0] mcu_dbg1_rd_req_in_1_in;
394wire ff_mcu_ucb_rd_req_in_1_scanin;
395wire ff_mcu_ucb_rd_req_in_1_scanout;
396wire [4:0] mcu_dbg1_rd_req_out_in;
397wire ff_mcu_ucb_rd_request_out_scanin;
398wire ff_mcu_ucb_rd_request_out_scanout;
399wire mcu_dbg1_wr_req_in_0_in;
400wire ff_mcu_ucb_wr_req_in_0_scanin;
401wire ff_mcu_ucb_wr_req_in_0_scanout;
402wire mcu_dbg1_wr_req_in_1_in;
403wire ff_mcu_ucb_wr_req_in_1_scanin;
404wire ff_mcu_ucb_wr_req_in_1_scanout;
405wire [1:0] mcu_dbg1_wr_req_out_in;
406wire ff_mcu_ucb_wr_req_out_scanin;
407wire ff_mcu_ucb_wr_req_out_scanout;
408wire mcu_dbg1_mecc_err_in;
409wire ff_mcu_ucb_mecc_err_scanin;
410wire ff_mcu_ucb_mecc_err_scanout;
411wire mcu_dbg1_secc_err_in;
412wire ff_mcu_ucb_secc_err_scanin;
413wire ff_mcu_ucb_secc_err_scanout;
414wire mcu_dbg1_fbd_err_in;
415wire ff_mcu_ucb_fbd_err_scanin;
416wire ff_mcu_ucb_fbd_err_scanout;
417wire mcu_dbg1_err_mode_in;
418wire ff_mcu_ucb_err_mode_scanin;
419wire ff_mcu_ucb_err_mode_scanout;
420wire ff_mcu_ucb_err_event_scanin;
421wire ff_mcu_ucb_err_event_scanout;
422wire ff_test_signals_scanin;
423wire ff_test_signals_scanout;
424wire ff_err_injection_scanin;
425wire ff_err_injection_scanout;
426wire ff_partial_bank_mode_scanin;
427wire ff_partial_bank_mode_scanout;
428wire ff_err_intr_scanin;
429wire ff_err_intr_scanout;
430wire ff_fbd_err_intr_scanin;
431wire ff_fbd_err_intr_scanout;
432wire ff_inputs_vlds_scanin;
433wire ff_inputs_vlds_scanout;
434wire ucb_ack_vld0;
435wire ucb_nack_vld0;
436wire ff_input_data_scanin;
437wire ff_input_data_scanout;
438wire [63:0] ucb_data0;
439wire ff_outputs_vals_scanin;
440wire ff_outputs_vals_scanout;
441wire ucb_rd_req_vld0;
442wire ucb_wr_req_vld0;
443wire [39:0] addr_in;
444wire ff_outputs_data_scanin;
445wire ff_outputs_data_scanout;
446wire [63:0] ucb_data_in;
447wire ucbbuf_scanin;
448wire ucbbuf_scanout;
449wire rd_req_vld;
450wire wr_req_vld;
451wire [5:0] thr_id_in;
452wire [1:0] buf_id_in;
453wire ucb_mcu_ack_busy;
454wire ucb_mcu_int_busy;
455wire mcu_ucb_req_acpted;
456wire mcu_ucb_ack_vld;
457wire mcu_ucb_nack_vld;
458wire [5:0] thr_id_out;
459wire [1:0] buf_id_out;
460wire [63:0] mcu_ucb_data;
461wire ucb_int_vld;
462wire [3:0] ucb_int_typ;
463wire [5:0] int_thr_id;
464wire [8:0] ucb_dev_id;
465wire [31:0] ucb_int_stat;
466wire [5:0] int_vec;
467wire ucb_req_pend;
468wire ucb_req_pend_en;
469wire ucb_req_pend_reset;
470wire ucb_wr_req_ack;
471wire ff_req_pend_scanin;
472wire ff_req_pend_scanout;
473wire ucb_wr_req_vld;
474wire ff_wr_ack_d1_scanin;
475wire ff_wr_ack_d1_scanout;
476wire ff_thr_id_scanin;
477wire ff_thr_id_scanout;
478wire alat_dtm_crc21_scanin;
479wire alat_dtm_crc21_scanout;
480wire alat_dtm_crc20_scanin;
481wire alat_dtm_crc20_scanout;
482wire alat_dtm_crc19_scanin;
483wire alat_dtm_crc19_scanout;
484wire alat_dtm_crc18_scanin;
485wire alat_dtm_crc18_scanout;
486wire alat_dtm_crc17_scanin;
487wire alat_dtm_crc17_scanout;
488wire alat_dtm_crc16_scanin;
489wire alat_dtm_crc16_scanout;
490wire alat_dtm_crc15_scanin;
491wire alat_dtm_crc15_scanout;
492wire alat_dtm_crc14_scanin;
493wire alat_dtm_crc14_scanout;
494wire alat_dtm_crc13_scanin;
495wire alat_dtm_crc13_scanout;
496wire alat_dtm_crc12_scanin;
497wire alat_dtm_crc12_scanout;
498wire alat_dtm_crc11_scanin;
499wire alat_dtm_crc11_scanout;
500wire alat_dtm_crc10_scanin;
501wire alat_dtm_crc10_scanout;
502wire alat_dtm_crc9_scanin;
503wire alat_dtm_crc9_scanout;
504wire alat_dtm_crc8_scanin;
505wire alat_dtm_crc8_scanout;
506wire alat_dtm_crc7_scanin;
507wire alat_dtm_crc7_scanout;
508wire alat_dtm_crc6_scanin;
509wire alat_dtm_crc6_scanout;
510wire alat_dtm_crc5_scanin;
511wire alat_dtm_crc5_scanout;
512wire alat_dtm_crc4_scanin;
513wire alat_dtm_crc4_scanout;
514wire alat_dtm_crc3_scanin;
515wire alat_dtm_crc3_scanout;
516wire alat_dtm_crc2_scanin;
517wire alat_dtm_crc2_scanout;
518wire alat_dtm_crc1_scanin;
519wire alat_dtm_crc1_scanout;
520wire alat_dtm_crc0_scanin;
521wire alat_dtm_crc0_scanout;
522wire spares_scanin;
523wire spares_scanout;
524wire [2:0] size_in;
525
526
527///////////////////////////////////////////////////////////////////
528// OUTPUTS
529///////////////////////////////////////////////////////////////////
530// TO DBG
531input [4:0] mcu_ucb_rd_request_out ;
532input [1:0] mcu_ucb_wr_req_out ;
533input mcu_ucb_mecc_err ;
534input mcu_ucb_secc_err ;
535input mcu_ucb_fbd_err ;
536input mcu_ucb_err_mode ;
537input mcu_ucb_err_event ;
538input [3:0] mcu_ucb_rd_req_in_0 ;
539input mcu_ucb_wr_req_in_0 ;
540input [3:0] mcu_ucb_rd_req_in_1 ;
541input mcu_ucb_wr_req_in_1 ;
542
543output [4:0] mcu_dbg1_rd_req_out ;
544output [1:0] mcu_dbg1_wr_req_out ;
545output mcu_dbg1_mecc_err ;
546output mcu_dbg1_secc_err ;
547output mcu_dbg1_fbd_err ;
548output mcu_dbg1_err_mode ;
549output mcu_dbg1_err_event ;
550output [3:0] mcu_dbg1_rd_req_in_0 ;
551output mcu_dbg1_wr_req_in_0 ;
552output [3:0] mcu_dbg1_rd_req_in_1 ;
553output mcu_dbg1_wr_req_in_1 ;
554output mcu_dbg1_crc21 ;
555
556// TO DRAM
557output ucb_mcu_rd_req_vld0; // register read request to drif
558output ucb_mcu_wr_req_vld0; // register write request to drif
559output [12:0] ucb_mcu_addr; // register read/write address to drif
560output [63:0] ucb_mcu_data; // register write data to drif
561output ucb_rdata_selfrsh; // self refresh mode signal to drif
562output ucb_err_ecci;
563output ucb_err_fbui;
564output ucb_err_fbri;
565
566output ucb_pm; // partial bank mode signals
567output ucb_pm_ba01;
568output ucb_pm_ba23;
569output ucb_pm_ba45;
570output ucb_pm_ba67;
571
572// TO NCU
573output mcu_ncu_vld; // ucb data/interrupt valid
574output [3:0] mcu_ncu_data; // ucb interface data
575output mcu_ncu_stall; // ucb stall to ncu
576output mcu_ncu_ecc;
577output mcu_ncu_fbr;
578
579///////////////////////////////////////////////////////////////////
580// INPUTS
581///////////////////////////////////////////////////////////////////
582input clspine_mcu_selfrsh; // self refresh mode signal from CCU
583
584// FROM NCU
585input ncu_mcu_vld; // ucb interface data valid
586input [3:0] ncu_mcu_data; // ucb interface data
587input ncu_mcu_stall; // ucb interface stall
588input ncu_mcu_ecci;
589input ncu_mcu_fbui;
590input ncu_mcu_fbri;
591
592input ncu_mcu_pm; // partial bank mode signals
593input ncu_mcu_ba01;
594input ncu_mcu_ba23;
595input ncu_mcu_ba45;
596input ncu_mcu_ba67;
597
598// FROM RDATA
599input mcu_ucb_ack_vld0; // ack for register read data
600input mcu_ucb_nack_vld0; // nack for illegal register read address
601input [63:0] mcu_ucb_data0; // register read data
602
603// FROM RDATA
604input rdata_err_intr0; // single ecc error count interrupt
605input rdata_err_fbr;
606
607// FROM FBDIWR
608input [21:0] fbdiwr_dtm_crc;
609input rdata_serdes_dtm;
610
611// Global Signals
612input iol2clk;
613input scan_in;
614output scan_out;
615input tcu_pce_ov;
616input tcu_aclk;
617input tcu_bclk;
618input tcu_scan_en;
619
620///////////////////////////////////////////////////////////////////
621// CODE
622///////////////////////////////////////////////////////////////////
623
624// Scan reassigns
625assign pce_ov = tcu_pce_ov;
626assign siclk = tcu_aclk;
627assign soclk = tcu_bclk;
628assign se = tcu_scan_en;
629
630mcu_ucb_ctl_l1clkhdr_ctl_macro clkgen (
631 .l2clk(iol2clk),
632 .l1en (1'b1 ),
633 .stop(1'b0),
634 .l1clk(l1clk),
635 .pce_ov(pce_ov),
636 .se(se));
637
638//
639mcu_ucb_ctl_msff_ctl_macro ff_serdes_dtm (
640 .scan_in(ff_serdes_dtm_scanin),
641 .scan_out(ff_serdes_dtm_scanout),
642 .din(rdata_serdes_dtm),
643 .dout(ucb_serdes_dtm),
644 .l1clk(l1clk),
645 .siclk(siclk),
646 .soclk(soclk));
647
648//## dbg reclock with ioclk
649assign mcu_dbg1_crc21_in = ucb_serdes_dtm & ucb_dtm_crc[21];
650
651mcu_ucb_ctl_msff_ctl_macro ff_dbg1_crc21 (
652 .scan_in(ff_dbg1_crc21_scanin),
653 .scan_out(ff_dbg1_crc21_scanout),
654 .din(mcu_dbg1_crc21_in),
655 .dout(mcu_dbg1_crc21),
656 .l1clk(l1clk),
657 .siclk(siclk),
658 .soclk(soclk));
659
660assign mcu_dbg1_rd_req_in_0_in[3:0] = ucb_serdes_dtm ? ucb_dtm_crc[20:17] : mcu_ucb_rd_req_in_0[3:0];
661
662mcu_ucb_ctl_msff_ctl_macro__width_4 ff_mcu_ucb_rd_req_in_0 (
663 .scan_in(ff_mcu_ucb_rd_req_in_0_scanin),
664 .scan_out(ff_mcu_ucb_rd_req_in_0_scanout),
665 .din(mcu_dbg1_rd_req_in_0_in[3:0]),
666 .dout(mcu_dbg1_rd_req_in_0[3:0]),
667 .l1clk(l1clk),
668 .siclk(siclk),
669 .soclk(soclk));
670
671assign mcu_dbg1_rd_req_in_1_in[3:0] = ucb_serdes_dtm ? ucb_dtm_crc[16:13] : mcu_ucb_rd_req_in_1[3:0];
672
673mcu_ucb_ctl_msff_ctl_macro__width_4 ff_mcu_ucb_rd_req_in_1 (
674 .scan_in(ff_mcu_ucb_rd_req_in_1_scanin),
675 .scan_out(ff_mcu_ucb_rd_req_in_1_scanout),
676 .din(mcu_dbg1_rd_req_in_1_in[3:0]),
677 .dout(mcu_dbg1_rd_req_in_1[3:0]),
678 .l1clk(l1clk),
679 .siclk(siclk),
680 .soclk(soclk));
681
682assign mcu_dbg1_rd_req_out_in[4:0] = ucb_serdes_dtm ? ucb_dtm_crc[12:8] : mcu_ucb_rd_request_out[4:0];
683
684mcu_ucb_ctl_msff_ctl_macro__width_5 ff_mcu_ucb_rd_request_out (
685 .scan_in(ff_mcu_ucb_rd_request_out_scanin),
686 .scan_out(ff_mcu_ucb_rd_request_out_scanout),
687 .din(mcu_dbg1_rd_req_out_in[4:0]),
688 .dout(mcu_dbg1_rd_req_out[4:0]),
689 .l1clk(l1clk),
690 .siclk(siclk),
691 .soclk(soclk));
692
693assign mcu_dbg1_wr_req_in_0_in = ucb_serdes_dtm ? ucb_dtm_crc[7] : mcu_ucb_wr_req_in_0;
694
695mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_wr_req_in_0 (
696 .scan_in(ff_mcu_ucb_wr_req_in_0_scanin),
697 .scan_out(ff_mcu_ucb_wr_req_in_0_scanout),
698 .din(mcu_dbg1_wr_req_in_0_in),
699 .dout(mcu_dbg1_wr_req_in_0),
700 .l1clk(l1clk),
701 .siclk(siclk),
702 .soclk(soclk));
703
704assign mcu_dbg1_wr_req_in_1_in = ucb_serdes_dtm ? ucb_dtm_crc[6] : mcu_ucb_wr_req_in_1;
705
706mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_wr_req_in_1 (
707 .scan_in(ff_mcu_ucb_wr_req_in_1_scanin),
708 .scan_out(ff_mcu_ucb_wr_req_in_1_scanout),
709 .din(mcu_dbg1_wr_req_in_1_in),
710 .dout(mcu_dbg1_wr_req_in_1),
711 .l1clk(l1clk),
712 .siclk(siclk),
713 .soclk(soclk));
714
715assign mcu_dbg1_wr_req_out_in[1:0] = ucb_serdes_dtm ? ucb_dtm_crc[5:4] : mcu_ucb_wr_req_out[1:0];
716
717mcu_ucb_ctl_msff_ctl_macro__width_2 ff_mcu_ucb_wr_req_out (
718 .scan_in(ff_mcu_ucb_wr_req_out_scanin),
719 .scan_out(ff_mcu_ucb_wr_req_out_scanout),
720 .din(mcu_dbg1_wr_req_out_in[1:0]),
721 .dout(mcu_dbg1_wr_req_out[1:0]),
722 .l1clk(l1clk),
723 .siclk(siclk),
724 .soclk(soclk));
725
726assign mcu_dbg1_mecc_err_in = ucb_serdes_dtm ? ucb_dtm_crc[3] : mcu_ucb_mecc_err;
727
728mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_mecc_err (
729 .scan_in(ff_mcu_ucb_mecc_err_scanin),
730 .scan_out(ff_mcu_ucb_mecc_err_scanout),
731 .din(mcu_dbg1_mecc_err_in),
732 .dout(mcu_dbg1_mecc_err),
733 .l1clk(l1clk),
734 .siclk(siclk),
735 .soclk(soclk));
736
737assign mcu_dbg1_secc_err_in = ucb_serdes_dtm ? ucb_dtm_crc[2] : mcu_ucb_secc_err;
738
739mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_secc_err (
740 .scan_in(ff_mcu_ucb_secc_err_scanin),
741 .scan_out(ff_mcu_ucb_secc_err_scanout),
742 .din(mcu_dbg1_secc_err_in),
743 .dout(mcu_dbg1_secc_err),
744 .l1clk(l1clk),
745 .siclk(siclk),
746 .soclk(soclk));
747
748assign mcu_dbg1_fbd_err_in = ucb_serdes_dtm ? ucb_dtm_crc[1] : mcu_ucb_fbd_err;
749
750mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_fbd_err (
751 .scan_in(ff_mcu_ucb_fbd_err_scanin),
752 .scan_out(ff_mcu_ucb_fbd_err_scanout),
753 .din(mcu_dbg1_fbd_err_in),
754 .dout(mcu_dbg1_fbd_err),
755 .l1clk(l1clk),
756 .siclk(siclk),
757 .soclk(soclk));
758
759assign mcu_dbg1_err_mode_in = ucb_serdes_dtm ? ucb_dtm_crc[0] : mcu_ucb_err_mode;
760
761mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_err_mode (
762 .scan_in(ff_mcu_ucb_err_mode_scanin),
763 .scan_out(ff_mcu_ucb_err_mode_scanout),
764 .din(mcu_dbg1_err_mode_in),
765 .dout(mcu_dbg1_err_mode),
766 .l1clk(l1clk),
767 .siclk(siclk),
768 .soclk(soclk));
769
770mcu_ucb_ctl_msff_ctl_macro__width_1 ff_mcu_ucb_err_event (
771 .scan_in(ff_mcu_ucb_err_event_scanin),
772 .scan_out(ff_mcu_ucb_err_event_scanout),
773 .din(mcu_ucb_err_event),
774 .dout(mcu_dbg1_err_event),
775 .l1clk(l1clk),
776 .siclk(siclk),
777 .soclk(soclk));
778
779// Flop the self refresh signal from the CCU
780
781mcu_ucb_ctl_msff_ctl_macro__width_1 ff_test_signals (
782 .scan_in(ff_test_signals_scanin),
783 .scan_out(ff_test_signals_scanout),
784 .din({clspine_mcu_selfrsh}),
785 .dout({ucb_rdata_selfrsh}),
786 .l1clk(l1clk),
787 .siclk(siclk),
788 .soclk(soclk));
789
790mcu_ucb_ctl_msff_ctl_macro__width_3 ff_err_injection (
791 .scan_in(ff_err_injection_scanin),
792 .scan_out(ff_err_injection_scanout),
793 .din({ncu_mcu_ecci,ncu_mcu_fbui,ncu_mcu_fbri}),
794 .dout({ucb_err_ecci,ucb_err_fbui,ucb_err_fbri}),
795 .l1clk(l1clk),
796 .siclk(siclk),
797 .soclk(soclk));
798
799mcu_ucb_ctl_msff_ctl_macro__width_5 ff_partial_bank_mode (
800 .scan_in(ff_partial_bank_mode_scanin),
801 .scan_out(ff_partial_bank_mode_scanout),
802 .din({ncu_mcu_pm,ncu_mcu_ba01,ncu_mcu_ba23,ncu_mcu_ba45,ncu_mcu_ba67}),
803 .dout({ucb_pm, ucb_pm_ba01, ucb_pm_ba23, ucb_pm_ba45, ucb_pm_ba67}),
804 .l1clk(l1clk),
805 .siclk(siclk),
806 .soclk(soclk));
807
808// Interrupt for crossing max cnt of errors
809mcu_ucb_ctl_msff_ctl_macro__width_1 ff_err_intr (
810 .scan_in(ff_err_intr_scanin),
811 .scan_out(ff_err_intr_scanout),
812 .din(rdata_err_intr0),
813 .dout(mcu_ncu_ecc),
814 .l1clk(l1clk),
815 .siclk(siclk),
816 .soclk(soclk));
817
818// fbdimm channel recoverable and non-recoverable error interrupts
819mcu_ucb_ctl_msff_ctl_macro__width_1 ff_fbd_err_intr (
820 .scan_in(ff_fbd_err_intr_scanin),
821 .scan_out(ff_fbd_err_intr_scanout),
822 .din(rdata_err_fbr),
823 .dout(mcu_ncu_fbr),
824 .l1clk(l1clk),
825 .siclk(siclk),
826 .soclk(soclk));
827
828// Flop the inputs from the mcuctl interface
829
830mcu_ucb_ctl_msff_ctl_macro__width_2 ff_inputs_vlds (
831 .scan_in(ff_inputs_vlds_scanin),
832 .scan_out(ff_inputs_vlds_scanout),
833 .din({mcu_ucb_ack_vld0, mcu_ucb_nack_vld0}),
834 .dout({ucb_ack_vld0, ucb_nack_vld0}),
835 .l1clk(l1clk),
836 .siclk(siclk),
837 .soclk(soclk));
838
839mcu_ucb_ctl_msff_ctl_macro__width_64 ff_input_data (
840 .scan_in(ff_input_data_scanin),
841 .scan_out(ff_input_data_scanout),
842 .din(mcu_ucb_data0[63:0]),
843 .dout(ucb_data0[63:0]),
844 .l1clk(l1clk),
845 .siclk(siclk),
846 .soclk(soclk));
847
848// Flop the outputs going to mcuctl block
849
850mcu_ucb_ctl_msff_ctl_macro__width_2 ff_outputs_vals (
851 .scan_in(ff_outputs_vals_scanin),
852 .scan_out(ff_outputs_vals_scanout),
853 .din({ucb_rd_req_vld0, ucb_wr_req_vld0}),
854 .dout({ucb_mcu_rd_req_vld0, ucb_mcu_wr_req_vld0}),
855 .l1clk(l1clk),
856 .siclk(siclk),
857 .soclk(soclk));
858
859wire [12:0] ucb_rd_wr_addr = {|addr_in[31:14], addr_in[11:0]};
860
861mcu_ucb_ctl_msff_ctl_macro__width_77 ff_outputs_data (
862 .scan_in(ff_outputs_data_scanin),
863 .scan_out(ff_outputs_data_scanout),
864 .din({ucb_rd_wr_addr[12:0], ucb_data_in[63:0]}),
865 .dout({ucb_mcu_addr[12:0], ucb_mcu_data[63:0]}),
866 .l1clk(l1clk),
867 .siclk(siclk),
868 .soclk(soclk));
869
870// Instantiate the UCB module that does 4bit - 64 bit and vice versa.
871mcu_ucbbuf_ctl ucbbuf (
872 .scan_in(ucbbuf_scanin),
873 .scan_out(ucbbuf_scanout),
874 .l1clk(l1clk),
875
876 // Outputs
877 .ucb_iob_stall(mcu_ncu_stall),
878 .rd_req_vld(rd_req_vld),
879 .wr_req_vld(wr_req_vld),
880 .thr_id_in(thr_id_in[`UCB_THR_HI-`UCB_THR_LO:0]),
881 .buf_id_in(buf_id_in[`UCB_BUF_HI-`UCB_BUF_LO:0]),
882 //.size_in(size_in[`UCB_SIZE_HI-`UCB_SIZE_LO:0]),
883 .addr_in(addr_in[`UCB_ADDR_HI-`UCB_ADDR_LO:0]),
884 .data_in(ucb_data_in[`UCB_DATA_HI-`UCB_DATA_LO:0]),
885 .ack_busy(ucb_mcu_ack_busy),
886 .int_busy(ucb_mcu_int_busy),
887 .ucb_iob_vld(mcu_ncu_vld),
888 .ucb_iob_data(mcu_ncu_data[3:0]),
889
890 // Inputs
891 .iob_ucb_vld(ncu_mcu_vld),
892 .iob_ucb_data(ncu_mcu_data[3:0]),
893 .req_acpted(mcu_ucb_req_acpted),
894 .rd_ack_vld(mcu_ucb_ack_vld),
895 .rd_nack_vld(mcu_ucb_nack_vld),
896 .thr_id_out(thr_id_out[`UCB_THR_HI-`UCB_THR_LO:0]),
897 .buf_id_out(buf_id_out[`UCB_BUF_HI-`UCB_BUF_LO:0]),
898 .data128(1'b0),
899 .data_out(mcu_ucb_data[63:0]),
900 .int_vld(ucb_int_vld),
901 .int_typ(ucb_int_typ[`UCB_PKT_HI-`UCB_PKT_LO:0]),
902 .int_thr_id(int_thr_id[`UCB_THR_HI-`UCB_THR_LO:0]),
903 .dev_id(ucb_dev_id[`UCB_INT_DEV_HI-`UCB_INT_DEV_LO:0]),
904 .int_stat(ucb_int_stat[`UCB_INT_STAT_HI-`UCB_INT_STAT_LO:0]),
905 .int_vec(int_vec[`UCB_INT_VEC_HI-`UCB_INT_VEC_LO:0]),
906 .iob_ucb_stall(ncu_mcu_stall),
907 .size_in(size_in[2:0]),
908 .tcu_aclk(tcu_aclk),
909 .tcu_bclk(tcu_bclk),
910 .tcu_scan_en(tcu_scan_en));
911
912assign ucb_wr_req_vld0 = wr_req_vld & (addr_in[39:32] == 8'h84);
913assign ucb_rd_req_vld0 = rd_req_vld & (addr_in[39:32] == 8'h84) & ~ucb_req_pend;
914
915assign mcu_ucb_req_acpted = ~ucb_req_pend & (ucb_rd_req_vld0 | ucb_wr_req_vld0);
916assign mcu_ucb_ack_vld = ucb_ack_vld0 & ~ucb_mcu_ack_busy;
917assign mcu_ucb_nack_vld = ucb_nack_vld0 & ~ucb_mcu_ack_busy;
918assign mcu_ucb_data[63:0] = ucb_data0[63:0];
919
920// Keep track of pending request till ack came back...
921
922assign ucb_req_pend_en = ucb_wr_req_vld0 | ucb_rd_req_vld0;
923assign ucb_req_pend_reset = ucb_ack_vld0 | ucb_wr_req_ack | ucb_nack_vld0;
924
925mcu_ucb_ctl_msff_ctl_macro__clr_1__en_1__width_1 ff_req_pend (
926 .scan_in(ff_req_pend_scanin),
927 .scan_out(ff_req_pend_scanout),
928 .din(1'b1),
929 .dout(ucb_req_pend),
930 .en(ucb_req_pend_en),
931 .clr(ucb_req_pend_reset),
932 .l1clk(l1clk),
933 .siclk(siclk),
934 .soclk(soclk));
935
936// For stores need to create a fake ack_vld after three cycle...
937assign ucb_wr_req_vld = ucb_wr_req_vld0;
938
939mcu_ucb_ctl_msff_ctl_macro__width_1 ff_wr_ack_d1 (
940 .scan_in(ff_wr_ack_d1_scanin),
941 .scan_out(ff_wr_ack_d1_scanout),
942 .din(ucb_wr_req_vld),
943 .dout(ucb_wr_req_ack),
944 .l1clk(l1clk),
945 .siclk(siclk),
946 .soclk(soclk));
947
948// Save the params so return back to NCU
949
950// `UCB_THR_HI-`UCB_THR_LO+1+`UCB_BUF_HI-`UCB_BUF_LO+1 = 9-4+1+11-10+1 = 8
951mcu_ucb_ctl_msff_ctl_macro__en_1__width_8 ff_thr_id (
952 .scan_in(ff_thr_id_scanin),
953 .scan_out(ff_thr_id_scanout),
954 .din({thr_id_in[`UCB_THR_HI-`UCB_THR_LO:0], buf_id_in[`UCB_BUF_HI-`UCB_BUF_LO:0]}),
955 .dout({thr_id_out[`UCB_THR_HI-`UCB_THR_LO:0], buf_id_out[`UCB_BUF_HI-`UCB_BUF_LO:0]}),
956 .en(rd_req_vld),
957 .l1clk(l1clk),
958 .siclk(siclk),
959 .soclk(soclk));
960
961//assign ucb_int_vld = ucb_err_intr0 & ~ucb_mcu_int_busy;
962assign ucb_int_vld = 1'b0;
963assign ucb_dev_id = 9'h1;
964assign ucb_int_typ = `UCB_INT;
965assign ucb_int_stat = 32'h0;
966assign int_thr_id = 6'h0;
967assign int_vec = 6'h0;
968
969// alatches for DR->IO signals
970cl_sc1_alatch_4x alat_dtm_crc21 (
971 .q(ucb_dtm_crc[21]),
972 .d(fbdiwr_dtm_crc[21]),
973 .si(alat_dtm_crc21_scanin),
974 .so(alat_dtm_crc21_scanout),
975 .l1clk(l1clk),
976 .siclk(siclk),
977 .soclk(soclk),
978 .se(se));
979
980cl_sc1_alatch_4x alat_dtm_crc20 (
981 .q(ucb_dtm_crc[20]),
982 .d(fbdiwr_dtm_crc[20]),
983 .si(alat_dtm_crc20_scanin),
984 .so(alat_dtm_crc20_scanout),
985 .l1clk(l1clk),
986 .siclk(siclk),
987 .soclk(soclk),
988 .se(se));
989
990cl_sc1_alatch_4x alat_dtm_crc19 (
991 .q(ucb_dtm_crc[19]),
992 .d(fbdiwr_dtm_crc[19]),
993 .si(alat_dtm_crc19_scanin),
994 .so(alat_dtm_crc19_scanout),
995 .l1clk(l1clk),
996 .siclk(siclk),
997 .soclk(soclk),
998 .se(se));
999
1000cl_sc1_alatch_4x alat_dtm_crc18 (
1001 .q(ucb_dtm_crc[18]),
1002 .d(fbdiwr_dtm_crc[18]),
1003 .si(alat_dtm_crc18_scanin),
1004 .so(alat_dtm_crc18_scanout),
1005 .l1clk(l1clk),
1006 .siclk(siclk),
1007 .soclk(soclk),
1008 .se(se));
1009
1010cl_sc1_alatch_4x alat_dtm_crc17 (
1011 .q(ucb_dtm_crc[17]),
1012 .d(fbdiwr_dtm_crc[17]),
1013 .si(alat_dtm_crc17_scanin),
1014 .so(alat_dtm_crc17_scanout),
1015 .l1clk(l1clk),
1016 .siclk(siclk),
1017 .soclk(soclk),
1018 .se(se));
1019
1020cl_sc1_alatch_4x alat_dtm_crc16 (
1021 .q(ucb_dtm_crc[16]),
1022 .d(fbdiwr_dtm_crc[16]),
1023 .si(alat_dtm_crc16_scanin),
1024 .so(alat_dtm_crc16_scanout),
1025 .l1clk(l1clk),
1026 .siclk(siclk),
1027 .soclk(soclk),
1028 .se(se));
1029
1030cl_sc1_alatch_4x alat_dtm_crc15 (
1031 .q(ucb_dtm_crc[15]),
1032 .d(fbdiwr_dtm_crc[15]),
1033 .si(alat_dtm_crc15_scanin),
1034 .so(alat_dtm_crc15_scanout),
1035 .l1clk(l1clk),
1036 .siclk(siclk),
1037 .soclk(soclk),
1038 .se(se));
1039
1040cl_sc1_alatch_4x alat_dtm_crc14 (
1041 .q(ucb_dtm_crc[14]),
1042 .d(fbdiwr_dtm_crc[14]),
1043 .si(alat_dtm_crc14_scanin),
1044 .so(alat_dtm_crc14_scanout),
1045 .l1clk(l1clk),
1046 .siclk(siclk),
1047 .soclk(soclk),
1048 .se(se));
1049
1050cl_sc1_alatch_4x alat_dtm_crc13 (
1051 .q(ucb_dtm_crc[13]),
1052 .d(fbdiwr_dtm_crc[13]),
1053 .si(alat_dtm_crc13_scanin),
1054 .so(alat_dtm_crc13_scanout),
1055 .l1clk(l1clk),
1056 .siclk(siclk),
1057 .soclk(soclk),
1058 .se(se));
1059
1060cl_sc1_alatch_4x alat_dtm_crc12 (
1061 .q(ucb_dtm_crc[12]),
1062 .d(fbdiwr_dtm_crc[12]),
1063 .si(alat_dtm_crc12_scanin),
1064 .so(alat_dtm_crc12_scanout),
1065 .l1clk(l1clk),
1066 .siclk(siclk),
1067 .soclk(soclk),
1068 .se(se));
1069
1070cl_sc1_alatch_4x alat_dtm_crc11 (
1071 .q(ucb_dtm_crc[11]),
1072 .d(fbdiwr_dtm_crc[11]),
1073 .si(alat_dtm_crc11_scanin),
1074 .so(alat_dtm_crc11_scanout),
1075 .l1clk(l1clk),
1076 .siclk(siclk),
1077 .soclk(soclk),
1078 .se(se));
1079
1080cl_sc1_alatch_4x alat_dtm_crc10 (
1081 .q(ucb_dtm_crc[10]),
1082 .d(fbdiwr_dtm_crc[10]),
1083 .si(alat_dtm_crc10_scanin),
1084 .so(alat_dtm_crc10_scanout),
1085 .l1clk(l1clk),
1086 .siclk(siclk),
1087 .soclk(soclk),
1088 .se(se));
1089
1090cl_sc1_alatch_4x alat_dtm_crc9 (
1091 .q(ucb_dtm_crc[9]),
1092 .d(fbdiwr_dtm_crc[9]),
1093 .si(alat_dtm_crc9_scanin),
1094 .so(alat_dtm_crc9_scanout),
1095 .l1clk(l1clk),
1096 .siclk(siclk),
1097 .soclk(soclk),
1098 .se(se));
1099
1100cl_sc1_alatch_4x alat_dtm_crc8 (
1101 .q(ucb_dtm_crc[8]),
1102 .d(fbdiwr_dtm_crc[8]),
1103 .si(alat_dtm_crc8_scanin),
1104 .so(alat_dtm_crc8_scanout),
1105 .l1clk(l1clk),
1106 .siclk(siclk),
1107 .soclk(soclk),
1108 .se(se));
1109
1110cl_sc1_alatch_4x alat_dtm_crc7 (
1111 .q(ucb_dtm_crc[7]),
1112 .d(fbdiwr_dtm_crc[7]),
1113 .si(alat_dtm_crc7_scanin),
1114 .so(alat_dtm_crc7_scanout),
1115 .l1clk(l1clk),
1116 .siclk(siclk),
1117 .soclk(soclk),
1118 .se(se));
1119
1120cl_sc1_alatch_4x alat_dtm_crc6 (
1121 .q(ucb_dtm_crc[6]),
1122 .d(fbdiwr_dtm_crc[6]),
1123 .si(alat_dtm_crc6_scanin),
1124 .so(alat_dtm_crc6_scanout),
1125 .l1clk(l1clk),
1126 .siclk(siclk),
1127 .soclk(soclk),
1128 .se(se));
1129
1130cl_sc1_alatch_4x alat_dtm_crc5 (
1131 .q(ucb_dtm_crc[5]),
1132 .d(fbdiwr_dtm_crc[5]),
1133 .si(alat_dtm_crc5_scanin),
1134 .so(alat_dtm_crc5_scanout),
1135 .l1clk(l1clk),
1136 .siclk(siclk),
1137 .soclk(soclk),
1138 .se(se));
1139
1140cl_sc1_alatch_4x alat_dtm_crc4 (
1141 .q(ucb_dtm_crc[4]),
1142 .d(fbdiwr_dtm_crc[4]),
1143 .si(alat_dtm_crc4_scanin),
1144 .so(alat_dtm_crc4_scanout),
1145 .l1clk(l1clk),
1146 .siclk(siclk),
1147 .soclk(soclk),
1148 .se(se));
1149
1150cl_sc1_alatch_4x alat_dtm_crc3 (
1151 .q(ucb_dtm_crc[3]),
1152 .d(fbdiwr_dtm_crc[3]),
1153 .si(alat_dtm_crc3_scanin),
1154 .so(alat_dtm_crc3_scanout),
1155 .l1clk(l1clk),
1156 .siclk(siclk),
1157 .soclk(soclk),
1158 .se(se));
1159
1160cl_sc1_alatch_4x alat_dtm_crc2 (
1161 .q(ucb_dtm_crc[2]),
1162 .d(fbdiwr_dtm_crc[2]),
1163 .si(alat_dtm_crc2_scanin),
1164 .so(alat_dtm_crc2_scanout),
1165 .l1clk(l1clk),
1166 .siclk(siclk),
1167 .soclk(soclk),
1168 .se(se));
1169
1170cl_sc1_alatch_4x alat_dtm_crc1 (
1171 .q(ucb_dtm_crc[1]),
1172 .d(fbdiwr_dtm_crc[1]),
1173 .si(alat_dtm_crc1_scanin),
1174 .so(alat_dtm_crc1_scanout),
1175 .l1clk(l1clk),
1176 .siclk(siclk),
1177 .soclk(soclk),
1178 .se(se));
1179
1180cl_sc1_alatch_4x alat_dtm_crc0 (
1181 .q(ucb_dtm_crc[0]),
1182 .d(fbdiwr_dtm_crc[0]),
1183 .si(alat_dtm_crc0_scanin),
1184 .so(alat_dtm_crc0_scanout),
1185 .l1clk(l1clk),
1186 .siclk(siclk),
1187 .soclk(soclk),
1188 .se(se));
1189
1190// spare gates
1191mcu_ucb_ctl_spare_ctl_macro__num_7 spares (
1192 .scan_in(spares_scanin),
1193 .scan_out(spares_scanout),
1194 .l1clk(l1clk),
1195 .siclk(siclk),
1196 .soclk(soclk)
1197);
1198
1199// fixscan start:
1200assign ff_serdes_dtm_scanin = scan_in ;
1201assign ff_dbg1_crc21_scanin = ff_serdes_dtm_scanout ;
1202assign ff_mcu_ucb_rd_req_in_0_scanin = ff_dbg1_crc21_scanout ;
1203assign ff_mcu_ucb_rd_req_in_1_scanin = ff_mcu_ucb_rd_req_in_0_scanout;
1204assign ff_mcu_ucb_rd_request_out_scanin = ff_mcu_ucb_rd_req_in_1_scanout;
1205assign ff_mcu_ucb_wr_req_in_0_scanin = ff_mcu_ucb_rd_request_out_scanout;
1206assign ff_mcu_ucb_wr_req_in_1_scanin = ff_mcu_ucb_wr_req_in_0_scanout;
1207assign ff_mcu_ucb_wr_req_out_scanin = ff_mcu_ucb_wr_req_in_1_scanout;
1208assign ff_mcu_ucb_mecc_err_scanin = ff_mcu_ucb_wr_req_out_scanout;
1209assign ff_mcu_ucb_secc_err_scanin = ff_mcu_ucb_mecc_err_scanout;
1210assign ff_mcu_ucb_fbd_err_scanin = ff_mcu_ucb_secc_err_scanout;
1211assign ff_mcu_ucb_err_mode_scanin = ff_mcu_ucb_fbd_err_scanout;
1212assign ff_mcu_ucb_err_event_scanin = ff_mcu_ucb_err_mode_scanout;
1213assign ff_test_signals_scanin = ff_mcu_ucb_err_event_scanout;
1214assign ff_err_injection_scanin = ff_test_signals_scanout ;
1215assign ff_partial_bank_mode_scanin = ff_err_injection_scanout ;
1216assign ff_err_intr_scanin = ff_partial_bank_mode_scanout;
1217assign ff_fbd_err_intr_scanin = ff_err_intr_scanout ;
1218assign ff_inputs_vlds_scanin = ff_fbd_err_intr_scanout ;
1219assign ff_input_data_scanin = ff_inputs_vlds_scanout ;
1220assign ff_outputs_vals_scanin = ff_input_data_scanout ;
1221assign ff_outputs_data_scanin = ff_outputs_vals_scanout ;
1222assign ucbbuf_scanin = ff_outputs_data_scanout ;
1223assign ff_req_pend_scanin = ucbbuf_scanout ;
1224assign ff_wr_ack_d1_scanin = ff_req_pend_scanout ;
1225assign ff_thr_id_scanin = ff_wr_ack_d1_scanout ;
1226assign alat_dtm_crc21_scanin = ff_thr_id_scanout ;
1227assign alat_dtm_crc20_scanin = alat_dtm_crc21_scanout ;
1228assign alat_dtm_crc19_scanin = alat_dtm_crc20_scanout ;
1229assign alat_dtm_crc18_scanin = alat_dtm_crc19_scanout ;
1230assign alat_dtm_crc17_scanin = alat_dtm_crc18_scanout ;
1231assign alat_dtm_crc16_scanin = alat_dtm_crc17_scanout ;
1232assign alat_dtm_crc15_scanin = alat_dtm_crc16_scanout ;
1233assign alat_dtm_crc14_scanin = alat_dtm_crc15_scanout ;
1234assign alat_dtm_crc13_scanin = alat_dtm_crc14_scanout ;
1235assign alat_dtm_crc12_scanin = alat_dtm_crc13_scanout ;
1236assign alat_dtm_crc11_scanin = alat_dtm_crc12_scanout ;
1237assign alat_dtm_crc10_scanin = alat_dtm_crc11_scanout ;
1238assign alat_dtm_crc9_scanin = alat_dtm_crc10_scanout ;
1239assign alat_dtm_crc8_scanin = alat_dtm_crc9_scanout ;
1240assign alat_dtm_crc7_scanin = alat_dtm_crc8_scanout ;
1241assign alat_dtm_crc6_scanin = alat_dtm_crc7_scanout ;
1242assign alat_dtm_crc5_scanin = alat_dtm_crc6_scanout ;
1243assign alat_dtm_crc4_scanin = alat_dtm_crc5_scanout ;
1244assign alat_dtm_crc3_scanin = alat_dtm_crc4_scanout ;
1245assign alat_dtm_crc2_scanin = alat_dtm_crc3_scanout ;
1246assign alat_dtm_crc1_scanin = alat_dtm_crc2_scanout ;
1247assign alat_dtm_crc0_scanin = alat_dtm_crc1_scanout ;
1248assign spares_scanin = alat_dtm_crc0_scanout ;
1249assign scan_out = spares_scanout ;
1250// fixscan end:
1251endmodule
1252
1253
1254
1255
1256
1257
1258// any PARAMS parms go into naming of macro
1259
1260module mcu_ucb_ctl_l1clkhdr_ctl_macro (
1261 l2clk,
1262 l1en,
1263 pce_ov,
1264 stop,
1265 se,
1266 l1clk);
1267
1268
1269 input l2clk;
1270 input l1en;
1271 input pce_ov;
1272 input stop;
1273 input se;
1274 output l1clk;
1275
1276
1277
1278
1279
1280cl_sc1_l1hdr_8x c_0 (
1281
1282
1283 .l2clk(l2clk),
1284 .pce(l1en),
1285 .l1clk(l1clk),
1286 .se(se),
1287 .pce_ov(pce_ov),
1288 .stop(stop)
1289);
1290
1291
1292
1293endmodule
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307// any PARAMS parms go into naming of macro
1308
1309module mcu_ucb_ctl_msff_ctl_macro (
1310 din,
1311 l1clk,
1312 scan_in,
1313 siclk,
1314 soclk,
1315 dout,
1316 scan_out);
1317wire [0:0] fdin;
1318
1319 input [0:0] din;
1320 input l1clk;
1321 input scan_in;
1322
1323
1324 input siclk;
1325 input soclk;
1326
1327 output [0:0] dout;
1328 output scan_out;
1329assign fdin[0:0] = din[0:0];
1330
1331
1332
1333
1334
1335
1336dff #(1) d0_0 (
1337.l1clk(l1clk),
1338.siclk(siclk),
1339.soclk(soclk),
1340.d(fdin[0:0]),
1341.si(scan_in),
1342.so(scan_out),
1343.q(dout[0:0])
1344);
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357endmodule
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371// any PARAMS parms go into naming of macro
1372
1373module mcu_ucb_ctl_msff_ctl_macro__width_4 (
1374 din,
1375 l1clk,
1376 scan_in,
1377 siclk,
1378 soclk,
1379 dout,
1380 scan_out);
1381wire [3:0] fdin;
1382wire [2:0] so;
1383
1384 input [3:0] din;
1385 input l1clk;
1386 input scan_in;
1387
1388
1389 input siclk;
1390 input soclk;
1391
1392 output [3:0] dout;
1393 output scan_out;
1394assign fdin[3:0] = din[3:0];
1395
1396
1397
1398
1399
1400
1401dff #(4) d0_0 (
1402.l1clk(l1clk),
1403.siclk(siclk),
1404.soclk(soclk),
1405.d(fdin[3:0]),
1406.si({scan_in,so[2:0]}),
1407.so({so[2:0],scan_out}),
1408.q(dout[3:0])
1409);
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422endmodule
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436// any PARAMS parms go into naming of macro
1437
1438module mcu_ucb_ctl_msff_ctl_macro__width_5 (
1439 din,
1440 l1clk,
1441 scan_in,
1442 siclk,
1443 soclk,
1444 dout,
1445 scan_out);
1446wire [4:0] fdin;
1447wire [3:0] so;
1448
1449 input [4:0] din;
1450 input l1clk;
1451 input scan_in;
1452
1453
1454 input siclk;
1455 input soclk;
1456
1457 output [4:0] dout;
1458 output scan_out;
1459assign fdin[4:0] = din[4:0];
1460
1461
1462
1463
1464
1465
1466dff #(5) d0_0 (
1467.l1clk(l1clk),
1468.siclk(siclk),
1469.soclk(soclk),
1470.d(fdin[4:0]),
1471.si({scan_in,so[3:0]}),
1472.so({so[3:0],scan_out}),
1473.q(dout[4:0])
1474);
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487endmodule
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501// any PARAMS parms go into naming of macro
1502
1503module mcu_ucb_ctl_msff_ctl_macro__width_1 (
1504 din,
1505 l1clk,
1506 scan_in,
1507 siclk,
1508 soclk,
1509 dout,
1510 scan_out);
1511wire [0:0] fdin;
1512
1513 input [0:0] din;
1514 input l1clk;
1515 input scan_in;
1516
1517
1518 input siclk;
1519 input soclk;
1520
1521 output [0:0] dout;
1522 output scan_out;
1523assign fdin[0:0] = din[0:0];
1524
1525
1526
1527
1528
1529
1530dff #(1) d0_0 (
1531.l1clk(l1clk),
1532.siclk(siclk),
1533.soclk(soclk),
1534.d(fdin[0:0]),
1535.si(scan_in),
1536.so(scan_out),
1537.q(dout[0:0])
1538);
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551endmodule
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565// any PARAMS parms go into naming of macro
1566
1567module mcu_ucb_ctl_msff_ctl_macro__width_2 (
1568 din,
1569 l1clk,
1570 scan_in,
1571 siclk,
1572 soclk,
1573 dout,
1574 scan_out);
1575wire [1:0] fdin;
1576wire [0:0] so;
1577
1578 input [1:0] din;
1579 input l1clk;
1580 input scan_in;
1581
1582
1583 input siclk;
1584 input soclk;
1585
1586 output [1:0] dout;
1587 output scan_out;
1588assign fdin[1:0] = din[1:0];
1589
1590
1591
1592
1593
1594
1595dff #(2) d0_0 (
1596.l1clk(l1clk),
1597.siclk(siclk),
1598.soclk(soclk),
1599.d(fdin[1:0]),
1600.si({scan_in,so[0:0]}),
1601.so({so[0:0],scan_out}),
1602.q(dout[1:0])
1603);
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616endmodule
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630// any PARAMS parms go into naming of macro
1631
1632module mcu_ucb_ctl_msff_ctl_macro__width_3 (
1633 din,
1634 l1clk,
1635 scan_in,
1636 siclk,
1637 soclk,
1638 dout,
1639 scan_out);
1640wire [2:0] fdin;
1641wire [1:0] so;
1642
1643 input [2:0] din;
1644 input l1clk;
1645 input scan_in;
1646
1647
1648 input siclk;
1649 input soclk;
1650
1651 output [2:0] dout;
1652 output scan_out;
1653assign fdin[2:0] = din[2:0];
1654
1655
1656
1657
1658
1659
1660dff #(3) d0_0 (
1661.l1clk(l1clk),
1662.siclk(siclk),
1663.soclk(soclk),
1664.d(fdin[2:0]),
1665.si({scan_in,so[1:0]}),
1666.so({so[1:0],scan_out}),
1667.q(dout[2:0])
1668);
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681endmodule
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695// any PARAMS parms go into naming of macro
1696
1697module mcu_ucb_ctl_msff_ctl_macro__width_64 (
1698 din,
1699 l1clk,
1700 scan_in,
1701 siclk,
1702 soclk,
1703 dout,
1704 scan_out);
1705wire [63:0] fdin;
1706wire [62:0] so;
1707
1708 input [63:0] din;
1709 input l1clk;
1710 input scan_in;
1711
1712
1713 input siclk;
1714 input soclk;
1715
1716 output [63:0] dout;
1717 output scan_out;
1718assign fdin[63:0] = din[63:0];
1719
1720
1721
1722
1723
1724
1725dff #(64) d0_0 (
1726.l1clk(l1clk),
1727.siclk(siclk),
1728.soclk(soclk),
1729.d(fdin[63:0]),
1730.si({scan_in,so[62:0]}),
1731.so({so[62:0],scan_out}),
1732.q(dout[63:0])
1733);
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746endmodule
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760// any PARAMS parms go into naming of macro
1761
1762module mcu_ucb_ctl_msff_ctl_macro__width_77 (
1763 din,
1764 l1clk,
1765 scan_in,
1766 siclk,
1767 soclk,
1768 dout,
1769 scan_out);
1770wire [76:0] fdin;
1771wire [75:0] so;
1772
1773 input [76:0] din;
1774 input l1clk;
1775 input scan_in;
1776
1777
1778 input siclk;
1779 input soclk;
1780
1781 output [76:0] dout;
1782 output scan_out;
1783assign fdin[76:0] = din[76:0];
1784
1785
1786
1787
1788
1789
1790dff #(77) d0_0 (
1791.l1clk(l1clk),
1792.siclk(siclk),
1793.soclk(soclk),
1794.d(fdin[76:0]),
1795.si({scan_in,so[75:0]}),
1796.so({so[75:0],scan_out}),
1797.q(dout[76:0])
1798);
1799
1800
1801endmodule
1802
1803
1804
1805
1806
1807
1808// any PARAMS parms go into naming of macro
1809
1810module mcu_ucb_ctl_msff_ctl_macro__en_1__width_1 (
1811 din,
1812 en,
1813 l1clk,
1814 scan_in,
1815 siclk,
1816 soclk,
1817 dout,
1818 scan_out);
1819wire [0:0] fdin;
1820
1821 input [0:0] din;
1822 input en;
1823 input l1clk;
1824 input scan_in;
1825
1826
1827 input siclk;
1828 input soclk;
1829
1830 output [0:0] dout;
1831 output scan_out;
1832assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
1833
1834
1835
1836
1837
1838
1839dff #(1) d0_0 (
1840.l1clk(l1clk),
1841.siclk(siclk),
1842.soclk(soclk),
1843.d(fdin[0:0]),
1844.si(scan_in),
1845.so(scan_out),
1846.q(dout[0:0])
1847);
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860endmodule
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874// any PARAMS parms go into naming of macro
1875
1876module mcu_ucb_ctl_msff_ctl_macro__en_1__width_4 (
1877 din,
1878 en,
1879 l1clk,
1880 scan_in,
1881 siclk,
1882 soclk,
1883 dout,
1884 scan_out);
1885wire [3:0] fdin;
1886wire [2:0] so;
1887
1888 input [3:0] din;
1889 input en;
1890 input l1clk;
1891 input scan_in;
1892
1893
1894 input siclk;
1895 input soclk;
1896
1897 output [3:0] dout;
1898 output scan_out;
1899assign fdin[3:0] = (din[3:0] & {4{en}}) | (dout[3:0] & ~{4{en}});
1900
1901
1902
1903
1904
1905
1906dff #(4) d0_0 (
1907.l1clk(l1clk),
1908.siclk(siclk),
1909.soclk(soclk),
1910.d(fdin[3:0]),
1911.si({scan_in,so[2:0]}),
1912.so({so[2:0],scan_out}),
1913.q(dout[3:0])
1914);
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927endmodule
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941// any PARAMS parms go into naming of macro
1942
1943module mcu_ucb_ctl_msff_ctl_macro__en_1 (
1944 din,
1945 en,
1946 l1clk,
1947 scan_in,
1948 siclk,
1949 soclk,
1950 dout,
1951 scan_out);
1952wire [0:0] fdin;
1953
1954 input [0:0] din;
1955 input en;
1956 input l1clk;
1957 input scan_in;
1958
1959
1960 input siclk;
1961 input soclk;
1962
1963 output [0:0] dout;
1964 output scan_out;
1965assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
1966
1967
1968
1969
1970
1971
1972dff #(1) d0_0 (
1973.l1clk(l1clk),
1974.siclk(siclk),
1975.soclk(soclk),
1976.d(fdin[0:0]),
1977.si(scan_in),
1978.so(scan_out),
1979.q(dout[0:0])
1980);
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993endmodule
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007// any PARAMS parms go into naming of macro
2008
2009module mcu_ucb_ctl_msff_ctl_macro__en_1__width_32 (
2010 din,
2011 en,
2012 l1clk,
2013 scan_in,
2014 siclk,
2015 soclk,
2016 dout,
2017 scan_out);
2018wire [31:0] fdin;
2019wire [30:0] so;
2020
2021 input [31:0] din;
2022 input en;
2023 input l1clk;
2024 input scan_in;
2025
2026
2027 input siclk;
2028 input soclk;
2029
2030 output [31:0] dout;
2031 output scan_out;
2032assign fdin[31:0] = (din[31:0] & {32{en}}) | (dout[31:0] & ~{32{en}});
2033
2034
2035
2036
2037
2038
2039dff #(32) d0_0 (
2040.l1clk(l1clk),
2041.siclk(siclk),
2042.soclk(soclk),
2043.d(fdin[31:0]),
2044.si({scan_in,so[30:0]}),
2045.so({so[30:0],scan_out}),
2046.q(dout[31:0])
2047);
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060endmodule
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074// any PARAMS parms go into naming of macro
2075
2076module mcu_ucb_ctl_msff_ctl_macro__en_1__width_128 (
2077 din,
2078 en,
2079 l1clk,
2080 scan_in,
2081 siclk,
2082 soclk,
2083 dout,
2084 scan_out);
2085wire [127:0] fdin;
2086wire [126:0] so;
2087
2088 input [127:0] din;
2089 input en;
2090 input l1clk;
2091 input scan_in;
2092
2093
2094 input siclk;
2095 input soclk;
2096
2097 output [127:0] dout;
2098 output scan_out;
2099assign fdin[127:0] = (din[127:0] & {128{en}}) | (dout[127:0] & ~{128{en}});
2100
2101
2102
2103
2104
2105
2106dff #(128) d0_0 (
2107.l1clk(l1clk),
2108.siclk(siclk),
2109.soclk(soclk),
2110.d(fdin[127:0]),
2111.si({scan_in,so[126:0]}),
2112.so({so[126:0],scan_out}),
2113.q(dout[127:0])
2114);
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127endmodule
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141// any PARAMS parms go into naming of macro
2142
2143module mcu_ucb_ctl_msff_ctl_macro__en_1__width_117 (
2144 din,
2145 en,
2146 l1clk,
2147 scan_in,
2148 siclk,
2149 soclk,
2150 dout,
2151 scan_out);
2152wire [116:0] fdin;
2153wire [115:0] so;
2154
2155 input [116:0] din;
2156 input en;
2157 input l1clk;
2158 input scan_in;
2159
2160
2161 input siclk;
2162 input soclk;
2163
2164 output [116:0] dout;
2165 output scan_out;
2166assign fdin[116:0] = (din[116:0] & {117{en}}) | (dout[116:0] & ~{117{en}});
2167
2168
2169
2170
2171
2172
2173dff #(117) d0_0 (
2174.l1clk(l1clk),
2175.siclk(siclk),
2176.soclk(soclk),
2177.d(fdin[116:0]),
2178.si({scan_in,so[115:0]}),
2179.so({so[115:0],scan_out}),
2180.q(dout[116:0])
2181);
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194endmodule
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208// any PARAMS parms go into naming of macro
2209
2210module mcu_ucb_ctl_msff_ctl_macro__en_1__width_76 (
2211 din,
2212 en,
2213 l1clk,
2214 scan_in,
2215 siclk,
2216 soclk,
2217 dout,
2218 scan_out);
2219wire [75:0] fdin;
2220wire [74:0] so;
2221
2222 input [75:0] din;
2223 input en;
2224 input l1clk;
2225 input scan_in;
2226
2227
2228 input siclk;
2229 input soclk;
2230
2231 output [75:0] dout;
2232 output scan_out;
2233assign fdin[75:0] = (din[75:0] & {76{en}}) | (dout[75:0] & ~{76{en}});
2234
2235
2236
2237
2238
2239
2240dff #(76) d0_0 (
2241.l1clk(l1clk),
2242.siclk(siclk),
2243.soclk(soclk),
2244.d(fdin[75:0]),
2245.si({scan_in,so[74:0]}),
2246.so({so[74:0],scan_out}),
2247.q(dout[75:0])
2248);
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261endmodule
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275// any PARAMS parms go into naming of macro
2276
2277module mcu_ucb_ctl_msff_ctl_macro__en_1__width_57 (
2278 din,
2279 en,
2280 l1clk,
2281 scan_in,
2282 siclk,
2283 soclk,
2284 dout,
2285 scan_out);
2286wire [56:0] fdin;
2287wire [55:0] so;
2288
2289 input [56:0] din;
2290 input en;
2291 input l1clk;
2292 input scan_in;
2293
2294
2295 input siclk;
2296 input soclk;
2297
2298 output [56:0] dout;
2299 output scan_out;
2300assign fdin[56:0] = (din[56:0] & {57{en}}) | (dout[56:0] & ~{57{en}});
2301
2302
2303
2304
2305
2306
2307dff #(57) d0_0 (
2308.l1clk(l1clk),
2309.siclk(siclk),
2310.soclk(soclk),
2311.d(fdin[56:0]),
2312.si({scan_in,so[55:0]}),
2313.so({so[55:0],scan_out}),
2314.q(dout[56:0])
2315);
2316
2317
2318endmodule
2319
2320
2321
2322
2323
2324
2325// any PARAMS parms go into naming of macro
2326
2327module mcu_ucb_ctl_msff_ctl_macro__width_32 (
2328 din,
2329 l1clk,
2330 scan_in,
2331 siclk,
2332 soclk,
2333 dout,
2334 scan_out);
2335wire [31:0] fdin;
2336wire [30:0] so;
2337
2338 input [31:0] din;
2339 input l1clk;
2340 input scan_in;
2341
2342
2343 input siclk;
2344 input soclk;
2345
2346 output [31:0] dout;
2347 output scan_out;
2348assign fdin[31:0] = din[31:0];
2349
2350
2351
2352
2353
2354
2355dff #(32) d0_0 (
2356.l1clk(l1clk),
2357.siclk(siclk),
2358.soclk(soclk),
2359.d(fdin[31:0]),
2360.si({scan_in,so[30:0]}),
2361.so({so[30:0],scan_out}),
2362.q(dout[31:0])
2363);
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376endmodule
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390// any PARAMS parms go into naming of macro
2391
2392module mcu_ucb_ctl_msff_ctl_macro__width_128 (
2393 din,
2394 l1clk,
2395 scan_in,
2396 siclk,
2397 soclk,
2398 dout,
2399 scan_out);
2400wire [127:0] fdin;
2401wire [126:0] so;
2402
2403 input [127:0] din;
2404 input l1clk;
2405 input scan_in;
2406
2407
2408 input siclk;
2409 input soclk;
2410
2411 output [127:0] dout;
2412 output scan_out;
2413assign fdin[127:0] = din[127:0];
2414
2415
2416
2417
2418
2419
2420dff #(128) d0_0 (
2421.l1clk(l1clk),
2422.siclk(siclk),
2423.soclk(soclk),
2424.d(fdin[127:0]),
2425.si({scan_in,so[126:0]}),
2426.so({so[126:0],scan_out}),
2427.q(dout[127:0])
2428);
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441endmodule
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455// any PARAMS parms go into naming of macro
2456
2457module mcu_ucb_ctl_msff_ctl_macro__clr_1__en_1__width_1 (
2458 din,
2459 en,
2460 clr,
2461 l1clk,
2462 scan_in,
2463 siclk,
2464 soclk,
2465 dout,
2466 scan_out);
2467wire [0:0] fdin;
2468
2469 input [0:0] din;
2470 input en;
2471 input clr;
2472 input l1clk;
2473 input scan_in;
2474
2475
2476 input siclk;
2477 input soclk;
2478
2479 output [0:0] dout;
2480 output scan_out;
2481assign fdin[0:0] = (din[0:0] & {1{en}} & ~{1{clr}}) | (dout[0:0] & ~{1{en}} & ~{1{clr}});
2482
2483
2484
2485
2486
2487
2488dff #(1) d0_0 (
2489.l1clk(l1clk),
2490.siclk(siclk),
2491.soclk(soclk),
2492.d(fdin[0:0]),
2493.si(scan_in),
2494.so(scan_out),
2495.q(dout[0:0])
2496);
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509endmodule
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523// any PARAMS parms go into naming of macro
2524
2525module mcu_ucb_ctl_msff_ctl_macro__en_1__width_8 (
2526 din,
2527 en,
2528 l1clk,
2529 scan_in,
2530 siclk,
2531 soclk,
2532 dout,
2533 scan_out);
2534wire [7:0] fdin;
2535wire [6:0] so;
2536
2537 input [7:0] din;
2538 input en;
2539 input l1clk;
2540 input scan_in;
2541
2542
2543 input siclk;
2544 input soclk;
2545
2546 output [7:0] dout;
2547 output scan_out;
2548assign fdin[7:0] = (din[7:0] & {8{en}}) | (dout[7:0] & ~{8{en}});
2549
2550
2551
2552
2553
2554
2555dff #(8) d0_0 (
2556.l1clk(l1clk),
2557.siclk(siclk),
2558.soclk(soclk),
2559.d(fdin[7:0]),
2560.si({scan_in,so[6:0]}),
2561.so({so[6:0],scan_out}),
2562.q(dout[7:0])
2563);
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576endmodule
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586// Description: Spare gate macro for control blocks
2587//
2588// Param num controls the number of times the macro is added
2589// flops=0 can be used to use only combination spare logic
2590
2591
2592module mcu_ucb_ctl_spare_ctl_macro__num_7 (
2593 l1clk,
2594 scan_in,
2595 siclk,
2596 soclk,
2597 scan_out);
2598wire si_0;
2599wire so_0;
2600wire spare0_flop_unused;
2601wire spare0_buf_32x_unused;
2602wire spare0_nand3_8x_unused;
2603wire spare0_inv_8x_unused;
2604wire spare0_aoi22_4x_unused;
2605wire spare0_buf_8x_unused;
2606wire spare0_oai22_4x_unused;
2607wire spare0_inv_16x_unused;
2608wire spare0_nand2_16x_unused;
2609wire spare0_nor3_4x_unused;
2610wire spare0_nand2_8x_unused;
2611wire spare0_buf_16x_unused;
2612wire spare0_nor2_16x_unused;
2613wire spare0_inv_32x_unused;
2614wire si_1;
2615wire so_1;
2616wire spare1_flop_unused;
2617wire spare1_buf_32x_unused;
2618wire spare1_nand3_8x_unused;
2619wire spare1_inv_8x_unused;
2620wire spare1_aoi22_4x_unused;
2621wire spare1_buf_8x_unused;
2622wire spare1_oai22_4x_unused;
2623wire spare1_inv_16x_unused;
2624wire spare1_nand2_16x_unused;
2625wire spare1_nor3_4x_unused;
2626wire spare1_nand2_8x_unused;
2627wire spare1_buf_16x_unused;
2628wire spare1_nor2_16x_unused;
2629wire spare1_inv_32x_unused;
2630wire si_2;
2631wire so_2;
2632wire spare2_flop_unused;
2633wire spare2_buf_32x_unused;
2634wire spare2_nand3_8x_unused;
2635wire spare2_inv_8x_unused;
2636wire spare2_aoi22_4x_unused;
2637wire spare2_buf_8x_unused;
2638wire spare2_oai22_4x_unused;
2639wire spare2_inv_16x_unused;
2640wire spare2_nand2_16x_unused;
2641wire spare2_nor3_4x_unused;
2642wire spare2_nand2_8x_unused;
2643wire spare2_buf_16x_unused;
2644wire spare2_nor2_16x_unused;
2645wire spare2_inv_32x_unused;
2646wire si_3;
2647wire so_3;
2648wire spare3_flop_unused;
2649wire spare3_buf_32x_unused;
2650wire spare3_nand3_8x_unused;
2651wire spare3_inv_8x_unused;
2652wire spare3_aoi22_4x_unused;
2653wire spare3_buf_8x_unused;
2654wire spare3_oai22_4x_unused;
2655wire spare3_inv_16x_unused;
2656wire spare3_nand2_16x_unused;
2657wire spare3_nor3_4x_unused;
2658wire spare3_nand2_8x_unused;
2659wire spare3_buf_16x_unused;
2660wire spare3_nor2_16x_unused;
2661wire spare3_inv_32x_unused;
2662wire si_4;
2663wire so_4;
2664wire spare4_flop_unused;
2665wire spare4_buf_32x_unused;
2666wire spare4_nand3_8x_unused;
2667wire spare4_inv_8x_unused;
2668wire spare4_aoi22_4x_unused;
2669wire spare4_buf_8x_unused;
2670wire spare4_oai22_4x_unused;
2671wire spare4_inv_16x_unused;
2672wire spare4_nand2_16x_unused;
2673wire spare4_nor3_4x_unused;
2674wire spare4_nand2_8x_unused;
2675wire spare4_buf_16x_unused;
2676wire spare4_nor2_16x_unused;
2677wire spare4_inv_32x_unused;
2678wire si_5;
2679wire so_5;
2680wire spare5_flop_unused;
2681wire spare5_buf_32x_unused;
2682wire spare5_nand3_8x_unused;
2683wire spare5_inv_8x_unused;
2684wire spare5_aoi22_4x_unused;
2685wire spare5_buf_8x_unused;
2686wire spare5_oai22_4x_unused;
2687wire spare5_inv_16x_unused;
2688wire spare5_nand2_16x_unused;
2689wire spare5_nor3_4x_unused;
2690wire spare5_nand2_8x_unused;
2691wire spare5_buf_16x_unused;
2692wire spare5_nor2_16x_unused;
2693wire spare5_inv_32x_unused;
2694wire si_6;
2695wire so_6;
2696wire spare6_flop_unused;
2697wire spare6_buf_32x_unused;
2698wire spare6_nand3_8x_unused;
2699wire spare6_inv_8x_unused;
2700wire spare6_aoi22_4x_unused;
2701wire spare6_buf_8x_unused;
2702wire spare6_oai22_4x_unused;
2703wire spare6_inv_16x_unused;
2704wire spare6_nand2_16x_unused;
2705wire spare6_nor3_4x_unused;
2706wire spare6_nand2_8x_unused;
2707wire spare6_buf_16x_unused;
2708wire spare6_nor2_16x_unused;
2709wire spare6_inv_32x_unused;
2710
2711
2712input l1clk;
2713input scan_in;
2714input siclk;
2715input soclk;
2716output scan_out;
2717
2718cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
2719 .siclk(siclk),
2720 .soclk(soclk),
2721 .si(si_0),
2722 .so(so_0),
2723 .d(1'b0),
2724 .q(spare0_flop_unused));
2725assign si_0 = scan_in;
2726
2727cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
2728 .out(spare0_buf_32x_unused));
2729cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
2730 .in1(1'b1),
2731 .in2(1'b1),
2732 .out(spare0_nand3_8x_unused));
2733cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
2734 .out(spare0_inv_8x_unused));
2735cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
2736 .in01(1'b1),
2737 .in10(1'b1),
2738 .in11(1'b1),
2739 .out(spare0_aoi22_4x_unused));
2740cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
2741 .out(spare0_buf_8x_unused));
2742cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
2743 .in01(1'b1),
2744 .in10(1'b1),
2745 .in11(1'b1),
2746 .out(spare0_oai22_4x_unused));
2747cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
2748 .out(spare0_inv_16x_unused));
2749cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
2750 .in1(1'b1),
2751 .out(spare0_nand2_16x_unused));
2752cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
2753 .in1(1'b0),
2754 .in2(1'b0),
2755 .out(spare0_nor3_4x_unused));
2756cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
2757 .in1(1'b1),
2758 .out(spare0_nand2_8x_unused));
2759cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
2760 .out(spare0_buf_16x_unused));
2761cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
2762 .in1(1'b0),
2763 .out(spare0_nor2_16x_unused));
2764cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
2765 .out(spare0_inv_32x_unused));
2766
2767cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
2768 .siclk(siclk),
2769 .soclk(soclk),
2770 .si(si_1),
2771 .so(so_1),
2772 .d(1'b0),
2773 .q(spare1_flop_unused));
2774assign si_1 = so_0;
2775
2776cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
2777 .out(spare1_buf_32x_unused));
2778cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
2779 .in1(1'b1),
2780 .in2(1'b1),
2781 .out(spare1_nand3_8x_unused));
2782cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
2783 .out(spare1_inv_8x_unused));
2784cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
2785 .in01(1'b1),
2786 .in10(1'b1),
2787 .in11(1'b1),
2788 .out(spare1_aoi22_4x_unused));
2789cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
2790 .out(spare1_buf_8x_unused));
2791cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
2792 .in01(1'b1),
2793 .in10(1'b1),
2794 .in11(1'b1),
2795 .out(spare1_oai22_4x_unused));
2796cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
2797 .out(spare1_inv_16x_unused));
2798cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
2799 .in1(1'b1),
2800 .out(spare1_nand2_16x_unused));
2801cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
2802 .in1(1'b0),
2803 .in2(1'b0),
2804 .out(spare1_nor3_4x_unused));
2805cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
2806 .in1(1'b1),
2807 .out(spare1_nand2_8x_unused));
2808cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
2809 .out(spare1_buf_16x_unused));
2810cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
2811 .in1(1'b0),
2812 .out(spare1_nor2_16x_unused));
2813cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
2814 .out(spare1_inv_32x_unused));
2815
2816cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
2817 .siclk(siclk),
2818 .soclk(soclk),
2819 .si(si_2),
2820 .so(so_2),
2821 .d(1'b0),
2822 .q(spare2_flop_unused));
2823assign si_2 = so_1;
2824
2825cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
2826 .out(spare2_buf_32x_unused));
2827cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
2828 .in1(1'b1),
2829 .in2(1'b1),
2830 .out(spare2_nand3_8x_unused));
2831cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
2832 .out(spare2_inv_8x_unused));
2833cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
2834 .in01(1'b1),
2835 .in10(1'b1),
2836 .in11(1'b1),
2837 .out(spare2_aoi22_4x_unused));
2838cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
2839 .out(spare2_buf_8x_unused));
2840cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
2841 .in01(1'b1),
2842 .in10(1'b1),
2843 .in11(1'b1),
2844 .out(spare2_oai22_4x_unused));
2845cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
2846 .out(spare2_inv_16x_unused));
2847cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
2848 .in1(1'b1),
2849 .out(spare2_nand2_16x_unused));
2850cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
2851 .in1(1'b0),
2852 .in2(1'b0),
2853 .out(spare2_nor3_4x_unused));
2854cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
2855 .in1(1'b1),
2856 .out(spare2_nand2_8x_unused));
2857cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
2858 .out(spare2_buf_16x_unused));
2859cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
2860 .in1(1'b0),
2861 .out(spare2_nor2_16x_unused));
2862cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
2863 .out(spare2_inv_32x_unused));
2864
2865cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
2866 .siclk(siclk),
2867 .soclk(soclk),
2868 .si(si_3),
2869 .so(so_3),
2870 .d(1'b0),
2871 .q(spare3_flop_unused));
2872assign si_3 = so_2;
2873
2874cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
2875 .out(spare3_buf_32x_unused));
2876cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
2877 .in1(1'b1),
2878 .in2(1'b1),
2879 .out(spare3_nand3_8x_unused));
2880cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
2881 .out(spare3_inv_8x_unused));
2882cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
2883 .in01(1'b1),
2884 .in10(1'b1),
2885 .in11(1'b1),
2886 .out(spare3_aoi22_4x_unused));
2887cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
2888 .out(spare3_buf_8x_unused));
2889cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
2890 .in01(1'b1),
2891 .in10(1'b1),
2892 .in11(1'b1),
2893 .out(spare3_oai22_4x_unused));
2894cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
2895 .out(spare3_inv_16x_unused));
2896cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
2897 .in1(1'b1),
2898 .out(spare3_nand2_16x_unused));
2899cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
2900 .in1(1'b0),
2901 .in2(1'b0),
2902 .out(spare3_nor3_4x_unused));
2903cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
2904 .in1(1'b1),
2905 .out(spare3_nand2_8x_unused));
2906cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
2907 .out(spare3_buf_16x_unused));
2908cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
2909 .in1(1'b0),
2910 .out(spare3_nor2_16x_unused));
2911cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
2912 .out(spare3_inv_32x_unused));
2913
2914cl_sc1_msff_8x spare4_flop (.l1clk(l1clk),
2915 .siclk(siclk),
2916 .soclk(soclk),
2917 .si(si_4),
2918 .so(so_4),
2919 .d(1'b0),
2920 .q(spare4_flop_unused));
2921assign si_4 = so_3;
2922
2923cl_u1_buf_32x spare4_buf_32x (.in(1'b1),
2924 .out(spare4_buf_32x_unused));
2925cl_u1_nand3_8x spare4_nand3_8x (.in0(1'b1),
2926 .in1(1'b1),
2927 .in2(1'b1),
2928 .out(spare4_nand3_8x_unused));
2929cl_u1_inv_8x spare4_inv_8x (.in(1'b1),
2930 .out(spare4_inv_8x_unused));
2931cl_u1_aoi22_4x spare4_aoi22_4x (.in00(1'b1),
2932 .in01(1'b1),
2933 .in10(1'b1),
2934 .in11(1'b1),
2935 .out(spare4_aoi22_4x_unused));
2936cl_u1_buf_8x spare4_buf_8x (.in(1'b1),
2937 .out(spare4_buf_8x_unused));
2938cl_u1_oai22_4x spare4_oai22_4x (.in00(1'b1),
2939 .in01(1'b1),
2940 .in10(1'b1),
2941 .in11(1'b1),
2942 .out(spare4_oai22_4x_unused));
2943cl_u1_inv_16x spare4_inv_16x (.in(1'b1),
2944 .out(spare4_inv_16x_unused));
2945cl_u1_nand2_16x spare4_nand2_16x (.in0(1'b1),
2946 .in1(1'b1),
2947 .out(spare4_nand2_16x_unused));
2948cl_u1_nor3_4x spare4_nor3_4x (.in0(1'b0),
2949 .in1(1'b0),
2950 .in2(1'b0),
2951 .out(spare4_nor3_4x_unused));
2952cl_u1_nand2_8x spare4_nand2_8x (.in0(1'b1),
2953 .in1(1'b1),
2954 .out(spare4_nand2_8x_unused));
2955cl_u1_buf_16x spare4_buf_16x (.in(1'b1),
2956 .out(spare4_buf_16x_unused));
2957cl_u1_nor2_16x spare4_nor2_16x (.in0(1'b0),
2958 .in1(1'b0),
2959 .out(spare4_nor2_16x_unused));
2960cl_u1_inv_32x spare4_inv_32x (.in(1'b1),
2961 .out(spare4_inv_32x_unused));
2962
2963cl_sc1_msff_8x spare5_flop (.l1clk(l1clk),
2964 .siclk(siclk),
2965 .soclk(soclk),
2966 .si(si_5),
2967 .so(so_5),
2968 .d(1'b0),
2969 .q(spare5_flop_unused));
2970assign si_5 = so_4;
2971
2972cl_u1_buf_32x spare5_buf_32x (.in(1'b1),
2973 .out(spare5_buf_32x_unused));
2974cl_u1_nand3_8x spare5_nand3_8x (.in0(1'b1),
2975 .in1(1'b1),
2976 .in2(1'b1),
2977 .out(spare5_nand3_8x_unused));
2978cl_u1_inv_8x spare5_inv_8x (.in(1'b1),
2979 .out(spare5_inv_8x_unused));
2980cl_u1_aoi22_4x spare5_aoi22_4x (.in00(1'b1),
2981 .in01(1'b1),
2982 .in10(1'b1),
2983 .in11(1'b1),
2984 .out(spare5_aoi22_4x_unused));
2985cl_u1_buf_8x spare5_buf_8x (.in(1'b1),
2986 .out(spare5_buf_8x_unused));
2987cl_u1_oai22_4x spare5_oai22_4x (.in00(1'b1),
2988 .in01(1'b1),
2989 .in10(1'b1),
2990 .in11(1'b1),
2991 .out(spare5_oai22_4x_unused));
2992cl_u1_inv_16x spare5_inv_16x (.in(1'b1),
2993 .out(spare5_inv_16x_unused));
2994cl_u1_nand2_16x spare5_nand2_16x (.in0(1'b1),
2995 .in1(1'b1),
2996 .out(spare5_nand2_16x_unused));
2997cl_u1_nor3_4x spare5_nor3_4x (.in0(1'b0),
2998 .in1(1'b0),
2999 .in2(1'b0),
3000 .out(spare5_nor3_4x_unused));
3001cl_u1_nand2_8x spare5_nand2_8x (.in0(1'b1),
3002 .in1(1'b1),
3003 .out(spare5_nand2_8x_unused));
3004cl_u1_buf_16x spare5_buf_16x (.in(1'b1),
3005 .out(spare5_buf_16x_unused));
3006cl_u1_nor2_16x spare5_nor2_16x (.in0(1'b0),
3007 .in1(1'b0),
3008 .out(spare5_nor2_16x_unused));
3009cl_u1_inv_32x spare5_inv_32x (.in(1'b1),
3010 .out(spare5_inv_32x_unused));
3011
3012cl_sc1_msff_8x spare6_flop (.l1clk(l1clk),
3013 .siclk(siclk),
3014 .soclk(soclk),
3015 .si(si_6),
3016 .so(so_6),
3017 .d(1'b0),
3018 .q(spare6_flop_unused));
3019assign si_6 = so_5;
3020
3021cl_u1_buf_32x spare6_buf_32x (.in(1'b1),
3022 .out(spare6_buf_32x_unused));
3023cl_u1_nand3_8x spare6_nand3_8x (.in0(1'b1),
3024 .in1(1'b1),
3025 .in2(1'b1),
3026 .out(spare6_nand3_8x_unused));
3027cl_u1_inv_8x spare6_inv_8x (.in(1'b1),
3028 .out(spare6_inv_8x_unused));
3029cl_u1_aoi22_4x spare6_aoi22_4x (.in00(1'b1),
3030 .in01(1'b1),
3031 .in10(1'b1),
3032 .in11(1'b1),
3033 .out(spare6_aoi22_4x_unused));
3034cl_u1_buf_8x spare6_buf_8x (.in(1'b1),
3035 .out(spare6_buf_8x_unused));
3036cl_u1_oai22_4x spare6_oai22_4x (.in00(1'b1),
3037 .in01(1'b1),
3038 .in10(1'b1),
3039 .in11(1'b1),
3040 .out(spare6_oai22_4x_unused));
3041cl_u1_inv_16x spare6_inv_16x (.in(1'b1),
3042 .out(spare6_inv_16x_unused));
3043cl_u1_nand2_16x spare6_nand2_16x (.in0(1'b1),
3044 .in1(1'b1),
3045 .out(spare6_nand2_16x_unused));
3046cl_u1_nor3_4x spare6_nor3_4x (.in0(1'b0),
3047 .in1(1'b0),
3048 .in2(1'b0),
3049 .out(spare6_nor3_4x_unused));
3050cl_u1_nand2_8x spare6_nand2_8x (.in0(1'b1),
3051 .in1(1'b1),
3052 .out(spare6_nand2_8x_unused));
3053cl_u1_buf_16x spare6_buf_16x (.in(1'b1),
3054 .out(spare6_buf_16x_unused));
3055cl_u1_nor2_16x spare6_nor2_16x (.in0(1'b0),
3056 .in1(1'b0),
3057 .out(spare6_nor2_16x_unused));
3058cl_u1_inv_32x spare6_inv_32x (.in(1'b1),
3059 .out(spare6_inv_32x_unused));
3060assign scan_out = so_6;
3061
3062
3063
3064endmodule
3065