Commit | Line | Data |
---|---|---|
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 ============================================ | |
35 | module 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); | |
132 | wire pce_ov; | |
133 | wire stop; | |
134 | wire siclk; | |
135 | wire soclk; | |
136 | wire se; | |
137 | wire drif_scm; | |
138 | wire l2b0_adr_queue_scanin; | |
139 | wire l2b0_adr_queue_scanout; | |
140 | wire [14:0] l2b0_ras_adr_queue; | |
141 | wire [10:0] l2b0_cas_adr_queue; | |
142 | wire [2:0] l2b0_rd_req_id_queue; | |
143 | wire [14:0] l2b0_ras_wr1_adr_queue; | |
144 | wire [10:0] l2b0_cas_wr1_adr_queue; | |
145 | wire [14:0] l2b0_ras_wr2_adr_queue; | |
146 | wire [10:0] l2b0_cas_wr2_adr_queue; | |
147 | wire l2b1_adr_queue_scanin; | |
148 | wire l2b1_adr_queue_scanout; | |
149 | wire [14:0] l2b1_ras_adr_queue; | |
150 | wire [10:0] l2b1_cas_adr_queue; | |
151 | wire [2:0] l2b1_rd_req_id_queue; | |
152 | wire [14:0] l2b1_ras_wr1_adr_queue; | |
153 | wire [10:0] l2b1_cas_wr1_adr_queue; | |
154 | wire [14:0] l2b1_ras_wr2_adr_queue; | |
155 | wire [10:0] l2b1_cas_wr2_adr_queue; | |
156 | ||
157 | ||
158 | input l2clk; | |
159 | input drl2clk; | |
160 | ||
161 | input scan_in; | |
162 | output scan_out; | |
163 | input tcu_pce_ov; | |
164 | input tcu_aclk; | |
165 | input tcu_bclk; | |
166 | input tcu_scan_en; | |
167 | ||
168 | input drif_single_channel_mode; | |
169 | ||
170 | // L2bank0 | |
171 | // Outputs in module: mcu_adrgen_dp | |
172 | // | |
173 | input [14:0] l2b0_rd_ras_adr; | |
174 | input [10:0] l2b0_rd_cas_adr; | |
175 | input l2b0_rd_rank_adr; // rank address | |
176 | input [2:0] l2b0_rd_dimm_adr; // rank address | |
177 | input [2:0] l2b0_rd_bank_adr; // bank address | |
178 | input [2:0] l2b0_l2rd_req_id; // request id | |
179 | ||
180 | input [14:0] l2b0_wr_ras_adr; | |
181 | input [10:0] l2b0_wr_cas_adr; | |
182 | input l2b0_wr_rank_adr; // rank address | |
183 | input [2:0] l2b0_wr_dimm_adr; // rank address | |
184 | input [2:0] l2b0_wr_bank_adr; // bank address | |
185 | ||
186 | // L2bank1 | |
187 | // Outputs in module: mcu_adrgen_dp | |
188 | // | |
189 | input [14:0] l2b1_rd_ras_adr; | |
190 | input [10:0] l2b1_rd_cas_adr; | |
191 | input l2b1_rd_rank_adr; // rank address | |
192 | input [2:0] l2b1_rd_dimm_adr; // rank address | |
193 | input [2:0] l2b1_rd_bank_adr; // bank address | |
194 | input [2:0] l2b1_l2rd_req_id; // request id | |
195 | ||
196 | input [14:0] l2b1_wr_ras_adr; | |
197 | input [10:0] l2b1_wr_cas_adr; | |
198 | input l2b1_wr_rank_adr; // rank address | |
199 | input [2:0] l2b1_wr_dimm_adr; // rank address | |
200 | input [2:0] l2b1_wr_bank_adr; // bank address | |
201 | ||
202 | // L2bank0 | |
203 | // Inputs in module: mcu_adrq_dp | |
204 | // | |
205 | input l2b0_rd_adr_queue7_en; // read address queue entry7 enable | |
206 | input l2b0_rd_adr_queue6_en; // read address queue entry6 enable | |
207 | input l2b0_rd_adr_queue5_en; // read address queue entry5 enable | |
208 | input l2b0_rd_adr_queue4_en; // read address queue entry4 enable | |
209 | input l2b0_rd_adr_queue3_en; // read address queue entry3 enable | |
210 | input l2b0_rd_adr_queue2_en; // read address queue entry2 enable | |
211 | input l2b0_rd_adr_queue1_en; // read address queue entry1 enable | |
212 | input l2b0_rd_adr_queue0_en; // read address queue entry0 enable | |
213 | input [7:0] l2b0_rd_adr_queue_sel; // read address queue select | |
214 | input l2b0_wr_adr_queue7_en; // write address queue entry7 enable | |
215 | input l2b0_wr_adr_queue6_en; // write address queue entry6 enable | |
216 | input l2b0_wr_adr_queue5_en; // write address queue entry5 enable | |
217 | input l2b0_wr_adr_queue4_en; // write address queue entry4 enable | |
218 | input l2b0_wr_adr_queue3_en; // write address queue entry3 enable | |
219 | input l2b0_wr_adr_queue2_en; // write address queue entry2 enable | |
220 | input l2b0_wr_adr_queue1_en; // write address queue entry1 enable | |
221 | input l2b0_wr_adr_queue0_en; // write address queue entry0 enable | |
222 | input [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; | |
228 | output l2b0_rd_wr_adr7_eq; | |
229 | output l2b0_rd_wr_adr6_eq; | |
230 | output l2b0_rd_wr_adr5_eq; | |
231 | output l2b0_rd_wr_adr4_eq; | |
232 | output l2b0_rd_wr_adr3_eq; | |
233 | output l2b0_rd_wr_adr2_eq; | |
234 | output l2b0_rd_wr_adr1_eq; | |
235 | output l2b0_rd_wr_adr0_eq; | |
236 | ||
237 | ||
238 | // L2bank1 | |
239 | // Inputs in module: mcu_adrq_dp | |
240 | // | |
241 | input l2b1_rd_adr_queue7_en; // read address queue entry7 enable | |
242 | input l2b1_rd_adr_queue6_en; // read address queue entry6 enable | |
243 | input l2b1_rd_adr_queue5_en; // read address queue entry5 enable | |
244 | input l2b1_rd_adr_queue4_en; // read address queue entry4 enable | |
245 | input l2b1_rd_adr_queue3_en; // read address queue entry3 enable | |
246 | input l2b1_rd_adr_queue2_en; // read address queue entry2 enable | |
247 | input l2b1_rd_adr_queue1_en; // read address queue entry1 enable | |
248 | input l2b1_rd_adr_queue0_en; // read address queue entry0 enable | |
249 | input [7:0] l2b1_rd_adr_queue_sel; // read address queue select | |
250 | input l2b1_wr_adr_queue7_en; // write address queue entry7 enable | |
251 | input l2b1_wr_adr_queue6_en; // write address queue entry6 enable | |
252 | input l2b1_wr_adr_queue5_en; // write address queue entry5 enable | |
253 | input l2b1_wr_adr_queue4_en; // write address queue entry4 enable | |
254 | input l2b1_wr_adr_queue3_en; // write address queue entry3 enable | |
255 | input l2b1_wr_adr_queue2_en; // write address queue entry2 enable | |
256 | input l2b1_wr_adr_queue1_en; // write address queue entry1 enable | |
257 | input l2b1_wr_adr_queue0_en; // write address queue entry0 enable | |
258 | input [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 | // | |
263 | output l2b1_rd_wr_adr7_eq; | |
264 | output l2b1_rd_wr_adr6_eq; | |
265 | output l2b1_rd_wr_adr5_eq; | |
266 | output l2b1_rd_wr_adr4_eq; | |
267 | output l2b1_rd_wr_adr3_eq; | |
268 | output l2b1_rd_wr_adr2_eq; | |
269 | output l2b1_rd_wr_adr1_eq; | |
270 | output l2b1_rd_wr_adr0_eq; | |
271 | ||
272 | input [1:0] rascas_adr_sel; // [0]: L2b0 address queue sel, [1]: L2b1 address queue sel, [2]: scrub address select | |
273 | input [1:0] rascas_wr1_adr_sel; | |
274 | input [1:0] rascas_wr2_adr_sel; | |
275 | input [7:0] wr_adr_queue_sel; // write address queue select | |
276 | input [7:0] wr1_adr_queue_sel; // write address queue select | |
277 | input [7:0] wr2_adr_queue_sel; // write address queue select | |
278 | ||
279 | output [14:0] ras_adr_queue; // RAS address | |
280 | output [10:0] cas_adr_queue; // CAS address | |
281 | output [2:0] rd_req_id_queue; // read request ID | |
282 | output [14:0] ras_wr1_adr_queue; // RAS address | |
283 | output [10:0] cas_wr1_adr_queue; // CAS address | |
284 | output [14:0] ras_wr2_adr_queue; // RAS address | |
285 | output [10:0] cas_wr2_adr_queue; // CAS address | |
286 | ||
287 | // Scan reassigns | |
288 | assign pce_ov = tcu_pce_ov; | |
289 | assign stop = 1'b0; | |
290 | assign siclk = tcu_aclk; | |
291 | assign soclk = tcu_bclk; | |
292 | assign se = tcu_scan_en; | |
293 | ||
294 | assign drif_scm = drif_single_channel_mode; | |
295 | ||
296 | // | |
297 | // L2Bank0: mcu_adr_queue | |
298 | // | |
299 | mcu_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 | // | |
359 | mcu_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 | ||
416 | mcu_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 | ||
423 | mcu_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 | ||
430 | mcu_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: | |
438 | assign l2b0_adr_queue_scanin = scan_in ; | |
439 | assign l2b1_adr_queue_scanin = l2b0_adr_queue_scanout ; | |
440 | assign scan_out = l2b1_adr_queue_scanout ; | |
441 | // fixscan end: | |
442 | endmodule | |
443 | ||
444 | ||
445 | ||
446 | // any PARAMS parms go into naming of macro | |
447 | ||
448 | module 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); | |
460 | wire l1clk; | |
461 | wire siclk_out; | |
462 | wire soclk_out; | |
463 | wire [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 | ||
487 | cl_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 | ); | |
499 | dff #(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 | ||
528 | endmodule | |
529 | ||
530 | ||
531 | ||
532 | ||
533 | ||
534 | ||
535 | ||
536 | ||
537 | ||
538 | ||
539 | ||
540 | ||
541 | ||
542 | // any PARAMS parms go into naming of macro | |
543 | ||
544 | module 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); | |
556 | wire l1clk; | |
557 | wire siclk_out; | |
558 | wire soclk_out; | |
559 | wire [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 | ||
583 | cl_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 | ); | |
595 | dff #(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 | ||
624 | endmodule | |
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 | ||
643 | module 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); | |
661 | wire buffout0; | |
662 | wire buffout1; | |
663 | wire buffout2; | |
664 | wire buffout3; | |
665 | wire buffout4; | |
666 | wire buffout5; | |
667 | wire buffout6; | |
668 | wire 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 | ||
692 | cl_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 | ); | |
710 | mux8s #(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 | ||
742 | endmodule | |
743 | ||
744 | ||
745 | // | |
746 | // invert macro | |
747 | // | |
748 | // | |
749 | ||
750 | ||
751 | ||
752 | ||
753 | ||
754 | module 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 | ||
765 | inv #(1) d0_0 ( | |
766 | .in(din[0:0]), | |
767 | .out(dout[0:0]) | |
768 | ); | |
769 | ||
770 | ||
771 | ||
772 | ||
773 | ||
774 | ||
775 | ||
776 | ||
777 | ||
778 | endmodule | |
779 | ||
780 | ||
781 | ||
782 | ||
783 | ||
784 | // | |
785 | // and macro for ports = 2,3,4 | |
786 | // | |
787 | // | |
788 | ||
789 | ||
790 | ||
791 | ||
792 | ||
793 | module 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 | ||
806 | and2 #(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 | ||
820 | endmodule | |
821 | ||
822 | ||
823 | ||
824 | ||
825 | ||
826 | ||
827 | ||
828 | ||
829 | ||
830 | // any PARAMS parms go into naming of macro | |
831 | ||
832 | module 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); | |
844 | wire l1clk; | |
845 | wire siclk_out; | |
846 | wire soclk_out; | |
847 | wire [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 | ||
871 | cl_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 | ); | |
883 | dff #(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 | ||
912 | endmodule | |
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 | ||
931 | module 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 | ||
944 | cmp #(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 | ||
959 | endmodule | |
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 | ||
974 | module 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); | |
992 | wire buffout0; | |
993 | wire buffout1; | |
994 | wire buffout2; | |
995 | wire buffout3; | |
996 | wire buffout4; | |
997 | wire buffout5; | |
998 | wire buffout6; | |
999 | wire 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 | ||
1023 | cl_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 | ); | |
1041 | mux8s #(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 | ||
1073 | endmodule | |
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 | ||
1085 | module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 ( | |
1086 | din0, | |
1087 | sel0, | |
1088 | din1, | |
1089 | sel1, | |
1090 | dout); | |
1091 | wire buffout0; | |
1092 | wire 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 | ||
1104 | cl_dp1_muxbuff2_8x c0_0 ( | |
1105 | .in0(sel0), | |
1106 | .in1(sel1), | |
1107 | .out0(buffout0), | |
1108 | .out1(buffout1) | |
1109 | ); | |
1110 | mux2s #(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 | ||
1130 | endmodule | |
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 | ||
1142 | module mcu_addrdp_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_29 ( | |
1143 | din0, | |
1144 | sel0, | |
1145 | din1, | |
1146 | sel1, | |
1147 | dout); | |
1148 | wire buffout0; | |
1149 | wire 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 | ||
1161 | cl_dp1_muxbuff2_8x c0_0 ( | |
1162 | .in0(sel0), | |
1163 | .in1(sel1), | |
1164 | .out0(buffout0), | |
1165 | .out1(buffout1) | |
1166 | ); | |
1167 | mux2s #(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 | ||
1187 | endmodule | |
1188 |