Partial-scan built-in selftesting sequential circuit

Abstract: The testability of a near-acyclic circuit (14) can be enhanced by the addition of one or more control points and observation points to allow for increased observability and controllability of selected nodes (28).The control points and/or test points are added by first computing the controllability, observability and fault detection probability at each node. A fault is then selected. If either the controllability or observability for such fault is not inside a prescribed value range, and the fault detection probability is below a prescribed value, then either a control point and/or an observation point may be added.

Description: This invention relates to digital circuits having an improved ability to be electronically tested, and to methods for modifying a near-acyclic circuit to improve its testability. The advent of miniaturization has led to ever denser electronic circuits. As the density of electronic circuits has increased, so too has the complexity and cost of testing. In an effort to reduce the cost and complexity of testing digital integrated circuits and, particularly, random logic digital circuits, various techniques such as partial-scan testing have been developed. Partial-scan testing is practiced by partitioning the circuit such that selected sequential elements (i.e., flip-flops) in the circuit are arranged as a shift register. Initially, the circuit is placed in a test mode and a known stream of test data is shifted into the shift register configured of the selected flip-flops, usually referred to as "scan" flip-flops. Thereafter, the integrated circuit is placed in its normal operating mode so as to react to the test data. Finally, the integrated circuit is returned to the test mode and the test data (as modified by the operation of the integrated circuit) is shifted out from the scan flip-flops for comparison to a reference data stream. While partial-scan testing achieves very high fault coverage, there is a need to increase the level of fault coverage even higher. One traditional approach to increasing the level of fault coverage in built-in, self-test circuits has been to add "test points" at various nodes in the circuit. For purposes of discussion, a test point is defined as being either an observability point (i.e., a line coupled to a circuit node to facilitate observation of the signal at that node) or a control point, (i.e., either an AND or OR gate inserted between the node, and a line supplying the node with signals). Placement of test points in a built-in, self-test circuit presents little difficulty when the circuit is comprised purely of combinational elements (i.e, AND, OR, NAND, NOR, NOT and XOR gates). For such combinational circuits, test points can be selected using a known procedure for calculating a probabilistic measure of the controllability and observability of the nodes in the circuit. The controllability of a node is defined as the ability to excite a fault (e.g., a stuck-at-1 or a stuck-at-0 fault), whereas the observability of a node is defined as the ability to observe the effect of a fault at the node. In contrast, placement of test points in a sequential circuit (i.e., a circuit containing one or more flip-flops) is a far more difficult problem, especially because the controllability-observability probabilistic calculations employed for test point determination in combinational circuits have traditionally been deemed inapplicable for sequential circuits. One current approach to adding test points in a sequential circuit is to perform fault simulation to determine optimal test point placement. Fault simulation is time consuming and quickly becomes impractical for even moderately large sequential circuits. Thus, there is a need for a technique for enhancing the testability of a near-acyclic circuits by adding test points to such a circuit in an efficient manner. According to one aspect of this invention there is provided a digital circuit as claimed in claim 1. According to another aspect of this invention there is provided a method as claimed in claim 6. Brief Description of the Drawing FIG. 1 is a block schematic diagram of a partial-scan, built-in, self-test circuit; FIG. 2 is a block schematic diagram of a portion of the circuit of FIG. 1 following decomposition; FIG. 3 shows a region of the portion of the circuit of FIG. 1 influenced by an observation point; FIG. 4 shows a portion of the circuit of FIG. 2 as it exists before the addition of an observation point; FIG. 5 shows the circuit portion of FIG. 4 following the addition of an observation point; FIG. 6 shows a portion of the circuit of FIG. 2 which is influenced by a control point; FIG. 7 shows a portion of the circuit of FIG. 2 as it exists before the addition of a control point and; FIG. 8 shows the circuit portion of FIG. 7 following the addition of a control point. Detailed Description FIGURE 1 illustrates a partial-scan, built-in, self-test circuit 10 which has been partitioned into a partial-scan chain 12, comprised of a plurality of individual flip-flops 13 coupled to form a shift register, and a near-acyclic, non-scan chain circuit portion 14, whose details are described in greater detail with respect to FIG. 2. The partial-scan chain 12 is similar to the scan chain described in Agrawal et al. patent No. US-A-5,043,986 and is tested by the technique of partial-scan testing as described in that patent. To accomplish built-in self-testing of both the scan chain 12, as well as the circuit portion 14, the system 10 includes a test pattern generator 16 in the form of a Linear Feedback Shift Register (LFSR) that generates a sequence of random test patterns (i.e., a plurality of successive sets of test vectors). The test patterns from the LSFR 16 are multiplexed by a set of multiplexers 18 with one or more primary input signals (i.e., normal operating mode signals) generated externally and intended for input to the circuit 14 (including the scan chain 12). The output of the multiplexer 18 is coupled to the circuit 14. Test patterns from the LSFR 16 are multiplexed by a second multiplexer 20 with an input signal SCANIN received by the system 10. The output of the multiplexer 20 is coupled to the first of the flip-flops 13 in the scan chain 12, and in response to the signal from the multiplexer, the scan chain produces an output signal SCANOUT. The output of the scan chain 12 is also coupled to a Multiple Input Shift Register (MISR) 22 which serves to successively compact the output signal of the scan chain with the output signal generated during a previous interval. The MISR 20 also serves to compact output data generated by the circuit 14 with the output data generated previously by the circuit. The MISR 20 compacts the output signals from the scan chain 12 and from the circuit 14 to yield a bit stream referred to as a "signature" which is descriptive of the operation of the system 10. By comparing the signature of the system 10 to that for a fault-free system, the existence or absence of defects will be revealed. As will be discussed in greater detail with respect to FIG. 2, the circuit portion 14 is typically comprised of one or more sequential elements 24 (i.e., flip-flops) and one or more combinational elements 26 (i.e., gates), the elements being joined so as to create at least one node 28. The exact nature of the elements 24 and 26 and the manner in which they are coupled is dependent on the functions to be performed by the system 10. The manner in which the elements 24 and 26 are coupled is not relevant to the invention, except that the circuit 14 has no flip-flop loops other than self-loops, as will be explained in greater detail later. While the partial-scan, built-in, self-test system 10, when configured as described, will typically have a very high fault coverage (i.e., the percentage of faults that the system can detect), it is often desirable to increase the fault coverage. One method for increasing the level of the fault coverage is selectively adding one or more "test points" within the circuit portion 14. A test point may consist of either an "observation point" (i.e., a line coupled to one of the nodes 28 so as to allow the signal at the node to be observed) or a "control point" (i.e., either an AND or OR gate (not shown) interposed between the node and the signal driving it to allow the signal at the node to be controlled). In the past, the addition of test points within a network, such as the network 14, has typically been accomplished by means of fault simulation, often a very slow process. We now disclose a method for enhancing the testability of a special class of sequential circuits, known as near-acyclic circuits, which are defined as having a corresponding directed graph which does not contain any cycle whose length is greater than one. Thus, the circuit portion 14 is a near-acyclic circuit because it contains no flip-flop loops (i.e., the circuit portion does not contain two or more daisy-chained flip-flops 24). However, the circuit portion 14 may contain one or more self-looping flip-flops 24 which have their output coupled directly to their input and still be considered a near-acyclic circuit. (In accordance with my co-pending patent No. EP-A-0 549 130 such self-looping flip-flops would be replaced with initializable flip-flops for testing purposes.) Testing of the circuit 10 is enhanced by the appropriate insertion at least one test point in the circuit portion 14 using a probabilistic measure of testability described in greater detail below. In order to accomplish a probabilistic measure of testability of the 10, the circuit portion 14 is first decomposed (modelled) in order to simplify the probabilistic calculations. Referring to FIG. 2, the circuit portion 14 may be modelled by grouping the combinational elements 26 and non-self-looping flip-flips 24 into logic cones 30, which have one or more inputs and no more that one output. (A self- looping flip-flop 24 is defined as a flip-flop which has its output coupled to its input, either directly, or through one or more gates 26). Each logic cone 30 whose output serves as a primary output of the circuit 14 (such as each of the logic cones located at the right-hand side of FIG. 2) is designated as a primary output block. For each flip-flop 24 which is self-looping, the combination of the flip-flop and a logic cone 30 whose output is an input to the flip-flop, is modelled as a self-loop flip-flop block 32. As seen in FIG. 2, a self-loop flip-flop block 32 may contain two or more overlapping logic cones 30 (i.e., the cones may share common inputs), each cone having an associated flip-flop 24. However, only one flip-flop 24 within such a block 32 may have its output coupled to the overlapping (i.e., common) inputs. Otherwise, the circuit portion 14 would no be a near-acyclic circuit. CONTROLLABILITY CALCULATION Once the circuit 14 has been decomposed in this fashion, then the controllability of each node 28, representing the output of a corresponding gate 26 in FIG. 2, is determined. The controllability of a node 28 (expressed by the term C(28)) is defined as the probability of effecting a certain signal value at that node. For purposes of discussion, the controllability will be defined as the probability of effecting a logic "1" at a node. In the case where the gate 26 is a two-input AND gate, the controllability of the node 28 (the output of the gate 26) may be expressed mathematically as: C(28) = C(a) * C(b) where C(a) and C(b) are the controllability of the signals at each of the AND gate inputs (a) and (b), respectively. In the case where the gate 26 comprises a two-input OR gate (not shown) rather than an AND gate, then the controllability of the node 28 is given by the relationship: C(28) = 1 - [(1-C(a))*(1-C(b))] For a single-input NOT gate (not shown), the controllability is given by C(28) = 1-C(a) where C(a) is the controllability of the input to the NOT gate. The controllability for a two-input NAND gate (not shown) may be calculated by treating the gate as the serial combination of an AND gate and a NOT gate whose controllabilities are given by equations (1) and (3), respectively. The controllability of a NOR gate (not shown) may be computed in a similar fashion. As may be appreciated, computing the controllabilities in this fashion is an iterative process which is commenced by first calculating the controllability for each node 28 associated with each gate 26 whose input forms a primary input to the circuit 14, the primary inputs being those inputs at the left-hand edge of FIG. 2. Thus, the controllability computation would be commenced on those gates 26 closest to the left-hand edge of the drawing. For each such gate 26 whose input serves as a primary input, the controllability at that input (i.e., the probability of obtaining a prescribed logic value) is accorded the value 0.5, indicating that it is equally likely to get a logic "1" for example as a logic "0". Computing the controllability of each flip-flop 24 is a more complex task than for each combinational gate 26, owing to the memory-like nature of the flip-flop. However, the task of computing the controllability of each flip-flop 24 can be simplified by modelling each non-self-loop flip-flop simply as a short-circuit between its D and Q outputs without regard to the clock input. While this approximation introduces some inaccuracy, the computation is greatly simplified. By approximating each flip-flop 24 as a short circuit, the controllability C(W) of a node 28 at the Q output of a self-loop flip-flop is given mathematically by C(W) = C(0)/(1- C(1) + C(0)) where C(0) is the controllability at the flip-flop D input after assigning a 0 controllability to the Q output and disconnecting the Q output from that of the block 32, and C(1) is the controllability at the flip-flop D input after assigning a probability of 1 at the Q flip-flop output. In computing C(0) and C(1), the statistical dependence among controllabilities of reconvergent fanout branches is ignored and the above-described controllability calculation technique for combinational gates is used. Using the approximation discussed above, the controllability of each node in each self-loop flip-flop block 32 is calculated using the following procedure: 1. Assign a controllability value of 0 to the Q output of the self-loop flip-flop 24 in the self-loop flip-flop block, and using the techniques discussed above, compute the controllability of all nodes 28 in the logic cone 30 associated with the block, including the controllability of the D input of the self-loop flip-flop whose controllability is C(0); 2. Assign a controllability value of 1 to the Q output of the self-loop flip-flop 24 in the self-loop flip-flop block 32 and update the controllabilities of each "private" node 28 to reflect the controllability change at the Q flip-flop output, with the new controllability at the D flip-flop input being C(1); (A node 28 is deemed "private" if it lies in a path between the self-loop flip-flop 24 and an input of a gate 26 inside the self-loop flip-flop block 32 and connected to the output of the flip-flop.) 3. Assign the value of C(0)/(1-C(1) + C(0)) as the controllability of the Q output of the self-loop flip-flop 24 and update the controllability of all private nodes 28 to reflect the change. In both steps (1) and (2), only the controllabilities of those nodes 28 of the associated logic cones 30 are computed. During step (3), however, the effect of the change in the controllabilities is propagated outside the associated logic cone 30. OBSERVABILITY CALCULATION Once the controllability of each node 28 has been computed, then each node's observability is computed. The observability of each node 28 (expressed by the term O(28)) is defined as the probability that a fault present at that node can be observed through one of the primary outputs of the circuit 14. For example, the observability of a node 28, representing one input of a two-input AND gate 26, may be expressed mathematically by the relationship: O(28) = O(output) * C(a) where O(output) is the observability of the output of the AND gate and C(a) is the controllability of the other AND gate input. In the case where the gate 26 is an OR gate rather than an AND gate, the observability of the node 28, representing one of the OR gate inputs, is given by the expression: O(28) = O(output) * (1-C(a)) The observability at the output of a NOT gate (not shown) is the same as that of its input. Computation of the observability of each node 28 is accomplished in a manner similar to the manner in which the controllability of each node is performed, except that the observability computation is done from the primary circuit outputs (i.e., from the right-hand side of FIG. 2) to the primary circuit inputs (i.e., the left-hand side of the figure). The computation of the observability of each node 28 within each self-loop flip-flop block 32 requires a slightly different procedure from that described for computing the controllability of each node in the block. To compute the observability of each node 28 in each block 32, the following steps are executed: 1. Assign O(W), the observability at the output of the self-loop flip-flop block 32, to the O(Q), the observability of the Q output of the self-loop flip-flop 24 in the block, if there exists a branch W (see FIG. 2) which links the block somewhere else; otherwise assign zero to O(Q); 2. Assign O(Q) to O(D), the observability of the D input of the self-loop flip-flop 24 in the block 32; 3. Compute only the observabilities of the private nodes in the block from the self-loop flip-flop D input on back, using the technique described previously until O(B), the observability along a feedback loop B in the block is computed; 4. Calculate the O(Q) using the relationship: O(Q) = 1 - [(1 - O(B))*(1 - O(W))] 5. If O(Q) - O(D) /(O(D))> x % (where x is a threshold percentage, typically between 3 and 5) then go to step (2); otherwise 6. Assign O(Q) to O(D); and 7. Compute the observability of all of the nodes 28 in the cone 30 of self-loop flip-flop block 32. Steps (2) through (5) are repeated until the percentage difference between the two consecutive values of O(Q) is smaller than the threshold percentage x. The controllability and observability of each node 28 calculated in the manner described above are collectively referred to as the Station State Controllability Observability Measure (SSCOM). DETECTION PROBABILITY After the controllability and observability (i.e., the SSCOM) of each node 28 are calculated, then the detection probability dp f for a fault f (e.g., a stuck-at-1 or stuck-at-0 fault) at a given node 28 is computed by the following relationships: dp f = C(28) * O(28) if the fault is a stuck-at-zero fault; otherwise dp f = (1-C(28)) * O(28) if the fault is a stuck-at-1 fault. The detection probability dp f ( t ) of a fault f for t random patterns is given by the relationship: dp f ( t ) = 1 -(1 - dp f ) t The fault coverage fc ( t ) (i.e., the percentage of faults that can be detected) can be expressed by the following relationship: fc(t) = (1/| F |) * Σ dp f ( t ) where summation is for all faults in the fault set F and |F| is the fault size. TEST POINT INSERTION The testability of the circuit 10, and particularly, the testability of the circuit portion 14, may be enhanced by adding a test point, either in the form of an observation point 34, as seen in FIG. 3, or a control point 36, as seen in FIG. 6. An observation point 34 is a point at which the fault at each of a plurality of other nodes can be observed. For example in FIG. 3, the observation point 34 has been selected (in the manner described hereinafter) such that the fault at each of the nodes 28 lying in the shaded region of the circuit 14 can be observed at the observation point. The exact manner in which each observation point 34 is added is straightforward. Referring to FIG. 4, which illustrates a part of the circuit portion 14, assume that a good location to observe faults is at a node 28 at the junction between a pair of gates 26. Referring to FIG. 5, to provide an observation point 34 associated with the node 28, a line 36 is provided to couple the node to the observation point 34. In practice, each observation point 34 is typically located so as to be physically accessible. Referring to FIG. 6, a control point 36 is, in actuality, an element (described in greater detail with respect to FIG. 8) which serves to influence the controllability of a plurality of nodes 28 in the circuit. As seen in FIG. 6, the control point 34 has been selected (in the manner described below) to influence the controllability of each of a plurality of nodes 28 lying within the cross-hatched region of the circuit 14. Referring now to FIG. 7, which shows a part of the circuit portion 14, assume that it has been determined that the node 28, at the junction between a pair of gates 26, has been found to desirably influence the controllability of other nodes in the circuit portion 14 (not shown). FIG. 8 depicts the part of the circuit portion 14 shown in FIG. 7 with the addition of a test point 36, in the form of a two-input control logic gate interposed between the gates 26, such that node 28 lies at a first input of the control logic gate and a second node 28' lies at its output. As may be appreciated, the control logic gate 36 of FIG. 8 serves to control the state of the signal at the node 28' in accordance with the signal at the node 28 and in accordance with the signal r at the second input of the control logic gate. The control logic gate 36, which forms the control point, may either take the form of an OR gate, as seen in FIG. 8, or an AND gate (not shown). The particular structure of the gate 36 depends on the controllability of the node 28. If the controllability of the node 28, as calculated by the SSCOM technique discussed previously, is less than a prescribed value (i.e., < 0.5), the gate 36 takes the form of an OR gate. On the other hand, if the controllability at the node 28' is above a prescribed value (i.e., > 0.5), the gate 36 is chosen as an AND gate. TEST POINT SELECTION As discussed, the goal of adding one or more test points, each taking the form of either an observation point 34 and/or a control point 36, is to increase the level of fault coverage. However, to avoid unnecessarily impacting the circuit 14, it is undesirable to add more test points than are needed to increase the level of fault coverage. The following method is employed to select test points to achieve a desired level of fault coverage during testing of the circuit 14 by the application of t random patterns generated by the test pattern generator 16 of FIG. 1 with the minimum number of test points: 1. Decompose the circuit portion 14, as shown in FIG. 2, into the primary output blocks 30 and self-loop flip-flop blocks 32. In the process of decomposition, the blocks are automatically arranged in increasing order of macro-level. The macro-level, as defined in terms of a node e in a near-acyclic circuit, such as the circuit portion 14, is defined by: ML( e ) = 0 if e is a primary input; or ML(e) = 1 + max (ML( k )) for all nodes k that feed node e directly if e is the input to a self-loop flip-flop 24; otherwise ML( e ) = max (ML( k )) 2. Replace all non-self-loop flip-flops 24 by a short-circuit between the flip-flop D input and Q output. 3. The controllability of the nodes (28) in the circuit portion 14 is computed, a block at a time, from the lowest macro-level (i.e., the blocks at the right-hand-most edge of FIG. 2) toward the highest macro-level (i.e., the block at the right-hand-most edge of FIG. 2). 4. Select the fault f at a designated node 28 such that the fault detection probability for that fault dp f < 1/ t and CC( F ) is less than (1/ t ) h 1 , where CC( f ) is equal to C(28), the controllability of the node, if the fault at the node is a stuck-at-0 fault, or 1-C(28) if the fault at the node is a stuck-at-1 fault), and where h 1 is a constant in the range of [1/2, 1] (with 2/3 being a good value). Another criterion is that the node 28 associated with the fault must also have the smallest level vector among the faults satisfying the above conditions. The level-vector of a node 28 is a two-tuple and is defined as: LV(28) = 〈ML(28), ml(28)〉 where ML(28) is the "macro-level" for a node (28) as defined earlier and ml(28) is the node micro-level.The micro-level ml(28) of a node 28 is given by the relationship: ml(28) = 0 if the node 28 is a primary input, or the output of a self-loop flip-flop 24; or ml(28) = 1 + max(ml( k )) for all of the nodes k that feed the node 28 directly. 5. Once the node 28 has been selected in accordance with the requirements of step (2), the a control point, in the form of gate 36 (see FIG. 6), is added at the node. The gate 36 is chosen to be an AND gate when CC( f ) > 0.5 or an OR gate when CC( f ) < 0.5. The steps (3), (4) and (5) are repeated until a desired fault coverage is reached or no more nodes 28 can be selected. In the event that no more of the nodes 28 can be selected, but the desired level of fault coverage has not been achieved, then the following second procedure is executed: 1. Compute the controllability, observability and detection probability for the faults of the nodes 28 using the SSCOM methods described previously; 2. Select a fault associated with a given node 28 such that dp f < 1/ t and CC(F) is less than (1/ t ) h 2 , where h 2 is a constant in the range of [1/2, 1] (with 2/3 being a good value), and the node 28 associated with the fault has the largest level vector among those faults satisfying these conditions; 3. Insert an observation point 34 if the fault appears at a node 28 which is at the output of a gate 26, otherwise insert a control point 36 if the fault is associated with a node at an input of a gate. The control point 36 is inserted at a location close to the fault such that the associated node 28 has its observability increased by the greatest amount. 4. Steps (1)-(3) of this second procedure are repeated until the desired level of fault coverage is achieved, or no more nodes 28 can be selected using the criteria of step (2). The first procedure is intended to better detect hard-to- control faults by the addition of one or more control points 36. The second procedure is intended to detect hard-to-observe faults by the addition of one or more observation points 34. The rationale for adding control points 36 prior to the addition of observation points 34 is that the addition of a control point may in fact increase the observability of one or more nodes without the need to add an observation point 34. Moreover, since the control points 36 are added in ascending level-vector order, the number of such points required is reduced because the insertion of a control point can improve not only the controllability of a given node, but the nodes which are in its fanout cone as well. Note that the observability of a node 28 can be improved by inserting either an observation point 34 or a control point 36. The foregoing discloses a technique for improving the testability of a near-acyclic circuit 14 by the selective addition of at least one test point, either in the form of a control point 36 and/or an observation point 34 to increase the level of fault coverage. It is to be understood that the above-described embodiments are merely illustrative of the invention. Various modifications and changes may be made thereto by those skilled in the art .

Claims: A digital circuit (10) having an improved ability to be electronically tested, by test signals applied thereto, comprising: a sequential network (12,14) having a near-acyclic structure, the network having at least one node therein at which a fault may occur; a test pattern generator (16) coupled to the said network (12,14) for supplying successive test patterns thereto to cause the said network (12,14) to generate a response following receipt of each successive pattern; and an electronic logic block (22) coupled to the said network for compacting the response generated thereby; the said digital circuit being CHARACTERIZED BY at least one test point added to at least one node selected in the sequential network (12,14) for improving the testability of said sequential network (12,14) by increasing fault coverage during testing, said test point configuring said sequential network (12,14) such that said node has a separate one of its controllability and observability fault detection probabilities different from a prescribed value therefor and a detection probability below a prescribed value therefor prior to the addition of said test point. A circuit according to claim 1 wherein the test point comprises an observation point. A circuit according to claim 1 wherein the test point comprises a control point. A circuit according to claim 3 wherein the control point comprises an OR gate when the selected node has a controllability below a prescribed value. A circuit according to claim 3 wherein the control point comprises an AND gate when the selected node has a controllability above a prescribed value. A method for modifying a near-acyclic circuit (10) to improve its testability by adding at least one test point thereto to increase the level of fault coverage when the circuit is tested by applying a successive one of t random test patterns thereto, CHARACTERIZED BY the steps of: (a) computing the controllability and observability of each node in the circuit by the step of decomposing the circuit into self-loop flip-flop blocks, each containing a self-looping flip-flop, and primary output blocks containing no self-looping flip-flops; (b) computing further the controllability of each node in the circuit by the steps of: (i) replacing each non-self-loop flip-flop with a short circuit; (ii) computing the controllability of each self-loop flip-flop block from a lower macro-level toward a higher macro-level, one block at a time; and (iii) computing the controllability of each primary output block from a lower macro-level to a higher macro-level, one block at a time; (c) computing further the observability of each node in the circuit by the steps of: (i) computing the observability of each primary output block; and (ii) computing the observability of each self-loop flip-flop block; (d) selecting a fault for a given one of the nodes; (e) computing the detection probability for said fault at a node in accordance with the controllability and observability for that node; (f) adding a test point at a particular node when a separate one of the controllability and observability for the node is not within a prescribed value range for each value therefor and the detection probability is below a prescribed value therefor; and (g) repeating the steps (b)-(f) until either the fault coverage no longer increases or until no more faults can be selected. A method according to claim 6 wherein the test point which is added comprises an observation point. A method according to claim 6 wherein the test point which is added comprises a control point. A method according to claim 8 wherein the control point comprises an AND gate when the controllability of the node at which the control is to be added is above a prescribed value. A method according to claim 8 wherein the control point comprises an OR gate when the controllability of the node at which the control is to be added is below a prescribed value. A method according to claim 6 wherein only control points are added as long as no more faults can be selected and thereafter repeating steps (b)-(f), wherein either control points or observation points are added. A method according to claim 6 wherein the controllability of each self-loop flip-flop is computed by the steps of: (a) assigning a controllability value to the Q output of the self-looping flip-flop in the block to zero and then computing the controllability of all nodes in the block, including the controllability (C(O)) of the corresponding flip-flop D input; (b) assigning a controllability value of one to the Q outputs of the self-looping flip-flop and then updating the controllability of each node lying in the path of the self-looping flip-flop and an input of a gate in the block connected to the output of the self-looping flip-flop to reflect the controllability change at the self-looping flip-flop Q output, with the new controllability at the self-looping flip-flop D input now being C(1); and (c) assigning the value C(O)/(1 - C(1) + C(O)) to the controllability of the Q output of the self- looping flip-flop and then updating the controllabilities of said nodes lying in the path of the self-looping flip-flop and input of a gate in the block connected to the output of the self-looping flip-flop. A method according to claim 6 wherein the observability of each self-loop flip-flop is computed by the steps of: (a) assigning O(W), the observability of each self-loop flip-flop block, to the O(Q), the observability of the Q output of the self-loop flip-flop in the block if there exists a branch W which link the block somewhere else; otherwise assign zero to O(Q); (b) assigning O(Q) to O(D), the observability of the D input of the self-loop flip-flop in the block 32; (c) computing only the observabilities of each node lying in the path of the self-looping flip-flop and an input of a gate in the block connected to the output of the self-looping flip-flop in the block from the self-loop flip-flop D input back to each preceding node, until O(B), the observability along a feedback loop B in the block is computed; (d) calculating the O(Q) using the relationship: O(Q) = 1-[{1-O(B))*(1-O(W))] (e) calculating if O(Q) - O(D) / (O(D)) > a prescribed % then repeat step (b); otherwise (f) assigning O(Q) to O(D); and (g) computing the observability of all of the nodes in the self-loop flip-flop.

Inventors: LIN CHIH-JEN, LIN, CHIH-JEN
Applicants: AT & T CORP, AT&T CORP.
Application year: 1994
Main classification: G06F11
IPC codes: G01R31