1. Field of the Invention
The present invention is related to the testing of integrated circuits (ICs), including IC built in self tests (BISTs).
2. Description of the Related Art
Signature circuits are frequently used for detecting faults in integrated circuits. Test vectors are applied as test inputs to a circuit under test (CUT) or device under test (DUT). The monitored signals of the CUT are provided as inputs to a signature circuit. A conventional approach is to combine the monitored signals from the CUT with a stored value of the signature register (a “current” value) to create a new signature register value for each test vector is applied to the CUT. At the end of the set of test vectors, the contents of the signature register (i.e., the “signature”) is compared to an expected signature for a fault-free circuit, which is typically calculated via a simulation. Fault coverage varies depending on the test vectors, the number of test vectors, the efficiency of the signature circuit, and the like. The percentage of fault coverage is the percentage of the total number possible single faults for which the resulting signature is different from that of a fault-free circuit. For example, the data, address, and control signals of a data bus in the CUT can be monitored as inputs for the signature circuit.
The combining of a monitored signal with a prior signature register value typically includes a mathematical operation. If multiple signals from the CUT are simultaneously provided as inputs to the signature register, the signature register is typically referred to as a Multiple Input Signature Register (MISR). One mathematical operation used with a MISR maintains a running odd-parity in each bit of the signature register of corresponding CUT signals. Other techniques combine multiple input signals and multiple signature register bits in some linear combination to create the next MISR state.
Generally, the greater the complexity of this operation, the better the fault coverage. More complex operations, however, can place limits on the speed at which the test vectors can be run. For example, each increase in the depth of the logic used to generate a new Multiple Input Signature Register (MISR) value increases the propagation delay to the input of the MISR's register. Also, if a circuit under test (CUT) signal is used as an input to multiple gates within the MISR, the MISR's multiple gates increase the capacitive load on that CUT signal with a corresponding decrease in the speed at which the CUT can operate, even under normal (non-test) operation. Hence, desirable considerations of MISR design include to achieve a high degree of fault coverage with a relatively small number of test vectors, to run test vectors at a relatively high clock rate, and to load the CUT lightly such that the CUT's performance is unimpaired during normal (non-test) operation.
Another consideration for Multiple Input Signature Register (MISR) design is that the larger the MISR circuit, the greater the likelihood of the MISR circuit's own susceptibility to faults. The can result in a decreased yield of otherwise good ICs due to faults occurring within the MISR. Of course, larger MISR circuits also increase the die size of the IC, which also impacts cost. For these reasons, the smaller the MISR circuit, the better.
Conventional Multiple Input Signature Registers (MISRs) perform a linear operation on a combination of the inputs to the MISR and the MISR's current state values to create the next MISR state. In the art, MISRs are also referred to as signature space compactor circuits since MISRs produce a signature with relatively few bits at the end of many test vectors rather than having, for example, a different signature per test vector. This should not be confused with compactors used to compress the size of a test vector generator circuit or ROM table.
One conventional space compaction technique uses multi-level logic that combines the monitored circuit under test (CUT) signals to form a single bit value per test vector. The signature is the resulting stream of values (which may then undergo additional compaction through a “time compaction” circuit such as a run-length coder such as a Ziv-Lempel code). See K. Chakrabarty and J. P. Hayes, “Test Response Compaction Using Multiplexed Parity Trees,” IEEE Trans. Computer-Aided Design, vol. 15, pp. 1399-1408, November 1996.
According to one conventional Multiple Input Signature Register (MISR) technique, the signals from the circuit under test (CUT) are provided as inputs to logic that combines these signals with one of the current MISR register outputs. See U.S. Pat. No. 5,938,784 to Kim, in which a single register output of the MISR is fed back to create a primitive polynomial generator.
Another example is shown in FIG. 10.17 of M. Abramovici, et. al., Digital Systems Testing and Testable Design, Computer Science Press/W.H. Freeman, New York, N.Y., 1990, pp. 446.
Test vectors are provided as inputs to a circuit under test (CUT). A signature circuit stores a “signature” based on a combination of signals from the circuit under test and a previous stored state of the signature register. Faults can be determined by detecting variances from an expected signature.
One embodiment includes a signature circuit in a diagonal bit-interleaved parity (BIP) configuration. Advantageously, each of the outputs from a signature register is provided as an input to one input stage of another register. In one embodiment, an output from each register is provided as an input to one XOR gate coupled to an input of one other register for determining the next state for the signature circuit. This reduces the load on a single register of the signature register.
One embodiment includes a signature circuit that generates a signature based upon the application of a first type of check symbol code or error detection code, where the first type of code is the result of a form of bit-interleaved parity (BIP) and applies a second type of check symbol code, such as a weight-based code, different from the first type of check symbol code as a check of the results of the first code. In one embodiment, the second type of check symbol code corresponds to a Bose-Lin check symbol (CS) code. For the same number of signature register bits, the combination of multiple check symbol codes of varying types advantageously provides fault detection that exceeds the capabilities of either fault detection code by itself.
One embodiment includes a signature circuit that includes a Multiple Input Signature Register (MISR) and a second type of check symbol generator, such as a Bose-Lin check symbol (CS) generator.
One embodiment includes a signature circuit that includes a diagonal bit-interleaved parity (BIP) check symbol (CS) generator and a binary counter, such as a 2-bit binary counter. Outputs of the diagonal BIP CS generator and the binary counter are used together for the “signature” of the signature circuit.
One embodiment includes a signature circuit that includes a Multiple Input Signature Register (MISR) and a binary counter, such as a 2-bit binary counter. Outputs of the MISR and the binary counter are used together for the “signature” of the signature circuit.
One embodiment includes a method of testing a circuit, where the method includes: resetting registers of a signature circuit, wherein states stored in the registers correspond to a signature of the circuit under test for a set of test vectors; applying test vectors to the circuit under test; monitoring selected signals from the circuit under test; updating states of registers of the signature circuit, where an updated state of a register is at least partially based on a combination of one or more monitored signals and a prior state of another register, and where outputs from at least two registers are used in updating the signature circuit; and comparing the resulting signature to an expected signature. In one embodiment, each output from each register of the signature circuit is provided as an input to one input stage, such as one XOR gate, of only one other register to update the signature.
One embodiment includes a method of testing a circuit, where the method includes: applying test vectors to the circuit under test; monitoring selected signals of the circuit under test; generating a first error detection code at least partially based on the monitored signals; and generating a second error detection code as a check for the first error detection code, where the second error detection code is a different type of error detection code than the first error detection code. In one embodiment, the first error detection code is a parity type of error detection code and the second error detection code corresponds to a weight-based code.
One embodiment includes a method of testing a circuit, where the method includes: applying test vectors to the circuit under test; monitoring selected signals of the circuit under test; generating a first error detection code at least partially based on the monitored signals; and generating a second error detection code as a check for the first error detection code by counting occurrences of one of logical “0” or “1” in a selected bit of the first error detection code.
One embodiment includes a signature circuit including: a means for monitoring selected signals of a circuit under test; a means for generating a first error detection code at least partially based on the monitored signals; and a means for generating a second error detection code as a check for the first error detection code, where the second error detection code is a different type of error detection code than the first error detection code. In one embodiment, the means for generating the first error detection code is configured to generate a parity type of code and the means for generating the second error detection code is configured to generate a weight-based code.
These drawings and the associated description herein are provided to illustrate embodiments and are not intended to be limiting.
Although particular embodiments are described herein, other embodiments, including embodiments that do not provide all of the benefits and features set forth herein, will be apparent to those of ordinary skill in the art.
Test vectors are applied as inputs to a circuit under test (CUT). A signature circuit stores a “signature” for the circuit under test based on a combination of signals from the circuit under test in response to test vectors and a previous stored state of the signature register. Faults can be determined by detecting variances from an expected signature. Embodiments of the invention advantageously provide relatively good fault detection coverage, with relatively small loads on the CUT, and operate at relatively high speed for relatively efficient testing.
A signature circuit monitors a set of signals within an integrated circuit (IC) while the circuit under test (CUT) is exercised by a set of test inputs (test vectors). A set of monitored IC signals provides the input to the signature circuit. It should be noted that the set of monitored IC signals do not have to correspond to specific outputs of the signature circuit. For example, address lines, internal data signals, internal status signals, and the like can also be monitored.
A signature circuit is typically implemented as a state machine in which the next state of the machine is a function of the current state and input signals to the signature circuit. The signature circuit state machine is initialized at the beginning of the test, such as by clearing of the registers, prior to application of the test vectors to the circuit under test (CUT). At the end of the test, the value stored in the state machine register of the signature circuit, i.e., the signature register, corresponds to the “signature” for the CUT. This value is compared to an expected value for a fault-free signature. A fault in the CUT should lead to a signature other than the signature for a fault-free circuit. The percentage of faults that can be detected by the signature circuit is referred to as the fault coverage of that test vector set over the CUT.
Diagonal Bit-Interleaved Parity (BIP) BIST Circuit
Registers R form the signature registers for the signature circuit 200. For example, the registers R can be formed from D-type flip flops (D-FFs). Outputs of the registers (signature register outputs) provide the state of the signature circuit 200. A value stored in the registers R upon the completion of a test cycle corresponds to the “signature” for the circuit for the particular test vectors used. Exclusive-OR (XOR) gates form the diagonal BIP check symbol (CS) generator by combining data from monitored signals (signal inputs) with a previously stored state of the registers R to form a new state. In the configuration illustrated in
In contrast to the conventional MISR circuit illustrated in
The described diagonal BIP configuration possesses several advantages. One advantage to the diagonal BIP configuration is that the logic used in the diagonal BIP CS generator can be relatively shallow, i.e., the monitored signals propagate through relatively few levels of logic before the result is clocked into the signature register. This reduces propagation delays and permits the diagonal BIP CS generator to operate at relatively high speeds. In the illustrated embodiment, another advantage is that each register R is loaded by only one XOR input rather than by multiple XOR inputs via a generator polynomial. This also permits the signature circuit 200 to operate at relatively high clock rates. Another advantage is that the circuit logic is relatively compact, thereby saving chip space, saving cost, and improving yield. Moreover, the fault coverage for the signature circuit 200 with diagonal BIP is relatively good, with the probability of detecting (PDET) a stuck fault on any of the monitored input signals expressed by Equation 1.
PDET=1−2−n Equation 1
In Equation 1, n corresponds to the number of bits in the signature. This detection performance is about the same as the performance of the typical Multiple Input Signature Register (MISR) circuit described earlier in connection with
Signature Circuit with Bose-Lin Check Symbol (CS) Error Detection Code
The diagonal BIP CS generator 302 includes a plurality of XOR gates. Outputs of each XOR gate are provided as inputs to corresponding registers R, which can be implemented by D-type flip flops. An output of each register R is coupled to an XOR gate of another D-type flip flop, thereby distributing the output load for the feedback path among multiple registers R. The diagonal BIP CS generator 302 monitors 85 input signals and generates 5 output bits in its signature registers (bits 0 to 4). In the illustrated example, multiple input signals are combined by the XOR gates. For example, input signals 1 to 17 can be combined by a multiple-input XOR gate. Outputs of the XOR gates are further monitored by the second type of error detection code. For example, the second type of error detection code used in the illustrated embodiment corresponds to a Bose-Lin code. The corresponding Bose-Lin check symbol (CS) generator 304 is advantageously compact for relatively low cost and high yield. It will be understood by the skilled artisan that other error detection codes will also be applicable and that modifications of the Bose-Lin code will also apply. For example, rather than counting zeroes for Bose-Lin coding, the circuit can count ones or a combination of both (zeroes for selected lines, ones for others) to generate weight-based coding.
The Bose-Lin check symbol (CS) generator 304 generates a Bose-Lin code of the monitored outputs of the XOR gates of the diagonal BIP CS generator 302. A Bose-Lin code is a count of the number of data zeros (“0's”) in the information word, with the count taken with a pre-specified modulo. In the illustrated signature circuit, the information word corresponds to the output of the diagonal BIP CS generator 302. For example, a 2-bit Bose-Lin code corresponds to the count of the number of zeroes modulo 4. In the illustrated embodiment, the data for output bits 5 and 6 of the signature register are from the Bose-Lin check symbol (CS) generator 304.
For counting a relatively large information word, it can be impractical to implement an adder array for computation of the Bose-Lin code. For example, were the diagonal BIP CS generator to be modified to increase the number of corresponding output bits, the adder array for implementation of the Bose-Lin CS generator can be too large to be practical. Such a large adder would likely be ill-suited for the desired speed and circuit size criteria. For example, the adder array would be relatively large and deep, or a relatively larger number of input signals would need to be grouped together in XOR arrays, which also increases the logic size and depth.
The use of Bose-Lin codes or similar weight-based codes as a second type of error detection code is unusual in this application. Bose-Lin codes are optimized and typically used for unidirectional errors. Unidirectional errors are those in which all errors are either 0-to-1 or 1-to-0, but not both within the data block covered by a particular code. If both 0-to-1 and 1-to-0 errors occur within the same data block, these errors are described as bi-directional. Unidirectionality of errors for inputs that are provided to the Bose-Lin CS generator are not guaranteed at the outputs of a diagonal BIP CS generator. It should be noted that in the presence of bi-directional errors, a Bose-Lin code will only fail to detect a fault when it produces a difference in the number of “0's” in the data block such that this difference is equal to a multiple of the code's modulo. The most common case of undetectable errors should be when the multiple is zero, i.e., there are an equal number of 0-to-1 and 1-to-0 errors within the data block.
Binary Counter Implementation
The implementation with the binary counter is advantageously compact, especially for relatively large numbers of signature register output bits. The binary counter implementation takes advantage that it is not necessary to perform the check using the second type of error detection code over an entire diagonal BIP CS generator in parallel. With a diagonal BIP, such as the diagonal BIP generator 402, the results of each bit are effectively rotated through the corresponding registers. A Bose-Lin encoder can be implemented by a binary counter producing a count of the number of zeros that appear at the output of a single register stage over the course of set of test vectors. In the illustrated embodiment, the output of the n-th register R is used as an input to the enable input of the binary counter of the Bose-Lin CS generator 404. However, it should be noted that the output of any of the registers R can be used.
In addition, it should be noted that while the binary counter is enabled in the illustrated embodiment when the output of the n-th register is low or logic “0” to correspond to the Bose-Lin check symbol, that a check symbol can also be generated using the opposite polarity, i.e., counting ones. However, it should be noted that this “counting ones” configuration would not be called a Bose-Lin check symbol.
For this signature register application, the Bose-Lin code and similar codes have an advantage of using a different method than the primary code, i.e., the diagonal BIP, which uses a parity check. The binary counter implementation is also relatively simple and compact to implement because a serial input can be used. For faults that affect the signals on only one of the circuit under test (CUT) outputs to the signature register R block, this serial implementation is functionally and mathematically equivalent to applying the Bose-Lin code to all of the signature register R inputs. That is, the effects will be rotated into the Bose-Lin coder so that each individual effect is typically observed by the Bose-Lin coder. When a fault affects multiple CUT inputs to the signature register, the performance of the circuits in
Because the Bose-Lin code should observe the change from a fault before it is effectively masked by a subsequent input to the diagonal BIP resulting from the circuit under test (CUT) fault, the Bose-Lin detection capability is effectively independent from the diagonal BIP. It can be strictly independent if the fault affects only one of the inputs. Hence, the probability of detecting a fault is approximately the product of the diagonal BIP and Bose-Lin detection probabilities. Simulations indicate that Equation 2 approaches 0.01 for test vector sets with several hundred vectors, so it follows that the probability of detecting a fault with the signature circuit of
PDET≈1−(0.01)(2−n) Equation 3
As illustrated by Equation 3, adding a 2-bit Bose-Lin CS generator as described in connection with
PDET≈1−(0.01)(2−2) Equation 4
It should be noted that a Bose-Lin coder can also be added to the conventional Multiple Input Signature Register (MISR) to increase performance. For example, an output of a register, such as an output of the last D-FF to the right of
As illustrated in
While virtually any signature implementation will be able to detect a single bus value difference over the course of the test vectors, it is relatively difficult to detect faults that change a large number of values. For example, if a fault causes the processor to jump to the wrong section of memory for its instructions, there would be a very large change to the values appearing on all bus signals over the course of the test vectors.
Embodiments of the invention advantageously reduce IC cost. By improving the fault detection capability of the test circuit, a smaller number of test vectors may be used, reducing the cost of the factory tests that verify whether the IC is good. The relatively shallow logic of the disclosed embodiments also reduces the impact of the test circuits on the clock rate at which the test vectors can be run, which can result in further decreases in testing time. The compact circuit size reduces the impact of the test circuit on the die size. Increased fault coverage also reduces the probability that the IC will be returned by the customer due to a defect that was not detected during test.
Various embodiments have been described above. Although described with reference to these specific embodiments, the descriptions are intended to be illustrative and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art without departing from the true spirit and scope of the invention as defined in the appended claims.
This application claims the benefit under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 60/558,713, filed Apr. 1, 2004, the entirety of which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5938784 | Kim | Aug 1999 | A |
5960009 | Gizopoulos | Sep 1999 | A |
6247154 | Bushnell et al. | Jun 2001 | B1 |
6681357 | Pendurkar | Jan 2004 | B2 |
6701476 | Pouya et al. | Mar 2004 | B2 |
6715105 | Rearick | Mar 2004 | B1 |
6920604 | Coakeley et al. | Jul 2005 | B2 |
20020184582 | Pouya et al. | Dec 2002 | A1 |
20020184586 | Pendurkar | Dec 2002 | A1 |
20060179393 | Harter et al. | Aug 2006 | A1 |
20070245133 | Weiberle et al. | Oct 2007 | A1 |
Number | Date | Country |
---|---|---|
2002-243805 | Aug 2002 | JP |
Number | Date | Country | |
---|---|---|---|
60558713 | Apr 2004 | US |