Concurrent Error Detection in ALU's by
Recomputing with Shifted Operands

This is a help file for RESO (Re-computing with Shifted Operands) simulator. This simulator is created by using Java.



There were many methods of concurrent error detection in the Arithmetic and Logic Units (ALU's).  However, some of those methods such as AN code, Residue Code, Inverse Residue code  have limitations, they can't be used for checking logical operation.

"Re-computing with Shifted Operands"(RESO) is one of methods of concurrent error detection. RESO can detect errors in both the arithmetic and logic operations. RESO uses the principle of time redundancy in detecting the errors and achieves its error detection capability through the use of the already existing replicated hardware in the form of identical bit slices. Here is a conceptual diagram of RESO.

During the first step,  three shifters don't shift the data, therefore the input and output of shifter is same. During the second step,  the first two left-shifter shift input data by "K" bits and the right-shifter shifts input data by "K" bits.

Here is simple block diagram of a bit-slice of ALU. In this diagram, FA(Full-Adder) is a ripple carry adder.

The fault model used is more general than the commonly assumed stuck-at fault model.  This fault model assumes that the faults are confined to a small area of the circuit and that the precise nature of the faults is not known. This means the faulty sum and the faulty carry bits can have any logical values at any time. This model is very appropriate for the VLSI circuits.

In upper diagram, Cin[i+1] or Y[i] or both can be faulty, you can modeling this situation by using 2 fields of RESO simulator, faulty_bits(carry), faulty_bits(out).



1. "Width of operand":  Default value of this field is 16 bits. This means that input A or B value can be from 0xFFFF to 0x0000.
2. "Shift amount" :  Default value of this field is 3 bits. This means that input A will be shifted by 3 bit. If A is 0x0001, shifted value will be 0x0008.
3. "Operation" : Default value of this field is OR. You can select OR, AND, NOT, and ADD.
4. "Operand A" & "Operand B": These are input values of this simulation.
5. "Faulty Bits(carry & out)" : By using this field, you can specify faulty bits. If you set "Fault Bits(out)" as "0 1", this means that bit 0 and 1 is faulty and each bit can be stuck at High or Low.
6. "Start Simulation" & "Step" : By using these buttons, you can run simulation.
7. "Clear Log": By using this button, you can clear the logs.