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 (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: It takes up to 1 ms before the ECC scrubber detects
the errors which can be observed on the status outputs/error counters.
The following ECC status is provided for lookup operations:
- Single-bit errors
- Not status per lookup operation, only indicated by ECC scrubber.
- Double-bit errors
- Indicated in the lookup response status flag, together with hit/miss indication.
Figure 1. ECC Timing