Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / ncu / rtl / ncu_i2cscd_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: ncu_i2cscd_ctl.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35module ncu_i2cscd_ctl (
36 bounce_ack_packet,
37 bounce_ack_vld,
38 ccu_ncu_data,
39 ccu_ncu_vld,
40 dmu_ncu_data,
41 dmu_ncu_vld,
42 intman_tbl_dout,
43 intman_pchkf2i2c,
44 iobuf_head_f,
45 iol2clk,
46 lhs_intman_acc,
47 mcu0_ncu_data,
48 mcu0_ncu_vld,
49 mcu1_ncu_data,
50 mcu1_ncu_vld,
51 mcu2_ncu_data,
52 mcu2_ncu_vld,
53 mcu3_ncu_data,
54 mcu3_ncu_vld,
55 mondo_busy_vec_f,
56 mondoinvec,
57 ncu_int_ack_packet,
58 ncu_int_ack_vld,
59 ncu_man_ack_packet,
60 ncu_man_ack_vld,
61 ncu_man_int_packet,
62 ncu_man_int_vld,
63 niu_ncu_data,
64 niu_ncu_vld,
65 rcu_ncu_data,
66 rcu_ncu_vld,
67 rd_nack_packet,
68 rd_nack_vld,
69 dbg1_ncu_data,
70 dbg1_ncu_vld,
71 scan_in,
72 sii_ncu_dparity,
73 sii_ncu_data,
74 sii_ncu_req,
75 sii_ncu_syn_data,
76 sii_ncu_syn_vld,
77 srvc_wr_ack,
78 ssi_ncu_data,
79 ssi_ncu_vld,
80 tcu_clk_stop,
81 tcu_ncu_stall,
82 tcu_pce_ov,
83 tcu_scan_en,
84 tcu_aclk,
85 tcu_bclk,
86 tcu_dbr_gateoff,
87 wr_ack_iopkt,
88 mb0_run,
89 mb0_iobuf_wr_en,
90 mb0_addr,
91 mb0_wdata,
92 dmupio_wack_iopkt,
93 dmupio_srvc_wack,
94 bounce_ack_rd,
95 iobuf_avail,
96 iobuf_din,
97 iobuf_tail_ptr,
98 iobuf_tail_s,
99 iobuf_wr,
100 io_intman_addr,
101 io_mondo_data0_din_s,
102 io_mondo_data1_din_s,
103 io_mondo_data_wr_addr_s,
104 io_mondo_data_wr_s,
105 ncu_ccu_stall,
106 ncu_dmu_mondo_ack,
107 ncu_dmu_mondo_id,
108 ncu_dmu_mondo_id_par,
109 ncu_dmu_mondo_nack,
110 ncu_dmu_stall,
111 ncu_int_ack_rd,
112 ncu_man_ack_rd,
113 ncu_man_int_rd,
114 ncu_mcu0_stall,
115 ncu_mcu1_stall,
116 ncu_mcu2_stall,
117 ncu_mcu3_stall,
118 ncu_niu_stall,
119 ncu_rcu_stall,
120 ncu_dbg1_stall,
121 ncu_sii_gnt,
122 ncu_ssi_stall,
123 ncu_tcu_data,
124 ncu_tcu_vld,
125 rd_nack_rd,
126 scan_out,
127 sii_cr_id_rtn,
128 sii_cr_id_rtn_vld,
129 raserrce,
130 raserrue,
131 io_rd_intman_d2,
132 siierrsyn,
133 siierrsyn_done,
134 ncudpsyn,
135 ncuctag_ue,
136 ncuctag_uei,
137 ncuctag_ce,
138 ncuctag_cei,
139 ncusiid_pe,
140 ncusiid_pei) ;
141wire sii_mondo_rd;
142wire ssi_int_rd;
143wire mcu0_int_rd;
144wire mcu1_int_rd;
145wire mcu2_int_rd;
146wire mcu3_int_rd;
147wire niu_int_rd;
148wire siipio_ack_rd;
149wire dmucsr_ack_rd;
150wire ccu_ack_rd;
151wire mcu0_ack_rd;
152wire mcu1_ack_rd;
153wire mcu2_ack_rd;
154wire mcu3_ack_rd;
155wire ssi_ack_rd;
156wire rcu_ack_rd;
157wire dbg1_ack_rd;
158wire niu_ack_rd;
159wire iob_tap_packet_vld;
160wire [6:0] int_sel;
161wire [14:0] ack_sel;
162wire mondo_srvcd_d1;
163wire int_srvcd_d2;
164wire ack_srvcd_d1;
165wire ncu_i2csc_ctl_scanin;
166wire ncu_i2csc_ctl_scanout;
167wire sii_mondo_vld;
168wire [5:0] sii_mondo_target;
169wire sii_mondo_ctagerr;
170wire ssi_int_vld;
171wire mcu0_int_vld;
172wire mcu1_int_vld;
173wire mcu2_int_vld;
174wire mcu3_int_vld;
175wire niu_int_vld;
176wire siipio_ack_vld;
177wire dmucsr_ack_vld;
178wire ccu_ack_vld;
179wire mcu0_ack_vld;
180wire mcu1_ack_vld;
181wire mcu2_ack_vld;
182wire mcu3_ack_vld;
183wire ssi_ack_vld;
184wire rcu_ack_vld;
185wire dbg1_ack_vld;
186wire niu_ack_vld;
187wire tap_iob_busy;
188wire [127:0] ucb_ack_packet_d1;
189wire intman_dout_v;
190wire [127:0] iob_tap_packet;
191wire ncu_i2csd_ctl_scanin;
192wire ncu_i2csd_ctl_scanout;
193wire [63:0] sii_mondo_data0;
194wire [63:0] sii_mondo_data1;
195wire [24:0] ssi_int_packet;
196wire [24:0] mcu0_int_packet;
197wire [24:0] mcu1_int_packet;
198wire [24:0] mcu2_int_packet;
199wire [24:0] mcu3_int_packet;
200wire [24:0] niu_int_packet;
201wire [139:0] siipio_ack_packet;
202wire [127:0] dmucsr_ack_packet;
203wire [127:0] ccu_ack_packet;
204wire [127:0] mcu0_ack_packet;
205wire [127:0] mcu1_ack_packet;
206wire [127:0] mcu2_ack_packet;
207wire [127:0] mcu3_ack_packet;
208wire [127:0] ssi_ack_packet;
209wire [127:0] rcu_ack_packet;
210wire [127:0] dbg1_ack_packet;
211wire [127:0] niu_ack_packet;
212wire tcu_ucb_buf_scanin;
213wire tcu_ucb_buf_scanout;
214wire sii_ucb_buf_scanin;
215wire sii_ucb_buf_scanout;
216wire dmucsr_ucb_buf_scanin;
217wire dmucsr_ucb_buf_scanout;
218wire ssi_ucb_buf_scanin;
219wire ssi_ucb_buf_scanout;
220wire mcu0_ucb_buf_scanin;
221wire mcu0_ucb_buf_scanout;
222wire mcu1_ucb_buf_scanin;
223wire mcu1_ucb_buf_scanout;
224wire mcu2_ucb_buf_scanin;
225wire mcu2_ucb_buf_scanout;
226wire mcu3_ucb_buf_scanin;
227wire mcu3_ucb_buf_scanout;
228wire ccu_ucb_buf_scanin;
229wire ccu_ucb_buf_scanout;
230wire rcu_ucb_buf_scanin;
231wire rcu_ucb_buf_scanout;
232wire dbg1_ucb_buf_scanin;
233wire dbg1_ucb_buf_scanout;
234wire niu_ucb_buf_scanin;
235wire niu_ucb_buf_scanout;
236
237
238input [127:0] bounce_ack_packet; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
239input bounce_ack_vld; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
240input [3:0] ccu_ncu_data; // To ccu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
241input ccu_ncu_vld; // To ccu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
242input [31:0] dmu_ncu_data; // To dmucsr_ucb_buf of ncu_i2cbuf32_ni_ctl.v
243input dmu_ncu_vld; // To dmucsr_ucb_buf of ncu_i2cbuf32_ni_ctl.v
244input [11:0] intman_tbl_dout; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
245input intman_pchkf2i2c;
246input [5:0] iobuf_head_f; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
247input iol2clk; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
248input lhs_intman_acc; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
249input [3:0] mcu0_ncu_data; // To mcu0_ucb_buf of ncu_i2cbuf4_ctl.v
250input mcu0_ncu_vld; // To mcu0_ucb_buf of ncu_i2cbuf4_ctl.v
251input [3:0] mcu1_ncu_data; // To mcu1_ucb_buf of ncu_i2cbuf4_ctl.v
252input mcu1_ncu_vld; // To mcu1_ucb_buf of ncu_i2cbuf4_ctl.v
253input [3:0] mcu2_ncu_data; // To mcu2_ucb_buf of ncu_i2cbuf4_ctl.v
254input mcu2_ncu_vld; // To mcu2_ucb_buf of ncu_i2cbuf4_ctl.v
255input [3:0] mcu3_ncu_data; // To mcu3_ucb_buf of ncu_i2cbuf4_ctl.v
256input mcu3_ncu_vld; // To mcu3_ucb_buf of ncu_i2cbuf4_ctl.v
257input [63:0] mondo_busy_vec_f; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
258input [5:0] mondoinvec; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
259input [127:0] ncu_int_ack_packet; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
260input ncu_int_ack_vld; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
261input [127:0] ncu_man_ack_packet; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
262input ncu_man_ack_vld; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
263input [24:0] ncu_man_int_packet; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
264input ncu_man_int_vld; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
265input [31:0] niu_ncu_data; // To niu_ucb_buf of ncu_i2cbuf32_ctl.v
266input niu_ncu_vld; // To niu_ucb_buf of ncu_i2cbuf32_ctl.v
267input [3:0] rcu_ncu_data; // To rcu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
268input rcu_ncu_vld; // To rcu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
269input [63:0] rd_nack_packet; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
270input rd_nack_vld; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
271//input [3:0] rng_ncu_data; // To rng_ucb_buf of ncu_i2cbuf4_ni_ctl.v
272//input rng_ncu_vld; // To rng_ucb_buf of ncu_i2cbuf4_ni_ctl.v
273input [3:0] dbg1_ncu_data; // To dbg1_ucb_buf of ncu_i2cbuf4_ni_ctl.v
274input dbg1_ncu_vld; // To dbg1_ucb_buf of ncu_i2cbuf4_ni_ctl.v
275input scan_in; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
276input [1:0] sii_ncu_dparity;
277input [31:0] sii_ncu_data; // To sii_ucb_buf of ncu_i2cbufsii_ctl.v
278input sii_ncu_req; // To sii_ucb_buf of ncu_i2cbufsii_ctl.v
279input [3:0] sii_ncu_syn_data;
280input sii_ncu_syn_vld;
281input srvc_wr_ack; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v
282input [3:0] ssi_ncu_data; // To ssi_ucb_buf of ncu_i2cbuf4_ctl.v
283input ssi_ncu_vld; // To ssi_ucb_buf of ncu_i2cbuf4_ctl.v
284input tcu_clk_stop; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
285input tcu_ncu_stall; // To tcu_ucb_buf of ncu_ucbbusout8_ctl.v
286input tcu_pce_ov; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
287input tcu_scan_en; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
288input tcu_aclk; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
289input tcu_bclk; // To ncu_i2csc_ctl of ncu_i2csc_ctl.v, ...
290input tcu_dbr_gateoff;
291input [152:0] wr_ack_iopkt; // To ncu_i2csd_ctl of ncu_i2csd_ctl.v
292input mb0_run;
293input mb0_iobuf_wr_en;
294input [5:0] mb0_addr;
295input [7:0] mb0_wdata;
296input [152:0] dmupio_wack_iopkt;
297input dmupio_srvc_wack;
298
299output bounce_ack_rd; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
300output iobuf_avail; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
301output [175:0] iobuf_din; // From ncu_i2csd_ctl of ncu_i2csd_ctl.v
302output [4:0] iobuf_tail_ptr; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
303output [5:0] iobuf_tail_s; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
304output iobuf_wr; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
305output [6:0] io_intman_addr; // From ncu_i2csd_ctl of ncu_i2csd_ctl.v
306output [63:0] io_mondo_data0_din_s; // From ncu_i2csd_ctl of ncu_i2csd_ctl.v
307output [63:0] io_mondo_data1_din_s; // From ncu_i2csd_ctl of ncu_i2csd_ctl.v
308output [5:0] io_mondo_data_wr_addr_s;// From ncu_i2csd_ctl of ncu_i2csd_ctl.v
309output io_mondo_data_wr_s; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
310output ncu_ccu_stall; // From ccu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
311output ncu_dmu_mondo_ack; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
312output [5:0] ncu_dmu_mondo_id; // From sii_ucb_buf of ncu_i2cbufsii_ctl.v
313output ncu_dmu_mondo_id_par;
314output ncu_dmu_mondo_nack; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
315output ncu_dmu_stall; // From dmucsr_ucb_buf of ncu_i2cbuf32_ni_ctl.v
316output ncu_int_ack_rd; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
317output ncu_man_ack_rd; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
318output ncu_man_int_rd; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
319output ncu_mcu0_stall; // From mcu0_ucb_buf of ncu_i2cbuf4_ctl.v
320output ncu_mcu1_stall; // From mcu1_ucb_buf of ncu_i2cbuf4_ctl.v
321output ncu_mcu2_stall; // From mcu2_ucb_buf of ncu_i2cbuf4_ctl.v
322output ncu_mcu3_stall; // From mcu3_ucb_buf of ncu_i2cbuf4_ctl.v
323output ncu_niu_stall; // From niu_ucb_buf of ncu_i2cbuf32_ctl.v
324output ncu_rcu_stall; // From rcu_ucb_buf of ncu_i2cbuf4_ni_ctl.v
325output ncu_dbg1_stall; // From dbg1_ucb_buf of ncu_i2cbuf4_ni_ctl.v
326//output ncu_rng_stall; // From rng_ucb_buf of ncu_i2cbuf4_ni_ctl.v
327output ncu_sii_gnt; // From sii_ucb_buf of ncu_i2cbufsii_ctl.v
328output ncu_ssi_stall; // From ssi_ucb_buf of ncu_i2cbuf4_ctl.v
329output [7:0] ncu_tcu_data; // From tcu_ucb_buf of ncu_ucbbusout8_ctl.v
330output ncu_tcu_vld; // From tcu_ucb_buf of ncu_ucbbusout8_ctl.v
331output rd_nack_rd; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
332output scan_out; // From niu_ucb_buf of ncu_i2cbuf32_ctl.v
333output [3:0] sii_cr_id_rtn; // From sii_ucb_buf of ncu_i2cbufsii_ctl.v
334output sii_cr_id_rtn_vld; // From sii_ucb_buf of ncu_i2cbufsii_ctl.v
335
336// err ecc //
337input raserrce;
338input raserrue;
339output io_rd_intman_d2; // From ncu_i2csc_ctl of ncu_i2csc_ctl.v
340output [63:0] siierrsyn;
341output siierrsyn_done;
342
343output [15:0] ncudpsyn;
344output ncuctag_ue;
345input ncuctag_uei;
346output ncuctag_ce;
347input ncuctag_cei;
348output ncusiid_pe;
349input ncusiid_pei;
350
351/* autowire */
352
353
354///* ncu_i2csc_ctl auto_template (
355// .scan_out() ); */
356ncu_i2csc_ctl ncu_i2csc_ctl (/*AUTOINST*/
357 // Outputs
358 .sii_mondo_rd(sii_mondo_rd),
359 .ncu_dmu_mondo_ack(ncu_dmu_mondo_ack),
360 .ncu_dmu_mondo_nack(ncu_dmu_mondo_nack),
361 .ssi_int_rd(ssi_int_rd),
362 .mcu0_int_rd(mcu0_int_rd),
363 .mcu1_int_rd(mcu1_int_rd),
364 .mcu2_int_rd(mcu2_int_rd),
365 .mcu3_int_rd(mcu3_int_rd),
366 .niu_int_rd(niu_int_rd),
367 .ncu_man_int_rd(ncu_man_int_rd),
368 .siipio_ack_rd(siipio_ack_rd),
369 .dmucsr_ack_rd(dmucsr_ack_rd),
370 .ccu_ack_rd(ccu_ack_rd),
371 .mcu0_ack_rd(mcu0_ack_rd),
372 .mcu1_ack_rd(mcu1_ack_rd),
373 .mcu2_ack_rd(mcu2_ack_rd),
374 .mcu3_ack_rd(mcu3_ack_rd),
375 .ssi_ack_rd(ssi_ack_rd),
376 .rcu_ack_rd(rcu_ack_rd),
377 .dbg1_ack_rd(dbg1_ack_rd),
378 .niu_ack_rd(niu_ack_rd),
379 .ncu_man_ack_rd(ncu_man_ack_rd),
380 .ncu_int_ack_rd(ncu_int_ack_rd),
381 .bounce_ack_rd(bounce_ack_rd),
382 .rd_nack_rd(rd_nack_rd),
383 .iob_tap_packet_vld(iob_tap_packet_vld),
384 .int_sel (int_sel[6:0]),
385 .ack_sel (ack_sel[14:0]),
386 .mondo_srvcd_d1(mondo_srvcd_d1),
387 .int_srvcd_d2(int_srvcd_d2),
388 .ack_srvcd_d1(ack_srvcd_d1),
389 .iobuf_tail_s(iobuf_tail_s[5:0]),
390 .io_mondo_data_wr_s(io_mondo_data_wr_s),
391 .iobuf_avail(iobuf_avail),
392 .iobuf_wr (iobuf_wr),
393 .iobuf_tail_ptr(iobuf_tail_ptr[4:0]),
394 // Inputs
395 .tcu_dbr_gateoff(tcu_dbr_gateoff),
396 .scan_in(ncu_i2csc_ctl_scanin),
397 .scan_out(ncu_i2csc_ctl_scanout),
398 .iol2clk (iol2clk),
399 .tcu_pce_ov(tcu_pce_ov),
400 .tcu_clk_stop(tcu_clk_stop),
401 .tcu_scan_en(tcu_scan_en),
402 .tcu_aclk (tcu_aclk),
403 .tcu_bclk (tcu_bclk),
404 .sii_mondo_vld(sii_mondo_vld),
405 .sii_mondo_target(sii_mondo_target[5:0]),
406 .sii_mondo_ctagerr(sii_mondo_ctagerr),
407 .ssi_int_vld(ssi_int_vld),
408 .mcu0_int_vld(mcu0_int_vld),
409 .mcu1_int_vld(mcu1_int_vld),
410 .mcu2_int_vld(mcu2_int_vld),
411 .mcu3_int_vld(mcu3_int_vld),
412 .niu_int_vld(niu_int_vld),
413 .ncu_man_int_vld(ncu_man_int_vld),
414 .siipio_ack_vld(siipio_ack_vld),
415 .dmucsr_ack_vld(dmucsr_ack_vld),
416 .ccu_ack_vld(ccu_ack_vld),
417 .mcu0_ack_vld(mcu0_ack_vld),
418 .mcu1_ack_vld(mcu1_ack_vld),
419 .mcu2_ack_vld(mcu2_ack_vld),
420 .mcu3_ack_vld(mcu3_ack_vld),
421 .ssi_ack_vld(ssi_ack_vld),
422 .rcu_ack_vld(rcu_ack_vld),
423 .dbg1_ack_vld(dbg1_ack_vld),
424 .niu_ack_vld(niu_ack_vld),
425 .ncu_man_ack_vld(ncu_man_ack_vld),
426 .ncu_int_ack_vld(ncu_int_ack_vld),
427 .bounce_ack_vld(bounce_ack_vld),
428 .rd_nack_vld(rd_nack_vld),
429 .tap_iob_busy(tap_iob_busy),
430 .ucb_ack_packet_d1(ucb_ack_packet_d1[127:0]),
431 .iobuf_head_f(iobuf_head_f[5:0]),
432 .mondo_busy_vec_f(mondo_busy_vec_f[63:0]),
433 .srvc_wr_ack(srvc_wr_ack),
434 .dmupio_srvc_wack(dmupio_srvc_wack),
435 .lhs_intman_acc(lhs_intman_acc),
436 .intman_pchkf2i2c(intman_pchkf2i2c),
437 .intman_dout_v(intman_dout_v),
438 .mb0_waddr (mb0_addr[5:0]),
439 .mb0_run(mb0_run),
440 .mb0_iobuf_wr_en(mb0_iobuf_wr_en));
441
442
443
444///*ncu_i2csd_ctl auto_template (
445// .scan_out() ); */
446ncu_i2csd_ctl ncu_i2csd_ctl (/*AUTOINST*/
447 // Outputs
448 .io_mondo_data_wr_addr_s(io_mondo_data_wr_addr_s[5:0]),
449 .io_mondo_data0_din_s(io_mondo_data0_din_s[63:0]),
450 .io_mondo_data1_din_s(io_mondo_data1_din_s[63:0]),
451 .io_intman_addr(io_intman_addr[6:0]),
452 .ucb_ack_packet_d1(ucb_ack_packet_d1[127:0]),
453 .iobuf_din (iobuf_din[175:0]),
454 .iob_tap_packet(iob_tap_packet[127:0]),
455 .io_rd_intman_d2(io_rd_intman_d2),
456 .intman_dout_v(intman_dout_v),
457 // Inputs
458 .scan_in(ncu_i2csd_ctl_scanin),
459 .scan_out(ncu_i2csd_ctl_scanout),
460 .iol2clk (iol2clk),
461 .tcu_pce_ov(tcu_pce_ov),
462 .tcu_clk_stop(tcu_clk_stop),
463 .tcu_scan_en(tcu_scan_en),
464 .tcu_aclk (tcu_aclk),
465 .tcu_bclk (tcu_bclk),
466 .sii_mondo_data0(sii_mondo_data0[63:0]),
467 .sii_mondo_data1(sii_mondo_data1[63:0]),
468 .sii_mondo_target(sii_mondo_target[5:0]),
469 .sii_mondo_ctagerr(sii_mondo_ctagerr),
470 .ssi_int_packet(ssi_int_packet[24:0]),
471 .mcu0_int_packet(mcu0_int_packet[24:0]),
472 .mcu1_int_packet(mcu1_int_packet[24:0]),
473 .mcu2_int_packet(mcu2_int_packet[24:0]),
474 .mcu3_int_packet(mcu3_int_packet[24:0]),
475 .niu_int_packet(niu_int_packet[24:0]),
476 .ncu_man_int_packet(ncu_man_int_packet[24:0]),
477 .siipio_ack_packet(siipio_ack_packet[139:0]),
478 .dmucsr_ack_packet(dmucsr_ack_packet[127:0]),
479 .ccu_ack_packet(ccu_ack_packet[127:0]),
480 .mcu0_ack_packet(mcu0_ack_packet[127:0]),
481 .mcu1_ack_packet(mcu1_ack_packet[127:0]),
482 .mcu2_ack_packet(mcu2_ack_packet[127:0]),
483 .mcu3_ack_packet(mcu3_ack_packet[127:0]),
484 .ssi_ack_packet(ssi_ack_packet[127:0]),
485 .rcu_ack_packet(rcu_ack_packet[127:0]),
486 .dbg1_ack_packet(dbg1_ack_packet[127:0]),
487 .niu_ack_packet(niu_ack_packet[127:0]),
488 .ncu_man_ack_packet(ncu_man_ack_packet[127:0]),
489 .ncu_int_ack_packet(ncu_int_ack_packet[127:0]),
490 .bounce_ack_packet(bounce_ack_packet[127:0]),
491 .rd_nack_packet(rd_nack_packet[63:0]),
492 .intman_tbl_dout(intman_tbl_dout[11:0]),
493 .int_sel (int_sel[6:0]),
494 .ack_sel (ack_sel[14:0]),
495 .mondo_srvcd_d1(mondo_srvcd_d1),
496 .int_srvcd_d2(int_srvcd_d2),
497 .ack_srvcd_d1(ack_srvcd_d1),
498 .raserrce(raserrce),
499 .raserrue(raserrue),
500 .mb0_addr(mb0_addr[5:0]),
501 .mb0_wdata(mb0_wdata[7:0]),
502 .mb0_run(mb0_run),
503 .mb0_iobuf_wr_en(mb0_iobuf_wr_en),
504 .wr_ack_iopkt(wr_ack_iopkt[152:0]),
505 .dmupio_wack_iopkt(dmupio_wack_iopkt[152:0]),
506 .srvc_wr_ack(srvc_wr_ack),
507 .mondoinvec(mondoinvec[5:0]));
508
509
510
511/*****************************************************************
512 * outbound to TAP
513 *****************************************************************/
514///* ncu_i2cbuftcu_ctl auto_template (
515// .scan_out (),
516// .vld (ncu_tcu_vld),
517// .data (ncu_tcu_data[7:0]),
518// .stall (tcu_ncu_stall) ) ; */
519ncu_i2cbuftcu_ctl tcu_ucb_buf (/*AUTOINST*/
520 // Outputs
521 .vld (ncu_tcu_vld), // Templated
522 .data (ncu_tcu_data[7:0]), // Templated
523 .tap_iob_busy(tap_iob_busy),
524 // Inputs
525 .scan_in(tcu_ucb_buf_scanin),
526 .scan_out(tcu_ucb_buf_scanout),
527 .iol2clk (iol2clk),
528 .tcu_pce_ov(tcu_pce_ov),
529 .tcu_clk_stop(tcu_clk_stop),
530 .tcu_scan_en(tcu_scan_en),
531 .tcu_aclk(tcu_aclk),
532 .tcu_bclk(tcu_bclk),
533 .stall (tcu_ncu_stall), // Templated
534 .iob_tap_packet(iob_tap_packet[127:0]),
535 .iob_tap_packet_vld(iob_tap_packet_vld));
536
537
538
539
540/*****************************************************************
541 * inbound sii ucb buffers
542 *****************************************************************/
543///* ncu_i2cbufsii_ctl auto_template (
544// .scan_out (),
545// .req_ack_obj (siipio_ack_packet[139:0]),
546// .req_ack_vld (siipio_ack_vld),
547// .rd_req_ack_dbl_buf (siipio_ack_rd)); */
548ncu_i2cbufsii_ctl sii_ucb_buf (/*AUTOINST*/
549 // Outputs
550 .ncu_sii_gnt(ncu_sii_gnt),
551 .sii_mondo_vld(sii_mondo_vld),
552 .sii_mondo_data0(sii_mondo_data0[63:0]),
553 .sii_mondo_data1(sii_mondo_data1[63:0]),
554 .sii_mondo_target(sii_mondo_target[5:0]),
555 .sii_mondo_ctagerr(sii_mondo_ctagerr),
556 .ncu_dmu_mondo_id(ncu_dmu_mondo_id[5:0]),
557 .ncu_dmu_mondo_id_par(ncu_dmu_mondo_id_par),
558 .sii_cr_id_rtn(sii_cr_id_rtn[3:0]),
559 .sii_cr_id_rtn_vld(sii_cr_id_rtn_vld),
560 .req_ack_obj(siipio_ack_packet[139:0]), // Templated
561 .req_ack_vld(siipio_ack_vld), // Templated
562 .ncuctag_ue(ncuctag_ue),
563 .ncuctag_ce(ncuctag_ce),
564 .ncusiid_pe(ncusiid_pe),
565 .ncudpsyn(ncudpsyn[15:0]),
566 .siierrsyn(siierrsyn[63:0]),
567 .siierrsyn_done(siierrsyn_done),
568 // Inputs
569 .scan_in(sii_ucb_buf_scanin),
570 .scan_out(sii_ucb_buf_scanout),
571 .iol2clk(iol2clk),
572 .tcu_pce_ov(tcu_pce_ov),
573 .tcu_clk_stop(tcu_clk_stop),
574 .tcu_scan_en(tcu_scan_en),
575 .tcu_aclk(tcu_aclk),
576 .tcu_bclk(tcu_bclk),
577 .sii_ncu_data(sii_ncu_data[31:0]),
578 .sii_ncu_dparity(sii_ncu_dparity[1:0]),
579 .sii_ncu_req(sii_ncu_req),
580 .sii_ncu_syn_data(sii_ncu_syn_data[3:0]),
581 .sii_ncu_syn_vld(sii_ncu_syn_vld),
582 .sii_mondo_rd(sii_mondo_rd),
583 .rd_req_ack_dbl_buf(siipio_ack_rd), // Templated
584 .ncuctag_uei(ncuctag_uei),
585 .ncuctag_cei(ncuctag_cei),
586 .ncusiid_pei(ncusiid_pei));
587
588
589
590/*****************************************************************
591 * inbound dmucsr ucb buffers (no support to int)
592 *****************************************************************/
593///* ncu_i2cbuf32_ni_ctl auto_template
594// (
595// .scan_out (),
596// .ucb_iob_vld (dmu_ncu_vld),
597// .ucb_iob_data (dmu_ncu_data[31:0]),
598// .iob_ucb_stall (ncu_dmu_stall),
599// ////
600// .req_ack_obj (dmucsr_ack_packet[127:0]),
601// .req_ack_vld (dmucsr_ack_vld),
602// .rd_req_ack_dbl_buf (dmucsr_ack_rd),); */
603ncu_i2cbuf32_ni_ctl dmucsr_ucb_buf (/*AUTOINST*/
604 // Outputs
605 .iob_ucb_stall(ncu_dmu_stall), // Templated
606 .req_ack_obj(dmucsr_ack_packet[127:0]), // Templated
607 .req_ack_vld(dmucsr_ack_vld), // Templated
608 // Inputs
609 .tcu_dbr_gateoff(tcu_dbr_gateoff),
610 .scan_in(dmucsr_ucb_buf_scanin),
611 .scan_out(dmucsr_ucb_buf_scanout),
612 .iol2clk(iol2clk),
613 .tcu_pce_ov(tcu_pce_ov),
614 .tcu_clk_stop(tcu_clk_stop),
615 .tcu_scan_en(tcu_scan_en),
616 .tcu_aclk(tcu_aclk),
617 .tcu_bclk(tcu_bclk),
618 .ucb_iob_vld(dmu_ncu_vld), // Templated
619 .ucb_iob_data(dmu_ncu_data[31:0]), // Templated
620 .rd_req_ack_dbl_buf(dmucsr_ack_rd)); // Templated
621
622
623
624/*****************************************************************
625 * inbound ssi ucb buffers
626 *****************************************************************/
627///* ncu_i2cbuf4_ctl auto_template (
628// .scan_out (),
629// .ucb_iob_vld (ssi_ncu_vld),
630// .ucb_iob_data (ssi_ncu_data[3:0]),
631// .iob_ucb_stall (ncu_ssi_stall),
632// .req_ack_obj (ssi_ack_packet[127:0]),
633// .req_ack_vld (ssi_ack_vld),
634// .rd_req_ack_dbl_buf (ssi_ack_rd),
635// .int_obj (ssi_int_packet[24:0]),
636// .int_vld (ssi_int_vld),
637// .rd_int_dbl_buf (ssi_int_rd)); */
638ncu_i2cbuf4_ctl ssi_ucb_buf (/*AUTOINST*/
639 // Outputs
640 .iob_ucb_stall(ncu_ssi_stall), // Templated
641 .req_ack_obj(ssi_ack_packet[127:0]), // Templated
642 .req_ack_vld(ssi_ack_vld), // Templated
643 .int_obj (ssi_int_packet[24:0]), // Templated
644 .int_vld (ssi_int_vld), // Templated
645 // Inputs
646 .scan_in(ssi_ucb_buf_scanin),
647 .scan_out(ssi_ucb_buf_scanout),
648 .iol2clk (iol2clk),
649 .tcu_pce_ov(tcu_pce_ov),
650 .tcu_clk_stop(tcu_clk_stop),
651 .tcu_scan_en(tcu_scan_en),
652 .tcu_aclk (tcu_aclk),
653 .tcu_bclk (tcu_bclk),
654 .ucb_iob_vld(ssi_ncu_vld), // Templated
655 .ucb_iob_data(ssi_ncu_data[3:0]), // Templated
656 .rd_req_ack_dbl_buf(ssi_ack_rd), // Templated
657 .rd_int_dbl_buf(ssi_int_rd)); // Templated
658
659
660
661/*****************************************************************
662 * inbound mcu0 ucb buffers
663 *****************************************************************/
664///* ncu_i2cbuf4_ctl auto_template (
665// .scan_out (),
666// .ucb_iob_vld (mcu0_ncu_vld),
667// .ucb_iob_data (mcu0_ncu_data[3:0]),
668// .iob_ucb_stall (ncu_mcu0_stall),
669// .req_ack_obj (mcu0_ack_packet[127:0]),
670// .req_ack_vld (mcu0_ack_vld),
671// .rd_req_ack_dbl_buf (mcu0_ack_rd),
672// .int_obj (mcu0_int_packet[24:0]),
673// .int_vld (mcu0_int_vld),
674// .rd_int_dbl_buf (mcu0_int_rd)); */
675ncu_i2cbuf4_ctl mcu0_ucb_buf (/*AUTOINST*/
676 // Outputs
677 .iob_ucb_stall(ncu_mcu0_stall), // Templated
678 .req_ack_obj(mcu0_ack_packet[127:0]), // Templated
679 .req_ack_vld(mcu0_ack_vld), // Templated
680 .int_obj (mcu0_int_packet[24:0]), // Templated
681 .int_vld (mcu0_int_vld), // Templated
682 // Inputs
683 .scan_in(mcu0_ucb_buf_scanin),
684 .scan_out(mcu0_ucb_buf_scanout),
685 .iol2clk (iol2clk),
686 .tcu_pce_ov(tcu_pce_ov),
687 .tcu_clk_stop(tcu_clk_stop),
688 .tcu_scan_en(tcu_scan_en),
689 .tcu_aclk (tcu_aclk),
690 .tcu_bclk (tcu_bclk),
691 .ucb_iob_vld(mcu0_ncu_vld), // Templated
692 .ucb_iob_data(mcu0_ncu_data[3:0]), // Templated
693 .rd_req_ack_dbl_buf(mcu0_ack_rd), // Templated
694 .rd_int_dbl_buf(mcu0_int_rd)); // Templated
695
696
697
698/*****************************************************************
699 * inbound mcu1 ucb buffers
700 *****************************************************************/
701///* ncu_i2cbuf4_ctl auto_template (
702// .scan_out (),
703// .ucb_iob_vld (mcu1_ncu_vld),
704// .ucb_iob_data (mcu1_ncu_data[3:0]),
705// .iob_ucb_stall (ncu_mcu1_stall),
706// .req_ack_obj (mcu1_ack_packet[127:0]),
707// .req_ack_vld (mcu1_ack_vld),
708// .rd_req_ack_dbl_buf (mcu1_ack_rd),
709// .int_obj (mcu1_int_packet[24:0]),
710// .int_vld (mcu1_int_vld),
711// .rd_int_dbl_buf (mcu1_int_rd),); */
712ncu_i2cbuf4_ctl mcu1_ucb_buf (/*AUTOINST*/
713 // Outputs
714 .iob_ucb_stall(ncu_mcu1_stall), // Templated
715 .req_ack_obj(mcu1_ack_packet[127:0]), // Templated
716 .req_ack_vld(mcu1_ack_vld), // Templated
717 .int_obj (mcu1_int_packet[24:0]), // Templated
718 .int_vld (mcu1_int_vld), // Templated
719 // Inputs
720 .scan_in(mcu1_ucb_buf_scanin),
721 .scan_out(mcu1_ucb_buf_scanout),
722 .iol2clk (iol2clk),
723 .tcu_pce_ov(tcu_pce_ov),
724 .tcu_clk_stop(tcu_clk_stop),
725 .tcu_scan_en(tcu_scan_en),
726 .tcu_aclk (tcu_aclk),
727 .tcu_bclk (tcu_bclk),
728 .ucb_iob_vld(mcu1_ncu_vld), // Templated
729 .ucb_iob_data(mcu1_ncu_data[3:0]), // Templated
730 .rd_req_ack_dbl_buf(mcu1_ack_rd), // Templated
731 .rd_int_dbl_buf(mcu1_int_rd)); // Templated
732
733
734
735/*****************************************************************
736 * inbound mcu2 ucb buffers
737 *****************************************************************/
738///* ncu_i2cbuf4_ctl auto_template (
739// .scan_out (),
740// .ucb_iob_vld (mcu2_ncu_vld),
741// .ucb_iob_data (mcu2_ncu_data[3:0]),
742// .iob_ucb_stall (ncu_mcu2_stall),
743// .req_ack_obj (mcu2_ack_packet[127:0]),
744// .req_ack_vld (mcu2_ack_vld),
745// .rd_req_ack_dbl_buf (mcu2_ack_rd),
746// .int_obj (mcu2_int_packet[24:0]),
747// .int_vld (mcu2_int_vld),
748// .rd_int_dbl_buf (mcu2_int_rd),); */
749ncu_i2cbuf4_ctl mcu2_ucb_buf (/*AUTOINST*/
750 // Outputs
751 .iob_ucb_stall(ncu_mcu2_stall), // Templated
752 .req_ack_obj(mcu2_ack_packet[127:0]), // Templated
753 .req_ack_vld(mcu2_ack_vld), // Templated
754 .int_obj (mcu2_int_packet[24:0]), // Templated
755 .int_vld (mcu2_int_vld), // Templated
756 // Inputs
757 .scan_in(mcu2_ucb_buf_scanin),
758 .scan_out(mcu2_ucb_buf_scanout),
759 .iol2clk (iol2clk),
760 .tcu_pce_ov(tcu_pce_ov),
761 .tcu_clk_stop(tcu_clk_stop),
762 .tcu_scan_en(tcu_scan_en),
763 .tcu_aclk (tcu_aclk),
764 .tcu_bclk (tcu_bclk),
765 .ucb_iob_vld(mcu2_ncu_vld), // Templated
766 .ucb_iob_data(mcu2_ncu_data[3:0]), // Templated
767 .rd_req_ack_dbl_buf(mcu2_ack_rd), // Templated
768 .rd_int_dbl_buf(mcu2_int_rd)); // Templated
769
770
771
772/*****************************************************************
773 * inbound mcu3 ucb buffers
774 *****************************************************************/
775///* ncu_i2cbuf4_ctl auto_template (
776// .scan_out (),
777// .ucb_iob_vld (mcu3_ncu_vld),
778// .ucb_iob_data (mcu3_ncu_data[3:0]),
779// .iob_ucb_stall (ncu_mcu3_stall),
780// .req_ack_obj (mcu3_ack_packet[127:0]),
781// .req_ack_vld (mcu3_ack_vld),
782// .rd_req_ack_dbl_buf (mcu3_ack_rd),
783// .int_obj (mcu3_int_packet[24:0]),
784// .int_vld (mcu3_int_vld),
785// .rd_int_dbl_buf (mcu3_int_rd)); */
786ncu_i2cbuf4_ctl mcu3_ucb_buf (/*AUTOINST*/
787 // Outputs
788 .iob_ucb_stall(ncu_mcu3_stall), // Templated
789 .req_ack_obj(mcu3_ack_packet[127:0]), // Templated
790 .req_ack_vld(mcu3_ack_vld), // Templated
791 .int_obj (mcu3_int_packet[24:0]), // Templated
792 .int_vld (mcu3_int_vld), // Templated
793 // Inputs
794 .scan_in(mcu3_ucb_buf_scanin),
795 .scan_out(mcu3_ucb_buf_scanout),
796 .iol2clk (iol2clk),
797 .tcu_pce_ov(tcu_pce_ov),
798 .tcu_clk_stop(tcu_clk_stop),
799 .tcu_scan_en(tcu_scan_en),
800 .tcu_aclk (tcu_aclk),
801 .tcu_bclk (tcu_bclk),
802 .ucb_iob_vld(mcu3_ncu_vld), // Templated
803 .ucb_iob_data(mcu3_ncu_data[3:0]), // Templated
804 .rd_req_ack_dbl_buf(mcu3_ack_rd), // Templated
805 .rd_int_dbl_buf(mcu3_int_rd)); // Templated
806
807
808
809/*****************************************************************
810 * inbound ccu ucb buffers (no int support)
811 *****************************************************************/
812///* ncu_i2cbuf4_ni_ctl auto_template (
813// .scan_out (),
814// .ucb_iob_vld (ccu_ncu_vld),
815// .ucb_iob_data (ccu_ncu_data[3:0]),
816// .iob_ucb_stall (ncu_ccu_stall),
817// .req_ack_obj (ccu_ack_packet[127:0]),
818// .req_ack_vld (ccu_ack_vld),
819// .rd_req_ack_dbl_buf (ccu_ack_rd)); */
820ncu_i2cbuf4_ni_ctl ccu_ucb_buf (/*AUTOINST*/
821 // Outputs
822 .iob_ucb_stall(ncu_ccu_stall), // Templated
823 .req_ack_obj(ccu_ack_packet[127:0]), // Templated
824 .req_ack_vld(ccu_ack_vld), // Templated
825 // Inputs
826 .scan_in(ccu_ucb_buf_scanin),
827 .scan_out(ccu_ucb_buf_scanout),
828 .iol2clk(iol2clk),
829 .tcu_pce_ov(tcu_pce_ov),
830 .tcu_clk_stop(tcu_clk_stop),
831 .tcu_scan_en(tcu_scan_en),
832 .tcu_aclk(tcu_aclk),
833 .tcu_bclk(tcu_bclk),
834 .ucb_iob_vld(ccu_ncu_vld), // Templated
835 .ucb_iob_data(ccu_ncu_data[3:0]), // Templated
836 .rd_req_ack_dbl_buf(ccu_ack_rd)); // Templated
837
838
839
840/*****************************************************************
841 * inbound rcu ucb buffers (no int support)
842 *****************************************************************/
843///* ncu_i2cbuf4_ni_ctl auto_template (
844// .scan_out (),
845// .ucb_iob_vld (rcu_ncu_vld),
846// .ucb_iob_data (rcu_ncu_data[3:0]),
847// .iob_ucb_stall (ncu_rcu_stall),
848// .req_ack_obj (rcu_ack_packet[127:0]),
849// .req_ack_vld (rcu_ack_vld),
850// .rd_req_ack_dbl_buf (rcu_ack_rd)); */
851ncu_i2cbuf4_ni_ctl rcu_ucb_buf (/*AUTOINST*/
852 // Outputs
853 .iob_ucb_stall(ncu_rcu_stall), // Templated
854 .req_ack_obj(rcu_ack_packet[127:0]), // Templated
855 .req_ack_vld(rcu_ack_vld), // Templated
856 // Inputs
857 .scan_in(rcu_ucb_buf_scanin),
858 .scan_out(rcu_ucb_buf_scanout),
859 .iol2clk(iol2clk),
860 .tcu_pce_ov(tcu_pce_ov),
861 .tcu_clk_stop(tcu_clk_stop),
862 .tcu_scan_en(tcu_scan_en),
863 .tcu_aclk(tcu_aclk),
864 .tcu_bclk(tcu_bclk),
865 .ucb_iob_vld(rcu_ncu_vld), // Templated
866 .ucb_iob_data(rcu_ncu_data[3:0]), // Templated
867 .rd_req_ack_dbl_buf(rcu_ack_rd)); // Templated
868
869
870
871/*****************************************************************
872 * inbound rng ucb buffers (no int support)
873 *****************************************************************/
874///* ncu_i2cbuf4_ni_ctl auto_template
875// (
876// .scan_out (),
877// .ucb_iob_vld (rng_ncu_vld),
878// .ucb_iob_data (rng_ncu_data[3:0]),
879// .iob_ucb_stall (ncu_rng_stall),
880// .req_ack_obj (rng_ack_packet[127:0]),
881// .req_ack_vld (rng_ack_vld),
882// .rd_req_ack_dbl_buf (rng_ack_rd)); */
883ncu_i2cbuf4_ni_ctl dbg1_ucb_buf (/*AUTOINST*/
884 // Outputs
885 .iob_ucb_stall(ncu_dbg1_stall), // Templated
886 .req_ack_obj(dbg1_ack_packet[127:0]), // Templated
887 .req_ack_vld(dbg1_ack_vld), // Templated
888 // Inputs
889 .scan_in(dbg1_ucb_buf_scanin),
890 .scan_out(dbg1_ucb_buf_scanout),
891 .iol2clk(iol2clk),
892 .tcu_pce_ov(tcu_pce_ov),
893 .tcu_clk_stop(tcu_clk_stop),
894 .tcu_scan_en(tcu_scan_en),
895 .tcu_aclk(tcu_aclk),
896 .tcu_bclk(tcu_bclk),
897 .ucb_iob_vld(dbg1_ncu_vld), // Templated
898 .ucb_iob_data(dbg1_ncu_data[3:0]), // Templated
899 .rd_req_ack_dbl_buf(dbg1_ack_rd)); // Templated
900
901
902
903
904/*****************************************************************
905 * inbound niu ucb buffers
906 *****************************************************************/
907///* ncu_i2cbuf32_ctl auto_template (
908// .scan_out (),
909// .ucb_iob_vld (niu_ncu_vld),
910// .ucb_iob_data (niu_ncu_data[31:0]),
911// .iob_ucb_stall (ncu_niu_stall),
912// .req_ack_obj (niu_ack_packet[127:0]),
913// .req_ack_vld (niu_ack_vld),
914// .rd_req_ack_dbl_buf (niu_ack_rd),
915// .int_obj (niu_int_packet[24:0]),
916// .int_vld (niu_int_vld),
917// .rd_int_dbl_buf (niu_int_rd)); */
918ncu_i2cbuf32_ctl niu_ucb_buf (/*AUTOINST*/
919 // Outputs
920 .iob_ucb_stall(ncu_niu_stall), // Templated
921 .req_ack_obj(niu_ack_packet[127:0]), // Templated
922 .req_ack_vld(niu_ack_vld), // Templated
923 .int_obj (niu_int_packet[24:0]), // Templated
924 .int_vld (niu_int_vld), // Templated
925 // Inputs
926 .tcu_dbr_gateoff(tcu_dbr_gateoff),
927 .scan_in(niu_ucb_buf_scanin),
928 .scan_out(niu_ucb_buf_scanout),
929 .iol2clk (iol2clk),
930 .tcu_pce_ov(tcu_pce_ov),
931 .tcu_clk_stop(tcu_clk_stop),
932 .tcu_scan_en(tcu_scan_en),
933 .tcu_aclk (tcu_aclk),
934 .tcu_bclk (tcu_bclk),
935 .ucb_iob_vld(niu_ncu_vld), // Templated
936 .ucb_iob_data(niu_ncu_data[31:0]), // Templated
937 .rd_req_ack_dbl_buf(niu_ack_rd), // Templated
938 .rd_int_dbl_buf(niu_int_rd)); // Templated
939
940
941
942
943
944
945// fixscan start:
946assign ncu_i2csc_ctl_scanin = scan_in ;
947assign ncu_i2csd_ctl_scanin = ncu_i2csc_ctl_scanout ;
948assign tcu_ucb_buf_scanin = ncu_i2csd_ctl_scanout ;
949assign sii_ucb_buf_scanin = tcu_ucb_buf_scanout ;
950assign dmucsr_ucb_buf_scanin = sii_ucb_buf_scanout ;
951assign ssi_ucb_buf_scanin = dmucsr_ucb_buf_scanout ;
952assign mcu0_ucb_buf_scanin = ssi_ucb_buf_scanout ;
953assign mcu1_ucb_buf_scanin = mcu0_ucb_buf_scanout ;
954assign mcu2_ucb_buf_scanin = mcu1_ucb_buf_scanout ;
955assign mcu3_ucb_buf_scanin = mcu2_ucb_buf_scanout ;
956assign ccu_ucb_buf_scanin = mcu3_ucb_buf_scanout ;
957assign rcu_ucb_buf_scanin = ccu_ucb_buf_scanout ;
958assign dbg1_ucb_buf_scanin = rcu_ucb_buf_scanout ;
959assign niu_ucb_buf_scanin = dbg1_ucb_buf_scanout ;
960assign scan_out = niu_ucb_buf_scanout ;
961// fixscan end:
962endmodule
963
964
965
966
967
968
969
970
971`define RF_RDEN_OFFSTATE 1'b1
972
973//====================================
974`define NCU_INTMANRF_DEPTH 128
975`define NCU_INTMANRF_DATAWIDTH 16
976`define NCU_INTMANRF_ADDRWIDTH 7
977//====================================
978
979//====================================
980`define NCU_MONDORF_DEPTH 64
981`define NCU_MONDORF_DATAWIDTH 72
982`define NCU_MONDORF_ADDRWIDTH 6
983//====================================
984
985//====================================
986`define NCU_CPUBUFRF_DEPTH 32
987`define NCU_CPUBUFRF_DATAWIDTH 144
988`define NCU_CPUBUFRF_ADDRWIDTH 5
989//====================================
990
991//====================================
992`define NCU_IOBUFRF_DEPTH 32
993`define NCU_IOBUFRF_DATAWIDTH 144
994`define NCU_IOBUFRF_ADDRWIDTH 5
995//====================================
996
997//====================================
998`define NCU_IOBUF1RF_DEPTH 32
999`define NCU_IOBUF1RF_DATAWIDTH 32
1000`define NCU_IOBUF1RF_ADDRWIDTH 5
1001//====================================
1002
1003//====================================
1004`define NCU_INTBUFRF_DEPTH 32
1005`define NCU_INTBUFRF_DATAWIDTH 144
1006`define NCU_INTBUFRF_ADDRWIDTH 5
1007//====================================
1008
1009//== fix me : need to remove when warm //
1010//== becomes available //
1011`define WMR_LENGTH 10'd999
1012`define WMR_LENGTH_P1 10'd1000
1013
1014//// NCU CSR_MAN address 80_0000_xxxx ////
1015`define NCU_CSR_MAN 16'h0000
1016`define NCU_CREG_INTMAN 16'h0000
1017//`define NCU_CREG_INTVECDISP 16'h0800
1018`define NCU_CREG_MONDOINVEC 16'h0a00
1019`define NCU_CREG_SERNUM 16'h1000
1020`define NCU_CREG_FUSESTAT 16'h1008
1021`define NCU_CREG_COREAVAIL 16'h1010
1022`define NCU_CREG_BANKAVAIL 16'h1018
1023`define NCU_CREG_BANK_ENABLE 16'h1020
1024`define NCU_CREG_BANK_ENABLE_STATUS 16'h1028
1025`define NCU_CREG_L2_HASH_ENABLE 16'h1030
1026`define NCU_CREG_L2_HASH_ENABLE_STATUS 16'h1038
1027
1028
1029`define NCU_CREG_MEM32_BASE 16'h2000
1030`define NCU_CREG_MEM32_MASK 16'h2008
1031`define NCU_CREG_MEM64_BASE 16'h2010
1032`define NCU_CREG_MEM64_MASK 16'h2018
1033`define NCU_CREG_IOCON_BASE 16'h2020
1034`define NCU_CREG_IOCON_MASK 16'h2028
1035`define NCU_CREG_MMUFSH 16'h2030
1036
1037`define NCU_CREG_ESR 16'h3000
1038`define NCU_CREG_ELE 16'h3008
1039`define NCU_CREG_EIE 16'h3010
1040`define NCU_CREG_EJR 16'h3018
1041`define NCU_CREG_FEE 16'h3020
1042`define NCU_CREG_PER 16'h3028
1043`define NCU_CREG_SIISYN 16'h3030
1044`define NCU_CREG_NCUSYN 16'h3038
1045`define NCU_CREG_SCKSEL 16'h3040
1046`define NCU_CREG_DBGTRIG_EN 16'h4000
1047
1048//// NUC CSR_MONDO address 80_0004_xxxx ////
1049`define NCU_CSR_MONDO 16'h0004
1050`define NCU_CREG_MDATA0 16'h0000
1051`define NCU_CREG_MDATA1 16'h0200
1052`define NCU_CREG_MDATA0_ALIAS 16'h0400
1053`define NCU_CREG_MDATA1_ALIAS 16'h0600
1054`define NCU_CREG_MBUSY 16'h0800
1055`define NCU_CREG_MBUSY_ALIAS 16'h0a00
1056
1057
1058
1059// ASI shared reg 90_xxxx_xxxx//
1060`define NCU_ASI_A_HIT 10'h104 // 6-bits cpuid and thread id are "x"
1061`define NCU_ASI_B_HIT 10'h1CC // 6-bits cpuid and thread id are "x"
1062`define NCU_ASI_C_HIT 10'h114 // 6-bits cpuid and thread id are "x"
1063`define NCU_ASI_COREAVAIL 16'h0000
1064`define NCU_ASI_CORE_ENABLE_STATUS 16'h0010
1065`define NCU_ASI_CORE_ENABLE 16'h0020
1066`define NCU_ASI_XIR_STEERING 16'h0030
1067`define NCU_ASI_CORE_RUNNINGRW 16'h0050
1068`define NCU_ASI_CORE_RUNNING_STATUS 16'h0058
1069`define NCU_ASI_CORE_RUNNING_W1S 16'h0060
1070`define NCU_ASI_CORE_RUNNING_W1C 16'h0068
1071`define NCU_ASI_INTVECDISP 16'h0000
1072`define NCU_ASI_ERR_STR 16'h1000
1073`define NCU_ASI_WMR_VEC_MASK 16'h0018
1074`define NCU_ASI_CMP_TICK_ENABLE 16'h0038
1075
1076
1077//// UCB packet type ////
1078`define UCB_READ_NACK 4'b0000 // ack/nack types
1079`define UCB_READ_ACK 4'b0001
1080`define UCB_WRITE_ACK 4'b0010
1081`define UCB_IFILL_ACK 4'b0011
1082`define UCB_IFILL_NACK 4'b0111
1083
1084`define UCB_READ_REQ 4'b0100 // req types
1085`define UCB_WRITE_REQ 4'b0101
1086`define UCB_IFILL_REQ 4'b0110
1087
1088`define UCB_INT 4'b1000 // plain interrupt
1089`define UCB_INT_VEC 4'b1100 // interrupt with vector
1090`define UCB_INT_SOC_UE 4'b1001 // soc interrup ue
1091`define UCB_INT_SOC_CE 4'b1010 // soc interrup ce
1092`define UCB_RESET_VEC 4'b0101 // reset with vector
1093`define UCB_IDLE_VEC 4'b1110 // idle with vector
1094`define UCB_RESUME_VEC 4'b1111 // resume with vector
1095
1096`define UCB_INT_SOC 4'b1101 // soc interrup ce
1097
1098
1099//// PCX packet type ////
1100`define PCX_LOAD_RQ 5'b00000
1101`define PCX_IMISS_RQ 5'b10000
1102`define PCX_STORE_RQ 5'b00001
1103`define PCX_FWD_RQs 5'b01101
1104`define PCX_FWD_RPYs 5'b01110
1105
1106//// CPX packet type ////
1107//`define CPX_LOAD_RET 4'b0000
1108`define CPX_LOAD_RET 4'b1000
1109`define CPX_ST_ACK 4'b0100
1110//`define CPX_IFILL_RET 4'b0001
1111`define CPX_IFILL_RET 4'b1001
1112`define CPX_INT_RET 4'b0111
1113`define CPX_INT_SOC 4'b1101
1114//`define CPX_FWD_RQ_RET 4'b1010
1115//`define CPX_FWD_RPY_RET 4'b1011
1116
1117
1118
1119
1120//// Global CSR decode ////
1121`define NCU_CSR 8'h80
1122`define NIU_CSR 8'h81
1123//`define RNG_CSR 8'h82
1124`define DBG1_CSR 8'h86
1125`define CCU_CSR 8'h83
1126`define MCU_CSR 8'h84
1127`define TCU_CSR 8'h85
1128`define DMU_CSR 8'h88
1129`define RCU_CSR 8'h89
1130`define NCU_ASI 8'h90
1131 /////8'h91 ~ 9F reserved
1132 /////8'hA0 ~ BF L2 CSR////
1133`define DMU_PIO 4'hC // C0 ~ CF
1134 /////8'hB0 ~ FE reserved
1135`define SSI_CSR 8'hFF
1136
1137
1138//// NCU_SSI ////
1139`define SSI_ADDR 12'hFF_F
1140`define SSI_ADDR_TIMEOUT_REG 40'hFF_0001_0088
1141`define SSI_ADDR_LOG_REG 40'hFF_0000_0018
1142
1143`define IF_IDLE 2'b00
1144`define IF_ACPT 2'b01
1145`define IF_DROP 2'b10
1146
1147`define SSI_IDLE 3'b000
1148`define SSI_REQ 3'b001
1149`define SSI_WDATA 3'b011
1150`define SSI_REQ_PAR 3'b101
1151`define SSI_ACK 3'b111
1152`define SSI_RDATA 3'b110
1153`define SSI_ACK_PAR 3'b010
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164module ncu_i2csc_ctl (
1165 iol2clk,
1166 scan_in,
1167 scan_out,
1168 tcu_pce_ov,
1169 tcu_clk_stop,
1170 tcu_scan_en,
1171 tcu_aclk,
1172 tcu_bclk,
1173 tcu_dbr_gateoff,
1174 sii_mondo_vld,
1175 sii_mondo_target,
1176 sii_mondo_ctagerr,
1177 sii_mondo_rd,
1178 ncu_dmu_mondo_ack,
1179 ncu_dmu_mondo_nack,
1180 ssi_int_vld,
1181 mcu0_int_vld,
1182 mcu1_int_vld,
1183 mcu2_int_vld,
1184 mcu3_int_vld,
1185 niu_int_vld,
1186 ncu_man_int_vld,
1187 ssi_int_rd,
1188 mcu0_int_rd,
1189 mcu1_int_rd,
1190 mcu2_int_rd,
1191 mcu3_int_rd,
1192 niu_int_rd,
1193 ncu_man_int_rd,
1194 siipio_ack_vld,
1195 dmucsr_ack_vld,
1196 ccu_ack_vld,
1197 mcu0_ack_vld,
1198 mcu1_ack_vld,
1199 mcu2_ack_vld,
1200 mcu3_ack_vld,
1201 ssi_ack_vld,
1202 rcu_ack_vld,
1203 dbg1_ack_vld,
1204 niu_ack_vld,
1205 ncu_man_ack_vld,
1206 ncu_int_ack_vld,
1207 bounce_ack_vld,
1208 rd_nack_vld,
1209 siipio_ack_rd,
1210 dmucsr_ack_rd,
1211 ccu_ack_rd,
1212 mcu0_ack_rd,
1213 mcu1_ack_rd,
1214 mcu2_ack_rd,
1215 mcu3_ack_rd,
1216 ssi_ack_rd,
1217 rcu_ack_rd,
1218 dbg1_ack_rd,
1219 niu_ack_rd,
1220 ncu_man_ack_rd,
1221 ncu_int_ack_rd,
1222 bounce_ack_rd,
1223 rd_nack_rd,
1224 iob_tap_packet_vld,
1225 tap_iob_busy,
1226 int_sel,
1227 ack_sel,
1228 mondo_srvcd_d1,
1229 int_srvcd_d2,
1230 ack_srvcd_d1,
1231 ucb_ack_packet_d1,
1232 iobuf_head_f,
1233 iobuf_tail_s,
1234 io_mondo_data_wr_s,
1235 mondo_busy_vec_f,
1236 iobuf_avail,
1237 srvc_wr_ack,
1238 dmupio_srvc_wack,
1239 lhs_intman_acc,
1240 intman_pchkf2i2c,
1241 intman_dout_v,
1242 mb0_waddr,
1243 mb0_iobuf_wr_en,
1244 mb0_run,
1245 iobuf_wr,
1246 iobuf_tail_ptr) ;
1247wire avail_mondo_vec;
1248wire [6:0] avail_int_vec;
1249wire [14:0] avail_ack_vec;
1250wire snap_now;
1251wire mondo_vld;
1252wire int_vld;
1253wire ack_vld;
1254wire snapd_mondo_vec_next;
1255wire mondo_srvcd;
1256wire snapd_mondo_vec;
1257wire snapd_mondo_vec_ff_scanin;
1258wire snapd_mondo_vec_ff_scanout;
1259wire l1clk;
1260wire iobuf_hit_hwm;
1261wire mondo_srvcd_d1_ff_scanin;
1262wire mondo_srvcd_d1_ff_scanout;
1263wire [6:0] srvcd_int_vec;
1264wire [6:0] snapd_int_vec;
1265wire [6:0] snapd_int_vec_next;
1266wire int_srvcd;
1267wire snapd_int_vec_ff_scanin;
1268wire snapd_int_vec_ff_scanout;
1269wire int_srvcd_d1_ff_scanin;
1270wire int_srvcd_d1_ff_scanout;
1271wire int_srvcd_d1;
1272wire int_srvcd_d2_ff_scanin;
1273wire int_srvcd_d2_ff_scanout;
1274wire [14:0] srvcd_ack_vec;
1275wire [14:0] snapd_ack_vec;
1276wire [14:0] snapd_ack_vec_next;
1277wire ack_srvcd;
1278wire snapd_ack_vec_ff_scanin;
1279wire snapd_ack_vec_ff_scanout;
1280wire ack_to_tap_d1;
1281wire ack_srvcd_d1_ff_scanin;
1282wire ack_srvcd_d1_ff_scanout;
1283wire ack_to_cpx_d1;
1284wire io_mondo_data_wr_s_ff_scanin;
1285wire io_mondo_data_wr_s_ff_scanout;
1286wire mondo_busy;
1287wire mondo_busy_vec_ff_scanin;
1288wire mondo_busy_vec_ff_scanout;
1289wire [63:0] mondo_busy_vec;
1290wire mondo_flu_hit;
1291wire mondo_busy_d1_ff_scanin;
1292wire mondo_busy_d1_ff_scanout;
1293wire mondo_busy_d1;
1294wire ncu_dmu_mondo_ack_a1;
1295wire ncu_dmu_mondo_nack_a1;
1296wire ncu_dmu_mondo_ack_f;
1297wire ncu_dmu_mondo_ack_ff_scanin;
1298wire ncu_dmu_mondo_ack_ff_scanout;
1299wire ncu_dmu_mondo_nack_f;
1300wire ncu_dmu_mondo_nack_ff_scanin;
1301wire ncu_dmu_mondo_nack_ff_scanout;
1302wire mondo_flu_vld;
1303wire mondo_flu_vld_d1;
1304wire [5:0] mondo_target_prev;
1305wire mondo_flu_vld_pre_ff_scanin;
1306wire mondo_flu_vld_pre_ff_scanout;
1307wire mondo_flu_vld_pre;
1308wire mondo_flu_vld_d1_ff_scanin;
1309wire mondo_flu_vld_d1_ff_scanout;
1310wire mondo_flu_vld_ff_scanin;
1311wire mondo_flu_vld_ff_scanout;
1312wire mondo_target_prev_ff_scanin;
1313wire mondo_target_prev_ff_scanout;
1314wire int_srvcd_mask;
1315wire iobuf_wr_f;
1316wire [5:0] iobuf_tail_plus;
1317wire [5:0] iobuf_tail;
1318wire iobuf_tail_ff_scanin;
1319wire iobuf_tail_ff_scanout;
1320wire iobuf_tail_s_ff_scanin;
1321wire iobuf_tail_s_ff_scanout;
1322wire iobuf_head_ff_scanin;
1323wire iobuf_head_ff_scanout;
1324wire [5:0] iobuf_head;
1325wire siclk;
1326wire soclk;
1327wire se;
1328wire pce_ov;
1329wire stop;
1330
1331
1332
1333////////////////////////////////////////////////////////////////////////
1334// Signal declarations
1335////////////////////////////////////////////////////////////////////////
1336
1337
1338 // Global interface
1339input iol2clk;
1340input scan_in;
1341output scan_out;
1342input tcu_pce_ov;
1343input tcu_clk_stop;
1344input tcu_scan_en;
1345input tcu_aclk;
1346input tcu_bclk;
1347input tcu_dbr_gateoff;
1348
1349//mondo input
1350input sii_mondo_vld;
1351input [5:0] sii_mondo_target;
1352input sii_mondo_ctagerr;
1353output sii_mondo_rd;
1354
1355output ncu_dmu_mondo_ack;
1356output ncu_dmu_mondo_nack;
1357
1358//int vld//
1359input ssi_int_vld;
1360input mcu0_int_vld;
1361input mcu1_int_vld;
1362input mcu2_int_vld;
1363input mcu3_int_vld;
1364input niu_int_vld;
1365input ncu_man_int_vld;
1366
1367output ssi_int_rd;
1368output mcu0_int_rd;
1369output mcu1_int_rd;
1370output mcu2_int_rd;
1371output mcu3_int_rd;
1372output niu_int_rd;
1373output ncu_man_int_rd;
1374
1375//ack vld//
1376input siipio_ack_vld;
1377input dmucsr_ack_vld;
1378input ccu_ack_vld;
1379input mcu0_ack_vld;
1380input mcu1_ack_vld;
1381input mcu2_ack_vld;
1382input mcu3_ack_vld;
1383input ssi_ack_vld;
1384input rcu_ack_vld;
1385input dbg1_ack_vld;
1386input niu_ack_vld;
1387input ncu_man_ack_vld;
1388input ncu_int_ack_vld;
1389input bounce_ack_vld;
1390input rd_nack_vld;
1391
1392output siipio_ack_rd;
1393output dmucsr_ack_rd;
1394output ccu_ack_rd;
1395output mcu0_ack_rd;
1396output mcu1_ack_rd;
1397output mcu2_ack_rd;
1398output mcu3_ack_rd;
1399output ssi_ack_rd;
1400output rcu_ack_rd;
1401output dbg1_ack_rd;
1402output niu_ack_rd;
1403output ncu_man_ack_rd;
1404output ncu_int_ack_rd;
1405output bounce_ack_rd;
1406output rd_nack_rd;
1407
1408// TAP ucb interface
1409output iob_tap_packet_vld;
1410input tap_iob_busy;
1411
1412
1413//i2c slow datapath interface
1414output [6:0] int_sel;
1415output [14:0] ack_sel;
1416output mondo_srvcd_d1;
1417output int_srvcd_d2;
1418output ack_srvcd_d1;
1419
1420input [127:0] ucb_ack_packet_d1;
1421
1422//i2c fast control interface
1423input [5:0] iobuf_head_f;
1424output [5:0] iobuf_tail_s;
1425
1426//mondo
1427//c2i fast control interface
1428//Mondo data/busy table interface
1429//Interrupt status table interface
1430output io_mondo_data_wr_s;
1431input [63:0] mondo_busy_vec_f;
1432
1433//c2i slow control interface
1434output iobuf_avail;
1435input srvc_wr_ack;
1436input dmupio_srvc_wack;
1437
1438//IOB control interface
1439input lhs_intman_acc;
1440input intman_pchkf2i2c;
1441input intman_dout_v;
1442
1443
1444//mb0 signals//
1445input [5:0] mb0_waddr;
1446input mb0_iobuf_wr_en;
1447input mb0_run;
1448
1449
1450 // IO buffer interface
1451output iobuf_wr;
1452output [4:0] iobuf_tail_ptr;
1453
1454
1455 // Internal signals
1456
1457
1458reg [6:0] int_sel; // 0in bits_on -var int_sel -max 1
1459
1460reg [14:0] ack_sel; // 0in bits_on -var ack_sel -max 1
1461
1462
1463
1464
1465
1466
1467////////////////////////////////////////////////////////////////////////
1468// Code starts here
1469////////////////////////////////////////////////////////////////////////
1470 /************************************************************
1471 * Assemble availibility vectors
1472 ************************************************************/
1473
1474assign avail_mondo_vec = sii_mondo_vld;
1475
1476assign avail_int_vec[6:0] = { ssi_int_vld, //[6]
1477 mcu0_int_vld, //[5]
1478 mcu1_int_vld, //[4]
1479 mcu2_int_vld, //[3]
1480 mcu3_int_vld, //[2]
1481 niu_int_vld, //[1]
1482 ncu_man_int_vld } ;//[0]
1483
1484assign avail_ack_vec[14:0] = { siipio_ack_vld,//[14]
1485 dmucsr_ack_vld, //[13]
1486 ccu_ack_vld, //[12]
1487 mcu0_ack_vld, //[11]
1488 mcu1_ack_vld, //[10]
1489 mcu2_ack_vld, //[9]
1490 mcu3_ack_vld, //[8]
1491 ssi_ack_vld, //[7]
1492 rcu_ack_vld, //[6]
1493 dbg1_ack_vld, //[5]
1494 niu_ack_vld, //[4]
1495 ncu_man_ack_vld,//[3]
1496 ncu_int_ack_vld,//[2]
1497 bounce_ack_vld, //[1]
1498 rd_nack_vld }; //[0]
1499
1500
1501 /************************************************************
1502 * Handle mondo interrupts here
1503 ************************************************************/
1504 // Snap the availibility vector if all previous interrupts and acks
1505 // have been serviced.
1506 // jimmy : need to ignore ack_vld during tap_iob_busy because can't
1507 // jimmy : serve ack_vld during tap_iob_busy, but int is okay to serve
1508//assign snap_now = ~mondo_vld & ~int_vld & (~ack_vld|tap_iob_busy) ;
1509assign snap_now = ~mondo_vld & ~int_vld & (~ack_vld) ;
1510
1511assign snapd_mondo_vec_next = snap_now ? avail_mondo_vec :
1512 mondo_srvcd ? 1'b0 : snapd_mondo_vec;
1513
1514ncu_i2cscd_ctl_msff_ctl_macro__width_1 snapd_mondo_vec_ff
1515 (
1516 .scan_in(snapd_mondo_vec_ff_scanin),
1517 .scan_out(snapd_mondo_vec_ff_scanout),
1518 .dout (snapd_mondo_vec),
1519 .l1clk (l1clk),
1520 .din (snapd_mondo_vec_next),
1521 .siclk(siclk),
1522 .soclk(soclk)
1523 );
1524
1525assign mondo_vld = snapd_mondo_vec;
1526
1527 // Mondo is serviced only if the IO buffer is not full and
1528 // CPU is not accessing the Mondo tables
1529assign mondo_srvcd = mondo_vld & ~iobuf_hit_hwm;
1530
1531ncu_i2cscd_ctl_msff_ctl_macro__width_1 mondo_srvcd_d1_ff
1532 (
1533 .scan_in(mondo_srvcd_d1_ff_scanin),
1534 .scan_out(mondo_srvcd_d1_ff_scanout),
1535 .dout (mondo_srvcd_d1),
1536 .l1clk (l1clk),
1537 .din (mondo_srvcd),
1538 .siclk(siclk),
1539 .soclk(soclk)
1540 );
1541
1542assign sii_mondo_rd = mondo_srvcd;
1543
1544
1545 /************************************************************
1546 * Handle on-chip interrupts here
1547 ************************************************************/
1548// 0in req_ack -req snapd_int_vec -ack int_sel -req_until_ack -deassert 0
1549assign srvcd_int_vec[6:0] = snapd_int_vec[6:0] & ~int_sel[6:0];
1550
1551assign snapd_int_vec_next[6:0] = snap_now ? avail_int_vec[6:0] :
1552 int_srvcd ? srvcd_int_vec[6:0] : snapd_int_vec[6:0];
1553
1554ncu_i2cscd_ctl_msff_ctl_macro__width_7 snapd_int_vec_ff
1555 (
1556 .scan_in(snapd_int_vec_ff_scanin),
1557 .scan_out(snapd_int_vec_ff_scanout),
1558 .dout (snapd_int_vec[6:0]),
1559 .l1clk (l1clk),
1560 .din (snapd_int_vec_next[6:0]),
1561 .siclk(siclk),
1562 .soclk(soclk)
1563 );
1564
1565assign int_vld = |snapd_int_vec[6:0];
1566
1567always@(snapd_int_vec) begin
1568 int_sel[6:0]=7'b0;
1569 casex(snapd_int_vec[6:0]) // 0in case -parallel -full
1570 7'b1xx_xxxx : int_sel[6:0] = 7'b100_0000;
1571 7'b01x_xxxx : int_sel[6:0] = 7'b010_0000;
1572 7'b001_xxxx : int_sel[6:0] = 7'b001_0000;
1573 7'b000_1xxx : int_sel[6:0] = 7'b000_1000;
1574 7'b000_01xx : int_sel[6:0] = 7'b000_0100;
1575 7'b000_001x : int_sel[6:0] = 7'b000_0010;
1576 7'b000_0001 : int_sel[6:0] = 7'b000_0001;
1577 default : int_sel[6:0] = 7'b000_0000;
1578 endcase
1579end
1580
1581 // Int is serviced only if no mondo is serviced and the IO buffer is not full and
1582 // CPU is not accessing the Interrupt Management table
1583assign int_srvcd = int_vld & ~mondo_vld & ~iobuf_hit_hwm & ~lhs_intman_acc ;
1584 //~cpu_intman_acc & ~cpu_intctrl_acc;
1585
1586ncu_i2cscd_ctl_msff_ctl_macro__width_1 int_srvcd_d1_ff
1587 (
1588 .scan_in(int_srvcd_d1_ff_scanin),
1589 .scan_out(int_srvcd_d1_ff_scanout),
1590 .dout (int_srvcd_d1),
1591 .l1clk (l1clk),
1592 .din (int_srvcd),
1593 .siclk(siclk),
1594 .soclk(soclk)
1595 );
1596ncu_i2cscd_ctl_msff_ctl_macro__width_1 int_srvcd_d2_ff
1597 (
1598 .scan_in(int_srvcd_d2_ff_scanin),
1599 .scan_out(int_srvcd_d2_ff_scanout),
1600 .dout (int_srvcd_d2),
1601 .l1clk (l1clk),
1602 .din (int_srvcd_d1),
1603 .siclk(siclk),
1604 .soclk(soclk)
1605 );
1606
1607 // Generate read singals to the double buffer
1608assign ssi_int_rd = int_srvcd & int_sel[6];
1609assign mcu0_int_rd = int_srvcd & int_sel[5];
1610assign mcu1_int_rd = int_srvcd & int_sel[4];
1611assign mcu2_int_rd = int_srvcd & int_sel[3];
1612assign mcu3_int_rd = int_srvcd & int_sel[2];
1613assign niu_int_rd = int_srvcd & int_sel[1];
1614assign ncu_man_int_rd = int_srvcd & int_sel[0];
1615
1616
1617 /************************************************************
1618 * Handle acks here
1619 ************************************************************/
1620// 0in req_ack -req snapd_ack_vec -ack ack_sel -req_until_ack -deassert 0
1621assign srvcd_ack_vec[14:0] = snapd_ack_vec[14:0] & ~ack_sel[14:0];
1622
1623assign snapd_ack_vec_next[14:0] = snap_now ? avail_ack_vec[14:0] :
1624 ack_srvcd ? srvcd_ack_vec[14:0] : snapd_ack_vec[14:0];
1625
1626ncu_i2cscd_ctl_msff_ctl_macro__width_15 snapd_ack_vec_ff
1627 (
1628 .scan_in(snapd_ack_vec_ff_scanin),
1629 .scan_out(snapd_ack_vec_ff_scanout),
1630 .dout (snapd_ack_vec[14:0]),
1631 .l1clk (l1clk),
1632 .din (snapd_ack_vec_next[14:0]),
1633 .siclk(siclk),
1634 .soclk(soclk)
1635 );
1636
1637assign ack_vld = |snapd_ack_vec[14:0];
1638
1639always@(snapd_ack_vec) begin
1640 casex(snapd_ack_vec[14:0]) // 0in case -parallel -full
1641 15'b1xx_xxxx_xxxx_xxxx : ack_sel[14:0] = 15'b100_0000_0000_0000 ;
1642 15'b01x_xxxx_xxxx_xxxx : ack_sel[14:0] = 15'b010_0000_0000_0000 ;
1643 15'b001_xxxx_xxxx_xxxx : ack_sel[14:0] = 15'b001_0000_0000_0000 ;
1644 15'b000_1xxx_xxxx_xxxx : ack_sel[14:0] = 15'b000_1000_0000_0000 ;
1645 15'b000_01xx_xxxx_xxxx : ack_sel[14:0] = 15'b000_0100_0000_0000 ;
1646 15'b000_001x_xxxx_xxxx : ack_sel[14:0] = 15'b000_0010_0000_0000 ;
1647 15'b000_0001_xxxx_xxxx : ack_sel[14:0] = 15'b000_0001_0000_0000 ;
1648 15'b000_0000_1xxx_xxxx : ack_sel[14:0] = 15'b000_0000_1000_0000 ;
1649 15'b000_0000_01xx_xxxx : ack_sel[14:0] = 15'b000_0000_0100_0000 ;
1650 15'b000_0000_001x_xxxx : ack_sel[14:0] = 15'b000_0000_0010_0000 ;
1651 15'b000_0000_0001_xxxx : ack_sel[14:0] = 15'b000_0000_0001_0000 ;
1652 15'b000_0000_0000_1xxx : ack_sel[14:0] = 15'b000_0000_0000_1000 ;
1653 15'b000_0000_0000_01xx : ack_sel[14:0] = 15'b000_0000_0000_0100 ;
1654 15'b000_0000_0000_001x : ack_sel[14:0] = 15'b000_0000_0000_0010 ;
1655 15'b000_0000_0000_0001 : ack_sel[14:0] = 15'b000_0000_0000_0001 ;
1656 default : ack_sel[14:0] = 15'b000_0000_0000_0000 ;
1657 endcase
1658end
1659
1660
1661 // Ack is serviced only if no mondo or interrupt is serviced and the
1662 // IO buffer/TAP buffer is not full.
1663assign ack_srvcd = ack_vld & ~mondo_vld & ~int_vld & ~iobuf_hit_hwm & ~int_srvcd_d1 &
1664 ~tap_iob_busy & ~(ack_srvcd_d1 & ack_to_tap_d1);
1665
1666ncu_i2cscd_ctl_msff_ctl_macro__width_1 ack_srvcd_d1_ff
1667 (
1668 .scan_in(ack_srvcd_d1_ff_scanin),
1669 .scan_out(ack_srvcd_d1_ff_scanout),
1670 .dout (ack_srvcd_d1),
1671 .l1clk (l1clk),
1672 .din (ack_srvcd),
1673 .siclk(siclk),
1674 .soclk(soclk)
1675 );
1676
1677// Generate read singals to the double buffer
1678assign siipio_ack_rd = ack_srvcd & ack_sel[14];
1679assign dmucsr_ack_rd = ack_srvcd & ack_sel[13];
1680assign ccu_ack_rd = ack_srvcd & ack_sel[12];
1681assign mcu0_ack_rd = ack_srvcd & ack_sel[11];
1682assign mcu1_ack_rd = ack_srvcd & ack_sel[10];
1683assign mcu2_ack_rd = ack_srvcd & ack_sel[9];
1684assign mcu3_ack_rd = ack_srvcd & ack_sel[8];
1685assign ssi_ack_rd = ack_srvcd & ack_sel[7];
1686assign rcu_ack_rd = ack_srvcd & ack_sel[6];
1687assign dbg1_ack_rd = ack_srvcd & ack_sel[5];
1688assign niu_ack_rd = ack_srvcd & ack_sel[4];
1689assign ncu_man_ack_rd = ack_srvcd & ack_sel[3];
1690assign ncu_int_ack_rd = ack_srvcd & ack_sel[2];
1691assign bounce_ack_rd = ack_srvcd & ack_sel[1];
1692assign rd_nack_rd = ack_srvcd & ack_sel[0];
1693
1694
1695// Determine destination of req/ack
1696
1697assign ack_to_cpx_d1 =
1698 ((((ucb_ack_packet_d1[3:0] == `UCB_READ_NACK) | (ucb_ack_packet_d1[3:0] == `UCB_READ_ACK) |
1699 (ucb_ack_packet_d1[3:0] == `UCB_IFILL_NACK) | (ucb_ack_packet_d1[3:0] == `UCB_IFILL_ACK)) &
1700 (ucb_ack_packet_d1[11:10] == 2'b00)) ) ;
1701
1702
1703assign ack_to_tap_d1 =
1704 ((((ucb_ack_packet_d1[3:0] == `UCB_READ_NACK) |
1705 (ucb_ack_packet_d1[3:0] == `UCB_READ_ACK) |
1706 (ucb_ack_packet_d1[3:0] == `UCB_WRITE_ACK) |
1707 (ucb_ack_packet_d1[3:0] == `UCB_IFILL_ACK) |
1708 (ucb_ack_packet_d1[3:0] == `UCB_IFILL_NACK) ) &
1709 (ucb_ack_packet_d1[11:10] == 2'b01)) | //buffer id check
1710 (((ucb_ack_packet_d1[3:0] == `UCB_READ_REQ) |
1711 (ucb_ack_packet_d1[3:0] == `UCB_WRITE_REQ)) &
1712 (ucb_ack_packet_d1[54:47] == `TCU_CSR)));
1713
1714//assign iob_tap_vec_in[15:0] = (ucb_ack_packet_d1[3:0] == `UCB_READ_NACK) ? 16'h00ff : 16'hffff ;
1715
1716/************************************************************
1717 * Write mondo data table and busy table
1718 ************************************************************/
1719ncu_i2cscd_ctl_msff_ctl_macro__width_1 io_mondo_data_wr_s_ff
1720 (
1721 .scan_in(io_mondo_data_wr_s_ff_scanin),
1722 .scan_out(io_mondo_data_wr_s_ff_scanout),
1723 .dout (io_mondo_data_wr_s),
1724 .l1clk (l1clk),
1725 .din (mondo_srvcd & ~mondo_busy),
1726 .siclk(siclk),
1727 .soclk(soclk)
1728 );
1729
1730// Busy vector from Mondo Busy Table
1731ncu_i2cscd_ctl_msff_ctl_macro__width_64 mondo_busy_vec_ff
1732 (
1733 .scan_in(mondo_busy_vec_ff_scanin),
1734 .scan_out(mondo_busy_vec_ff_scanout),
1735 .dout (mondo_busy_vec[63:0]),
1736 .l1clk (l1clk),
1737 .din (mondo_busy_vec_f[63:0]),
1738 .siclk(siclk),
1739 .soclk(soclk)
1740 );
1741
1742assign mondo_busy = (|(mondo_busy_vec[63:0]&(64'h0000_0000_0000_0001<<sii_mondo_target[5:0]))) | mondo_flu_hit;
1743
1744ncu_i2cscd_ctl_msff_ctl_macro__width_1 mondo_busy_d1_ff
1745 (
1746 .scan_in(mondo_busy_d1_ff_scanin),
1747 .scan_out(mondo_busy_d1_ff_scanout),
1748 .dout (mondo_busy_d1),
1749 .l1clk (l1clk),
1750 .din (mondo_busy),
1751 .siclk(siclk),
1752 .soclk(soclk)
1753 );
1754
1755// Send ack/nack to dmu
1756assign ncu_dmu_mondo_ack_a1 = mondo_srvcd & ~mondo_busy & ~sii_mondo_ctagerr;
1757assign ncu_dmu_mondo_nack_a1 = mondo_srvcd & mondo_busy & ~sii_mondo_ctagerr;
1758
1759assign ncu_dmu_mondo_ack = ncu_dmu_mondo_ack_f & tcu_dbr_gateoff;
1760ncu_i2cscd_ctl_msff_ctl_macro__width_1 ncu_dmu_mondo_ack_ff
1761 (
1762 .scan_in(ncu_dmu_mondo_ack_ff_scanin),
1763 .scan_out(ncu_dmu_mondo_ack_ff_scanout),
1764 .dout (ncu_dmu_mondo_ack_f),
1765 .l1clk (l1clk),
1766 .din (ncu_dmu_mondo_ack_a1),
1767 .siclk(siclk),
1768 .soclk(soclk)
1769 );
1770
1771assign ncu_dmu_mondo_nack = ncu_dmu_mondo_nack_f & tcu_dbr_gateoff;
1772ncu_i2cscd_ctl_msff_ctl_macro__width_1 ncu_dmu_mondo_nack_ff
1773 (
1774 .scan_in(ncu_dmu_mondo_nack_ff_scanin),
1775 .scan_out(ncu_dmu_mondo_nack_ff_scanout),
1776 .dout (ncu_dmu_mondo_nack_f),
1777 .l1clk (l1clk),
1778 .din (ncu_dmu_mondo_nack_a1),
1779 .siclk(siclk),
1780 .soclk(soclk)
1781 );
1782
1783
1784// do fast lookup only in the 2nd cycle after each mondo ack to see
1785// if the last ack is for the same cputhr_id. no need to do fast
1786// lookup if the last mondo was a nack.
1787assign mondo_flu_hit = (mondo_flu_vld | mondo_flu_vld_d1) & (sii_mondo_target[5:0]==mondo_target_prev[5:0]) ;
1788ncu_i2cscd_ctl_msff_ctl_macro__width_1 mondo_flu_vld_pre_ff
1789 (
1790 .scan_in(mondo_flu_vld_pre_ff_scanin),
1791 .scan_out(mondo_flu_vld_pre_ff_scanout),
1792 .dout (mondo_flu_vld_pre),
1793 .l1clk (l1clk),
1794 .din (ncu_dmu_mondo_ack_a1),
1795 .siclk(siclk),
1796 .soclk(soclk)
1797 );
1798
1799ncu_i2cscd_ctl_msff_ctl_macro__width_1 mondo_flu_vld_d1_ff
1800 (
1801 .scan_in(mondo_flu_vld_d1_ff_scanin),
1802 .scan_out(mondo_flu_vld_d1_ff_scanout),
1803 .dout (mondo_flu_vld_d1),
1804 .l1clk (l1clk),
1805 .din (mondo_flu_vld),
1806 .siclk(siclk),
1807 .soclk(soclk)
1808 );
1809
1810ncu_i2cscd_ctl_msff_ctl_macro__width_1 mondo_flu_vld_ff
1811 (
1812 .scan_in(mondo_flu_vld_ff_scanin),
1813 .scan_out(mondo_flu_vld_ff_scanout),
1814 .dout (mondo_flu_vld),
1815 .l1clk (l1clk),
1816 .din (mondo_flu_vld_pre),
1817 .siclk(siclk),
1818 .soclk(soclk)
1819 );
1820ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_6 mondo_target_prev_ff
1821 (
1822 .scan_in(mondo_target_prev_ff_scanin),
1823 .scan_out(mondo_target_prev_ff_scanout),
1824 .dout (mondo_target_prev[5:0]),
1825 .l1clk (l1clk),
1826 .en (mondo_srvcd),
1827 .din (sii_mondo_target[5:0]),
1828 .siclk(siclk),
1829 .soclk(soclk)
1830 );
1831
1832/************************************************************
1833 * Let c2i logic know that the IO buffer is ready to accept
1834 * a write ack.
1835 ************************************************************/
1836assign iobuf_avail = ~iobuf_hit_hwm & ~mondo_srvcd_d1 & ~int_srvcd_d2 & ~ack_srvcd_d1;
1837
1838/************************************************************
1839 * Send transaction to IO buffer
1840 ************************************************************/
1841assign int_srvcd_mask = intman_pchkf2i2c & intman_dout_v;
1842assign iobuf_wr_f = (mondo_srvcd_d1 & ~mondo_busy_d1) |
1843 (int_srvcd_d2&~int_srvcd_mask) |
1844 (ack_srvcd_d1 & ack_to_cpx_d1) |
1845 srvc_wr_ack|dmupio_srvc_wack ;
1846assign iobuf_wr = mb0_run ? mb0_iobuf_wr_en : iobuf_wr_f;
1847
1848assign iobuf_tail_plus[5:0] = iobuf_tail[5:0] + 6'd1;
1849// Tail pointer to io buffer
1850ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_6 iobuf_tail_ff
1851 (
1852 .scan_in(iobuf_tail_ff_scanin),
1853 .scan_out(iobuf_tail_ff_scanout),
1854 .dout (iobuf_tail[5:0]),
1855 .l1clk (l1clk),
1856 .en (iobuf_wr_f),
1857 .din (iobuf_tail_plus[5:0]),
1858 .siclk(siclk),
1859 .soclk(soclk)
1860 );
1861
1862// Have to flop tail one more time before sending to cpu clock domain
1863// to guarantee content has been written to memory
1864ncu_i2cscd_ctl_msff_ctl_macro__width_6 iobuf_tail_s_ff
1865 (
1866 .scan_in(iobuf_tail_s_ff_scanin),
1867 .scan_out(iobuf_tail_s_ff_scanout),
1868 .dout (iobuf_tail_s[5:0]),
1869 .l1clk (l1clk),
1870 .din (iobuf_tail[5:0]),
1871 .siclk(siclk),
1872 .soclk(soclk)
1873 );
1874
1875assign iobuf_tail_ptr[4:0] = mb0_run ? mb0_waddr[4:0] : iobuf_tail[4:0];
1876
1877
1878// Flop head pointer once to convert to bsc clock domain
1879ncu_i2cscd_ctl_msff_ctl_macro__width_6 iobuf_head_ff
1880 (
1881 .scan_in(iobuf_head_ff_scanin),
1882 .scan_out(iobuf_head_ff_scanout),
1883 .dout (iobuf_head[5:0]),
1884 .l1clk (l1clk),
1885 .din (iobuf_head_f[5:0]),
1886 .siclk(siclk),
1887 .soclk(soclk)
1888 );
1889
1890// Determine if the io buffer is full
1891assign iobuf_hit_hwm = ((iobuf_tail_plus[5] != iobuf_head[5]) &
1892 (iobuf_tail_plus[4:0] >= iobuf_head[4:0])) |
1893 ((iobuf_tail_plus[5] == iobuf_head[5]) &
1894 (iobuf_tail_plus[4:0] <= iobuf_head[4:0]));
1895
1896
1897/************************************************************
1898 * Send transaction to TAP
1899 ************************************************************/
1900assign iob_tap_packet_vld = ack_srvcd_d1 & ack_to_tap_d1;
1901
1902
1903/**** adding clock header ****/
1904ncu_i2cscd_ctl_l1clkhdr_ctl_macro clkgen (
1905 .l2clk (iol2clk),
1906 .l1en (1'b1),
1907 .l1clk (l1clk),
1908 .pce_ov(pce_ov),
1909 .stop(stop),
1910 .se(se)
1911 );
1912
1913/*** building tcu port ***/
1914assign siclk = tcu_aclk;
1915assign soclk = tcu_bclk;
1916assign se = tcu_scan_en;
1917assign pce_ov = tcu_pce_ov;
1918assign stop = tcu_clk_stop;
1919
1920// fixscan start:
1921assign snapd_mondo_vec_ff_scanin = scan_in ;
1922assign mondo_srvcd_d1_ff_scanin = snapd_mondo_vec_ff_scanout;
1923assign snapd_int_vec_ff_scanin = mondo_srvcd_d1_ff_scanout;
1924assign int_srvcd_d1_ff_scanin = snapd_int_vec_ff_scanout ;
1925assign int_srvcd_d2_ff_scanin = int_srvcd_d1_ff_scanout ;
1926assign snapd_ack_vec_ff_scanin = int_srvcd_d2_ff_scanout ;
1927assign ack_srvcd_d1_ff_scanin = snapd_ack_vec_ff_scanout ;
1928assign io_mondo_data_wr_s_ff_scanin = ack_srvcd_d1_ff_scanout ;
1929assign mondo_busy_vec_ff_scanin = io_mondo_data_wr_s_ff_scanout;
1930assign mondo_busy_d1_ff_scanin = mondo_busy_vec_ff_scanout;
1931assign ncu_dmu_mondo_ack_ff_scanin = mondo_busy_d1_ff_scanout ;
1932assign ncu_dmu_mondo_nack_ff_scanin = ncu_dmu_mondo_ack_ff_scanout;
1933assign mondo_flu_vld_pre_ff_scanin = ncu_dmu_mondo_nack_ff_scanout;
1934assign mondo_flu_vld_ff_scanin = mondo_flu_vld_pre_ff_scanout;
1935assign mondo_flu_vld_d1_ff_scanin = mondo_flu_vld_ff_scanout ;
1936assign mondo_target_prev_ff_scanin = mondo_flu_vld_d1_ff_scanout ;
1937assign iobuf_tail_ff_scanin = mondo_target_prev_ff_scanout;
1938assign iobuf_tail_s_ff_scanin = iobuf_tail_ff_scanout ;
1939assign iobuf_head_ff_scanin = iobuf_tail_s_ff_scanout ;
1940assign scan_out = iobuf_head_ff_scanout ;
1941// fixscan end:
1942endmodule // i2c_sctrl
1943
1944
1945// Local Variables:
1946// verilog-auto-sense-defines-constant:t
1947// End:
1948
1949
1950
1951
1952
1953
1954// any PARAMS parms go into naming of macro
1955
1956module ncu_i2cscd_ctl_msff_ctl_macro__width_1 (
1957 din,
1958 l1clk,
1959 scan_in,
1960 siclk,
1961 soclk,
1962 dout,
1963 scan_out);
1964wire [0:0] fdin;
1965
1966 input [0:0] din;
1967 input l1clk;
1968 input scan_in;
1969
1970
1971 input siclk;
1972 input soclk;
1973
1974 output [0:0] dout;
1975 output scan_out;
1976assign fdin[0:0] = din[0:0];
1977
1978
1979
1980
1981
1982
1983dff #(1) d0_0 (
1984.l1clk(l1clk),
1985.siclk(siclk),
1986.soclk(soclk),
1987.d(fdin[0:0]),
1988.si(scan_in),
1989.so(scan_out),
1990.q(dout[0:0])
1991);
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004endmodule
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018// any PARAMS parms go into naming of macro
2019
2020module ncu_i2cscd_ctl_msff_ctl_macro__width_7 (
2021 din,
2022 l1clk,
2023 scan_in,
2024 siclk,
2025 soclk,
2026 dout,
2027 scan_out);
2028wire [6:0] fdin;
2029wire [5:0] so;
2030
2031 input [6:0] din;
2032 input l1clk;
2033 input scan_in;
2034
2035
2036 input siclk;
2037 input soclk;
2038
2039 output [6:0] dout;
2040 output scan_out;
2041assign fdin[6:0] = din[6:0];
2042
2043
2044
2045
2046
2047
2048dff #(7) d0_0 (
2049.l1clk(l1clk),
2050.siclk(siclk),
2051.soclk(soclk),
2052.d(fdin[6:0]),
2053.si({scan_in,so[5:0]}),
2054.so({so[5:0],scan_out}),
2055.q(dout[6:0])
2056);
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069endmodule
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083// any PARAMS parms go into naming of macro
2084
2085module ncu_i2cscd_ctl_msff_ctl_macro__width_15 (
2086 din,
2087 l1clk,
2088 scan_in,
2089 siclk,
2090 soclk,
2091 dout,
2092 scan_out);
2093wire [14:0] fdin;
2094wire [13:0] so;
2095
2096 input [14:0] din;
2097 input l1clk;
2098 input scan_in;
2099
2100
2101 input siclk;
2102 input soclk;
2103
2104 output [14:0] dout;
2105 output scan_out;
2106assign fdin[14:0] = din[14:0];
2107
2108
2109
2110
2111
2112
2113dff #(15) d0_0 (
2114.l1clk(l1clk),
2115.siclk(siclk),
2116.soclk(soclk),
2117.d(fdin[14:0]),
2118.si({scan_in,so[13:0]}),
2119.so({so[13:0],scan_out}),
2120.q(dout[14:0])
2121);
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134endmodule
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148// any PARAMS parms go into naming of macro
2149
2150module ncu_i2cscd_ctl_msff_ctl_macro__width_64 (
2151 din,
2152 l1clk,
2153 scan_in,
2154 siclk,
2155 soclk,
2156 dout,
2157 scan_out);
2158wire [63:0] fdin;
2159wire [62:0] so;
2160
2161 input [63:0] din;
2162 input l1clk;
2163 input scan_in;
2164
2165
2166 input siclk;
2167 input soclk;
2168
2169 output [63:0] dout;
2170 output scan_out;
2171assign fdin[63:0] = din[63:0];
2172
2173
2174
2175
2176
2177
2178dff #(64) d0_0 (
2179.l1clk(l1clk),
2180.siclk(siclk),
2181.soclk(soclk),
2182.d(fdin[63:0]),
2183.si({scan_in,so[62:0]}),
2184.so({so[62:0],scan_out}),
2185.q(dout[63:0])
2186);
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199endmodule
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213// any PARAMS parms go into naming of macro
2214
2215module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_6 (
2216 din,
2217 en,
2218 l1clk,
2219 scan_in,
2220 siclk,
2221 soclk,
2222 dout,
2223 scan_out);
2224wire [5:0] fdin;
2225wire [4:0] so;
2226
2227 input [5:0] din;
2228 input en;
2229 input l1clk;
2230 input scan_in;
2231
2232
2233 input siclk;
2234 input soclk;
2235
2236 output [5:0] dout;
2237 output scan_out;
2238assign fdin[5:0] = (din[5:0] & {6{en}}) | (dout[5:0] & ~{6{en}});
2239
2240
2241
2242
2243
2244
2245dff #(6) d0_0 (
2246.l1clk(l1clk),
2247.siclk(siclk),
2248.soclk(soclk),
2249.d(fdin[5:0]),
2250.si({scan_in,so[4:0]}),
2251.so({so[4:0],scan_out}),
2252.q(dout[5:0])
2253);
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266endmodule
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280// any PARAMS parms go into naming of macro
2281
2282module ncu_i2cscd_ctl_msff_ctl_macro__width_6 (
2283 din,
2284 l1clk,
2285 scan_in,
2286 siclk,
2287 soclk,
2288 dout,
2289 scan_out);
2290wire [5:0] fdin;
2291wire [4:0] so;
2292
2293 input [5:0] din;
2294 input l1clk;
2295 input scan_in;
2296
2297
2298 input siclk;
2299 input soclk;
2300
2301 output [5:0] dout;
2302 output scan_out;
2303assign fdin[5:0] = din[5:0];
2304
2305
2306
2307
2308
2309
2310dff #(6) d0_0 (
2311.l1clk(l1clk),
2312.siclk(siclk),
2313.soclk(soclk),
2314.d(fdin[5:0]),
2315.si({scan_in,so[4:0]}),
2316.so({so[4:0],scan_out}),
2317.q(dout[5:0])
2318);
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331endmodule
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345// any PARAMS parms go into naming of macro
2346
2347module ncu_i2cscd_ctl_l1clkhdr_ctl_macro (
2348 l2clk,
2349 l1en,
2350 pce_ov,
2351 stop,
2352 se,
2353 l1clk);
2354
2355
2356 input l2clk;
2357 input l1en;
2358 input pce_ov;
2359 input stop;
2360 input se;
2361 output l1clk;
2362
2363
2364
2365
2366
2367cl_sc1_l1hdr_8x c_0 (
2368
2369
2370 .l2clk(l2clk),
2371 .pce(l1en),
2372 .l1clk(l1clk),
2373 .se(se),
2374 .pce_ov(pce_ov),
2375 .stop(stop)
2376);
2377
2378
2379
2380endmodule
2381
2382
2383
2384
2385
2386// any PARAMS parms go into naming of macro
2387
2388module ncu_i2cscd_ctl_msff_ctl_macro__width_4 (
2389 din,
2390 l1clk,
2391 scan_in,
2392 siclk,
2393 soclk,
2394 dout,
2395 scan_out);
2396wire [3:0] fdin;
2397wire [2:0] so;
2398
2399 input [3:0] din;
2400 input l1clk;
2401 input scan_in;
2402
2403
2404 input siclk;
2405 input soclk;
2406
2407 output [3:0] dout;
2408 output scan_out;
2409assign fdin[3:0] = din[3:0];
2410
2411
2412
2413
2414
2415
2416dff #(4) d0_0 (
2417.l1clk(l1clk),
2418.siclk(siclk),
2419.soclk(soclk),
2420.d(fdin[3:0]),
2421.si({scan_in,so[2:0]}),
2422.so({so[2:0],scan_out}),
2423.q(dout[3:0])
2424);
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437endmodule
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451// any PARAMS parms go into naming of macro
2452
2453module ncu_i2cscd_ctl_msff_ctl_macro__width_128 (
2454 din,
2455 l1clk,
2456 scan_in,
2457 siclk,
2458 soclk,
2459 dout,
2460 scan_out);
2461wire [127:0] fdin;
2462wire [126:0] so;
2463
2464 input [127:0] din;
2465 input l1clk;
2466 input scan_in;
2467
2468
2469 input siclk;
2470 input soclk;
2471
2472 output [127:0] dout;
2473 output scan_out;
2474assign fdin[127:0] = din[127:0];
2475
2476
2477
2478
2479
2480
2481dff #(128) d0_0 (
2482.l1clk(l1clk),
2483.siclk(siclk),
2484.soclk(soclk),
2485.d(fdin[127:0]),
2486.si({scan_in,so[126:0]}),
2487.so({so[126:0],scan_out}),
2488.q(dout[127:0])
2489);
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502endmodule
2503
2504
2505
2506
2507// Description: Spare gate macro for control blocks
2508//
2509// Param num controls the number of times the macro is added
2510// flops=0 can be used to use only combination spare logic
2511
2512
2513module ncu_i2cscd_ctl_spare_ctl_macro__num_11 (
2514 l1clk,
2515 scan_in,
2516 siclk,
2517 soclk,
2518 scan_out);
2519wire si_0;
2520wire so_0;
2521wire spare0_flop_unused;
2522wire spare0_buf_32x_unused;
2523wire spare0_nand3_8x_unused;
2524wire spare0_inv_8x_unused;
2525wire spare0_aoi22_4x_unused;
2526wire spare0_buf_8x_unused;
2527wire spare0_oai22_4x_unused;
2528wire spare0_inv_16x_unused;
2529wire spare0_nand2_16x_unused;
2530wire spare0_nor3_4x_unused;
2531wire spare0_nand2_8x_unused;
2532wire spare0_buf_16x_unused;
2533wire spare0_nor2_16x_unused;
2534wire spare0_inv_32x_unused;
2535wire si_1;
2536wire so_1;
2537wire spare1_flop_unused;
2538wire spare1_buf_32x_unused;
2539wire spare1_nand3_8x_unused;
2540wire spare1_inv_8x_unused;
2541wire spare1_aoi22_4x_unused;
2542wire spare1_buf_8x_unused;
2543wire spare1_oai22_4x_unused;
2544wire spare1_inv_16x_unused;
2545wire spare1_nand2_16x_unused;
2546wire spare1_nor3_4x_unused;
2547wire spare1_nand2_8x_unused;
2548wire spare1_buf_16x_unused;
2549wire spare1_nor2_16x_unused;
2550wire spare1_inv_32x_unused;
2551wire si_2;
2552wire so_2;
2553wire spare2_flop_unused;
2554wire spare2_buf_32x_unused;
2555wire spare2_nand3_8x_unused;
2556wire spare2_inv_8x_unused;
2557wire spare2_aoi22_4x_unused;
2558wire spare2_buf_8x_unused;
2559wire spare2_oai22_4x_unused;
2560wire spare2_inv_16x_unused;
2561wire spare2_nand2_16x_unused;
2562wire spare2_nor3_4x_unused;
2563wire spare2_nand2_8x_unused;
2564wire spare2_buf_16x_unused;
2565wire spare2_nor2_16x_unused;
2566wire spare2_inv_32x_unused;
2567wire si_3;
2568wire so_3;
2569wire spare3_flop_unused;
2570wire spare3_buf_32x_unused;
2571wire spare3_nand3_8x_unused;
2572wire spare3_inv_8x_unused;
2573wire spare3_aoi22_4x_unused;
2574wire spare3_buf_8x_unused;
2575wire spare3_oai22_4x_unused;
2576wire spare3_inv_16x_unused;
2577wire spare3_nand2_16x_unused;
2578wire spare3_nor3_4x_unused;
2579wire spare3_nand2_8x_unused;
2580wire spare3_buf_16x_unused;
2581wire spare3_nor2_16x_unused;
2582wire spare3_inv_32x_unused;
2583wire si_4;
2584wire so_4;
2585wire spare4_flop_unused;
2586wire spare4_buf_32x_unused;
2587wire spare4_nand3_8x_unused;
2588wire spare4_inv_8x_unused;
2589wire spare4_aoi22_4x_unused;
2590wire spare4_buf_8x_unused;
2591wire spare4_oai22_4x_unused;
2592wire spare4_inv_16x_unused;
2593wire spare4_nand2_16x_unused;
2594wire spare4_nor3_4x_unused;
2595wire spare4_nand2_8x_unused;
2596wire spare4_buf_16x_unused;
2597wire spare4_nor2_16x_unused;
2598wire spare4_inv_32x_unused;
2599wire si_5;
2600wire so_5;
2601wire spare5_flop_unused;
2602wire spare5_buf_32x_unused;
2603wire spare5_nand3_8x_unused;
2604wire spare5_inv_8x_unused;
2605wire spare5_aoi22_4x_unused;
2606wire spare5_buf_8x_unused;
2607wire spare5_oai22_4x_unused;
2608wire spare5_inv_16x_unused;
2609wire spare5_nand2_16x_unused;
2610wire spare5_nor3_4x_unused;
2611wire spare5_nand2_8x_unused;
2612wire spare5_buf_16x_unused;
2613wire spare5_nor2_16x_unused;
2614wire spare5_inv_32x_unused;
2615wire si_6;
2616wire so_6;
2617wire spare6_flop_unused;
2618wire spare6_buf_32x_unused;
2619wire spare6_nand3_8x_unused;
2620wire spare6_inv_8x_unused;
2621wire spare6_aoi22_4x_unused;
2622wire spare6_buf_8x_unused;
2623wire spare6_oai22_4x_unused;
2624wire spare6_inv_16x_unused;
2625wire spare6_nand2_16x_unused;
2626wire spare6_nor3_4x_unused;
2627wire spare6_nand2_8x_unused;
2628wire spare6_buf_16x_unused;
2629wire spare6_nor2_16x_unused;
2630wire spare6_inv_32x_unused;
2631wire si_7;
2632wire so_7;
2633wire spare7_flop_unused;
2634wire spare7_buf_32x_unused;
2635wire spare7_nand3_8x_unused;
2636wire spare7_inv_8x_unused;
2637wire spare7_aoi22_4x_unused;
2638wire spare7_buf_8x_unused;
2639wire spare7_oai22_4x_unused;
2640wire spare7_inv_16x_unused;
2641wire spare7_nand2_16x_unused;
2642wire spare7_nor3_4x_unused;
2643wire spare7_nand2_8x_unused;
2644wire spare7_buf_16x_unused;
2645wire spare7_nor2_16x_unused;
2646wire spare7_inv_32x_unused;
2647wire si_8;
2648wire so_8;
2649wire spare8_flop_unused;
2650wire spare8_buf_32x_unused;
2651wire spare8_nand3_8x_unused;
2652wire spare8_inv_8x_unused;
2653wire spare8_aoi22_4x_unused;
2654wire spare8_buf_8x_unused;
2655wire spare8_oai22_4x_unused;
2656wire spare8_inv_16x_unused;
2657wire spare8_nand2_16x_unused;
2658wire spare8_nor3_4x_unused;
2659wire spare8_nand2_8x_unused;
2660wire spare8_buf_16x_unused;
2661wire spare8_nor2_16x_unused;
2662wire spare8_inv_32x_unused;
2663wire si_9;
2664wire so_9;
2665wire spare9_flop_unused;
2666wire spare9_buf_32x_unused;
2667wire spare9_nand3_8x_unused;
2668wire spare9_inv_8x_unused;
2669wire spare9_aoi22_4x_unused;
2670wire spare9_buf_8x_unused;
2671wire spare9_oai22_4x_unused;
2672wire spare9_inv_16x_unused;
2673wire spare9_nand2_16x_unused;
2674wire spare9_nor3_4x_unused;
2675wire spare9_nand2_8x_unused;
2676wire spare9_buf_16x_unused;
2677wire spare9_nor2_16x_unused;
2678wire spare9_inv_32x_unused;
2679wire si_10;
2680wire so_10;
2681wire spare10_flop_unused;
2682wire spare10_buf_32x_unused;
2683wire spare10_nand3_8x_unused;
2684wire spare10_inv_8x_unused;
2685wire spare10_aoi22_4x_unused;
2686wire spare10_buf_8x_unused;
2687wire spare10_oai22_4x_unused;
2688wire spare10_inv_16x_unused;
2689wire spare10_nand2_16x_unused;
2690wire spare10_nor3_4x_unused;
2691wire spare10_nand2_8x_unused;
2692wire spare10_buf_16x_unused;
2693wire spare10_nor2_16x_unused;
2694wire spare10_inv_32x_unused;
2695
2696
2697input l1clk;
2698input scan_in;
2699input siclk;
2700input soclk;
2701output scan_out;
2702
2703cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
2704 .siclk(siclk),
2705 .soclk(soclk),
2706 .si(si_0),
2707 .so(so_0),
2708 .d(1'b0),
2709 .q(spare0_flop_unused));
2710assign si_0 = scan_in;
2711
2712cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
2713 .out(spare0_buf_32x_unused));
2714cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
2715 .in1(1'b1),
2716 .in2(1'b1),
2717 .out(spare0_nand3_8x_unused));
2718cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
2719 .out(spare0_inv_8x_unused));
2720cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
2721 .in01(1'b1),
2722 .in10(1'b1),
2723 .in11(1'b1),
2724 .out(spare0_aoi22_4x_unused));
2725cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
2726 .out(spare0_buf_8x_unused));
2727cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
2728 .in01(1'b1),
2729 .in10(1'b1),
2730 .in11(1'b1),
2731 .out(spare0_oai22_4x_unused));
2732cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
2733 .out(spare0_inv_16x_unused));
2734cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
2735 .in1(1'b1),
2736 .out(spare0_nand2_16x_unused));
2737cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
2738 .in1(1'b0),
2739 .in2(1'b0),
2740 .out(spare0_nor3_4x_unused));
2741cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
2742 .in1(1'b1),
2743 .out(spare0_nand2_8x_unused));
2744cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
2745 .out(spare0_buf_16x_unused));
2746cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
2747 .in1(1'b0),
2748 .out(spare0_nor2_16x_unused));
2749cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
2750 .out(spare0_inv_32x_unused));
2751
2752cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
2753 .siclk(siclk),
2754 .soclk(soclk),
2755 .si(si_1),
2756 .so(so_1),
2757 .d(1'b0),
2758 .q(spare1_flop_unused));
2759assign si_1 = so_0;
2760
2761cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
2762 .out(spare1_buf_32x_unused));
2763cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
2764 .in1(1'b1),
2765 .in2(1'b1),
2766 .out(spare1_nand3_8x_unused));
2767cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
2768 .out(spare1_inv_8x_unused));
2769cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
2770 .in01(1'b1),
2771 .in10(1'b1),
2772 .in11(1'b1),
2773 .out(spare1_aoi22_4x_unused));
2774cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
2775 .out(spare1_buf_8x_unused));
2776cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
2777 .in01(1'b1),
2778 .in10(1'b1),
2779 .in11(1'b1),
2780 .out(spare1_oai22_4x_unused));
2781cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
2782 .out(spare1_inv_16x_unused));
2783cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
2784 .in1(1'b1),
2785 .out(spare1_nand2_16x_unused));
2786cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
2787 .in1(1'b0),
2788 .in2(1'b0),
2789 .out(spare1_nor3_4x_unused));
2790cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
2791 .in1(1'b1),
2792 .out(spare1_nand2_8x_unused));
2793cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
2794 .out(spare1_buf_16x_unused));
2795cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
2796 .in1(1'b0),
2797 .out(spare1_nor2_16x_unused));
2798cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
2799 .out(spare1_inv_32x_unused));
2800
2801cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
2802 .siclk(siclk),
2803 .soclk(soclk),
2804 .si(si_2),
2805 .so(so_2),
2806 .d(1'b0),
2807 .q(spare2_flop_unused));
2808assign si_2 = so_1;
2809
2810cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
2811 .out(spare2_buf_32x_unused));
2812cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
2813 .in1(1'b1),
2814 .in2(1'b1),
2815 .out(spare2_nand3_8x_unused));
2816cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
2817 .out(spare2_inv_8x_unused));
2818cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
2819 .in01(1'b1),
2820 .in10(1'b1),
2821 .in11(1'b1),
2822 .out(spare2_aoi22_4x_unused));
2823cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
2824 .out(spare2_buf_8x_unused));
2825cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
2826 .in01(1'b1),
2827 .in10(1'b1),
2828 .in11(1'b1),
2829 .out(spare2_oai22_4x_unused));
2830cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
2831 .out(spare2_inv_16x_unused));
2832cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
2833 .in1(1'b1),
2834 .out(spare2_nand2_16x_unused));
2835cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
2836 .in1(1'b0),
2837 .in2(1'b0),
2838 .out(spare2_nor3_4x_unused));
2839cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
2840 .in1(1'b1),
2841 .out(spare2_nand2_8x_unused));
2842cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
2843 .out(spare2_buf_16x_unused));
2844cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
2845 .in1(1'b0),
2846 .out(spare2_nor2_16x_unused));
2847cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
2848 .out(spare2_inv_32x_unused));
2849
2850cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
2851 .siclk(siclk),
2852 .soclk(soclk),
2853 .si(si_3),
2854 .so(so_3),
2855 .d(1'b0),
2856 .q(spare3_flop_unused));
2857assign si_3 = so_2;
2858
2859cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
2860 .out(spare3_buf_32x_unused));
2861cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
2862 .in1(1'b1),
2863 .in2(1'b1),
2864 .out(spare3_nand3_8x_unused));
2865cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
2866 .out(spare3_inv_8x_unused));
2867cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
2868 .in01(1'b1),
2869 .in10(1'b1),
2870 .in11(1'b1),
2871 .out(spare3_aoi22_4x_unused));
2872cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
2873 .out(spare3_buf_8x_unused));
2874cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
2875 .in01(1'b1),
2876 .in10(1'b1),
2877 .in11(1'b1),
2878 .out(spare3_oai22_4x_unused));
2879cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
2880 .out(spare3_inv_16x_unused));
2881cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
2882 .in1(1'b1),
2883 .out(spare3_nand2_16x_unused));
2884cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
2885 .in1(1'b0),
2886 .in2(1'b0),
2887 .out(spare3_nor3_4x_unused));
2888cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
2889 .in1(1'b1),
2890 .out(spare3_nand2_8x_unused));
2891cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
2892 .out(spare3_buf_16x_unused));
2893cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
2894 .in1(1'b0),
2895 .out(spare3_nor2_16x_unused));
2896cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
2897 .out(spare3_inv_32x_unused));
2898
2899cl_sc1_msff_8x spare4_flop (.l1clk(l1clk),
2900 .siclk(siclk),
2901 .soclk(soclk),
2902 .si(si_4),
2903 .so(so_4),
2904 .d(1'b0),
2905 .q(spare4_flop_unused));
2906assign si_4 = so_3;
2907
2908cl_u1_buf_32x spare4_buf_32x (.in(1'b1),
2909 .out(spare4_buf_32x_unused));
2910cl_u1_nand3_8x spare4_nand3_8x (.in0(1'b1),
2911 .in1(1'b1),
2912 .in2(1'b1),
2913 .out(spare4_nand3_8x_unused));
2914cl_u1_inv_8x spare4_inv_8x (.in(1'b1),
2915 .out(spare4_inv_8x_unused));
2916cl_u1_aoi22_4x spare4_aoi22_4x (.in00(1'b1),
2917 .in01(1'b1),
2918 .in10(1'b1),
2919 .in11(1'b1),
2920 .out(spare4_aoi22_4x_unused));
2921cl_u1_buf_8x spare4_buf_8x (.in(1'b1),
2922 .out(spare4_buf_8x_unused));
2923cl_u1_oai22_4x spare4_oai22_4x (.in00(1'b1),
2924 .in01(1'b1),
2925 .in10(1'b1),
2926 .in11(1'b1),
2927 .out(spare4_oai22_4x_unused));
2928cl_u1_inv_16x spare4_inv_16x (.in(1'b1),
2929 .out(spare4_inv_16x_unused));
2930cl_u1_nand2_16x spare4_nand2_16x (.in0(1'b1),
2931 .in1(1'b1),
2932 .out(spare4_nand2_16x_unused));
2933cl_u1_nor3_4x spare4_nor3_4x (.in0(1'b0),
2934 .in1(1'b0),
2935 .in2(1'b0),
2936 .out(spare4_nor3_4x_unused));
2937cl_u1_nand2_8x spare4_nand2_8x (.in0(1'b1),
2938 .in1(1'b1),
2939 .out(spare4_nand2_8x_unused));
2940cl_u1_buf_16x spare4_buf_16x (.in(1'b1),
2941 .out(spare4_buf_16x_unused));
2942cl_u1_nor2_16x spare4_nor2_16x (.in0(1'b0),
2943 .in1(1'b0),
2944 .out(spare4_nor2_16x_unused));
2945cl_u1_inv_32x spare4_inv_32x (.in(1'b1),
2946 .out(spare4_inv_32x_unused));
2947
2948cl_sc1_msff_8x spare5_flop (.l1clk(l1clk),
2949 .siclk(siclk),
2950 .soclk(soclk),
2951 .si(si_5),
2952 .so(so_5),
2953 .d(1'b0),
2954 .q(spare5_flop_unused));
2955assign si_5 = so_4;
2956
2957cl_u1_buf_32x spare5_buf_32x (.in(1'b1),
2958 .out(spare5_buf_32x_unused));
2959cl_u1_nand3_8x spare5_nand3_8x (.in0(1'b1),
2960 .in1(1'b1),
2961 .in2(1'b1),
2962 .out(spare5_nand3_8x_unused));
2963cl_u1_inv_8x spare5_inv_8x (.in(1'b1),
2964 .out(spare5_inv_8x_unused));
2965cl_u1_aoi22_4x spare5_aoi22_4x (.in00(1'b1),
2966 .in01(1'b1),
2967 .in10(1'b1),
2968 .in11(1'b1),
2969 .out(spare5_aoi22_4x_unused));
2970cl_u1_buf_8x spare5_buf_8x (.in(1'b1),
2971 .out(spare5_buf_8x_unused));
2972cl_u1_oai22_4x spare5_oai22_4x (.in00(1'b1),
2973 .in01(1'b1),
2974 .in10(1'b1),
2975 .in11(1'b1),
2976 .out(spare5_oai22_4x_unused));
2977cl_u1_inv_16x spare5_inv_16x (.in(1'b1),
2978 .out(spare5_inv_16x_unused));
2979cl_u1_nand2_16x spare5_nand2_16x (.in0(1'b1),
2980 .in1(1'b1),
2981 .out(spare5_nand2_16x_unused));
2982cl_u1_nor3_4x spare5_nor3_4x (.in0(1'b0),
2983 .in1(1'b0),
2984 .in2(1'b0),
2985 .out(spare5_nor3_4x_unused));
2986cl_u1_nand2_8x spare5_nand2_8x (.in0(1'b1),
2987 .in1(1'b1),
2988 .out(spare5_nand2_8x_unused));
2989cl_u1_buf_16x spare5_buf_16x (.in(1'b1),
2990 .out(spare5_buf_16x_unused));
2991cl_u1_nor2_16x spare5_nor2_16x (.in0(1'b0),
2992 .in1(1'b0),
2993 .out(spare5_nor2_16x_unused));
2994cl_u1_inv_32x spare5_inv_32x (.in(1'b1),
2995 .out(spare5_inv_32x_unused));
2996
2997cl_sc1_msff_8x spare6_flop (.l1clk(l1clk),
2998 .siclk(siclk),
2999 .soclk(soclk),
3000 .si(si_6),
3001 .so(so_6),
3002 .d(1'b0),
3003 .q(spare6_flop_unused));
3004assign si_6 = so_5;
3005
3006cl_u1_buf_32x spare6_buf_32x (.in(1'b1),
3007 .out(spare6_buf_32x_unused));
3008cl_u1_nand3_8x spare6_nand3_8x (.in0(1'b1),
3009 .in1(1'b1),
3010 .in2(1'b1),
3011 .out(spare6_nand3_8x_unused));
3012cl_u1_inv_8x spare6_inv_8x (.in(1'b1),
3013 .out(spare6_inv_8x_unused));
3014cl_u1_aoi22_4x spare6_aoi22_4x (.in00(1'b1),
3015 .in01(1'b1),
3016 .in10(1'b1),
3017 .in11(1'b1),
3018 .out(spare6_aoi22_4x_unused));
3019cl_u1_buf_8x spare6_buf_8x (.in(1'b1),
3020 .out(spare6_buf_8x_unused));
3021cl_u1_oai22_4x spare6_oai22_4x (.in00(1'b1),
3022 .in01(1'b1),
3023 .in10(1'b1),
3024 .in11(1'b1),
3025 .out(spare6_oai22_4x_unused));
3026cl_u1_inv_16x spare6_inv_16x (.in(1'b1),
3027 .out(spare6_inv_16x_unused));
3028cl_u1_nand2_16x spare6_nand2_16x (.in0(1'b1),
3029 .in1(1'b1),
3030 .out(spare6_nand2_16x_unused));
3031cl_u1_nor3_4x spare6_nor3_4x (.in0(1'b0),
3032 .in1(1'b0),
3033 .in2(1'b0),
3034 .out(spare6_nor3_4x_unused));
3035cl_u1_nand2_8x spare6_nand2_8x (.in0(1'b1),
3036 .in1(1'b1),
3037 .out(spare6_nand2_8x_unused));
3038cl_u1_buf_16x spare6_buf_16x (.in(1'b1),
3039 .out(spare6_buf_16x_unused));
3040cl_u1_nor2_16x spare6_nor2_16x (.in0(1'b0),
3041 .in1(1'b0),
3042 .out(spare6_nor2_16x_unused));
3043cl_u1_inv_32x spare6_inv_32x (.in(1'b1),
3044 .out(spare6_inv_32x_unused));
3045
3046cl_sc1_msff_8x spare7_flop (.l1clk(l1clk),
3047 .siclk(siclk),
3048 .soclk(soclk),
3049 .si(si_7),
3050 .so(so_7),
3051 .d(1'b0),
3052 .q(spare7_flop_unused));
3053assign si_7 = so_6;
3054
3055cl_u1_buf_32x spare7_buf_32x (.in(1'b1),
3056 .out(spare7_buf_32x_unused));
3057cl_u1_nand3_8x spare7_nand3_8x (.in0(1'b1),
3058 .in1(1'b1),
3059 .in2(1'b1),
3060 .out(spare7_nand3_8x_unused));
3061cl_u1_inv_8x spare7_inv_8x (.in(1'b1),
3062 .out(spare7_inv_8x_unused));
3063cl_u1_aoi22_4x spare7_aoi22_4x (.in00(1'b1),
3064 .in01(1'b1),
3065 .in10(1'b1),
3066 .in11(1'b1),
3067 .out(spare7_aoi22_4x_unused));
3068cl_u1_buf_8x spare7_buf_8x (.in(1'b1),
3069 .out(spare7_buf_8x_unused));
3070cl_u1_oai22_4x spare7_oai22_4x (.in00(1'b1),
3071 .in01(1'b1),
3072 .in10(1'b1),
3073 .in11(1'b1),
3074 .out(spare7_oai22_4x_unused));
3075cl_u1_inv_16x spare7_inv_16x (.in(1'b1),
3076 .out(spare7_inv_16x_unused));
3077cl_u1_nand2_16x spare7_nand2_16x (.in0(1'b1),
3078 .in1(1'b1),
3079 .out(spare7_nand2_16x_unused));
3080cl_u1_nor3_4x spare7_nor3_4x (.in0(1'b0),
3081 .in1(1'b0),
3082 .in2(1'b0),
3083 .out(spare7_nor3_4x_unused));
3084cl_u1_nand2_8x spare7_nand2_8x (.in0(1'b1),
3085 .in1(1'b1),
3086 .out(spare7_nand2_8x_unused));
3087cl_u1_buf_16x spare7_buf_16x (.in(1'b1),
3088 .out(spare7_buf_16x_unused));
3089cl_u1_nor2_16x spare7_nor2_16x (.in0(1'b0),
3090 .in1(1'b0),
3091 .out(spare7_nor2_16x_unused));
3092cl_u1_inv_32x spare7_inv_32x (.in(1'b1),
3093 .out(spare7_inv_32x_unused));
3094
3095cl_sc1_msff_8x spare8_flop (.l1clk(l1clk),
3096 .siclk(siclk),
3097 .soclk(soclk),
3098 .si(si_8),
3099 .so(so_8),
3100 .d(1'b0),
3101 .q(spare8_flop_unused));
3102assign si_8 = so_7;
3103
3104cl_u1_buf_32x spare8_buf_32x (.in(1'b1),
3105 .out(spare8_buf_32x_unused));
3106cl_u1_nand3_8x spare8_nand3_8x (.in0(1'b1),
3107 .in1(1'b1),
3108 .in2(1'b1),
3109 .out(spare8_nand3_8x_unused));
3110cl_u1_inv_8x spare8_inv_8x (.in(1'b1),
3111 .out(spare8_inv_8x_unused));
3112cl_u1_aoi22_4x spare8_aoi22_4x (.in00(1'b1),
3113 .in01(1'b1),
3114 .in10(1'b1),
3115 .in11(1'b1),
3116 .out(spare8_aoi22_4x_unused));
3117cl_u1_buf_8x spare8_buf_8x (.in(1'b1),
3118 .out(spare8_buf_8x_unused));
3119cl_u1_oai22_4x spare8_oai22_4x (.in00(1'b1),
3120 .in01(1'b1),
3121 .in10(1'b1),
3122 .in11(1'b1),
3123 .out(spare8_oai22_4x_unused));
3124cl_u1_inv_16x spare8_inv_16x (.in(1'b1),
3125 .out(spare8_inv_16x_unused));
3126cl_u1_nand2_16x spare8_nand2_16x (.in0(1'b1),
3127 .in1(1'b1),
3128 .out(spare8_nand2_16x_unused));
3129cl_u1_nor3_4x spare8_nor3_4x (.in0(1'b0),
3130 .in1(1'b0),
3131 .in2(1'b0),
3132 .out(spare8_nor3_4x_unused));
3133cl_u1_nand2_8x spare8_nand2_8x (.in0(1'b1),
3134 .in1(1'b1),
3135 .out(spare8_nand2_8x_unused));
3136cl_u1_buf_16x spare8_buf_16x (.in(1'b1),
3137 .out(spare8_buf_16x_unused));
3138cl_u1_nor2_16x spare8_nor2_16x (.in0(1'b0),
3139 .in1(1'b0),
3140 .out(spare8_nor2_16x_unused));
3141cl_u1_inv_32x spare8_inv_32x (.in(1'b1),
3142 .out(spare8_inv_32x_unused));
3143
3144cl_sc1_msff_8x spare9_flop (.l1clk(l1clk),
3145 .siclk(siclk),
3146 .soclk(soclk),
3147 .si(si_9),
3148 .so(so_9),
3149 .d(1'b0),
3150 .q(spare9_flop_unused));
3151assign si_9 = so_8;
3152
3153cl_u1_buf_32x spare9_buf_32x (.in(1'b1),
3154 .out(spare9_buf_32x_unused));
3155cl_u1_nand3_8x spare9_nand3_8x (.in0(1'b1),
3156 .in1(1'b1),
3157 .in2(1'b1),
3158 .out(spare9_nand3_8x_unused));
3159cl_u1_inv_8x spare9_inv_8x (.in(1'b1),
3160 .out(spare9_inv_8x_unused));
3161cl_u1_aoi22_4x spare9_aoi22_4x (.in00(1'b1),
3162 .in01(1'b1),
3163 .in10(1'b1),
3164 .in11(1'b1),
3165 .out(spare9_aoi22_4x_unused));
3166cl_u1_buf_8x spare9_buf_8x (.in(1'b1),
3167 .out(spare9_buf_8x_unused));
3168cl_u1_oai22_4x spare9_oai22_4x (.in00(1'b1),
3169 .in01(1'b1),
3170 .in10(1'b1),
3171 .in11(1'b1),
3172 .out(spare9_oai22_4x_unused));
3173cl_u1_inv_16x spare9_inv_16x (.in(1'b1),
3174 .out(spare9_inv_16x_unused));
3175cl_u1_nand2_16x spare9_nand2_16x (.in0(1'b1),
3176 .in1(1'b1),
3177 .out(spare9_nand2_16x_unused));
3178cl_u1_nor3_4x spare9_nor3_4x (.in0(1'b0),
3179 .in1(1'b0),
3180 .in2(1'b0),
3181 .out(spare9_nor3_4x_unused));
3182cl_u1_nand2_8x spare9_nand2_8x (.in0(1'b1),
3183 .in1(1'b1),
3184 .out(spare9_nand2_8x_unused));
3185cl_u1_buf_16x spare9_buf_16x (.in(1'b1),
3186 .out(spare9_buf_16x_unused));
3187cl_u1_nor2_16x spare9_nor2_16x (.in0(1'b0),
3188 .in1(1'b0),
3189 .out(spare9_nor2_16x_unused));
3190cl_u1_inv_32x spare9_inv_32x (.in(1'b1),
3191 .out(spare9_inv_32x_unused));
3192
3193cl_sc1_msff_8x spare10_flop (.l1clk(l1clk),
3194 .siclk(siclk),
3195 .soclk(soclk),
3196 .si(si_10),
3197 .so(so_10),
3198 .d(1'b0),
3199 .q(spare10_flop_unused));
3200assign si_10 = so_9;
3201
3202cl_u1_buf_32x spare10_buf_32x (.in(1'b1),
3203 .out(spare10_buf_32x_unused));
3204cl_u1_nand3_8x spare10_nand3_8x (.in0(1'b1),
3205 .in1(1'b1),
3206 .in2(1'b1),
3207 .out(spare10_nand3_8x_unused));
3208cl_u1_inv_8x spare10_inv_8x (.in(1'b1),
3209 .out(spare10_inv_8x_unused));
3210cl_u1_aoi22_4x spare10_aoi22_4x (.in00(1'b1),
3211 .in01(1'b1),
3212 .in10(1'b1),
3213 .in11(1'b1),
3214 .out(spare10_aoi22_4x_unused));
3215cl_u1_buf_8x spare10_buf_8x (.in(1'b1),
3216 .out(spare10_buf_8x_unused));
3217cl_u1_oai22_4x spare10_oai22_4x (.in00(1'b1),
3218 .in01(1'b1),
3219 .in10(1'b1),
3220 .in11(1'b1),
3221 .out(spare10_oai22_4x_unused));
3222cl_u1_inv_16x spare10_inv_16x (.in(1'b1),
3223 .out(spare10_inv_16x_unused));
3224cl_u1_nand2_16x spare10_nand2_16x (.in0(1'b1),
3225 .in1(1'b1),
3226 .out(spare10_nand2_16x_unused));
3227cl_u1_nor3_4x spare10_nor3_4x (.in0(1'b0),
3228 .in1(1'b0),
3229 .in2(1'b0),
3230 .out(spare10_nor3_4x_unused));
3231cl_u1_nand2_8x spare10_nand2_8x (.in0(1'b1),
3232 .in1(1'b1),
3233 .out(spare10_nand2_8x_unused));
3234cl_u1_buf_16x spare10_buf_16x (.in(1'b1),
3235 .out(spare10_buf_16x_unused));
3236cl_u1_nor2_16x spare10_nor2_16x (.in0(1'b0),
3237 .in1(1'b0),
3238 .out(spare10_nor2_16x_unused));
3239cl_u1_inv_32x spare10_inv_32x (.in(1'b1),
3240 .out(spare10_inv_32x_unused));
3241assign scan_out = so_10;
3242
3243
3244
3245endmodule
3246
3247
3248
3249
3250// any PARAMS parms go into naming of macro
3251
3252module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_128 (
3253 din,
3254 en,
3255 l1clk,
3256 scan_in,
3257 siclk,
3258 soclk,
3259 dout,
3260 scan_out);
3261wire [127:0] fdin;
3262wire [126:0] so;
3263
3264 input [127:0] din;
3265 input en;
3266 input l1clk;
3267 input scan_in;
3268
3269
3270 input siclk;
3271 input soclk;
3272
3273 output [127:0] dout;
3274 output scan_out;
3275assign fdin[127:0] = (din[127:0] & {128{en}}) | (dout[127:0] & ~{128{en}});
3276
3277
3278
3279
3280
3281
3282dff #(128) d0_0 (
3283.l1clk(l1clk),
3284.siclk(siclk),
3285.soclk(soclk),
3286.d(fdin[127:0]),
3287.si({scan_in,so[126:0]}),
3288.so({so[126:0],scan_out}),
3289.q(dout[127:0])
3290);
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303endmodule
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317// any PARAMS parms go into naming of macro
3318
3319module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_1 (
3320 din,
3321 en,
3322 l1clk,
3323 scan_in,
3324 siclk,
3325 soclk,
3326 dout,
3327 scan_out);
3328wire [0:0] fdin;
3329
3330 input [0:0] din;
3331 input en;
3332 input l1clk;
3333 input scan_in;
3334
3335
3336 input siclk;
3337 input soclk;
3338
3339 output [0:0] dout;
3340 output scan_out;
3341assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
3342
3343
3344
3345
3346
3347
3348dff #(1) d0_0 (
3349.l1clk(l1clk),
3350.siclk(siclk),
3351.soclk(soclk),
3352.d(fdin[0:0]),
3353.si(scan_in),
3354.so(scan_out),
3355.q(dout[0:0])
3356);
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369endmodule
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383// any PARAMS parms go into naming of macro
3384
3385module ncu_i2cscd_ctl_msff_ctl_macro__width_16 (
3386 din,
3387 l1clk,
3388 scan_in,
3389 siclk,
3390 soclk,
3391 dout,
3392 scan_out);
3393wire [15:0] fdin;
3394wire [14:0] so;
3395
3396 input [15:0] din;
3397 input l1clk;
3398 input scan_in;
3399
3400
3401 input siclk;
3402 input soclk;
3403
3404 output [15:0] dout;
3405 output scan_out;
3406assign fdin[15:0] = din[15:0];
3407
3408
3409
3410
3411
3412
3413dff #(16) d0_0 (
3414.l1clk(l1clk),
3415.siclk(siclk),
3416.soclk(soclk),
3417.d(fdin[15:0]),
3418.si({scan_in,so[14:0]}),
3419.so({so[14:0],scan_out}),
3420.q(dout[15:0])
3421);
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434endmodule
3435
3436
3437
3438
3439
3440// any PARAMS parms go into naming of macro
3441
3442module ncu_i2cscd_ctl_msff_ctl_macro__width_32 (
3443 din,
3444 l1clk,
3445 scan_in,
3446 siclk,
3447 soclk,
3448 dout,
3449 scan_out);
3450wire [31:0] fdin;
3451wire [30:0] so;
3452
3453 input [31:0] din;
3454 input l1clk;
3455 input scan_in;
3456
3457
3458 input siclk;
3459 input soclk;
3460
3461 output [31:0] dout;
3462 output scan_out;
3463assign fdin[31:0] = din[31:0];
3464
3465
3466
3467
3468
3469
3470dff #(32) d0_0 (
3471.l1clk(l1clk),
3472.siclk(siclk),
3473.soclk(soclk),
3474.d(fdin[31:0]),
3475.si({scan_in,so[30:0]}),
3476.so({so[30:0],scan_out}),
3477.q(dout[31:0])
3478);
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491endmodule
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505// any PARAMS parms go into naming of macro
3506
3507module ncu_i2cscd_ctl_msff_ctl_macro__width_2 (
3508 din,
3509 l1clk,
3510 scan_in,
3511 siclk,
3512 soclk,
3513 dout,
3514 scan_out);
3515wire [1:0] fdin;
3516wire [0:0] so;
3517
3518 input [1:0] din;
3519 input l1clk;
3520 input scan_in;
3521
3522
3523 input siclk;
3524 input soclk;
3525
3526 output [1:0] dout;
3527 output scan_out;
3528assign fdin[1:0] = din[1:0];
3529
3530
3531
3532
3533
3534
3535dff #(2) d0_0 (
3536.l1clk(l1clk),
3537.siclk(siclk),
3538.soclk(soclk),
3539.d(fdin[1:0]),
3540.si({scan_in,so[0:0]}),
3541.so({so[0:0],scan_out}),
3542.q(dout[1:0])
3543);
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556endmodule
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570// any PARAMS parms go into naming of macro
3571
3572module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_32 (
3573 din,
3574 en,
3575 l1clk,
3576 scan_in,
3577 siclk,
3578 soclk,
3579 dout,
3580 scan_out);
3581wire [31:0] fdin;
3582wire [30:0] so;
3583
3584 input [31:0] din;
3585 input en;
3586 input l1clk;
3587 input scan_in;
3588
3589
3590 input siclk;
3591 input soclk;
3592
3593 output [31:0] dout;
3594 output scan_out;
3595assign fdin[31:0] = (din[31:0] & {32{en}}) | (dout[31:0] & ~{32{en}});
3596
3597
3598
3599
3600
3601
3602dff #(32) d0_0 (
3603.l1clk(l1clk),
3604.siclk(siclk),
3605.soclk(soclk),
3606.d(fdin[31:0]),
3607.si({scan_in,so[30:0]}),
3608.so({so[30:0],scan_out}),
3609.q(dout[31:0])
3610);
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623endmodule
3624
3625
3626
3627
3628
3629
3630// any PARAMS parms go into naming of macro
3631
3632module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_16 (
3633 din,
3634 en,
3635 l1clk,
3636 scan_in,
3637 siclk,
3638 soclk,
3639 dout,
3640 scan_out);
3641wire [15:0] fdin;
3642wire [14:0] so;
3643
3644 input [15:0] din;
3645 input en;
3646 input l1clk;
3647 input scan_in;
3648
3649
3650 input siclk;
3651 input soclk;
3652
3653 output [15:0] dout;
3654 output scan_out;
3655assign fdin[15:0] = (din[15:0] & {16{en}}) | (dout[15:0] & ~{16{en}});
3656
3657
3658
3659
3660
3661
3662dff #(16) d0_0 (
3663.l1clk(l1clk),
3664.siclk(siclk),
3665.soclk(soclk),
3666.d(fdin[15:0]),
3667.si({scan_in,so[14:0]}),
3668.so({so[14:0],scan_out}),
3669.q(dout[15:0])
3670);
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683endmodule
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697// any PARAMS parms go into naming of macro
3698
3699module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_64 (
3700 din,
3701 en,
3702 l1clk,
3703 scan_in,
3704 siclk,
3705 soclk,
3706 dout,
3707 scan_out);
3708wire [63:0] fdin;
3709wire [62:0] so;
3710
3711 input [63:0] din;
3712 input en;
3713 input l1clk;
3714 input scan_in;
3715
3716
3717 input siclk;
3718 input soclk;
3719
3720 output [63:0] dout;
3721 output scan_out;
3722assign fdin[63:0] = (din[63:0] & {64{en}}) | (dout[63:0] & ~{64{en}});
3723
3724
3725
3726
3727
3728
3729dff #(64) d0_0 (
3730.l1clk(l1clk),
3731.siclk(siclk),
3732.soclk(soclk),
3733.d(fdin[63:0]),
3734.si({scan_in,so[62:0]}),
3735.so({so[62:0],scan_out}),
3736.q(dout[63:0])
3737);
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750endmodule
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764// any PARAMS parms go into naming of macro
3765
3766module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_140 (
3767 din,
3768 en,
3769 l1clk,
3770 scan_in,
3771 siclk,
3772 soclk,
3773 dout,
3774 scan_out);
3775wire [139:0] fdin;
3776wire [138:0] so;
3777
3778 input [139:0] din;
3779 input en;
3780 input l1clk;
3781 input scan_in;
3782
3783
3784 input siclk;
3785 input soclk;
3786
3787 output [139:0] dout;
3788 output scan_out;
3789assign fdin[139:0] = (din[139:0] & {140{en}}) | (dout[139:0] & ~{140{en}});
3790
3791
3792
3793
3794
3795
3796dff #(140) d0_0 (
3797.l1clk(l1clk),
3798.siclk(siclk),
3799.soclk(soclk),
3800.d(fdin[139:0]),
3801.si({scan_in,so[138:0]}),
3802.so({so[138:0],scan_out}),
3803.q(dout[139:0])
3804);
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817endmodule
3818
3819
3820
3821
3822
3823
3824
3825
3826// any PARAMS parms go into naming of macro
3827
3828module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_4 (
3829 din,
3830 en,
3831 l1clk,
3832 scan_in,
3833 siclk,
3834 soclk,
3835 dout,
3836 scan_out);
3837wire [3:0] fdin;
3838wire [2:0] so;
3839
3840 input [3:0] din;
3841 input en;
3842 input l1clk;
3843 input scan_in;
3844
3845
3846 input siclk;
3847 input soclk;
3848
3849 output [3:0] dout;
3850 output scan_out;
3851assign fdin[3:0] = (din[3:0] & {4{en}}) | (dout[3:0] & ~{4{en}});
3852
3853
3854
3855
3856
3857
3858dff #(4) d0_0 (
3859.l1clk(l1clk),
3860.siclk(siclk),
3861.soclk(soclk),
3862.d(fdin[3:0]),
3863.si({scan_in,so[2:0]}),
3864.so({so[2:0],scan_out}),
3865.q(dout[3:0])
3866);
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879endmodule
3880
3881
3882
3883
3884
3885// any PARAMS parms go into naming of macro
3886
3887module ncu_i2cscd_ctl_msff_ctl_macro__en_1__width_25 (
3888 din,
3889 en,
3890 l1clk,
3891 scan_in,
3892 siclk,
3893 soclk,
3894 dout,
3895 scan_out);
3896wire [24:0] fdin;
3897wire [23:0] so;
3898
3899 input [24:0] din;
3900 input en;
3901 input l1clk;
3902 input scan_in;
3903
3904
3905 input siclk;
3906 input soclk;
3907
3908 output [24:0] dout;
3909 output scan_out;
3910assign fdin[24:0] = (din[24:0] & {25{en}}) | (dout[24:0] & ~{25{en}});
3911
3912
3913
3914
3915
3916
3917dff #(25) d0_0 (
3918.l1clk(l1clk),
3919.siclk(siclk),
3920.soclk(soclk),
3921.d(fdin[24:0]),
3922.si({scan_in,so[23:0]}),
3923.so({so[23:0],scan_out}),
3924.q(dout[24:0])
3925);
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938endmodule
3939
3940