Built-in Error Correction - Built-in Error Correction - AM007

Versal Adaptive SoC Memory Resources Architecture Manual (AM007)

Document_ID
AM007
Release_Date
2026-06-05
Revision
1.2.1 English

You can configure the RAMB36E5 in simple dual-port mode as a single 512 x 64 RAM with built-in Hamming code error correction using the extra eight bits in the 72-bit wide RAM. This operation is transparent.

Each write operation generates eight protection bits (ECCPARITY) that are stored with the 64-bit data into the memory. These ECCPARITY bits are used during each read operation to correct any single-bit error, or to detect (but not correct) any double-bit error. The ECCPARITY bits are written into the memory.

Each read operation reads 72 bits of data (64 bits of data and 8 bits of parity) from the memory and feeds it into the ECC decoder. The ECC decoder generates two status outputs (SBITERR and DBITERR) that indicate the three possible read results:

  • No error
  • Single-bit error corrected
  • Double-bit error detected

In the standard ECC mode, the read operation does not correct the error in the memory array, it only presents corrected data on DOUT. To improve FMAX, optional registers controlled by the DO_REG attribute are available for data output (DOUT), SBITERR, and DBITERR. This is similar to the optional registers in the block RAM. For further FMAX improvements, an additional ECC pipeline stage is available.

The ECC configuration option is available with a 36 Kb block RAM (RAMB36E5) in simple dual-port mode 72-bit width (64/8) (SDP). Both read and write width must be 72 bits. The RAMB36E5 has the capability to inject errors. The block RAM ECC also supports READ_FIRST, WRITE_FIRST, and NO_CHANGE modes in identical fashion to the SDP usage model.