Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: mcu_fbdird_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 | `define DRIF_MCU_STATE_00 5'd0 | |
36 | `define DRIF_MCU_STATE_01 5'd1 | |
37 | `define DRIF_MCU_STATE_02 5'd2 | |
38 | `define DRIF_MCU_STATE_03 5'd3 | |
39 | `define DRIF_MCU_STATE_04 5'd4 | |
40 | `define DRIF_MCU_STATE_05 5'd5 | |
41 | `define DRIF_MCU_STATE_06 5'd6 | |
42 | `define DRIF_MCU_STATE_07 5'd7 | |
43 | `define DRIF_MCU_STATE_08 5'd8 | |
44 | `define DRIF_MCU_STATE_09 5'd9 | |
45 | `define DRIF_MCU_STATE_10 5'd10 | |
46 | `define DRIF_MCU_STATE_11 5'd11 | |
47 | `define DRIF_MCU_STATE_12 5'd12 | |
48 | `define DRIF_MCU_STATE_13 5'd13 | |
49 | `define DRIF_MCU_STATE_14 5'd14 | |
50 | `define DRIF_MCU_STATE_15 5'd15 | |
51 | `define DRIF_MCU_STATE_16 5'd16 | |
52 | `define DRIF_MCU_STATE_17 5'd17 | |
53 | `define DRIF_MCU_STATE_18 5'd18 | |
54 | `define DRIF_MCU_STATE_19 5'd19 | |
55 | `define DRIF_MCU_STATE_20 5'd20 | |
56 | `define DRIF_MCU_STATE_21 5'd21 | |
57 | `define DRIF_MCU_STATE_22 5'd22 | |
58 | `define DRIF_MCU_STATE_23 5'd23 | |
59 | `define DRIF_MCU_STATE_24 5'd24 | |
60 | `define DRIF_MCU_STATE_25 5'd25 | |
61 | `define DRIF_MCU_STATE_26 5'd26 | |
62 | ||
63 | `define DRIF_MCU_STATE_MAX 4 | |
64 | `define DRIF_MCU_STATE_WIDTH 5 | |
65 | ||
66 | // | |
67 | // UCB Packet Type | |
68 | // =============== | |
69 | // | |
70 | `define UCB_READ_NACK 4'b0000 // ack/nack types | |
71 | `define UCB_READ_ACK 4'b0001 | |
72 | `define UCB_WRITE_ACK 4'b0010 | |
73 | `define UCB_IFILL_ACK 4'b0011 | |
74 | `define UCB_IFILL_NACK 4'b0111 | |
75 | ||
76 | `define UCB_READ_REQ 4'b0100 // req types | |
77 | `define UCB_WRITE_REQ 4'b0101 | |
78 | `define UCB_IFILL_REQ 4'b0110 | |
79 | ||
80 | `define UCB_INT 4'b1000 // plain interrupt | |
81 | `define UCB_INT_VEC 4'b1100 // interrupt with vector | |
82 | `define UCB_RESET_VEC 4'b1101 // reset with vector | |
83 | `define UCB_IDLE_VEC 4'b1110 // idle with vector | |
84 | `define UCB_RESUME_VEC 4'b1111 // resume with vector | |
85 | ||
86 | ||
87 | // | |
88 | // UCB Data Packet Format | |
89 | // ====================== | |
90 | // | |
91 | `define UCB_NOPAY_PKT_WIDTH 64 // packet without payload | |
92 | `define UCB_64PAY_PKT_WIDTH 128 // packet with 64 bit payload | |
93 | `define UCB_128PAY_PKT_WIDTH 192 // packet with 128 bit payload | |
94 | ||
95 | `define UCB_DATA_EXT_HI 191 // (64) extended data | |
96 | `define UCB_DATA_EXT_LO 128 | |
97 | `define UCB_DATA_HI 127 // (64) data | |
98 | `define UCB_DATA_LO 64 | |
99 | `define UCB_RSV_HI 63 // (9) reserved bits | |
100 | `define UCB_RSV_LO 55 | |
101 | `define UCB_ADDR_HI 54 // (40) bit address | |
102 | `define UCB_ADDR_LO 15 | |
103 | `define UCB_SIZE_HI 14 // (3) request size | |
104 | `define UCB_SIZE_LO 12 | |
105 | `define UCB_BUF_HI 11 // (2) buffer ID | |
106 | `define UCB_BUF_LO 10 | |
107 | `define UCB_THR_HI 9 // (6) cpu/thread ID | |
108 | `define UCB_THR_LO 4 | |
109 | `define UCB_PKT_HI 3 // (4) packet type | |
110 | `define UCB_PKT_LO 0 | |
111 | ||
112 | `define UCB_DATA_EXT_WIDTH 64 | |
113 | `define UCB_DATA_WIDTH 64 | |
114 | `define UCB_RSV_WIDTH 9 | |
115 | `define UCB_ADDR_WIDTH 40 | |
116 | `define UCB_SIZE_WIDTH 3 | |
117 | `define UCB_BUF_WIDTH 2 | |
118 | `define UCB_THR_WIDTH 6 | |
119 | `define UCB_PKT_WIDTH 4 | |
120 | ||
121 | // Size encoding for the UCB_SIZE_HI/LO field | |
122 | // 000 - byte | |
123 | // 001 - half-word | |
124 | // 010 - word | |
125 | // 011 - double-word | |
126 | `define UCB_SIZE_1B 3'b000 | |
127 | `define UCB_SIZE_2B 3'b001 | |
128 | `define UCB_SIZE_4B 3'b010 | |
129 | `define UCB_SIZE_8B 3'b011 | |
130 | `define UCB_SIZE_16B 3'b100 | |
131 | ||
132 | ||
133 | // | |
134 | // UCB Interrupt Packet Format | |
135 | // =========================== | |
136 | // | |
137 | `define UCB_INT_PKT_WIDTH 64 | |
138 | ||
139 | `define UCB_INT_RSV_HI 63 // (7) reserved bits | |
140 | `define UCB_INT_RSV_LO 57 | |
141 | `define UCB_INT_VEC_HI 56 // (6) interrupt vector | |
142 | `define UCB_INT_VEC_LO 51 | |
143 | `define UCB_INT_STAT_HI 50 // (32) interrupt status | |
144 | `define UCB_INT_STAT_LO 19 | |
145 | `define UCB_INT_DEV_HI 18 // (9) device ID | |
146 | `define UCB_INT_DEV_LO 10 | |
147 | //`define UCB_THR_HI 9 // (6) cpu/thread ID shared with | |
148 | //`define UCB_THR_LO 4 data packet format | |
149 | //`define UCB_PKT_HI 3 // (4) packet type shared with | |
150 | //`define UCB_PKT_LO 0 // data packet format | |
151 | ||
152 | `define UCB_INT_RSV_WIDTH 7 | |
153 | `define UCB_INT_VEC_WIDTH 6 | |
154 | `define UCB_INT_STAT_WIDTH 32 | |
155 | `define UCB_INT_DEV_WIDTH 9 | |
156 | ||
157 | ||
158 | `define MCU_CAS_BIT2_SEL_PA10 4'h1 | |
159 | `define MCU_CAS_BIT2_SEL_PA32 4'h2 | |
160 | `define MCU_CAS_BIT2_SEL_PA33 4'h4 | |
161 | `define MCU_CAS_BIT2_SEL_PA34 4'h8 | |
162 | ||
163 | `define MCU_CAS_BIT3_SEL_PA11 4'h1 | |
164 | `define MCU_CAS_BIT3_SEL_PA33 4'h2 | |
165 | `define MCU_CAS_BIT3_SEL_PA34 4'h4 | |
166 | `define MCU_CAS_BIT3_SEL_PA35 4'h8 | |
167 | ||
168 | `define MCU_CAS_BIT4_SEL_PA12 3'h1 | |
169 | `define MCU_CAS_BIT4_SEL_PA35 3'h2 | |
170 | `define MCU_CAS_BIT4_SEL_PA36 3'h4 | |
171 | ||
172 | `define MCU_DIMMHI_SEL_ZERO 6'h01 | |
173 | `define MCU_DIMMHI_SEL_PA32 6'h02 | |
174 | `define MCU_DIMMHI_SEL_PA33 6'h04 | |
175 | `define MCU_DIMMHI_SEL_PA34 6'h08 | |
176 | `define MCU_DIMMHI_SEL_PA35 6'h10 | |
177 | `define MCU_DIMMHI_SEL_PA36 6'h20 | |
178 | ||
179 | `define MCU_DIMMLO_SEL_ZERO 4'h1 | |
180 | `define MCU_DIMMLO_SEL_PA10 4'h2 | |
181 | `define MCU_DIMMLO_SEL_PA11 4'h4 | |
182 | `define MCU_DIMMLO_SEL_PA12 4'h8 | |
183 | ||
184 | `define MCU_RANK_SEL_ZERO 7'h01 | |
185 | `define MCU_RANK_SEL_PA32 7'h02 | |
186 | `define MCU_RANK_SEL_PA33 7'h04 | |
187 | `define MCU_RANK_SEL_PA34 7'h08 | |
188 | `define MCU_RANK_SEL_PA35 7'h10 | |
189 | `define MCU_RANK_SEL_PA10 7'h20 | |
190 | `define MCU_RANK_SEL_PA11 7'h40 | |
191 | ||
192 | `define MCU_ADDR_ERR_SEL_39_32 6'h01 | |
193 | `define MCU_ADDR_ERR_SEL_39_33 6'h02 | |
194 | `define MCU_ADDR_ERR_SEL_39_34 6'h04 | |
195 | `define MCU_ADDR_ERR_SEL_39_35 6'h08 | |
196 | `define MCU_ADDR_ERR_SEL_39_36 6'h10 | |
197 | `define MCU_ADDR_ERR_SEL_39_37 6'h20 | |
198 | ||
199 | `define DRIF_ERR_IDLE 0 | |
200 | `define DRIF_ERR_IDLE_ST 5'h1 | |
201 | `define DRIF_ERR_READ0 1 | |
202 | `define DRIF_ERR_READ0_ST 5'h2 | |
203 | `define DRIF_ERR_WRITE 2 | |
204 | `define DRIF_ERR_WRITE_ST 5'h4 | |
205 | `define DRIF_ERR_READ1 3 | |
206 | `define DRIF_ERR_READ1_ST 5'h8 | |
207 | `define DRIF_ERR_CRC_FR 4 | |
208 | `define DRIF_ERR_CRC_FR_ST 5'h10 | |
209 | ||
210 | `define MCU_WDQ_RF_DATA_WIDTH 72 | |
211 | `define MCU_WDQ_RF_ADDR_WIDTH 5 | |
212 | `define MCU_WDQ_RF_DEPTH 32 | |
213 | ||
214 | // FBDIMM header defines | |
215 | `define FBD_TS0_HDR 12'hbfe | |
216 | `define FBD_TS1_HDR 12'hffe | |
217 | `define FBD_TS2_HDR 12'h7fe | |
218 | `define FBD_TS3_HDR 12'h3fe | |
219 | ||
220 | // MCU FBDIMM Channel commands | |
221 | `define FBD_DRAM_CMD_NOP 3'h0 | |
222 | `define FBD_DRAM_CMD_OTHER 3'h1 | |
223 | `define FBD_DRAM_CMD_RD 3'h2 | |
224 | `define FBD_DRAM_CMD_WR 3'h3 | |
225 | `define FBD_DRAM_CMD_ACT 3'h4 | |
226 | `define FBD_DRAM_CMD_WDATA 3'h5 | |
227 | ||
228 | `define FBD_DRAM_CMD_OTHER_REF 3'h5 | |
229 | `define FBD_DRAM_CMD_OTHER_SRE 3'h4 | |
230 | `define FBD_DRAM_CMD_OTHER_PDE 3'h2 | |
231 | `define FBD_DRAM_CMD_OTHER_SRPDX 3'h3 | |
232 | ||
233 | `define FBD_CHNL_CMD_NOP 2'h0 | |
234 | `define FBD_CHNL_CMD_SYNC 2'h1 | |
235 | `define FBD_CHNL_CMD_SCRST 2'h2 | |
236 | ||
237 | `define FBDIC_ERR_IDLE_ST 7'h01 | |
238 | `define FBDIC_ERR_IDLE 0 | |
239 | ||
240 | `define FBDIC_ERR_STS_ST 7'h02 | |
241 | `define FBDIC_ERR_STS 1 | |
242 | ||
243 | `define FBDIC_ERR_SCRST_ST 7'h04 | |
244 | `define FBDIC_ERR_SCRST 2 | |
245 | ||
246 | `define FBDIC_ERR_SCRST_STS_ST 7'h08 | |
247 | `define FBDIC_ERR_SCRST_STS 3 | |
248 | ||
249 | `define FBDIC_ERR_STS2_ST 7'h10 | |
250 | `define FBDIC_ERR_STS2 4 | |
251 | ||
252 | `define FBDIC_ERR_FASTRST_ST 7'h20 | |
253 | `define FBDIC_ERR_FASTRST 5 | |
254 | ||
255 | `define FBDIC_ERR_FASTRST_STS_ST 7'h40 | |
256 | `define FBDIC_ERR_FASTRST_STS 6 | |
257 | ||
258 | ||
259 | // IBIST DEFINITION | |
260 | ||
261 | `define L_2_0 12'h555 | |
262 | `define L_2_1 12'h555 | |
263 | `define L_4_0 12'h333 | |
264 | `define L_4_1 12'h333 | |
265 | `define L_6_0 12'h1c7 | |
266 | `define L_6_1 12'h1c7 | |
267 | `define L_8_0 12'h0f0 | |
268 | `define L_8_1 12'hf0f | |
269 | `define L_24_0 12'h000 | |
270 | `define L_24_1 12'hfff | |
271 | ||
272 | `define idle 4'h0 | |
273 | ||
274 | `define error_0 4'h1 | |
275 | `define error_1 4'h2 | |
276 | ||
277 | `define start1_0 4'h3 | |
278 | `define start1_1 4'h4 | |
279 | `define start2_0 4'h5 | |
280 | `define start2_1 4'h6 | |
281 | ||
282 | `define pat1_0 4'h7 | |
283 | `define pat1_1 4'h8 | |
284 | ||
285 | `define clkpat_0 4'h9 | |
286 | `define clkpat_1 4'ha | |
287 | ||
288 | `define const_0 4'hb | |
289 | `define const_1 4'hc | |
290 | ||
291 | `define stop1_0 4'h1 | |
292 | `define stop1_1 4'h2 | |
293 | ||
294 | `define stop2_0 4'hd | |
295 | `define stop2_1 4'he | |
296 | `define error 4'hf | |
297 | ||
298 | `define IBTX_STATE_IDLE 0 | |
299 | `define IBTX_STATE_PATT 1 | |
300 | `define IBTX_STATE_MODN 2 | |
301 | `define IBTX_STATE_CONST 3 | |
302 | ||
303 | `define IBRX_STATE_IDLE 0 | |
304 | `define IBRX_STATE_PATT 1 | |
305 | `define IBRX_STATE_MODN 2 | |
306 | `define IBRX_STATE_CONST 3 | |
307 | ||
308 | ||
309 | ||
310 | module mcu_fbdird_dp ( | |
311 | fbdird0_data, | |
312 | fbdird1_data, | |
313 | fbdird_ibrx_data, | |
314 | fbdird_crc_cmp0_0, | |
315 | fbdird_crc_cmp0_1, | |
316 | fbdird_crc_cmp1_0, | |
317 | fbdird_crc_cmp1_1, | |
318 | bd00, | |
319 | bd01, | |
320 | bd10, | |
321 | bd11, | |
322 | fbdic0_failover, | |
323 | fbdic0_failover_l, | |
324 | fbdic1_failover, | |
325 | fbdic1_failover_l, | |
326 | fbdic_rddata_vld, | |
327 | fbdic_rddata_vld_l, | |
328 | fbdic_ibrx_data_sel, | |
329 | fbdic_ibrx_data_sel_l, | |
330 | fbd0_data, | |
331 | fbd1_data, | |
332 | fbdic_idle_lfsr_reset, | |
333 | fbdic_train_state, | |
334 | fbdic_disable_state, | |
335 | lndskw0_data, | |
336 | lndskw1_data, | |
337 | crcnd_crc0_0, | |
338 | crcnd_crc0_1, | |
339 | crcnd_crc1_0, | |
340 | crcnd_crc1_1, | |
341 | crcndf_crc0_0, | |
342 | crcndf_crc0_1, | |
343 | crcndf_crc1_0, | |
344 | crcndf_crc1_1, | |
345 | drif_single_channel_mode, | |
346 | drl2clk, | |
347 | scan_in, | |
348 | scan_out, | |
349 | tcu_pce_ov, | |
350 | tcu_aclk, | |
351 | tcu_bclk, | |
352 | tcu_dectest, | |
353 | tcu_muxtest, | |
354 | tcu_scan_en); | |
355 | wire pce_ov; | |
356 | wire stop; | |
357 | wire siclk; | |
358 | wire soclk; | |
359 | wire test; | |
360 | wire muxtst; | |
361 | wire se; | |
362 | wire [11:0] fbdird_crc0_0; | |
363 | wire [11:0] fbdird_crcf0_0; | |
364 | wire [71:0] fbdird_data0_0; | |
365 | wire [11:0] crc_cmp0_0_actual; | |
366 | wire [11:0] crc_cmp0_0_expected; | |
367 | wire [11:0] fbdird_crc0_1; | |
368 | wire [11:0] fbdird_crcf0_1; | |
369 | wire [71:0] fbdird_data0_1; | |
370 | wire [11:0] crc_cmp0_1_actual; | |
371 | wire [11:0] crc_cmp0_1_expected; | |
372 | wire [11:0] fbdird_crc1_0; | |
373 | wire [11:0] fbdird_crcf1_0; | |
374 | wire [71:0] fbdird_data1_0; | |
375 | wire [11:0] crc_cmp1_0_actual; | |
376 | wire [11:0] crc_cmp1_0_expected; | |
377 | wire [11:0] fbdird_crc1_1; | |
378 | wire [11:0] fbdird_crcf1_1; | |
379 | wire [71:0] fbdird_data1_1; | |
380 | wire [11:0] crc_cmp1_1_actual; | |
381 | wire [11:0] crc_cmp1_1_expected; | |
382 | ||
383 | ||
384 | output [143:0] fbdird0_data; | |
385 | output [143:0] fbdird1_data; | |
386 | ||
387 | output [167:40] fbdird_ibrx_data; | |
388 | ||
389 | output fbdird_crc_cmp0_0; | |
390 | output fbdird_crc_cmp0_1; | |
391 | output fbdird_crc_cmp1_0; | |
392 | output fbdird_crc_cmp1_1; | |
393 | ||
394 | output [71:0] bd00; | |
395 | output [71:0] bd01; | |
396 | output [71:0] bd10; | |
397 | output [71:0] bd11; | |
398 | ||
399 | input fbdic0_failover; | |
400 | input fbdic0_failover_l; | |
401 | input fbdic1_failover; | |
402 | input fbdic1_failover_l; | |
403 | ||
404 | input fbdic_rddata_vld; | |
405 | input fbdic_rddata_vld_l; | |
406 | ||
407 | input fbdic_ibrx_data_sel; | |
408 | input fbdic_ibrx_data_sel_l; | |
409 | ||
410 | input [167:0] fbd0_data; | |
411 | input [167:0] fbd1_data; | |
412 | ||
413 | input fbdic_idle_lfsr_reset; | |
414 | ||
415 | input fbdic_train_state; | |
416 | input fbdic_disable_state; | |
417 | ||
418 | input [167:0] lndskw0_data; | |
419 | input [167:0] lndskw1_data; | |
420 | ||
421 | input [11:0] crcnd_crc0_0; | |
422 | input [11:0] crcnd_crc0_1; | |
423 | input [11:0] crcnd_crc1_0; | |
424 | input [11:0] crcnd_crc1_1; | |
425 | ||
426 | input [5:0] crcndf_crc0_0; | |
427 | input [5:0] crcndf_crc0_1; | |
428 | input [5:0] crcndf_crc1_0; | |
429 | input [5:0] crcndf_crc1_1; | |
430 | ||
431 | input drif_single_channel_mode; | |
432 | ||
433 | input drl2clk; | |
434 | input scan_in; | |
435 | output scan_out; | |
436 | input tcu_pce_ov; | |
437 | input tcu_aclk; | |
438 | input tcu_bclk; | |
439 | input tcu_dectest; | |
440 | input tcu_muxtest; | |
441 | input tcu_scan_en; | |
442 | ||
443 | assign pce_ov = tcu_pce_ov; | |
444 | assign stop = 1'b0; | |
445 | assign siclk = tcu_aclk; | |
446 | assign soclk = tcu_bclk; | |
447 | assign test = tcu_dectest; | |
448 | assign muxtst = tcu_muxtest; | |
449 | assign se = tcu_scan_en; | |
450 | ||
451 | assign scan_out = scan_in; | |
452 | ||
453 | // Channel 0 northbound data | |
454 | ||
455 | // Channel 0, Burst 0 | |
456 | assign fbdird_crc0_0[11:0] = {lndskw0_data[144],lndskw0_data[145],lndskw0_data[146],lndskw0_data[147],lndskw0_data[148], | |
457 | lndskw0_data[149],lndskw0_data[161:156]}; | |
458 | assign fbdird_crcf0_0[11:0] = {6'h0,lndskw0_data[149:144]}; | |
459 | assign fbdird_data0_0[71:0] = {lndskw0_data[137:132], lndskw0_data[125:120], lndskw0_data[113:108], lndskw0_data[101:96], | |
460 | lndskw0_data[89:84], lndskw0_data[77:72], lndskw0_data[65:60], lndskw0_data[53:48], | |
461 | lndskw0_data[41:36], lndskw0_data[29:24], lndskw0_data[17:12], lndskw0_data[5:0]}; | |
462 | ////csret 11/15/2004 | |
463 | //assign crc_cmp0_0 = crc_cmp0_0_actual[11:0] == crc_cmp0_0_expected[11:0]; | |
464 | mcu_fbdird_dp_cmp_macro__width_12 u_cmp_crc_cmp0 ( | |
465 | .din0 ( crc_cmp0_0_actual[11:0] ), | |
466 | .din1 ( crc_cmp0_0_expected[11:0] ), | |
467 | .dout ( fbdird_crc_cmp0_0 )); | |
468 | ||
469 | ////csret 11/15/2004 | |
470 | //assign crc_cmp0_0_actual[11:0] = fbdic_failover ? {6'h0,fbdird_crc0_0[5:0]} : fbdird_crc0_0[11:0]; | |
471 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_act0 ( | |
472 | .dout ( crc_cmp0_0_actual[11:0] ), | |
473 | .din0 ( fbdird_crc0_0[11:0] ), | |
474 | .din1 ( fbdird_crcf0_0[11:0] ), | |
475 | .sel0 ( fbdic0_failover_l ), | |
476 | .sel1 ( fbdic0_failover ) ); | |
477 | ||
478 | ////csret 11/15/2004 | |
479 | //assign crc_cmp0_0_expected[11:0] = fbdic_failover ? {6'h0,crcndf_crc0_0[5:0]} : crcnd_crc0_0[11:0]; | |
480 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_exp0 ( | |
481 | .dout ( crc_cmp0_0_expected[11:0] ), | |
482 | .din0 ( crcnd_crc0_0[11:0] ), | |
483 | .din1 ( {6'h0,crcndf_crc0_0[5:0]} ), | |
484 | .sel0 ( fbdic0_failover_l ), | |
485 | .sel1 ( fbdic0_failover ) ); | |
486 | ||
487 | assign bd00[71:0] = { | |
488 | fbdird_data0_0[5], fbdird_data0_0[11], fbdird_data0_0[17], fbdird_data0_0[23], fbdird_data0_0[29], fbdird_data0_0[35], | |
489 | fbdird_data0_0[41], fbdird_data0_0[47], fbdird_data0_0[53], fbdird_data0_0[59], fbdird_data0_0[65], fbdird_data0_0[71], | |
490 | fbdird_data0_0[70], fbdird_data0_0[64], fbdird_data0_0[58], fbdird_data0_0[52], fbdird_data0_0[46], fbdird_data0_0[40], | |
491 | fbdird_data0_0[34], fbdird_data0_0[28], fbdird_data0_0[22], fbdird_data0_0[16], fbdird_data0_0[10], fbdird_data0_0[4], | |
492 | fbdird_data0_0[3], fbdird_data0_0[9], fbdird_data0_0[15], fbdird_data0_0[21], fbdird_data0_0[27], fbdird_data0_0[33], | |
493 | fbdird_data0_0[39], fbdird_data0_0[45], fbdird_data0_0[51], fbdird_data0_0[57], fbdird_data0_0[63], fbdird_data0_0[69], | |
494 | fbdird_data0_0[68], fbdird_data0_0[62], fbdird_data0_0[56], fbdird_data0_0[50], fbdird_data0_0[44], fbdird_data0_0[38], | |
495 | fbdird_data0_0[32], fbdird_data0_0[26], fbdird_data0_0[20], fbdird_data0_0[14], fbdird_data0_0[8], fbdird_data0_0[2], | |
496 | fbdird_data0_0[1], fbdird_data0_0[7], fbdird_data0_0[13], fbdird_data0_0[19], fbdird_data0_0[25], fbdird_data0_0[31], | |
497 | fbdird_data0_0[37], fbdird_data0_0[43], fbdird_data0_0[49], fbdird_data0_0[55], fbdird_data0_0[61], fbdird_data0_0[67], | |
498 | fbdird_data0_0[66], fbdird_data0_0[60], fbdird_data0_0[54], fbdird_data0_0[48], fbdird_data0_0[42], fbdird_data0_0[36], | |
499 | fbdird_data0_0[30], fbdird_data0_0[24], fbdird_data0_0[18], fbdird_data0_0[12], fbdird_data0_0[6], fbdird_data0_0[0]}; | |
500 | ||
501 | // Channel 0, Burst 1 | |
502 | assign fbdird_crc0_1[11:0] = {lndskw0_data[150],lndskw0_data[151],lndskw0_data[152],lndskw0_data[153],lndskw0_data[154], | |
503 | lndskw0_data[155],lndskw0_data[167:162]}; | |
504 | assign fbdird_crcf0_1[11:0] = {6'h0,lndskw0_data[155:150]}; | |
505 | assign fbdird_data0_1[71:0] = {lndskw0_data[143:138], lndskw0_data[131:126], lndskw0_data[119:114], lndskw0_data[107:102], | |
506 | lndskw0_data[95:90], lndskw0_data[83:78], lndskw0_data[71:66], lndskw0_data[59:54], | |
507 | lndskw0_data[47:42], lndskw0_data[35:30], lndskw0_data[23:18], lndskw0_data[11:6]}; | |
508 | ||
509 | ////csret 11/15/2004 | |
510 | //assign crc_cmp0_1 = crc_cmp0_1_actual[11:0] == crc_cmp0_1_expected[11:0]; | |
511 | mcu_fbdird_dp_cmp_macro__width_12 u_cmp_crc_cmp1 ( | |
512 | .din0 ( crc_cmp0_1_actual[11:0] ), | |
513 | .din1 ( crc_cmp0_1_expected[11:0] ), | |
514 | .dout ( fbdird_crc_cmp0_1 )); | |
515 | ||
516 | ////csret 11/15/2004 | |
517 | //assign crc_cmp0_1_actual[11:0] = fbdic_failover ? {6'h0,fbdird_crc0_1[5:0]} : fbdird_crc0_1[11:0]; | |
518 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_act1 ( | |
519 | .dout ( crc_cmp0_1_actual[11:0] ), | |
520 | .din0 ( fbdird_crc0_1[11:0] ), | |
521 | .din1 ( fbdird_crcf0_1[11:0] ), | |
522 | .sel0 ( fbdic0_failover_l ), | |
523 | .sel1 ( fbdic0_failover ) ); | |
524 | ||
525 | ////csret 11/15/2004 | |
526 | //assign crc_cmp0_1_expected[11:0] = fbdic_failover ? {6'h0,crcndf_crc0_1[5:0]} : crcnd_crc0_1[11:0]; | |
527 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_exp1 ( | |
528 | .dout ( crc_cmp0_1_expected[11:0] ), | |
529 | .din0 ( crcnd_crc0_1[11:0] ), | |
530 | .din1 ( {6'h0,crcndf_crc0_1[5:0]} ), | |
531 | .sel0 ( fbdic0_failover_l ), | |
532 | .sel1 ( fbdic0_failover ) ); | |
533 | ||
534 | assign bd01[71:0] = { | |
535 | fbdird_data0_1[5], fbdird_data0_1[11], fbdird_data0_1[17], fbdird_data0_1[23], fbdird_data0_1[29], fbdird_data0_1[35], | |
536 | fbdird_data0_1[41], fbdird_data0_1[47], fbdird_data0_1[53], fbdird_data0_1[59], fbdird_data0_1[65], fbdird_data0_1[71], | |
537 | fbdird_data0_1[70], fbdird_data0_1[64], fbdird_data0_1[58], fbdird_data0_1[52], fbdird_data0_1[46], fbdird_data0_1[40], | |
538 | fbdird_data0_1[34], fbdird_data0_1[28], fbdird_data0_1[22], fbdird_data0_1[16], fbdird_data0_1[10], fbdird_data0_1[4], | |
539 | fbdird_data0_1[3], fbdird_data0_1[9], fbdird_data0_1[15], fbdird_data0_1[21], fbdird_data0_1[27], fbdird_data0_1[33], | |
540 | fbdird_data0_1[39], fbdird_data0_1[45], fbdird_data0_1[51], fbdird_data0_1[57], fbdird_data0_1[63], fbdird_data0_1[69], | |
541 | fbdird_data0_1[68], fbdird_data0_1[62], fbdird_data0_1[56], fbdird_data0_1[50], fbdird_data0_1[44], fbdird_data0_1[38], | |
542 | fbdird_data0_1[32], fbdird_data0_1[26], fbdird_data0_1[20], fbdird_data0_1[14], fbdird_data0_1[8], fbdird_data0_1[2], | |
543 | fbdird_data0_1[1], fbdird_data0_1[7], fbdird_data0_1[13], fbdird_data0_1[19], fbdird_data0_1[25], fbdird_data0_1[31], | |
544 | fbdird_data0_1[37], fbdird_data0_1[43], fbdird_data0_1[49], fbdird_data0_1[55], fbdird_data0_1[61], fbdird_data0_1[67], | |
545 | fbdird_data0_1[66], fbdird_data0_1[60], fbdird_data0_1[54], fbdird_data0_1[48], fbdird_data0_1[42], fbdird_data0_1[36], | |
546 | fbdird_data0_1[30], fbdird_data0_1[24], fbdird_data0_1[18], fbdird_data0_1[12], fbdird_data0_1[6], fbdird_data0_1[0]}; | |
547 | ||
548 | // Channel 1 northbound data | |
549 | ||
550 | // Channel 1, Burst 0 | |
551 | assign fbdird_crc1_0[11:0] = {lndskw1_data[144],lndskw1_data[145],lndskw1_data[146],lndskw1_data[147],lndskw1_data[148], | |
552 | lndskw1_data[149],lndskw1_data[161:156]}; | |
553 | assign fbdird_crcf1_0[11:0] = {6'h0,lndskw1_data[149:144]}; | |
554 | assign fbdird_data1_0[71:0] = {lndskw1_data[137:132], lndskw1_data[125:120], lndskw1_data[113:108], lndskw1_data[101:96], | |
555 | lndskw1_data[89:84], lndskw1_data[77:72], lndskw1_data[65:60], lndskw1_data[53:48], | |
556 | lndskw1_data[41:36], lndskw1_data[29:24], lndskw1_data[17:12], lndskw1_data[5:0]}; | |
557 | ||
558 | ////csret 11/15/2004 | |
559 | //assign crc_cmp1_0 = crc_cmp1_0_actual[11:0] == crc_cmp1_0_expected[11:0]; | |
560 | mcu_fbdird_dp_cmp_macro__width_12 u_cmp_crc_cmp10 ( | |
561 | .din0 ( crc_cmp1_0_actual[11:0] ), | |
562 | .din1 ( crc_cmp1_0_expected[11:0] ), | |
563 | .dout ( fbdird_crc_cmp1_0 )); | |
564 | ||
565 | ////csret 11/15/2004 | |
566 | //assign crc_cmp1_0_actual[11:0] = fbdic_failover ? {6'h0,fbdird_crc1_0[5:0]} : fbdird_crc1_0[11:0]; | |
567 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_act10 ( | |
568 | .dout ( crc_cmp1_0_actual[11:0] ), | |
569 | .din0 ( fbdird_crc1_0[11:0] ), | |
570 | .din1 ( fbdird_crcf1_0[11:0] ), | |
571 | .sel0 ( fbdic1_failover_l ), | |
572 | .sel1 ( fbdic1_failover ) ); | |
573 | ||
574 | ////csret 11/15/2004 | |
575 | //assign crc_cmp1_0_expected[11:0] = fbdic_failover ? {6'h0,crcndf_crc1_0[5:0]} : crcnd_crc1_0[11:0]; | |
576 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_exp10 ( | |
577 | .dout ( crc_cmp1_0_expected[11:0] ), | |
578 | .din0 ( crcnd_crc1_0[11:0] ), | |
579 | .din1 ( {6'h0,crcndf_crc1_0[5:0]} ), | |
580 | .sel0 ( fbdic1_failover_l ), | |
581 | .sel1 ( fbdic1_failover ) ); | |
582 | ||
583 | assign bd10[71:0] = { | |
584 | fbdird_data1_0[5], fbdird_data1_0[11], fbdird_data1_0[17], fbdird_data1_0[23], fbdird_data1_0[29], fbdird_data1_0[35], | |
585 | fbdird_data1_0[41], fbdird_data1_0[47], fbdird_data1_0[53], fbdird_data1_0[59], fbdird_data1_0[65], fbdird_data1_0[71], | |
586 | fbdird_data1_0[70], fbdird_data1_0[64], fbdird_data1_0[58], fbdird_data1_0[52], fbdird_data1_0[46], fbdird_data1_0[40], | |
587 | fbdird_data1_0[34], fbdird_data1_0[28], fbdird_data1_0[22], fbdird_data1_0[16], fbdird_data1_0[10], fbdird_data1_0[4], | |
588 | fbdird_data1_0[3], fbdird_data1_0[9], fbdird_data1_0[15], fbdird_data1_0[21], fbdird_data1_0[27], fbdird_data1_0[33], | |
589 | fbdird_data1_0[39], fbdird_data1_0[45], fbdird_data1_0[51], fbdird_data1_0[57], fbdird_data1_0[63], fbdird_data1_0[69], | |
590 | fbdird_data1_0[68], fbdird_data1_0[62], fbdird_data1_0[56], fbdird_data1_0[50], fbdird_data1_0[44], fbdird_data1_0[38], | |
591 | fbdird_data1_0[32], fbdird_data1_0[26], fbdird_data1_0[20], fbdird_data1_0[14], fbdird_data1_0[8], fbdird_data1_0[2], | |
592 | fbdird_data1_0[1], fbdird_data1_0[7], fbdird_data1_0[13], fbdird_data1_0[19], fbdird_data1_0[25], fbdird_data1_0[31], | |
593 | fbdird_data1_0[37], fbdird_data1_0[43], fbdird_data1_0[49], fbdird_data1_0[55], fbdird_data1_0[61], fbdird_data1_0[67], | |
594 | fbdird_data1_0[66], fbdird_data1_0[60], fbdird_data1_0[54], fbdird_data1_0[48], fbdird_data1_0[42], fbdird_data1_0[36], | |
595 | fbdird_data1_0[30], fbdird_data1_0[24], fbdird_data1_0[18], fbdird_data1_0[12], fbdird_data1_0[6], fbdird_data1_0[0]}; | |
596 | ||
597 | // Channel 1, Burst 1 | |
598 | ||
599 | assign fbdird_crc1_1[11:0] = {lndskw1_data[150],lndskw1_data[151],lndskw1_data[152],lndskw1_data[153],lndskw1_data[154], | |
600 | lndskw1_data[155],lndskw1_data[167:162]}; | |
601 | assign fbdird_crcf1_1[11:0] = {6'h0,lndskw1_data[155:150]}; | |
602 | assign fbdird_data1_1[71:0] = {lndskw1_data[143:138], lndskw1_data[131:126], lndskw1_data[119:114], lndskw1_data[107:102], | |
603 | lndskw1_data[95:90], lndskw1_data[83:78], lndskw1_data[71:66], lndskw1_data[59:54], | |
604 | lndskw1_data[47:42], lndskw1_data[35:30], lndskw1_data[23:18], lndskw1_data[11:6]}; | |
605 | ||
606 | ////csret 11/15/2004 | |
607 | //assign crc_cmp1_1 = crc_cmp1_1_actual[11:0] == crc_cmp1_1_expected[11:0]; | |
608 | mcu_fbdird_dp_cmp_macro__width_12 u_cmp_crc_cmp11 ( | |
609 | .din0 ( crc_cmp1_1_actual[11:0] ), | |
610 | .din1 ( crc_cmp1_1_expected[11:0] ), | |
611 | .dout ( fbdird_crc_cmp1_1 )); | |
612 | ||
613 | ////csret 11/15/2004 | |
614 | //assign crc_cmp1_1_actual[11:0] = fbdic_failover ? {6'h0,fbdird_crc1_1[5:0]} : fbdird_crc1_1[11:0]; | |
615 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_act11 ( | |
616 | .dout ( crc_cmp1_1_actual[11:0] ), | |
617 | .din0 ( fbdird_crc1_1[11:0] ), | |
618 | .din1 ( fbdird_crcf1_1[11:0] ), | |
619 | .sel0 ( fbdic1_failover_l ), | |
620 | .sel1 ( fbdic1_failover ) ); | |
621 | ||
622 | ////csret 11/15/2004 | |
623 | //assign crc_cmp1_1_expected[11:0] = fbdic_failover ? {6'h0,crcndf_crc1_1[5:0]} : crcnd_crc1_1[11:0]; | |
624 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 u_mux_crc_cmp_exp11 ( | |
625 | .dout ( crc_cmp1_1_expected[11:0] ), | |
626 | .din0 ( crcnd_crc1_1[11:0] ), | |
627 | .din1 ( {6'h0,crcndf_crc1_1[5:0]} ), | |
628 | .sel0 ( fbdic1_failover_l ), | |
629 | .sel1 ( fbdic1_failover ) ); | |
630 | ||
631 | assign bd11[71:0] = { | |
632 | fbdird_data1_1[5], fbdird_data1_1[11], fbdird_data1_1[17], fbdird_data1_1[23], fbdird_data1_1[29], fbdird_data1_1[35], | |
633 | fbdird_data1_1[41], fbdird_data1_1[47], fbdird_data1_1[53], fbdird_data1_1[59], fbdird_data1_1[65], fbdird_data1_1[71], | |
634 | fbdird_data1_1[70], fbdird_data1_1[64], fbdird_data1_1[58], fbdird_data1_1[52], fbdird_data1_1[46], fbdird_data1_1[40], | |
635 | fbdird_data1_1[34], fbdird_data1_1[28], fbdird_data1_1[22], fbdird_data1_1[16], fbdird_data1_1[10], fbdird_data1_1[4], | |
636 | fbdird_data1_1[3], fbdird_data1_1[9], fbdird_data1_1[15], fbdird_data1_1[21], fbdird_data1_1[27], fbdird_data1_1[33], | |
637 | fbdird_data1_1[39], fbdird_data1_1[45], fbdird_data1_1[51], fbdird_data1_1[57], fbdird_data1_1[63], fbdird_data1_1[69], | |
638 | fbdird_data1_1[68], fbdird_data1_1[62], fbdird_data1_1[56], fbdird_data1_1[50], fbdird_data1_1[44], fbdird_data1_1[38], | |
639 | fbdird_data1_1[32], fbdird_data1_1[26], fbdird_data1_1[20], fbdird_data1_1[14], fbdird_data1_1[8], fbdird_data1_1[2], | |
640 | fbdird_data1_1[1], fbdird_data1_1[7], fbdird_data1_1[13], fbdird_data1_1[19], fbdird_data1_1[25], fbdird_data1_1[31], | |
641 | fbdird_data1_1[37], fbdird_data1_1[43], fbdird_data1_1[49], fbdird_data1_1[55], fbdird_data1_1[61], fbdird_data1_1[67], | |
642 | fbdird_data1_1[66], fbdird_data1_1[60], fbdird_data1_1[54], fbdird_data1_1[48], fbdird_data1_1[42], fbdird_data1_1[36], | |
643 | fbdird_data1_1[30], fbdird_data1_1[24], fbdird_data1_1[18], fbdird_data1_1[12], fbdird_data1_1[6], fbdird_data1_1[0]}; | |
644 | ||
645 | // data to readdp blocks | |
646 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_16 u_mux_fbdird0_data_143_128 ( | |
647 | .din0({16{1'b0}}), | |
648 | .din1(fbdird_data0_0[71:56]), | |
649 | .din2(fbdird_data0_0[71:56]), | |
650 | .sel0(fbdic_rddata_vld_l), | |
651 | .sel1(drif_single_channel_mode), | |
652 | .dout(fbdird0_data[143:128]), | |
653 | .muxtst(muxtst), | |
654 | .test(test)); | |
655 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_64 u_mux_fbdird0_data_127_64 ( | |
656 | .din0({64{1'b0}}), | |
657 | .din1({fbdird_data0_0[55:0],fbdird_data0_1[71:64]}), | |
658 | .din2({fbdird_data0_0[55:0],fbdird_data1_0[71:64]}), | |
659 | .sel0(fbdic_rddata_vld_l), | |
660 | .sel1(drif_single_channel_mode), | |
661 | .dout(fbdird0_data[127:64]), | |
662 | .muxtst(muxtst), | |
663 | .test(test)); | |
664 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_64 u_mux_fbdird0_data_63_0 ( | |
665 | .din0({64{1'b0}}), | |
666 | .din1(fbdird_data0_1[63:0]), | |
667 | .din2(fbdird_data1_0[63:0]), | |
668 | .sel0(fbdic_rddata_vld_l), | |
669 | .sel1(drif_single_channel_mode), | |
670 | .dout(fbdird0_data[63:0]), | |
671 | .muxtst(muxtst), | |
672 | .test(test)); | |
673 | ||
674 | // if in single channel mode, send data0 bits to readdp1 also | |
675 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_16 u_mux_fbdird1_data_143_128 ( | |
676 | .din0({16{1'b0}}), | |
677 | .din1(fbdird_data0_0[71:56]), | |
678 | .din2(fbdird_data0_1[71:56]), | |
679 | .sel0(fbdic_rddata_vld_l), | |
680 | .sel1(drif_single_channel_mode), | |
681 | .dout(fbdird1_data[143:128]), | |
682 | .muxtst(muxtst), | |
683 | .test(test)); | |
684 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_64 u_mux_fbdird1_data_127_64 ( | |
685 | .din0({64{1'b0}}), | |
686 | .din1({fbdird_data0_0[55:0],fbdird_data0_1[71:64]}), | |
687 | .din2({fbdird_data0_1[55:0],fbdird_data1_1[71:64]}), | |
688 | .sel0(fbdic_rddata_vld_l), | |
689 | .sel1(drif_single_channel_mode), | |
690 | .dout(fbdird1_data[127:64]), | |
691 | .muxtst(muxtst), | |
692 | .test(test)); | |
693 | mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_64 u_mux_fbdird1_data_63_0 ( | |
694 | .din0({64{1'b0}}), | |
695 | .din1(fbdird_data0_1[63:0]), | |
696 | .din2(fbdird_data1_1[63:0]), | |
697 | .sel0(fbdic_rddata_vld_l), | |
698 | .sel1(drif_single_channel_mode), | |
699 | .dout(fbdird1_data[63:0]), | |
700 | .muxtst(muxtst), | |
701 | .test(test)); | |
702 | ||
703 | // Mux for IBIST data | |
704 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_64 u_mux_ibist_167_104 ( | |
705 | .din0(lndskw0_data[167:104]), | |
706 | .din1(lndskw1_data[167:104]), | |
707 | .sel0(fbdic_ibrx_data_sel_l), | |
708 | .sel1(fbdic_ibrx_data_sel), | |
709 | .dout(fbdird_ibrx_data[167:104])); | |
710 | ||
711 | mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_64 u_mux_ibist_103_40 ( | |
712 | .din0(lndskw0_data[103:40]), | |
713 | .din1(lndskw1_data[103:40]), | |
714 | .sel0(fbdic_ibrx_data_sel_l), | |
715 | .sel1(fbdic_ibrx_data_sel), | |
716 | .dout(fbdird_ibrx_data[103:40])); | |
717 | ||
718 | endmodule | |
719 | ||
720 | ||
721 | // | |
722 | // comparator macro (output is 1 if both inputs are equal; 0 otherwise) | |
723 | // | |
724 | // | |
725 | ||
726 | ||
727 | ||
728 | ||
729 | ||
730 | module mcu_fbdird_dp_cmp_macro__width_12 ( | |
731 | din0, | |
732 | din1, | |
733 | dout); | |
734 | input [11:0] din0; | |
735 | input [11:0] din1; | |
736 | output dout; | |
737 | ||
738 | ||
739 | ||
740 | ||
741 | ||
742 | ||
743 | cmp #(12) m0_0 ( | |
744 | .in0(din0[11:0]), | |
745 | .in1(din1[11:0]), | |
746 | .out(dout) | |
747 | ); | |
748 | ||
749 | ||
750 | ||
751 | ||
752 | ||
753 | ||
754 | ||
755 | ||
756 | ||
757 | ||
758 | endmodule | |
759 | ||
760 | ||
761 | ||
762 | ||
763 | ||
764 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
765 | // also for pass-gate with decoder | |
766 | ||
767 | ||
768 | ||
769 | ||
770 | ||
771 | // any PARAMS parms go into naming of macro | |
772 | ||
773 | module mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_12 ( | |
774 | din0, | |
775 | sel0, | |
776 | din1, | |
777 | sel1, | |
778 | dout); | |
779 | wire buffout0; | |
780 | wire buffout1; | |
781 | ||
782 | input [11:0] din0; | |
783 | input sel0; | |
784 | input [11:0] din1; | |
785 | input sel1; | |
786 | output [11:0] dout; | |
787 | ||
788 | ||
789 | ||
790 | ||
791 | ||
792 | cl_dp1_muxbuff2_8x c0_0 ( | |
793 | .in0(sel0), | |
794 | .in1(sel1), | |
795 | .out0(buffout0), | |
796 | .out1(buffout1) | |
797 | ); | |
798 | mux2s #(12) d0_0 ( | |
799 | .sel0(buffout0), | |
800 | .sel1(buffout1), | |
801 | .in0(din0[11:0]), | |
802 | .in1(din1[11:0]), | |
803 | .dout(dout[11:0]) | |
804 | ); | |
805 | ||
806 | ||
807 | ||
808 | ||
809 | ||
810 | ||
811 | ||
812 | ||
813 | ||
814 | ||
815 | ||
816 | ||
817 | ||
818 | endmodule | |
819 | ||
820 | ||
821 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
822 | // also for pass-gate with decoder | |
823 | ||
824 | ||
825 | ||
826 | ||
827 | ||
828 | // any PARAMS parms go into naming of macro | |
829 | ||
830 | module mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_16 ( | |
831 | din0, | |
832 | din1, | |
833 | din2, | |
834 | sel0, | |
835 | sel1, | |
836 | muxtst, | |
837 | test, | |
838 | dout); | |
839 | wire psel0; | |
840 | wire psel1; | |
841 | wire psel2; | |
842 | ||
843 | input [15:0] din0; | |
844 | input [15:0] din1; | |
845 | input [15:0] din2; | |
846 | input sel0; | |
847 | input sel1; | |
848 | input muxtst; | |
849 | input test; | |
850 | output [15:0] dout; | |
851 | ||
852 | ||
853 | ||
854 | ||
855 | ||
856 | cl_dp1_penc3_8x c0_0 ( | |
857 | .sel0(sel0), | |
858 | .sel1(sel1), | |
859 | .psel0(psel0), | |
860 | .psel1(psel1), | |
861 | .psel2(psel2), | |
862 | .test(test) | |
863 | ); | |
864 | ||
865 | mux3 #(16) d0_0 ( | |
866 | .sel0(psel0), | |
867 | .sel1(psel1), | |
868 | .sel2(psel2), | |
869 | .in0(din0[15:0]), | |
870 | .in1(din1[15:0]), | |
871 | .in2(din2[15:0]), | |
872 | .dout(dout[15:0]), | |
873 | .muxtst(muxtst) | |
874 | ); | |
875 | ||
876 | ||
877 | ||
878 | ||
879 | ||
880 | ||
881 | ||
882 | ||
883 | ||
884 | ||
885 | ||
886 | ||
887 | ||
888 | endmodule | |
889 | ||
890 | ||
891 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
892 | // also for pass-gate with decoder | |
893 | ||
894 | ||
895 | ||
896 | ||
897 | ||
898 | // any PARAMS parms go into naming of macro | |
899 | ||
900 | module mcu_fbdird_dp_mux_macro__mux_pgpe__ports_3__width_64 ( | |
901 | din0, | |
902 | din1, | |
903 | din2, | |
904 | sel0, | |
905 | sel1, | |
906 | muxtst, | |
907 | test, | |
908 | dout); | |
909 | wire psel0; | |
910 | wire psel1; | |
911 | wire psel2; | |
912 | ||
913 | input [63:0] din0; | |
914 | input [63:0] din1; | |
915 | input [63:0] din2; | |
916 | input sel0; | |
917 | input sel1; | |
918 | input muxtst; | |
919 | input test; | |
920 | output [63:0] dout; | |
921 | ||
922 | ||
923 | ||
924 | ||
925 | ||
926 | cl_dp1_penc3_8x c0_0 ( | |
927 | .sel0(sel0), | |
928 | .sel1(sel1), | |
929 | .psel0(psel0), | |
930 | .psel1(psel1), | |
931 | .psel2(psel2), | |
932 | .test(test) | |
933 | ); | |
934 | ||
935 | mux3 #(64) d0_0 ( | |
936 | .sel0(psel0), | |
937 | .sel1(psel1), | |
938 | .sel2(psel2), | |
939 | .in0(din0[63:0]), | |
940 | .in1(din1[63:0]), | |
941 | .in2(din2[63:0]), | |
942 | .dout(dout[63:0]), | |
943 | .muxtst(muxtst) | |
944 | ); | |
945 | ||
946 | ||
947 | ||
948 | ||
949 | ||
950 | ||
951 | ||
952 | ||
953 | ||
954 | ||
955 | ||
956 | ||
957 | ||
958 | endmodule | |
959 | ||
960 | ||
961 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
962 | // also for pass-gate with decoder | |
963 | ||
964 | ||
965 | ||
966 | ||
967 | ||
968 | // any PARAMS parms go into naming of macro | |
969 | ||
970 | module mcu_fbdird_dp_mux_macro__mux_aonpe__ports_2__width_64 ( | |
971 | din0, | |
972 | sel0, | |
973 | din1, | |
974 | sel1, | |
975 | dout); | |
976 | wire buffout0; | |
977 | wire buffout1; | |
978 | ||
979 | input [63:0] din0; | |
980 | input sel0; | |
981 | input [63:0] din1; | |
982 | input sel1; | |
983 | output [63:0] dout; | |
984 | ||
985 | ||
986 | ||
987 | ||
988 | ||
989 | cl_dp1_muxbuff2_8x c0_0 ( | |
990 | .in0(sel0), | |
991 | .in1(sel1), | |
992 | .out0(buffout0), | |
993 | .out1(buffout1) | |
994 | ); | |
995 | mux2s #(64) d0_0 ( | |
996 | .sel0(buffout0), | |
997 | .sel1(buffout1), | |
998 | .in0(din0[63:0]), | |
999 | .in1(din1[63:0]), | |
1000 | .dout(dout[63:0]) | |
1001 | ); | |
1002 | ||
1003 | ||
1004 | ||
1005 | ||
1006 | ||
1007 | ||
1008 | ||
1009 | ||
1010 | ||
1011 | ||
1012 | ||
1013 | ||
1014 | ||
1015 | endmodule | |
1016 |