Method and apparatus for testing a VLSI device

Abstract: A method and apparatus for testing a VLSI device 10 are described. The invention uses the idea that the internal logic of the VLSI device can be broken down into linked sections or cones. Thus, after completing the test of all the logic gates 110, 120 in one cone of the device 10, it will not be necessary to retest those gates 120 which overlap into other cones. Hence, some of the bit values placed on the input latches 30 to the device 10 are irrelevant to the test. The apparatus incorporates a Linear Feedback Shift Register (300) which is fed by a seed to produce a bit pattern to test the VLSI device (10). The seed is so chosen that the LFSR generates the required bit values on the input latches 30 which are required for the particular test being carried out and pseudo-random values for all other latches.

Description: Field of the Invention The present invention relates to methods of testing complex combinatorial and sequential logic circuits embodied in very large scale (VLSI) devices. Description of the Prior Art A fault occurring anywhere in a VLSI device can have its effect propagated through a number of gates before reaching a testable output of the device. Level sensitive scan design (LSSD) rules were devised to eliminate the complications in testing caused by this propagation. These rules, which were first published in an article entitled "A Logic Design Structure for LSI Testability" by E.B.Eichelberger and T.W.Williams in the Proceedings of the 14th Design Automation Conference, pp 462-468, impose a clocked structure on the logic circuit and require all the inputs and outputs of the logic circuits to be tied together to form a series of shift register scan paths. Fig. 1 shows a simplified tester built using these principles. Test unit 40 comprises a memory 42 to store the test pattern data, means 44 to simulate the response to the device under test and means 46 to supply the test pattern to the device under test. Test signals generated in unit 40 can therefore be applied to the device under test 10 using the device inputs 30 which are connected together to form a shift register. The input values are clocked through the shift register from the unit 40 using the connections shown as dotted lines on the Figure. After the test has been carried out by clocking the input values through the logic circuit 15 to be tested, the results appear at the output latches 20 which are also connected together to form a shift register. These output values are clocked out of the shift register into the comparator 50 which compares the obtained results with the simulated expected results and signals if there is a difference which would indicate the presence of a fault in the device under test 10. The conventional method of generating logic test patterns is known as "Deterministic Stored-Pattern Testing" (DSPT). This involves using a deterministic algorithm to produce patterns which guarantee detection of specified logical faults which include, but are not limited to, stuck-at faults (i.e. faults in which a gate does not change its output in response to an input). Since each test pattern and its expected output response are stored as uncompressed vectors of signal values in the tester, large amounts of memory are required. It has been shown that as circuits become more complex, the number of possible stuck-at faults grows spectacularly as the number of gates in the circuit increase. The implication is that the number of possible test patterns required in order to test the circuit will also greatly increase. Hence the time required to test the circuit will be extended and memory requirements for storing all the test vectors will increase. In order to reduce the time taken to generate the test patterns and the amount of memory required to store the patterns generated, so-called self-testing methods have been developed. These involve the use of pseudo-random pattern generators and response compression structures actually built into the device. Using such structures eliminates the computer time needed to generate the tests, whilst placing the elements required for testing directly to the device under test. This allows the application of large number of test patterns to the device, in a reasonable length of time. In two articles by Konemann, Mucha and Zwiehoff, "Built-in Logic Block Observation Techniques", 1979 IEEE Test Conference, pp37-40, Cherry Hill, NJ, October 1979 and "Built-in Test for Complex Digital Integrated Circuits", IEEE J.Solid-State Circ, vol SC-15, Nr 3, pp 315-319, June 1980, a modification to a shift register scan path - called the linear feedback shift register (LFSR) - was disclosed which could be used as an input signal generator and/or as an output data compression circuit. A special self-test architecture is known as the STUMPS method, STUMPS being short for Self-Test using a MISR (multiple-input signature register) and a Parallel SRSG (shift register sequence generator). The basic principles of the method are well known and are described in a number of documents (e.g. EP-B-0 108 256 (IBM), US-A-4 519 078 (KOMONYTSJKY), US-A-713 605 (IYER et al), US-A-4 910 735 (YAMASHITA) or B.I.DERVISOLGLU "Scan-path architecture for pseudo random testing", IEEE Design and Test of Computers, Aug 1989, pp 32-48). It is found that, although STUMPS greatly reduces the amount of test data storage required, the quality of the tests is not high. An article by BASSET et al, "Low-cost testing of high density logic components", IEEE Design and Test of Computers, April 1990, pp 15-27, reports that one can only expect 90% fault coverage from STUMPS for a representative cross-section of chips. A combination of STUMPS and DPST would, it was concluded in the same article, increase the fault coverage. However, in order to determine the last 5 to 10% of faults (the so-called self-test escapes), experience has shown that one must generate 50-70% of the complete set of DPST test patterns. Instead BASSETT et al favoured the use of the Weighted Random Pattern Test (WRPT) in which the design of the LFSR pattern generator is changed to produce a variable distribution of logical 1's and 0's for each test pattern input bit. This method selectively biases the input latches to a greater probability of 1 or 0 as required. Although fault coverage was much improved over the STUMPS method, substantially more complex hardware was needed to generate the pattern. An article by J. WAICUKAUSKI et al entitled "A method for generating weighted random test patterns" in the IBM Journal of Research and Development, vol 33, nr 2, March 1989, pp149-161, illustrated a number of ways in which WRPT patterns could be generated. The results obtained, however, suggested a fault coverage of 94-99% and thus deterministic pattern testing in the order of 50% of a full stored pattern test will still be required if one wishes to detect 99.9% of all faults. None of the prior art discloses the use of an LSFR circuit to simultaneously produce input patterns and to compress output results. Summary of the Invention It is an object of the invention to provide a method and a test pattern generator which can be used for testing the logic of a device. The means used for generating the test pattern does not require complex hardware nor large amounts of memory space to store the individual test pattern. The test pattern generator can be directly incorporated onto the chip as well as being built into a stand-alone pattern tester. If incorporated onto a chip, the pattern generator can be further advantageously used for self-testing the defice. The invention achieves these objects in accordance with the invention as defined in the claims. Brief Description of the Drawings Fig. 1 shows the basic method of testing a device. Fig. 2 is an illustrative example of a device under test, showing the logic gates connected between the input and output gates. Fig. 3 shows a simple linear feedback shift register. Fig. 4 shows an example of the generation of a seed. Detailed Description of the invention The basic principle behind the invention can be understood by considering Fig. 2 which shows the internal logic of a typical device under test. The device consists of a number of internal logic gates 110a-f, 120a-c, 130a-h connected between input latches 100a-n and output latches 140a, 140b. It should be noted that this is merely an illustrative example, in practice a device under test would have many more input and output ports and many more logic gates connected between these ports. The input and output latches are separately connected together each to form a scan path represented by the dotted line in the Figure. If we now consider the pathways through the logic circuit of the device leading to the output latches 140 from the input latches 100, it can be seen that the values on the input latches 100a to 100h will affect the responses output on 140a. Similarly, the values on the input latches 100e to 100n will affect the results on output 140b. This means that two 'cones' can be defined, one of which runs from latches 100a to 100h to the output latch 140a and the other of which runs from input latches 100e to 100n to output latch 140b. These cones are marked on the Figure by the dashed lines. It will also be noted that the two cones overlap and that logic gates 120a-c are in both cones. This means that, if all of the logic gates in cone 1 have been tested and shown to have no faults, then in principle only those gates in cone 2 which do not also fall into cone 1 need to be tested in order to complete the test of the circuit (i.e. gates 130a-h). It should also be noted that, when testing cone 2, the values of the bits placed in latches 100e-h cannot be ignored since the output of tested logic gate 120c is connected to the input of untested logic gate 130f. However, the values of the bits placed in latches 100a-d are irrelevant to the test of the latches in cone 2. This means that three different types of bits can be defined which are placed in the latches 100a-n in order to test the logic gates: test-relevant bit positions (labelled R in table 1) which have to take specified values in order to test the cone; support-net bit positions (labelled A in table 1) which must have one of several specific values in order to test a cone and non-relevant bit positions (labelled X in table 1) whose value is not important in testing the cone. Table 1 shows the three different test procedures which are required in order to thoroughly test the logic network of Fig. 2. In procedure A only the values contained in latches 100e-h are significant for testing the logic gates 120a-c contained in the overlap of the cones. During the testing procedures all possible combinations of 1's and 0's will be therefore placed on these latches 100e-h so that logic gates 120a-c are tested under all conditions. The bits stored in latches 100a-d and 100i-n are relevant only in that a meaningful output must be obtained at the output gates 140a and 140b. In procedure B, the gates in the individual cones are tested but not those in the overlap (i.e. gates 110a-f and 130a-h but not 120a-c). This means that the values of the bits placed in latches 100a-d and 100i-n are test-relevant and are cycled through all possible 1's and 0's combinations but those in latches 100e-h are only support-net inputs. Finally in Procedure C, only the logic gates 130a-h in cone 2 are tested. Again the bits in latches 100j-n are test-relevant and all possible combinations tested but the bits in latches 100f-h are support-net bits. However, in this case the values of the bits in latches 100a-d are irrelevant to the results of the test. It can therefore be seen that a large number of the test patterns which might be used for testing the logic gates in the device under test are redundant since they will generate no new information about faults in the circuit. This idea of test-relevant bits can be used in conjunction with an LFSR to generate the test patterns for testing logic circuits. To see how this works, the method of generating patterns using an LFSR must first be reviewed. Fig. 3 shows a simplified LFSR 200, consisting of three latches 200a-c which produces an output 205 which can be clocked through to the scan path 210. The output of latch 200a is connected to both an XOR gate 202 and to the latch 200b. The output of latch 200c is connected both to the output 205 (and hence into the scan path 210) and also to the XOR gate 202. As the data is clocked through the LFSR (meaning that the value of 200a is placed in 200b, the value of 200b is placed in 200c and the value of 200c is transferred to the scan path), the new value of 200a is the result of the XOR operation on the previous value of 200a and the previous value of 200c. By choosing the appropriate initial values for the latches 200a-c in the LFSR 200, we can generate any possible combination of bits in the scan path. Fig. 3 shows how the initial value of 100 loaded into the LFSR 200 generates a series of 0's and 1's through the scan path 210. Now suppose that, instead of wishing to generate the pseudo-random test pattern as shown in Fig. 3, it is wished to generate a test pattern in which the bits stored in some of the latches 210 of the scan path are fixed. These bits represent the test relevant bit positions which were described above. Fig. 4a shows such a simulated scan path 310 in which the bits stored in latches 310c and 310e are set to be 1 and 0 respectively. The values of the bits stored in the other latches are not relevant. If, for the purposes of calculation, the values of the latches 300a-c of the LFSR 300 are arbitrarily set to a,b,c respectively, then we can 'clock back' the bits from the simulated scan path 310 into the LFSR 300 to obtain the initial 'seed' values for the LFSR 300 which can then be later used to generate the required test pattern with the test relevant bit positions having their required values. This clocking back procedure, which is carried out as a simulation and does not physically happen on the device under test 10, is illustrated by the various steps marked on Figure 4a. In the first step the values stored in the latches 310b-g are all moved one latch to the left. So that the value previously stored in latch 310g is now stored in latch 310f, the value in 310f is now stored in 310e and so on. The value stored in latch 310a is ignored since it is a non-test relevant bit and thus latch 300c should take the result of the XOR operation performed by gate 302 on the values previously stored in latches 300a and 300b. In fact since, at this stage, no test relevant bit values have been clocked back from the scan path 310 into the LSFR 300, the value stored in latch 300c is purely arbitrary and it can be defined to be 'a' for simplicity. In the next step, the values stored in latches 310b-g are again moved one latch to the left. The value contained in latch 310a is now a test relevant bit and has the value 1. It is passed to latch 300c of the LSFR 300. The value that should be stored in latch 300c at this step is the result of the XOR operation performed in XOR gate 302, i.e. b+c. Thus we define the result of this XOR operation to be 1. In step 3 and step 4, the values stored in latch 310a are non relevant test bits and hence the value stored in latch 300c is not required to take any value and is therefore the result of the XOR operation of the values stored in latches 300a and 300b. In step 5, however, latch 300c is fed with the test relevant bit 0 from latch 310a. This defines the result of the XOR operation 1 + (a+c) to be 0 since latch 300a previously contained the value of 1 and latch 300b the value a+c. The simulation is continued for two more steps 6 and 7 even though the last two values are non relevant test bits. These steps are, however, necessary to ensure that the LSFR 300, when generating the complete test pattern, will produce bits with known values for all the latches 310a-g of the scan path 310 including the test relevant bits in the correct positions. The result of this operation can be seen from the final step 7, latch 310a must contain a 0, latch 300b will contain the value a and latch 300c will contain the value of a+1. Since a can take the value either 0 or 1, this means that two seeds (001 or 010) will generate the required test pattern. Fig. 4b demonstrates this for the seed 010. Of course, in an actual test situation, the scan path would not consist of a mere seven latches of which only two values will be test relevant and thus have their values fixed. However, by increasing the size of the LFSR and by choosing suitable feedback paths for connection to XOR gates, it will be possible to generate any required pattern. Since only the seed for feeding the LFSR needs to be stored, the amount of memory required to implement this test pattern generating system is much smaller than would be required to directly store all the deterministic patterns. The described test pattern generator can be either implemented directly on the chip to enable rapid self-testing of the device or it can be incorporated into a test apparatus to which the device is attached. In order to save more memory space and to speed up the testing process, the output results from testing can be additionally compressed using commonly known methods such as the multiple input signature register (MISR) described in the article by J.L.CARTER, "Improved signature test for VLSI Circuits", IBM Technical Disclosure Bulletin, vol 26, no 3A, August 1983, pp 965-967.

Claims: Apparatus for testing a logic device (10) comprising means (40) for generating a test pattern for testing the device (10), wherein said device has device inputs (30) for loading the initial test pattern into the device (10); and device outputs (20) for outputting the results from the device (10); means (50) for comparing the output results from the device with the results expected and; means for signalling whether the said logic device has passed the test characterised in that said means (40) for generating a test pattern produces predetermined bit values on predetermined ones of said device inputs (30) and pseudo-random bit values on others of the said device inputs (30), with the input test data pattern being simultaneously generated by said means (40) for generating, said means (40) for generating a test pattern comprises a linear feedback shift register (300) and the said linear feedback shift register (300) is fed by pre-calculated initial values, i.e. seeds. Apparatus for testing a logic device (10) according to claim 1 further characterised in that the said device inputs (30) are connected together to form a shift register scan path which is further connected to the said means (40) for generating a test pattern for testing the device (10). Apparatus for testing a logic device (10) according to claim 1 further characterised in that the said device outputs (20) are connected together to form a shift register scan path which is further connected to the means (50) for comparing the output results from the device with the results expected. Apparatus for testing a logic device (10) according to claim 3 further characterised in that the means (50) for comparing the output results from the device with the results expected includes means to compress the data before carrying out the comparison. Apparatus for testing a logic device (10) according to claim 4 further characterised in that the said device outputs (20) and the means (50) for comparing the output results from the device with the results expected together form a multiple input signature register. Apparatus for testing a logic device (10) according to any of the above claims characterised in that the said apparatus is part of a logic device testing machine into which the said logic device (10) is placed. Apparatus for testing a logic device (10) according to claims 1 to 6 characterised in that the said apparatus is incorporated into the chip on which the said logic device (10) is constructed and is used for self-testing the said logic device (10). Method for testing a logic device (10) comprising generating a test pattern; clocking the test pattern through the said logic device (10); comparing the results output by the chip with the expected results and; signalling if a difference is found; characterised in that the said method of generating the test pattern includes calculating which device inputs (30) are relevant for the desired logic gates and generating a seed, i.e. a pre-calculated initial value for use in a linear feedback shift register (300), wherein said linear feedback shift register simultaneously generates the device inputs being relevant for said desired logic gates and pseudo-random bit values for the not desired gates. Method for testing a logic device (10) according to claim 8 further characterised in that said method for comparing the results output by the chip with the expected results and signalling if a difference is found includes compressing the output results and comparing said compressed results with said compressed expected results.

Inventors: DIEBOLD ULRICH DIPL-ING, RIEGLER JOACHIM DIPL-ING, ROST PETER DIPL-ING, SCHMIDT MANFRED DIPL-PHYS, TORREITER OTTO DIPL-ING, VERWEGEN PETER DIPL-ING, WEILAND DAWN, WENDEL DIETER DIPL-ING, DIEBOLD, ULRICH, DIPL.-ING., RIEGLER, JOACHIM, DIPL.-ING., ROST, PETER, DIPL.-ING., SCHMIDT, MANFRED, DIPL.-PHYS., TORREITER, OTTO, DIPL.-ING., VERWEGEN, PETER, DIPL.-ING., WEILAND, DAWN, WENDEL, DIETER, DIPL.-ING.
Applicants: IBM, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1990
Main classification: G06F11
IPC codes: G06F11, G01R31