-1
\$\begingroup\$

Is there a way to calculate the number of errors that will be caught (or missed) by SECDED when there are more than two errors? I'm thinking of an issue such as a badly-timed data strobe, where the data setup or hold time isn't met and any or all of the bits covered by that strobe could be affected.

One paper that I was reading indicated (if I understood correctly) that a detection means that an even number of errors were detected. If this is true, then it would detect slightly more than 50% of the errors (since single-bit errors are detected and corrected).

Do I have this right? For actual numbers, assume a 64-bit data bus (72 bits total), with a strobe for each byte lane (à la DDRx).

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Hamming ECC as is commonly implemented for SECDED can detect and correct all single errors.

It can detect all double (all even-number of) errors, but not correct them. This means that it can flag that there are error(s), but it doesn't have enough information to identify (and therefore correct) the location of the error.

Triple bit errors will be detected, but will be incorrectly corrected (they will be interpreted as single errors) -- making the result have even more errors.

If you assume that errors are rare and independent, then the probability of more than one error decreases as the number increases. e.g. if the probability of a single error is 0.01, then (v. approximately) the probability of a double error is 0.01^2, or 0.0001, and the probability of a triple error is 10^-6 etc. If you have a system which can have a large number of errors (e.g. due to timing or other massive failures), SECDED is not appropriate.

\$\endgroup\$
1
  • \$\begingroup\$ Thanks, but unfortunately, whether it's appropriate is irrelevant. It is what it is. My task is to figure out what the chances of an error are if the calibration sequence doesn't place the data strobe optimally. \$\endgroup\$
    – Jabberwock
    Commented Aug 11, 2022 at 19:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.