Hello,
Is enabling the ERM clock enough to detect SRAM errors?
Not quite. Enabling the ERM clock is just the first step. The Error Reporting Module (ERM) itself doesn't actively scan memory — it monitors and reports errors that are detected by other subsystems, like the ECC (Error Correction Code) logic in the SRAM controller.
To detect SRAM errors:
- The SRAM must be accessed (read or written).
- ECC logic must be enabled and properly initialized.
- ERM will then log any ECC-detected errors in its status registers.
So, just reading ERM status registers won't detect errors unless ECC is active and memory is accessed.
What does “write some data into memory during initialization” mean?
This refers to initializing ECC codewords. ECC works by storing redundant bits alongside your actual data to detect and correct errors. When memory is first powered up, it contains undefined values, and the ECC bits are not valid.
To avoid false ECC errors, you must:
- Write known data to each ECC-protected memory location. (RAM)
- This causes the ECC logic to generate and store a valid ECC codeword for that data.
What is an ECC codeword?
An ECC codeword is a combination of:
- Your actual data bits
- ECC bits (redundant bits used for error detection/correction)
For example, in a single-bit error correction scheme:
- You might have 64 bits of data + 8 bits of ECC = 72-bit codeword.
When you write to memory:
- The ECC logic calculates the ECC bits based on your data.
- It stores both the data and ECC bits.
- On read, it checks the ECC bits to detect/correct errors.
No SPD, FCCU, or SAF?
That’s fine — you can still use ERM + ECC directly. Just make sure:
- ECC is enabled in the SRAM controller.
- You initialize memory properly.
- You periodically check ERM status registers for error flags.
Best regards,
Peter