Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / mcu / rtl / mcu_adrq_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: mcu_adrq_dp.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35module mcu_adrq_dp (
36 l2clk,
37 drl2clk,
38 scan_in,
39 scan_out,
40 tcu_pce_ov,
41 tcu_aclk,
42 tcu_bclk,
43 tcu_scan_en,
44 drif_scm,
45 rd_rank_adr,
46 rd_bank_adr,
47 rd_ras_adr,
48 rd_cas_adr,
49 l2rd_req_id,
50 wr_rank_adr,
51 wr_bank_adr,
52 wr_ras_adr,
53 wr_cas_adr,
54 rd_adr_queue7_en,
55 rd_adr_queue6_en,
56 rd_adr_queue5_en,
57 rd_adr_queue4_en,
58 rd_adr_queue3_en,
59 rd_adr_queue2_en,
60 rd_adr_queue1_en,
61 rd_adr_queue0_en,
62 rd_adr_queue_sel,
63 wr_adr_queue7_en,
64 wr_adr_queue6_en,
65 wr_adr_queue5_en,
66 wr_adr_queue4_en,
67 wr_adr_queue3_en,
68 wr_adr_queue2_en,
69 wr_adr_queue1_en,
70 wr_adr_queue0_en,
71 wr_adr_queue_sel,
72 wr1_adr_queue_sel,
73 wr2_adr_queue_sel,
74 req_rdwr_addr_sel,
75 ras_adr_queue,
76 cas_adr_queue,
77 rd_req_id_queue,
78 ras_wr1_adr_queue,
79 cas_wr1_adr_queue,
80 ras_wr2_adr_queue,
81 cas_wr2_adr_queue,
82 rd_wr_adr7_eq,
83 rd_wr_adr6_eq,
84 rd_wr_adr5_eq,
85 rd_wr_adr4_eq,
86 rd_wr_adr3_eq,
87 rd_wr_adr2_eq,
88 rd_wr_adr1_eq,
89 rd_wr_adr0_eq);
90wire pce_ov;
91wire stop;
92wire siclk;
93wire soclk;
94wire se;
95wire u_mcu_rd_adr_sync_scanin;
96wire u_mcu_rd_adr_sync_scanout;
97wire [2:0] mcu_rd_req_id;
98wire [3:0] mcu_rank_rd_adr;
99wire [2:0] mcu_bank_rd_adr;
100wire [14:0] mcu_ras_rd_adr;
101wire [10:0] mcu_cas_rd_adr;
102wire u_mcu_wr_adr_sync_scanin;
103wire u_mcu_wr_adr_sync_scanout;
104wire adrq_scm;
105wire [3:0] mcu_rank_wr_adr;
106wire [2:0] mcu_bank_wr_adr;
107wire [14:0] mcu_ras_wr_adr;
108wire [10:0] mcu_cas_wr_adr;
109wire u_rd_adr_queue7_scanin;
110wire u_rd_adr_queue7_scanout;
111wire [2:0] rd_req_id_queue7;
112wire [3:0] rank_rd_adr_queue7;
113wire [2:0] bank_rd_adr_queue7;
114wire [14:0] ras_rd_adr_queue7;
115wire [10:0] cas_rd_adr_queue7;
116wire u_rd_adr_queue6_scanin;
117wire u_rd_adr_queue6_scanout;
118wire [2:0] rd_req_id_queue6;
119wire [3:0] rank_rd_adr_queue6;
120wire [2:0] bank_rd_adr_queue6;
121wire [14:0] ras_rd_adr_queue6;
122wire [10:0] cas_rd_adr_queue6;
123wire u_rd_adr_queue5_scanin;
124wire u_rd_adr_queue5_scanout;
125wire [2:0] rd_req_id_queue5;
126wire [3:0] rank_rd_adr_queue5;
127wire [2:0] bank_rd_adr_queue5;
128wire [14:0] ras_rd_adr_queue5;
129wire [10:0] cas_rd_adr_queue5;
130wire u_rd_adr_queue4_scanin;
131wire u_rd_adr_queue4_scanout;
132wire [2:0] rd_req_id_queue4;
133wire [3:0] rank_rd_adr_queue4;
134wire [2:0] bank_rd_adr_queue4;
135wire [14:0] ras_rd_adr_queue4;
136wire [10:0] cas_rd_adr_queue4;
137wire u_rd_adr_queue3_scanin;
138wire u_rd_adr_queue3_scanout;
139wire [2:0] rd_req_id_queue3;
140wire [3:0] rank_rd_adr_queue3;
141wire [2:0] bank_rd_adr_queue3;
142wire [14:0] ras_rd_adr_queue3;
143wire [10:0] cas_rd_adr_queue3;
144wire u_rd_adr_queue2_scanin;
145wire u_rd_adr_queue2_scanout;
146wire [2:0] rd_req_id_queue2;
147wire [3:0] rank_rd_adr_queue2;
148wire [2:0] bank_rd_adr_queue2;
149wire [14:0] ras_rd_adr_queue2;
150wire [10:0] cas_rd_adr_queue2;
151wire u_rd_adr_queue1_scanin;
152wire u_rd_adr_queue1_scanout;
153wire [2:0] rd_req_id_queue1;
154wire [3:0] rank_rd_adr_queue1;
155wire [2:0] bank_rd_adr_queue1;
156wire [14:0] ras_rd_adr_queue1;
157wire [10:0] cas_rd_adr_queue1;
158wire u_rd_adr_queue0_scanin;
159wire u_rd_adr_queue0_scanout;
160wire [2:0] rd_req_id_queue0;
161wire [3:0] rank_rd_adr_queue0;
162wire [2:0] bank_rd_adr_queue0;
163wire [14:0] ras_rd_adr_queue0;
164wire [10:0] cas_rd_adr_queue0;
165wire [3:0] rank_rd_adr_queue;
166wire [2:0] bank_rd_adr_queue;
167wire [14:0] ras_rd_adr_queue;
168wire [10:0] cas_rd_adr_queue;
169wire adrq_scm_l;
170wire cas_rd_adr_cmp_2;
171wire u_wr_adr_queue7_scanin;
172wire u_wr_adr_queue7_scanout;
173wire [3:0] rank_wr_adr_queue7;
174wire [2:0] bank_wr_adr_queue7;
175wire [14:0] ras_wr_adr_queue7;
176wire [10:0] cas_wr_adr_queue7;
177wire u_wr_adr_queue6_scanin;
178wire u_wr_adr_queue6_scanout;
179wire [3:0] rank_wr_adr_queue6;
180wire [2:0] bank_wr_adr_queue6;
181wire [14:0] ras_wr_adr_queue6;
182wire [10:0] cas_wr_adr_queue6;
183wire u_wr_adr_queue5_scanin;
184wire u_wr_adr_queue5_scanout;
185wire [3:0] rank_wr_adr_queue5;
186wire [2:0] bank_wr_adr_queue5;
187wire [14:0] ras_wr_adr_queue5;
188wire [10:0] cas_wr_adr_queue5;
189wire u_wr_adr_queue4_scanin;
190wire u_wr_adr_queue4_scanout;
191wire [3:0] rank_wr_adr_queue4;
192wire [2:0] bank_wr_adr_queue4;
193wire [14:0] ras_wr_adr_queue4;
194wire [10:0] cas_wr_adr_queue4;
195wire u_wr_adr_queue3_scanin;
196wire u_wr_adr_queue3_scanout;
197wire [3:0] rank_wr_adr_queue3;
198wire [2:0] bank_wr_adr_queue3;
199wire [14:0] ras_wr_adr_queue3;
200wire [10:0] cas_wr_adr_queue3;
201wire u_wr_adr_queue2_scanin;
202wire u_wr_adr_queue2_scanout;
203wire [3:0] rank_wr_adr_queue2;
204wire [2:0] bank_wr_adr_queue2;
205wire [14:0] ras_wr_adr_queue2;
206wire [10:0] cas_wr_adr_queue2;
207wire u_wr_adr_queue1_scanin;
208wire u_wr_adr_queue1_scanout;
209wire [3:0] rank_wr_adr_queue1;
210wire [2:0] bank_wr_adr_queue1;
211wire [14:0] ras_wr_adr_queue1;
212wire [10:0] cas_wr_adr_queue1;
213wire u_wr_adr_queue0_scanin;
214wire u_wr_adr_queue0_scanout;
215wire [3:0] rank_wr_adr_queue0;
216wire [2:0] bank_wr_adr_queue0;
217wire [14:0] ras_wr_adr_queue0;
218wire [10:0] cas_wr_adr_queue0;
219wire [14:0] ras_wr_adr_queue;
220wire [10:0] cas_wr_adr_queue;
221
222
223input l2clk;
224input drl2clk;
225
226
227input scan_in;
228output scan_out;
229input tcu_pce_ov;
230input tcu_aclk;
231input tcu_bclk;
232input tcu_scan_en;
233
234input drif_scm;
235
236input [3:0] rd_rank_adr;
237input [2:0] rd_bank_adr;
238input [14:0] rd_ras_adr;
239input [10:0] rd_cas_adr;
240input [2:0] l2rd_req_id;
241
242input [3:0] wr_rank_adr;
243input [2:0] wr_bank_adr;
244input [14:0] wr_ras_adr;
245input [10:0] wr_cas_adr;
246
247input rd_adr_queue7_en;
248input rd_adr_queue6_en;
249input rd_adr_queue5_en;
250input rd_adr_queue4_en;
251input rd_adr_queue3_en;
252input rd_adr_queue2_en;
253input rd_adr_queue1_en;
254input rd_adr_queue0_en;
255input [7:0] rd_adr_queue_sel;
256
257input wr_adr_queue7_en;
258input wr_adr_queue6_en;
259input wr_adr_queue5_en;
260input wr_adr_queue4_en;
261input wr_adr_queue3_en;
262input wr_adr_queue2_en;
263input wr_adr_queue1_en;
264input wr_adr_queue0_en;
265input [7:0] wr_adr_queue_sel;
266input [7:0] wr1_adr_queue_sel;
267input [7:0] wr2_adr_queue_sel;
268
269input [1:0] req_rdwr_addr_sel;
270
271output [14:0] ras_adr_queue; // RAS address
272output [10:0] cas_adr_queue; // CAS address
273output [2:0] rd_req_id_queue; // read request ID
274
275output [14:0] ras_wr1_adr_queue; // RAS for write in B Command slot
276output [10:0] cas_wr1_adr_queue; // CAS for write in B Command slot
277output [14:0] ras_wr2_adr_queue; // RAS for write in C Command slot
278output [10:0] cas_wr2_adr_queue; // CAS for write in C Command slot
279
280output rd_wr_adr7_eq;
281output rd_wr_adr6_eq;
282output rd_wr_adr5_eq;
283output rd_wr_adr4_eq;
284output rd_wr_adr3_eq;
285output rd_wr_adr2_eq;
286output rd_wr_adr1_eq;
287output rd_wr_adr0_eq;
288
289// Scan reassigns
290assign pce_ov = tcu_pce_ov;
291assign stop = 1'b0;
292assign siclk = tcu_aclk;
293assign soclk = tcu_bclk;
294assign se = tcu_scan_en;
295
296// read request address flops
297
298mcu_adrq_dp_msff_macro__stack_38r__width_36 u_mcu_rd_adr_sync (
299 .scan_in(u_mcu_rd_adr_sync_scanin),
300 .scan_out(u_mcu_rd_adr_sync_scanout),
301 .clk ( drl2clk ),
302 .en ( 1'b1 ),
303 .din ( { l2rd_req_id[2:0], rd_rank_adr[3:0], rd_bank_adr[2:0], rd_ras_adr[14:0], rd_cas_adr[10:0] } ),
304 .dout ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
305 .se(se),
306 .siclk(siclk),
307 .soclk(soclk),
308 .pce_ov(pce_ov),
309 .stop(stop) );
310
311
312// write request address flops
313
314mcu_adrq_dp_msff_macro__stack_38r__width_34 u_mcu_wr_adr_sync (
315 .scan_in(u_mcu_wr_adr_sync_scanin),
316 .scan_out(u_mcu_wr_adr_sync_scanout),
317 .clk ( drl2clk ),
318 .en ( 1'b1 ),
319 .din ( { drif_scm, wr_rank_adr[3:0], wr_bank_adr[2:0], wr_ras_adr[14:0], wr_cas_adr[10:2], 2'b0 } ),
320 .dout ( { adrq_scm, mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] }),
321 .se(se),
322 .siclk(siclk),
323 .soclk(soclk),
324 .pce_ov(pce_ov),
325 .stop(stop) );
326
327
328
329// 8-entry read address request queue
330
331mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue7 (
332 .scan_in(u_rd_adr_queue7_scanin),
333 .scan_out(u_rd_adr_queue7_scanout),
334 .clk ( drl2clk ),
335 .en ( rd_adr_queue7_en ),
336 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
337 .dout ( { rd_req_id_queue7[2:0], rank_rd_adr_queue7[3:0], bank_rd_adr_queue7[2:0], ras_rd_adr_queue7[14:0], cas_rd_adr_queue7[10:0] } ),
338 .se(se),
339 .siclk(siclk),
340 .soclk(soclk),
341 .pce_ov(pce_ov),
342 .stop(stop) );
343
344mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue6 (
345 .scan_in(u_rd_adr_queue6_scanin),
346 .scan_out(u_rd_adr_queue6_scanout),
347 .clk ( drl2clk ),
348 .en ( rd_adr_queue6_en ),
349 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
350 .dout ( { rd_req_id_queue6[2:0], rank_rd_adr_queue6[3:0], bank_rd_adr_queue6[2:0], ras_rd_adr_queue6[14:0], cas_rd_adr_queue6[10:0] } ),
351 .se(se),
352 .siclk(siclk),
353 .soclk(soclk),
354 .pce_ov(pce_ov),
355 .stop(stop) );
356
357mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue5 (
358 .scan_in(u_rd_adr_queue5_scanin),
359 .scan_out(u_rd_adr_queue5_scanout),
360 .clk ( drl2clk ),
361 .en ( rd_adr_queue5_en ),
362 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
363 .dout ( { rd_req_id_queue5[2:0], rank_rd_adr_queue5[3:0], bank_rd_adr_queue5[2:0], ras_rd_adr_queue5[14:0], cas_rd_adr_queue5[10:0] } ),
364 .se(se),
365 .siclk(siclk),
366 .soclk(soclk),
367 .pce_ov(pce_ov),
368 .stop(stop) );
369
370mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue4 (
371 .scan_in(u_rd_adr_queue4_scanin),
372 .scan_out(u_rd_adr_queue4_scanout),
373 .clk ( drl2clk ),
374 .en ( rd_adr_queue4_en ),
375 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
376 .dout ( { rd_req_id_queue4[2:0], rank_rd_adr_queue4[3:0], bank_rd_adr_queue4[2:0], ras_rd_adr_queue4[14:0], cas_rd_adr_queue4[10:0] } ),
377 .se(se),
378 .siclk(siclk),
379 .soclk(soclk),
380 .pce_ov(pce_ov),
381 .stop(stop) );
382
383mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue3 (
384 .scan_in(u_rd_adr_queue3_scanin),
385 .scan_out(u_rd_adr_queue3_scanout),
386 .clk ( drl2clk ),
387 .en ( rd_adr_queue3_en ),
388 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
389 .dout ( { rd_req_id_queue3[2:0], rank_rd_adr_queue3[3:0], bank_rd_adr_queue3[2:0], ras_rd_adr_queue3[14:0], cas_rd_adr_queue3[10:0] } ),
390 .se(se),
391 .siclk(siclk),
392 .soclk(soclk),
393 .pce_ov(pce_ov),
394 .stop(stop) );
395
396mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue2 (
397 .scan_in(u_rd_adr_queue2_scanin),
398 .scan_out(u_rd_adr_queue2_scanout),
399 .clk ( drl2clk ),
400 .en ( rd_adr_queue2_en ),
401 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
402 .dout ( { rd_req_id_queue2[2:0], rank_rd_adr_queue2[3:0], bank_rd_adr_queue2[2:0], ras_rd_adr_queue2[14:0], cas_rd_adr_queue2[10:0] } ),
403 .se(se),
404 .siclk(siclk),
405 .soclk(soclk),
406 .pce_ov(pce_ov),
407 .stop(stop) );
408
409mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue1 (
410 .scan_in(u_rd_adr_queue1_scanin),
411 .scan_out(u_rd_adr_queue1_scanout),
412 .clk ( drl2clk ),
413 .en ( rd_adr_queue1_en ),
414 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
415 .dout ( { rd_req_id_queue1[2:0], rank_rd_adr_queue1[3:0], bank_rd_adr_queue1[2:0], ras_rd_adr_queue1[14:0], cas_rd_adr_queue1[10:0] } ),
416 .se(se),
417 .siclk(siclk),
418 .soclk(soclk),
419 .pce_ov(pce_ov),
420 .stop(stop) );
421
422mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue0 (
423 .scan_in(u_rd_adr_queue0_scanin),
424 .scan_out(u_rd_adr_queue0_scanout),
425 .clk ( drl2clk ),
426 .en ( rd_adr_queue0_en ),
427 .din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
428 .dout ( { rd_req_id_queue0[2:0], rank_rd_adr_queue0[3:0], bank_rd_adr_queue0[2:0], ras_rd_adr_queue0[14:0], cas_rd_adr_queue0[10:0] } ),
429 .se(se),
430 .siclk(siclk),
431 .soclk(soclk),
432 .pce_ov(pce_ov),
433 .stop(stop) );
434
435mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_36 u_rd_adr_queue (
436 .din0 ( { rd_req_id_queue0[2:0], rank_rd_adr_queue0[3:0], bank_rd_adr_queue0[2:0], ras_rd_adr_queue0[14:0], cas_rd_adr_queue0[10:0] } ), // default
437 .din1 ( { rd_req_id_queue1[2:0], rank_rd_adr_queue1[3:0], bank_rd_adr_queue1[2:0], ras_rd_adr_queue1[14:0], cas_rd_adr_queue1[10:0] } ),
438 .din2 ( { rd_req_id_queue2[2:0], rank_rd_adr_queue2[3:0], bank_rd_adr_queue2[2:0], ras_rd_adr_queue2[14:0], cas_rd_adr_queue2[10:0] } ),
439 .din3 ( { rd_req_id_queue3[2:0], rank_rd_adr_queue3[3:0], bank_rd_adr_queue3[2:0], ras_rd_adr_queue3[14:0], cas_rd_adr_queue3[10:0] } ),
440 .din4 ( { rd_req_id_queue4[2:0], rank_rd_adr_queue4[3:0], bank_rd_adr_queue4[2:0], ras_rd_adr_queue4[14:0], cas_rd_adr_queue4[10:0] } ),
441 .din5 ( { rd_req_id_queue5[2:0], rank_rd_adr_queue5[3:0], bank_rd_adr_queue5[2:0], ras_rd_adr_queue5[14:0], cas_rd_adr_queue5[10:0] } ),
442 .din6 ( { rd_req_id_queue6[2:0], rank_rd_adr_queue6[3:0], bank_rd_adr_queue6[2:0], ras_rd_adr_queue6[14:0], cas_rd_adr_queue6[10:0] } ),
443 .din7 ( { rd_req_id_queue7[2:0], rank_rd_adr_queue7[3:0], bank_rd_adr_queue7[2:0], ras_rd_adr_queue7[14:0], cas_rd_adr_queue7[10:0] } ),
444 .sel0 ( rd_adr_queue_sel[0] ),
445 .sel1 ( rd_adr_queue_sel[1] ),
446 .sel2 ( rd_adr_queue_sel[2] ),
447 .sel3 ( rd_adr_queue_sel[3] ),
448 .sel4 ( rd_adr_queue_sel[4] ),
449 .sel5 ( rd_adr_queue_sel[5] ),
450 .sel6 ( rd_adr_queue_sel[6] ),
451 .sel7 ( rd_adr_queue_sel[7] ),
452 .dout ( { rd_req_id_queue[2:0], rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:0] } ) );
453
454// Mask off bit 2 in single channel mode for RAW hazard compare
455mcu_adrq_dp_inv_macro u_inv_scm ( .din(adrq_scm), .dout(adrq_scm_l));
456mcu_adrq_dp_and_macro u_rd_adr_2 ( .din0(adrq_scm_l), .din1(cas_rd_adr_queue[2]), .dout(cas_rd_adr_cmp_2));
457
458// 8-entry write address request queue
459
460mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue7 (
461 .scan_in(u_wr_adr_queue7_scanin),
462 .scan_out(u_wr_adr_queue7_scanout),
463 .clk ( drl2clk ),
464 .en ( wr_adr_queue7_en ),
465 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
466 .dout ( { rank_wr_adr_queue7[3:0], bank_wr_adr_queue7[2:0], ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
467 .se(se),
468 .siclk(siclk),
469 .soclk(soclk),
470 .pce_ov(pce_ov),
471 .stop(stop) );
472
473mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue7 (
474 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
475 .din1 ( { 1'b0, rank_wr_adr_queue7[3:0], bank_wr_adr_queue7[2:0], ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:2] } ),
476 .dout ( rd_wr_adr7_eq ));
477
478mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue6 (
479 .scan_in(u_wr_adr_queue6_scanin),
480 .scan_out(u_wr_adr_queue6_scanout),
481 .clk ( drl2clk ),
482 .en ( wr_adr_queue6_en ),
483 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
484 .dout ( { rank_wr_adr_queue6[3:0], bank_wr_adr_queue6[2:0], ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
485 .se(se),
486 .siclk(siclk),
487 .soclk(soclk),
488 .pce_ov(pce_ov),
489 .stop(stop) );
490
491mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue6 (
492 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
493 .din1 ( { 1'b0, rank_wr_adr_queue6[3:0], bank_wr_adr_queue6[2:0], ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:2] } ),
494 .dout ( rd_wr_adr6_eq ));
495
496mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue5 (
497 .scan_in(u_wr_adr_queue5_scanin),
498 .scan_out(u_wr_adr_queue5_scanout),
499 .clk ( drl2clk ),
500 .en ( wr_adr_queue5_en ),
501 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
502 .dout ( { rank_wr_adr_queue5[3:0], bank_wr_adr_queue5[2:0], ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
503 .se(se),
504 .siclk(siclk),
505 .soclk(soclk),
506 .pce_ov(pce_ov),
507 .stop(stop) );
508
509mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue5 (
510 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
511 .din1 ( { 1'b0, rank_wr_adr_queue5[3:0], bank_wr_adr_queue5[2:0], ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:2] } ),
512 .dout ( rd_wr_adr5_eq ));
513
514mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue4 (
515 .scan_in(u_wr_adr_queue4_scanin),
516 .scan_out(u_wr_adr_queue4_scanout),
517 .clk ( drl2clk ),
518 .en ( wr_adr_queue4_en ),
519 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
520 .dout ( { rank_wr_adr_queue4[3:0], bank_wr_adr_queue4[2:0], ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
521 .se(se),
522 .siclk(siclk),
523 .soclk(soclk),
524 .pce_ov(pce_ov),
525 .stop(stop) );
526
527mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue4 (
528 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
529 .din1 ( { 1'b0, rank_wr_adr_queue4[3:0], bank_wr_adr_queue4[2:0], ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:2] } ),
530 .dout ( rd_wr_adr4_eq ));
531
532mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue3 (
533 .scan_in(u_wr_adr_queue3_scanin),
534 .scan_out(u_wr_adr_queue3_scanout),
535 .clk ( drl2clk ),
536 .en ( wr_adr_queue3_en ),
537 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
538 .dout ( { rank_wr_adr_queue3[3:0], bank_wr_adr_queue3[2:0], ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
539 .se(se),
540 .siclk(siclk),
541 .soclk(soclk),
542 .pce_ov(pce_ov),
543 .stop(stop) );
544
545mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue3 (
546 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
547 .din1 ( { 1'b0, rank_wr_adr_queue3[3:0], bank_wr_adr_queue3[2:0], ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:2] } ),
548 .dout ( rd_wr_adr3_eq ));
549
550mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue2 (
551 .scan_in(u_wr_adr_queue2_scanin),
552 .scan_out(u_wr_adr_queue2_scanout),
553 .clk ( drl2clk ),
554 .en ( wr_adr_queue2_en ),
555 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
556 .dout ( { rank_wr_adr_queue2[3:0], bank_wr_adr_queue2[2:0], ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
557 .se(se),
558 .siclk(siclk),
559 .soclk(soclk),
560 .pce_ov(pce_ov),
561 .stop(stop) );
562
563mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue2 (
564 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
565 .din1 ( { 1'b0, rank_wr_adr_queue2[3:0], bank_wr_adr_queue2[2:0], ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:2] } ),
566 .dout ( rd_wr_adr2_eq ));
567
568mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue1 (
569 .scan_in(u_wr_adr_queue1_scanin),
570 .scan_out(u_wr_adr_queue1_scanout),
571 .clk ( drl2clk ),
572 .en ( wr_adr_queue1_en ),
573 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
574 .dout ( { rank_wr_adr_queue1[3:0], bank_wr_adr_queue1[2:0], ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
575 .se(se),
576 .siclk(siclk),
577 .soclk(soclk),
578 .pce_ov(pce_ov),
579 .stop(stop) );
580
581mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue1 (
582 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
583 .din1 ( { 1'b0, rank_wr_adr_queue1[3:0], bank_wr_adr_queue1[2:0], ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:2] } ),
584 .dout ( rd_wr_adr1_eq ));
585
586mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue0 (
587 .scan_in(u_wr_adr_queue0_scanin),
588 .scan_out(u_wr_adr_queue0_scanout),
589 .clk ( drl2clk ),
590 .en ( wr_adr_queue0_en ),
591 .din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
592 .dout ( { rank_wr_adr_queue0[3:0], bank_wr_adr_queue0[2:0], ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ),
593 .se(se),
594 .siclk(siclk),
595 .soclk(soclk),
596 .pce_ov(pce_ov),
597 .stop(stop) );
598
599mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue0 (
600 .din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
601 .din1 ( { 1'b0, rank_wr_adr_queue0[3:0], bank_wr_adr_queue0[2:0], ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:2] } ),
602 .dout ( rd_wr_adr0_eq ));
603
604mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr0_adr_queue (
605 .din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
606 .din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
607 .din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
608 .din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
609 .din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
610 .din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
611 .din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
612 .din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
613 .sel0 ( wr_adr_queue_sel[0] ),
614 .sel1 ( wr_adr_queue_sel[1] ),
615 .sel2 ( wr_adr_queue_sel[2] ),
616 .sel3 ( wr_adr_queue_sel[3] ),
617 .sel4 ( wr_adr_queue_sel[4] ),
618 .sel5 ( wr_adr_queue_sel[5] ),
619 .sel6 ( wr_adr_queue_sel[6] ),
620 .sel7 ( wr_adr_queue_sel[7] ),
621 .dout ( { ras_wr_adr_queue[14:0], cas_wr_adr_queue[10:0] } ) );
622
623// request read/write address mux
624mcu_adrq_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 u_rdwr_adr_queue (
625 .din0 ( { ras_wr_adr_queue[14:0], cas_wr_adr_queue[10:0] } ),
626 .din1 ( { ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:0] } ), // default
627 .sel0 ( req_rdwr_addr_sel[0] ),
628 .sel1 ( req_rdwr_addr_sel[1] ),
629 .dout ( { ras_adr_queue[14:0], cas_adr_queue[10:0] } ) );
630
631mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr1_adr_queue (
632 .din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
633 .din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
634 .din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
635 .din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
636 .din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
637 .din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
638 .din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
639 .din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
640 .sel0 ( wr1_adr_queue_sel[0] ),
641 .sel1 ( wr1_adr_queue_sel[1] ),
642 .sel2 ( wr1_adr_queue_sel[2] ),
643 .sel3 ( wr1_adr_queue_sel[3] ),
644 .sel4 ( wr1_adr_queue_sel[4] ),
645 .sel5 ( wr1_adr_queue_sel[5] ),
646 .sel6 ( wr1_adr_queue_sel[6] ),
647 .sel7 ( wr1_adr_queue_sel[7] ),
648 .dout ( { ras_wr1_adr_queue[14:0], cas_wr1_adr_queue[10:0] } ) );
649
650mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr2_adr_queue (
651 .din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
652 .din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
653 .din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
654 .din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
655 .din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
656 .din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
657 .din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
658 .din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
659 .sel0 ( wr2_adr_queue_sel[0] ),
660 .sel1 ( wr2_adr_queue_sel[1] ),
661 .sel2 ( wr2_adr_queue_sel[2] ),
662 .sel3 ( wr2_adr_queue_sel[3] ),
663 .sel4 ( wr2_adr_queue_sel[4] ),
664 .sel5 ( wr2_adr_queue_sel[5] ),
665 .sel6 ( wr2_adr_queue_sel[6] ),
666 .sel7 ( wr2_adr_queue_sel[7] ),
667 .dout ( { ras_wr2_adr_queue[14:0], cas_wr2_adr_queue[10:0] } ) );
668
669// fixscan start:
670assign u_mcu_rd_adr_sync_scanin = scan_in ;
671assign u_mcu_wr_adr_sync_scanin = u_mcu_rd_adr_sync_scanout;
672assign u_rd_adr_queue7_scanin = u_mcu_wr_adr_sync_scanout;
673assign u_rd_adr_queue6_scanin = u_rd_adr_queue7_scanout ;
674assign u_rd_adr_queue5_scanin = u_rd_adr_queue6_scanout ;
675assign u_rd_adr_queue4_scanin = u_rd_adr_queue5_scanout ;
676assign u_rd_adr_queue3_scanin = u_rd_adr_queue4_scanout ;
677assign u_rd_adr_queue2_scanin = u_rd_adr_queue3_scanout ;
678assign u_rd_adr_queue1_scanin = u_rd_adr_queue2_scanout ;
679assign u_rd_adr_queue0_scanin = u_rd_adr_queue1_scanout ;
680assign u_wr_adr_queue7_scanin = u_rd_adr_queue0_scanout ;
681assign u_wr_adr_queue6_scanin = u_wr_adr_queue7_scanout ;
682assign u_wr_adr_queue5_scanin = u_wr_adr_queue6_scanout ;
683assign u_wr_adr_queue4_scanin = u_wr_adr_queue5_scanout ;
684assign u_wr_adr_queue3_scanin = u_wr_adr_queue4_scanout ;
685assign u_wr_adr_queue2_scanin = u_wr_adr_queue3_scanout ;
686assign u_wr_adr_queue1_scanin = u_wr_adr_queue2_scanout ;
687assign u_wr_adr_queue0_scanin = u_wr_adr_queue1_scanout ;
688assign scan_out = u_wr_adr_queue0_scanout ;
689// fixscan end:
690endmodule // mcu_adrq_dp
691
692
693
694
695
696
697// any PARAMS parms go into naming of macro
698
699module mcu_adrq_dp_msff_macro__stack_38r__width_36 (
700 din,
701 clk,
702 en,
703 se,
704 scan_in,
705 siclk,
706 soclk,
707 pce_ov,
708 stop,
709 dout,
710 scan_out);
711wire l1clk;
712wire siclk_out;
713wire soclk_out;
714wire [34:0] so;
715
716 input [35:0] din;
717
718
719 input clk;
720 input en;
721 input se;
722 input scan_in;
723 input siclk;
724 input soclk;
725 input pce_ov;
726 input stop;
727
728
729
730 output [35:0] dout;
731
732
733 output scan_out;
734
735
736
737
738cl_dp1_l1hdr_8x c0_0 (
739.l2clk(clk),
740.pce(en),
741.aclk(siclk),
742.bclk(soclk),
743.l1clk(l1clk),
744 .se(se),
745 .pce_ov(pce_ov),
746 .stop(stop),
747 .siclk_out(siclk_out),
748 .soclk_out(soclk_out)
749);
750dff #(36) d0_0 (
751.l1clk(l1clk),
752.siclk(siclk_out),
753.soclk(soclk_out),
754.d(din[35:0]),
755.si({scan_in,so[34:0]}),
756.so({so[34:0],scan_out}),
757.q(dout[35:0])
758);
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779endmodule
780
781
782
783
784
785
786
787
788
789
790
791
792
793// any PARAMS parms go into naming of macro
794
795module mcu_adrq_dp_msff_macro__stack_38r__width_34 (
796 din,
797 clk,
798 en,
799 se,
800 scan_in,
801 siclk,
802 soclk,
803 pce_ov,
804 stop,
805 dout,
806 scan_out);
807wire l1clk;
808wire siclk_out;
809wire soclk_out;
810wire [32:0] so;
811
812 input [33:0] din;
813
814
815 input clk;
816 input en;
817 input se;
818 input scan_in;
819 input siclk;
820 input soclk;
821 input pce_ov;
822 input stop;
823
824
825
826 output [33:0] dout;
827
828
829 output scan_out;
830
831
832
833
834cl_dp1_l1hdr_8x c0_0 (
835.l2clk(clk),
836.pce(en),
837.aclk(siclk),
838.bclk(soclk),
839.l1clk(l1clk),
840 .se(se),
841 .pce_ov(pce_ov),
842 .stop(stop),
843 .siclk_out(siclk_out),
844 .soclk_out(soclk_out)
845);
846dff #(34) d0_0 (
847.l1clk(l1clk),
848.siclk(siclk_out),
849.soclk(soclk_out),
850.d(din[33:0]),
851.si({scan_in,so[32:0]}),
852.so({so[32:0],scan_out}),
853.q(dout[33:0])
854);
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875endmodule
876
877
878
879
880
881
882
883
884
885// general mux macro for pass-gate and and-or muxes with/wout priority encoders
886// also for pass-gate with decoder
887
888
889
890
891
892// any PARAMS parms go into naming of macro
893
894module mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_36 (
895 din0,
896 sel0,
897 din1,
898 sel1,
899 din2,
900 sel2,
901 din3,
902 sel3,
903 din4,
904 sel4,
905 din5,
906 sel5,
907 din6,
908 sel6,
909 din7,
910 sel7,
911 dout);
912wire buffout0;
913wire buffout1;
914wire buffout2;
915wire buffout3;
916wire buffout4;
917wire buffout5;
918wire buffout6;
919wire buffout7;
920
921 input [35:0] din0;
922 input sel0;
923 input [35:0] din1;
924 input sel1;
925 input [35:0] din2;
926 input sel2;
927 input [35:0] din3;
928 input sel3;
929 input [35:0] din4;
930 input sel4;
931 input [35:0] din5;
932 input sel5;
933 input [35:0] din6;
934 input sel6;
935 input [35:0] din7;
936 input sel7;
937 output [35:0] dout;
938
939
940
941
942
943cl_dp1_muxbuff8_8x c0_0 (
944 .in0(sel0),
945 .in1(sel1),
946 .in2(sel2),
947 .in3(sel3),
948 .in4(sel4),
949 .in5(sel5),
950 .in6(sel6),
951 .in7(sel7),
952 .out0(buffout0),
953 .out1(buffout1),
954 .out2(buffout2),
955 .out3(buffout3),
956 .out4(buffout4),
957 .out5(buffout5),
958 .out6(buffout6),
959 .out7(buffout7)
960);
961mux8s #(36) d0_0 (
962 .sel0(buffout0),
963 .sel1(buffout1),
964 .sel2(buffout2),
965 .sel3(buffout3),
966 .sel4(buffout4),
967 .sel5(buffout5),
968 .sel6(buffout6),
969 .sel7(buffout7),
970 .in0(din0[35:0]),
971 .in1(din1[35:0]),
972 .in2(din2[35:0]),
973 .in3(din3[35:0]),
974 .in4(din4[35:0]),
975 .in5(din5[35:0]),
976 .in6(din6[35:0]),
977 .in7(din7[35:0]),
978.dout(dout[35:0])
979);
980
981
982
983
984
985
986
987
988
989
990
991
992
993endmodule
994
995
996//
997// invert macro
998//
999//
1000
1001
1002
1003
1004
1005module mcu_adrq_dp_inv_macro (
1006 din,
1007 dout);
1008 input [0:0] din;
1009 output [0:0] dout;
1010
1011
1012
1013
1014
1015
1016inv #(1) d0_0 (
1017.in(din[0:0]),
1018.out(dout[0:0])
1019);
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029endmodule
1030
1031
1032
1033
1034
1035//
1036// and macro for ports = 2,3,4
1037//
1038//
1039
1040
1041
1042
1043
1044module mcu_adrq_dp_and_macro (
1045 din0,
1046 din1,
1047 dout);
1048 input [0:0] din0;
1049 input [0:0] din1;
1050 output [0:0] dout;
1051
1052
1053
1054
1055
1056
1057and2 #(1) d0_0 (
1058.in0(din0[0:0]),
1059.in1(din1[0:0]),
1060.out(dout[0:0])
1061);
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071endmodule
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081// any PARAMS parms go into naming of macro
1082
1083module mcu_adrq_dp_msff_macro__stack_38r__width_33 (
1084 din,
1085 clk,
1086 en,
1087 se,
1088 scan_in,
1089 siclk,
1090 soclk,
1091 pce_ov,
1092 stop,
1093 dout,
1094 scan_out);
1095wire l1clk;
1096wire siclk_out;
1097wire soclk_out;
1098wire [31:0] so;
1099
1100 input [32:0] din;
1101
1102
1103 input clk;
1104 input en;
1105 input se;
1106 input scan_in;
1107 input siclk;
1108 input soclk;
1109 input pce_ov;
1110 input stop;
1111
1112
1113
1114 output [32:0] dout;
1115
1116
1117 output scan_out;
1118
1119
1120
1121
1122cl_dp1_l1hdr_8x c0_0 (
1123.l2clk(clk),
1124.pce(en),
1125.aclk(siclk),
1126.bclk(soclk),
1127.l1clk(l1clk),
1128 .se(se),
1129 .pce_ov(pce_ov),
1130 .stop(stop),
1131 .siclk_out(siclk_out),
1132 .soclk_out(soclk_out)
1133);
1134dff #(33) d0_0 (
1135.l1clk(l1clk),
1136.siclk(siclk_out),
1137.soclk(soclk_out),
1138.d(din[32:0]),
1139.si({scan_in,so[31:0]}),
1140.so({so[31:0],scan_out}),
1141.q(dout[32:0])
1142);
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163endmodule
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173//
1174// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
1175//
1176//
1177
1178
1179
1180
1181
1182module mcu_adrq_dp_cmp_macro__width_32 (
1183 din0,
1184 din1,
1185 dout);
1186 input [31:0] din0;
1187 input [31:0] din1;
1188 output dout;
1189
1190
1191
1192
1193
1194
1195cmp #(32) m0_0 (
1196.in0(din0[31:0]),
1197.in1(din1[31:0]),
1198.out(dout)
1199);
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210endmodule
1211
1212
1213
1214
1215
1216// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1217// also for pass-gate with decoder
1218
1219
1220
1221
1222
1223// any PARAMS parms go into naming of macro
1224
1225module mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 (
1226 din0,
1227 sel0,
1228 din1,
1229 sel1,
1230 din2,
1231 sel2,
1232 din3,
1233 sel3,
1234 din4,
1235 sel4,
1236 din5,
1237 sel5,
1238 din6,
1239 sel6,
1240 din7,
1241 sel7,
1242 dout);
1243wire buffout0;
1244wire buffout1;
1245wire buffout2;
1246wire buffout3;
1247wire buffout4;
1248wire buffout5;
1249wire buffout6;
1250wire buffout7;
1251
1252 input [25:0] din0;
1253 input sel0;
1254 input [25:0] din1;
1255 input sel1;
1256 input [25:0] din2;
1257 input sel2;
1258 input [25:0] din3;
1259 input sel3;
1260 input [25:0] din4;
1261 input sel4;
1262 input [25:0] din5;
1263 input sel5;
1264 input [25:0] din6;
1265 input sel6;
1266 input [25:0] din7;
1267 input sel7;
1268 output [25:0] dout;
1269
1270
1271
1272
1273
1274cl_dp1_muxbuff8_8x c0_0 (
1275 .in0(sel0),
1276 .in1(sel1),
1277 .in2(sel2),
1278 .in3(sel3),
1279 .in4(sel4),
1280 .in5(sel5),
1281 .in6(sel6),
1282 .in7(sel7),
1283 .out0(buffout0),
1284 .out1(buffout1),
1285 .out2(buffout2),
1286 .out3(buffout3),
1287 .out4(buffout4),
1288 .out5(buffout5),
1289 .out6(buffout6),
1290 .out7(buffout7)
1291);
1292mux8s #(26) d0_0 (
1293 .sel0(buffout0),
1294 .sel1(buffout1),
1295 .sel2(buffout2),
1296 .sel3(buffout3),
1297 .sel4(buffout4),
1298 .sel5(buffout5),
1299 .sel6(buffout6),
1300 .sel7(buffout7),
1301 .in0(din0[25:0]),
1302 .in1(din1[25:0]),
1303 .in2(din2[25:0]),
1304 .in3(din3[25:0]),
1305 .in4(din4[25:0]),
1306 .in5(din5[25:0]),
1307 .in6(din6[25:0]),
1308 .in7(din7[25:0]),
1309.dout(dout[25:0])
1310);
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324endmodule
1325
1326
1327// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1328// also for pass-gate with decoder
1329
1330
1331
1332
1333
1334// any PARAMS parms go into naming of macro
1335
1336module mcu_adrq_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 (
1337 din0,
1338 sel0,
1339 din1,
1340 sel1,
1341 dout);
1342wire buffout0;
1343wire buffout1;
1344
1345 input [25:0] din0;
1346 input sel0;
1347 input [25:0] din1;
1348 input sel1;
1349 output [25:0] dout;
1350
1351
1352
1353
1354
1355cl_dp1_muxbuff2_8x c0_0 (
1356 .in0(sel0),
1357 .in1(sel1),
1358 .out0(buffout0),
1359 .out1(buffout1)
1360);
1361mux2s #(26) d0_0 (
1362 .sel0(buffout0),
1363 .sel1(buffout1),
1364 .in0(din0[25:0]),
1365 .in1(din1[25:0]),
1366.dout(dout[25:0])
1367);
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381endmodule
1382