Monitoring ECC Status - 1.1 English - PG313

Versal Adaptive SoC Programmable Network on Chip and Integrated Memory Controller 1.1 LogiCORE IP Product Guide (PG313)

Document ID
PG313
Release Date
2025-12-17
Version
1.1 English

Status Registers to Find Correctable and Uncorrectable Errors

In HW manager, under DDRMC* ecc, the following status registers can be observed:

Note: Refresh the respective DDRMC to reflect the current status.
  • DDRMC_ISR_CE0_ECC0
  • DDRMC_ISR_CE0_ECC1
  • DDRMC_ISR_CE1_ECC0
  • DDRMC_ISR_CE1_ECC1
  • DDRMC_ISR_UC0_ECC0
  • DDRMC_ISR_UC0_ECC1
  • DDRMC_ISR_UC1_ECC0
  • DDRMC_ISR_UC1_ECC1
  • In the above status registers, the first 0 or 1 (CE* and UC*) indicates which half of the BLn burst contained an error, and the last 0 or 1 (ECC*) indicates the DDRMC channel number containing an error.
  • When one or more errors are injected, HW will set the reg_adec15.done bit to 0x1 under DDRMC_NOC* registers.
  • In persistent mode, errors will continue to be injected after the done bit is set.
  • In single mode (persistent=0x0) the done bit must be cleared to enable another single error injection.
  • During correctable error detection DRAM will be scrubbed.
  • During uncorrectable error detection SLVERR Read response will be returned to the host.

Decoding DDRMC ECC Errors

ECC error checking is done on every edge of the memory burst, either BL8 for DDR4, or BL16 for LPDDR4. ECC error reporting is done on an aligned two burst boundary for x72 DDR4 and an aligned four burst boundary for all other memory configurations. The eccr[1:0]_corr/uncorr_err_status registers indicate the memory bursts associated with the ECC errors. This burst mapping also depends on the memory technology and interface width. The following tables show the correctable and uncorrectable burst mapping possibilities.

Table 1. DDR4 ECC Error Reporting Burst Mapping
Burstn DDR4 x72 All Other DDR4 Per Channel
Burst0 ecc0_[corr/uncorr]_err_status_00 ecc[1:0]_[corr/uncorr]_err_status_00
Burst1 ecc0_[corr/uncorr]_err_status_02 ecc[1:0]_[corr/uncorr]_err_status_01
Burst2 ecc1_[corr/uncorr]_err_status_00 ecc[1:0]_[corr/uncorr]_err_status_02
Burst3 ecc1_[corr/uncorr]_err_status_02 ecc[1:0]_[corr/uncorr]_err_status_03
Burst4 ecc0_[corr/uncorr]_err_status_10 ecc[1:0]_[corr/uncorr]_err_status_10
Burst5 ecc0_[corr/uncorr]_err_status_12 ecc[1:0]_[corr/uncorr]_err_status_11
Burst6 ecc1_[corr/uncorr]_err_status_10 ecc[1:0]_[corr/uncorr]_err_status_12
Burst7 ecc1_[corr/uncorr]_err_status_12 ecc[1:0]_[corr/uncorr]_err_status_13
Burst8 N/A N/A
Burst9 N/A N/A
Burst10 N/A N/A
Burst11 N/A N/A
Burst12 N/A N/A
Burst13 N/A N/A
Burst14 N/A N/A
Burst15 N/A N/A
Table 2. LPDDR4 ECC Error Reporting Burst Mapping
Burstn All LPDDR4 Per Channel
Burst0 ecc[1:0]_[corr/uncorr]_err_status_00
Burst1 ecc[1:0]_[corr/uncorr]_err_status_01
Burst2 ecc[1:0]_[corr/uncorr]_err_status_02
Burst3 ecc[1:0]_[corr/uncorr]_err_status_03
Burst4 ecc[1:0]_[corr/uncorr]_err_status_10
Burst5 ecc[1:0]_[corr/uncorr]_err_status_11
Burst6 ecc[1:0]_[corr/uncorr]_err_status_12
Burst7 ecc[1:0]_[corr/uncorr]_err_status_13
Burst8 ecc[1:0]_[corr/uncorr]_err_status_00
Burst9 ecc[1:0]_[corr/uncorr]_err_status_01
Burst10 ecc[1:0]_[corr/uncorr]_err_status_02
Burst11 ecc[1:0]_[corr/uncorr]_err_status_03
Burst12 ecc[1:0]_[corr/uncorr]_err_status_10
Burst13 ecc[1:0]_[corr/uncorr]_err_status_11
Burst14 ecc[1:0]_[corr/uncorr]_err_status_12
Burst15 ecc[1:0]_[corr/uncorr]_err_status_13

For information refer to AR 000034749.