A field of the invention is integrated circuits generally. More specifically, the invention relates to software and methods of integrated circuit testing and integrated circuit manufacturing.
Due to the increasing complexity of modern processors and significant process variations in advanced technologies, testing for high-performance chips becomes expensive and time consuming. Signal integrity problems relating to AC faults (also known as timing-related faults) can severely affect the performance of and even cause functional errors in manufactured chips.
Various test methodologies such as scan test, built-in self-test (BIST) and functional test have been adopted to ensure high-quality chips. Scan test can be systematically applied to complex designs. It enables automatic test generation and enhanced diagnostic resolution. BIST generates at-speed tests and helps to reduce test volume. Both scan test and BIST can be used to detect signal integrity problems. However, signal integrity problems are strongly dependent on voltage, temperature and timing properties. Structural tests such as scan and BIST test apply vectors in an “artificial” environment, the voltage, temperature and timing of the module-under-test (MUT) and surrounding logics are different from those in the operational mode, leading to over-test or under-test for the manufactured chips.
Functional tests exercise the MUT at operational speed without introducing area and delay overhead, and are performed in a chip's natural working environment. In spite of these benefits, several challenges frequently hinder the application of functional tests. High-speed testers are prohibitively expensive and the performance gap between automated test equipments (ATE) and device I/O speed is increasing. Tester timing inaccuracies are becoming comparable to the cycle time of the fastest devices on chip. Also, test generations are mostly time consuming and expensive. Many tests are migrated from design verification suite without targeting any physical defects, and need to be augmented with manually developed tests. Further, testing for signal integrity problem needs layout information that is available in late design cycle, resulting in a pressing test generation time.
Software-based self-test (SBST) has been proposed to alleviate the need for high-speed testers. SBST uses on-chip programmable resources such as processors to generate tests and compress test results, utilizing low-speed testers. To ease the burden of functional test generation, methods of using random instruction sequences have been developed. Since such a test generation process is not defect-oriented, to achieve high defect coverage it requires a long test program with increased testing cost and fault simulation time. Deterministic test methods have been developed to mitigate this problem. Based on a divide-and-conquer approach, SBST first generates tests for a specific MUT. Processor instructions are then used as a vehicle for delivering the test patterns to MUTs and collecting test responses.
Unlike scan test that possesses enhanced controllability and observability on internal modules, for SBST, many module-level automatic test program generation (ATPG) vectors cannot be delivered to the MUT. The instruction set architecture (ISA) and surrounding logic impose various requirements on the input vectors and the output observable nodes. These special requirements determine what kind of vectors can be applied by processor instructions, and are called instruction-imposed constraints. To guarantee the delivery of module-level ATPG vectors by instructions, these constraints should be considered during test generation.
Automated methods for extracting surrounding-logic-imposed constraints have been proposed. Since they are only a subset of instruction-imposed constraints, these constraints cannot be directly applied to SBST. Symbolic simulation was used to extract constraints imposed by ISA. Using these constraints and targeting path delay faults, an automated test program synthesis method was developed based on a backtrack-based searching algorithm. However, scalability remains a big challenge as symbolic simulation in its present form is not feasible for large integrated circuits. In “A Scalable Software-Based Self-Test Methodology for Programmable Processors,” Proc. Design Automation Conference, June 2003, pp. 548-553 by L. Chen, S. Ravi, A. Raghunathan and S. Dey (Chen et al.), which is incorporated herein by reference, a systematic SBST methodology was proposed using a simulation-based constraint extraction method and a constrained ATPG method, enabling automatic test program generation for stuck-at faults in industrial-size processors. As known in the art, logical faults represent the effect of physical faults on the behavior of the modeled system. A short between ground or power and a signal line can make the signal remain at a fixed voltage level. The corresponding logical fault consists of the signal being “stuck at” a fixed logic value v (where v is 0 or 1), and it is denoted by s-a-v.
While a stuck-at fault can be detected by applying a single test vector at any speed, an AC fault such as a crosstalk-induced fault can only be detected by applying a sequence of vectors at the operational speed. The requirements of generating consecutive multiple vectors and considering instruction-imposed constraints pose difficult challenges on test program generation.
As a major source of signal integrity problem, crosstalk noise, for example, can cause functional and timing errors. A wire, whose signal is under concern, is a victim. An aggressor is a net whose signal transitions can potentially deteriorate the victim's signal because of a large coupling capacitance or a weak and sensitive victim wire. Various crosstalk noise effects can cause failures in the circuit-under-test (CUT). Due to random defects and excessive process variations, a large noise can cause logic and timing failures. Crosstalk-induced logic and transition faults may include positive glitch, negative glitch, rising delay, falling delay, rising speedup and falling speedup, as shown in
To test a given crosstalk fault using SBST, a test program launches test vectors to trigger a set of aggressors, sensitizes a propagation path and stores the test results to the memory. It is a multiple-timeframe test generation problem. Like testing for stuck-at faults in SBST, vectors that can be delivered by instructions are limited. In order to be able to translate ATPG results into legal instructions, module-level ATPG should be guided by instruction-imposed constraints.
In an SBST technique that enable automatic test program generation for stuck-at faults, test vectors are delivered to the MUT in functional mode by instructions. Vectors that can be delivered by each instruction form a subset of the original input space. Since not all vectors can be generated in functional mode, the superset of all the instruction-related subsets composes a constrained input space A. Correspondingly, this reduced input space maps to a subset of the fault universe B, as shown in
In Chen et al. described above, an enumeration-based methodology was developed that enables automatic test program generation for stuck-at faults. Constraints were first extracted for each instruction. In “A Novel Functional Test Generation Method for Processors using Commercial ATPG,” Proc. Intl. Test Conference, November 1997, pp. 743-752, by R. Tupuri and J. Abraham (Tupuri et al.), which is incorporated herein by reference, a concept of virtual constraint circuit (VCC) was introduced that was later extended and adapted for SBST in Chen et al. The VCCs enforce instruction-imposed constraints on the MUT, providing constraint information in the form of logic circuits. Controllability VCCs (CVCCs) and observability VCCs (OVCCs) are attached to the inputs and outputs of the MUT, respectively. Controllability is the ability to establish a specific value at each node in a circuit by setting values on the circuit's inputs. Observability is the ability to determine the signal value at any node in a circuit by controlling the circuit's inputs and observing its outputs. Constrained test generation is performed on a CUT containing the MUT and the VCCs. The primary inputs (PI) of controllability VCCs are mapped to settable fields (e.g. operands, source and destination registers) that are controllable in instructions. The primary outputs (PO) of observability VCCs are fields that can be mapped and stored to the memory. Test generation is performed by automatically enumerating constraints for each instruction in the ISA. This methodology provides an efficient, scalable test program generation solution for stuck-at faults.
However, in testing for AC faults such as a crosstalk fault, this method meets severe challenges. To detect a crosstalk fault, a sequence of test vectors needs to be delivered by multiple instructions.
In addition, the instruction sequence in a test program template predefines the best vectors that can be delivered to detect AC failures. An example is shown in
Various automatic test pattern generation (ATPG) methods that may be employed in software-based self-test (SBST) methods and other tests such as scan and BIST are known in the art. Structural-based ATPG methods for crosstalk noise induced by a single aggressor is one example. Recently, timed test pattern generation method for switch failures in domino CMOS has been proposed. Also, a dynamic timing analysis has been used to generate test patterns for delay faults in static CMOS circuit. Even though these methods can consider multiple aggressors, the computationally expensive circuit-level timing simulations hurt the scalability of the proposed methods.
Boolean satisfiability (SAT) based ATPG methods for stuck-at faults exhibit advantages such as uniformity and flexibility. A SAT-based crosstalk noise analysis method was proposed that considers both temporal and functional information. However, the high complexity of general purpose SAT-solver makes this method impractical.
(a+{overscore (c)})(b+{overscore (c)})({overscore (a)}+{overscore (b)}+c)
This formula will evaluate to “1” if and only if the values of a, b and c are consistent with the truth table of the AND gate. For each gate in the circuit, the CNF formulae must be independently satisfied, and the conjunction of the CNF formulae of all the gates must also be satisfied. The CNF formula provides a search space for test vectors.
During ATPG, in order to determine whether the error has been activated and propagated to POs, part of the circuit needs to be duplicated. For example, if for the circuit shown in
An implication graph (IG) is a directed graph. The nodes represent logic variables and the edges represent logic implications. In building the implication graph, binary CNF clauses are generated and directly transformed into implications. For example, the binary clause (a+c) of an AND gate, is logically equivalent to (c→a)·({overscore (a)}→{overscore (c)}). Ternary clauses can also be transformed. For example, the ternary clause ({overscore (a)}+{overscore (b)}+c) of an AND gate is transformed into an equivalent logic relation: ((a·b)→c)·((a·{overscore (c)})→{overscore (b)})·((b·{overscore (c)})→a).
Based on these transformations, an implication graph can be constructed. The implication graph contains two kinds of nodes: variable nodes and logic “Λ” (AND) nodes. For example,
The present invention is directed to a method for generating a test program for a software-based self-test in an integrated circuit. The method includes extracting constraints for corresponding instructions for the integrated circuit, modeling the constraints for a plurality of timeframes and performing constrained test pattern generation on the integrated circuit using the models. The result from the test pattern generation is then converted to at least one instruction executable by the integrated circuit.
The present invention is also directed to an automatic test pattern generation method for an AC fault in an integrated circuit. The method includes identifying a current desired condition for triggering the AC fault, determining whether the current desired condition for triggering the AC fault is feasible, and identifying a subsequent desired condition for triggering the AC fault if the current desired condition is not feasible. The method then determines whether the subsequent desired condition for triggering the AC fault is feasible, and searches for test vectors for realizing the current desired condition or subsequent desired condition which is determined to be feasible for triggering the AC fault.
The present invention is directed to a software-based self-test (SBST) method for testing AC fault models such as crosstalk faults, IR drop induced timing faults and path delay faults, in programmable integrated circuits such as microprocessors, micro-controllers, embedded processors, digital signal processors, etc. Different from testing for stuck-at faults, testing for AC faults (such as crosstalk faults) requires a sequence of test vectors delivered at the operational speed. SBST method applies tests in functional mode using instructions. Different instructions impose different controllability and observability constraints on a module-under-test (MUT). As a result, complexity of searching for an appropriate sequence of instructions and operands becomes prohibitively high. One embodiment of the present invention combines structural test generation technique with instruction-level constraints. A MUT is duplicated in several time frames, and augmented with Super Virtual Constraint Circuits (SuperVCCs), which guide an automatic test pattern generation (ATPG) tool to select appropriate test instructions and operands. The present invention enables automatic test program generation and high-fidelity test solution for AC failures.
The present invention is also directed to an automatic test pattern generation (ATPG) method. Given an AC fault, the ATPG algorithm first identifies a desired condition for triggering the AC fault and checks for potential logic conflicts by using an implication graph (IG). If a logic conflict exists, the present invention will identify a subsequent desired condition for triggering the AC fault. As a result, a potential conflict free (feasible) desired condition will be identified. In the second phase, structural algorithms and Boolean satisfiability algorithms are used to search for vectors than can justify the desired condition.
In one embodiment, present ATPG algorithm generates test patterns for crosstalk induced transition faults. Given a victim and a set of aggressors, the ATPG method first checks for potential logic conflicts by using an implication graph (IG). The conflicts are results of logic relation among the victim, the aggressors, as well as mandatory assignments on the propagation path(s). If a logic conflict(s) exists, the proposed algorithm will automatically search for a subset of compatible aggressors based on weights assigned to aggressors. As a result, a set of potentially feasible aggressors will be proposed as objectives for justification. In the next phase, a modified PODEM algorithm is used to search for vectors that can justify the required logic value for the victim, activate the aggressors and sensitize a propagation path. The present structural Boolean-satisfiabilitity (SAT) based SAT-based ATPG method combines advantages from SAT-based methods and structural-based methods to achieve flexibility and efficiency.
Turning now to
Turning now to
Referring to
From the constraints extracted in stage 1 virtual constraint circuits (VCCs) are generated (block 30) in the second stage 20. In other words, the second stage 18 prepares a CUT 16 to constrain the module-level ATPG process, containing the MUT sandwiched between the controllability and observability VCCs. As described above, VCCs enforce instruction-imposed constraints on the MUT, providing constraint information in the form of logic circuits, as shown in
To overcome this difficulty, a Super Virtual Constraint Circuit (SuperVCC) 32 is generated (block 34), as shown in
As shown in
A circuit consisting of the MUT and the SuperVCC spanning over multiple timeframes as shown in
The SuperVCC 32 is a virtual circuit that presents constraints to the ATPG tool. Simply connecting all VCCs together with MUX will make the SuperVCC 32 too complex and difficult for ATPG tool to handle. In one embodiment, common signals and logic redundancies are exploited to further reduce the complexity of the SuperVCC 32. As illustrated in
As shown in
The ATPG results (a sample shown in
Once the ATPG results have been converted, a determination is made as to whether there is a data conflict (block 54). In other words, data-dependency related issues are considered. For example,
If there is no data conflict (block 54), a final test program (a sample shown in
When data conflict cannot be resolved by the intelligent value assignments, the SuperVCC may be incrementally augmented (block 55) to include additional constraint for avoiding data conflict with the necessary constraints, forcing ATPG tool to avoid conflicts already occurred. In this manner, we reduce the complexity of the SuperVCC, which leads to an efficient test pattern generation process.
In one embodiment of the present invention, the ATPG method employed in the present SBST is a structural SAT-based ATPG method which combines both Boolean-satisfiability-based methods and structural-based method. It should be understood, however, that the present structural SAT-based ATPG method may also be used in other test methods, such as, for example, scan test or deterministic built-in self-test (BIST) methods. Turning now to
When a fault is activated, the first D frontier will be introduced. For example, consider the circuit shown in
Suppose a=1 is successfully justified. To determine whether the D frontier can propagate though the AND gate, simulation is performed on the implication graph. For the good circuit, the b should be 1 and in the corresponding IG shown in
By introducing the D frontier in the implication graph, we avoid the overhead of the duplication operation. The improved implication graph inherits advantages from both structural-based algorithms and SAT-based algorithms. Thus it enables faster logic conflict checking and logic implication operations.
The goal of ATPG for AC faults such as crosstalk is to activate an error, propagate the error effect to POs and trigger as many aggressors as possible to attack the victim. However, the logic relations among the aggressors, the victim and potential propagation paths pose complicated constraints on the ATPG problem.
Two vectors are needed to generate the desired transitions. According to their sequence relation to the transition, they can be denoted as before-switching vector and after-switching vector. We denote the logic value of aggressor i for before-switching as Aibs and the logic value of aggressor i for after-switching as Aias. Therefore, for a rising transition on aggressor i, we have, Aibs=0 and Aias=1.
Because of logic constraints, it is not always possible to trigger all the aggressors. If that happens, the ATPG algorithm should choose to activate a subset of most “important” aggressors to trigger a large noise effect. Using extracted layout information, and the crosstalk noise estimation tool described, for example, in “Noise-Aware Driver Modeling,” Proc. of International Symposium on Quality Electronic Design, pp. 177-182, 2003 by X. Bai, R. Chandra, S. Dey and P. V. Srinivas (Bai et al.) which is incorporated herein by reference, we assign a normalized weighting factor to each aggressor. This factor is used as a measure of how much the given aggressor can potentially contribute for the noise generation. For example, the contribution of aggressor i with weighting factor wi to a positive glitch noise is wi(Aias−Aibs). Therefore, the contribution is equal to wi for a rising transition on the aggressor i, it is equal to −wi for falling transition on i, and it is equal to 0 for the case of a quiet aggressor i.
Therefore, the ATPG problem can be formulated as an optimization problem. The objective is to activate the largest possible error effect subject to constraints including fault activation, fault propagation, and logic constraints of the circuit. Consider the positive glitch fault on victim v as an example. The problem can be formulated as:
Subject to:
The patterns generated by ATPG should justify the appropriate logic values for the victim wire and propagate the error effect to primary output(s) PO(s). For a positive glitch on the victim v in the circuit shown in
The ATPG problem is a 0-1 integer-programming problem and it is NP hard, which as those skilled in the art will recognize, is the complexity class of decision problems that are intrinsically harder than those that can be solved by a nondeterministic Turing machine in polynomial time. In other words, when a decision version of a combinatorial optimization problem is proved to belong to the class of NP-complete problems, which includes well-known problems such as satisfiability, traveling salesman, the bin packing problem, etc., then the optimization version is NP-hard.
In order to minimize the complexity, we use zero-delay model and assume that the circuit is hazard free. To further speedup the search process, the original optimization problem can be divided into two parts: before-switching and after-switching. For example, for a positive glitch, we want to trigger rising transitions on aggressors. The before-switching vector needs to justify 0 for the victim wire and to justify as many O's on the aggressors as possible. The after-switching vector need to justify a 0 for the victim, sensitize a path from the victim to PO(s), and to justify as many 1's on the aggressors as possible. Hence the original problem in (1) is divided into two parts with different constraints:
(a) Before-Switching:
In accordance with one embodiment of the invention, we introduce an algorithm to search for solutions for the above optimization problems using a single framework. If we could afford to evaluate all vectors satisfying the constraints in Equation (1), then we could compare them and select the one with the maximum objective function value. This is not feasible for large circuits.
In the present invention, an ATPG algorithm is divided into 2 phases. Given a crosstalk target fault consisting of a victim line and a set of potential aggressors, in the first phase we check if the set of aggressors is feasible. If not, we identify a subset of feasible aggressors. The outcome of the first phase is a set of objectives that need to be justified in the second phase. We use a modified PODEM algorithm to search for vectors justifying the multiple objectives. If the proposed set of aggressors fails in the second phase, the algorithm can iterate and select another set of relaxed objectives.
For both before-switching and after-switching vectors, there are several constraints that have to be satisfied by any pattern. These constraints result in mandatory assignments. First, the logic value of the victim should be justified. Second, if all the potential propagation paths share a common segment, this segment of the propagation path has to be sensitized, i.e., the corresponding side inputs of the segment need to be assigned and justified. For example, for the positive glitch on victim v in
The assignment of mandatory values and their implications are performed on the IG. Aggressors that have been assigned and/or implied mandatory values in this step will be removed from the set of aggressors under consideration for the next step. After the assignment of mandatory values, we need to further check the feasibility of the current set of aggressors. For easier understanding of our algorithm, we will use the search for after-switching vector for a positive glitch as an example. Because aggressor d was assigned a mandatory value 0 in the first step, we only need to consider signals a, b and c. Without loss of generality, let us assume that the weights of a, b and c are 6, 5 and 4, respectively. The implication graph is used to check for logic conflicts (described below).
Because each aggressor can be either logic 0 or 1, a binary decision diagram (BDD) tree can be constructed to fully explore all possible aggressor assignment combinations.
However, since the size of the BDD tree increases exponentially with the number of aggressors, it may not be affordable to fully explore the BDD tree. Building the whole tree and checking for logic conflicts for all possible combinations may be impossible for some circuits. In addition, each implication and unimplication operation could affect hundreds of variables on IG. Hence, each exploring step on the BDD tree may need expensive operations on IG. Therefore, in order to make the search more efficient, the necessary implication and unimplication operations are performed.
We develop a search algorithm to achieve this goal. Before exploring a node, we assume that the best combination of aggressors in the subtree of both branches is feasible. An expected value is calculated for the unexplored branches. The algorithm compares two branches of current node to decide which branch should be chosen. When conflict occurs or node in the downstream is implied, the expected values is updated. For example, in
During the implication operation, the objective list and D frontier list will be built and updated. Implication graph for the NAND and part of the OR gate of our example is shown in
Because c is implied, branch c=1 will be trimmed on the BDD tree. The estimated values for all branches from the current node to the root will be updated. If the current node does not have the best estimated value anymore, unimplication will be performed, and the search process will move upward until it reaches a node containing a branch with the highest estimated value. To reduce the risk of jumping among different subtrees, the nodes should be sorted. In this example, the updated estimated value is 11 for nodes a and b (
Both structural algorithms and Boolean Satisfiability algorithms are employed to efficiently justify objectives and propagate AC fault to observable nodes (such as POs). In one embodiment, we use similar strategy as the PODEM (path-oriented decision making) algorithm described in “An implicit enumeration algorithm to generate tests for combinational logic circuits,” IEEE Trans. Comput., Vol. C-30, pp. 215-222, March 1981, by P. Goel, making decisions only on PIs to minimize the search space. The PODEM algorithm is modified such that Boolean Satisfiability algorithms can be used in each step of justification and implication on an IG.
First, the objectives are extracted from the objective list. BACKTRACE process will search and return an unassigned PI variable. Backtrace determines which primary input and value to set to achieve objective. Then forward implication is performed. Objectives will also be generated by D frontiers to guide the modified PODEM algorithm to sensitize propagation path(s). After each forward implication, D simulation is performed to propagate D frontiers and check whether D frontier reached PO(s). Below is one embodiment of the pseudo code for the modified PODEM, i.e., PODEM built on implication graph such that the switching between structural based ATPG algorithms and Boolean Satsifiability algorithms can be performed substantially seamlessly.
Procedures used in the modified PODEM include BACKTRACE for backtracing from a given variable to primary inputs; and IMPLY for forward implications from PIs and checking for logic conflicts. The D frontier propagation is performed by D simulation as explained above.
The search for potential feasible objectives for the before-switching vector is similar to the after-switching vector, but the algorithm does not need to consider D frontier propagation and the preferred logic value is 0 for aggressors (since we are considering a positive glitch on the victim). Hence, the weights are assigned to {overscore (a)},{overscore (b)} and {overscore (c)}. The same framework for solving the ATPG problem as an optimization problem is used again. In one embodiment, the present ATPG algorithm is implemented in C++.
Turning now to
In one embodiment, the conflicts are results of logic relation among the victim, the aggressors, as well as mandatory assignments on the propagation path(s). If a logic conflict(s) exists, a subset of the initial set of aggressors is searched based on weights assigned to the aggressors. As a result, a set of potentially feasible aggressors are proposed as the objectives for justification. Once the feasible aggressors have been identified, a modified PODEM algorithm is used to search for vectors that can justify the required logic value for the victim, activate the aggressors and sensitize a propagation path.
While specific embodiments of the present invention have been shown and described, it should be understood that other modifications, substitutions and alternatives are apparent to one of ordinary skill in the art. Such modifications, substitutions and alternatives can be made without departing from the spirit and scope of the invention, which should be determined from the appended claims.
Various features of the invention are set forth in the appended claims.
The invention was made with Government assistance under DARPA Grant No. 98-DT-660. The Government has certain rights in this invention.
Number | Date | Country | |
---|---|---|---|
60513434 | Oct 2003 | US | |
60506711 | Sep 2003 | US |