Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / l2t / rtl / l2t_ecc30b_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: l2t_ecc30b_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 l2t_ecc30b_dp (
36 din,
37 parity,
38 dout,
39 corrected_bit);
40wire p1_10;
41wire p1_11;
42wire p1_12;
43wire p1_13;
44wire p1_14;
45wire p1_20;
46wire p2_10;
47wire p2_11;
48wire p2_12;
49wire p2_13;
50wire p2_20;
51wire p2_21;
52wire p4_10;
53wire p4_11;
54wire p4_12;
55wire p4_13;
56wire p4_20;
57wire p4_21;
58wire p8_10;
59wire p8_11;
60wire p8_12;
61wire p8_13;
62wire p8_20;
63wire p8_21;
64wire p16_10;
65wire p16_11;
66wire p16_12;
67wire p16_13;
68wire p16_20;
69wire p16_21;
70wire np1;
71wire np2;
72wire np4;
73wire np8;
74wire np16;
75wire error_bit0_10a;
76wire error_bit0_10b;
77wire error_bit0_10c;
78wire error_bit0_a;
79wire error_bit1_10a;
80wire error_bit1_10b;
81wire error_bit1_10c;
82wire error_bit1_a;
83wire error_bit2_10a;
84wire error_bit2_10b;
85wire error_bit2_10c;
86wire error_bit2_a;
87wire error_bit3_10a;
88wire error_bit3_10b;
89wire error_bit3_a;
90wire error_bit4_10a;
91wire error_bit4_10b;
92wire error_bit4_a;
93wire error_bit5_10a;
94wire error_bit5_10b;
95wire error_bit5_a;
96wire error_bit6_10a;
97wire error_bit6_10b;
98wire error_bit6_a;
99wire error_bit7_10a;
100wire error_bit7_10b;
101wire error_bit7_a;
102wire error_bit8_10a;
103wire error_bit8_10b;
104wire error_bit8_a;
105wire error_bit9_10a;
106wire error_bit9_10b;
107wire error_bit9_a;
108wire error_bit10_10a;
109wire error_bit10_10b;
110wire error_bit10_a;
111wire error_bit11_10a;
112wire error_bit11_10b;
113wire error_bit11_a;
114wire error_bit12_10a;
115wire error_bit12_10b;
116wire error_bit12_a;
117wire error_bit13_10a;
118wire error_bit13_10b;
119wire error_bit13_a;
120wire error_bit14_10a;
121wire error_bit14_10b;
122wire error_bit14_a;
123wire error_bit15_10a;
124wire error_bit15_10b;
125wire error_bit15_a;
126wire error_bit16_10a;
127wire error_bit16_10b;
128wire error_bit16_a;
129wire error_bit17_10a;
130wire error_bit17_10b;
131wire error_bit17_a;
132wire error_bit18_10a;
133wire error_bit18_10b;
134wire error_bit18_a;
135wire error_bit19_10a;
136wire error_bit19_10b;
137wire error_bit19_a;
138wire error_bit20_10a;
139wire error_bit20_10b;
140wire error_bit20_a;
141wire error_bit21_10a;
142wire error_bit21_10b;
143wire error_bit21_a;
144wire error_bit22_10a;
145wire error_bit22_10b;
146wire error_bit22_a;
147wire error_bit23_10a;
148wire error_bit23_10b;
149wire error_bit23_a;
150
151
152// Input Ports
153input [23:0] din ;
154input [4:0] parity ;
155
156// Output Ports
157output [23:0] dout ;
158output [4:0] corrected_bit ;
159
160wire [23:0] dout ;
161wire [4:0] corrected_bit ;
162
163// Local Reg and Wires
164wire p1 ;
165wire p2 ;
166wire p4 ;
167wire p8 ;
168wire p16 ;
169wire [23:0] error_bit ;
170
171
172//----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
173// |1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|13|14|15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |
174// |P1|P2|D0|P4|D1|D2|D3|P8|D4|D5|D6|D7|D8|D9|D10|P16|D11|D12|D13|D14|D15|D16|D17|D18|D19|D20|D21|D22|D23|P30|
175//----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
176//P1 |* | |* | |* | |* | |* | |* | |* | | * | | * | | * | | * | | * | | * | | * | | * | |
177//P2 | |* |* | | |* |* | | |* |* | | |* | * | | | * | * | | | * | * | | | * | * | | | |
178//P4 | | | |* |* |* |* | | | | |* |* |* | * | | | | | * | * | * | * | | | | | * | * | |
179//P8 | | | | | | | |* |* |* |* |* |* |* | * | | | | | | | | | * | * | * | * | * | * | |
180//P16 | | | | | | | | | | | | | | | | * | * | * | * | * | * | * | * | * | * | * | * | * | * | |
181//----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
182//p30 |* |* |* |* |* |* |* |* |* |* |* |* |* |* | * | * | * | * | * | * | * | * | * | * | * | * | * | * | * | * |
183//----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
184
185
186//assign p1 = parity[0] ^
187// din[0] ^ din[1] ^ din[3] ^ din[4] ^ din[6] ^ din[8] ^
188// din[10] ^ din[11] ^ din[13] ^ din[15] ^ din[17] ^ din[19] ^
189// din[21] ^ din[23] ;
190
191l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_10 (
192 .dout (p1_10),
193 .din0 (din[0]),
194 .din1 (din[1]),
195 .din2 (din[3])
196 );
197l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_11 (
198 .dout (p1_11),
199 .din0 (din[4]),
200 .din1 (din[6]),
201 .din2 (din[8])
202 );
203l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_12 (
204 .dout (p1_12),
205 .din0 (din[10]),
206 .din1 (din[11]),
207 .din2 (din[13])
208 );
209l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_13 (
210 .dout (p1_13),
211 .din0 (din[15]),
212 .din1 (din[17]),
213 .din2 (din[19])
214 );
215l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_14 (
216 .dout (p1_14),
217 .din0 (din[21]),
218 .din1 (din[23]),
219 .din2 (parity[0])
220 );
221l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice_20 (
222 .dout (p1_20),
223 .din0 (p1_10),
224 .din1 (p1_11),
225 .din2 (p1_12)
226 );
227l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p1_slice (
228 .dout (p1),
229 .din0 (p1_13),
230 .din1 (p1_14),
231 .din2 (p1_20)
232 );
233
234//assign p2 = parity[1] ^
235// din[0] ^ din[2] ^ din[3] ^ din[5] ^ din[6] ^ din[9] ^
236// din[10] ^ din[12] ^ din[13] ^ din[16] ^ din[17] ^ din[20] ^
237// din[21] ;
238
239l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_10 (
240 .dout (p2_10),
241 .din0 (din[0]),
242 .din1 (din[2]),
243 .din2 (din[3])
244 );
245l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_11 (
246 .dout (p2_11),
247 .din0 (din[5]),
248 .din1 (din[6]),
249 .din2 (din[9])
250 );
251l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_12 (
252 .dout (p2_12),
253 .din0 (din[10]),
254 .din1 (din[12]),
255 .din2 (din[13])
256 );
257l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_13 (
258 .dout (p2_13),
259 .din0 (din[16]),
260 .din1 (din[17]),
261 .din2 (din[20])
262 );
263l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_20 (
264 .dout (p2_20),
265 .din0 (p2_10),
266 .din1 (p2_11),
267 .din2 (p2_12)
268 );
269l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p2_slice_21 (
270 .dout (p2_21),
271 .din0 (p2_13),
272 .din1 (din[21]),
273 .din2 (parity[1])
274 );
275
276l2t_ecc30b_dp_xor_macro__dxor_8x__ports_2__width_1 p2_slice (
277 .dout (p2),
278 .din0 (p2_21),
279 .din1 (p2_20)
280 );
281
282
283
284//assign p4 = parity[2] ^
285// din[1] ^ din[2] ^ din[3] ^ din[7] ^ din[8] ^ din[9] ^
286// din[10] ^ din[14] ^ din[15] ^ din[16] ^ din[17] ^ din[22] ^
287// din[23] ;
288
289l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_10 (
290 .dout (p4_10),
291 .din0 (din[1]),
292 .din1 (din[2]),
293 .din2 (din[3])
294 );
295l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_11 (
296 .dout (p4_11),
297 .din0 (din[7]),
298 .din1 (din[8]),
299 .din2 (din[9])
300 );
301l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_12 (
302 .dout (p4_12),
303 .din0 (din[10]),
304 .din1 (din[14]),
305 .din2 (din[15])
306 );
307l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_13 (
308 .dout (p4_13),
309 .din0 (din[16]),
310 .din1 (din[17]),
311 .din2 (din[22])
312 );
313l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_20 (
314 .dout (p4_20),
315 .din0 (p4_10),
316 .din1 (p4_11),
317 .din2 (p4_12)
318 );
319l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p4_slice_21 (
320 .dout (p4_21),
321 .din0 (p4_13),
322 .din1 (din[23]),
323 .din2 (parity[2])
324 );
325
326l2t_ecc30b_dp_xor_macro__dxor_8x__ports_2__width_1 p4_slice (
327 .dout (p4),
328 .din0 (p4_20),
329 .din1 (p4_21)
330 );
331
332
333
334//assign p8 = parity[3] ^
335// din[4] ^ din[5] ^ din[6] ^ din[7] ^ din[8] ^ din[9] ^
336// din[10] ^ din[18] ^ din[19] ^ din[20] ^ din[21] ^ din[22] ^
337// din[23] ;
338
339
340
341l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_10 (
342 .dout (p8_10),
343 .din0 (din[4]),
344 .din1 (din[5]),
345 .din2 (din[6])
346 );
347l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_11 (
348 .dout (p8_11),
349 .din0 (din[7]),
350 .din1 (din[8]),
351 .din2 (din[9])
352 );
353l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_12 (
354 .dout (p8_12),
355 .din0 (din[10]),
356 .din1 (din[18]),
357 .din2 (din[19])
358 );
359l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_13 (
360 .dout (p8_13),
361 .din0 (din[20]),
362 .din1 (din[21]),
363 .din2 (din[22])
364 );
365l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_20 (
366 .dout (p8_20),
367 .din0 (p8_10),
368 .din1 (p8_11),
369 .din2 (p8_12)
370 );
371l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p8_slice_21 (
372 .dout (p8_21),
373 .din0 (p8_13),
374 .din1 (din[23]),
375 .din2 (parity[3])
376 );
377
378l2t_ecc30b_dp_xor_macro__dxor_8x__ports_2__width_1 p8_slice (
379 .dout (p8),
380 .din0 (p8_21),
381 .din1 (p8_20)
382 );
383
384
385
386//assign p16 = parity[4] ^
387// din[11] ^ din[12] ^ din[13] ^ din[14] ^ din[15] ^ din[16] ^
388// din[17] ^ din[18] ^ din[19] ^ din[20] ^ din[21] ^ din[22] ^
389// din[23] ;
390
391
392
393
394l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_10 (
395 .dout (p16_10),
396 .din0 (din[11]),
397 .din1 (din[12]),
398 .din2 (din[13])
399 );
400l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_11 (
401 .dout (p16_11),
402 .din0 (din[14]),
403 .din1 (din[15]),
404 .din2 (din[16])
405 );
406l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_12 (
407 .dout (p16_12),
408 .din0 (din[17]),
409 .din1 (din[18]),
410 .din2 (din[19])
411 );
412l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_13 (
413 .dout (p16_13),
414 .din0 (din[20]),
415 .din1 (din[21]),
416 .din2 (din[22])
417 );
418l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_20 (
419 .dout (p16_20),
420 .din0 (p16_10),
421 .din1 (p16_11),
422 .din2 (p16_12)
423 );
424l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 p16_slice_21 (
425 .dout (p16_21),
426 .din0 (p16_13),
427 .din1 (din[23]),
428 .din2 (parity[4])
429 );
430
431l2t_ecc30b_dp_xor_macro__dxor_8x__ports_2__width_1 p16_slice (
432 .dout (p16),
433 .din0 (p16_21),
434 .din1 (p16_20)
435 );
436
437
438
439
440//assign error_bit[0] = !p16 & !p8 & !p4 & p2 & p1 ; // 3
441//assign error_bit[1] = !p16 & !p8 & p4 & !p2 & p1 ; // 5
442//assign error_bit[2] = !p16 & !p8 & p4 & p2 & !p1 ; // 6
443//assign error_bit[3] = !p16 & !p8 & p4 & p2 & p1 ; // 7
444//assign error_bit[4] = !p16 & p8 & !p4 & !p2 & p1 ; // 9
445//assign error_bit[5] = !p16 & p8 & !p4 & p2 & !p1 ; // 10
446//assign error_bit[6] = !p16 & p8 & !p4 & p2 & p1 ; // 11
447//assign error_bit[7] = !p16 & p8 & p4 & !p2 & !p1 ; // 12
448//assign error_bit[8] = !p16 & p8 & p4 & !p2 & p1 ; // 13
449//assign error_bit[9] = !p16 & p8 & p4 & p2 & !p1 ; // 14
450//assign error_bit[10] = !p16 & p8 & p4 & p2 & p1 ; // 15
451//assign error_bit[11] = p16 & !p8 & !p4 & !p2 & p1 ; // 17
452//assign error_bit[12] = p16 & !p8 & !p4 & p2 & !p1 ; // 18
453//assign error_bit[13] = p16 & !p8 & !p4 & p2 & p1 ; // 19
454//assign error_bit[14] = p16 & !p8 & p4 & !p2 & !p1 ; // 20
455//assign error_bit[15] = p16 & !p8 & p4 & !p2 & p1 ; // 21
456//assign error_bit[16] = p16 & !p8 & p4 & p2 & !p1 ; // 22
457//assign error_bit[17] = p16 & !p8 & p4 & p2 & p1 ; // 23
458//assign error_bit[18] = p16 & p8 & !p4 & !p2 & !p1 ; // 24
459//assign error_bit[19] = p16 & p8 & !p4 & !p2 & p1 ; // 25
460//assign error_bit[20] = p16 & p8 & !p4 & p2 & !p1 ; // 26
461//assign error_bit[21] = p16 & p8 & !p4 & p2 & p1 ; // 27
462//assign error_bit[22] = p16 & p8 & p4 & !p2 & !p1 ; // 28
463//assign error_bit[23] = p16 & p8 & p4 & !p2 & p1 ; // 29
464
465
466l2t_ecc30b_dp_inv_macro__stack_1r__width_1 p1_inv_slice
467 (
468 .din (p1),
469 .dout (np1)
470 );
471
472l2t_ecc30b_dp_inv_macro__stack_1r__width_1 c2_inv_slice
473 (
474 .din (p2),
475 .dout (np2)
476 );
477
478l2t_ecc30b_dp_inv_macro__stack_1r__width_1 p3_inv_slice
479 (
480 .din (p4),
481 .dout (np4)
482 );
483
484l2t_ecc30b_dp_inv_macro__stack_1r__width_1 p4_inv_slice
485 (
486 .din (p8),
487 .dout (np8)
488 );
489
490l2t_ecc30b_dp_inv_macro__stack_1r__width_1 p5_inv_slice
491 (
492 .din (p16),
493 .dout (np16)
494 );
495
496l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit0_slice_10a (
497.dout (error_bit0_10a),
498.din0 (np16),
499.din1 (np8)
500);
501
502
503l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit0_slice_10b (
504.dout (error_bit0_10b),
505.din0 (np4),
506.din1 (p2)
507);
508
509l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit0_slice_10c (
510.dout (error_bit0_10c),
511.din0 (p1),
512.din1 (p2)
513);
514
515l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit0_slice_11a (
516.dout (error_bit0_a),
517.din0 (error_bit0_10a),
518.din1 (error_bit0_10b)
519);
520
521
522l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit0_slice_11b (
523.dout (error_bit[0]),
524.din0 (error_bit0_10c),
525.din1 (error_bit0_a)
526);
527
528
529l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit1_slice_10a (
530.dout (error_bit1_10a),
531.din0 (np16),
532.din1 (np8)
533);
534
535
536l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit1_slice_10b (
537.dout (error_bit1_10b),
538.din0 (p4),
539.din1 (np2)
540);
541
542l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit1_slice_10c (
543.dout (error_bit1_10c),
544.din0 (p1),
545.din1 (np2)
546);
547
548l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit1_slice_11a (
549.dout (error_bit1_a),
550.din0 (error_bit1_10a),
551.din1 (error_bit1_10b)
552);
553
554
555l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit1_slice_11b (
556.dout (error_bit[1]),
557.din0 (error_bit1_10c),
558.din1 (error_bit1_a)
559);
560
561
562l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit2_slice_10a (
563.dout (error_bit2_10a),
564.din0 (np16),
565.din1 (np8)
566);
567
568
569l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit2_slice_10b (
570.dout (error_bit2_10b),
571.din0 (p4),
572.din1 (p2)
573);
574
575l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit2_slice_10c (
576.dout (error_bit2_10c),
577.din0 (np1),
578.din1 (p2)
579);
580
581l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit2_slice_11a (
582.dout (error_bit2_a),
583.din0 (error_bit2_10a),
584.din1 (error_bit2_10b)
585);
586
587
588l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit2_slice_11b (
589.dout (error_bit[2]),
590.din0 (error_bit2_10c),
591.din1 (error_bit2_a)
592);
593
594
595l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit3_slice_10a (
596.dout (error_bit3_10a),
597.din0 (np16),
598.din1 (np8)
599);
600
601
602l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit3_slice_10b (
603.dout (error_bit3_10b),
604.din0 (p4),
605.din1 (p2)
606);
607
608l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit3_slice_11a (
609.dout (error_bit3_a),
610.din0 (error_bit3_10a),
611.din1 (error_bit3_10b)
612);
613
614
615l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit3_slice_11b (
616.dout (error_bit[3]),
617.din0 (p1),
618.din1 (error_bit3_a)
619);
620
621
622l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit4_slice_10a (
623.dout (error_bit4_10a),
624.din0 (np16),
625.din1 (p8)
626);
627
628
629l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit4_slice_10b (
630.dout (error_bit4_10b),
631.din0 (np4),
632.din1 (np2)
633);
634
635l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit4_slice_11a (
636.dout (error_bit4_a),
637.din0 (error_bit4_10a),
638.din1 (error_bit4_10b)
639);
640
641l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit4_slice_11b (
642.dout (error_bit[4]),
643.din0 (error_bit4_a),
644.din1 (p1)
645);
646
647/////////////////////////
648
649
650l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit5_slice_10a (
651.dout (error_bit5_10a),
652.din0 (np16),
653.din1 (p8)
654);
655
656
657l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit5_slice_10b (
658.dout (error_bit5_10b),
659.din0 (np4),
660.din1 (p2)
661);
662
663l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit5_slice_11a (
664.dout (error_bit5_a),
665.din0 (error_bit5_10a),
666.din1 (error_bit5_10b)
667);
668
669
670l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit5_slice_11b (
671.dout (error_bit[5]),
672.din0 (np1),
673.din1 (error_bit5_a)
674);
675
676
677l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit6_slice_10a (
678.dout (error_bit6_10a),
679.din0 (np16),
680.din1 (p8)
681);
682
683
684l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit6_slice_10b (
685.dout (error_bit6_10b),
686.din0 (np4),
687.din1 (p2)
688);
689
690l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit6_slice_11a (
691.dout (error_bit6_a),
692.din0 (error_bit6_10a),
693.din1 (error_bit6_10b)
694);
695
696
697l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit6_slice_11b (
698.dout (error_bit[6]),
699.din0 (p1),
700.din1 (error_bit6_a)
701);
702
703
704l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit7_slice_10a (
705.dout (error_bit7_10a),
706.din0 (np16),
707.din1 (p8)
708);
709
710
711l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit7_slice_10b (
712.dout (error_bit7_10b),
713.din0 (p4),
714.din1 (np2)
715);
716
717l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit7_slice_11a (
718.dout (error_bit7_a),
719.din0 (error_bit7_10a),
720.din1 (error_bit7_10b)
721);
722
723
724l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit7_slice_11b (
725.dout (error_bit[7]),
726.din0 (np1),
727.din1 (error_bit7_a)
728);
729
730
731l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit8_slice_10a (
732.dout (error_bit8_10a),
733.din0 (np16),
734.din1 (p8)
735);
736
737
738l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit8_slice_10b (
739.dout (error_bit8_10b),
740.din0 (p4),
741.din1 (np2)
742);
743
744l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit8_slice_11a (
745.dout (error_bit8_a),
746.din0 (error_bit8_10a),
747.din1 (error_bit8_10b)
748);
749
750
751l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit8_slice_11b (
752.dout (error_bit[8]),
753.din0 (p1),
754.din1 (error_bit8_a)
755);
756
757
758l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit9_slice_10a (
759.dout (error_bit9_10a),
760.din0 (np16),
761.din1 (p8)
762);
763
764
765l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit9_slice_10b (
766.dout (error_bit9_10b),
767.din0 (p4),
768.din1 (p2)
769);
770
771l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit9_slice_11a (
772.dout (error_bit9_a),
773.din0 (error_bit9_10a),
774.din1 (error_bit9_10b)
775);
776
777
778l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit9_slice_11b (
779.dout (error_bit[9]),
780.din0 (np1),
781.din1 (error_bit9_a)
782);
783
784
785l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit10_slice_10a (
786.dout (error_bit10_10a),
787.din0 (np16),
788.din1 (p8)
789);
790
791
792l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit10_slice_10b (
793.dout (error_bit10_10b),
794.din0 (p4),
795.din1 (p2)
796);
797
798l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit10_slice_11a (
799.dout (error_bit10_a),
800.din0 (error_bit10_10a),
801.din1 (error_bit10_10b)
802);
803
804
805l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit10_slice_11b (
806.dout (error_bit[10]),
807.din0 (p1),
808.din1 (error_bit10_a)
809);
810
811
812l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit11_slice_10a (
813.dout (error_bit11_10a),
814.din0 (p16),
815.din1 (np8)
816);
817
818
819l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit11_slice_10b (
820.dout (error_bit11_10b),
821.din0 (np4),
822.din1 (np2)
823);
824
825l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit11_slice_11a (
826.dout (error_bit11_a),
827.din0 (error_bit11_10a),
828.din1 (error_bit11_10b)
829);
830
831
832l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit11_slice_11b (
833.dout (error_bit[11]),
834.din0 (p1),
835.din1 (error_bit11_a)
836);
837
838
839l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit12_slice_10a (
840.dout (error_bit12_10a),
841.din0 (p16),
842.din1 (np8)
843);
844
845
846l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit12_slice_10b (
847.dout (error_bit12_10b),
848.din0 (np4),
849.din1 (p2)
850);
851
852l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit12_slice_11a (
853.dout (error_bit12_a),
854.din0 (error_bit12_10a),
855.din1 (error_bit12_10b)
856);
857
858
859l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit12_slice_11b (
860.dout (error_bit[12]),
861.din0 (np1),
862.din1 (error_bit12_a)
863);
864
865
866l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit13_slice_10a (
867.dout (error_bit13_10a),
868.din0 (p16),
869.din1 (np8)
870);
871
872
873l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit13_slice_10b (
874.dout (error_bit13_10b),
875.din0 (np4),
876.din1 (p2)
877);
878
879l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit13_slice_11a (
880.dout (error_bit13_a),
881.din0 (error_bit13_10a),
882.din1 (error_bit13_10b)
883);
884
885
886l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit13_slice_11b (
887.dout (error_bit[13]),
888.din0 (p1),
889.din1 (error_bit13_a)
890);
891
892
893l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit14_slice_10a (
894.dout (error_bit14_10a),
895.din0 (p16),
896.din1 (np8)
897);
898
899
900l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit14_slice_10b (
901.dout (error_bit14_10b),
902.din0 (p4),
903.din1 (np2)
904);
905
906l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit14_slice_11a (
907.dout (error_bit14_a),
908.din0 (error_bit14_10a),
909.din1 (error_bit14_10b)
910);
911
912
913l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit14_slice_11b (
914.dout (error_bit[14]),
915.din0 (np1),
916.din1 (error_bit14_a)
917);
918
919
920l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit15_slice_10a (
921.dout (error_bit15_10a),
922.din0 (p16),
923.din1 (np8)
924);
925
926
927l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit15_slice_10b (
928.dout (error_bit15_10b),
929.din0 (p4),
930.din1 (np2)
931);
932
933l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit15_slice_11a (
934.dout (error_bit15_a),
935.din0 (error_bit15_10a),
936.din1 (error_bit15_10b)
937);
938
939
940l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit15_slice_11b (
941.dout (error_bit[15]),
942.din0 (p1),
943.din1 (error_bit15_a)
944);
945
946
947l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit16_slice_10a (
948.dout (error_bit16_10a),
949.din0 (p16),
950.din1 (np8)
951);
952
953
954l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit16_slice_10b (
955.dout (error_bit16_10b),
956.din0 (p4),
957.din1 (p2)
958);
959
960
961l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit16_slice_11a (
962.dout (error_bit16_a),
963.din0 (error_bit16_10a),
964.din1 (error_bit16_10b)
965);
966
967
968l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit16_slice_11b (
969.dout (error_bit[16]),
970.din0 (np1),
971.din1 (error_bit16_a)
972);
973
974
975l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit17_slice_10a (
976.dout (error_bit17_10a),
977.din0 (p16),
978.din1 (np8)
979);
980
981
982l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit17_slice_10b (
983.dout (error_bit17_10b),
984.din0 (p4),
985.din1 (p2)
986);
987
988
989l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit17_slice_11a (
990.dout (error_bit17_a),
991.din0 (error_bit17_10a),
992.din1 (error_bit17_10b)
993);
994
995
996l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit17_slice_11b (
997.dout (error_bit[17]),
998.din0 (p1),
999.din1 (error_bit17_a)
1000);
1001
1002
1003l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit18_slice_10a (
1004.dout (error_bit18_10a),
1005.din0 (p16),
1006.din1 (p8)
1007);
1008
1009
1010l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit18_slice_10b (
1011.dout (error_bit18_10b),
1012.din0 (np4),
1013.din1 (np2)
1014);
1015
1016
1017l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit18_slice_11a (
1018.dout (error_bit18_a),
1019.din0 (error_bit18_10a),
1020.din1 (error_bit18_10b)
1021);
1022
1023
1024l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit18_slice_11b (
1025.dout (error_bit[18]),
1026.din0 (np1),
1027.din1 (error_bit18_a)
1028);
1029
1030
1031l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit19_slice_10a (
1032.dout (error_bit19_10a),
1033.din0 (p16),
1034.din1 (p8)
1035);
1036
1037
1038l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit19_slice_10b (
1039.dout (error_bit19_10b),
1040.din0 (np4),
1041.din1 (np2)
1042);
1043
1044
1045l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit19_slice_11a (
1046.dout (error_bit19_a),
1047.din0 (error_bit19_10a),
1048.din1 (error_bit19_10b)
1049);
1050
1051
1052l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit19_slice_11b (
1053.dout (error_bit[19]),
1054.din0 (p1),
1055.din1 (error_bit19_a)
1056);
1057
1058
1059l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit20_slice_10a (
1060.dout (error_bit20_10a),
1061.din0 (p16),
1062.din1 (p8)
1063);
1064
1065
1066l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit20_slice_10b (
1067.dout (error_bit20_10b),
1068.din0 (np4),
1069.din1 (p2)
1070);
1071
1072
1073l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit20_slice_11a (
1074.dout (error_bit20_a),
1075.din0 (error_bit20_10a),
1076.din1 (error_bit20_10b)
1077);
1078
1079
1080l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit20_slice_11b (
1081.dout (error_bit[20]),
1082.din0 (np1),
1083.din1 (error_bit20_a)
1084);
1085
1086
1087l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit21_slice_10a (
1088.dout (error_bit21_10a),
1089.din0 (p16),
1090.din1 (p8)
1091);
1092
1093
1094l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit21_slice_10b (
1095.dout (error_bit21_10b),
1096.din0 (np4),
1097.din1 (p2)
1098);
1099
1100
1101l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit21_slice_11a (
1102.dout (error_bit21_a),
1103.din0 (error_bit21_10a),
1104.din1 (error_bit21_10b)
1105);
1106
1107
1108l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit21_slice_11b (
1109.dout (error_bit[21]),
1110.din0 (p1),
1111.din1 (error_bit21_a)
1112);
1113
1114
1115l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit22_slice_10a (
1116.dout (error_bit22_10a),
1117.din0 (p16),
1118.din1 (p8)
1119);
1120
1121
1122l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit22_slice_10b (
1123.dout (error_bit22_10b),
1124.din0 (p4),
1125.din1 (np2)
1126);
1127
1128
1129l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit22_slice_11a (
1130.dout (error_bit22_a),
1131.din0 (error_bit22_10a),
1132.din1 (error_bit22_10b)
1133);
1134
1135
1136l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit22_slice_11b (
1137.dout (error_bit[22]),
1138.din0 (np1),
1139.din1 (error_bit22_a)
1140);
1141
1142
1143l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit23_slice_10a (
1144.dout (error_bit23_10a),
1145.din0 (p16),
1146.din1 (p8)
1147);
1148
1149
1150l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit23_slice_10b (
1151.dout (error_bit23_10b),
1152.din0 (p4),
1153.din1 (np2)
1154);
1155
1156
1157l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit23_slice_11a (
1158.dout (error_bit23_a),
1159.din0 (error_bit23_10a),
1160.din1 (error_bit23_10b)
1161);
1162
1163
1164l2t_ecc30b_dp_and_macro__ports_2__width_1 error_bit23_slice_11b (
1165.dout (error_bit[23]),
1166.din0 (p1),
1167.din1 (error_bit23_a)
1168);
1169
1170
1171
1172//assign dout = din ^ error_bit ;
1173
1174l2t_ecc30b_dp_xor_macro__stack_24r__width_24 dout_slice
1175 (
1176 .dout (dout[23:0]),
1177 .din0 (din[23:0]),
1178 .din1 (error_bit[23:0])
1179 );
1180
1181//assign corrected_bit = {p16, p8, p4, p2, p1} ;
1182
1183l2t_ecc30b_dp_buff_macro__stack_5r__width_5 buff_corrected_bit
1184 (
1185 .dout (corrected_bit[4:0]),
1186 .din ({p16, p8, p4, p2, p1})
1187 );
1188
1189endmodule
1190
1191
1192//
1193// xor macro for ports = 2,3
1194//
1195//
1196
1197
1198
1199
1200
1201module l2t_ecc30b_dp_xor_macro__dxor_8x__ports_3__width_1 (
1202 din0,
1203 din1,
1204 din2,
1205 dout);
1206 input [0:0] din0;
1207 input [0:0] din1;
1208 input [0:0] din2;
1209 output [0:0] dout;
1210
1211
1212
1213
1214
1215xor3 #(1) d0_0 (
1216.in0(din0[0:0]),
1217.in1(din1[0:0]),
1218.in2(din2[0:0]),
1219.out(dout[0:0])
1220);
1221
1222
1223
1224
1225
1226
1227
1228
1229endmodule
1230
1231
1232
1233
1234
1235//
1236// xor macro for ports = 2,3
1237//
1238//
1239
1240
1241
1242
1243
1244module l2t_ecc30b_dp_xor_macro__dxor_8x__ports_2__width_1 (
1245 din0,
1246 din1,
1247 dout);
1248 input [0:0] din0;
1249 input [0:0] din1;
1250 output [0:0] dout;
1251
1252
1253
1254
1255
1256xor2 #(1) d0_0 (
1257.in0(din0[0:0]),
1258.in1(din1[0:0]),
1259.out(dout[0:0])
1260);
1261
1262
1263
1264
1265
1266
1267
1268
1269endmodule
1270
1271
1272
1273
1274
1275//
1276// invert macro
1277//
1278//
1279
1280
1281
1282
1283
1284module l2t_ecc30b_dp_inv_macro__stack_1r__width_1 (
1285 din,
1286 dout);
1287 input [0:0] din;
1288 output [0:0] dout;
1289
1290
1291
1292
1293
1294
1295inv #(1) d0_0 (
1296.in(din[0:0]),
1297.out(dout[0:0])
1298);
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308endmodule
1309
1310
1311
1312
1313
1314//
1315// and macro for ports = 2,3,4
1316//
1317//
1318
1319
1320
1321
1322
1323module l2t_ecc30b_dp_and_macro__ports_2__width_1 (
1324 din0,
1325 din1,
1326 dout);
1327 input [0:0] din0;
1328 input [0:0] din1;
1329 output [0:0] dout;
1330
1331
1332
1333
1334
1335
1336and2 #(1) d0_0 (
1337.in0(din0[0:0]),
1338.in1(din1[0:0]),
1339.out(dout[0:0])
1340);
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350endmodule
1351
1352
1353
1354
1355
1356//
1357// xor macro for ports = 2,3
1358//
1359//
1360
1361
1362
1363
1364
1365module l2t_ecc30b_dp_xor_macro__stack_24r__width_24 (
1366 din0,
1367 din1,
1368 dout);
1369 input [23:0] din0;
1370 input [23:0] din1;
1371 output [23:0] dout;
1372
1373
1374
1375
1376
1377xor2 #(24) d0_0 (
1378.in0(din0[23:0]),
1379.in1(din1[23:0]),
1380.out(dout[23:0])
1381);
1382
1383
1384
1385
1386
1387
1388
1389
1390endmodule
1391
1392
1393
1394
1395
1396//
1397// buff macro
1398//
1399//
1400
1401
1402
1403
1404
1405module l2t_ecc30b_dp_buff_macro__stack_5r__width_5 (
1406 din,
1407 dout);
1408 input [4:0] din;
1409 output [4:0] dout;
1410
1411
1412
1413
1414
1415
1416buff #(5) d0_0 (
1417.in(din[4:0]),
1418.out(dout[4:0])
1419);
1420
1421
1422
1423
1424
1425
1426
1427
1428endmodule
1429
1430
1431
1432