A register designed to detect and correct soft errors in real time. A
redundant latch is added to the existing structure of a flip flop and
functional data is simultaneously registered at multiple latches. The
content of these multiple latches are fed to a majority voting circuit.
If the content of any of these latches is corrupted by soft error, it is
filtered out through the majority voting circuit and correct data is
passed out from the output of the flip flop. In one embodiment, this
design operates as a simple scan flip flop or scan-hold flip flop, and is
useful for system testability purposes.