Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / model / verilog / mem / dram / axis_ecc_gen.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: axis_ecc_gen.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 dram_ecc_gen (/*AUTOARG*/
36 // Inputs
37 data,
38 // Outputs
39 result,
40 ecc
41 );
42
43// Input Declarations
44input [127:0] data;
45
46// Output Declarations
47output [111:0] result;
48output [15:0] ecc;
49
50// Wire Declarations
51
52wire [3:0] w0;
53wire [3:0] w1;
54wire [3:0] w2;
55wire [3:0] w3;
56wire [3:0] w4;
57wire [3:0] w5;
58wire [3:0] w6;
59wire [3:0] w7;
60wire [3:0] w8;
61wire [3:0] w9;
62wire [3:0] w10;
63wire [3:0] w11;
64wire [3:0] w12;
65wire [3:0] w13;
66wire [3:0] w14;
67wire [3:0] w15;
68wire [3:0] w16;
69wire [3:0] w17;
70wire [3:0] w18;
71wire [3:0] w19;
72wire [3:0] w20;
73wire [3:0] w21;
74wire [3:0] w22;
75wire [3:0] w23;
76wire [3:0] w24;
77wire [3:0] w25;
78wire [3:0] w26;
79wire [3:0] w27;
80wire [3:0] w28;
81wire [3:0] w29;
82wire [3:0] w30;
83wire [3:0] w31;
84
85//wire [3:0] pw0;
86wire [3:0] pw1;
87wire [3:0] pw2;
88wire [3:0] pw3;
89wire [3:0] pw4;
90wire [3:0] pw5;
91wire [3:0] pw6;
92wire [3:0] pw7;
93wire [3:0] pw8;
94wire [3:0] pw9;
95wire [3:0] pw10;
96wire [3:0] pw11;
97wire [3:0] pw12;
98wire [3:0] pw13;
99wire [3:0] pw14;
100//wire [3:0] pw15;
101wire [3:0] pw16;
102wire [3:0] pw17;
103wire [3:0] pw18;
104wire [3:0] pw19;
105wire [3:0] pw20;
106wire [3:0] pw21;
107wire [3:0] pw22;
108wire [3:0] pw23;
109wire [3:0] pw24;
110wire [3:0] pw25;
111wire [3:0] pw26;
112wire [3:0] pw27;
113wire [3:0] pw28;
114wire [3:0] pw29;
115//wire [3:0] pw30;
116//wire [3:0] pw31;
117
118wire [3:0] pw_1;
119wire [3:0] pw_2;
120wire [3:0] pw_3;
121wire [3:0] pw_4;
122wire [3:0] pw_5;
123wire [3:0] pw_6;
124wire [3:0] pw_7;
125wire [3:0] pw_8;
126wire [3:0] pw_9;
127wire [3:0] pw_10;
128wire [3:0] pw_11;
129wire [3:0] pw_12;
130wire [3:0] pw_13;
131wire [3:0] pw_14;
132wire [3:0] pw_16;
133wire [3:0] pw_17;
134wire [3:0] pw_18;
135wire [3:0] pw_19;
136wire [3:0] pw_20;
137wire [3:0] pw_21;
138wire [3:0] pw_22;
139wire [3:0] pw_23;
140wire [3:0] pw_24;
141wire [3:0] pw_25;
142wire [3:0] pw_26;
143wire [3:0] pw_27;
144wire [3:0] pw_28;
145wire [3:0] pw_29;
146
147///////////////////////////////
148////// Code Begins Here ///////
149///////////////////////////////
150
151assign w0[3:0] = data[3:0];
152assign w1[3:0] = data[7:4];
153assign w2[3:0] = data[11:8];
154assign w3[3:0] = data[15:12];
155assign w4[3:0] = data[19:16];
156assign w5[3:0] = data[23:20];
157assign w6[3:0] = data[27:24];
158assign w7[3:0] = data[31:28];
159assign w8[3:0] = data[35:32];
160assign w9[3:0] = data[39:36];
161assign w10[3:0] = data[43:40];
162assign w11[3:0] = data[47:44];
163assign w12[3:0] = data[51:48];
164assign w13[3:0] = data[55:52];
165assign w14[3:0] = data[59:56];
166assign w15[3:0] = data[63:60];
167assign w16[3:0] = data[67:64];
168assign w17[3:0] = data[71:68];
169assign w18[3:0] = data[75:72];
170assign w19[3:0] = data[79:76];
171assign w20[3:0] = data[83:80];
172assign w21[3:0] = data[87:84];
173assign w22[3:0] = data[91:88];
174assign w23[3:0] = data[95:92];
175assign w24[3:0] = data[99:96];
176assign w25[3:0] = data[103:100];
177assign w26[3:0] = data[107:104];
178assign w27[3:0] = data[111:108];
179assign w28[3:0] = data[115:112];
180assign w29[3:0] = data[119:116];
181assign w30[3:0] = data[123:120];
182assign w31[3:0] = data[127:124];
183
184/////////////////////////////
185/// Galois Multiplication by 4
186/////////////////////////////
187
188// 2*w1
189
190assign pw1[0] = w1[3];
191assign pw1[1] = w1[0] ^ w1[3];
192assign pw1[2] = w1[1];
193assign pw1[3] = w1[2];
194
195// 3*w2
196
197assign pw2[0] = w2[0] ^ w2[3];
198assign pw2[1] = w2[0] ^ w2[3] ^ w2[1];
199assign pw2[2] = w2[1] ^ w2[2];
200assign pw2[3] = w2[2] ^ w2[3];
201
202// 4*w3
203
204assign pw3[0] = w3[2];
205assign pw3[1] = w3[3] ^ w3[2];
206assign pw3[2] = w3[0] ^ w3[3];
207assign pw3[3] = w3[1];
208
209// 5*w4
210
211assign pw4[0] = w4[2] ^ w4[0];
212assign pw4[1] = w4[3] ^ w4[2] ^ w4[1];
213assign pw4[2] = w4[0] ^ w4[3] ^ w4[2];
214assign pw4[3] = w4[1] ^ w4[3];
215
216// 6*w5
217
218assign pw5[0] = w5[2] ^ w5[3];
219assign pw5[1] = w5[2] ^ w5[0];
220assign pw5[2] = w5[0] ^ w5[3] ^ w5[1];
221assign pw5[3] = w5[1] ^ w5[2];
222
223// 7*w6
224
225assign pw6[0] = w6[2] ^ w6[3] ^ w6[0];
226assign pw6[1] = w6[2] ^ w6[0] ^ w6[1];
227assign pw6[2] = w6[0] ^ w6[3] ^ w6[1] ^ w6[2];
228assign pw6[3] = w6[1] ^ w6[2] ^ w6[3];
229
230// 8*w7
231
232assign pw7[0] = w7[1];
233assign pw7[1] = w7[2] ^ w7[1];
234assign pw7[2] = w7[3] ^ w7[2];
235assign pw7[3] = w7[0] ^ w7[3];
236
237// 9*w8
238
239assign pw8[0] = w8[1] ^ w8[0];
240assign pw8[1] = w8[2];
241assign pw8[2] = w8[3];
242assign pw8[3] = w8[0];
243
244// a*w9
245
246assign pw9[0] = w9[1] ^ w9[3];
247assign pw9[1] = w9[2] ^ w9[1] ^ w9[0] ^ w9[3];
248assign pw9[2] = w9[3] ^ w9[2] ^ w9[1];
249assign pw9[3] = w9[0] ^ w9[3] ^ w9[2];
250
251// b*w10
252
253assign pw10[0] = w10[1] ^ w10[0] ^ w10[3];
254assign pw10[1] = w10[2] ^ w10[0] ^ w10[3];
255assign pw10[2] = w10[3] ^ w10[1];
256assign pw10[3] = w10[0] ^ w10[2];
257
258// c*w11
259
260assign pw11[0] = w11[1] ^ w11[2];
261assign pw11[1] = w11[3] ^ w11[1];
262assign pw11[2] = w11[0] ^ w11[2];
263assign pw11[3] = w11[0] ^ w11[3] ^ w11[1];
264
265// d*w12
266
267assign pw12[0] = w12[1] ^ w12[2] ^ w12[0];
268assign pw12[1] = w12[3];
269assign pw12[2] = w12[0];
270assign pw12[3] = w12[0] ^ w12[1];
271
272// e*w13
273
274assign pw13[0] = w13[1] ^ w13[2] ^ w13[3];
275assign pw13[1] = w13[1] ^ w13[0];
276assign pw13[2] = w13[0] ^ w13[2] ^ w13[1];
277assign pw13[3] = w13[0] ^ w13[3] ^ w13[1] ^ w13[2];
278
279// f*w14
280
281assign pw14[0] = w14[1] ^ w14[2] ^ w14[3] ^ w14[0];
282assign pw14[1] = w14[0];
283assign pw14[2] = w14[0] ^ w14[1];
284assign pw14[3] = w14[0] ^ w14[1] ^ w14[2];
285
286// 1*w15
287
288//assign pw15[3:0] = w15[3:0];
289
290// 2*w16
291
292assign pw16[0] = w16[3];
293assign pw16[1] = w16[0] ^ w16[3];
294assign pw16[2] = w16[1];
295assign pw16[3] = w16[2];
296
297// 3*w17
298
299assign pw17[0] = w17[0] ^ w17[3];
300assign pw17[1] = w17[0] ^ w17[3] ^ w17[1];
301assign pw17[2] = w17[1] ^ w17[2];
302assign pw17[3] = w17[2] ^ w17[3];
303
304// 4*w18
305
306assign pw18[0] = w18[2];
307assign pw18[1] = w18[3] ^ w18[2];
308assign pw18[2] = w18[0] ^ w18[3];
309assign pw18[3] = w18[1];
310
311// 5*w19
312
313assign pw19[0] = w19[2] ^ w19[0];
314assign pw19[1] = w19[3] ^ w19[2] ^ w19[1];
315assign pw19[2] = w19[0] ^ w19[3] ^ w19[2];
316assign pw19[3] = w19[1] ^ w19[3];
317
318// 6*w20
319
320assign pw20[0] = w20[2] ^ w20[3];
321assign pw20[1] = w20[2] ^ w20[0];
322assign pw20[2] = w20[0] ^ w20[3] ^ w20[1];
323assign pw20[3] = w20[1] ^ w20[2];
324
325// 7*w21
326
327assign pw21[0] = w21[2] ^ w21[3] ^ w21[0];
328assign pw21[1] = w21[2] ^ w21[0] ^ w21[1];
329assign pw21[2] = w21[0] ^ w21[3] ^ w21[1] ^ w21[2];
330assign pw21[3] = w21[1] ^ w21[2] ^ w21[3];
331
332// 8*w22
333
334assign pw22[0] = w22[1];
335assign pw22[1] = w22[2] ^ w22[1];
336assign pw22[2] = w22[3] ^ w22[2];
337assign pw22[3] = w22[0] ^ w22[3];
338
339// 9*w23
340
341assign pw23[0] = w23[1] ^ w23[0];
342assign pw23[1] = w23[2];
343assign pw23[2] = w23[3];
344assign pw23[3] = w23[0];
345
346// a*w24
347
348assign pw24[0] = w24[1] ^ w24[3];
349assign pw24[1] = w24[2] ^ w24[1] ^ w24[0] ^ w24[3];
350assign pw24[2] = w24[3] ^ w24[2] ^ w24[1];
351assign pw24[3] = w24[0] ^ w24[3] ^ w24[2];
352
353// b*w25
354
355assign pw25[0] = w25[1] ^ w25[0] ^ w25[3];
356assign pw25[1] = w25[2] ^ w25[0] ^ w25[3];
357assign pw25[2] = w25[3] ^ w25[1];
358assign pw25[3] = w25[0] ^ w25[2];
359
360// c*w26
361
362assign pw26[0] = w26[1] ^ w26[2];
363assign pw26[1] = w26[3] ^ w26[1];
364assign pw26[2] = w26[0] ^ w26[2];
365assign pw26[3] = w26[0] ^ w26[3] ^ w26[1];
366
367// d*w27
368
369assign pw27[0] = w27[1] ^ w27[2] ^ w27[0];
370assign pw27[1] = w27[3];
371assign pw27[2] = w27[0];
372assign pw27[3] = w27[0] ^ w27[1];
373
374// e*w28
375
376assign pw28[0] = w28[1] ^ w28[2] ^ w28[3];
377assign pw28[1] = w28[1] ^ w28[0];
378assign pw28[2] = w28[0] ^ w28[2] ^ w28[1];
379assign pw28[3] = w28[0] ^ w28[3] ^ w28[1] ^ w28[2];
380
381// f*w29
382
383assign pw29[0] = w29[1] ^ w29[2] ^ w29[3] ^ w29[0];
384assign pw29[1] = w29[0];
385assign pw29[2] = w29[0] ^ w29[1];
386assign pw29[3] = w29[0] ^ w29[1] ^ w29[2];
387
388// 1*w30
389
390//assign pw30[3:0] = w30[3:0];
391
392// 1*w31
393
394//assign pw31[3:0] = w31[3:0];
395
396//////////////
397// Parity 4 calculations
398//////////////
399
400// 2*w8
401
402assign pw_8[0] = w8[3];
403assign pw_8[1] = w8[0] ^ w8[3];
404assign pw_8[2] = w8[1];
405assign pw_8[3] = w8[2];
406
407// 3*w13
408
409assign pw_13[0] = w13[0] ^ w13[3];
410assign pw_13[1] = w13[0] ^ w13[3] ^ w13[1];
411assign pw_13[2] = w13[1] ^ w13[2];
412assign pw_13[3] = w13[2] ^ w13[3];
413
414// 4*w12
415
416assign pw_12[0] = w12[2];
417assign pw_12[1] = w12[3] ^ w12[2];
418assign pw_12[2] = w12[0] ^ w12[3];
419assign pw_12[3] = w12[1];
420
421// 5*w10
422
423assign pw_10[0] = w10[2] ^ w10[0];
424assign pw_10[1] = w10[3] ^ w10[2] ^ w10[1];
425assign pw_10[2] = w10[0] ^ w10[3] ^ w10[2];
426assign pw_10[3] = w10[1] ^ w10[3];
427
428// 6*w6
429
430assign pw_6[0] = w6[2] ^ w6[3];
431assign pw_6[1] = w6[2] ^ w6[0];
432assign pw_6[2] = w6[0] ^ w6[3] ^ w6[1];
433assign pw_6[3] = w6[1] ^ w6[2];
434
435// 7*w5
436
437assign pw_5[0] = w5[2] ^ w5[3] ^ w5[0];
438assign pw_5[1] = w5[2] ^ w5[0] ^ w5[1];
439assign pw_5[2] = w5[0] ^ w5[3] ^ w5[1] ^ w5[2];
440assign pw_5[3] = w5[1] ^ w5[2] ^ w5[3];
441
442// 8*w14
443
444assign pw_14[0] = w14[1];
445assign pw_14[1] = w14[2] ^ w14[1];
446assign pw_14[2] = w14[3] ^ w14[2];
447assign pw_14[3] = w14[0] ^ w14[3];
448
449// 9*w1
450
451assign pw_1[0] = w1[1] ^ w1[0];
452assign pw_1[1] = w1[2];
453assign pw_1[2] = w1[3];
454assign pw_1[3] = w1[0];
455
456// a*w11
457
458assign pw_11[0] = w11[1] ^ w11[3];
459assign pw_11[1] = w11[2] ^ w11[1] ^ w11[0] ^ w11[3];
460assign pw_11[2] = w11[3] ^ w11[2] ^ w11[1];
461assign pw_11[3] = w11[0] ^ w11[3] ^ w11[2];
462
463// b*w4
464
465assign pw_4[0] = w4[1] ^ w4[0] ^ w4[3];
466assign pw_4[1] = w4[2] ^ w4[0] ^ w4[3];
467assign pw_4[2] = w4[3] ^ w4[1];
468assign pw_4[3] = w4[0] ^ w4[2];
469
470// c*w9
471
472assign pw_9[0] = w9[1] ^ w9[2];
473assign pw_9[1] = w9[3] ^ w9[1];
474assign pw_9[2] = w9[0] ^ w9[2];
475assign pw_9[3] = w9[0] ^ w9[3] ^ w9[1];
476
477// d*w3
478
479assign pw_3[0] = w3[1] ^ w3[2] ^ w3[0];
480assign pw_3[1] = w3[3];
481assign pw_3[2] = w3[0];
482assign pw_3[3] = w3[0] ^ w3[1];
483
484// e*w2
485
486assign pw_2[0] = w2[1] ^ w2[2] ^ w2[3];
487assign pw_2[1] = w2[1] ^ w2[0];
488assign pw_2[2] = w2[0] ^ w2[2] ^ w2[1];
489assign pw_2[3] = w2[0] ^ w2[3] ^ w2[1] ^ w2[2];
490
491// f*w7
492
493assign pw_7[0] = w7[1] ^ w7[2] ^ w7[3] ^ w7[0];
494assign pw_7[1] = w7[0];
495assign pw_7[2] = w7[0] ^ w7[1];
496assign pw_7[3] = w7[0] ^ w7[1] ^ w7[2];
497
498// 2*w23
499
500assign pw_23[0] = w23[3];
501assign pw_23[1] = w23[0] ^ w23[3];
502assign pw_23[2] = w23[1];
503assign pw_23[3] = w23[2];
504
505// 3*w28
506
507assign pw_28[0] = w28[0] ^ w28[3];
508assign pw_28[1] = w28[0] ^ w28[3] ^ w28[1];
509assign pw_28[2] = w28[1] ^ w28[2];
510assign pw_28[3] = w28[2] ^ w28[3];
511
512// 4*w27
513
514assign pw_27[0] = w27[2];
515assign pw_27[1] = w27[3] ^ w27[2];
516assign pw_27[2] = w27[0] ^ w27[3];
517assign pw_27[3] = w27[1];
518
519// 5*w25
520
521assign pw_25[0] = w25[2] ^ w25[0];
522assign pw_25[1] = w25[3] ^ w25[2] ^ w25[1];
523assign pw_25[2] = w25[0] ^ w25[3] ^ w25[2];
524assign pw_25[3] = w25[1] ^ w25[3];
525
526// 6*w21
527
528assign pw_21[0] = w21[2] ^ w21[3];
529assign pw_21[1] = w21[2] ^ w21[0];
530assign pw_21[2] = w21[0] ^ w21[3] ^ w21[1];
531assign pw_21[3] = w21[1] ^ w21[2];
532
533// 7*w20
534
535assign pw_20[0] = w20[2] ^ w20[3] ^ w20[0];
536assign pw_20[1] = w20[2] ^ w20[0] ^ w20[1];
537assign pw_20[2] = w20[0] ^ w20[3] ^ w20[1] ^ w20[2];
538assign pw_20[3] = w20[1] ^ w20[2] ^ w20[3];
539
540// 8*w29
541
542assign pw_29[0] = w29[1];
543assign pw_29[1] = w29[2] ^ w29[1];
544assign pw_29[2] = w29[3] ^ w29[2];
545assign pw_29[3] = w29[0] ^ w29[3];
546
547// 9*w16
548
549assign pw_16[0] = w16[1] ^ w16[0];
550assign pw_16[1] = w16[2];
551assign pw_16[2] = w16[3];
552assign pw_16[3] = w16[0];
553
554// a*w26
555
556assign pw_26[0] = w26[1] ^ w26[3];
557assign pw_26[1] = w26[2] ^ w26[1] ^ w26[0] ^ w26[3];
558assign pw_26[2] = w26[3] ^ w26[2] ^ w26[1];
559assign pw_26[3] = w26[0] ^ w26[3] ^ w26[2];
560
561// b*w19
562
563assign pw_19[0] = w19[1] ^ w19[0] ^ w19[3];
564assign pw_19[1] = w19[2] ^ w19[0] ^ w19[3];
565assign pw_19[2] = w19[3] ^ w19[1];
566assign pw_19[3] = w19[0] ^ w19[2];
567
568// c*w24
569
570assign pw_24[0] = w24[1] ^ w24[2];
571assign pw_24[1] = w24[3] ^ w24[1];
572assign pw_24[2] = w24[0] ^ w24[2];
573assign pw_24[3] = w24[0] ^ w24[3] ^ w24[1];
574
575// d*w18
576
577assign pw_18[0] = w18[1] ^ w18[2] ^ w18[0];
578assign pw_18[1] = w18[3];
579assign pw_18[2] = w18[0];
580assign pw_18[3] = w18[0] ^ w18[1];
581
582// e*w17
583
584assign pw_17[0] = w17[1] ^ w17[2] ^ w17[3];
585assign pw_17[1] = w17[1] ^ w17[0];
586assign pw_17[2] = w17[0] ^ w17[2] ^ w17[1];
587assign pw_17[3] = w17[0] ^ w17[3] ^ w17[1] ^ w17[2];
588
589// f*w22
590
591assign pw_22[0] = w22[1] ^ w22[2] ^ w22[3] ^ w22[0];
592assign pw_22[1] = w22[0];
593assign pw_22[2] = w22[0] ^ w22[1];
594assign pw_22[3] = w22[0] ^ w22[1] ^ w22[2];
595
596/////////////////////////////////////////////////////////////////////////
597// Final ECC Calculation
598// ECC generation logic for the incomming data
599/////////////////////////////////////////////////////////////////////////
600
601wire [3:0] partialsum;
602wire [3:0] p3_partialsum;
603wire [3:0] syndrom0;
604wire [3:0] syndrom1;
605wire [3:0] syndrom2;
606wire [3:0] syndrom3;
607
608// partial sum
609assign partialsum[3:0] = pw1 ^ pw2 ^ pw3 ^ pw4 ^ pw5 ^ pw6 ^ pw7 ^ pw8 ^ pw9 ^ pw10 ^
610 pw11 ^ pw12 ^ pw13 ^ pw14 ^ pw16 ^ pw17 ^ pw18 ^ pw19 ^ pw20 ^
611 pw21 ^ pw22 ^ pw23 ^ pw24 ^ pw25 ^ pw26 ^ pw27 ^ pw28 ^ pw29;
612
613assign p3_partialsum = pw_1 ^ pw_2 ^ pw_3 ^ pw_4 ^ pw_5 ^ pw_6 ^ pw_7 ^ pw_8 ^
614 pw_9 ^ pw_10 ^ pw_11 ^ pw_12 ^ pw_13 ^ pw_14 ^
615 pw_16 ^ pw_17 ^ pw_18 ^ pw_19 ^ pw_20 ^ pw_21 ^ pw_22 ^ pw_23 ^
616 pw_24 ^ pw_25 ^ pw_26 ^ pw_27 ^ pw_28 ^ pw_29;
617
618assign syndrom0[3:0] = w0 ^ w15 ^ w31 ^ partialsum;
619
620assign syndrom1[3:0] = w0 ^ w1 ^ w2 ^ w3 ^ w4 ^ w5 ^ w6 ^ w7 ^ w8 ^ w9 ^ w10 ^
621 w11 ^ w12 ^ w13 ^ w14 ^ w30 ^ w31;
622
623assign syndrom2[3:0] = w15 ^ w16 ^ w17 ^ w18 ^ w19 ^ w20 ^ w21 ^ w22 ^ w23 ^ w24 ^ w25 ^
624 w26 ^ w27 ^ w28 ^ w29 ^ w30 ^ w31;
625
626assign syndrom3[3:0] = w0 ^ w15 ^ w30 ^ p3_partialsum;
627
628assign ecc = {syndrom0, syndrom1, syndrom2, syndrom3};
629assign result = { pw29, pw28, pw27, pw26, pw25, pw24, pw23, pw22, pw21, pw20, pw19, pw18, pw17, pw16,
630 pw14, pw13, pw12, pw11, pw10, pw9, pw8, pw7, pw6, pw5, pw4, pw3, pw2, pw1};
631
632endmodule