Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / ncu / rtl / ncu_i2csd_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: ncu_i2csd_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 RF_RDEN_OFFSTATE 1'b1
36
37//====================================
38`define NCU_INTMANRF_DEPTH 128
39`define NCU_INTMANRF_DATAWIDTH 16
40`define NCU_INTMANRF_ADDRWIDTH 7
41//====================================
42
43//====================================
44`define NCU_MONDORF_DEPTH 64
45`define NCU_MONDORF_DATAWIDTH 72
46`define NCU_MONDORF_ADDRWIDTH 6
47//====================================
48
49//====================================
50`define NCU_CPUBUFRF_DEPTH 32
51`define NCU_CPUBUFRF_DATAWIDTH 144
52`define NCU_CPUBUFRF_ADDRWIDTH 5
53//====================================
54
55//====================================
56`define NCU_IOBUFRF_DEPTH 32
57`define NCU_IOBUFRF_DATAWIDTH 144
58`define NCU_IOBUFRF_ADDRWIDTH 5
59//====================================
60
61//====================================
62`define NCU_IOBUF1RF_DEPTH 32
63`define NCU_IOBUF1RF_DATAWIDTH 32
64`define NCU_IOBUF1RF_ADDRWIDTH 5
65//====================================
66
67//====================================
68`define NCU_INTBUFRF_DEPTH 32
69`define NCU_INTBUFRF_DATAWIDTH 144
70`define NCU_INTBUFRF_ADDRWIDTH 5
71//====================================
72
73//== fix me : need to remove when warm //
74//== becomes available //
75`define WMR_LENGTH 10'd999
76`define WMR_LENGTH_P1 10'd1000
77
78//// NCU CSR_MAN address 80_0000_xxxx ////
79`define NCU_CSR_MAN 16'h0000
80`define NCU_CREG_INTMAN 16'h0000
81//`define NCU_CREG_INTVECDISP 16'h0800
82`define NCU_CREG_MONDOINVEC 16'h0a00
83`define NCU_CREG_SERNUM 16'h1000
84`define NCU_CREG_FUSESTAT 16'h1008
85`define NCU_CREG_COREAVAIL 16'h1010
86`define NCU_CREG_BANKAVAIL 16'h1018
87`define NCU_CREG_BANK_ENABLE 16'h1020
88`define NCU_CREG_BANK_ENABLE_STATUS 16'h1028
89`define NCU_CREG_L2_HASH_ENABLE 16'h1030
90`define NCU_CREG_L2_HASH_ENABLE_STATUS 16'h1038
91
92
93`define NCU_CREG_MEM32_BASE 16'h2000
94`define NCU_CREG_MEM32_MASK 16'h2008
95`define NCU_CREG_MEM64_BASE 16'h2010
96`define NCU_CREG_MEM64_MASK 16'h2018
97`define NCU_CREG_IOCON_BASE 16'h2020
98`define NCU_CREG_IOCON_MASK 16'h2028
99`define NCU_CREG_MMUFSH 16'h2030
100
101`define NCU_CREG_ESR 16'h3000
102`define NCU_CREG_ELE 16'h3008
103`define NCU_CREG_EIE 16'h3010
104`define NCU_CREG_EJR 16'h3018
105`define NCU_CREG_FEE 16'h3020
106`define NCU_CREG_PER 16'h3028
107`define NCU_CREG_SIISYN 16'h3030
108`define NCU_CREG_NCUSYN 16'h3038
109`define NCU_CREG_SCKSEL 16'h3040
110`define NCU_CREG_DBGTRIG_EN 16'h4000
111
112//// NUC CSR_MONDO address 80_0004_xxxx ////
113`define NCU_CSR_MONDO 16'h0004
114`define NCU_CREG_MDATA0 16'h0000
115`define NCU_CREG_MDATA1 16'h0200
116`define NCU_CREG_MDATA0_ALIAS 16'h0400
117`define NCU_CREG_MDATA1_ALIAS 16'h0600
118`define NCU_CREG_MBUSY 16'h0800
119`define NCU_CREG_MBUSY_ALIAS 16'h0a00
120
121
122
123// ASI shared reg 90_xxxx_xxxx//
124`define NCU_ASI_A_HIT 10'h104 // 6-bits cpuid and thread id are "x"
125`define NCU_ASI_B_HIT 10'h1CC // 6-bits cpuid and thread id are "x"
126`define NCU_ASI_C_HIT 10'h114 // 6-bits cpuid and thread id are "x"
127`define NCU_ASI_COREAVAIL 16'h0000
128`define NCU_ASI_CORE_ENABLE_STATUS 16'h0010
129`define NCU_ASI_CORE_ENABLE 16'h0020
130`define NCU_ASI_XIR_STEERING 16'h0030
131`define NCU_ASI_CORE_RUNNINGRW 16'h0050
132`define NCU_ASI_CORE_RUNNING_STATUS 16'h0058
133`define NCU_ASI_CORE_RUNNING_W1S 16'h0060
134`define NCU_ASI_CORE_RUNNING_W1C 16'h0068
135`define NCU_ASI_INTVECDISP 16'h0000
136`define NCU_ASI_ERR_STR 16'h1000
137`define NCU_ASI_WMR_VEC_MASK 16'h0018
138`define NCU_ASI_CMP_TICK_ENABLE 16'h0038
139
140
141//// UCB packet type ////
142`define UCB_READ_NACK 4'b0000 // ack/nack types
143`define UCB_READ_ACK 4'b0001
144`define UCB_WRITE_ACK 4'b0010
145`define UCB_IFILL_ACK 4'b0011
146`define UCB_IFILL_NACK 4'b0111
147
148`define UCB_READ_REQ 4'b0100 // req types
149`define UCB_WRITE_REQ 4'b0101
150`define UCB_IFILL_REQ 4'b0110
151
152`define UCB_INT 4'b1000 // plain interrupt
153`define UCB_INT_VEC 4'b1100 // interrupt with vector
154`define UCB_INT_SOC_UE 4'b1001 // soc interrup ue
155`define UCB_INT_SOC_CE 4'b1010 // soc interrup ce
156`define UCB_RESET_VEC 4'b0101 // reset with vector
157`define UCB_IDLE_VEC 4'b1110 // idle with vector
158`define UCB_RESUME_VEC 4'b1111 // resume with vector
159
160`define UCB_INT_SOC 4'b1101 // soc interrup ce
161
162
163//// PCX packet type ////
164`define PCX_LOAD_RQ 5'b00000
165`define PCX_IMISS_RQ 5'b10000
166`define PCX_STORE_RQ 5'b00001
167`define PCX_FWD_RQs 5'b01101
168`define PCX_FWD_RPYs 5'b01110
169
170//// CPX packet type ////
171//`define CPX_LOAD_RET 4'b0000
172`define CPX_LOAD_RET 4'b1000
173`define CPX_ST_ACK 4'b0100
174//`define CPX_IFILL_RET 4'b0001
175`define CPX_IFILL_RET 4'b1001
176`define CPX_INT_RET 4'b0111
177`define CPX_INT_SOC 4'b1101
178//`define CPX_FWD_RQ_RET 4'b1010
179//`define CPX_FWD_RPY_RET 4'b1011
180
181
182
183
184//// Global CSR decode ////
185`define NCU_CSR 8'h80
186`define NIU_CSR 8'h81
187//`define RNG_CSR 8'h82
188`define DBG1_CSR 8'h86
189`define CCU_CSR 8'h83
190`define MCU_CSR 8'h84
191`define TCU_CSR 8'h85
192`define DMU_CSR 8'h88
193`define RCU_CSR 8'h89
194`define NCU_ASI 8'h90
195 /////8'h91 ~ 9F reserved
196 /////8'hA0 ~ BF L2 CSR////
197`define DMU_PIO 4'hC // C0 ~ CF
198 /////8'hB0 ~ FE reserved
199`define SSI_CSR 8'hFF
200
201
202//// NCU_SSI ////
203`define SSI_ADDR 12'hFF_F
204`define SSI_ADDR_TIMEOUT_REG 40'hFF_0001_0088
205`define SSI_ADDR_LOG_REG 40'hFF_0000_0018
206
207`define IF_IDLE 2'b00
208`define IF_ACPT 2'b01
209`define IF_DROP 2'b10
210
211`define SSI_IDLE 3'b000
212`define SSI_REQ 3'b001
213`define SSI_WDATA 3'b011
214`define SSI_REQ_PAR 3'b101
215`define SSI_ACK 3'b111
216`define SSI_RDATA 3'b110
217`define SSI_ACK_PAR 3'b010
218
219
220
221
222
223
224
225
226
227
228module ncu_i2csd_ctl (
229 iol2clk,
230 scan_in,
231 scan_out,
232 tcu_pce_ov,
233 tcu_clk_stop,
234 tcu_scan_en,
235 tcu_aclk,
236 tcu_bclk,
237 sii_mondo_data0,
238 sii_mondo_data1,
239 sii_mondo_target,
240 sii_mondo_ctagerr,
241 ssi_int_packet,
242 mcu0_int_packet,
243 mcu1_int_packet,
244 mcu2_int_packet,
245 mcu3_int_packet,
246 niu_int_packet,
247 ncu_man_int_packet,
248 siipio_ack_packet,
249 dmucsr_ack_packet,
250 ccu_ack_packet,
251 mcu0_ack_packet,
252 mcu1_ack_packet,
253 mcu2_ack_packet,
254 mcu3_ack_packet,
255 ssi_ack_packet,
256 rcu_ack_packet,
257 dbg1_ack_packet,
258 niu_ack_packet,
259 ncu_man_ack_packet,
260 ncu_int_ack_packet,
261 bounce_ack_packet,
262 rd_nack_packet,
263 io_mondo_data_wr_addr_s,
264 io_mondo_data0_din_s,
265 io_mondo_data1_din_s,
266 io_intman_addr,
267 intman_tbl_dout,
268 io_rd_intman_d2,
269 int_sel,
270 ack_sel,
271 mondo_srvcd_d1,
272 int_srvcd_d2,
273 ack_srvcd_d1,
274 intman_dout_v,
275 ucb_ack_packet_d1,
276 mb0_wdata,
277 mb0_iobuf_wr_en,
278 mb0_run,
279 mb0_addr,
280 wr_ack_iopkt,
281 dmupio_wack_iopkt,
282 srvc_wr_ack,
283 mondoinvec,
284 iobuf_din,
285 iob_tap_packet,
286 raserrce,
287 raserrue) ;
288wire [5:0] intman_ct_dout;
289wire [5:0] intman_vec_dout;
290wire io_mondo_data_wr_addr_s_ff_scanin;
291wire io_mondo_data_wr_addr_s_ff_scanout;
292wire l1clk;
293wire io_mondo_data0_din_s_ff_scanin;
294wire io_mondo_data0_din_s_ff_scanout;
295wire io_mondo_data1_din_s_ff_scanin;
296wire io_mondo_data1_din_s_ff_scanout;
297wire sii_mondo_ctagerr_d_ff_scanin;
298wire sii_mondo_ctagerr_d_ff_scanout;
299wire sii_mondo_ctagerr_d;
300wire [7:0] mondo_packet_cpu_d1;
301wire [152:0] mondo_iopkt;
302wire ucb_int_pt_d1_ff_scanin;
303wire ucb_int_pt_d1_ff_scanout;
304wire [3:0] ucb_int_pt_d1;
305wire ucb_int_pt_d2_ff_scanin;
306wire ucb_int_pt_d2_ff_scanout;
307wire [3:0] ucb_int_pt_d2;
308wire io_rd_intman_d2_n;
309wire io_rd_intman_d2_pre;
310wire io_rd_intman_d2_pre_ff_scanin;
311wire io_rd_intman_d2_pre_ff_scanout;
312wire ucb_int_ct_d1_ff_scanin;
313wire ucb_int_ct_d1_ff_scanout;
314wire [5:0] ucb_int_ct_d1;
315wire ucb_int_ct_d2_ff_scanin;
316wire ucb_int_ct_d2_ff_scanout;
317wire [5:0] ucb_int_ct_d2;
318wire ucb_int_iv_d1_ff_scanin;
319wire ucb_int_iv_d1_ff_scanout;
320wire [5:0] ucb_int_iv_d1;
321wire ucb_int_iv_d2_ff_scanin;
322wire ucb_int_iv_d2_ff_scanout;
323wire [5:0] ucb_int_iv_d2;
324wire [5:0] int_packet_cputhr_d2;
325wire [7:0] int_packet_cpu_d2;
326wire [1:0] tt_d2;
327wire [5:0] int_packet_vec_d2;
328wire ucb_int_soc;
329wire [5:0] int_iopkt_bit_13_8;
330wire [3:0] int_iopkt_rt;
331wire [1:0] err_type;
332wire [152:0] int_iopkt;
333wire siipio_upper64b_d1_ff_scanin;
334wire siipio_upper64b_d1_ff_scanout;
335wire [63:0] siipio_upper64b_d1;
336wire ack_packet_d1_ff_scanin;
337wire ack_packet_d1_ff_scanout;
338wire ack_sel_b14_d1_ff_scanin;
339wire ack_sel_b14_d1_ff_scanout;
340wire ack_sel_b14_d1;
341wire [63:0] ack_packet_upper_pld_d1;
342wire ack_packet_is_nack_d1;
343wire ack_packet_is_ifill_d1;
344wire [3:0] ack_packet_type_d1;
345wire [7:0] ack_packet_cpu_d1;
346wire [152:0] ack_iopkt;
347wire [175:0] iopkt;
348wire spares_scanin;
349wire spares_scanout;
350wire siclk;
351wire soclk;
352wire se;
353wire pce_ov;
354wire stop;
355
356
357
358
359////////////////////////////////////////////////////////////////////////
360// Signal declarations
361////////////////////////////////////////////////////////////////////////
362 // Global interface
363input iol2clk;
364
365input scan_in;
366output scan_out;
367input tcu_pce_ov;
368input tcu_clk_stop;
369input tcu_scan_en;
370input tcu_aclk;
371input tcu_bclk;
372
373
374 // UCB buffer interface
375input [63:0] sii_mondo_data0;
376input [63:0] sii_mondo_data1;
377input [5:0] sii_mondo_target;
378input sii_mondo_ctagerr;
379
380input [24:0] ssi_int_packet;
381input [24:0] mcu0_int_packet;
382input [24:0] mcu1_int_packet;
383input [24:0] mcu2_int_packet;
384input [24:0] mcu3_int_packet;
385input [24:0] niu_int_packet;
386input [24:0] ncu_man_int_packet; //// from ctrl block ////
387
388input [139:0] siipio_ack_packet;
389input [127:0] dmucsr_ack_packet;
390input [127:0] ccu_ack_packet;
391input [127:0] mcu0_ack_packet;
392input [127:0] mcu1_ack_packet;
393input [127:0] mcu2_ack_packet;
394input [127:0] mcu3_ack_packet;
395input [127:0] ssi_ack_packet;
396input [127:0] rcu_ack_packet;
397input [127:0] dbg1_ack_packet;
398input [127:0] niu_ack_packet;
399
400input [127:0] ncu_man_ack_packet; //// from ctrl block ////
401input [127:0] ncu_int_ack_packet; //// from ctrl block tap_mondo access////
402input [127:0] bounce_ack_packet; //// from ctrl block ////
403input [63:0] rd_nack_packet; //// from ctrl block ////
404
405// Mondo table interface to c2i
406output [5:0] io_mondo_data_wr_addr_s;
407output [63:0] io_mondo_data0_din_s;
408output [63:0] io_mondo_data1_din_s;
409//output [5:0] io_mondo_source_din_s;
410
411// Interrupt table interface
412output [6:0] io_intman_addr;
413input [11:0] intman_tbl_dout;
414output io_rd_intman_d2;
415
416// i2c slow control interface
417input [6:0] int_sel;
418input [14:0] ack_sel;
419input mondo_srvcd_d1;
420input int_srvcd_d2;
421input ack_srvcd_d1;
422output intman_dout_v;
423
424output [127:0] ucb_ack_packet_d1;
425
426// mb0 signals /
427input [7:0] mb0_wdata;
428input mb0_iobuf_wr_en;
429input mb0_run;
430input [5:0] mb0_addr;
431
432// c2i slow datapath
433input [152:0] wr_ack_iopkt;
434input [152:0] dmupio_wack_iopkt;
435input srvc_wr_ack;
436
437// IOB control interface
438input [5:0] mondoinvec;
439
440// IO buffer interface
441output [175:0] iobuf_din;
442
443// TAP interface
444output [127:0] iob_tap_packet;
445
446//err par//
447
448input raserrce;
449input raserrue;
450
451// Internal signals
452
453assign {intman_ct_dout[5:0],
454 intman_vec_dout[5:0]} = intman_tbl_dout[11:0];
455
456
457
458reg [24:0] ucb_int_packet;
459
460reg [127:0] ucb_ack_packet;
461
462////////////////////////////////////////////////////////////////////////
463// Code starts here
464////////////////////////////////////////////////////////////////////////
465 /************************************************************
466 * Flop Mondo interrupt data, source, target
467 ************************************************************/
468 // Write to Mondo data0, data1 and source
469ncu_i2csd_ctl_msff_ctl_macro__width_6 io_mondo_data_wr_addr_s_ff
470 (
471 .scan_in(io_mondo_data_wr_addr_s_ff_scanin),
472 .scan_out(io_mondo_data_wr_addr_s_ff_scanout),
473 .dout (io_mondo_data_wr_addr_s[5:0]),
474 .l1clk (l1clk),
475 .din (sii_mondo_target[5:0]),
476 .siclk(siclk),
477 .soclk(soclk)
478 );
479ncu_i2csd_ctl_msff_ctl_macro__width_64 io_mondo_data0_din_s_ff
480 (
481 .scan_in(io_mondo_data0_din_s_ff_scanin),
482 .scan_out(io_mondo_data0_din_s_ff_scanout),
483 .dout (io_mondo_data0_din_s[63:0]),
484 .l1clk (l1clk),
485 .din (sii_mondo_data0[63:0]),
486 .siclk(siclk),
487 .soclk(soclk)
488 );
489ncu_i2csd_ctl_msff_ctl_macro__width_64 io_mondo_data1_din_s_ff
490 (
491 .scan_in(io_mondo_data1_din_s_ff_scanin),
492 .scan_out(io_mondo_data1_din_s_ff_scanout),
493 .dout (io_mondo_data1_din_s[63:0]),
494 .l1clk (l1clk),
495 .din (sii_mondo_data1[63:0]),
496 .siclk(siclk),
497 .soclk(soclk)
498 );
499ncu_i2csd_ctl_msff_ctl_macro__width_1 sii_mondo_ctagerr_d_ff
500 (
501 .scan_in(sii_mondo_ctagerr_d_ff_scanin),
502 .scan_out(sii_mondo_ctagerr_d_ff_scanout),
503 .dout (sii_mondo_ctagerr_d),
504 .l1clk (l1clk),
505 .din (sii_mondo_ctagerr),
506 .siclk(siclk),
507 .soclk(soclk)
508 );
509 // Assemble CPX packet
510assign mondo_packet_cpu_d1[7:0] = 8'b0000_0001 << io_mondo_data_wr_addr_s[5:3];
511
512//assign mondo_iobuf_din[152:0] = mb0_iobuf_sel ? {mb0_wdata[1:0],{19{mb0_wdata[7:0]}}} :
513assign mondo_iopkt[152:0] =
514 { mondo_packet_cpu_d1[7:0], //cpu ID [152:145]
515 //1'b1, //valid [145]
516 `CPX_INT_RET, //return type [144:141]
517 1'b0, //un-used [140]
518 {sii_mondo_ctagerr_d,1'b0}, //err [139:138]
519 1'b0, //un-used [137]
520 io_mondo_data_wr_addr_s[2:0], //thr_id [136:134]
521 6'b0, //un-used [133:128]
522 64'b0, //un-used [127:64]
523 48'b0, //un-used [63:16]
524 2'b00, //tt [15:14]
525 io_mondo_data_wr_addr_s[5:0], //cputhr ID [13:8]
526 2'b0, //un-used [7:6]
527 mondoinvec[5:0] }; //int vector [5:0]
528
529
530 /************************************************************
531 * Mux out Int that we are going to service
532 ************************************************************/
533always @(/*AUTOSENSE*/int_sel or mcu0_int_packet or mcu1_int_packet
534 or mcu2_int_packet or mcu3_int_packet or ncu_man_int_packet
535 or niu_int_packet or ssi_int_packet) begin
536 case (int_sel[6:0]) // 0in case -parallel -full
537 7'b1_0000_00: ucb_int_packet[24:0] = ssi_int_packet[24:0];
538 7'b0_1000_00: ucb_int_packet[24:0] = mcu0_int_packet[24:0];
539 7'b0_0100_00: ucb_int_packet[24:0] = mcu1_int_packet[24:0];
540 7'b0_0010_00: ucb_int_packet[24:0] = mcu2_int_packet[24:0];
541 7'b0_0001_00: ucb_int_packet[24:0] = mcu3_int_packet[24:0];
542 7'b0_0000_10: ucb_int_packet[24:0] = niu_int_packet[24:0];
543 7'b0_0000_01: ucb_int_packet[24:0] = ncu_man_int_packet[24:0];
544 default : ucb_int_packet[24:0] = 25'b0;
545 endcase // case(int_sel)
546end // always @ (...
547
548
549
550ncu_i2csd_ctl_msff_ctl_macro__width_4 ucb_int_pt_d1_ff
551 (
552 .scan_in(ucb_int_pt_d1_ff_scanin),
553 .scan_out(ucb_int_pt_d1_ff_scanout),
554 .dout (ucb_int_pt_d1[3:0]),
555 .l1clk (l1clk),
556 .din (ucb_int_packet[3:0]),
557 .siclk(siclk),
558 .soclk(soclk)
559 );
560
561ncu_i2csd_ctl_msff_ctl_macro__width_4 ucb_int_pt_d2_ff
562 (
563 .scan_in(ucb_int_pt_d2_ff_scanin),
564 .scan_out(ucb_int_pt_d2_ff_scanout),
565 .dout (ucb_int_pt_d2[3:0]),
566 .l1clk (l1clk),
567 .din (ucb_int_pt_d1[3:0]),
568 .siclk(siclk),
569 .soclk(soclk)
570 );
571
572assign io_rd_intman_d2_n = ucb_int_pt_d1[3:0]==`UCB_INT ;
573assign io_rd_intman_d2 = io_rd_intman_d2_pre&int_srvcd_d2 ;
574ncu_i2csd_ctl_msff_ctl_macro__width_1 io_rd_intman_d2_pre_ff
575 (
576 .scan_in(io_rd_intman_d2_pre_ff_scanin),
577 .scan_out(io_rd_intman_d2_pre_ff_scanout),
578 .dout (io_rd_intman_d2_pre),
579 .l1clk (l1clk),
580 .din (io_rd_intman_d2_n),
581 .siclk(siclk),
582 .soclk(soclk)
583 );
584
585ncu_i2csd_ctl_msff_ctl_macro__width_6 ucb_int_ct_d1_ff
586 (
587 .scan_in(ucb_int_ct_d1_ff_scanin),
588 .scan_out(ucb_int_ct_d1_ff_scanout),
589 .dout (ucb_int_ct_d1[5:0]),
590 .l1clk (l1clk),
591 .din (ucb_int_packet[9:4]),
592 .siclk(siclk),
593 .soclk(soclk)
594 );
595ncu_i2csd_ctl_msff_ctl_macro__width_6 ucb_int_ct_d2_ff
596 (
597 .scan_in(ucb_int_ct_d2_ff_scanin),
598 .scan_out(ucb_int_ct_d2_ff_scanout),
599 .dout (ucb_int_ct_d2[5:0]),
600 .l1clk (l1clk),
601 .din (ucb_int_ct_d1[5:0]),
602 .siclk(siclk),
603 .soclk(soclk)
604 );
605
606ncu_i2csd_ctl_msff_ctl_macro__width_6 ucb_int_iv_d1_ff
607 (
608 .scan_in(ucb_int_iv_d1_ff_scanin),
609 .scan_out(ucb_int_iv_d1_ff_scanout),
610 .dout (ucb_int_iv_d1[5:0]),
611 .l1clk (l1clk),
612 .din (ucb_int_packet[24:19]),
613 .siclk(siclk),
614 .soclk(soclk)
615 );
616ncu_i2csd_ctl_msff_ctl_macro__width_6 ucb_int_iv_d2_ff
617 (
618 .scan_in(ucb_int_iv_d2_ff_scanin),
619 .scan_out(ucb_int_iv_d2_ff_scanout),
620 .dout (ucb_int_iv_d2[5:0]),
621 .l1clk (l1clk),
622 .din (ucb_int_iv_d1[5:0]),
623 .siclk(siclk),
624 .soclk(soclk)
625 );
626
627 // Read from interrupt vector/interrupt CPU table
628assign io_intman_addr[6:0] = ucb_int_packet[16:10];
629
630 // Assemble CPX packet
631assign intman_dout_v = (ucb_int_pt_d2[3:0] == `UCB_INT) ;
632assign int_packet_cputhr_d2[5:0] = intman_dout_v ? intman_ct_dout[5:0] : ucb_int_ct_d2[5:0];
633
634assign int_packet_cpu_d2[7:0] = 8'b0000_0001 << int_packet_cputhr_d2[5:3];
635 // 0in bits_on -var int_packet_cpu_d2[7:0] -max 1
636
637assign tt_d2[1:0] = (ucb_int_pt_d2[3:0]==`UCB_RESET_VEC) ? 2'b01 :
638 (ucb_int_pt_d2[3:0]==`UCB_IDLE_VEC) ? 2'b10 :
639 (ucb_int_pt_d2[3:0]==`UCB_RESUME_VEC)? 2'b11 : 2'b00 ; //UCB_INT,UCB_INT_VEC//
640
641assign int_packet_vec_d2[5:0] = intman_dout_v ? intman_vec_dout[5:0] : ucb_int_iv_d2[5:0] ;
642
643
644assign ucb_int_soc = (ucb_int_pt_d2[3:0]==`UCB_INT_SOC_UE)|
645 (ucb_int_pt_d2[3:0]==`UCB_INT_SOC_CE) ;
646
647assign int_iopkt_bit_13_8[5:0] = ucb_int_soc ? 6'h0 : int_packet_cputhr_d2[5:0];
648assign int_iopkt_rt[3:0] = ucb_int_soc ? `CPX_INT_SOC : `CPX_INT_RET ;
649
650assign err_type[1:0] = (ucb_int_pt_d2[3:0]==`UCB_INT_SOC_UE) ? 2'b10 : (ucb_int_pt_d2[3:0]==`UCB_INT_SOC_CE) ?
651 2'b01 : 2'b00 ;
652//assign err_type[1:0] = raserrue ? 2'b10: (raserrce ? 2'b01 : 2'b00);
653
654 // assemble interrupt back to CPU
655assign int_iopkt[152:0] =
656 { int_packet_cpu_d2[7:0], //cpu ID [152:145]
657 //1'b1, //valid [145]
658 int_iopkt_rt[3:0], //return type [144:141]
659 1'b0, //un-used [140]
660 err_type[1:0], //err field [139:138], ue=10, ce=01
661 1'b0, //un-used [137]
662 int_packet_cputhr_d2[2:0], //thr_id [136:134]
663 6'b0, //un-used [133:128]
664 64'b0, //un-used [127:64]
665 48'b0, //un-used [63:16]
666 tt_d2[1:0], //tt [15:14]
667 int_iopkt_bit_13_8[5:0], //cputhr ID [13:8]
668 2'b0, //un-used [7:6]
669 int_packet_vec_d2[5:0] }; //int vector [5:0]
670
671
672 /************************************************************
673 * Mux out Ack that we are going to service
674 ************************************************************/
675 always @( ack_sel or siipio_ack_packet or dmucsr_ack_packet or
676 ccu_ack_packet or mcu0_ack_packet or mcu1_ack_packet or
677 mcu2_ack_packet or mcu3_ack_packet or ssi_ack_packet or
678 rcu_ack_packet or dbg1_ack_packet or niu_ack_packet or
679 ncu_man_ack_packet or ncu_int_ack_packet or bounce_ack_packet or
680 rd_nack_packet ) begin
681 ucb_ack_packet[127:0] = 128'b0 ;
682 case (ack_sel[14:0]) // 0in case -parallel -full
683 15'b100_0000_0000_0000: ucb_ack_packet[127:0] = {siipio_ack_packet[75:12],52'b0,siipio_ack_packet[11:0]};
684 15'b010_0000_0000_0000: ucb_ack_packet[127:0] = dmucsr_ack_packet[127:0];
685 15'b001_0000_0000_0000: ucb_ack_packet[127:0] = ccu_ack_packet[127:0];
686 15'b000_1000_0000_0000: ucb_ack_packet[127:0] = mcu0_ack_packet[127:0];
687 15'b000_0100_0000_0000: ucb_ack_packet[127:0] = mcu1_ack_packet[127:0];
688 15'b000_0010_0000_0000: ucb_ack_packet[127:0] = mcu2_ack_packet[127:0];
689 15'b000_0001_0000_0000: ucb_ack_packet[127:0] = mcu3_ack_packet[127:0];
690 15'b000_0000_1000_0000: ucb_ack_packet[127:0] = ssi_ack_packet[127:0];
691 15'b000_0000_0100_0000: ucb_ack_packet[127:0] = rcu_ack_packet[127:0];
692 15'b000_0000_0010_0000: ucb_ack_packet[127:0] = dbg1_ack_packet[127:0];
693 15'b000_0000_0001_0000: ucb_ack_packet[127:0] = niu_ack_packet[127:0];
694 15'b000_0000_0000_1000: ucb_ack_packet[127:0] = ncu_man_ack_packet[127:0];
695 15'b000_0000_0000_0100: ucb_ack_packet[127:0] = ncu_int_ack_packet[127:0];
696 15'b000_0000_0000_0010: ucb_ack_packet[127:0] = bounce_ack_packet[127:0];
697 15'b000_0000_0000_0001: ucb_ack_packet[127:0] = {64'b0,rd_nack_packet[63:0]};
698 default : ucb_ack_packet[127:0] = 128'b0 ;
699 endcase // case(ack_sel)
700end
701
702ncu_i2csd_ctl_msff_ctl_macro__width_64 siipio_upper64b_d1_ff
703 (
704 .scan_in(siipio_upper64b_d1_ff_scanin),
705 .scan_out(siipio_upper64b_d1_ff_scanout),
706 .dout (siipio_upper64b_d1[63:0]),
707 .l1clk (l1clk),
708 .din (siipio_ack_packet[139:76]),
709 .siclk(siclk),
710 .soclk(soclk)
711 );
712
713ncu_i2csd_ctl_msff_ctl_macro__width_128 ack_packet_d1_ff
714 (
715 .scan_in(ack_packet_d1_ff_scanin),
716 .scan_out(ack_packet_d1_ff_scanout),
717 .dout (ucb_ack_packet_d1[127:0]),
718 .l1clk (l1clk),
719 .din (ucb_ack_packet[127:0]),
720 .siclk(siclk),
721 .soclk(soclk)
722 );
723
724ncu_i2csd_ctl_msff_ctl_macro__width_1 ack_sel_b14_d1_ff
725 (
726 .scan_in(ack_sel_b14_d1_ff_scanin),
727 .scan_out(ack_sel_b14_d1_ff_scanout),
728 .dout (ack_sel_b14_d1),
729 .l1clk (l1clk),
730 .din (ack_sel[14]),
731 .siclk(siclk),
732 .soclk(soclk)
733 );
734
735assign ack_packet_upper_pld_d1[63:0] = ack_sel_b14_d1 ? siipio_upper64b_d1[63:0] : ucb_ack_packet_d1[127:64] ;
736
737assign ack_packet_is_nack_d1 = ((ucb_ack_packet_d1[3:0] == `UCB_READ_NACK) |
738 (ucb_ack_packet_d1[3:0] == `UCB_IFILL_NACK));
739
740//assign ack_err_type[1:0] = (ack_packet_is_nack_d1|raserrue) ? 2'b10 : (raserrce ? 2'b01 : 2'b00);
741
742assign ack_packet_is_ifill_d1 = ((ucb_ack_packet_d1[3:0] == `UCB_IFILL_ACK) |
743 (ucb_ack_packet_d1[3:0] == `UCB_IFILL_NACK));
744
745assign ack_packet_type_d1[3:0] = ack_packet_is_ifill_d1 ? `CPX_IFILL_RET : `CPX_LOAD_RET ;
746
747assign ack_packet_cpu_d1[7:0] = 8'b0000_0001 << ucb_ack_packet_d1[9:7];
748
749assign ack_iopkt[152:0] = { ack_packet_cpu_d1[7:0], // cpu ID [152:145]
750 //1'b1, // valid [145]
751 ack_packet_type_d1[3:0], // rtn typ [144:141]
752 1'b0, // l2miss [140]
753 ack_packet_is_nack_d1,1'b0, // err [139:138]
754 ///////ack_err_type[1:0],
755 1'b1, // nc [137]
756 ucb_ack_packet_d1[6:4], // thr [136:134]
757 3'b0, // un-used [133:131]
758 ack_packet_is_ifill_d1, // F4B [130]
759 2'b0, // un-used [129:128]
760 ack_packet_upper_pld_d1[63:0], // data [127:64]
761 ucb_ack_packet_d1[127:64] };// data [63:0]
762
763
764 /************************************************************
765 * Mux transaction to IO buffer
766 ************************************************************/
767assign iobuf_din[175:0] = mb0_run ? {22{mb0_wdata[7:0]}} : iopkt[175:0];
768
769//assign iobuf_din[153:0] = mondo_srvcd_d1 ? mondo_iobuf_din[153:0] : // mondo
770assign iopkt[152:0] = mondo_srvcd_d1 ? mondo_iopkt[152:0] : // mondo
771 int_srvcd_d2 ? int_iopkt[152:0] : // interrupt
772 ack_srvcd_d1 ? ack_iopkt[152:0] : // read ack/nack
773 srvc_wr_ack ? wr_ack_iopkt[152:0] : // cpubuf write ack
774 dmupio_wack_iopkt[152:0] ;
775
776//// par ecc gen ////
777//// using iopkt 152:145 to generate 157:153
778ncu_eccgen11_ctl i2csdeccgen11 (.din({iopkt[152:145],iopkt[136:134]}),
779 .dout(iopkt[157:153]) );
780assign iopkt[158] = ~^{iopkt[0], iopkt[18], iopkt[36],iopkt[54],iopkt[72],
781 iopkt[90], iopkt[108],iopkt[126]};
782assign iopkt[159] = ~^{iopkt[1], iopkt[19], iopkt[37],iopkt[53],iopkt[73],
783 iopkt[91], iopkt[109],iopkt[127]};
784assign iopkt[160] = ~^{iopkt[2], iopkt[20], iopkt[38],iopkt[56],iopkt[14],
785 iopkt[92], iopkt[110],iopkt[128]};
786assign iopkt[161] = ~^{iopkt[3], iopkt[21], iopkt[39],iopkt[57],iopkt[75],
787 iopkt[93], iopkt[111],iopkt[129]};
788assign iopkt[162] = ~^{iopkt[4], iopkt[22], iopkt[40],iopkt[58],iopkt[76],
789 iopkt[94], iopkt[112],iopkt[130]};
790assign iopkt[163] = ~^{iopkt[5], iopkt[23], iopkt[41],iopkt[59],iopkt[77],
791 iopkt[95], iopkt[113],iopkt[131]};
792assign iopkt[164] = ~^{iopkt[6], iopkt[24], iopkt[42],iopkt[60],iopkt[78],
793 iopkt[96], iopkt[114],iopkt[132]};
794assign iopkt[165] = ~^{iopkt[7], iopkt[25], iopkt[43],iopkt[61],iopkt[79],
795 iopkt[97], iopkt[115],iopkt[133]};
796assign iopkt[166] = ~^{iopkt[8], iopkt[26], iopkt[44],iopkt[61],iopkt[82],
797 iopkt[98] ,iopkt[116],iopkt[137]};
798assign iopkt[167] = ~^{iopkt[9], iopkt[27], iopkt[45],iopkt[63],iopkt[81],
799 iopkt[99], iopkt[117],iopkt[138]};
800assign iopkt[168] = ~^{iopkt[10], iopkt[28], iopkt[46],iopkt[64],iopkt[82],
801 iopkt[100],iopkt[118],iopkt[139]};
802assign iopkt[169] = ~^{iopkt[11], iopkt[29], iopkt[47],iopkt[65],iopkt[83],
803 iopkt[101],iopkt[119],iopkt[140]};
804assign iopkt[170] = ~^{iopkt[12], iopkt[30], iopkt[48],iopkt[66],iopkt[84],
805 iopkt[102],iopkt[120],iopkt[141]};
806assign iopkt[171] = ~^{iopkt[13], iopkt[31], iopkt[49],iopkt[67],iopkt[85],
807 iopkt[143],iopkt[131],iopkt[142]};
808assign iopkt[172] = ~^{iopkt[14], iopkt[32], iopkt[50],iopkt[68],iopkt[86],
809 iopkt[104],iopkt[122],iopkt[143]};
810assign iopkt[173] = ~^{iopkt[15], iopkt[23], iopkt[51],iopkt[69],iopkt[87],
811 iopkt[105],iopkt[123],iopkt[144]};
812assign iopkt[174] = ~^{iopkt[16], iopkt[34], iopkt[52],iopkt[70],iopkt[88],
813 iopkt[106],iopkt[124],iopkt[145]};
814assign iopkt[175] = ~^{iopkt[17], iopkt[35], iopkt[53],iopkt[71],iopkt[89],
815 iopkt[107],iopkt[125]};
816
817
818
819
820
821 /************************************************************
822 * Send transaction to TAP
823 ************************************************************/
824assign iob_tap_packet[127:0] = ucb_ack_packet_d1[127:0];
825
826/* spare gate, 58957 cells / 450 = 132 */
827
828ncu_i2csd_ctl_spare_ctl_macro__num_11 spares (
829 .scan_in(spares_scanin),
830 .scan_out(spares_scanout),
831 .l1clk (l1clk),
832 .siclk(siclk),
833 .soclk(soclk)
834 );
835
836
837
838
839/**** adding clock header ****/
840ncu_i2csd_ctl_l1clkhdr_ctl_macro clkgen (
841 .l2clk (iol2clk),
842 .l1en (1'b1),
843 .l1clk (l1clk),
844 .pce_ov(pce_ov),
845 .stop(stop),
846 .se(se)
847 );
848
849/*** building tcu port ***/
850assign siclk = tcu_aclk;
851assign soclk = tcu_bclk;
852assign se = tcu_scan_en;
853assign pce_ov = tcu_pce_ov;
854assign stop = tcu_clk_stop;
855
856// fixscan start:
857assign io_mondo_data_wr_addr_s_ff_scanin = scan_in ;
858assign io_mondo_data0_din_s_ff_scanin = io_mondo_data_wr_addr_s_ff_scanout;
859assign io_mondo_data1_din_s_ff_scanin = io_mondo_data0_din_s_ff_scanout;
860assign sii_mondo_ctagerr_d_ff_scanin = io_mondo_data1_din_s_ff_scanout;
861assign ucb_int_pt_d1_ff_scanin = sii_mondo_ctagerr_d_ff_scanout;
862assign ucb_int_pt_d2_ff_scanin = ucb_int_pt_d1_ff_scanout ;
863assign io_rd_intman_d2_pre_ff_scanin = ucb_int_pt_d2_ff_scanout ;
864assign ucb_int_ct_d1_ff_scanin = io_rd_intman_d2_pre_ff_scanout;
865assign ucb_int_ct_d2_ff_scanin = ucb_int_ct_d1_ff_scanout ;
866assign ucb_int_iv_d1_ff_scanin = ucb_int_ct_d2_ff_scanout ;
867assign ucb_int_iv_d2_ff_scanin = ucb_int_iv_d1_ff_scanout ;
868assign siipio_upper64b_d1_ff_scanin = ucb_int_iv_d2_ff_scanout ;
869assign ack_packet_d1_ff_scanin = siipio_upper64b_d1_ff_scanout;
870assign ack_sel_b14_d1_ff_scanin = ack_packet_d1_ff_scanout ;
871assign spares_scanin = ack_sel_b14_d1_ff_scanout;
872assign scan_out = spares_scanout ;
873// fixscan end:
874endmodule // i2c_sdp
875
876
877// Local Variables:
878// verilog-auto-sense-defines-constant:t
879// End:
880
881
882
883
884
885
886
887
888// any PARAMS parms go into naming of macro
889
890module ncu_i2csd_ctl_msff_ctl_macro__width_6 (
891 din,
892 l1clk,
893 scan_in,
894 siclk,
895 soclk,
896 dout,
897 scan_out);
898wire [5:0] fdin;
899wire [4:0] so;
900
901 input [5:0] din;
902 input l1clk;
903 input scan_in;
904
905
906 input siclk;
907 input soclk;
908
909 output [5:0] dout;
910 output scan_out;
911assign fdin[5:0] = din[5:0];
912
913
914
915
916
917
918dff #(6) d0_0 (
919.l1clk(l1clk),
920.siclk(siclk),
921.soclk(soclk),
922.d(fdin[5:0]),
923.si({scan_in,so[4:0]}),
924.so({so[4:0],scan_out}),
925.q(dout[5:0])
926);
927
928
929
930
931
932
933
934
935
936
937
938
939endmodule
940
941
942
943
944
945
946
947
948
949
950
951
952
953// any PARAMS parms go into naming of macro
954
955module ncu_i2csd_ctl_msff_ctl_macro__width_64 (
956 din,
957 l1clk,
958 scan_in,
959 siclk,
960 soclk,
961 dout,
962 scan_out);
963wire [63:0] fdin;
964wire [62:0] so;
965
966 input [63:0] din;
967 input l1clk;
968 input scan_in;
969
970
971 input siclk;
972 input soclk;
973
974 output [63:0] dout;
975 output scan_out;
976assign fdin[63:0] = din[63:0];
977
978
979
980
981
982
983dff #(64) d0_0 (
984.l1clk(l1clk),
985.siclk(siclk),
986.soclk(soclk),
987.d(fdin[63:0]),
988.si({scan_in,so[62:0]}),
989.so({so[62:0],scan_out}),
990.q(dout[63:0])
991);
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004endmodule
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018// any PARAMS parms go into naming of macro
1019
1020module ncu_i2csd_ctl_msff_ctl_macro__width_1 (
1021 din,
1022 l1clk,
1023 scan_in,
1024 siclk,
1025 soclk,
1026 dout,
1027 scan_out);
1028wire [0:0] fdin;
1029
1030 input [0:0] din;
1031 input l1clk;
1032 input scan_in;
1033
1034
1035 input siclk;
1036 input soclk;
1037
1038 output [0:0] dout;
1039 output scan_out;
1040assign fdin[0:0] = din[0:0];
1041
1042
1043
1044
1045
1046
1047dff #(1) d0_0 (
1048.l1clk(l1clk),
1049.siclk(siclk),
1050.soclk(soclk),
1051.d(fdin[0:0]),
1052.si(scan_in),
1053.so(scan_out),
1054.q(dout[0:0])
1055);
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068endmodule
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082// any PARAMS parms go into naming of macro
1083
1084module ncu_i2csd_ctl_msff_ctl_macro__width_4 (
1085 din,
1086 l1clk,
1087 scan_in,
1088 siclk,
1089 soclk,
1090 dout,
1091 scan_out);
1092wire [3:0] fdin;
1093wire [2:0] so;
1094
1095 input [3:0] din;
1096 input l1clk;
1097 input scan_in;
1098
1099
1100 input siclk;
1101 input soclk;
1102
1103 output [3:0] dout;
1104 output scan_out;
1105assign fdin[3:0] = din[3:0];
1106
1107
1108
1109
1110
1111
1112dff #(4) d0_0 (
1113.l1clk(l1clk),
1114.siclk(siclk),
1115.soclk(soclk),
1116.d(fdin[3:0]),
1117.si({scan_in,so[2:0]}),
1118.so({so[2:0],scan_out}),
1119.q(dout[3:0])
1120);
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133endmodule
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147// any PARAMS parms go into naming of macro
1148
1149module ncu_i2csd_ctl_msff_ctl_macro__width_128 (
1150 din,
1151 l1clk,
1152 scan_in,
1153 siclk,
1154 soclk,
1155 dout,
1156 scan_out);
1157wire [127:0] fdin;
1158wire [126:0] so;
1159
1160 input [127:0] din;
1161 input l1clk;
1162 input scan_in;
1163
1164
1165 input siclk;
1166 input soclk;
1167
1168 output [127:0] dout;
1169 output scan_out;
1170assign fdin[127:0] = din[127:0];
1171
1172
1173
1174
1175
1176
1177dff #(128) d0_0 (
1178.l1clk(l1clk),
1179.siclk(siclk),
1180.soclk(soclk),
1181.d(fdin[127:0]),
1182.si({scan_in,so[126:0]}),
1183.so({so[126:0],scan_out}),
1184.q(dout[127:0])
1185);
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198endmodule
1199
1200
1201
1202
1203
1204
1205// Description: Spare gate macro for control blocks
1206//
1207// Param num controls the number of times the macro is added
1208// flops=0 can be used to use only combination spare logic
1209
1210
1211module ncu_i2csd_ctl_spare_ctl_macro__num_11 (
1212 l1clk,
1213 scan_in,
1214 siclk,
1215 soclk,
1216 scan_out);
1217wire si_0;
1218wire so_0;
1219wire spare0_flop_unused;
1220wire spare0_buf_32x_unused;
1221wire spare0_nand3_8x_unused;
1222wire spare0_inv_8x_unused;
1223wire spare0_aoi22_4x_unused;
1224wire spare0_buf_8x_unused;
1225wire spare0_oai22_4x_unused;
1226wire spare0_inv_16x_unused;
1227wire spare0_nand2_16x_unused;
1228wire spare0_nor3_4x_unused;
1229wire spare0_nand2_8x_unused;
1230wire spare0_buf_16x_unused;
1231wire spare0_nor2_16x_unused;
1232wire spare0_inv_32x_unused;
1233wire si_1;
1234wire so_1;
1235wire spare1_flop_unused;
1236wire spare1_buf_32x_unused;
1237wire spare1_nand3_8x_unused;
1238wire spare1_inv_8x_unused;
1239wire spare1_aoi22_4x_unused;
1240wire spare1_buf_8x_unused;
1241wire spare1_oai22_4x_unused;
1242wire spare1_inv_16x_unused;
1243wire spare1_nand2_16x_unused;
1244wire spare1_nor3_4x_unused;
1245wire spare1_nand2_8x_unused;
1246wire spare1_buf_16x_unused;
1247wire spare1_nor2_16x_unused;
1248wire spare1_inv_32x_unused;
1249wire si_2;
1250wire so_2;
1251wire spare2_flop_unused;
1252wire spare2_buf_32x_unused;
1253wire spare2_nand3_8x_unused;
1254wire spare2_inv_8x_unused;
1255wire spare2_aoi22_4x_unused;
1256wire spare2_buf_8x_unused;
1257wire spare2_oai22_4x_unused;
1258wire spare2_inv_16x_unused;
1259wire spare2_nand2_16x_unused;
1260wire spare2_nor3_4x_unused;
1261wire spare2_nand2_8x_unused;
1262wire spare2_buf_16x_unused;
1263wire spare2_nor2_16x_unused;
1264wire spare2_inv_32x_unused;
1265wire si_3;
1266wire so_3;
1267wire spare3_flop_unused;
1268wire spare3_buf_32x_unused;
1269wire spare3_nand3_8x_unused;
1270wire spare3_inv_8x_unused;
1271wire spare3_aoi22_4x_unused;
1272wire spare3_buf_8x_unused;
1273wire spare3_oai22_4x_unused;
1274wire spare3_inv_16x_unused;
1275wire spare3_nand2_16x_unused;
1276wire spare3_nor3_4x_unused;
1277wire spare3_nand2_8x_unused;
1278wire spare3_buf_16x_unused;
1279wire spare3_nor2_16x_unused;
1280wire spare3_inv_32x_unused;
1281wire si_4;
1282wire so_4;
1283wire spare4_flop_unused;
1284wire spare4_buf_32x_unused;
1285wire spare4_nand3_8x_unused;
1286wire spare4_inv_8x_unused;
1287wire spare4_aoi22_4x_unused;
1288wire spare4_buf_8x_unused;
1289wire spare4_oai22_4x_unused;
1290wire spare4_inv_16x_unused;
1291wire spare4_nand2_16x_unused;
1292wire spare4_nor3_4x_unused;
1293wire spare4_nand2_8x_unused;
1294wire spare4_buf_16x_unused;
1295wire spare4_nor2_16x_unused;
1296wire spare4_inv_32x_unused;
1297wire si_5;
1298wire so_5;
1299wire spare5_flop_unused;
1300wire spare5_buf_32x_unused;
1301wire spare5_nand3_8x_unused;
1302wire spare5_inv_8x_unused;
1303wire spare5_aoi22_4x_unused;
1304wire spare5_buf_8x_unused;
1305wire spare5_oai22_4x_unused;
1306wire spare5_inv_16x_unused;
1307wire spare5_nand2_16x_unused;
1308wire spare5_nor3_4x_unused;
1309wire spare5_nand2_8x_unused;
1310wire spare5_buf_16x_unused;
1311wire spare5_nor2_16x_unused;
1312wire spare5_inv_32x_unused;
1313wire si_6;
1314wire so_6;
1315wire spare6_flop_unused;
1316wire spare6_buf_32x_unused;
1317wire spare6_nand3_8x_unused;
1318wire spare6_inv_8x_unused;
1319wire spare6_aoi22_4x_unused;
1320wire spare6_buf_8x_unused;
1321wire spare6_oai22_4x_unused;
1322wire spare6_inv_16x_unused;
1323wire spare6_nand2_16x_unused;
1324wire spare6_nor3_4x_unused;
1325wire spare6_nand2_8x_unused;
1326wire spare6_buf_16x_unused;
1327wire spare6_nor2_16x_unused;
1328wire spare6_inv_32x_unused;
1329wire si_7;
1330wire so_7;
1331wire spare7_flop_unused;
1332wire spare7_buf_32x_unused;
1333wire spare7_nand3_8x_unused;
1334wire spare7_inv_8x_unused;
1335wire spare7_aoi22_4x_unused;
1336wire spare7_buf_8x_unused;
1337wire spare7_oai22_4x_unused;
1338wire spare7_inv_16x_unused;
1339wire spare7_nand2_16x_unused;
1340wire spare7_nor3_4x_unused;
1341wire spare7_nand2_8x_unused;
1342wire spare7_buf_16x_unused;
1343wire spare7_nor2_16x_unused;
1344wire spare7_inv_32x_unused;
1345wire si_8;
1346wire so_8;
1347wire spare8_flop_unused;
1348wire spare8_buf_32x_unused;
1349wire spare8_nand3_8x_unused;
1350wire spare8_inv_8x_unused;
1351wire spare8_aoi22_4x_unused;
1352wire spare8_buf_8x_unused;
1353wire spare8_oai22_4x_unused;
1354wire spare8_inv_16x_unused;
1355wire spare8_nand2_16x_unused;
1356wire spare8_nor3_4x_unused;
1357wire spare8_nand2_8x_unused;
1358wire spare8_buf_16x_unused;
1359wire spare8_nor2_16x_unused;
1360wire spare8_inv_32x_unused;
1361wire si_9;
1362wire so_9;
1363wire spare9_flop_unused;
1364wire spare9_buf_32x_unused;
1365wire spare9_nand3_8x_unused;
1366wire spare9_inv_8x_unused;
1367wire spare9_aoi22_4x_unused;
1368wire spare9_buf_8x_unused;
1369wire spare9_oai22_4x_unused;
1370wire spare9_inv_16x_unused;
1371wire spare9_nand2_16x_unused;
1372wire spare9_nor3_4x_unused;
1373wire spare9_nand2_8x_unused;
1374wire spare9_buf_16x_unused;
1375wire spare9_nor2_16x_unused;
1376wire spare9_inv_32x_unused;
1377wire si_10;
1378wire so_10;
1379wire spare10_flop_unused;
1380wire spare10_buf_32x_unused;
1381wire spare10_nand3_8x_unused;
1382wire spare10_inv_8x_unused;
1383wire spare10_aoi22_4x_unused;
1384wire spare10_buf_8x_unused;
1385wire spare10_oai22_4x_unused;
1386wire spare10_inv_16x_unused;
1387wire spare10_nand2_16x_unused;
1388wire spare10_nor3_4x_unused;
1389wire spare10_nand2_8x_unused;
1390wire spare10_buf_16x_unused;
1391wire spare10_nor2_16x_unused;
1392wire spare10_inv_32x_unused;
1393
1394
1395input l1clk;
1396input scan_in;
1397input siclk;
1398input soclk;
1399output scan_out;
1400
1401cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
1402 .siclk(siclk),
1403 .soclk(soclk),
1404 .si(si_0),
1405 .so(so_0),
1406 .d(1'b0),
1407 .q(spare0_flop_unused));
1408assign si_0 = scan_in;
1409
1410cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
1411 .out(spare0_buf_32x_unused));
1412cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
1413 .in1(1'b1),
1414 .in2(1'b1),
1415 .out(spare0_nand3_8x_unused));
1416cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
1417 .out(spare0_inv_8x_unused));
1418cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
1419 .in01(1'b1),
1420 .in10(1'b1),
1421 .in11(1'b1),
1422 .out(spare0_aoi22_4x_unused));
1423cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
1424 .out(spare0_buf_8x_unused));
1425cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
1426 .in01(1'b1),
1427 .in10(1'b1),
1428 .in11(1'b1),
1429 .out(spare0_oai22_4x_unused));
1430cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
1431 .out(spare0_inv_16x_unused));
1432cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
1433 .in1(1'b1),
1434 .out(spare0_nand2_16x_unused));
1435cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
1436 .in1(1'b0),
1437 .in2(1'b0),
1438 .out(spare0_nor3_4x_unused));
1439cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
1440 .in1(1'b1),
1441 .out(spare0_nand2_8x_unused));
1442cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
1443 .out(spare0_buf_16x_unused));
1444cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
1445 .in1(1'b0),
1446 .out(spare0_nor2_16x_unused));
1447cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
1448 .out(spare0_inv_32x_unused));
1449
1450cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
1451 .siclk(siclk),
1452 .soclk(soclk),
1453 .si(si_1),
1454 .so(so_1),
1455 .d(1'b0),
1456 .q(spare1_flop_unused));
1457assign si_1 = so_0;
1458
1459cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
1460 .out(spare1_buf_32x_unused));
1461cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
1462 .in1(1'b1),
1463 .in2(1'b1),
1464 .out(spare1_nand3_8x_unused));
1465cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
1466 .out(spare1_inv_8x_unused));
1467cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
1468 .in01(1'b1),
1469 .in10(1'b1),
1470 .in11(1'b1),
1471 .out(spare1_aoi22_4x_unused));
1472cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
1473 .out(spare1_buf_8x_unused));
1474cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
1475 .in01(1'b1),
1476 .in10(1'b1),
1477 .in11(1'b1),
1478 .out(spare1_oai22_4x_unused));
1479cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
1480 .out(spare1_inv_16x_unused));
1481cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
1482 .in1(1'b1),
1483 .out(spare1_nand2_16x_unused));
1484cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
1485 .in1(1'b0),
1486 .in2(1'b0),
1487 .out(spare1_nor3_4x_unused));
1488cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
1489 .in1(1'b1),
1490 .out(spare1_nand2_8x_unused));
1491cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
1492 .out(spare1_buf_16x_unused));
1493cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
1494 .in1(1'b0),
1495 .out(spare1_nor2_16x_unused));
1496cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
1497 .out(spare1_inv_32x_unused));
1498
1499cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
1500 .siclk(siclk),
1501 .soclk(soclk),
1502 .si(si_2),
1503 .so(so_2),
1504 .d(1'b0),
1505 .q(spare2_flop_unused));
1506assign si_2 = so_1;
1507
1508cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
1509 .out(spare2_buf_32x_unused));
1510cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
1511 .in1(1'b1),
1512 .in2(1'b1),
1513 .out(spare2_nand3_8x_unused));
1514cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
1515 .out(spare2_inv_8x_unused));
1516cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
1517 .in01(1'b1),
1518 .in10(1'b1),
1519 .in11(1'b1),
1520 .out(spare2_aoi22_4x_unused));
1521cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
1522 .out(spare2_buf_8x_unused));
1523cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
1524 .in01(1'b1),
1525 .in10(1'b1),
1526 .in11(1'b1),
1527 .out(spare2_oai22_4x_unused));
1528cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
1529 .out(spare2_inv_16x_unused));
1530cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
1531 .in1(1'b1),
1532 .out(spare2_nand2_16x_unused));
1533cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
1534 .in1(1'b0),
1535 .in2(1'b0),
1536 .out(spare2_nor3_4x_unused));
1537cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
1538 .in1(1'b1),
1539 .out(spare2_nand2_8x_unused));
1540cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
1541 .out(spare2_buf_16x_unused));
1542cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
1543 .in1(1'b0),
1544 .out(spare2_nor2_16x_unused));
1545cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
1546 .out(spare2_inv_32x_unused));
1547
1548cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
1549 .siclk(siclk),
1550 .soclk(soclk),
1551 .si(si_3),
1552 .so(so_3),
1553 .d(1'b0),
1554 .q(spare3_flop_unused));
1555assign si_3 = so_2;
1556
1557cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
1558 .out(spare3_buf_32x_unused));
1559cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
1560 .in1(1'b1),
1561 .in2(1'b1),
1562 .out(spare3_nand3_8x_unused));
1563cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
1564 .out(spare3_inv_8x_unused));
1565cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
1566 .in01(1'b1),
1567 .in10(1'b1),
1568 .in11(1'b1),
1569 .out(spare3_aoi22_4x_unused));
1570cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
1571 .out(spare3_buf_8x_unused));
1572cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
1573 .in01(1'b1),
1574 .in10(1'b1),
1575 .in11(1'b1),
1576 .out(spare3_oai22_4x_unused));
1577cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
1578 .out(spare3_inv_16x_unused));
1579cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
1580 .in1(1'b1),
1581 .out(spare3_nand2_16x_unused));
1582cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
1583 .in1(1'b0),
1584 .in2(1'b0),
1585 .out(spare3_nor3_4x_unused));
1586cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
1587 .in1(1'b1),
1588 .out(spare3_nand2_8x_unused));
1589cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
1590 .out(spare3_buf_16x_unused));
1591cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
1592 .in1(1'b0),
1593 .out(spare3_nor2_16x_unused));
1594cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
1595 .out(spare3_inv_32x_unused));
1596
1597cl_sc1_msff_8x spare4_flop (.l1clk(l1clk),
1598 .siclk(siclk),
1599 .soclk(soclk),
1600 .si(si_4),
1601 .so(so_4),
1602 .d(1'b0),
1603 .q(spare4_flop_unused));
1604assign si_4 = so_3;
1605
1606cl_u1_buf_32x spare4_buf_32x (.in(1'b1),
1607 .out(spare4_buf_32x_unused));
1608cl_u1_nand3_8x spare4_nand3_8x (.in0(1'b1),
1609 .in1(1'b1),
1610 .in2(1'b1),
1611 .out(spare4_nand3_8x_unused));
1612cl_u1_inv_8x spare4_inv_8x (.in(1'b1),
1613 .out(spare4_inv_8x_unused));
1614cl_u1_aoi22_4x spare4_aoi22_4x (.in00(1'b1),
1615 .in01(1'b1),
1616 .in10(1'b1),
1617 .in11(1'b1),
1618 .out(spare4_aoi22_4x_unused));
1619cl_u1_buf_8x spare4_buf_8x (.in(1'b1),
1620 .out(spare4_buf_8x_unused));
1621cl_u1_oai22_4x spare4_oai22_4x (.in00(1'b1),
1622 .in01(1'b1),
1623 .in10(1'b1),
1624 .in11(1'b1),
1625 .out(spare4_oai22_4x_unused));
1626cl_u1_inv_16x spare4_inv_16x (.in(1'b1),
1627 .out(spare4_inv_16x_unused));
1628cl_u1_nand2_16x spare4_nand2_16x (.in0(1'b1),
1629 .in1(1'b1),
1630 .out(spare4_nand2_16x_unused));
1631cl_u1_nor3_4x spare4_nor3_4x (.in0(1'b0),
1632 .in1(1'b0),
1633 .in2(1'b0),
1634 .out(spare4_nor3_4x_unused));
1635cl_u1_nand2_8x spare4_nand2_8x (.in0(1'b1),
1636 .in1(1'b1),
1637 .out(spare4_nand2_8x_unused));
1638cl_u1_buf_16x spare4_buf_16x (.in(1'b1),
1639 .out(spare4_buf_16x_unused));
1640cl_u1_nor2_16x spare4_nor2_16x (.in0(1'b0),
1641 .in1(1'b0),
1642 .out(spare4_nor2_16x_unused));
1643cl_u1_inv_32x spare4_inv_32x (.in(1'b1),
1644 .out(spare4_inv_32x_unused));
1645
1646cl_sc1_msff_8x spare5_flop (.l1clk(l1clk),
1647 .siclk(siclk),
1648 .soclk(soclk),
1649 .si(si_5),
1650 .so(so_5),
1651 .d(1'b0),
1652 .q(spare5_flop_unused));
1653assign si_5 = so_4;
1654
1655cl_u1_buf_32x spare5_buf_32x (.in(1'b1),
1656 .out(spare5_buf_32x_unused));
1657cl_u1_nand3_8x spare5_nand3_8x (.in0(1'b1),
1658 .in1(1'b1),
1659 .in2(1'b1),
1660 .out(spare5_nand3_8x_unused));
1661cl_u1_inv_8x spare5_inv_8x (.in(1'b1),
1662 .out(spare5_inv_8x_unused));
1663cl_u1_aoi22_4x spare5_aoi22_4x (.in00(1'b1),
1664 .in01(1'b1),
1665 .in10(1'b1),
1666 .in11(1'b1),
1667 .out(spare5_aoi22_4x_unused));
1668cl_u1_buf_8x spare5_buf_8x (.in(1'b1),
1669 .out(spare5_buf_8x_unused));
1670cl_u1_oai22_4x spare5_oai22_4x (.in00(1'b1),
1671 .in01(1'b1),
1672 .in10(1'b1),
1673 .in11(1'b1),
1674 .out(spare5_oai22_4x_unused));
1675cl_u1_inv_16x spare5_inv_16x (.in(1'b1),
1676 .out(spare5_inv_16x_unused));
1677cl_u1_nand2_16x spare5_nand2_16x (.in0(1'b1),
1678 .in1(1'b1),
1679 .out(spare5_nand2_16x_unused));
1680cl_u1_nor3_4x spare5_nor3_4x (.in0(1'b0),
1681 .in1(1'b0),
1682 .in2(1'b0),
1683 .out(spare5_nor3_4x_unused));
1684cl_u1_nand2_8x spare5_nand2_8x (.in0(1'b1),
1685 .in1(1'b1),
1686 .out(spare5_nand2_8x_unused));
1687cl_u1_buf_16x spare5_buf_16x (.in(1'b1),
1688 .out(spare5_buf_16x_unused));
1689cl_u1_nor2_16x spare5_nor2_16x (.in0(1'b0),
1690 .in1(1'b0),
1691 .out(spare5_nor2_16x_unused));
1692cl_u1_inv_32x spare5_inv_32x (.in(1'b1),
1693 .out(spare5_inv_32x_unused));
1694
1695cl_sc1_msff_8x spare6_flop (.l1clk(l1clk),
1696 .siclk(siclk),
1697 .soclk(soclk),
1698 .si(si_6),
1699 .so(so_6),
1700 .d(1'b0),
1701 .q(spare6_flop_unused));
1702assign si_6 = so_5;
1703
1704cl_u1_buf_32x spare6_buf_32x (.in(1'b1),
1705 .out(spare6_buf_32x_unused));
1706cl_u1_nand3_8x spare6_nand3_8x (.in0(1'b1),
1707 .in1(1'b1),
1708 .in2(1'b1),
1709 .out(spare6_nand3_8x_unused));
1710cl_u1_inv_8x spare6_inv_8x (.in(1'b1),
1711 .out(spare6_inv_8x_unused));
1712cl_u1_aoi22_4x spare6_aoi22_4x (.in00(1'b1),
1713 .in01(1'b1),
1714 .in10(1'b1),
1715 .in11(1'b1),
1716 .out(spare6_aoi22_4x_unused));
1717cl_u1_buf_8x spare6_buf_8x (.in(1'b1),
1718 .out(spare6_buf_8x_unused));
1719cl_u1_oai22_4x spare6_oai22_4x (.in00(1'b1),
1720 .in01(1'b1),
1721 .in10(1'b1),
1722 .in11(1'b1),
1723 .out(spare6_oai22_4x_unused));
1724cl_u1_inv_16x spare6_inv_16x (.in(1'b1),
1725 .out(spare6_inv_16x_unused));
1726cl_u1_nand2_16x spare6_nand2_16x (.in0(1'b1),
1727 .in1(1'b1),
1728 .out(spare6_nand2_16x_unused));
1729cl_u1_nor3_4x spare6_nor3_4x (.in0(1'b0),
1730 .in1(1'b0),
1731 .in2(1'b0),
1732 .out(spare6_nor3_4x_unused));
1733cl_u1_nand2_8x spare6_nand2_8x (.in0(1'b1),
1734 .in1(1'b1),
1735 .out(spare6_nand2_8x_unused));
1736cl_u1_buf_16x spare6_buf_16x (.in(1'b1),
1737 .out(spare6_buf_16x_unused));
1738cl_u1_nor2_16x spare6_nor2_16x (.in0(1'b0),
1739 .in1(1'b0),
1740 .out(spare6_nor2_16x_unused));
1741cl_u1_inv_32x spare6_inv_32x (.in(1'b1),
1742 .out(spare6_inv_32x_unused));
1743
1744cl_sc1_msff_8x spare7_flop (.l1clk(l1clk),
1745 .siclk(siclk),
1746 .soclk(soclk),
1747 .si(si_7),
1748 .so(so_7),
1749 .d(1'b0),
1750 .q(spare7_flop_unused));
1751assign si_7 = so_6;
1752
1753cl_u1_buf_32x spare7_buf_32x (.in(1'b1),
1754 .out(spare7_buf_32x_unused));
1755cl_u1_nand3_8x spare7_nand3_8x (.in0(1'b1),
1756 .in1(1'b1),
1757 .in2(1'b1),
1758 .out(spare7_nand3_8x_unused));
1759cl_u1_inv_8x spare7_inv_8x (.in(1'b1),
1760 .out(spare7_inv_8x_unused));
1761cl_u1_aoi22_4x spare7_aoi22_4x (.in00(1'b1),
1762 .in01(1'b1),
1763 .in10(1'b1),
1764 .in11(1'b1),
1765 .out(spare7_aoi22_4x_unused));
1766cl_u1_buf_8x spare7_buf_8x (.in(1'b1),
1767 .out(spare7_buf_8x_unused));
1768cl_u1_oai22_4x spare7_oai22_4x (.in00(1'b1),
1769 .in01(1'b1),
1770 .in10(1'b1),
1771 .in11(1'b1),
1772 .out(spare7_oai22_4x_unused));
1773cl_u1_inv_16x spare7_inv_16x (.in(1'b1),
1774 .out(spare7_inv_16x_unused));
1775cl_u1_nand2_16x spare7_nand2_16x (.in0(1'b1),
1776 .in1(1'b1),
1777 .out(spare7_nand2_16x_unused));
1778cl_u1_nor3_4x spare7_nor3_4x (.in0(1'b0),
1779 .in1(1'b0),
1780 .in2(1'b0),
1781 .out(spare7_nor3_4x_unused));
1782cl_u1_nand2_8x spare7_nand2_8x (.in0(1'b1),
1783 .in1(1'b1),
1784 .out(spare7_nand2_8x_unused));
1785cl_u1_buf_16x spare7_buf_16x (.in(1'b1),
1786 .out(spare7_buf_16x_unused));
1787cl_u1_nor2_16x spare7_nor2_16x (.in0(1'b0),
1788 .in1(1'b0),
1789 .out(spare7_nor2_16x_unused));
1790cl_u1_inv_32x spare7_inv_32x (.in(1'b1),
1791 .out(spare7_inv_32x_unused));
1792
1793cl_sc1_msff_8x spare8_flop (.l1clk(l1clk),
1794 .siclk(siclk),
1795 .soclk(soclk),
1796 .si(si_8),
1797 .so(so_8),
1798 .d(1'b0),
1799 .q(spare8_flop_unused));
1800assign si_8 = so_7;
1801
1802cl_u1_buf_32x spare8_buf_32x (.in(1'b1),
1803 .out(spare8_buf_32x_unused));
1804cl_u1_nand3_8x spare8_nand3_8x (.in0(1'b1),
1805 .in1(1'b1),
1806 .in2(1'b1),
1807 .out(spare8_nand3_8x_unused));
1808cl_u1_inv_8x spare8_inv_8x (.in(1'b1),
1809 .out(spare8_inv_8x_unused));
1810cl_u1_aoi22_4x spare8_aoi22_4x (.in00(1'b1),
1811 .in01(1'b1),
1812 .in10(1'b1),
1813 .in11(1'b1),
1814 .out(spare8_aoi22_4x_unused));
1815cl_u1_buf_8x spare8_buf_8x (.in(1'b1),
1816 .out(spare8_buf_8x_unused));
1817cl_u1_oai22_4x spare8_oai22_4x (.in00(1'b1),
1818 .in01(1'b1),
1819 .in10(1'b1),
1820 .in11(1'b1),
1821 .out(spare8_oai22_4x_unused));
1822cl_u1_inv_16x spare8_inv_16x (.in(1'b1),
1823 .out(spare8_inv_16x_unused));
1824cl_u1_nand2_16x spare8_nand2_16x (.in0(1'b1),
1825 .in1(1'b1),
1826 .out(spare8_nand2_16x_unused));
1827cl_u1_nor3_4x spare8_nor3_4x (.in0(1'b0),
1828 .in1(1'b0),
1829 .in2(1'b0),
1830 .out(spare8_nor3_4x_unused));
1831cl_u1_nand2_8x spare8_nand2_8x (.in0(1'b1),
1832 .in1(1'b1),
1833 .out(spare8_nand2_8x_unused));
1834cl_u1_buf_16x spare8_buf_16x (.in(1'b1),
1835 .out(spare8_buf_16x_unused));
1836cl_u1_nor2_16x spare8_nor2_16x (.in0(1'b0),
1837 .in1(1'b0),
1838 .out(spare8_nor2_16x_unused));
1839cl_u1_inv_32x spare8_inv_32x (.in(1'b1),
1840 .out(spare8_inv_32x_unused));
1841
1842cl_sc1_msff_8x spare9_flop (.l1clk(l1clk),
1843 .siclk(siclk),
1844 .soclk(soclk),
1845 .si(si_9),
1846 .so(so_9),
1847 .d(1'b0),
1848 .q(spare9_flop_unused));
1849assign si_9 = so_8;
1850
1851cl_u1_buf_32x spare9_buf_32x (.in(1'b1),
1852 .out(spare9_buf_32x_unused));
1853cl_u1_nand3_8x spare9_nand3_8x (.in0(1'b1),
1854 .in1(1'b1),
1855 .in2(1'b1),
1856 .out(spare9_nand3_8x_unused));
1857cl_u1_inv_8x spare9_inv_8x (.in(1'b1),
1858 .out(spare9_inv_8x_unused));
1859cl_u1_aoi22_4x spare9_aoi22_4x (.in00(1'b1),
1860 .in01(1'b1),
1861 .in10(1'b1),
1862 .in11(1'b1),
1863 .out(spare9_aoi22_4x_unused));
1864cl_u1_buf_8x spare9_buf_8x (.in(1'b1),
1865 .out(spare9_buf_8x_unused));
1866cl_u1_oai22_4x spare9_oai22_4x (.in00(1'b1),
1867 .in01(1'b1),
1868 .in10(1'b1),
1869 .in11(1'b1),
1870 .out(spare9_oai22_4x_unused));
1871cl_u1_inv_16x spare9_inv_16x (.in(1'b1),
1872 .out(spare9_inv_16x_unused));
1873cl_u1_nand2_16x spare9_nand2_16x (.in0(1'b1),
1874 .in1(1'b1),
1875 .out(spare9_nand2_16x_unused));
1876cl_u1_nor3_4x spare9_nor3_4x (.in0(1'b0),
1877 .in1(1'b0),
1878 .in2(1'b0),
1879 .out(spare9_nor3_4x_unused));
1880cl_u1_nand2_8x spare9_nand2_8x (.in0(1'b1),
1881 .in1(1'b1),
1882 .out(spare9_nand2_8x_unused));
1883cl_u1_buf_16x spare9_buf_16x (.in(1'b1),
1884 .out(spare9_buf_16x_unused));
1885cl_u1_nor2_16x spare9_nor2_16x (.in0(1'b0),
1886 .in1(1'b0),
1887 .out(spare9_nor2_16x_unused));
1888cl_u1_inv_32x spare9_inv_32x (.in(1'b1),
1889 .out(spare9_inv_32x_unused));
1890
1891cl_sc1_msff_8x spare10_flop (.l1clk(l1clk),
1892 .siclk(siclk),
1893 .soclk(soclk),
1894 .si(si_10),
1895 .so(so_10),
1896 .d(1'b0),
1897 .q(spare10_flop_unused));
1898assign si_10 = so_9;
1899
1900cl_u1_buf_32x spare10_buf_32x (.in(1'b1),
1901 .out(spare10_buf_32x_unused));
1902cl_u1_nand3_8x spare10_nand3_8x (.in0(1'b1),
1903 .in1(1'b1),
1904 .in2(1'b1),
1905 .out(spare10_nand3_8x_unused));
1906cl_u1_inv_8x spare10_inv_8x (.in(1'b1),
1907 .out(spare10_inv_8x_unused));
1908cl_u1_aoi22_4x spare10_aoi22_4x (.in00(1'b1),
1909 .in01(1'b1),
1910 .in10(1'b1),
1911 .in11(1'b1),
1912 .out(spare10_aoi22_4x_unused));
1913cl_u1_buf_8x spare10_buf_8x (.in(1'b1),
1914 .out(spare10_buf_8x_unused));
1915cl_u1_oai22_4x spare10_oai22_4x (.in00(1'b1),
1916 .in01(1'b1),
1917 .in10(1'b1),
1918 .in11(1'b1),
1919 .out(spare10_oai22_4x_unused));
1920cl_u1_inv_16x spare10_inv_16x (.in(1'b1),
1921 .out(spare10_inv_16x_unused));
1922cl_u1_nand2_16x spare10_nand2_16x (.in0(1'b1),
1923 .in1(1'b1),
1924 .out(spare10_nand2_16x_unused));
1925cl_u1_nor3_4x spare10_nor3_4x (.in0(1'b0),
1926 .in1(1'b0),
1927 .in2(1'b0),
1928 .out(spare10_nor3_4x_unused));
1929cl_u1_nand2_8x spare10_nand2_8x (.in0(1'b1),
1930 .in1(1'b1),
1931 .out(spare10_nand2_8x_unused));
1932cl_u1_buf_16x spare10_buf_16x (.in(1'b1),
1933 .out(spare10_buf_16x_unused));
1934cl_u1_nor2_16x spare10_nor2_16x (.in0(1'b0),
1935 .in1(1'b0),
1936 .out(spare10_nor2_16x_unused));
1937cl_u1_inv_32x spare10_inv_32x (.in(1'b1),
1938 .out(spare10_inv_32x_unused));
1939assign scan_out = so_10;
1940
1941
1942
1943endmodule
1944
1945
1946
1947
1948
1949
1950// any PARAMS parms go into naming of macro
1951
1952module ncu_i2csd_ctl_l1clkhdr_ctl_macro (
1953 l2clk,
1954 l1en,
1955 pce_ov,
1956 stop,
1957 se,
1958 l1clk);
1959
1960
1961 input l2clk;
1962 input l1en;
1963 input pce_ov;
1964 input stop;
1965 input se;
1966 output l1clk;
1967
1968
1969
1970
1971
1972cl_sc1_l1hdr_8x c_0 (
1973
1974
1975 .l2clk(l2clk),
1976 .pce(l1en),
1977 .l1clk(l1clk),
1978 .se(se),
1979 .pce_ov(pce_ov),
1980 .stop(stop)
1981);
1982
1983
1984
1985endmodule
1986
1987
1988
1989
1990
1991
1992
1993