Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / model / verilog / mem / fbdimm / design / crc.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: crc.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 crc(b,E_out,failover);
36// interface signals
37input [71:0] b;
38input failover;
39output [11:0] E_out;
40
41reg failover_nb_14, failover_nb_13,nb_12;
42wire [11:0] E_nb_13 , E ;
43
44assign E_out = (failover ) ? E_nb_13 : E;
45
46
47initial begin
48
49if($test$plusargs("fbdimm_nb_failover_14bit"))
50 failover_nb_14=1;
51else
52 failover_nb_14=0;
53
54if($test$plusargs("fbdimm_nb_failover_13bit"))
55 failover_nb_13=1;
56else
57 failover_nb_13=0;
58
59
60if($test$plusargs("fbdimm_nb_12bit"))
61 nb_12=1;
62else
63 nb_12=0;
64
65end
66
67// 13bit lane northbound data frame
68
69
70
71assign E_nb_13[0] = b[69] ^ b[66] ^ b[65] ^ b[64] ^ b[63] ^ b[57] ^
72 b[56] ^ b[54] ^ b[53] ^ b[52] ^ b[49] ^ b[48] ^
73 b[44] ^ b[43] ^ b[42] ^ b[40] ^ b[38] ^ b[37] ^
74 b[36] ^ b[35] ^ b[34] ^ b[33] ^ b[31] ^ b[30] ^
75 b[28] ^ b[24] ^ b[19] ^ b[17] ^ b[16] ^ b[13] ^
76 b[11] ^ b[09] ^ b[06] ^ b[03] ^ b[02] ^ b[01] ^
77 b[00] ;
78
79assign E_nb_13[1] = b[70] ^ b[69] ^ b[67] ^ b[63] ^ b[58] ^ b[56] ^
80 b[55] ^ b[52] ^ b[50] ^ b[48] ^ b[45] ^ b[42] ^
81 b[41] ^ b[40] ^ b[39] ^ b[33] ^ b[32] ^ b[30] ^
82 b[29] ^ b[28] ^ b[25] ^ b[24] ^ b[20] ^ b[19] ^
83 b[18] ^ b[16] ^ b[14] ^ b[13] ^ b[12] ^ b[11] ^
84 b[10] ^ b[09] ^ b[07] ^ b[06] ^ b[04] ^ b[00] ;
85
86assign E_nb_13[2] = b[71] ^ b[70] ^ b[69] ^ b[68] ^ b[66] ^ b[65] ^
87 b[63] ^ b[59] ^ b[54] ^ b[52] ^ b[51] ^ b[48] ^
88 b[46] ^ b[44] ^ b[41] ^ b[38] ^ b[37] ^ b[36] ^
89 b[35] ^ b[29] ^ b[28] ^ b[26] ^ b[25] ^ b[24] ^
90 b[21] ^ b[20] ^ b[16] ^ b[15] ^ b[14] ^ b[12] ^
91 b[10] ^ b[09] ^ b[08] ^ b[07] ^ b[06] ^ b[05] ^
92 b[03] ^ b[02] ^ b[00] ;
93
94assign E_nb_13[3] = b[71] ^ b[70] ^ b[69] ^ b[67] ^ b[66] ^ b[64] ^
95 b[60] ^ b[55] ^ b[53] ^ b[52] ^ b[49] ^ b[47] ^
96 b[45] ^ b[42] ^ b[39] ^ b[38] ^ b[37] ^ b[36] ^
97 b[30] ^ b[29] ^ b[27] ^ b[26] ^ b[25] ^ b[22] ^
98 b[21] ^ b[17] ^ b[16] ^ b[15] ^ b[13] ^ b[11] ^
99 b[10] ^ b[09] ^ b[08] ^ b[07] ^ b[06] ^ b[04] ^
100 b[03] ^ b[01] ;
101
102assign E_nb_13[4] = b[71] ^ b[70] ^ b[68] ^ b[67] ^ b[65] ^ b[61] ^
103 b[56] ^ b[54] ^ b[53] ^ b[50] ^ b[48] ^ b[46] ^
104 b[43] ^ b[40] ^ b[39] ^ b[38] ^ b[37] ^ b[31] ^
105 b[30] ^ b[28] ^ b[27] ^ b[26] ^ b[23] ^ b[22] ^
106 b[18] ^ b[17] ^ b[16] ^ b[14] ^ b[12] ^ b[11] ^
107 b[10] ^ b[09] ^ b[08] ^ b[07] ^ b[05] ^ b[04] ^
108 b[02] ;
109
110
111assign E_nb_13[5] = b[71] ^ b[68] ^ b[65] ^ b[64] ^ b[63] ^ b[62] ^
112 b[56] ^ b[55] ^ b[53] ^ b[52] ^ b[51] ^ b[48] ^
113 b[47] ^ b[43] ^ b[42] ^ b[41] ^ b[39] ^ b[37] ^
114 b[36] ^ b[35] ^ b[34] ^ b[33] ^ b[32] ^ b[30] ^
115 b[29] ^ b[27] ^ b[23] ^ b[18] ^ b[16] ^ b[15] ^
116 b[12] ^ b[10] ^ b[08] ^ b[05] ^ b[02] ^ b[01] ^
117 b[00] ;
118
119
120// 14bit lane north bound data frame
121
122assign E[0] = b[71] ^ b[70] ^ b[68] ^ b[67] ^ b[66] ^ b[63] ^
123 b[58] ^ b[56] ^ b[55] ^ b[54] ^ b[53] ^ b[52] ^
124 b[49] ^ b[48] ^ b[46] ^ b[44] ^ b[42] ^ b[41] ^
125 b[40] ^ b[39] ^ b[38] ^ b[37] ^ b[36] ^ b[35] ^
126 b[34] ^ b[29] ^ b[26] ^ b[25] ^ b[22] ^ b[21] ^
127 b[19] ^ b[18] ^ b[16] ^ b[12] ^ b[09] ^ b[08] ^
128 b[07] ^ b[06] ^ b[03] ^ b[01] ^ b[0] ;
129
130assign E[1] = b[70] ^ b[69] ^ b[66] ^ b[64] ^ b[63] ^ b[59] ^
131 b[58] ^ b[57] ^ b[52] ^ b[50] ^ b[48] ^ b[47] ^
132 b[46] ^ b[45] ^ b[44] ^ b[43] ^ b[34] ^ b[30] ^
133 b[29] ^ b[27] ^ b[25] ^ b[23] ^ b[21] ^ b[20] ^
134 b[18] ^ b[17] ^ b[16] ^ b[13] ^ b[12] ^ b[10] ^
135 b[06] ^ b[04] ^ b[03] ^ b[02] ^ b[00];
136
137assign E[2] = b[71] ^ b[70] ^ b[67] ^ b[65] ^ b[64] ^ b[60] ^
138 b[59] ^ b[58] ^ b[53] ^ b[51] ^ b[49] ^ b[48] ^
139 b[47] ^ b[46] ^ b[45] ^ b[44] ^ b[35] ^ b[31] ^
140 b[30] ^ b[28] ^ b[26] ^ b[24] ^ b[22] ^ b[21] ^
141 b[19] ^ b[18] ^ b[17] ^ b[14] ^ b[13] ^ b[11] ^
142 b[07] ^ b[05] ^ b[04] ^ b[03] ^ b[01] ;
143
144assign E[3] = b[70] ^ b[67] ^ b[65] ^ b[63] ^ b[61] ^ b[60] ^
145 b[59] ^ b[58] ^ b[56] ^ b[55] ^ b[53] ^ b[50] ^
146 b[47] ^ b[45] ^ b[44] ^ b[42] ^ b[41] ^ b[40] ^
147 b[39] ^ b[38] ^ b[37] ^ b[35] ^ b[34] ^ b[32] ^
148 b[31] ^ b[27] ^ b[26] ^ b[23] ^ b[21] ^ b[20] ^
149 b[16] ^ b[15] ^ b[14] ^ b[09] ^ b[07] ^ b[05] ^
150 b[04] ^ b[03] ^ b[02] ^ b[01] ^ b[00];
151
152assign E[4] = b[70] ^ b[67] ^ b[64] ^ b[63] ^ b[62] ^ b[61] ^
153 b[60] ^ b[59] ^ b[58] ^ b[57] ^ b[55] ^ b[53] ^
154 b[52] ^ b[51] ^ b[49] ^ b[45] ^ b[44] ^ b[43] ^
155 b[37] ^ b[34] ^ b[33] ^ b[32] ^ b[29] ^ b[28] ^
156 b[27] ^ b[26] ^ b[25] ^ b[24] ^ b[19] ^ b[18] ^
157 b[17] ^ b[15] ^ b[12] ^ b[10] ^ b[09] ^ b[07] ^
158 b[05] ^ b[04] ^ b[02] ^ b[00] ;
159
160
161assign E[5] = b[71] ^ b[68] ^ b[65] ^ b[64] ^ b[63] ^ b[62] ^
162 b[61] ^ b[60] ^ b[59] ^ b[58] ^ b[56] ^ b[54] ^
163 b[53] ^ b[52] ^ b[50] ^ b[46] ^ b[45] ^ b[44] ^
164 b[38] ^ b[35] ^ b[34] ^ b[33] ^ b[30] ^ b[29] ^
165 b[28] ^ b[27] ^ b[26] ^ b[25] ^ b[20] ^ b[19] ^
166 b[18] ^ b[16] ^ b[13] ^ b[11] ^ b[10] ^ b[08] ^
167 b[06] ^ b[05] ^ b[03] ^ b[01] ;
168
169assign E[6] = b[71] ^ b[70] ^ b[69] ^ b[68] ^ b[67] ^ b[65] ^
170 b[64] ^ b[62] ^ b[61] ^ b[60] ^ b[59] ^ b[58] ^
171 b[57] ^ b[56] ^ b[52] ^ b[51] ^ b[49] ^ b[48] ^
172 b[47] ^ b[45] ^ b[44] ^ b[42] ^ b[41] ^ b[40] ^
173 b[38] ^ b[37] ^ b[31] ^ b[30] ^ b[28] ^ b[27] ^
174 b[25] ^ b[22] ^ b[20] ^ b[18] ^ b[17] ^ b[16] ^
175 b[14] ^ b[11] ^ b[08] ^ b[04] ^ b[03] ^ b[02] ^
176 b[01] ^ b[00] ;
177
178assign E[7] = b[71] ^ b[70] ^ b[69] ^ b[68] ^ b[66] ^ b[65] ^
179 b[63] ^ b[62] ^ b[61] ^ b[60] ^ b[59] ^ b[58] ^
180 b[57] ^ b[53] ^ b[52] ^ b[50] ^ b[49] ^ b[48] ^
181 b[46] ^ b[45] ^ b[43] ^ b[42] ^ b[41] ^ b[39] ^
182 b[38] ^ b[32] ^ b[31] ^ b[29] ^ b[28] ^ b[26] ^
183 b[23] ^ b[21] ^ b[19] ^ b[18] ^ b[17] ^ b[15] ^
184 b[12] ^ b[09] ^ b[05] ^ b[04] ^ b[03] ^ b[02] ^
185 b[1] ;
186
187assign E[8] = b[69] ^ b[68] ^ b[64] ^ b[62] ^ b[61] ^ b[60] ^
188 b[59] ^ b[56] ^ b[55] ^ b[52] ^ b[51] ^ b[50] ^
189 b[48] ^ b[47] ^ b[43] ^ b[41] ^ b[38] ^ b[37] ^
190 b[36] ^ b[35] ^ b[34] ^ b[33] ^ b[32] ^ b[30] ^
191 b[27] ^ b[26] ^ b[25] ^ b[24] ^ b[21] ^ b[20] ^
192 b[13] ^ b[12] ^ b[10] ^ b[09] ^ b[08] ^ b[07] ^
193 b[05] ^ b[04] ^ b[02] ^ b[01] ^ b[0];
194
195assign E[9] = b[70] ^ b[69] ^ b[65] ^ b[63] ^ b[62] ^ b[61] ^
196 b[60] ^ b[57] ^ b[56] ^ b[53] ^ b[52] ^ b[51] ^
197 b[49] ^ b[48] ^ b[44] ^ b[42] ^ b[39] ^ b[38] ^
198 b[37] ^ b[36] ^ b[35] ^ b[34] ^ b[33] ^ b[31] ^
199 b[28] ^ b[27] ^ b[26] ^ b[25] ^ b[22] ^ b[21] ^
200 b[14] ^ b[13] ^ b[11] ^ b[10] ^ b[09] ^ b[08] ^
201 b[06] ^ b[05] ^ b[03] ^ b[02] ^ b[01];
202
203assign E[10] = b[68] ^ b[67] ^ b[64] ^ b[62] ^ b[61] ^ b[57] ^
204 b[56] ^ b[55] ^ b[50] ^ b[48] ^ b[46] ^ b[45] ^
205 b[44] ^ b[43] ^ b[42] ^ b[41] ^ b[32] ^ b[28] ^
206 b[27] ^ b[25] ^ b[23] ^ b[21] ^ b[19] ^ b[18] ^
207 b[16] ^ b[15] ^ b[14] ^ b[11] ^ b[10] ^ b[08] ^
208 b[04] ^ b[02] ^ b[01] ^ b[00];
209
210
211assign E[11] = b[71] ^ b[70] ^ b[69] ^ b[67] ^ b[66] ^ b[65] ^
212 b[62] ^ b[57] ^ b[55] ^ b[54] ^ b[53] ^ b[52] ^
213 b[51] ^ b[48] ^ b[47] ^ b[45] ^ b[43] ^ b[41] ^
214 b[40] ^ b[39] ^ b[38] ^ b[37] ^ b[36] ^ b[35] ^
215 b[34] ^ b[33] ^ b[28] ^ b[25] ^ b[24] ^ b[21] ^
216 b[20] ^ b[18] ^ b[17] ^ b[15] ^ b[11] ^ b[08] ^
217 b[07] ^ b[06] ^ b[05] ^ b[02] ^ b[00];
218
219
220endmodule
221
222module crc_aE(B,E);
223// interface signals
224input [25:0] B;
225output [13:0] E;
226
227assign E[0] = B[24] ^ B[22] ^ B[21] ^ B[18] ^ B[17] ^ B[15] ^
228B[14] ^ B[9] ^ B[8] ^ B[7] ^ B[6] ^ B[4] ^
229B[1] ^ B[0];
230
231assign E[1] = B[25] ^ B[24] ^ B[23] ^ B[21] ^ B[19] ^ B[17] ^
232B[16] ^ B[14] ^ B[10] ^ B[6] ^ B[5] ^ B[4] ^
233B[2] ^ B[0] ;
234
235
236assign E[2] = B[25] ^ B[21] ^ B[20] ^ B[14] ^ B[11] ^ B[9] ^
237B[8] ^ B[5] ^ B[4] ^ B[3] ^ B[0];
238
239assign E[3] = B[24] ^ B[18] ^ B[17] ^ B[14] ^ B[12] ^ B[10] ^
240B[8] ^ B[7] ^ B[5] ^ B[0];
241
242assign E[4] = B[25] ^ B[19] ^ B[18] ^ B[15] ^ B[13] ^ B[11] ^
243B[9] ^ B[8] ^ B[6] ^ B[1];
244
245assign E[5] = B[20] ^ B[19] ^ B[16] ^ B[14] ^ B[12] ^ B[10] ^
246B[9] ^ B[7] ^ B[2];
247
248assign E[6] = B[24] ^ B[22] ^ B[20] ^ B[18] ^ B[14] ^ B[13] ^
249B[11] ^ B[10] ^ B[9] ^ B[7] ^ B[6] ^ B[4] ^
250B[3] ^ B[1] ^ B[0];
251
252assign E[7] = B[25] ^ B[23] ^ B[21] ^ B[19] ^ B[15] ^ B[14] ^
253B[12] ^ B[11] ^ B[10] ^ B[8] ^ B[7] ^ B[5] ^
254B[4] ^ B[2] ^ B[1];
255
256assign E[8] = B[21] ^ B[20] ^ B[18] ^ B[17] ^ B[16] ^ B[14] ^
257B[13] ^ B[12] ^ B[11] ^ B[7] ^ B[5] ^ B[4] ^
258B[3] ^ B[2] ^ B[1] ^ B[0];
259
260assign E[9] = B[24] ^ B[19] ^ B[13] ^ B[12] ^ B[9] ^ B[7] ^
261B[5] ^ B[3] ^ B[2] ^ B[0];
262
263assign E[10] = B[25] ^ B[20] ^ B[14] ^ B[13] ^ B[10] ^ B[8] ^
264B[6] ^ B[4] ^ B[3] ^ B[1];
265
266assign E[11] = B[24] ^ B[22] ^ B[18] ^ B[17] ^ B[11] ^ B[8] ^
267B[6] ^ B[5] ^ B[2] ^ B[1] ^ B[0];
268
269assign E[12] = B[25] ^ B[24] ^ B[23] ^ B[22] ^ B[21] ^ B[19] ^
270B[17] ^ B[15] ^ B[14] ^ B[12] ^ B[8] ^ B[4] ^ B[3] ^ B[2] ^ B[0];
271
272assign E[13] = B[25] ^ B[23] ^ B[21] ^ B[20] ^ B[17] ^ B[16] ^
273B[14] ^ B[13] ^ B[8] ^ B[7] ^ B[6] ^ B[5] ^ B[3] ^ B[0];
274
275
276endmodule
277
278
279module crc_FE(B,E);
280// interface signals
281input [71:0] B;
282output [21:0] E;
283
284assign E[0] = B[70] ^ B[69] ^ B[66] ^ B[62] ^ B[61] ^ B[59] ^
285B[58] ^ B[55] ^ B[54] ^ B[53] ^ B[50] ^ B[49] ^
286B[42] ^ B[39] ^ B[33] ^ B[32] ^ B[31] ^ B[29] ^
287B[27] ^ B[25] ^ B[24] ^ B[22] ^ B[21] ^ B[19] ^
288B[18] ^ B[16] ^ B[15] ^ B[10] ^ B[9] ^ B[8] ^
289B[0];
290
291assign E[1] = B[71] ^ B[69] ^ B[67] ^ B[66] ^ B[63] ^ B[61] ^
292B[60] ^ B[58] ^ B[56] ^ B[53] ^ B[51] ^ B[49] ^
293B[43] ^ B[42] ^ B[40] ^ B[39] ^ B[34] ^ B[31] ^
294B[30] ^ B[29] ^ B[28] ^ B[27] ^ B[26] ^ B[24] ^
295B[23] ^ B[21] ^ B[20] ^ B[18] ^ B[17] ^ B[15] ^
296B[11] ^ B[8] ^ B[1] ^ B[0];
297
298assign E[2] = B[69] ^ B[68] ^ B[67] ^ B[66] ^ B[64] ^ B[58] ^
299B[57] ^ B[55] ^ B[53] ^ B[52] ^ B[49] ^ B[44] ^
300B[43] ^ B[42] ^ B[41] ^ B[40] ^ B[39] ^ B[35] ^
301B[33] ^ B[30] ^ B[28] ^ B[15] ^ B[12] ^ B[10] ^
302B[8] ^ B[2] ^ B[1] ^ B[0];
303
304assign E[3] = B[68] ^ B[67] ^ B[66] ^ B[65] ^ B[62] ^ B[61] ^
305B[56] ^ B[55] ^ B[49] ^ B[45] ^ B[44] ^ B[43] ^
306B[41] ^ B[40] ^ B[39] ^ B[36] ^ B[34] ^ B[33] ^
307B[32] ^ B[27] ^ B[25] ^ B[24] ^ B[22] ^ B[21] ^
308B[19] ^ B[18] ^ B[15] ^ B[13] ^ B[11] ^ B[10] ^
309B[8] ^ B[3] ^ B[2] ^ B[1] ^ B[0];
310
311assign E[4] = B[69] ^ B[68] ^ B[67] ^ B[66] ^ B[63] ^ B[62] ^
312B[57] ^ B[56] ^ B[50] ^ B[46] ^ B[45] ^ B[44] ^
313B[42] ^ B[41] ^ B[40] ^ B[37] ^ B[35] ^ B[34] ^
314B[33] ^ B[28] ^ B[26] ^ B[25] ^ B[23] ^ B[22] ^
315B[20] ^ B[19] ^ B[16] ^ B[14] ^ B[12] ^ B[11] ^
316B[9] ^ B[4] ^ B[3] ^ B[2] ^ B[1];
317
318assign E[5] = B[70] ^ B[69] ^ B[68] ^ B[67] ^ B[64] ^ B[63] ^
319B[58] ^ B[57] ^ B[51] ^ B[47] ^ B[46] ^ B[45] ^
320B[43] ^ B[42] ^ B[41] ^ B[38] ^ B[36] ^ B[35] ^
321B[34] ^ B[29] ^ B[27] ^ B[26] ^ B[24] ^ B[23] ^
322B[21] ^ B[20] ^ B[17] ^ B[15] ^ B[13] ^ B[12] ^
323B[10] ^ B[5] ^ B[4] ^ B[3] ^ B[2];
324
325assign E[6] = B[71] ^ B[70] ^ B[69] ^ B[68] ^ B[65] ^ B[64] ^
326B[59] ^ B[58] ^ B[52] ^ B[48] ^ B[47] ^ B[46] ^
327B[44] ^ B[43] ^ B[42] ^ B[39] ^ B[37] ^ B[36] ^
328B[35] ^ B[30] ^ B[28] ^ B[27] ^ B[25] ^ B[24] ^
329B[22] ^ B[21] ^ B[18] ^ B[16] ^ B[14] ^ B[13] ^
330B[11] ^ B[6] ^ B[5] ^ B[4] ^ B[3];
331
332assign E[7] = B[71] ^ B[65] ^ B[62] ^ B[61] ^ B[60] ^ B[58] ^
333B[55] ^ B[54] ^ B[50] ^ B[48] ^ B[47] ^ B[45] ^
334B[44] ^ B[43] ^ B[42] ^ B[40] ^ B[39] ^ B[38] ^
335B[37] ^ B[36] ^ B[33] ^ B[32] ^ B[28] ^ B[27] ^
336B[26] ^ B[24] ^ B[23] ^ B[21] ^ B[18] ^ B[17] ^
337B[16] ^ B[14] ^ B[12] ^ B[10] ^ B[9] ^ B[8] ^
338B[7] ^ B[6] ^ B[5] ^ B[4] ^ B[0];
339
340assign E[8] = B[66] ^ B[63] ^ B[62] ^ B[61] ^ B[59] ^ B[56] ^
341B[55] ^ B[51] ^ B[49] ^ B[48] ^ B[46] ^ B[45] ^
342B[44] ^ B[43] ^ B[41] ^ B[40] ^ B[39] ^ B[38] ^
343B[37] ^ B[34] ^ B[33] ^ B[29] ^ B[28] ^ B[27] ^
344B[25] ^ B[24] ^ B[22] ^ B[19] ^ B[18] ^ B[17] ^
345B[15] ^ B[13] ^ B[11] ^ B[10] ^ B[9] ^ B[8] ^
346B[7] ^ B[6] ^ B[5] ^ B[1];
347
348assign E[9] = B[67] ^ B[64] ^ B[63] ^ B[62] ^ B[60] ^ B[57] ^
349B[56] ^ B[52] ^ B[50] ^ B[49] ^ B[47] ^ B[46] ^
350B[45] ^ B[44] ^ B[42] ^ B[41] ^ B[40] ^ B[39] ^
351B[38] ^ B[35] ^ B[34] ^ B[30] ^ B[29] ^ B[28] ^
352B[26] ^ B[25] ^ B[23] ^ B[20] ^ B[19] ^ B[18] ^
353B[16] ^ B[14] ^ B[12] ^ B[11] ^ B[10] ^ B[9] ^
354B[8] ^ B[7] ^ B[6] ^ B[2];
355
356assign E[10] = B[68] ^ B[65] ^ B[64] ^ B[63] ^ B[61] ^ B[58] ^
357B[57] ^ B[53] ^ B[51] ^ B[50] ^ B[48] ^ B[47] ^
358B[46] ^ B[45] ^ B[43] ^ B[42] ^ B[41] ^ B[40] ^
359B[39] ^ B[36] ^ B[35] ^ B[31] ^ B[30] ^ B[29] ^
360B[27] ^ B[26] ^ B[24] ^ B[21] ^ B[20] ^ B[19] ^
361B[17] ^ B[15] ^ B[13] ^ B[12] ^ B[11] ^ B[10] ^
362B[9] ^ B[8] ^ B[7] ^ B[3];
363
364assign E[11] = B[69] ^ B[66] ^ B[65] ^ B[64] ^ B[62] ^ B[59] ^
365B[58] ^ B[54] ^ B[52] ^ B[51] ^ B[49] ^ B[48] ^
366B[47] ^ B[46] ^ B[44] ^ B[43] ^ B[42] ^ B[41] ^
367B[40] ^ B[37] ^ B[36] ^ B[32] ^ B[31] ^ B[30] ^
368B[28] ^ B[27] ^ B[25] ^ B[22] ^ B[21] ^ B[20] ^
369B[18] ^ B[16] ^ B[14] ^ B[13] ^ B[12] ^ B[11] ^
370B[10] ^ B[9] ^ B[8] ^ B[4];
371
372assign E[12] = B[69] ^ B[67] ^ B[65] ^ B[63] ^ B[62] ^ B[61] ^
373B[60] ^ B[58] ^ B[54] ^ B[52] ^ B[48] ^ B[47] ^
374B[45] ^ B[44] ^ B[43] ^ B[41] ^ B[39] ^ B[38] ^
375B[37] ^ B[28] ^ B[27] ^ B[26] ^ B[25] ^ B[24] ^
376B[23] ^ B[18] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^
377B[12] ^ B[11] ^ B[8] ^ B[5] ^ B[0];
378
379
380assign E[13] = B[69] ^ B[68] ^ B[64] ^ B[63] ^ B[58] ^ B[54] ^
381B[50] ^ B[48] ^ B[46] ^ B[45] ^ B[44] ^ B[40] ^
382B[38] ^ B[33] ^ B[32] ^ B[31] ^ B[28] ^ B[26] ^
383B[22] ^ B[21] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^
384B[12] ^ B[10] ^ B[8] ^ B[6] ^ B[1] ^ B[0];
385
386assign E[14] = B[66] ^ B[65] ^ B[64] ^ B[62] ^ B[61] ^ B[58] ^
387B[54] ^ B[53] ^ B[51] ^ B[50] ^ B[47] ^ B[46] ^
388B[45] ^ B[42] ^ B[41] ^ B[34] ^ B[31] ^ B[25] ^
389B[24] ^ B[23] ^ B[21] ^ B[19] ^ B[17] ^ B[16] ^
390B[14] ^ B[13] ^ B[11] ^ B[10] ^ B[8] ^ B[7] ^
391B[2] ^ B[1] ^ B[0];
392
393assign E[15] = B[67] ^ B[66] ^ B[65] ^ B[63] ^ B[62] ^ B[59] ^
394B[55] ^ B[54] ^ B[52] ^ B[51] ^ B[48] ^ B[47] ^
395B[46] ^ B[43] ^ B[42] ^ B[35] ^ B[32] ^ B[26] ^
396B[25] ^ B[24] ^ B[22] ^ B[20] ^ B[18] ^ B[17] ^
397B[15] ^ B[14] ^ B[12] ^ B[11] ^ B[9] ^ B[8] ^
398B[3] ^ B[2] ^ B[1];
399
400assign E[16] = B[68] ^ B[67] ^ B[66] ^ B[64] ^ B[63] ^ B[60] ^
401B[56] ^ B[55] ^ B[53] ^ B[52] ^ B[49] ^ B[48] ^
402B[47] ^ B[44] ^ B[43] ^ B[36] ^ B[33] ^ B[27] ^
403B[26] ^ B[25] ^ B[23] ^ B[21] ^ B[19] ^ B[18] ^
404B[16] ^ B[15] ^ B[13] ^ B[12] ^ B[10] ^ B[9] ^
405B[4] ^ B[3] ^ B[2];
406
407assign E[17] = B[69] ^ B[68] ^ B[67] ^ B[65] ^ B[64] ^ B[61] ^
408B[57] ^ B[56] ^ B[54] ^ B[53] ^ B[50] ^ B[49] ^
409B[48] ^ B[45] ^ B[44] ^ B[37] ^ B[34] ^ B[28] ^
410B[27] ^ B[26] ^ B[24] ^ B[22] ^ B[20] ^ B[19] ^
411B[17] ^ B[16] ^ B[14] ^ B[13] ^ B[11] ^ B[10] ^
412B[5] ^ B[4] ^ B[3];
413
414assign E[18] = B[70] ^ B[69] ^ B[68] ^ B[66] ^ B[65] ^ B[62] ^
415B[58] ^ B[57] ^ B[55] ^ B[54] ^ B[51] ^ B[50] ^
416B[49] ^ B[46] ^ B[45] ^ B[38] ^ B[35] ^ B[29] ^
417B[28] ^ B[27] ^ B[25] ^ B[23] ^ B[21] ^ B[20] ^
418B[18] ^ B[17] ^ B[15] ^ B[14] ^ B[12] ^ B[11] ^
419B[6] ^ B[5] ^ B[4];
420
421assign E[19] = B[71] ^ B[70] ^ B[69] ^ B[67] ^ B[66] ^ B[63] ^
422B[59] ^ B[58] ^ B[56] ^ B[55] ^ B[52] ^ B[51] ^
423B[50] ^ B[47] ^ B[46] ^ B[39] ^ B[36] ^ B[30] ^
424B[29] ^ B[28] ^ B[26] ^ B[24] ^ B[22] ^ B[21] ^
425B[19] ^ B[18] ^ B[16] ^ B[15] ^ B[13] ^ B[12] ^
426B[7] ^ B[6] ^ B[5];
427
428assign E[20] = B[71] ^ B[70] ^ B[68] ^ B[67] ^ B[64] ^ B[60] ^
429B[59] ^ B[57] ^ B[56] ^ B[53] ^ B[52] ^ B[51] ^
430B[48] ^ B[47] ^ B[40] ^ B[37] ^ B[31] ^ B[30] ^
431B[29] ^ B[27] ^ B[25] ^ B[23] ^ B[22] ^ B[20] ^
432B[19] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^ B[8] ^
433B[7] ^ B[6];
434
435assign E[21] = B[71] ^ B[69] ^ B[68] ^ B[65] ^ B[61] ^ B[60] ^
436B[58] ^ B[57] ^ B[54] ^ B[53] ^ B[52] ^ B[49] ^
437B[48] ^ B[41] ^ B[38] ^ B[32] ^ B[31] ^ B[30] ^
438B[28] ^ B[26] ^ B[24] ^ B[23] ^ B[21] ^ B[20] ^
439B[18] ^ B[17] ^ B[15] ^ B[14] ^ B[9] ^ B[8] ^
440B[7];
441
442 endmodule
443
444
445module crc_aE_failover(B,E);
446// interface signals
447input [25:0] B;
448output [9:0] E;
449
450
451assign E[0] = B[25] ^ B[22] ^ B[21] ^ B[19] ^ B[17] ^
452 B[16] ^ B[14] ^ B[13] ^ B[10] ^ B[8] ^ B[2]
453 ^ B[1] ^ B[0];
454
455assign E[1] = B[25] ^ B[23] ^ B[21] ^ B[20] ^ B[19]
456 ^ B[18] ^ B[16] ^ B[15] ^ B[13] ^ B[11]
457 ^ B[10] ^ B[9] ^ B[8] ^ B[3] ^ B[0];
458
459assign E[2] = B[25] ^ B[24] ^ B[20] ^ B[13] ^ B[12] ^ B[11] ^ B[9]
460 ^ B[8] ^ B[4] ^ B[2] ^ B[0];
461
462assign E[3] = B[22] ^ B[19] ^ B[17] ^ B[16] ^ B[12] ^ B[9] ^ B[8] ^ B[5] ^ B[3] ^ B[2] ^ B[0];
463
464assign E[4] = B[25] ^ B[23] ^ B[22] ^ B[21] ^ B[20] ^ B[19] ^ B[18] ^ B[16] ^ B[14] ^ B[9] ^ B[8] ^ B[6] ^ B[4] ^ B[3] ^ B[2] ^ B[0];
465
466assign E[5] = B[24] ^ B[23] ^ B[22] ^ B[21] ^ B[20] ^ B[19] ^ B[17] ^ B[15] ^ B[10] ^ B[9] ^ B[7] ^ B[5] ^ B[4] ^ B[3] ^ B[1];
467
468assign E[6] = B[24] ^ B[23] ^ B[20] ^ B[19] ^ B[18] ^ B[17] ^ B[14] ^ B[13] ^ B[11] ^ B[6] ^ B[5] ^ B[4] ^ B[1] ^ B[0];
469
470assign E[7] = B[24] ^ B[22] ^ B[20] ^ B[18] ^ B[17] ^ B[16] ^ B[15] ^ B[13] ^ B[12] ^ B[10] ^ B[8] ^ B[7] ^ B[6] ^ B[5] ^ B[0];
471
472assign E[8] = B[25] ^ B[23] ^ B[21] ^ B[19] ^ B[18] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^ B[11] ^ B[9] ^ B[8] ^ B[7] ^ B[6] ^ B[1];
473
474assign E[9] = B[25] ^ B[24] ^ B[21] ^ B[20] ^ B[18] ^ B[16] ^ B[15] ^ B[13] ^ B[12] ^ B[9] ^ B[7] ^ B[1] ^ B[0];
475
476
477
478
479endmodule
480
481
482module crc_FE_failover(B,E);
483// interface signals
484input [71:0] B;
485output [9:0] E;
486
487 assign E[0] = B[71] ^ B[65] ^ B[63] ^ B[62] ^ B[59] ^ B[58] ^ B[57] ^ B[55] ^ B[53] ^ B[52] ^ B[51] ^ B[50] ^ B[49] ^ B[48] ^ B[45] ^
488B[44] ^ B[41] ^ B[36] ^ B[34] ^ B[32] ^ B[31] ^ B[29] ^ B[26] ^ B[25] ^ B[22] ^ B[21] ^ B[19] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^ B[10] ^ B[8] ^ B[2] ^ B[1] ^ B[0];
489
490assign E[1] = B[71] ^ B[66] ^ B[65] ^ B[64] ^ B[62] ^ B[60] ^ B[57] ^ B[56] ^ B[55] ^ B[54] ^ B[48] ^ B[46] ^ B[44] ^ B[42] ^ B[41] ^
491B[37] ^ B[36] ^ B[35] ^ B[34] ^ B[33] ^ B[31] ^ B[30] ^ B[29] ^ B[27] ^ B[25] ^ B[23] ^ B[21] ^ B[20] ^ B[19] ^ B[18] ^ B[16] ^ B[15] ^ B[13] ^ B[11] ^ B[10] ^ B[9] ^ B[8] ^ B[3] ^ B[0];
492
493assign E[2] = B[71] ^ B[67] ^ B[66] ^ B[62] ^ B[61] ^ B[59] ^ B[56] ^ B[53] ^ B[52] ^ B[51] ^ B[50] ^ B[48] ^ B[47] ^ B[44] ^ B[43] ^
494B[42] ^ B[41] ^ B[38] ^ B[37] ^ B[35] ^ B[30] ^ B[29] ^ B[28] ^ B[25] ^ B[24] ^ B[20] ^ B[13] ^ B[12] ^ B[11] ^ B[9] ^ B[8] ^ B[4] ^ B[2] ^ B[0];
495
496assign E[3] = B[71] ^ B[68] ^ B[67] ^ B[65] ^ B[60] ^ B[59] ^ B[58] ^ B[55] ^ B[54] ^ B[50] ^ B[43] ^ B[42] ^ B[41] ^ B[39] ^ B[38] ^
497B[34] ^ B[32] ^ B[30] ^ B[22] ^ B[19] ^ B[17] ^ B[16] ^ B[12] ^ B[9] ^ B[8] ^ B[5] ^ B[3] ^ B[2] ^ B[0];
498
499assign E[4] = B[71] ^ B[69] ^ B[68] ^ B[66] ^ B[65] ^ B[63] ^ B[62] ^ B[61] ^ B[60] ^ B[58] ^ B[57] ^ B[56] ^ B[53] ^ B[52] ^ B[50] ^
500B[49] ^ B[48] ^ B[45] ^ B[43] ^ B[42] ^ B[41] ^ B[40] ^ B[39] ^ B[36] ^ B[35] ^ B[34] ^ B[33] ^ B[32] ^ B[29] ^ B[26] ^ B[25] ^ B[23] ^ B[22] ^ B[21] ^ B[20] ^ B[19] ^ B[18] ^ B[16] ^ B[14] ^ B[9] ^ B[8] ^ B[6] ^ B[4] ^ B[3] ^ B[2] ^ B[0];
501
502assign E[5] = B[70] ^ B[69] ^ B[67] ^ B[66] ^ B[64] ^ B[63] ^ B[62] ^ B[61] ^ B[59] ^ B[58] ^ B[57] ^ B[54] ^ B[53] ^ B[51] ^ B[50] ^
503B[49] ^ B[46] ^ B[44] ^ B[43] ^ B[42] ^ B[41] ^ B[40] ^ B[37] ^ B[36] ^ B[35] ^ B[34] ^ B[33] ^ B[30] ^ B[27] ^ B[26] ^ B[24] ^ B[23] ^ B[22] ^ B[21] ^ B[20] ^ B[19] ^ B[17] ^ B[15] ^ B[10] ^ B[9] ^ B[7] ^ B[5] ^ B[4] ^ B[3] ^ B[1];
504
505assign E[6] = B[70] ^ B[68] ^ B[67] ^ B[64] ^ B[60] ^ B[57] ^ B[54] ^ B[53] ^ B[49] ^ B[48] ^ B[47] ^ B[43] ^ B[42] ^ B[38] ^ B[37] ^
506B[35] ^ B[32] ^ B[29] ^ B[28] ^ B[27] ^ B[26] ^ B[24] ^ B[23] ^ B[20] ^ B[19] ^ B[18] ^ B[17] ^ B[14] ^ B[13] ^ B[11] ^ B[6] ^ B[5] ^ B[4] ^ B[1] ^ B[0];
507
508assign E[7] = B[69] ^ B[68] ^ B[63] ^ B[62] ^ B[61] ^ B[59] ^ B[57] ^ B[54] ^ B[53] ^ B[52] ^ B[51] ^ B[45] ^ B[43] ^ B[41] ^ B[39] ^
509B[38] ^ B[34] ^ B[33] ^ B[32] ^ B[31] ^ B[30] ^ B[28] ^ B[27] ^ B[26] ^ B[24] ^ B[22] ^ B[20] ^ B[18] ^ B[17] ^ B[16] ^ B[15] ^ B[13] ^ B[12] ^ B[10] ^ B[8] ^ B[7] ^ B[6] ^ B[5] ^ B[0];
510
511assign E[8] = B[70] ^ B[69] ^ B[64] ^ B[63] ^ B[62] ^ B[60] ^ B[58] ^ B[55] ^ B[54] ^ B[53] ^ B[52] ^ B[46] ^ B[44] ^ B[42] ^ B[40] ^
512B[39] ^ B[35] ^ B[34] ^ B[33] ^ B[32] ^ B[31] ^ B[29] ^ B[28] ^ B[27] ^ B[25] ^ B[23] ^ B[21] ^ B[19] ^ B[18] ^ B[17] ^ B[16] ^ B[14] ^ B[13] ^ B[11] ^ B[9] ^ B[8] ^ B[7] ^ B[6] ^ B[1];
513
514assign E[9] = B[70] ^ B[64] ^ B[62] ^ B[61] ^ B[58] ^ B[57] ^ B[56] ^ B[54] ^ B[52] ^ B[51] ^ B[50] ^ B[49] ^ B[48] ^ B[47] ^ B[44] ^
515B[43] ^ B[40] ^ B[35] ^ B[33] ^ B[31] ^ B[30] ^ B[28] ^ B[25] ^ B[24] ^ B[21] ^ B[20] ^ B[18] ^ B[16] ^ B[15] ^ B[13] ^ B[12] ^ B[9] ^ B[7] ^ B[1] ^ B[0];
516
517 endmodule
518
519