USPatent applicationPatented

Fast error diagnosis for combinational verification

Granted 9 Dec 2003 · 2 office actions

Current assignee: NEC Corporation · originally AT&T Company

Law firm: Law firm · Log in to unlock

Attorney: Attorney · Log in to unlock

Inventors: Pranav Ashar, Aarti Gupta · Examiner: Albert Decady · AU 2133 · TC 2100

Application· this page
9425886
filed 25 Oct 1999
Publication
Not published
not published
Patent
US 6,662,323
granted 9 Dec 2003

Life of the application

12 dated events
⤢ drag to zoom20002002200420062008201020122014201620182020ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

A fast error diagnosis system and process for combinational verification is described. The system and process localizes error sites in a combinational circuit implementation that has been shown to be inequivalent to its specification. In the typical case, it is not possible to identify the error location exactly. The invention uses a diagnosis strategy of gradually increasing the level of detail in the analysis algorithm to ultimately derive a small list of potential error sites in a short time. The invention combines the use of simulation, Binary Decision Diagrams, and Boolean satisfiability in a novel way to achieve the goal. The previous approaches have been limited in that they have either been constrained to a specific error model unlike the present invention, or they are inefficient in comparison to the present invention. The present invention allows for the final set of error sites derived to be small, where that set contains the actual error sites, and is derived in a reasonable amount of time.

Description

8 parts
›This Application claims priority from a co-pending U.S…

This Application claims priority from a co-pending U.S. Provisional Application Serial No. 60/142,537, filed Jul. 7, 1999.

›BACKGROUND OF THE INVENTION · 1 of 2

1. Field of the Invention

The present invention relates generally to the process of determining faults in a circuit. More specifically, the diagnosis method is used to determine error sites in a combinational circuit that has been determined to be inequivalent to its specification.

2. Description of the Related Art

The need for design validation and early detection of errors is well recognized. Formal methods for combinational verification have gained wide acceptance in the digital hardware design community in the recent past. In fact, it appears that tools based on these techniques have captured significant market share from gate-level simulation tools. Arising out of this phenomenon is the opportunity to promote the use of automatic error diagnosis tools. Automatic error diagnosis is even more important in the context of automatic verification since, unlike in the case of the simulation of manually generated vectors, the designer usually has little up front knowledge of the functionality exercised by the error vectors generated as counter-examples by the formal verification tool. Because of this, there is a need for new techniques for error diagnosis in combinational verification.

In combinational verification, the equivalence between the Boolean expressions for the implementation and specification is checked. The use of Binary Decision Diagrams (BDDs) for combinational verification is common. (See, R. Bryant, “Graph based algorithms for Boolean function manipulation” IEEE Transactions on Computers, C-35(8):677-691, August 1986.) PODEM-based or Boolean satisfiability (SAT) based ATPG-like techniques can also be effective in many cases where BDDs cannot be used. (See, D. Brand, “Verification of large synthesized circuits”, Proceedings of ICCAD, pp. 534-537, 1993; S. Reddy, W. Kunz and D. Pradhan, “Novel verification framework combining structural and OBDD methods in a synthesis environment”, Proceedings of DAC, pp. 414-419, 1995; and J. Silva and K. Sakallah, “Grasp-A new search algorithm for satisfiability”, Proceedings of ICCAD, pp. 220-227, 1996). The use of combinations of BDDs and ATPG-like techniques has also been proposed. (See, J. Burch and V. Singhal, “Tight integration of combinational verification methods”, Proceedings of ICCAD, pp. 570-576, 1998; A. Gupta and P. Ashar, “Integrating a Boolean satisfiability checker and BDDs for combinational verification”, Proceedings of VLSI Design 98, pp. 222-225, 1998; J. Jain, R. Mukherjee and M. Fujita, “Advanced verification techniques based on learning”, Proceedings of DAC, June 1995; and S. Reddy, W. Kunz and D. Pradhan, IBID).

All these techniques basically try to prove that the XOR of the corresponding outputs in the two representations (the output of the “miter circuit”) is tautologically zero. The BDD-based method does so by building the BDD for the output of the XOR gate (the “error BDD”). SAT based methods typically represent the functionality of the miter circuit in Conjunctive Normal Form (CNF) and apply a branch-and-bound algorithm to exhaustively check if the output of the miter circuit can be set to ‘1’ (true) for any input combination.

If an error is found in the implementation, all the verification techniques are equipped to determine the vectors exercising the error (the “error vectors”). In the case of the BDD-based method, all the error vectors are encapsulated in the error BDD. In the SAT method, they are produced in the form of cubes. Diagnosis information can be derived by a detailed analysis of the internal behavior of the implementation circuit for these error vectors. Various techniques have been proposed to perform this task. Several of these techniques are discussed below.

Complementation Method

The complementation method uses the following technique: Given an error vector, it is simulated once on the implementation circuit and the value produced at each wire in the circuit is recorded. In the next step, for each wire in the circuit, the value on the wire is complemented and the effect of the complementation is propagated by simulation to the primary outputs. If the value on some erroneous output gets corrected by the complementation and the values on all the correct outputs remain unchanged, the wire that was complemented is considered a potential error site. Its count is correspondingly incremented by 1. After a large number of error vectors has been simulated in this manner, the wires with the largest counts are considered the most likely to be error sites. A heuristic could be to pick the 10% of the wires with the highest counts. In the case of a single error in the circuit, the actual error site is guaranteed to be one of the sites with the highest count. In the presence of multiple errors affecting the same primary output, the actual error sites are likely to have high counts, but are not guaranteed to have the largest count. (See, S. Huang, K-C Chen, and K-T Cheng, “Error Correction Based on Verification Techniques”, Proceedings of DAC, pp. 258-261, 1996).

The complementation method is simulation intensive. In general, each node in the transitive fanin cone of the erroneous output is a potential error site. Each error vector is simulated once for the entire circuit and then repeatedly for the fanout cone of each site being evaluated. Given a fixed amount of time, the quality of this method (and of the other methods described in this section) depends on the number of error vectors simulated. While it leads to the desired pruning out of non-error sites, its quality will suffer rapidly in a naive application as the size of the circuit, and thereby the number of potential error sites increases. To speed up this method, one needs to make the core simulation routines very fast and prune the number of candidate error sites before applying the method.

An example specification and its incorrect implementation are shown in FIGS. 1 and 2. FIG. 3 shows net h being complemented, and its fanout being simulated again for the error vector 001. It can be seen that the erroneous output z gets corrected as a result, while the correct output y remains unchanged.

›BACKGROUND OF THE INVENTION · 2 of 2

Path Backtrace Based Method

Another method that is used tries to identify error sites by tracing sensitized paths back from erroneous outputs for each error vector. (See, A. Kuehlman, D. Cheng, A. Srinivasan and D. LaPotin, “Error diagnosis for transistor-level verification”, Proceedings of DAC, pp. 218-223, 1994). As in the simulation-based method, a count is maintained for the number of error vectors for which a site is on such a sensitized path. Sites with the largest counts are considered the most likely to be the actual error sites. As in the simulation-based method, the error vector must be simulated once and the values noted for each wire. The difference is that instead of simulating repeatedly after complementation of each site, sites on sensitized paths to the erroneous output are identified in a single pass through the implementation circuit. On the other hand, this backtrace method is also likely to tag many more sites as potential error sites than the complementation method. As a result, it is faster, but results in less localization.

FIG. 4 shows the sensitized paths to the erroneous output being traced backward by Kuehlmann's method. The wires shown in gray have their counts incremented for the error vector 001. Note that in this case, all the wires would also have been tagged by the complementation method, except that the backtrace method does it in a single pass through the circuit.

X-Analysis Method

Unlike the backtrace method, the X-analysis method analyzes the circuit from the input for each error vector using a technique which is somewhat like what designers use when diagnosing errors manually. (See, M. Tomita, H. Jiang, T. Yamamoto and Y. Hayashi, “An algorithm for locating logic design errors”, Proceedings of ICCAD, pp. 468-471, November 1990). Given an error vector V, this method first tries to find a second vector V′ which is not an error vector and which differs from V in a single input bit. Also, V and V′ should produce the same value on the erroneous output in the implementation circuit and produce different values on that output in the specification. If such a vector pair is found, it is then simulated with an X on the input bit in which V and V′ differ. Since the output values differ in the specification, the specification output will produce an X. Since the implementation produces the same value at the erroneous output for V and V′, it will not have an X at that output. The gates at which an X value gets blocked and the gates in its transitive fanin are considered potential error sites by this method. As before, a count is maintained. A more detailed analysis of the paths leading to the blocked gates using the path-based backtrace method can lead to further pruning. Sites with the largest counts are the most likely to be the actual error sites. The goal is to analyze the implementation for as many vector pairs as possible.

FIG. 5 and 6 show the simulation of the input vector X 01 on the specification and implementation circuits. 001 is an error vector, while 101 is not. It can be seen that an X is produced at output y in the specification while a 0 is produced at y in the implementation. Since X propagation is blocked at nets o and p in the implementation, all gates in the transitive fanin of o and p will have their counts incremented by this vector pair.

The X-analysis method complements the backtrace method since it performs the analysis from input to output while the backtrace method performs the analysis from output to input. As in the backtrace method, the X-based method also identifies many more false error sites than the simulation method. A drawback of Tomita's method is that computing the vector pair from the error vector is a time consuming task—making it much slower than the backtrace method.

Vector Pair Computation Methods

The vector pair computation can be done in the following ways:

Simulation-based method: For each error vector, go through each input bit. Complement it and check if the specification output changes while the implementation output remains the same. If it does, this is a useful vector pair. This requires one simulation each of the specification and implementation circuits for each error vector, and one more simulation each of the two circuits per candidate input. The requirement of multiple simulations make this much slower than the backtrace method.

BDD-based method: Another approach for computing the vector pairs is to use BDD operations. If E is the error BDD encapsulating all the error vectors, S is the BDD for the specification output, and x is the candidate input, the set of all useful vector pairs for that input (in terms of the values on rest of the inputs) is given by the expression (S x XOR S x′ ). (E x XOR E x′ ). Naturally, this approach can only be used if the required BDDs are available.

SAT-based method: A third approach is to set up a Boolean formula based on the same equations as used in the BDD-based method. Solutions to the formula yield the desired vector pairs. The formula can be solved using a Boolean Satisfiability (SAT) solver like GRASP. (See, J. Silva and K. Sakallah, “Grasp-A new search algorithm for satisfiability”, Proceedings of ICCAD, pp. 220-227, 1996 for a discussion of GRASP).

Missing-Line Errors in X-Analysis Method

The X-analysis method has the drawback of not being able to handle missing-line errors effectively since it relies on propagation of X in the erroneous implementation. Consider the circuit fragment in FIG. 7 . The dotted wire on Gate 1 indicates the missing connection. It is clear that for the vector shown, the X is blocked at a gate not in the fanout of Gate 1 . As a result, Gate 1 is not flagged as a potential error site.

Other Methods

A number of other methods have been proposed in the past for error diagnosis in combinational verification. See, as examples: M. Abadir, J. Ferguson and T. Kirkland, “Logic design verification via test generation”, IEEE Transactions on CAD, vol. 7, no. 1, pp. 138-148, 1988; Y. Kukimoto and M. Fujita, “Rectfication method for lookup-table type FPGAs”, Proceedings of ICCAD, pp. 54-61, 1992; J. Madre, O. Coudert and P. Billon, “Automating the diagnosis and rectification of design errors with PRIAM”, Proceedings of ICCAD, pp. 30-33, 1989; K. Tamura, “Locating functional errors in logic circuits”, Proceedings of DAC, pp. 185-191, 1989; and Y. Watanabe and R. Brayton, “Incremental synthesis for engineering change”, Proceedings of ICCD, pp. 40-43, 1991. The above methods do not approach the effectiveness and general applicability of the three methods described above.

›SUMMARY OF THE INVENTION

One object of the present invention is to perform a diagnosis technique which maximizes the error site localization, ensures that the actual error sites are included in the sites identified, and takes a reasonable amount of time to do it.

According to the first aspect of this invention, a method of diagnosing an error in combinational verification of a Boolean expression of a circuit and a specification of said circuit is disclosed. The process step include: generating a first set of potential error sites causing a nonequivalence of the Boolean expression and the specification using a first technique that operates quickly; generating a second set of potential error sites, smaller in number than the first set of potential error sites, using a second technique that operates on the first set of potential error sites, where the second technique is slower than the first technique but more accurate; and finally, proving that a specific potential error site, contained in the second set of potential error sites, is an actual error site.

In another embodiment, the first technique is a X-Based method. In another embodiment the first technique is a backtrace method. Alternatively, the first technique is a combination of a backtrace method and a X-based method. Additionally, the second technique may be a complementation method.

In another embodiment, a method of proving that a potential error site is an actual error site causing a nonequivalence of an implementation circuit and a specification circuit is provided. The process steps include: inputting outputs of the specification circuit and the implementation circuit into a first miter circuit, that outputs a zero value if the outputs of the specification and implementation circuits are the same; forming a modified implementation circuit used to test the potential error site by replacing the potential error site with a multiplexor with data inputs being an original input to the potential error site and its complement, where the control of the multiplexor is the output of the first miter circuit; inputting outputs of the specification circuit and the modified implementation circuit into a second miter circuit, that outputs a zero value if the outputs of the specification and modified implementation circuits are the same; checking if the output of the second miter is always zero (for all possible input vectors), and determining that the potential error site is an actual error site when the output of the second miter is always zero. In another embodiment, an improved backtrace method of diagnosing an error in combinational verification of a circuit having sites containing logical gates is claimed. The steps of the method include: generating and simulating a 32-bit vector; reading the inputs and output for a particular gate of the logical gates, for each input determining bits of the vector for which the input and the output of the particular gate are the same; tagging the bits of the vector for that input path; and performing a bit-wise OR of said tagged bits from fanouts at each site to determine the contribution of each path connecting said logical gates.

Another embodiment is directed to an improved X-based analysis method of diagnosing an error in combinational verification of a circuit having sites containing logical gates. The steps comprise: dividing 32-bit words, serving as input vectors, into upper halves and lower halves; storing a vector pair in identical bit positions within the upper and lower halves of a particular word as complements for a given input of the inputs, and setting the upper and lower halves of the word to be identical for other inputs of the inputs; inputting the input vectors into the gate inputs; monitoring the gate output for each gate going backward from the output of the circuit through to the inputs of the circuit, determining if the gate outputs are the same bit-wise as the gate inputs; and incrementing a count value for each gate according to the number of said bits that are different.

›BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a correct specification of a circuit with a distinguishing vector.

FIG. 2 illustrates an incorrect specification of a circuit with a distinguishing vector.

FIG. 3 illustrates correcting of circuit of FIG. 2 to obtain the correct output.

FIG. 4 illustrates the Backtrace method applied to an incorrect circuit.

FIG. 5 illustrates a correct circuit with a vector pair.

FIG. 6 illustrates an incorrect circuit with a vector pair.

FIG. 7 illustrates the X-Analysis method applied to a circuit.

FIG. 8 illustrates a circuit for performing a proof for the final error site check.

FIG. 9 depicts schematically the overall flow of the process of the present invention.

FIG. 10 graphically represents the behavior of the three methods discussed.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 1 of 3

The present invention performs an error diagnosis by a method that gradually increases the level of detail in the analysis, in which fast-but-relatively-inaccurate methods are used initially, followed by accurate-but-slow methods. A final proof check is performed at the end.

Based on experience with the complementation, backtrace, and X-based methods, it is clear that the complementation method provides the maximum amount of localization but is the slowest. The backtrace and X-based methods are faster but result in less localization. The present invention uses the backtrace and X-based methods initially to reduce the number of potential error sites to a fraction of the total number of wires in the circuit.

These sites are then provided as candidates to the complementation method. As a result, the system or process has to evaluate and update the counts of a much smaller number of sites. As opposed to the prior art processes which operate independently, the present invention does not have to consider all nodes in the transitive fanin cone of the erroneous output as potential error sites.

If the “single-error” model is being followed, a final comprehensive but expensive proof check can be used after the complementation method. The complete flow of the present invention is shown in FIG. 9 .

The final test tries to formally prove that a given site is indeed an error site. Since it is expensive, it cannot be used very often. FIG. 8 shows the test in circuit form, where S is the specification circuit, I is the implementation circuit, I′ is a version of the implementation circuit modified to test a particular error site. “MITER” corresponds to a disjunction of the XORs of the corresponding outputs from S and I (or S and I′). The modification in I′ is to replace the given site with a multiplexor whose two data inputs are the net from the original site and its complement. The control input to the multiplexor is the output of the MITER of S and I. Basically, the circuit sets up a Boolean formula which checks that for each error vector (when MITER of S and I outputs 1), complementing the value at the given site results in correct output values (MITER of S and I′ outputs 0). If it doesn't, then the given site is not a true error site. Note that the idea is very similar to the complementation method. However, rather than relying on simulation of a finite number of error vectors, this test performs the proof implicitly for all error vectors. The formula itself can be checked by using a SAT solver like GRASP or using Binary Decision Diagrams. [See, S. Reddy, W. Kunz and D. Pradhan, IBID]. Note that in addition to the clauses for the gates of S and I, the formula contains additional clauses only for the fanout cone of the error site, for the two miters and for the multiplexor.

When multiple errors are present in the implementation circuit, even the final proof check is only a heuristic, since it is possible that multiple sites need to be fixed simultaneously in order to correct the erroneous outputs for any error vector.

In order to maximize the number of vectors analyzed in the backtrace method, a novel 32-way backtrace technique for sensitized-path analysis is used. The technique uses the observation that for both an AND and an OR gate, an input value contributes to the output value only if they are the same. Therefore, given an AND/OR gate and 32-bit vectors of values on its input and output lines, a bit-wise XNOR is taken of those vectors to tag the inputs. Each bit set in the tag denotes the vector for which the input contributes to determining the output value. Furthermore, in the present invention, reconvergence at a node can be handled simply by performing a bit-wise OR of such tags for accumulating the contribution of each path. The use of such a parallel technique enabling the backtrace for 32 vectors in a single pass through the circuit has not been proposed before in the prior art.

The 32-bit vector of values at the output of each gate is determined by means of a 32-bit error vector simulation. The backtrace then proceeds through all the gates ordered from output to input, taking an XNOR of each gate input-output pair. For a complex gate, the internal representation is assumed to be in sum-of-products form. The value vectors at the outputs of the internal AND gates must be recomputed in this case. The repeated XNOR-based procedure is then carried out for the sum-of-products as above.

Sample code for a simple and fast backtrace loop for a complex gate is shown below. (The loop for an AND gate would be much simpler.) The outer loop goes through each cube of the sum-of-products form. The first inner loop recomputes the output of this cube. If the value computed is the same as the output of the complex gate, the second inner loop backtraces to the inputs of this cube. The macro GETINPUT(cube, j) determines the phase of the jth input of the cube.

In order to maximize the number of vectors analyzed in the X-based analysis method, a novel approach for analyzing 16 vector pairs in parallel is used. The main idea is to use 32-way 0/1 simulation to capture the effect of 16-way 0/1/X simulation using vector pairs, where X is naturally represented as (0,1) or (1,0) in the vector pair. For each net, one vector pair is stored in identical bit positions within the upper and lower halves of a 32-bit word. Recall that the X-based method uses vector pairs which differ in the value of only one primary input. Therefore, once 16 such vector pairs for a given input are known, they are stored such that the upper and lower halves of the given input are complements (to denote the X), while the upper and lower halves of all other inputs are identical (property of vector pairs used in the X-based method). In the first pass through the circuit, these inputs words are simulated on the implementation circuit, effectively simulating 16 vector pairs simultaneously.

In the second pass through the circuit, the procedure visits each gate from output to inputs, computing a value denoting its candidacy for each of the 16 vector pairs. First, it is checked if any of its input is an X while the output is not. To determine if an internal signal in the circuit has an X, its upper and lower halves are XOR'ed with each other to tag the positions with an X. Therefore, for each gate, the computed value is simply a bit-wise AND of the input tag and complement of the output tag, while performing a bit-wise OR over all its inputs. Next, the computed value is modified to account for contributions from any X-blocked gate in its transitive fanout cone. Finally, the count of each gate is incremented by the number of bit positions which are set in the computed value. Clearly, this method is fast because it computes the counts for 16 vectors pairs in only two passes through the implementation circuit.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 2 of 3

The pseudo code for the 16-way X-analysis procedure is shown below. DIAG(node) is a macro which fetches the pointer to the data structure for diagnosis for each internal node in the circuit. Diag_node_is_x — 32( ) determines the tag denoting bit positions that are X's. The value visited is computed as the bit-wise AND of inval and outval. The loop after that collects the visited fields from all the fanouts of node. diag_count_ones32( ) counts the number of 1's in the visited field.

Since all methods rely upon simulation of error vectors, use of a core simple and fast 32-way simulation procedure allows for increased speed. The simulation is as fast as is possible without actually resorting to compiled code simulation. The gates to be evaluated are scheduled statically. For each two-input Boolean operation, the procedure determines the 32-bit input vectors in the correct phase and computes the output by means of a simple bit-wise Boolean operation. The operation type is known beforehand by virtue of the way in which gates are represented internally. The pseudo code for the simulation procedure for each gate is shown below.

F is the representation for the sum-of-products form. GETSET(F, i) fetches the ith cube from F. The values of the fanins to F are precomputed for each phase and stored in the array value[ ] for each gate. The array and the correct value are fetched in the statement (GET_SIM_VALUE(fanin[j]))[GETINPUT(cube,j).

The three basic methods, complementation, backtrace, and X-based analysis, were implemented within a prototype based on SIS. (See, E. Sentovich et al, “Sequential circuit design using synthesis and optimization”, Proceedings of ICCD, 1992). The implementation of the present invention includes the parallel enhancements described above. In comparison to the earlier proposals for these methods, [See, A. Kuehlman, D. Cheng, A. Srinivasan and D. LaPotin, “Error diagnosis for transistor-level verification”, Proceedings of DAC, pp. 218-223, 1994; M. Tomita, H. Jiang, T. Yamamoto and Y. Hayashi, “An algorithm for locating logic design errors”, Proceedings of ICCAD, pp. 468-471, November 1990; and S. Huang, K-C Chen, and K-T Cheng, “Error Correction Based on Verification Techniques”, Proceedings of DAC, pp. 258-261, 1996 ], the parallel versions resulted in a factor of 8-150 increase in the number of vectors simulated per unit time.

In addition to using the individual methods, the present invention also allows for using any combination of the above methods, where the candidate set of potential error sites can be accumulated as union/intersection of sites found by individual methods. As discussed above, the main approach is to use the X-based method and backtrace method independently, and then pass the union/intersection of their potential sites as the candidate set for the complementation method.

FIG. 10 shows a typical graph which plots the number of error sites reported by the program against the number of error vectors simulated, for each of the three individual methods for a given amount of time.

The number of vectors simulated by the complementation method is orders of magnitude smaller than those simulated by the other two methods. On the other hand, it reports the smallest number of potential error sites. This graph, in some sense, represents the justification for the approach of using the other two methods as fast filters for the complementation method.

Two main sets of experiments were conducted for evaluation of various combinations—one set of examples with single errors, and another set with multiple errors. Circuits from the ISCAS benchmark suite were used as specification circuits. For each specification, gates were randomly chosen in the circuit and various kinds of errors were introduced to generate the erroneous implementation circuits. Many classes of errors were considered, including missing inverter/line/minterms and additional inverter/line/minterms.

As a first cut, two-method combinations were used consisting of: backtrace followed by complementation, and X-analysis followed by complementation. Although both of these combinations improved the number of vectors simulated, they were not fully effective, in that they missed some real error sites, and/or reported too many error sites.

The next attempt was to combine all three methods as outlined earlier. In order to assess the benefit of such combination, the combination was compared for its performance against running the complementation method alone for the same amount of time as all three methods combined. In the tables that follow, the CPU time does not include the time taken for generation of error vectors (same for all methods), but it does include the time taken for generating the special vector pairs for X-analysis method. In the experiments, BDD-based techniques were used for generating both.

Table 1 shows the results for experiments with single error implementations. For these experiments, the intersection of the sets of top 10% sites identified individually by the backtrace and X-analysis methods were used as the filtered set of candidates to pass to the complementation method. In the single error model, intersection of those sets allows for effective pruning. In the table, Columns 1 and 2 indicate the circuit name and the index of the erroneous output, respectively. Columns 3-7 denote data for the complementation method when working independently, and Columns 8-12 denote data for the complementation method when working in combination with the other two methods. Columns 3 and 8 denote the CPU time (in 15 seconds). Columns 4 and 9 denote whether or not the reported error sites contained the true error site. Columns 5 and 10 denote the number of reported error sites. Columns 6 and 11 denote the number of candidate sites which the method evaluated. Columns 7 and 12 denote the number of vectors simulated.

As can be seen clearly from Column 4, the complementation method is very accurate in that it does not miss any true error site. The benefit of the combination approach can be seen in the observation that in most examples, the number of reported error sites decreases considerably (Column 5 vs. Column 10), while making sure that the accuracy is not lost. For example, for the circuit C2670, the number of error sites is reduced from 28 to 4 for output #138. This is possible because the number of candidates to be evaluated decreased from 1395 to 55, resulting in an increase in the number of simulated vectors from 7K to 34K. This provides evidence of the efficacy of the combination approach for decreasing the number of candidates for the complementation method (Column 6 vs. Column 11), thereby allowing simulation of an increased number of vectors (Column 7 vs. Column 12).

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 3 of 3

Table 2 shows the results for the experiments with multiple error implementations. This time, the union of the sets of sites reported by the backtrace and X-analysis methods was used in order to filter candidates for the complementation method. Furthermore, the inventors experimented with varying the cutoff for choosing the top candidates, in terms of the top 10%, 25% and 50% of nets ordered by decreasing counts. The reason, as mentioned earlier, is that with multiple errors, each of the methods loses some accuracy, and the real error sites are likely not to have the largest counts. The description of the columns is identical to those in Table 1, except that Column 1 also indicates the cutoff percentage used for each circuit. For example, C1908p10 indicates that a 10% cutoff was used.

It is noted from Columns 4 and 9, that both approaches miss true error sites for some examples when the cutoff is 10%. However, for the present experiments, a 25% cutoff was adequate for catching the true error sites in all examples, except C1908, where we had to increase the cutoff to 50%. Note also that the number of reported error sites decreases for the combination approach, but not as markedly as for the single error implementations. Part of this can be explained by the observation that the number of candidates given as input to the complementation method (Columns 6 and 11) does not decrease significantly for the combination approach.

Upon investigating this further, we found that the X-analysis method was not very effective in that it was reporting a very large number of error sites. However, by dropping this method completely, some error sites would be missed even with 50% cutoff, since the backtrace method alone is not very accurate.

In Table 3, results again shown for the multiple error implementations. This time, set intersection was used between sites reported by the backtrace and X-analysis methods to filter the candidates for the complementation method. Clearly, the true error sites are missed for many examples (Columns 4 and 9). However, it is noted that for cases where the true error sites are caught, there is again a marked decrease in the number of reported error sites by the combination approach (Column 5 vs. Column 10). Again, this provides evidence of the efficacy of the combination approach for decreasing the number of candidates for the complementation method (Column 6 vs. Column 11), thereby allowing simulation of an increased number of vectors (Column 7 vs. Column 12).

Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.

›Tables in the description — 3
TABLE 1 — Results for Single Error Implementations (with Intersection)
Complementation Method AloneComplementation Method in Combination
NameOut#Time(s)#Match#Err#Cand#Vec(K)Time(s)#Match#Err#Cand#Vec(K)
c13551820211879031201464630
c13551920212979031201497020
c13552220211879031201464630
c13552320211979031201497119
c13552620211879031201464630
c13552720212779031201497120
c13553020211879031201464635
c13553120211979031201497020
c2670129300132561131801133295
c267013030013156213180I133295
c267013230012326124180112374
c26701363011659412180154731
c267013830112813957180145534
c2670139301129139671801461131
c531556500177297300144375
c53157750011217148300144352
c53158150011217148300144351
c53158350011417347300144352
c53158750011417347300144337
c88018200122187751201520174
c88019200114165821201520176
c88021200124222661201520173
c88022200136304581201520166
c88023200132275611201520169
c88024200133262611201520174
s39417571600163684360123.137
s39417572600183980360123136
s394175736001104276360123136
s394175746001134572360123136
TABLE 2 — Results for Multiple Error Implementation (with Union)
Complementation Method AloneComplementation Method in Combination
NameOut#Time(s)#Match#Err#Cand#Vec(K)Time(s)#Match#Err#Cand#Vec(K)
c1908p1015201014965120014933
c1908p2515201124965120014933
c1908p5015201164965121124933
c3540p1010401137995240137993
c3540p101840417239032421722562
c3540p101940019240132411912782
c3540p2510400137995241137993
c3540p25184011482390324014822032
c3540p25194011632401324016313732
c3540p5010400147995241147993
c3540p50184011482390324214820832
c3540p5019402163240132401631614
c7552p10814000110057240012072
c7552p25814001210057240124844
c7552p50814001410058240139235
s15850p101413042111692118621116911
s15850p101423041141696118611416961
s15850p10162300199216180199130
s15850p251413032111692118621116911
s15850p251423041141696118611416961
s15850p25162300199216180199130
s15850p501413032181692118721816911
s15850p50142304114169611871111416961
s15850p5016200199216180199130
s38584p10438600197334360192641
s38584p10933600198026360192641
s38584p1093460111185253601112939
s38584p109826000521514361052108
s38584p109856001924912360045724
s38584p10986600066836160062740
s38584p10988600065939360062740
s38584p10989600−066836360062740
s38584p10990600065939360062741
s38584p25438600197334360192641
s38584p25933600198026360192641
s38584p25933600198026360192641
s38584p2593460011185253601114525
s38584p259826011921514360192108
s38584p25985601112249123601128917
s38584p2598660011068363601102840
s38584p2598860011059403601102840
s38584p2598960011068363601102840
s38584p2599060011059403601102840
s38584p5043860011773343601156822
s38584p5093360011880263601167017
s38584p5093460012085253601208116
s38584p50982600116215143611142108
s38584p50985600123249123611232108
s38584p5098660011968363601165226
s38584p5098860011959393601165226
s38584p5098960011968363601165226
s38584p5099060011959393601185624
s9234p101032001238122120123873
s9234p10144200165699120164665
s9234p101452001656100120164665
s9234p101462001656100120164663
s9234p10147200165897120164664
s9234p10148200165898120164665
s9234p251032001238121120123873
s9234p25144200165699120164665
s9234p25145200165699120164665
s9234p25146200165699120164665
s9234p25147200165897120164665
s9234p25148200165897120164665
s9234p501032001238120120123873
s9234p50144200165698120164665
s9234p50145200165698120164665
s9234p50146200165698120164665
s9234p50147200165896120164665
s9234p50148200165897120164665
TABLE 3 — Results for Multiple Error Implementations (with Intersection)
Complementation Method AloneComplementation Method in Combination
NameOut#Time(s)#Match#Err#Cand#Vec(K)Time(s)#Match#Err#Cand#Vec(K)
c1908p1015201014965120004632
c1908p25152011249651200012012
c1908p501520114121002446
c3540p1010401137995240138026
c3540p10184041723903241142359
c3540p10194001924013240132339
c3540p25104001379952411319811
c3540p251840114823903240175514
c3540p251940116324013241144965
c3540p5010400147995240143966
c3540p50184011482390324211710133
c3540p501940216324013241178503
c7552p10814000110057240003103
c7552p2581400121005724000499
c7552p50814001410058240002068
s15850p1014130421116921180026725
s15850p101423041141696118011410519
s15850p10162300199216180199130
s15850p2514130321116921181024412
s15850p25142304114169611801143923
s15850p25162300199216180199130
s15850p5014130321816921182025322
s15850p50142304114169611801145412
s15850p5016230019921618199130
s38584p1043860019733436014590
s38584p1093360019802636014590
s38584p10934601111852536014589
s38584p10982600052151436014588
s38584p109856001924912360141653
s38584p10986600066836360066821
s38584p10988600065939360065924
s38584p10989600066836360066821
s38584p109906000659393600−65924
s38584p2543860019−733436014590
s38584p2593360019802636014590
s38584p259346001118525360141265
s38584p25982601192151436014588
s38584p2598560111224912360163931
s38584p25986600110683636014685
s38584p25988600110594036014685
s38584p25989600110683636014685
s38584p25990600110594036014685
s38584p504386001177334360161070
s38584p509336001188026360171263
s38584p5093460012085253601132641
s38584p5098260011621514360171262
s38584p50985600123249123601129816
s38584p5098660011968363601101752
s38584p509886001195939360191654
s38584p5098960011968363601101752
s38584p5099060011959393601101653
s9234p101032001238122120128161
s9234p101442001656991201413141
s9234p1014520016561001201411150
s9234p101462001656100120149160
s9234p10147200165897120145178
s9234p10148200165898120148166
s9234p251032001238121120128161
s9234p251442001656991201413141
s9234p251452001656991201411149
s9234p251462001656991201411149
s9234p251472001658971201410152
s9234p251482001658.971201410153
s9234p501032001238120120128161
s9234p501442001656981201421111
s9234p501452001656981201421111
s9234p501462001656981201421111
s9234p501472001658961201422107
s9234p50148200165826 971201422109
1 of 8 part labels are ours — the grant heads the rest

Claims as granted

7 claims

Log in to read the claims of this application.

Log in to unlock

Classifications

8 codes
IPC · International Patent Classification
Section G — Physics
  • G01R31/3183
  • G01R31/3185
  • G06F17/50
  • G01R31/317
USPC · US Patent Classification
714/724714/5324/528324/759

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this application are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomJan 2000Jul 2000Jan 2001Jul 2001Jan 2002Jul 2002Jan 2003Jul 2003Jan 2004USPTOApplicantNon-final rejectionFinal rejectionAdvisory action
USPTOApplicanthover for detail · click to open
Pendency
4.1 y
1,506 days filing → grant
Office actions
2
non-final + final
Responses
2
no RCE
Examiner
Albert Decady
art unit 2133 · TC 2100
Citations: 26 back · 7 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Documents

Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.

Log in to unlock

Chain of title

⤢ drag to zoom20002002200420062008201020122014201620182020Owner 1Owner 2
Titlehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock