Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / mcu / rtl / mcu_addrdp_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: mcu_addrdp_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_addrdp_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_single_channel_mode,
45 l2b0_rd_ras_adr,
46 l2b0_rd_cas_adr,
47 l2b0_rd_rank_adr,
48 l2b0_rd_dimm_adr,
49 l2b0_rd_bank_adr,
50 l2b0_l2rd_req_id,
51 l2b0_wr_ras_adr,
52 l2b0_wr_cas_adr,
53 l2b0_wr_rank_adr,
54 l2b0_wr_dimm_adr,
55 l2b0_wr_bank_adr,
56 l2b1_rd_ras_adr,
57 l2b1_rd_cas_adr,
58 l2b1_rd_rank_adr,
59 l2b1_rd_dimm_adr,
60 l2b1_rd_bank_adr,
61 l2b1_l2rd_req_id,
62 l2b1_wr_ras_adr,
63 l2b1_wr_cas_adr,
64 l2b1_wr_rank_adr,
65 l2b1_wr_dimm_adr,
66 l2b1_wr_bank_adr,
67 l2b0_rd_adr_queue7_en,
68 l2b0_rd_adr_queue6_en,
69 l2b0_rd_adr_queue5_en,
70 l2b0_rd_adr_queue4_en,
71 l2b0_rd_adr_queue3_en,
72 l2b0_rd_adr_queue2_en,
73 l2b0_rd_adr_queue1_en,
74 l2b0_rd_adr_queue0_en,
75 l2b0_rd_adr_queue_sel,
76 l2b0_wr_adr_queue7_en,
77 l2b0_wr_adr_queue6_en,
78 l2b0_wr_adr_queue5_en,
79 l2b0_wr_adr_queue4_en,
80 l2b0_wr_adr_queue3_en,
81 l2b0_wr_adr_queue2_en,
82 l2b0_wr_adr_queue1_en,
83 l2b0_wr_adr_queue0_en,
84 l2b0_req_rdwr_addr_sel,
85 l2b0_rd_wr_adr7_eq,
86 l2b0_rd_wr_adr6_eq,
87 l2b0_rd_wr_adr5_eq,
88 l2b0_rd_wr_adr4_eq,
89 l2b0_rd_wr_adr3_eq,
90 l2b0_rd_wr_adr2_eq,
91 l2b0_rd_wr_adr1_eq,
92 l2b0_rd_wr_adr0_eq,
93 l2b1_rd_adr_queue7_en,
94 l2b1_rd_adr_queue6_en,
95 l2b1_rd_adr_queue5_en,
96 l2b1_rd_adr_queue4_en,
97 l2b1_rd_adr_queue3_en,
98 l2b1_rd_adr_queue2_en,
99 l2b1_rd_adr_queue1_en,
100 l2b1_rd_adr_queue0_en,
101 l2b1_rd_adr_queue_sel,
102 l2b1_wr_adr_queue7_en,
103 l2b1_wr_adr_queue6_en,
104 l2b1_wr_adr_queue5_en,
105 l2b1_wr_adr_queue4_en,
106 l2b1_wr_adr_queue3_en,
107 l2b1_wr_adr_queue2_en,
108 l2b1_wr_adr_queue1_en,
109 l2b1_wr_adr_queue0_en,
110 l2b1_req_rdwr_addr_sel,
111 l2b1_rd_wr_adr7_eq,
112 l2b1_rd_wr_adr6_eq,
113 l2b1_rd_wr_adr5_eq,
114 l2b1_rd_wr_adr4_eq,
115 l2b1_rd_wr_adr3_eq,
116 l2b1_rd_wr_adr2_eq,
117 l2b1_rd_wr_adr1_eq,
118 l2b1_rd_wr_adr0_eq,
119 rascas_adr_sel,
120 rascas_wr1_adr_sel,
121 rascas_wr2_adr_sel,
122 wr_adr_queue_sel,
123 wr1_adr_queue_sel,
124 wr2_adr_queue_sel,
125 ras_adr_queue,
126 cas_adr_queue,
127 rd_req_id_queue,
128 ras_wr1_adr_queue,
129 cas_wr1_adr_queue,
130 ras_wr2_adr_queue,
131 cas_wr2_adr_queue);
132wire pce_ov;
133wire stop;
134wire siclk;
135wire soclk;
136wire se;
137wire drif_scm;
138wire l2b0_adr_queue_scanin;
139wire l2b0_adr_queue_scanout;
140wire [14:0] l2b0_ras_adr_queue;
141wire [10:0] l2b0_cas_adr_queue;
142wire [2:0] l2b0_rd_req_id_queue;
143wire [14:0] l2b0_ras_wr1_adr_queue;
144wire [10:0] l2b0_cas_wr1_adr_queue;
145wire [14:0] l2b0_ras_wr2_adr_queue;
146wire [10:0] l2b0_cas_wr2_adr_queue;
147wire l2b1_adr_queue_scanin;
148wire l2b1_adr_queue_scanout;
149wire [14:0] l2b1_ras_adr_queue;
150wire [10:0] l2b1_cas_adr_queue;
151wire [2:0] l2b1_rd_req_id_queue;
152wire [14:0] l2b1_ras_wr1_adr_queue;
153wire [10:0] l2b1_cas_wr1_adr_queue;
154wire [14:0] l2b1_ras_wr2_adr_queue;
155wire [10:0] l2b1_cas_wr2_adr_queue;
156
157
158input l2clk;
159input drl2clk;
160
161input scan_in;
162output scan_out;
163input tcu_pce_ov;
164input tcu_aclk;
165input tcu_bclk;
166input tcu_scan_en;
167
168input drif_single_channel_mode;
169
170// L2bank0
171// Outputs in module: mcu_adrgen_dp
172//
173input [14:0] l2b0_rd_ras_adr;
174input [10:0] l2b0_rd_cas_adr;
175input l2b0_rd_rank_adr; // rank address
176input [2:0] l2b0_rd_dimm_adr; // rank address
177input [2:0] l2b0_rd_bank_adr; // bank address
178input [2:0] l2b0_l2rd_req_id; // request id
179
180input [14:0] l2b0_wr_ras_adr;
181input [10:0] l2b0_wr_cas_adr;
182input l2b0_wr_rank_adr; // rank address
183input [2:0] l2b0_wr_dimm_adr; // rank address
184input [2:0] l2b0_wr_bank_adr; // bank address
185
186// L2bank1
187// Outputs in module: mcu_adrgen_dp
188//
189input [14:0] l2b1_rd_ras_adr;
190input [10:0] l2b1_rd_cas_adr;
191input l2b1_rd_rank_adr; // rank address
192input [2:0] l2b1_rd_dimm_adr; // rank address
193input [2:0] l2b1_rd_bank_adr; // bank address
194input [2:0] l2b1_l2rd_req_id; // request id
195
196input [14:0] l2b1_wr_ras_adr;
197input [10:0] l2b1_wr_cas_adr;
198input l2b1_wr_rank_adr; // rank address
199input [2:0] l2b1_wr_dimm_adr; // rank address
200input [2:0] l2b1_wr_bank_adr; // bank address
201
202// L2bank0
203// Inputs in module: mcu_adrq_dp
204//
205input l2b0_rd_adr_queue7_en; // read address queue entry7 enable
206input l2b0_rd_adr_queue6_en; // read address queue entry6 enable
207input l2b0_rd_adr_queue5_en; // read address queue entry5 enable
208input l2b0_rd_adr_queue4_en; // read address queue entry4 enable
209input l2b0_rd_adr_queue3_en; // read address queue entry3 enable
210input l2b0_rd_adr_queue2_en; // read address queue entry2 enable
211input l2b0_rd_adr_queue1_en; // read address queue entry1 enable
212input l2b0_rd_adr_queue0_en; // read address queue entry0 enable
213input [7:0] l2b0_rd_adr_queue_sel; // read address queue select
214input l2b0_wr_adr_queue7_en; // write address queue entry7 enable
215input l2b0_wr_adr_queue6_en; // write address queue entry6 enable
216input l2b0_wr_adr_queue5_en; // write address queue entry5 enable
217input l2b0_wr_adr_queue4_en; // write address queue entry4 enable
218input l2b0_wr_adr_queue3_en; // write address queue entry3 enable
219input l2b0_wr_adr_queue2_en; // write address queue entry2 enable
220input l2b0_wr_adr_queue1_en; // write address queue entry1 enable
221input l2b0_wr_adr_queue0_en; // write address queue entry0 enable
222input [1:0] l2b0_req_rdwr_addr_sel; // read or write address queue select
223
224// L2bank0
225// Outputs in module: mcu_adrq_dp
226//
227// output l2b0_scan_out;
228output l2b0_rd_wr_adr7_eq;
229output l2b0_rd_wr_adr6_eq;
230output l2b0_rd_wr_adr5_eq;
231output l2b0_rd_wr_adr4_eq;
232output l2b0_rd_wr_adr3_eq;
233output l2b0_rd_wr_adr2_eq;
234output l2b0_rd_wr_adr1_eq;
235output l2b0_rd_wr_adr0_eq;
236
237
238// L2bank1
239// Inputs in module: mcu_adrq_dp
240//
241input l2b1_rd_adr_queue7_en; // read address queue entry7 enable
242input l2b1_rd_adr_queue6_en; // read address queue entry6 enable
243input l2b1_rd_adr_queue5_en; // read address queue entry5 enable
244input l2b1_rd_adr_queue4_en; // read address queue entry4 enable
245input l2b1_rd_adr_queue3_en; // read address queue entry3 enable
246input l2b1_rd_adr_queue2_en; // read address queue entry2 enable
247input l2b1_rd_adr_queue1_en; // read address queue entry1 enable
248input l2b1_rd_adr_queue0_en; // read address queue entry0 enable
249input [7:0] l2b1_rd_adr_queue_sel; // read address queue select
250input l2b1_wr_adr_queue7_en; // write address queue entry7 enable
251input l2b1_wr_adr_queue6_en; // write address queue entry6 enable
252input l2b1_wr_adr_queue5_en; // write address queue entry5 enable
253input l2b1_wr_adr_queue4_en; // write address queue entry4 enable
254input l2b1_wr_adr_queue3_en; // write address queue entry3 enable
255input l2b1_wr_adr_queue2_en; // write address queue entry2 enable
256input l2b1_wr_adr_queue1_en; // write address queue entry1 enable
257input l2b1_wr_adr_queue0_en; // write address queue entry0 enable
258input [1:0] l2b1_req_rdwr_addr_sel; // read or write address queue select
259
260// L2 bank1
261// Outputs in module: mcu_adrq_dp
262//
263output l2b1_rd_wr_adr7_eq;
264output l2b1_rd_wr_adr6_eq;
265output l2b1_rd_wr_adr5_eq;
266output l2b1_rd_wr_adr4_eq;
267output l2b1_rd_wr_adr3_eq;
268output l2b1_rd_wr_adr2_eq;
269output l2b1_rd_wr_adr1_eq;
270output l2b1_rd_wr_adr0_eq;
271
272input [1:0] rascas_adr_sel; // [0]: L2b0 address queue sel, [1]: L2b1 address queue sel, [2]: scrub address select
273input [1:0] rascas_wr1_adr_sel;
274input [1:0] rascas_wr2_adr_sel;
275input [7:0] wr_adr_queue_sel; // write address queue select
276input [7:0] wr1_adr_queue_sel; // write address queue select
277input [7:0] wr2_adr_queue_sel; // write address queue select
278
279output [14:0] ras_adr_queue; // RAS address
280output [10:0] cas_adr_queue; // CAS address
281output [2:0] rd_req_id_queue; // read request ID
282output [14:0] ras_wr1_adr_queue; // RAS address
283output [10:0] cas_wr1_adr_queue; // CAS address
284output [14:0] ras_wr2_adr_queue; // RAS address
285output [10:0] cas_wr2_adr_queue; // CAS address
286
287// Scan reassigns
288assign pce_ov = tcu_pce_ov;
289assign stop = 1'b0;
290assign siclk = tcu_aclk;
291assign soclk = tcu_bclk;
292assign se = tcu_scan_en;
293
294assign drif_scm = drif_single_channel_mode;
295
296//
297// L2Bank0: mcu_adr_queue
298//
299mcu_adrq_dp l2b0_adr_queue (
300 .scan_in(l2b0_adr_queue_scanin),
301 .scan_out(l2b0_adr_queue_scanout),
302 .l2clk ( l2clk ),
303 .drl2clk ( drl2clk ),
304 .rd_rank_adr ( {l2b0_rd_rank_adr, l2b0_rd_dimm_adr[2:0]} ),
305 .rd_bank_adr ( l2b0_rd_bank_adr[2:0] ),
306 .rd_ras_adr ( l2b0_rd_ras_adr[14:0] ),
307 .rd_cas_adr ( l2b0_rd_cas_adr[10:0] ),
308 .l2rd_req_id ( l2b0_l2rd_req_id[2:0] ),
309 .wr_rank_adr ( {l2b0_wr_rank_adr, l2b0_wr_dimm_adr[2:0]} ),
310 .wr_bank_adr ( l2b0_wr_bank_adr[2:0] ),
311 .wr_ras_adr ( l2b0_wr_ras_adr[14:0] ),
312 .wr_cas_adr ( l2b0_wr_cas_adr[10:0] ),
313 .rd_adr_queue7_en ( l2b0_rd_adr_queue7_en ),
314 .rd_adr_queue6_en ( l2b0_rd_adr_queue6_en ),
315 .rd_adr_queue5_en ( l2b0_rd_adr_queue5_en ),
316 .rd_adr_queue4_en ( l2b0_rd_adr_queue4_en ),
317 .rd_adr_queue3_en ( l2b0_rd_adr_queue3_en ),
318 .rd_adr_queue2_en ( l2b0_rd_adr_queue2_en ),
319 .rd_adr_queue1_en ( l2b0_rd_adr_queue1_en ),
320 .rd_adr_queue0_en ( l2b0_rd_adr_queue0_en ),
321 .rd_adr_queue_sel ( l2b0_rd_adr_queue_sel[7:0] ),
322 .wr_adr_queue7_en ( l2b0_wr_adr_queue7_en ),
323 .wr_adr_queue6_en ( l2b0_wr_adr_queue6_en ),
324 .wr_adr_queue5_en ( l2b0_wr_adr_queue5_en ),
325 .wr_adr_queue4_en ( l2b0_wr_adr_queue4_en ),
326 .wr_adr_queue3_en ( l2b0_wr_adr_queue3_en ),
327 .wr_adr_queue2_en ( l2b0_wr_adr_queue2_en ),
328 .wr_adr_queue1_en ( l2b0_wr_adr_queue1_en ),
329 .wr_adr_queue0_en ( l2b0_wr_adr_queue0_en ),
330 .req_rdwr_addr_sel ( l2b0_req_rdwr_addr_sel[1:0] ),
331 .ras_adr_queue ( l2b0_ras_adr_queue[14:0] ),
332 .cas_adr_queue ( l2b0_cas_adr_queue[10:0] ),
333 .rd_req_id_queue ( l2b0_rd_req_id_queue[2:0] ),
334 .ras_wr1_adr_queue ( l2b0_ras_wr1_adr_queue[14:0] ),
335 .cas_wr1_adr_queue ( l2b0_cas_wr1_adr_queue[10:0] ),
336 .ras_wr2_adr_queue ( l2b0_ras_wr2_adr_queue[14:0] ),
337 .cas_wr2_adr_queue ( l2b0_cas_wr2_adr_queue[10:0] ),
338 .rd_wr_adr7_eq ( l2b0_rd_wr_adr7_eq ),
339 .rd_wr_adr6_eq ( l2b0_rd_wr_adr6_eq ),
340 .rd_wr_adr5_eq ( l2b0_rd_wr_adr5_eq ),
341 .rd_wr_adr4_eq ( l2b0_rd_wr_adr4_eq ),
342 .rd_wr_adr3_eq ( l2b0_rd_wr_adr3_eq ),
343 .rd_wr_adr2_eq ( l2b0_rd_wr_adr2_eq ),
344 .rd_wr_adr1_eq ( l2b0_rd_wr_adr1_eq ),
345 .rd_wr_adr0_eq ( l2b0_rd_wr_adr0_eq ),
346 .tcu_pce_ov(tcu_pce_ov),
347 .tcu_aclk(tcu_aclk),
348 .tcu_bclk(tcu_bclk),
349 .tcu_scan_en(tcu_scan_en),
350 .drif_scm(drif_scm),
351 .wr_adr_queue_sel(wr_adr_queue_sel[7:0]),
352 .wr1_adr_queue_sel(wr1_adr_queue_sel[7:0]),
353 .wr2_adr_queue_sel(wr2_adr_queue_sel[7:0])
354 );
355
356//
357// L2bank1: mcu_adr_queue
358//
359mcu_adrq_dp l2b1_adr_queue (
360 .scan_in(l2b1_adr_queue_scanin),
361 .scan_out(l2b1_adr_queue_scanout),
362 .l2clk ( l2clk ),
363 .drl2clk ( drl2clk ),
364 .rd_rank_adr ( {l2b1_rd_rank_adr, l2b1_rd_dimm_adr[2:0]} ),
365 .rd_bank_adr ( l2b1_rd_bank_adr[2:0] ),
366 .rd_ras_adr ( l2b1_rd_ras_adr[14:0] ),
367 .rd_cas_adr ( l2b1_rd_cas_adr[10:0] ),
368 .l2rd_req_id ( l2b1_l2rd_req_id[2:0] ),
369 .wr_rank_adr ( {l2b1_wr_rank_adr, l2b1_wr_dimm_adr[2:0]} ),
370 .wr_bank_adr ( l2b1_wr_bank_adr[2:0] ),
371 .wr_ras_adr ( l2b1_wr_ras_adr[14:0] ),
372 .wr_cas_adr ( l2b1_wr_cas_adr[10:0] ),
373 .rd_adr_queue7_en ( l2b1_rd_adr_queue7_en ),
374 .rd_adr_queue6_en ( l2b1_rd_adr_queue6_en ),
375 .rd_adr_queue5_en ( l2b1_rd_adr_queue5_en ),
376 .rd_adr_queue4_en ( l2b1_rd_adr_queue4_en ),
377 .rd_adr_queue3_en ( l2b1_rd_adr_queue3_en ),
378 .rd_adr_queue2_en ( l2b1_rd_adr_queue2_en ),
379 .rd_adr_queue1_en ( l2b1_rd_adr_queue1_en ),
380 .rd_adr_queue0_en ( l2b1_rd_adr_queue0_en ),
381 .rd_adr_queue_sel ( l2b1_rd_adr_queue_sel[7:0] ),
382 .wr_adr_queue7_en ( l2b1_wr_adr_queue7_en ),
383 .wr_adr_queue6_en ( l2b1_wr_adr_queue6_en ),
384 .wr_adr_queue5_en ( l2b1_wr_adr_queue5_en ),
385 .wr_adr_queue4_en ( l2b1_wr_adr_queue4_en ),
386 .wr_adr_queue3_en ( l2b1_wr_adr_queue3_en ),
387 .wr_adr_queue2_en ( l2b1_wr_adr_queue2_en ),
388 .wr_adr_queue1_en ( l2b1_wr_adr_queue1_en ),
389 .wr_adr_queue0_en ( l2b1_wr_adr_queue0_en ),
390 .req_rdwr_addr_sel ( l2b1_req_rdwr_addr_sel[1:0] ),
391 .ras_adr_queue ( l2b1_ras_adr_queue[14:0] ),
392 .cas_adr_queue ( l2b1_cas_adr_queue[10:0] ),
393 .rd_req_id_queue ( l2b1_rd_req_id_queue[2:0] ),
394 .ras_wr1_adr_queue ( l2b1_ras_wr1_adr_queue[14:0] ),
395 .cas_wr1_adr_queue ( l2b1_cas_wr1_adr_queue[10:0] ),
396 .ras_wr2_adr_queue ( l2b1_ras_wr2_adr_queue[14:0] ),
397 .cas_wr2_adr_queue ( l2b1_cas_wr2_adr_queue[10:0] ),
398 .rd_wr_adr7_eq ( l2b1_rd_wr_adr7_eq ),
399 .rd_wr_adr6_eq ( l2b1_rd_wr_adr6_eq ),
400 .rd_wr_adr5_eq ( l2b1_rd_wr_adr5_eq ),
401 .rd_wr_adr4_eq ( l2b1_rd_wr_adr4_eq ),
402 .rd_wr_adr3_eq ( l2b1_rd_wr_adr3_eq ),
403 .rd_wr_adr2_eq ( l2b1_rd_wr_adr2_eq ),
404 .rd_wr_adr1_eq ( l2b1_rd_wr_adr1_eq ),
405 .rd_wr_adr0_eq ( l2b1_rd_wr_adr0_eq ),
406 .tcu_pce_ov(tcu_pce_ov),
407 .tcu_aclk(tcu_aclk),
408 .tcu_bclk(tcu_bclk),
409 .tcu_scan_en(tcu_scan_en),
410 .drif_scm(drif_scm),
411 .wr_adr_queue_sel(wr_adr_queue_sel[7:0]),
412 .wr1_adr_queue_sel(wr1_adr_queue_sel[7:0]),
413 .wr2_adr_queue_sel(wr2_adr_queue_sel[7:0])
414 );
415
416mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_29 u_l2b0b1_addr_id (
417 .din0 ( { l2b0_rd_req_id_queue[2:0], l2b0_ras_adr_queue[14:0], l2b0_cas_adr_queue[10:0] } ),
418 .din1 ( { l2b1_rd_req_id_queue[2:0], l2b1_ras_adr_queue[14:0], l2b1_cas_adr_queue[10:0] } ),
419 .sel0 ( rascas_adr_sel[0] ),
420 .sel1 ( rascas_adr_sel[1] ),
421 .dout ( { rd_req_id_queue[2:0], ras_adr_queue[14:0], cas_adr_queue[10:0] } ));
422
423mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 u_l2b0b1_wr1_addr (
424 .din0 ( { l2b0_ras_wr1_adr_queue[14:0], l2b0_cas_wr1_adr_queue[10:0] } ),
425 .din1 ( { l2b1_ras_wr1_adr_queue[14:0], l2b1_cas_wr1_adr_queue[10:0] } ),
426 .sel0 ( rascas_wr1_adr_sel[0] ),
427 .sel1 ( rascas_wr1_adr_sel[1] ),
428 .dout ( { ras_wr1_adr_queue[14:0], cas_wr1_adr_queue[10:0] } ));
429
430mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 u_l2b0b1_wr2_addr (
431 .din0 ( { l2b0_ras_wr2_adr_queue[14:0], l2b0_cas_wr2_adr_queue[10:0] } ),
432 .din1 ( { l2b1_ras_wr2_adr_queue[14:0], l2b1_cas_wr2_adr_queue[10:0] } ),
433 .sel0 ( rascas_wr2_adr_sel[0] ),
434 .sel1 ( rascas_wr2_adr_sel[1] ),
435 .dout ( { ras_wr2_adr_queue[14:0], cas_wr2_adr_queue[10:0] } ));
436
437// fixscan start:
438assign l2b0_adr_queue_scanin = scan_in ;
439assign l2b1_adr_queue_scanin = l2b0_adr_queue_scanout ;
440assign scan_out = l2b1_adr_queue_scanout ;
441// fixscan end:
442endmodule
443
444
445
446// any PARAMS parms go into naming of macro
447
448module mcu_addrdp_dp_msff_macro__stack_38r__width_36 (
449 din,
450 clk,
451 en,
452 se,
453 scan_in,
454 siclk,
455 soclk,
456 pce_ov,
457 stop,
458 dout,
459 scan_out);
460wire l1clk;
461wire siclk_out;
462wire soclk_out;
463wire [34:0] so;
464
465 input [35:0] din;
466
467
468 input clk;
469 input en;
470 input se;
471 input scan_in;
472 input siclk;
473 input soclk;
474 input pce_ov;
475 input stop;
476
477
478
479 output [35:0] dout;
480
481
482 output scan_out;
483
484
485
486
487cl_dp1_l1hdr_8x c0_0 (
488.l2clk(clk),
489.pce(en),
490.aclk(siclk),
491.bclk(soclk),
492.l1clk(l1clk),
493 .se(se),
494 .pce_ov(pce_ov),
495 .stop(stop),
496 .siclk_out(siclk_out),
497 .soclk_out(soclk_out)
498);
499dff #(36) d0_0 (
500.l1clk(l1clk),
501.siclk(siclk_out),
502.soclk(soclk_out),
503.d(din[35:0]),
504.si({scan_in,so[34:0]}),
505.so({so[34:0],scan_out}),
506.q(dout[35:0])
507);
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528endmodule
529
530
531
532
533
534
535
536
537
538
539
540
541
542// any PARAMS parms go into naming of macro
543
544module mcu_addrdp_dp_msff_macro__stack_38r__width_34 (
545 din,
546 clk,
547 en,
548 se,
549 scan_in,
550 siclk,
551 soclk,
552 pce_ov,
553 stop,
554 dout,
555 scan_out);
556wire l1clk;
557wire siclk_out;
558wire soclk_out;
559wire [32:0] so;
560
561 input [33:0] din;
562
563
564 input clk;
565 input en;
566 input se;
567 input scan_in;
568 input siclk;
569 input soclk;
570 input pce_ov;
571 input stop;
572
573
574
575 output [33:0] dout;
576
577
578 output scan_out;
579
580
581
582
583cl_dp1_l1hdr_8x c0_0 (
584.l2clk(clk),
585.pce(en),
586.aclk(siclk),
587.bclk(soclk),
588.l1clk(l1clk),
589 .se(se),
590 .pce_ov(pce_ov),
591 .stop(stop),
592 .siclk_out(siclk_out),
593 .soclk_out(soclk_out)
594);
595dff #(34) d0_0 (
596.l1clk(l1clk),
597.siclk(siclk_out),
598.soclk(soclk_out),
599.d(din[33:0]),
600.si({scan_in,so[32:0]}),
601.so({so[32:0],scan_out}),
602.q(dout[33:0])
603);
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624endmodule
625
626
627
628
629
630
631
632
633
634// general mux macro for pass-gate and and-or muxes with/wout priority encoders
635// also for pass-gate with decoder
636
637
638
639
640
641// any PARAMS parms go into naming of macro
642
643module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_36 (
644 din0,
645 sel0,
646 din1,
647 sel1,
648 din2,
649 sel2,
650 din3,
651 sel3,
652 din4,
653 sel4,
654 din5,
655 sel5,
656 din6,
657 sel6,
658 din7,
659 sel7,
660 dout);
661wire buffout0;
662wire buffout1;
663wire buffout2;
664wire buffout3;
665wire buffout4;
666wire buffout5;
667wire buffout6;
668wire buffout7;
669
670 input [35:0] din0;
671 input sel0;
672 input [35:0] din1;
673 input sel1;
674 input [35:0] din2;
675 input sel2;
676 input [35:0] din3;
677 input sel3;
678 input [35:0] din4;
679 input sel4;
680 input [35:0] din5;
681 input sel5;
682 input [35:0] din6;
683 input sel6;
684 input [35:0] din7;
685 input sel7;
686 output [35:0] dout;
687
688
689
690
691
692cl_dp1_muxbuff8_8x c0_0 (
693 .in0(sel0),
694 .in1(sel1),
695 .in2(sel2),
696 .in3(sel3),
697 .in4(sel4),
698 .in5(sel5),
699 .in6(sel6),
700 .in7(sel7),
701 .out0(buffout0),
702 .out1(buffout1),
703 .out2(buffout2),
704 .out3(buffout3),
705 .out4(buffout4),
706 .out5(buffout5),
707 .out6(buffout6),
708 .out7(buffout7)
709);
710mux8s #(36) d0_0 (
711 .sel0(buffout0),
712 .sel1(buffout1),
713 .sel2(buffout2),
714 .sel3(buffout3),
715 .sel4(buffout4),
716 .sel5(buffout5),
717 .sel6(buffout6),
718 .sel7(buffout7),
719 .in0(din0[35:0]),
720 .in1(din1[35:0]),
721 .in2(din2[35:0]),
722 .in3(din3[35:0]),
723 .in4(din4[35:0]),
724 .in5(din5[35:0]),
725 .in6(din6[35:0]),
726 .in7(din7[35:0]),
727.dout(dout[35:0])
728);
729
730
731
732
733
734
735
736
737
738
739
740
741
742endmodule
743
744
745//
746// invert macro
747//
748//
749
750
751
752
753
754module mcu_addrdp_dp_inv_macro (
755 din,
756 dout);
757 input [0:0] din;
758 output [0:0] dout;
759
760
761
762
763
764
765inv #(1) d0_0 (
766.in(din[0:0]),
767.out(dout[0:0])
768);
769
770
771
772
773
774
775
776
777
778endmodule
779
780
781
782
783
784//
785// and macro for ports = 2,3,4
786//
787//
788
789
790
791
792
793module mcu_addrdp_dp_and_macro (
794 din0,
795 din1,
796 dout);
797 input [0:0] din0;
798 input [0:0] din1;
799 output [0:0] dout;
800
801
802
803
804
805
806and2 #(1) d0_0 (
807.in0(din0[0:0]),
808.in1(din1[0:0]),
809.out(dout[0:0])
810);
811
812
813
814
815
816
817
818
819
820endmodule
821
822
823
824
825
826
827
828
829
830// any PARAMS parms go into naming of macro
831
832module mcu_addrdp_dp_msff_macro__stack_38r__width_33 (
833 din,
834 clk,
835 en,
836 se,
837 scan_in,
838 siclk,
839 soclk,
840 pce_ov,
841 stop,
842 dout,
843 scan_out);
844wire l1clk;
845wire siclk_out;
846wire soclk_out;
847wire [31:0] so;
848
849 input [32:0] din;
850
851
852 input clk;
853 input en;
854 input se;
855 input scan_in;
856 input siclk;
857 input soclk;
858 input pce_ov;
859 input stop;
860
861
862
863 output [32:0] dout;
864
865
866 output scan_out;
867
868
869
870
871cl_dp1_l1hdr_8x c0_0 (
872.l2clk(clk),
873.pce(en),
874.aclk(siclk),
875.bclk(soclk),
876.l1clk(l1clk),
877 .se(se),
878 .pce_ov(pce_ov),
879 .stop(stop),
880 .siclk_out(siclk_out),
881 .soclk_out(soclk_out)
882);
883dff #(33) d0_0 (
884.l1clk(l1clk),
885.siclk(siclk_out),
886.soclk(soclk_out),
887.d(din[32:0]),
888.si({scan_in,so[31:0]}),
889.so({so[31:0],scan_out}),
890.q(dout[32:0])
891);
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912endmodule
913
914
915
916
917
918
919
920
921
922//
923// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
924//
925//
926
927
928
929
930
931module mcu_addrdp_dp_cmp_macro__width_32 (
932 din0,
933 din1,
934 dout);
935 input [31:0] din0;
936 input [31:0] din1;
937 output dout;
938
939
940
941
942
943
944cmp #(32) m0_0 (
945.in0(din0[31:0]),
946.in1(din1[31:0]),
947.out(dout)
948);
949
950
951
952
953
954
955
956
957
958
959endmodule
960
961
962
963
964
965// general mux macro for pass-gate and and-or muxes with/wout priority encoders
966// also for pass-gate with decoder
967
968
969
970
971
972// any PARAMS parms go into naming of macro
973
974module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 (
975 din0,
976 sel0,
977 din1,
978 sel1,
979 din2,
980 sel2,
981 din3,
982 sel3,
983 din4,
984 sel4,
985 din5,
986 sel5,
987 din6,
988 sel6,
989 din7,
990 sel7,
991 dout);
992wire buffout0;
993wire buffout1;
994wire buffout2;
995wire buffout3;
996wire buffout4;
997wire buffout5;
998wire buffout6;
999wire buffout7;
1000
1001 input [25:0] din0;
1002 input sel0;
1003 input [25:0] din1;
1004 input sel1;
1005 input [25:0] din2;
1006 input sel2;
1007 input [25:0] din3;
1008 input sel3;
1009 input [25:0] din4;
1010 input sel4;
1011 input [25:0] din5;
1012 input sel5;
1013 input [25:0] din6;
1014 input sel6;
1015 input [25:0] din7;
1016 input sel7;
1017 output [25:0] dout;
1018
1019
1020
1021
1022
1023cl_dp1_muxbuff8_8x c0_0 (
1024 .in0(sel0),
1025 .in1(sel1),
1026 .in2(sel2),
1027 .in3(sel3),
1028 .in4(sel4),
1029 .in5(sel5),
1030 .in6(sel6),
1031 .in7(sel7),
1032 .out0(buffout0),
1033 .out1(buffout1),
1034 .out2(buffout2),
1035 .out3(buffout3),
1036 .out4(buffout4),
1037 .out5(buffout5),
1038 .out6(buffout6),
1039 .out7(buffout7)
1040);
1041mux8s #(26) d0_0 (
1042 .sel0(buffout0),
1043 .sel1(buffout1),
1044 .sel2(buffout2),
1045 .sel3(buffout3),
1046 .sel4(buffout4),
1047 .sel5(buffout5),
1048 .sel6(buffout6),
1049 .sel7(buffout7),
1050 .in0(din0[25:0]),
1051 .in1(din1[25:0]),
1052 .in2(din2[25:0]),
1053 .in3(din3[25:0]),
1054 .in4(din4[25:0]),
1055 .in5(din5[25:0]),
1056 .in6(din6[25:0]),
1057 .in7(din7[25:0]),
1058.dout(dout[25:0])
1059);
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073endmodule
1074
1075
1076// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1077// also for pass-gate with decoder
1078
1079
1080
1081
1082
1083// any PARAMS parms go into naming of macro
1084
1085module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 (
1086 din0,
1087 sel0,
1088 din1,
1089 sel1,
1090 dout);
1091wire buffout0;
1092wire buffout1;
1093
1094 input [25:0] din0;
1095 input sel0;
1096 input [25:0] din1;
1097 input sel1;
1098 output [25:0] dout;
1099
1100
1101
1102
1103
1104cl_dp1_muxbuff2_8x c0_0 (
1105 .in0(sel0),
1106 .in1(sel1),
1107 .out0(buffout0),
1108 .out1(buffout1)
1109);
1110mux2s #(26) d0_0 (
1111 .sel0(buffout0),
1112 .sel1(buffout1),
1113 .in0(din0[25:0]),
1114 .in1(din1[25:0]),
1115.dout(dout[25:0])
1116);
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130endmodule
1131
1132
1133// general mux macro for pass-gate and and-or muxes with/wout priority encoders
1134// also for pass-gate with decoder
1135
1136
1137
1138
1139
1140// any PARAMS parms go into naming of macro
1141
1142module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_29 (
1143 din0,
1144 sel0,
1145 din1,
1146 sel1,
1147 dout);
1148wire buffout0;
1149wire buffout1;
1150
1151 input [28:0] din0;
1152 input sel0;
1153 input [28:0] din1;
1154 input sel1;
1155 output [28:0] dout;
1156
1157
1158
1159
1160
1161cl_dp1_muxbuff2_8x c0_0 (
1162 .in0(sel0),
1163 .in1(sel1),
1164 .out0(buffout0),
1165 .out1(buffout1)
1166);
1167mux2s #(29) d0_0 (
1168 .sel0(buffout0),
1169 .sel1(buffout1),
1170 .in0(din0[28:0]),
1171 .in1(din1[28:0]),
1172.dout(dout[28:0])
1173);
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187endmodule
1188