All memories in the CAM database are ECC protected. There are eight additional ECC bits for every address in a 64-bit wide memory. The eight additional bits are only used for ECC and can not be used for storage. 64-bit wide memories are always referred in this document (even though 72 bits are used).
A scrubbing mechanism starts regularly (approximately 1 ms interval) and reads
every memory address of the CAM in the background using idle cycles. If a single-bit
error is detected during scrubbing, the error is corrected permanently by writing the
corrected data back to the memory. Single-bit errors detected during lookup operations
are corrected dynamically. If a double-bit error is detected during lookup, there will
be no match. In general, if double-bit errors are detected during lookups it is
recommended to drop the packet issuing the lookup. There are two statistic counters for ECC:
- Single-bit errors
- This counter increments for errors detected and corrected during scrubbing.
- Double-bit errors
- This counter increments for double-bit errors detected during scrubbing.
The software API provides a debug function to enable insertion of single-bit/double-bit errors during write operations. With the error insertion enabled subsequent insert/update/delete operations will store data in memory with errors. Note that it takes up to 2 ms before the ECC scrubber detects the errors which can be observed on the status outputs / error counters.