Abstract:
Shift register latch scan strings employed in level sensitive scan design methodology for built-in circuit self-test are provided with bypassable portions which are made to serve effectively as address registers for arrays which are embedded in blocks of logic for which the scan strings are meant to provide pseudo-random excitation test data. Additionally, the bypassable portion of the scan strings is connected to an address stepper mechanism which insures complete coverage throughout the range of cell addresses within the array. This is accomplished through the utilization of a stepping counter or the utilization of an linear feedback shift register or similar mechanism. It thus becomes possible to insure that every cell address in the array is provided with known pseudo-random data at the beginning of a test and which is also capable of readily providing array cell content information at the end of the test and/or at various times during test.

Description:
BACKGROUND OF THE INVENTION 
     The present invention is generally directed to built-in self-test logic circuitry used in conjunction with the design of electronic integrated circuit chip devices and systems. More particularly, the present invention is directed to circuits and a method for testing logic blocks which include memory arrays embedded therein. 
     As the packing density of integrated circuit chip devices has become greater, there has also appeared a greater need for the testing of such devices. In particular, built-in self-test methodologies have provided decided advantages in a wide range of circumstances. Even more particularly, the self-test method which employs level sensitive scan design (LSSD) methodology has proven to be particularly effective. In this approach to self-test, shift register latches, usually comprising a master and slave latch in each shift register latch pair, are connected together in a long scan string which operates in many ways like a shift register. These scan strings are provided with data which is used to drive blocks of combinatorial logic which are being tested. Likewise, scan strings are also employed to collect output signals from these logic blocks in response to known, albeit pseudo-random, input signals. These logic blocks are typically constructed using computer aided design methodology which models ideal physical behaviors. However, during fabrication it is possible to produce circuits which do not perform in complete conformance with the model. However, the computer aided design methods do provide a method of being able to define desired output sequences given specified input sequences. Thus it is generally possible to determine if the output signals collected via the scan strings represent desired output responses. 
     Because of the increasing complexity of these circuits and the number of possible input and internal state conditions, it is not possible to do exhaustive tests because the number of test vectors that would have to be employed is too large for test operations to be run in a reasonable length of time. Accordingly, pseudo-random pattern testing is employed. In this methodology, pseudo-random patterns are generated as input data to the logic block being tested. This pseudo-random data is typically generated by means of a pseudo-random pattern generator which is typically provided in the form of a linear feedback shift register (LFSR) whose outputs are used to provide pseudo-random data to one or more scan strings of shift register latches. The linear feedback shift register is typically constructed so as to cycle through pseudo-random state conditions in a manner in which a maximum amount of time elapses before a state is repeated. This is accomplished through suitable and well known methods for connecting the feedback elements in the LFSR. 
     The above methodology is very effective for testing blocks of logic circuitry. However, in those situations in which the block of logic circuitry includes an array structure, testing becomes much more difficult. Such array structures provide a memory function within the logic block. More particularly, the memory function provided by an array is such that, for test purposes, it is extremely desirable to be able to test or exercise each cell in the array. For purposes of the present discussion, the term &#34;cell&#34; is used to refer to all of those memory bit positions which are accessable using a single address. In order to test every cell in the array, it is necessary to access the array using all possible addresses. However, there is a significant problem in doing this using pseudo-random test data which is scanned into shift register latch scan strings. This pseudo-random data cannot guarantee the generation of all of the addresses needed to initialize cells in the embedded array and likewise cannot guarantee access to all of the data contained in the array for the same reason. 
     Moreover, for the initialization of embedded arrays for test purposes, one needs to know what values are stored in the array. It is noted however that it does not matter what values are stored, but only that their values can be ascertained ahead of time and can be repeated. However, since it is possible to externally control starting states of LFSR devices and to therefore provide known scan-in data to the scan strings, it is always possible to supply data input to various cell location in the array. Even though this data is effectively pseudo-random, it is still nonetheless known. However, with respect to the addresses, pseudo-random data supplied to the address lines of the array is not by itself sufficient to insure complete coverage of every address in the array. Thus, built-in self-test methodologies employing pseudo-random pattern excitation for array initialization purposes is difficult to apply when there is an array embedded within the block of logic being tested. Furthermore, there is an additional constraint in that when the tests are over, one wishes to ascertain what is finally in the array. 
     Additionally, it is noted that when logic blocks contain arrays, self-test isolation effectiveness would be greatly increased if there was a capability to rapidly initialize arrays with pseudo-random patterns and to rapidly form signatures on the array contents. These signatures are typically generated from scan out data which is used to drive a sensitive linear feedback shift register whose end state is very much dependent upon correct input of signals shifted out of the scan string. 
     Additionally, it is noted that in any given block of logic which is part of the built-in self-test LSSD methodology, it is also possible to encounter circumstances in which the block contains multiple numbers of array structures. Thus the problem of testing arrays becomes that much more difficult. 
     It is also noted that in logic testing in general, isolation effectiveness for error conditions is important. Thus, it is generally desirable to be able to break up a test into a series of many short tests each consisting of a much smaller number of patterns without loss of test coverage. In order to achieve this objective, it is important that arrays which are present in logic blocks be initialized quickly not only because the pseudo-random initialization state of arrays results in pseudo-random data from the array almost immediately, even for the first few patterns of a test but also because array contents are quickly checked. Thus, in any test mechanism, there should be a mechanism for the ability to perform multiple short tests as opposed to one long test because of the superior isolation results for failing test conditions. Thus with short tests, quicker isolation of faults during manufacturing and in the field is possible. 
     SUMMARY OF THE INVENTION 
     In accordance with a preferred embodiment of the present invention, a portion of a shift register latch scan string is dedicated for use as an address register which is used to control the addresses to which and from which pseudo-random data is read into and out of an array which is part of a logic block subject to being tested in using data contained within the scan string. Accordingly, a mechanism is provided for bypassing the flow of data through a portion of the scan string to avoid storage into this portion of pseudo-random data from the scan string. Instead, this portion of the array is provided with a separate address stepping mechanism which is preferably in the form of a single step incrementer or counter, but may also comprise an LFSR circuit. In this fashion, pseudo-random data including a known starting address can be scanned into the scan string including the address register portion, after which the address portion may be bypassed. During the bypass time, the address register portion of the scan string is stepped through a sequence of addresses. Here it is important to note that the addresses employed cover every cell address in the array. Here advantage can be taken of the fact that the order in which the array is filled or read is not important. 
     Thus, in accordance with a preferred embodiment of the present invention, a circuit is provided for supplying test signals to a logic block which contains an embedded array element. The circuit comprises a shift register latch scan string along with means to bypass a portion of the scan string. This bypassed portion of the scan string is connected with means for cycling shift register latches in the bypassed portion through a plurality of different states. Thus this bypassed portion, including read/write (R/W) control mechanisms is used to provide address signals for the array. In this way, the array may be quickly and completely loaded with known pseudo-random patterns. 
     Accordingly, it is an object of the present invention to provide a mechanism which allows testing of arrays embedded in logic blocks. 
     It is also an object of the present invention to provide a method for rapidly and completely loading embedded arrays with pseudo-random values. 
     It is yet another object of the present invention to provide a method for rapidly and completely checking array contents. 
     It is a still further object of the present invention to provide a method for testing logic blocks by extending well known built-in self-test methodologies. 
     It is an additional object of the present invention to extend the applicability of level sensitive scan design methods. 
     It is a still further object of the present invention to extend the advantages of built-in self-testing to logic blocks which incorporate array elements. 
     Lastly, but not limited hereto, it is an object of the present invention to provide a mechanism for employing a plurality of short test sequences as opposed to longer sequences which may not be as effective for fault isolation analysis. 
    
    
     DESCRIPTION OF THE FIGURES 
     The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of practice, together with further objects and advantages thereof, may best be understood by reference to the following description taken in connection with the accompanying drawings in which: 
     FIG. 1 is an overall block diagram illustrating the use of the present invention in conjunction with a logic block containing an embedded array; 
     FIG. 2 is a logic block diagram circuit illustrating the mechanism for addressing stepping through the embedded array; 
     FIG. 3 is a logic block diagram circuit illustrating the employment of the present invention in a plurality of scan strings which are provided with pseudo-random patterns and whose outputs are eventually supplied to one or more signature registers. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 illustrates a preferred embodiment of the present invention. More particularly, FIG. 1 illustrates the present invention employed in its operating environment providing test signals to logic block 30 which includes embedded array 35. Apart from MUX unit 20, the remaining portion of the scan-in chain forms a portion of a shift register latch scan string which comprises shift register latches (SRL) 10, and shift register latches 12, 16 and 18 grouped for convenience as data-in register, address register, and read/write (R/W) control line register respectively. In particular, it is noted that data-in register 12 preferably comprises a string of shift register latches 10. This is also true of address register 16. Since the read/write control signal for an array is only one bit in length, read/write control register 18 only needs to comprise a single shift register latch. 
     It is noted that the shift register latch scan string not only functions to provide test signals to logic block 30 during test operations, but in addition, the scan string also functions to provide operative signals to block 30 during normal (non-test) circumstances. However, since this function does not relate to the present invention, the signal lines for this are not shown. 
     It is to be particularly noted that logic block 30 includes embedded array 35. Such arrays are commonly employed to provide memory functions for the more flexible control of logic circuits. Such arrays require three input signal types (data, address, read/write control) and provide a single signal output function. In particular, data signals from data register 12, appearing on the output signal lines from register 12 provide the data which can be read into array 35. In particular, this data can be read into a cell in array 35 which is specified by the address in address register 16. It is the control of address register 16 which is of primary importance in understanding the operation of the present invention. This address register is used to enter data into array 35 under the control of read/write control register 18. Likewise, by changing the bit in register 18 it becomes possible to read data from array 35 which is stored in the address specified by address register 16. This data typically appears in an output register (see reference numeral 19 in FIG. 1). In a preferred embodiment of the present invention, data output register 19 comprises shift register latches 10 from the scan string shown on the right side of logic block 30 in FIG. 1. It is also possible for the scan string shown on the right side of block 30 to be a continued portion of the scan string shown on the left side. 
     If a mechanism were not provided to bypass data from register 12, then pseudo-random address information would be supplied to register 16. While there is nothing wrong per se with permitting this to happen, when it happens in this way, one loses the ability to insure that every cell in array 35 is accessed. Accordingly, at some point in time the scanned-in data is prevented from reaching address register 16. This is preferably controlled by means of suppressing the scan clock signal to registers 16 and 18 under control of Array Scan Mode control line (ASM) 21. It is noted that while FIG. 1 shows data register 12 and address register 16 adjacent to one another in the scan string shown, it is not necessary that this be the case. For example, it is possible that registers 12 and 16 be separated from one another by one or more shift register latches 10. Additionally, it is noted that data register 12 could in fact come after address register latch 16 (that is, &#34;downstream&#34; in the scan path) although this is not preferred. 
     Additionally, multiplexer unit (MUX) 20 is preferably provided as a bypass selecting route for signals traversing the scan string. It is noted however, that it is possible to direct the left hand output signal line 14 directly to a multiple input signature register (MISR) or the like (reference numeral 50 in FIG. 3). 
     In summary, then it is important to understand that suppressing of the scan clock provides a mechanism for interrupting the flow of pseudo-random data into address register 16 which is connected to array 35 as a mechanism for providing addresses for the cells therein. Clearly then, the address information changes that occur in register 16 are brought about by other mechanisms. Accordingly, in order to appreciate these mechanisms, attention is now directed to the block diagram shown in FIG. 2. 
     In particular, it is seen that address stepper 17 is provided. Address stepper 17 may also comprise a linear feedback shift register (LFSR) together with a mechanism for detecting the all zero state and correspondingly therefore a mechanism for insuring that this state does occur as a valid address to be supplied to address register 16. Generally the skipping of the zero address in the array is not desired, although there may be circumstances where it is acceptable. Therefore, address stepper 17 may comprise what is generally known as a deBruijn counter. Since the sequencing order exhibited by address stepper 17 need not be the same as the address order for array 35, the addressing sequencing hardware in the form of a linear feedback shift register or a deBruijn sequencer is quite economical in terms of circuitry required. 
     The present invention therefore adds a signal line referred to herein as Array Scan Mode (ASM). If this signal is active, the transfer of self-test data is modified so that pseudo-random data is supplied to data-in register 12 and data from register 19 is compressed into signature register (reference numeral 50 in FIG. 3) without any alteration of the read/write controls or the address registers. When the ASM signal line is inactive, scan paths act normally for all SRL&#39;s. If Array Scan Mode (ASM) is active however, then the issuance of a signal referred to as Clock in FIG. 2 causes action described in the next two paragraphs below to take place without alteration of the following: pseudo-random data to be transferred to the data-in register, data read out of the arrays which is to be transferred to signature registers or the read/write controls. Address stepping and array write and array read (to data-out registers) are performed under control of the TEST CLOCK signal. 
     As indicated above, it is an important aspect of the problem that each array be initialized with known but possibly pseudo-random data. In order to perform this function with this invention, address register 16 is initialized to a starting address. Array read/write (R/W) control 18 is initialized to the write state and data-in register 12 is initialized with a pseudo-random pattern. Typically these parameters are all initialized via scan-in along the scan path with signal line ASM inactive. The array scan control signal is activated and the following steps are repeated alternately until at least all words of the array are loaded with pseudo-random values: first a clock pulse is issued which causes the array words specified by the address register to be written with the contents of the data-in register 12 and address register 16 is stepped to the next successive address. Secondly, a new pseudo-random pattern is transferred to data-in register 12, typically by scan-in operation. This is repeated for as many times as it takes to fill the array with the desired data. 
     With respect to signature information for each array, the following operations are carried out. First, address register 16 is initialized to a starting address and the array read/write control SRL 18 is initialized to the read state. Typically, these are initialized via the scan-in data path. The array scan control signal is activated and the following steps are repeated alternately until all words of the array are read out. First a test clock pulse is issued which causes the array words specified by the address register to be read into data-out register 19 and address register 16 is stepped to the next successive address. Secondly, data-out register information is transferred down the scan path. 
     In those implementations which transfer pseudo-random data to data-in register 12 and data from data-out register 19 to the signature register by shifting, the execution time is in part, determined by the number of shifts required per address. To obtain completely independent pseudo-random patterns for each array address, enough shifts are made after each address is written to replace all bits in data-in register 12 with new pseudo-random bits. If some correlation is acceptable, then fewer shifts per address may be adequate. The transfer of data from the data-out register 19 requires that the data be shifted enough times after each address is read so that future array operations do not overwrite the data. 
     The present invention is also particularly applicable to those situations in which multiple arrays are present. This situation is illustrated in FIG. 3 which also shows address register stepping mechanism 17 in position in several scan strings. For clarity, bypassing function aspects are not shown in FIG. 3. 
     In terms of multiple array considerations, if paths for inputting pseudo-random patterns and transferring data-out register contents to signature registers can be run in parallel, then the invention is capable of processing multiple arrays in parallel. Since each array or array group has its associated address register, all addresses may be incremented simultaneously. The invention specifically allows for the possibility of a single path having registers for more than one array. This is in particular illustrated in the middle portion of FIG. 3. 
     In the simplest implementation of the present invention, the minimum number of shifts for array pseudo-random initialization is about equal to the product of the greatest number of addresses in any array and the maximum number of shifts required to load a new pseudo-random pattern into all data-in registers 12 in any one path; and the minimum number of shifts for array signature formation is about equal to the product of the greatest number of addresses in any array and the maximum number of shifts required to move data out of all data-out registers 19 in any one path. 
     In addition to the situation involving multiple arrays, FIG. 3 also illustrates the use of the present invention employed in a so-called self-test using MISR and parallel SRSG environment. In particular, FIG. 3 illustrates the presence of several parallel scan paths. The scan paths are used for scanning, for transferring pseudo-random patterns to latches and for forming signatures on the latch contents. 
     For purposes of the present invention, data in registers 12 are preferably located close to the entry points of each scan path and data-out registers 19 are preferably located close to the exit points for each scan path. These placements ease maintenance of integrity of incoming and outgoing data when clock pulses are issued. 
     Pseudo-random initialization of arrays requires as few as one shift of the scan paths per address if some correlation between the patterns at various addresses is acceptable. For signature formation, the number of shifts of the scan paths is at least as large as the maximum number of data-out register bits in any scan path. 
     In one mode of operating the present invention, the read/write controls are designed to execute signature formation and initialization in one pass. In this case, two clock pulses are issued between each set of shift operations. The first clock pulse results in the read operations and the second clock pulse results in the write operations along with stepping of the address register. This results in higher execution speed. 
     Additionally, the invention is also usable to quickly check arrays for DC fault conditions by alternately initializing all arrays with pseudo-random patterns and forming signatures on all arrays. A relatively small number of repetitions results in a thorough checkout. Alternatively, regular patterns are used for fast array checking. Regular patterns are generated by first initializing data-in registers 12 with the desired values and then using the present invention to write all array words without ever shifting new values into data-in registers 12. 
     From the above, it should be appreciated that, through the addition of relatively simple hardware to a self-test environment requirements, the testing of embedded arrays becomes much easier and effective to perform. It is also seen that the invention extends and enhances the opportunities for applying the benefits of level sensitive scan design methodologies to more complicated and dense circuit patterns. It is also seen that the apparatus and method of the present invention provide greater flexibility with respect to the scanning-in and scanning-out of information and also provide greater flexibility with respect to those situations in which multiple arrays are embedded in logic blocks. Lastly, it should also be appreciated that the present invention achieves all of the aforementioned objects. 
     While the invention has been described in detail herein in accord with certain preferred embodiments thereof, many modifications and changes therein may be effected by those skilled in the art. Accordingly, it is intended by the appended claims to cover all such modifications and changes as fall within the true spirit and scope of the invention.