Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.3.7.12. Data Integrity Mechanism

The data integrity (DI) mechanism detects additional errors (not covered by host bus standards or BCH mechanism in the controller data path and the interfaces with the host. The following items are included as part of the DI mechanism:

  • Host interfaces protected by parity bits. The parity is checked only for valid part of data word (padding or parity bits are ignored).
  • Context memory SRAM protected by parity bits.
  • Data path protected by CRC. The CRC is added to the data stream (before ECC redundancy if this is enabled). There is not padding between data stream-CRC or CRC-ECC. The CRC checksum is always 8-bytes long and is added to each one of the ECC sectors. For write direction, the CRC data is stored in the NAND flash device. For read direction, the controller uses the CRC stored in the NAND flash device increasing the ability to detect uncorrectable errors. The 8-bytes added to the data stream decreases in 8-bytes the number of bytes that could be used for metadata which can be covered by ECC protection.

Follow the steps below to enable data integrity mechanism:

  1. Set parity type for host and SRAM interfaces in field di_type of the di_control (0x0700) register.
  2. Enable data integrity by setting the di_crc_en bit or di_parity_en bit in the di_control (0x0700) register.

The data integrity mechanism only can be enabled or disabled when the NAND Flash controller is in IDLE state.

The following table describes the result observed when a data integrity error is identified.

Table 212.  Observed Result after DI Errors Detected
Error Type Result
Parity error for descriptor read The di_dsc_err bit is set in descriptor status/last operation status. Read descriptor is discarded.
Parity error for context SRAM memory The di_ctx_err bit is set in the status field of the descriptor or last operation status register.
Parity or CRC error in data path The di_dat_err bit is set in descriptor status/last operation status. The controller issues Thread Reset zero command automatically.
Parity error during register read/write

The cmd_reg_par_err bit is set in the intr_status (0x0110) register. Address of last error transaction is stored in di_error_reg_addr (0x070c) register. Additionally if the di_par_rsp_en field in the di_control (0x0700) register is set to ‘1’, an error response is generated on the SFR system interface.