Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / niu_txc_ecc_engine.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: niu_txc_ecc_engine.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/**********************************************************************
36 *
37 * niu_txc_ecc_engine.v
38 *
39 * TXC ECC Engine
40 *
41 * Orignal Author(s): Rahoul Puri
42 * Modifier(s):
43 * Project(s): Neptune
44 *
45 * Copyright (c) 2005 Sun Microsystems, Inc.
46 *
47 * All Rights Reserved.
48 *
49 * This verilog model is the confidential and proprietary property of
50 * Sun Microsystems, Inc., and the possession or use of this model
51 * requires a written license from Sun Microsystems, Inc.
52 *
53 **********************************************************************/
54
55`include "timescale.v"
56
57module niu_txc_ecc_engine (
58 SysClk,
59 Reset_L,
60 ReOrder_ClearEccError,
61 WrReOrderEccState,
62 WrReOrderEccData0,
63 WrReOrderEccData1,
64 WrReOrderEccData2,
65 WrReOrderEccData3,
66 WrReOrderEccData4,
67 StoreForward_ClearEccError,
68 WrStoreForwardEccState,
69 WrStoreForwardEccData0,
70 WrStoreForwardEccData1,
71 WrStoreForwardEccData2,
72 WrStoreForwardEccData3,
73 WrStoreForwardEccData4,
74 PioDataIn,
75 ReOrder_ECC_State,
76 ReOrder_EccData,
77 StoreForward_ECC_State,
78 StoreForward_EccData,
79
80 ReOrder_CorruptECCSingle,
81 ReOrder_CorruptECCDouble,
82 ReOrder_FifoRead,
83 ReOrder_ReadPtr,
84 ReOrder_PreECCData,
85 ReOrder_FifoDataOut,
86 ReOrder_FifoDataValid,
87 ReOrder_UnCorrectError,
88 ReOrder_CorrectedData,
89 ReOrder_PostECCData,
90 StoreForward_CorruptECCSingle,
91 StoreForward_CorruptECCDouble,
92 StoreForward_FifoRead,
93 StoreForward_ReadPtr,
94 StoreForward_PreECCData,
95 StoreForward_FifoDataOut,
96 StoreForward_UnCorrectError,
97 StoreForward_CorrectedData,
98 StoreForward_PostECCData
99 );
100
101
102`include "txc_defines.h"
103
104// Global signals
105input SysClk;
106input Reset_L;
107
108// PIO Access
109input ReOrder_ClearEccError;
110input WrReOrderEccState;
111input WrReOrderEccData0;
112input WrReOrderEccData1;
113input WrReOrderEccData2;
114input WrReOrderEccData3;
115input WrReOrderEccData4;
116input StoreForward_ClearEccError;
117input WrStoreForwardEccState;
118input WrStoreForwardEccData0;
119input WrStoreForwardEccData1;
120input WrStoreForwardEccData2;
121input WrStoreForwardEccData3;
122input WrStoreForwardEccData4;
123input [31:0] PioDataIn;
124
125output [31:0] ReOrder_ECC_State;
126output [151:0] ReOrder_EccData;
127
128output [31:0] StoreForward_ECC_State;
129output [151:0] StoreForward_EccData;
130
131// Error forcing
132input ReOrder_CorruptECCSingle;
133input ReOrder_CorruptECCDouble;
134input ReOrder_FifoRead;
135input [9:0] ReOrder_ReadPtr;
136input [135:0] ReOrder_PreECCData;
137input [151:0] ReOrder_FifoDataOut;
138
139output ReOrder_FifoDataValid;
140output ReOrder_UnCorrectError;
141output [135:0] ReOrder_CorrectedData;
142output [151:0] ReOrder_PostECCData;
143
144reg ReOrder_FifoDataValid;
145
146input StoreForward_CorruptECCSingle;
147input StoreForward_CorruptECCDouble;
148input StoreForward_FifoRead;
149input [9:0] StoreForward_ReadPtr;
150input [135:0] StoreForward_PreECCData;
151input [151:0] StoreForward_FifoDataOut;
152
153output StoreForward_UnCorrectError;
154output [135:0] StoreForward_CorrectedData;
155output [151:0] StoreForward_PostECCData;
156
157/*--------------------------------------------------------------*/
158// Wires & Registers
159/*--------------------------------------------------------------*/
160wire reOrder_CorrectError;
161wire reOrder_CorrectError0;
162wire reOrder_CorrectError1;
163wire reOrder_UnCorrectError0;
164wire reOrder_UnCorrectError1;
165wire rO_loadEccError;
166wire [1:0] ro_ForceECCError;
167wire [7:0] reOrder_ECCSyn0;
168wire [7:0] reOrder_ECCSyn1;
169wire [75:0] ro_PostECCData0;
170wire [75:0] ro_PostECCData1;
171wire [75:0] ro_ECCDataOut0;
172wire [75:0] ro_ECCDataOut1;
173wire [151:0] ro_PostECCData;
174wire [151:0] ro_ECCDataOut;
175
176wire storeForward_CorrectError;
177wire storeForward_CorrectError0;
178wire storeForward_CorrectError1;
179wire storeForward_UnCorrectError0;
180wire storeForward_UnCorrectError1;
181wire sF_loadEccError;
182wire sf_ForceECCErrorBit144;
183wire sf_ForceECCErrorBit151;
184wire [1:0] sf_ForceECCError;
185wire [7:0] storeForward_ECCSyn0;
186wire [7:0] storeForward_ECCSyn1;
187wire [75:0] sf_PostECCData0;
188wire [75:0] sf_PostECCData1;
189wire [75:0] sf_ECCDataOut0;
190wire [75:0] sf_ECCDataOut1;
191wire [151:0] sf_PostECCData;
192wire [151:0] sf_ECCDataOut;
193
194reg storeForward_FifoDataValid;
195reg reOrder_FifoReadD1;
196reg rO_ErrorValid;
197reg rO_CorrectError;
198reg rO_UnCorrectError;
199reg [9:0] rO_EccAddr;
200reg [9:0] reOrder_ReadAddrD1;
201reg [31:0] rO_EccData0;
202reg [31:0] rO_EccData1;
203reg [31:0] rO_EccData2;
204reg [31:0] rO_EccData3;
205reg [23:0] rO_EccData4;
206reg [75:0] reOrder_FifoDataOutD0;
207reg [75:0] reOrder_FifoDataOutD1;
208
209reg storeForward_FifoReadD1;
210reg sF_ErrorValid;
211reg sF_CorrectError;
212reg sF_UnCorrectError;
213reg [9:0] sF_EccAddr;
214reg [9:0] storeForward_ReadAddrD1;
215reg [31:0] sF_EccData0;
216reg [31:0] sF_EccData1;
217reg [31:0] sF_EccData2;
218reg [31:0] sF_EccData3;
219reg [23:0] sF_EccData4;
220reg [75:0] storeForward_FifoDataOutD0;
221reg [75:0] storeForward_FifoDataOutD1;
222
223/*--------------------------------------------------------------*/
224// Assigns
225/*--------------------------------------------------------------*/
226assign ro_PostECCData = {ro_PostECCData1, ro_PostECCData0};
227assign ro_ECCDataOut = {ro_ECCDataOut1, ro_ECCDataOut0};
228assign ReOrder_UnCorrectError = (reOrder_UnCorrectError1
229 |
230 reOrder_UnCorrectError0
231 );
232
233assign reOrder_CorrectError = (reOrder_CorrectError1
234 |
235 reOrder_CorrectError0
236 );
237
238assign ReOrder_CorrectedData = {ro_ECCDataOut1[75:8], ro_ECCDataOut0[75:8]};
239
240
241assign sf_PostECCData = {sf_PostECCData1, sf_PostECCData0};
242assign sf_ECCDataOut = {sf_ECCDataOut1, sf_ECCDataOut0};
243assign StoreForward_UnCorrectError = (storeForward_UnCorrectError1
244 |
245 storeForward_UnCorrectError0
246 );
247
248assign storeForward_CorrectError = (storeForward_CorrectError1
249 |
250 storeForward_CorrectError0
251 );
252
253assign StoreForward_CorrectedData = {sf_ECCDataOut1[75:8], sf_ECCDataOut0[75:8]};
254
255
256assign ro_ForceECCError =
257 ReOrder_CorruptECCDouble ? ~ro_PostECCData[1:0] :
258 ReOrder_CorruptECCSingle ? {ro_PostECCData[1], ~ro_PostECCData[0]}
259 : ro_PostECCData[1:0];
260
261assign sf_ForceECCErrorBit144 =
262 (StoreForward_CorruptECCDouble & StoreForward_CorruptECCSingle)
263 ? ~sf_PostECCData[144]
264 : sf_PostECCData[144];
265
266assign sf_ForceECCErrorBit151 =
267 (StoreForward_CorruptECCDouble & StoreForward_CorruptECCSingle)
268 ? ~sf_PostECCData[151]
269 : sf_PostECCData[151];
270assign sf_ForceECCError =
271 StoreForward_CorruptECCDouble ? ~sf_PostECCData[1:0] :
272 StoreForward_CorruptECCSingle ? {sf_PostECCData[1], ~sf_PostECCData[0]}
273 : sf_PostECCData[1:0];
274
275assign ReOrder_PostECCData = {ro_PostECCData[151:2], ro_ForceECCError};
276
277assign StoreForward_PostECCData = {sf_ForceECCErrorBit151, // Bit 135
278 sf_PostECCData[150:145], // Bit 134-129
279 sf_ForceECCErrorBit144, // Bit 128
280 sf_PostECCData[143:84], // Bits [127:69]
281 sf_PostECCData[83:76], // Syndrome
282 sf_PostECCData[75:8], // Bits [68:0]
283 sf_PostECCData[7:2], // Syndrome
284 sf_ForceECCError // Syndrome
285 };
286
287/*--------------------------------------------------------------*/
288// Logic
289/*--------------------------------------------------------------*/
290always @(posedge SysClk)
291 if (!Reset_L) reOrder_FifoDataOutD1 <= #`SD 76'h0;
292 else reOrder_FifoDataOutD1 <= #`SD ReOrder_FifoDataOut[151:76];
293
294always @(posedge SysClk)
295 if (!Reset_L) reOrder_FifoDataOutD0 <= #`SD 76'h0;
296 else reOrder_FifoDataOutD0 <= #`SD ReOrder_FifoDataOut[75:0];
297
298
299always @(posedge SysClk)
300 if (!Reset_L) reOrder_FifoReadD1 <= #`SD 1'b0;
301 else reOrder_FifoReadD1 <= #`SD ReOrder_FifoRead;
302
303
304always @(posedge SysClk)
305 if (!Reset_L) ReOrder_FifoDataValid <= #`SD 1'b0;
306 else ReOrder_FifoDataValid <= #`SD reOrder_FifoReadD1;
307
308
309always @(posedge SysClk)
310 if (!Reset_L) reOrder_ReadAddrD1 <= #`SD 10'h0;
311 else reOrder_ReadAddrD1 <= #`SD ReOrder_ReadPtr;
312
313always @(posedge SysClk)
314 if (!Reset_L) storeForward_FifoDataOutD1 <= #`SD 76'h0;
315 else storeForward_FifoDataOutD1 <= #`SD StoreForward_FifoDataOut[151:76];
316
317always @(posedge SysClk)
318 if (!Reset_L) storeForward_FifoDataOutD0 <= #`SD 76'h0;
319 else storeForward_FifoDataOutD0 <= #`SD StoreForward_FifoDataOut[75:0];
320
321always @(posedge SysClk)
322 if (!Reset_L) storeForward_FifoReadD1 <= #`SD 1'b0;
323 else storeForward_FifoReadD1 <= #`SD StoreForward_FifoRead;
324
325always @(posedge SysClk)
326 if (!Reset_L) storeForward_FifoDataValid <= #`SD 1'b0;
327 else storeForward_FifoDataValid <= #`SD storeForward_FifoReadD1;
328
329always @(posedge SysClk)
330 if (!Reset_L) storeForward_ReadAddrD1 <= #`SD 10'h0;
331 else storeForward_ReadAddrD1 <= #`SD StoreForward_ReadPtr;
332
333/*--------------------------------------------------------------*/
334// RO Latching of ECC Errors
335/*--------------------------------------------------------------*/
336assign ReOrder_EccData = {rO_EccData4, rO_EccData3, rO_EccData2,
337 rO_EccData1, rO_EccData0
338 };
339
340assign ReOrder_ECC_State = {14'h0, rO_CorrectError,
341 rO_UnCorrectError, 6'b0, rO_EccAddr};
342
343assign rO_loadEccError = (ReOrder_FifoDataValid
344 &
345 (reOrder_CorrectError
346 |
347 ReOrder_UnCorrectError
348 )
349 &
350 ~rO_ErrorValid
351 );
352
353always @ (posedge SysClk)
354 if (!Reset_L) rO_ErrorValid <= 1'b0;
355 else if (ReOrder_ClearEccError) rO_ErrorValid <= 1'b0;
356 else if (rO_loadEccError) rO_ErrorValid <= 1'b1;
357
358always @ (posedge SysClk)
359 if (!Reset_L) rO_CorrectError <= 1'b0;
360 else if (ReOrder_ClearEccError) rO_CorrectError <= 1'b0;
361 else if (WrReOrderEccState) rO_CorrectError <= PioDataIn[17];
362 else if (rO_loadEccError) rO_CorrectError <= reOrder_CorrectError;
363
364always @ (posedge SysClk)
365 if (!Reset_L) rO_UnCorrectError <= 1'b0;
366 else if (ReOrder_ClearEccError) rO_UnCorrectError <= 1'b0;
367 else if (WrReOrderEccState) rO_UnCorrectError <= PioDataIn[16];
368 else if (rO_loadEccError) rO_UnCorrectError <= ReOrder_UnCorrectError;
369
370always @ (posedge SysClk)
371 if (!Reset_L) rO_EccAddr <= 10'b0;
372 else if (ReOrder_ClearEccError) rO_EccAddr <= 10'h0;
373 else if (WrReOrderEccState) rO_EccAddr <= PioDataIn[9:0];
374 else if (rO_loadEccError) rO_EccAddr <= reOrder_ReadAddrD1;
375
376always @ (posedge SysClk)
377 if (!Reset_L) rO_EccData0 <= 32'h0;
378 else if (ReOrder_ClearEccError) rO_EccData0 <= 32'h0;
379 else if (WrReOrderEccData0) rO_EccData0 <= PioDataIn[31:0];
380 else if (rO_loadEccError) rO_EccData0 <= ro_ECCDataOut[31:0];
381
382always @ (posedge SysClk)
383 if (!Reset_L) rO_EccData1 <= 32'h0;
384 else if (ReOrder_ClearEccError) rO_EccData1 <= 32'h0;
385 else if (WrReOrderEccData1) rO_EccData1 <= PioDataIn[31:0];
386 else if (rO_loadEccError) rO_EccData1 <= ro_ECCDataOut[63:32];
387
388always @ (posedge SysClk)
389 if (!Reset_L) rO_EccData2 <= 32'h0;
390 else if (ReOrder_ClearEccError) rO_EccData2 <= 32'h0;
391 else if (WrReOrderEccData2) rO_EccData2 <= PioDataIn[31:0];
392 else if (rO_loadEccError) rO_EccData2 <= ro_ECCDataOut[95:64];
393
394always @ (posedge SysClk)
395 if (!Reset_L) rO_EccData3 <= 32'h0;
396 else if (ReOrder_ClearEccError) rO_EccData3 <= 32'h0;
397 else if (WrReOrderEccData3) rO_EccData3 <= PioDataIn[31:0];
398 else if (rO_loadEccError) rO_EccData3 <= ro_ECCDataOut[127:96];
399
400always @ (posedge SysClk)
401 if (!Reset_L) rO_EccData4 <= 24'h0;
402 else if (ReOrder_ClearEccError) rO_EccData4 <= 24'h0;
403 else if (WrReOrderEccData4) rO_EccData4 <= PioDataIn[23:0];
404 else if (rO_loadEccError) rO_EccData4 <= ro_ECCDataOut[151:128];
405
406/*--------------------------------------------------------------*/
407// SF Latching of ECC Errors
408/*--------------------------------------------------------------*/
409assign StoreForward_EccData = {sF_EccData4, sF_EccData3, sF_EccData2,
410 sF_EccData1, sF_EccData0
411 };
412
413
414assign StoreForward_ECC_State = {14'h0, sF_CorrectError,
415 sF_UnCorrectError, 6'b0, sF_EccAddr};
416
417assign sF_loadEccError = (storeForward_FifoDataValid
418 &
419 (storeForward_CorrectError
420 |
421 StoreForward_UnCorrectError
422 )
423 &
424 ~sF_ErrorValid
425 );
426
427
428always @ (posedge SysClk)
429 if (!Reset_L) sF_ErrorValid <= 1'b0;
430 else if (StoreForward_ClearEccError) sF_ErrorValid <= 1'b0;
431 else if (sF_loadEccError) sF_ErrorValid <= 1'b1;
432
433always @ (posedge SysClk)
434 if (!Reset_L)
435 sF_CorrectError <= 1'b0;
436 else if (StoreForward_ClearEccError)
437 sF_CorrectError <= 1'b0;
438 else if (WrStoreForwardEccState)
439 sF_CorrectError <= PioDataIn[17];
440 else if (sF_loadEccError)
441 sF_CorrectError <= storeForward_CorrectError;
442
443always @ (posedge SysClk)
444 if (!Reset_L)
445 sF_UnCorrectError <= 1'b0;
446 else if (StoreForward_ClearEccError)
447 sF_UnCorrectError <= 1'b0;
448 else if (WrStoreForwardEccState)
449 sF_UnCorrectError <= PioDataIn[16];
450 else if (sF_loadEccError)
451 sF_UnCorrectError <= StoreForward_UnCorrectError;
452
453always @ (posedge SysClk)
454 if (!Reset_L) sF_EccAddr <= 10'b0;
455 else if (StoreForward_ClearEccError) sF_EccAddr <= 10'h0;
456 else if (WrStoreForwardEccState) sF_EccAddr <= PioDataIn[9:0];
457 else if (sF_loadEccError) sF_EccAddr <= storeForward_ReadAddrD1;
458
459always @ (posedge SysClk)
460 if (!Reset_L) sF_EccData0 <= 32'h0;
461 else if (StoreForward_ClearEccError) sF_EccData0 <= 32'h0;
462 else if (WrStoreForwardEccData0) sF_EccData0 <= PioDataIn[31:0];
463 else if (sF_loadEccError) sF_EccData0 <= sf_ECCDataOut[31:0];
464
465always @ (posedge SysClk)
466 if (!Reset_L) sF_EccData1 <= 32'h0;
467 else if (StoreForward_ClearEccError) sF_EccData1 <= 32'h0;
468 else if (WrStoreForwardEccData1) sF_EccData1 <= PioDataIn[31:0];
469 else if (sF_loadEccError) sF_EccData1 <= sf_ECCDataOut[63:32];
470
471always @ (posedge SysClk)
472 if (!Reset_L) sF_EccData2 <= 32'h0;
473 else if (StoreForward_ClearEccError) sF_EccData2 <= 32'h0;
474 else if (WrStoreForwardEccData2) sF_EccData2 <= PioDataIn[31:0];
475 else if (sF_loadEccError) sF_EccData2 <= sf_ECCDataOut[95:64];
476
477always @ (posedge SysClk)
478 if (!Reset_L) sF_EccData3 <= 32'h0;
479 else if (StoreForward_ClearEccError) sF_EccData3 <= 32'h0;
480 else if (WrStoreForwardEccData3) sF_EccData3 <= PioDataIn[31:0];
481 else if (sF_loadEccError) sF_EccData3 <= sf_ECCDataOut[127:96];
482
483always @ (posedge SysClk)
484 if (!Reset_L) sF_EccData4 <= 24'h0;
485 else if (StoreForward_ClearEccError) sF_EccData4 <= 24'h0;
486 else if (WrStoreForwardEccData4) sF_EccData4 <= PioDataIn[23:0];
487 else if (sF_loadEccError) sF_EccData4 <= sf_ECCDataOut[151:128];
488
489/*--------------------------------------------------------------*/
490// Modules
491/*--------------------------------------------------------------*/
492
493niu_txc_ecc_generate niu_txc_RO_ecc_generate1 (
494 .din (ReOrder_PreECCData[135:68]),
495 .dout (ro_PostECCData1)
496 );
497
498niu_txc_ecc_generate niu_txc_RO_ecc_generate0 (
499 .din (ReOrder_PreECCData[67:0]),
500 .dout (ro_PostECCData0)
501 );
502
503niu_txc_ecc_syndrome niu_txc_RO_ecc_syndrome1 (
504 .din (reOrder_FifoDataOutD1),
505 .syn (reOrder_ECCSyn1)
506 );
507
508niu_txc_ecc_syndrome niu_txc_RO_ecc_syndrome0 (
509 .din (reOrder_FifoDataOutD0),
510 .syn (reOrder_ECCSyn0)
511 );
512
513niu_txc_ecc_correct niu_txc_RO_ecc_correct1 (
514 .din (reOrder_FifoDataOutD1),
515 .syn (reOrder_ECCSyn1),
516 .dout (ro_ECCDataOut1),
517 .no_error (),
518 .error (),
519 .corr_error (reOrder_CorrectError1),
520 .uncorr_error (reOrder_UnCorrectError1)
521 );
522
523niu_txc_ecc_correct niu_txc_RO_ecc_correct0 (
524 .din (reOrder_FifoDataOutD0),
525 .syn (reOrder_ECCSyn0),
526 .dout (ro_ECCDataOut0),
527 .no_error (),
528 .error (),
529 .corr_error (reOrder_CorrectError0),
530 .uncorr_error (reOrder_UnCorrectError0)
531 );
532
533niu_txc_ecc_generate niu_txc_SF_ecc_generate1 (
534 .din (StoreForward_PreECCData[135:68]),
535 .dout (sf_PostECCData1)
536 );
537
538niu_txc_ecc_generate niu_txc_SF_ecc_generate0 (
539 .din (StoreForward_PreECCData[67:0]),
540 .dout (sf_PostECCData0)
541 );
542
543niu_txc_ecc_syndrome niu_txc_SF_ecc_syndrome1 (
544 .din (storeForward_FifoDataOutD1),
545 .syn (storeForward_ECCSyn1)
546 );
547
548niu_txc_ecc_syndrome niu_txc_SF_ecc_syndrome0 (
549 .din (storeForward_FifoDataOutD0),
550 .syn (storeForward_ECCSyn0)
551 );
552
553niu_txc_ecc_correct niu_txc_SF_ecc_correct1 (
554 .din (storeForward_FifoDataOutD1),
555 .syn (storeForward_ECCSyn1),
556 .dout (sf_ECCDataOut1),
557 .no_error (),
558 .error (),
559 .corr_error (storeForward_CorrectError1),
560 .uncorr_error (storeForward_UnCorrectError1)
561 );
562
563niu_txc_ecc_correct niu_txc_SF_ecc_correct0 (
564 .din (storeForward_FifoDataOutD0),
565 .syn (storeForward_ECCSyn0),
566 .dout (sf_ECCDataOut0),
567 .no_error (),
568 .error (),
569 .corr_error (storeForward_CorrectError0),
570 .uncorr_error (storeForward_UnCorrectError0)
571 );
572
573endmodule