## 3 QDI TMR Implementation  
An example QDI TMR implementation is shown in Figure 4 comprising three identical function modules 1, 2 and 3. Dual rail inputs (A1,A0), (B1,B0), and (C1,C0) are supplied to these function modules from the external world. The outputs of function modules 1, 2, and 3 are represented by (X1,X0), (Y1,Y0), and (Z1,Z0) respectively, which are given as inputs to the QDI majority voter. The dual rail output of the majority voter is denoted by (V1,V0). Equations (1) and (2) are the classical expressions for V1 and V0. These equations consist of four terms out of which the first three terms viz. X1Y1, Y1Z1 and X1Z1 with respect to (1), and X0Y0, Y0Z0 and X0Z0, with respect to (2), signify the correct operation of any two function modules shown in Figure 4. The fourth term viz. X1Y1Z1 with respect to (1) and X0Y0Z0 with respect to (2) signifies the correct operation of all the three function modules. However, X1Y1Z1 and X0Y0Z0 can be safely eliminated using Boolean axioms resulting in just three irredundant terms for (1) and (2). \[\text{V1}=\text{X1Y1}+\text{Y1Z1}+\text{X1Z1}+\text{X1Y1Z1}=\text{X1Y1}+\text {Y1Z1}+\text{X1Z1} \tag{1}\]  
\[\text{V0}=\text{X0Y0}+\text{Y0Z0}+\text{X0Z0}+\text{X0Y0Z0}=\text{X0Y0}+\text {Y0Z0}+\text{X0Z0} \tag{2}\]  
A direct synthesis of (1) and (2) using C-elements and OR gates is depicted by Figure 5a that corresponds to RTZ handshaking, and Figure 5b is its counterpart, which corresponds to RTO handshaking. Figure 5 is provided mainly to illustrate why a naive implementation of the majority equations described by (1) and (2) is inappropriate and how gate orphans could result. In Figure 5, C\({}_{1}\) to C\({}_{12}\) represent the C-elements, OR1 and OR2 are the OR gates, and AND1 and AND2 are the AND gates. Figure 4: An example quasi delay insensitive (QDI) triple modular redundancy implementation. Figure 5: Illustration of gate orphans resulting from a naive implementation of an asynchronous majority voter corresponding to: (**a**) RTZ handshaking, and (**b**) RTO handshaking. To transform an asynchronous circuit that corresponds to RTZ or RTO handshaking into one that corresponds to RTO or RTZ handshaking respectively, all the gates i.e., simple and/or complex gates of the original circuit should be replaced by their respective duals according to the duality principle of Boolean algebra [27]. However, this excludes any C-elements present in the original circuit, which should be left untouched while retaining their inputs. Nevertheless, Figure 5a,b shows naive implementations, since they are not QDI because they suffer from the problem of gate orphans, which are described below by considering some example input scenarios. Wire orphans and gate orphans are the two circuit orphans which should be avoided in a QDI circuit as they could affect the robustness [28; 29; 30], resulting in the circuit becoming non-QDI. For example, referring to Figure 5a, let us assume that after a RTZ phase, all the dual rail inputs of the majority voter have assumed 0, i.e., X1 = X0 = 0, Y1 = Y0 = 0 and Z1 = Z0 = 0. In Figure 5a,b, the steady state of 0 is highlighted by the blue line, the steady state of 1 is highlighted by the red line, and the signal transition from 0 to 1 or 1 to 0 is highlighted by the green line. Let us now assume that after the RTZ phase, the input data of X1 = Y1 = Z1 = 1 is applied to the majority voter in Figure 5a. This implies X0, Y0 and Z0 continue to retain 0. Supposing that C-element C\({}_{1}\) alone has output 1 and assuming that C-elements C\({}_{2}\) and C\({}_{3}\) have not yet output 1, since one of the inputs to OR1 is 1, therefore OR1 will output 1 regardless of the receipt of 1 on its other two inputs, and thus V1 could assume 1. The late arrival of 1 on the other two inputs of OR1 after the production of 1 by C\({}_{2}\) and C\({}_{3}\) will not be acknowledged by V1, and V1 is said to have acknowledged the output of C\({}_{1}\) alone.