Self-Checking Combinational Circuits with Unidirectionally Independent Outputs

In this paper we propose a structure dependent method for the systematic design ofa selfchecking circuit which is well adapted to the fault model of single gate faults and which can be used in test mode. According to the fault model considered, maximal groups of independent and unidirectionally independent outputs of an arbitrarily given combinational circuit are determined. A parity bit is added to every group of independent outputs. A few additional outputs are added to every group of unidirectionally independent outputs. In the error free case, these groups ofunidirectional independent outputs together with their corresponding additional outputs are elements of a unidirectional error detecting code; for example, a Berger code or an r-out-of-s code. It is demonstrated how the pairs of (unidirectionally) independent outputs of a given circuit can be determined. A simple heuristic solution for this problem based on a modified circuit graph is also given. The maximal classes of (unidirectionally) independent outputs can be computed as cliques ofa dependency graph where the nodes ofthe graph are the outputs ofthe circuit. The applicability of the proposed method is demonstrated for the MCNC benchmarks circuits.


INTRODUCTION
The design of self-checking circuits [1][2][3] and the combination of methods for on-line error detection or concurrent checking and testing is of great interest now (s.e.g. [4]). It was first proposed in [5] that on-line error detection by duplication and comparison be combined with testing to use the same hardware in different operational modes. These ideas were further developed in [6'7] for an outputs of the monitored combinational circuit are the groups of outputs for which the parity is computed, duplicated, inverted, and compared with the parities of the original circuit. In normal operation mode, every single gate fault forcing an output to be erroneous for the first time will be detected. As well, every single gate fault will be detected in test mode. In reality, however, there are only very few cases where all the outputs of a circuit can be combined into groups of independent outputs of a reasonable size which are implemented by completely different gates.
In [11], weakly independent outputs are used instead of independent outputs for the design of self-testing circuits. Low cost implementations of self-testing circuits are very often possible, but in on-line mode faults may only be detected with some degree of latency and the circuits are not selfchecking.
As a generalization of [8], we propose in this paper a structure dependent method for the systematic design of self-checking combinational circuits which is well-adapted to the fault model of single gate faults and the structure of the considered circuit. Groups of independent outputs as well as groups of unidirectionally independent outputs are determined. Two outputs are unidirectionally independent with respect to a given fault if, in the presence of this fault either both outputs are correct, only one output is erroneous, or both the outputs are unidirectionally erroneous.
In normal operation mode, the proposed circuits are self-checking with respect to all single gate faults. In test mode, these error detection circuits guarantee a 100% fault coverage for all nonredundant single stuck-at-0/1 faults.
In this paper, a given combinational circuit is considered. In [12] a given circuit is modified by use of a special input (output) encoding. The proposed encoding technique guarantees that all internal single stuck-at faults as well as all single stuck-at faults of the input lines will result either in single bit errors or in unidirectional multibit errors of the outputs of the modified circuit. The rest of the paper is organized as follows.
In section 2, the basic notions and notations such as unidirectionally independent outputs, maximal groups of tlnidirectionally outputs, and generalized circuit graph are given. Basic theorems useful for the determination of independent outputs and unidirectionally independent outputs are also presented. In section 3, it is shown how independent and unidirectionally independent outputs can be used to design self-checking circuits. A few additional outputs are added to every group of unidirectionally independent outputs. In the error free case, these groups of unidirectionally independent outputs are elements of an error detecting code which detects all unidirectional errors. Every group of independent outputs is checked by a parity bit. In section 4, it is explained how pairs of (unidirectionally) independent outputs can actually be determined. The determination of maximal groups of (unidirectionally) independent outputs can be reduced to the standard graph-theoretical problem of the determination ofmaximal cliques of a dependency graph, where the nodes of the graph are the outputs of the circuit considered.
In section 5 experimental results for benchmark circuits are given.
The notion of unidirectionally independent outputs is introduced in the following definition. DEFINITION The outputs Yi and Yk are called unidirectionally independent with respect to the fault Cj E and with respect to a subset X c_ X of the input set X if we have, for x E X, either 1. fi(x) fi(j, x) and f(x) f(j, x) or 2. (fi(x)--fi(bj, x) and fk(X) fk(bj, X)) or (fi(x)-7/= fi(j, x) and fk(X) fk(j, X)) or 3. fi(x)#fi(j,x) and fk(x)fk(j,x) and fi(x)= fk(X).
According to this definition, two outputs are unidirectionally independent if they are both correct, if only one of them is erroneous, or if they are both unidirectionally erroneous. In the last case, both outputs are changing from 0 to or from toO. Independent outputs are a special case of unidirectionally independent outputs. Outputs are independent if only the conditions and 2 of Definition are fulfilled. Thus two outputs are independent if they are either both correct or if only one of them is erroneous at a time.
In the following we sometimes omit the subset X, especially if this subset is not specified. Now we generalize the definition of a pair of unidirectionally independent outputs with respect to a set of faults and a set of outputs. DEFINITION 2 The outputs Yi and Yk are called unidirectionally independent with respect to a set of faults if these outputs are unidirectionally independent with respect to every fault Cj . DEFINITION 3 The outputs Yi,''',Yir form a group of unidirectionally independent outputs if every pair of these outputs is unidirectionally independent. Similar definitions can be given for independent outputs. Independent outputs can be determined by use of the generalized circuit graph introduced in [9].
In a similar way, unidirectionally independent outputs can be determined by a modification of this generalized circuit graph. This will be explained now.
A combinational circuit C can be described by the connections between outputs and inputs of its logical gates. The gates and the direct outputs of the circuit are called "elements" of the circuit. These elements can be combined into maximal classes Ci of elements with one output. The maximal classes Ci are identified with the nodes Ni of the generalized circuit graph G. A node N1 of this graph G is connected with a node N2 by an directed edge directed from N1 to N2 if the output of the class C1 is connected to one of the inputs of the gates of the class C2. The maximal classes of elements with one output corresponding to the nodes of the generalized circuit graph can be determined as follows" 1. Create a subset for each non-fanout output of the circuit, and mark each element. 2. If the output of an element is connected only to marked elements of a single, already existing subset, add the element to the subset and mark the element. 3. If the output of an element is connected only to already marked elements not all belonging to the same subset mark this element and create a new subset containing this element. The element is the output of the newly opened subset. 4. Continue until all elements are marked and belong to a subset.
In the next step the circuit graph G (N, V) will be modified into the modified circuit graph G =(N', V'). In addition to the nodes N of the circuit graph G, a node nl,...,nm is assigned to every output Yl,..., Ym of the circuit ft. Inversions at an input of the output element of Ni as well as inversions of the output of the output element of Nk are not considered for the marking of the edge from Ni to Nk. Thus, two nodes of the modified graph G' are connected by at most two edges, a marked one and an unmarked one.
As an example we consider the combinational circuit of Fig. 1, which implements the following Xl X2 five Boolean functions: The modified generalized circuit graph is shown in Fig. 2 from the node N3 to the node N9. The first edge corresponds to a path with one inversion (an odd number of inversions) from element 3 to element 20 via element 9. The second edge via element 11 has no inversion (an even number of inverversions). Similarly, as in [9], a node Ni of the modified generalized circuit graph is called structural essential for the node Nk if there is at least one path from Ni to Nk. If there is no path from Ni to Nk the node Ni is called structural non-essential for the node Nk.
The output of the output element ej of the maximal class C corresponding to the node N will be denoted by zj. The upper index r of e is the number of the element in the circuit fc if the elements of the circuit are numbered.
We are mainly interested in outputs which are (unidirectionally) independent with respect to functional faults of single gates (single gate faults).
The maximal classes of elements with one output are very useful notions to describe these faults. (1') F' i,k;j dzj dzj For practical applications, the following sufficient conditions for the determination of (unidi-rectionally) independent outputs with respect to a node N of the modified generalized circuit graph are of interest. CONDITION 2 The outputs Yi and Yk are unidirectionally independent with respect to the node Nj if 1. N is structural non-essential for at least one of the output nodes ni or nk, or 2. all the path's from Ni to ni and from N to ng in the modified generalized Graph G' contain either an even number of marked edges or an odd number of marked edges. CONDITION 2 The outputs Yi and yg are independent with respect to the node N if Nj is structural non-essential for at least one of the output nodes ni and n.
Example By use of Condition 2, the outputs Y and YE can be dependent with respect to the node N3, and the outputs y3 and Y5 can be dependent with respect to the node N4. To decide whether or not they are unidirectionally independent, we compute dye dyl Thus the outputs ya and Y5 are unidirectionally independent and the outputs Y and Y2 are not.
The following theorem is of great practical interest for the determination of unidirectionally independent outputs. PROPOSITION 3 Two outputs Yi and Yk are (unidirectionally) independent with respect to the set of all single gate faults if they are (unidirectionally) independent with respect to all nodes Nj of the generalized circuit graph. If the outputs of a group Yj are independent only a single parity bit vj is added. In Fig. 3 Y is assumed to be a group of independent outputs. Therefore only a single parity bit is added to this group.
If the outputs of a group Yi are unidirectionally independent the ti additional outputs are determined in such a way that the outputs Yi,... ,'Yini, Vh,..., Vhti are elements of an error detecting code for all unidirectional errors. In Fig. 3 the group Yh is supposed to be a group of unidirectionally independent outputs. Thus the outputs Vh,..., Vhti are added.
A possible error detecting code is a Bergercode [3] or an s-out-of-r code [141 where s is the number of l's and r is the number of bits, r ni + ti.
To determine the elements of an s-out-of-r code we. consider all the possible binary ni-tupels of the  These additional outputs will be jointly implemented by use of an additional combinational circuit fca as shown in Fig. 3. Every fault in the additional circuit fea will be detected.
Every extended group Yi is checked by use of a self-checking code-checker [2'3'15'16] with two outputs ui, ui2 with ui =-ui2 in the fault free case. These outputs are compacted by a two-rail checker TRC with 2h inputs and 2 outputs U1 and U2, with U1 U2 in the fault free case. Every single gate fault of the circuit f and every fault of the circuit fe will be detected by an output ui ui2 for some if it forces at least one of the outputs of fc or fa to be erroneous for the first time. Since ui ui: implies U U2 at the output of the two-rail checker, every single gate fault of f and fca will be immediately detected. In Fig. 3 the group Y is checked by a selfchecking parity checker SCP, and the group Yh is checked by a self-checking ,code checker SCC for the corresponding code. 4 T1 --{N1,N2, N3,N6, N8},T' (,   T2 :{N2, N3, N6, N7, N9}, T {N3 }  T3 ={N, N2 F3,5;4 z4 (x)" z4 (x)(y3(x) q) ys(x)) 0, the outputs Y3 and Ys are unidirectionally independent and the outputs Y and Y2 are not unidirectionally independent. Now we describe how (maximal) sets of independent outputs can be determined. To this end we draw a first dependency graph G= (N1, gl). The nodes N of G are the outputs y,..., Yn of the considered circuit fe. Two nodes Yi, Y N are connected by an edge if the pair of nodes is (graphically) independent. Every group of independent outputs corresponds to a complete subgraph of G1, i.e. a clique of G1. The determination of a complete subgraph is a standard problem of graph theory.
In a similar way, we determine sets of unidirectionally independent outputs. We draw a second dependency graph G 2 N 2 N 2 Q..N_ V2) The nodes of G 2 are again the outputs Y1,. Yn of the considered circuit fe. Two nodes Yi,Yj E N 2 are connected by an edge if these nodes are (graphically) unidirectionally independent. Every group of unidirectionally independent outputs corresponds to a complete subgraph of__G2, i.e. a clique of__G 2. In the following example we restrict ourself to the graphically independent and graphically unidirectionally independent outputs. The graph G of graphically independent pairs of outputs of fe is given in Fig. 4. The three possible maximal complete subgraphs consist of the nodes nl and ns, n2 and n5 and n4 and ns. Fig. 5 shows the graph G 2 of the graphically unidirectionally FIGURE 4 Graph of independent outputs.  The resulting circuit is self-checking.   (1) and (1') are computed by use of the program system MIS [17].

EXPERIMENTAL RESULTS
The corresponding Boolean functions are represented as BDD's. Graphically (ufiidirectionally) independent outputs are always (unidirectionally) independent. Therefore, the number of pairs of (unidirectionally) independent outputs is always greater than or equal to the number of pairs of graphically (unidirectionally) independent outputs. 9 10 11  12  4  4  15  5  5  75  5  5  107  5  5  <1  5  5  31  3  10  13  119  3  3  62  2  3  5  The minimal number of mutually disjoint groups of independent and unidirectionally independent outputs go are given in column 8.
Groups of unidirectionally independent outputs are monitored by Berger Codes. The number of necessary additional bits bB is represented in column 9. Groups of independent outputs are checked by additional parity bits. The number of additional parity bits bP is given in column 10. The total number of check bits bT (Berger code bits and parity bits) is given in column 11 of Table I Then all the outputs of the circuit fea are jointly optimized by use of the standard MIS-algorithm script.rugget. The necessary computing time on a SUN Workstation Spark 10 including the determination of pairs of independent and unidirectionally independent outputs, the determination of maximal complete subgraphs and the synthesis of the additional circuit was in the range of 0.33 to 3376.46 seconds. The average additional area overhead is 71%. 6. CONCLUSIONS In this paper a new structure dependent method for the design of self-checking and self-testing combinational circuits was proposed. Maximal groups of independent outputs and unidirectionally independent outputs are determined. It is shown how pairs of (unidirectionally) independent outputs can heuristically be determined by a simple graphtheoretical algorithm. Maximal groups of (unidirectionally) independent outputs can be computed as cliques of a dependency graph, which is a standard graph-theoretical problem. A single parity bit is added to every group of independent outputs. A few additional outputs are added to every group of unidirectionally independent outputs in such a way that these groups of unidirectionally independent outputs and the corresponding additional outputs are elements of a unidirectional error detecting code. This method is explained in detail for a simple example. The applicability of the proposed method is demonstrated for the MCNC benchmarks.
St. Petersburg (formerly Leningrad), Russia. In 1982 he became a professor, and in 1989 a vice president of this university. He published as an author and coauthor about 250 scientific papers and 8 books in russian language in the field of synthesis, diagnosis, self-checking circuits and control systems for railway transportation. Since 1992 he is a visiting professor of the Max-Planck Fault Tolerant Computing Group at the University of Potsdam, Germany. He is a member of the