1. Technical Field
The present invention generally relates to the integrated circuit devices, and in particular to an improved system for testing for faults in multiprocessor integrated devices.
2. Description of the Related Art
Logic built in self test (LBIST) architecture is utilized to test the integrated circuit logic of high-end servers and computers. LBIST technology may exist at the integrated circuit level, multiple chip module (MCM) level, and/or system level. One of the primary advantages of LBIST is that the operation of the test is self-contained (i.e. all of the circuitry required to execute the test is contained within the integrated circuit).
The basic technology of LBIST utilizes a pseudo-random pattern generator (PRPG) to generate inputs to the internal scan chain of a device under test. Pseudo random patterns are shifted in to the scan chain of the device under test to initialize the latches of the scan chain. Following a sequence of functional (and hold) cycles, the latch values are shifted out and captured by the multiple input signature register (MISR). The compressed response that results from the MISR is called the signature. Any corruption in the output signature indicates a defect in the device. This process is repeated for thousands of loops to improve test coverage, with each loop having a unique input pattern.
Upon completion of the LBIST process, the MISR value (or signature) is analyzed. If the MISR signature does not match the expected signature, one or more faults are assumed in the logic. Locating the faults in the logic requires extensive work. The MISR registers the LBIST signature; however, there is no information of which latch within the device core failed, or the loop number of the failed latch. To identify failed latch positions, LBIST must first be executed on a working device, or chip. After each loop, all latch values are scanned and stored in a file. The identical LBIST pattern is executed again on devices with faults. Again, after each loop the latch values are scanned and stored in a file. Failing latches and loops are identified when values obtained from the working device and values obtained from the failed device are compared at the end of the entire sequence of loops.
Additionally, with current implementations of LBIST, diagnostics of failures are difficult since the pass/fail determination is made simply on the final MISR value, which provides no indication of when the fail occurred. Given the large number of loops in the LBIST, the resulting pass/fail determination following the entire testing period does not enable a designer or tester to identify the actual sequence which fails.
Disclosed are a method and system for identifying failures in logic devices, such as multi-core processors, utilizing enhanced logic built-in self test (LBIST) technology. Multiple identical processor cores are tested with LBIST and pseudo-random pattern generator (PRPG) circuitry associated with the multiple cores. Controlled by LBIST control logic, PRPG inputs an identical test pattern into scan chains within the processor. This test pattern is executed during the scan shift phase of each LBIST loop. Logic output generated by each scan chain output in a processor core is compared to corresponding scan chain outputs from other processor cores. Failures within the multi-core processors are determined by logic output generated within the latch sequence of the cores. When the logic output from a latch sequence within a core does not match logic output from the other identical cores, then the latch number, loop number, and latch values are recorded as failed.
In one embodiment, a method for executing LBIST on a multi-core processor is provided. Associated with each core of the multi-core processor is a PRPG that generates the test pattern input. A single LBIST controller is shared among the cores. Similarly, a single PRPG may be shared amongst the cores, which are identical, or alternatively, each core may have a separate PRPG embedded within the core. The PRPG drives the scan chain(s) during the scan shift phase of each LBIST loop, and then, during the scan shift phase the pattern generated by the PRPG is shifted into the scan chain(s). Following the execution of the LBIST loop, the resulting logic values are shifted out, and the generated output is shifted into compare logic within the LBIST control unit.
In another embodiment, a method for determining failure in the multi-core processor is provided. The logic output values are shifted out of the scan chains and into a compare logic, where the outputs of latches under test within the same sequence are compared. The logic checks whether all resulting values within the sequence are the same (i.e. all 1's or all 0's). If the resulting output values of the latches under test match, the latch passes; otherwise, the latch with a different output value fails.
In another embodiment, a method for documenting failed latches is provided. When values of sequential latches under test are not equal, there is at least one failed latch. The compare logic then signals the record logic to store the current loop number, latch number, and latch value(s) in an LBIST table. Information stored in the table is utilized to identify the position of logic failure within the multi-core device.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.
The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
The illustrative embodiments provide a method, system and computer program product for identifying failures in logic devices, such as multi-core processors, utilizing enhanced logic built-in self test (LBIST) technology. Multiple core processors designed with LBIST and pseudo-random pattern generator (PRPG) circuitry embedded in the cores of each device are utilized for testing. Controlled by the LBIST control logic, PRPG inputs a test pattern into scan chains within the cores of each device. A new test pattern is generated and executed during the scan shift phase of each LBIST loop. Logic output generated by each scan chain output in the processor core is compared to corresponding scan chain outputs from other processor cores. Failures within the multi-core processors are determined when logic outputs generated by the cores, within a latch sequence, do not match. When logic output from a core within a test pattern sequence does not match the logic output from the other cores, then the latch number, loop number, and latch values are recorded and stored.
While the invention is illustrated and described herein with specific reference to processor cores, the features of the invention are applicable to any type of logic device(s), which are designed with LBIST functionality therein. Specific reference to processors and processor cores herein are not intended to limit the invention to this type of logic device, which serves merely as an example of the illustrative embodiment.
Also, it should be noted that the features of the invention may be implemented along with the conventional LBIST MISR based implementations within a single device. Thus, according to such an implementation, the traditional method of completing LBIST is carried out by the conventional LBIST MISR; however, the enhanced LBIST method provided by the present invention is also implemented to provide in-time detection and reporting of LBIST failures at the latch level. The invention thus provides a mechanism to obtain LBIST failure information easier and quicker, while not necessarily preventing the traditional mechanism from completing general LBIST failure detection on the same device. As further described herein, the mechanisms provided by the invention greatly simplifies the design of automated mechanisms to diagnose LBIST failures.
In the following detailed description of exemplary embodiments of the invention, specific exemplary embodiments in which the invention may be practiced are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, architectural, programmatic, mechanical, electrical and other changes may be made without departing from the spirit or scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
Within the descriptions of the figures, similar elements are provided similar names and reference numerals as those of the previous figure(s). Where a later figure utilizes the element in a different context or with different functionality, the element is provided a different leading numeral representative of the figure number (e.g, 1xx for
It is understood that the use of specific component, device and/or parameter names are for example only and not meant to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology utilized to describe the components/devices/parameters herein, without limitation. Each term utilized herein is to be given its broadest interpretation given the context in which that term is utilized.
With reference now to the figures,
Enhanced LBIST control unit 110 comprises built-in self test (BIST) controller 152, which generates all waveforms for repeatedly loading pseudo-random patterns into scan chains 126, 127, 128, and 129 during each loop sequence of testing. BIST controller 152 initiates the LBIST loop sequence, or capture cycle, for outputting the resulting logic of scan chains 126, 127, 128, and 139 to LBIST control unit 110 and MISR 118.
Enhanced LBIST control unit 110 also comprises single loop LBIST compare (SLLC) controller/logic 115. SLLC controller 115 represents the enhancement to the conventional LBIST and provides the functional features of the invention as described herein. Logic components within SLLC controller 115 are illustrated and described in further detail in
PRPG 125 generates test patterns that are passed through scan chains 126, 127, 128, and 129 so that the latches receive the bits of the generated pattern. The generated pattern propagates through the latches. Logic results of scan chains 126, 127, 128, and 139 are then scanned out of the scan chains to LBIST control unit 110 (and specifically to components of SLLC controller 115), where fault detection is initiated, as illustrated by
In one embodiment, the scan out data is returned/forwarded to a central location, which may be independent of the location of the core. The comparison of scan out data is thus not dependent on the location of one core relative to the other cores. Additionally, while the architecture described in some embodiments indicate the PRPG is tied to the core, other embodiments may have a single PRPG, which is shared among the multiple cores. These latter embodiments are particularly applicable to architectures having “LBIST identical” cores, since the test process tries to guarantee that the identical cores see the same exact pattern each time a test sequence is run.
Those of ordinary skill in the art will appreciate that the hardware depicted in
With reference now to
As described above, output from each of the multiple scan chains are received by enhanced LBIST controller 210, which includes BIST controller 152 and components of SLLC controller 115. Among the components of SLLC controller 115 are compare logic 242, loop counter 244, latch counter 246, record 248, and LBIST status table 250. These components represent the enhancements to LBIST, which enables LBIST to provide the functionality described herein, including on-the-fly, latch-level identification of failures following each LBIST loop.
Compare logic 242, which resides in LBIST control unit 210, is also coupled to the output of scan chain 216, 226, and 236. LBIST control unit 210 encompasses BIST controller 152, as seen in
During a loop sequence, loop 1202, the latches of LBIST scan chain experience a number of cycles exposing the latches to unique pseudo-random patterns. A different pattern is created with each new loop sequence. In
In one embodiment, the output from scan chains 216, 226, and 236 is transferred to compare logic 242, where the logic output of latch 1214, latch 2217, latch 3220, and latch n 224 is compared to the output from other cores, which may or may not be adjacent. Logic output generated by each core is compared to the corresponding latch in the other cores. The latch output is a one (1) or zero (0). For example, given the logic output of latch 1214 in core 1204 matches the logic output from latch 1214 of core 2206 and core n 208 (and all cores in between), then that latch sequence including core 1204, core 2206, and core n 208 (and all cores in between) passes. An example “pass” output is illustrated by latch sequence 308 in
In one embodiment, if the output of a latch in a core does not match then, compare logic 242 transfers the logic values to record 248. Record 248 also prompts loop counter 244 and latch counter 246 to input the current loop number and latch number into record 248. When record 248 has received the failed latch value from compare logic 242, loop number from loop counter 244, and latch number from latch counter 246, the data is stored in LBIST status table 250. Example “fail” output is illustrated by fail latch sequence 318 in
In one embodiment, loop 1 output table 300 illustrates passing latch values for cores one through four of cores 365, for each latch sequence. Latch sequence 308 displays all ‘1's’ representing a “pass” latch sequence. A passing latch sequence is equivalent to latch output of all ones or all zeros for core one through four of cores 365 within a latch sequence.
Failed latch sequences are identified as latch sequences with logic values that are not all ones or all zeros. In the illustrative embodiment of
In the illustrative embodiment of
Latches within the multi-core processor under test are identified as pass or fail following a comparison of the scan chain logic output. At step 408, outputs from the scan chains are compared by compare logic 242 of
Within a single loop of LBIST, the same pseudo-random pattern is shifted into each latch sequence of the scan chains, until each latch in the scan chain has been exposed to the pseudo-random pattern. Following each latch sequence, a determination is made at step 416 whether to compare the next latch sequence, or end that LBIST loop sequence. If a decision is received to compare the next latch sequence, the process returns to block 408 and repeats the compare process until each latch sequence has been compared. If there are no more latch sequences remaining, the LBIST loop ends at step 422. This process is repeated for thousands of loops to improve test coverage.
Implementation of the enhanced LBIST controller described herein enables several functional features that are not currently provided with a conventional LBIST controller. The enhanced LBIST controller enables the following beneficial outcomes, among others, from executing an LBIST sequence:
(1) Rather than simply providing a signature, which has to then be compared at the tester to determine pass/fail status, as with conventional LBIST implementation, the enhanced LBIST provides the ability to identify the exact failing latch;
(2) With conventional LBIST implementation, MISR signatures require a stored value to be placed in the test pattern to compare for pass/fail status. The enhanced LBST does not require a stored signature as with conventional LBIST. The enhanced LBIST provides real-time pass/fail information for the tester by comparing the results of the different cores against each other. The redundancy of identical (or substantially identical) logic, having similar scan chains and latch configurations, enables each scan chain output to serve as a comparative value for the other scan chain outputs, where a failure is automatically indicated if any one of the outputs from a loop is different from the others;
(23) Because each latch output is compared at the time of the loop to the output of the other latches, the enhanced LBIST provides the ability to identify failing latches in real time, with only one pass of the LBIST sequence required;
(4) Also, the enhanced LBIST provides the ability to identify failing loop count in real time, unlike conventional LBIST implementations, which require a later debug effort to determine the LBIST loop that failed;
(5) As described above with the various illustrative embodiments, the enhanced LBIST also generates/provides information to enable easy debug of failures. For example, enhanced LBIST tracks/records the loop count and latch number for each failure, which makes for a straight forward to step through of the LBIST sequence to observe the events that occurred and which caused the failure; and
(6) The enhanced LBIST provides a mechanism to enable easier implementation of automated LBIST failure diagnostics via automated testers or lab debug tools, which are provide access to the generated tables of data.
In the flow charts above, one or more of the methods are embodied in microcode such that a series of steps are performed when the computer readable code is executed on a computing device. In some implementations, certain steps of the methods are combined, performed simultaneously or in a different order, or perhaps omitted, without deviating from the spirit and scope of the invention. Thus, while the method steps are described and illustrated in a particular sequence, use of a specific sequence of steps is not meant to imply any limitations on the invention. Changes may be made with regards to the sequence of steps without departing from the spirit or scope of the present invention. Use of a particular sequence is therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
As will be further appreciated, the processes in embodiments of the present invention may be implemented using any combination of software, firmware or hardware. As a preparatory step to practicing the invention in software, the programming code (whether software or firmware) will typically be stored in one or more machine readable storage mediums such as fixed (hard) drives, diskettes, optical disks, magnetic tape, semiconductor memories such as ROMs, PROMs, etc., thereby making an article of manufacture in accordance with the invention. The article of manufacture containing the programming code is used by either executing the code directly from the storage device, by copying the code from the storage device into another storage device such as a hard disk, RAM, etc., or by transmitting the code for remote execution using transmission type media such as digital and analog communication links. The methods of the invention may be practiced by combining one or more machine-readable storage devices containing the code according to the present invention with appropriate processing hardware to execute the code contained therein. An apparatus for practicing the invention could be one or more processing devices and storage systems containing or having network access to program(s) coded in accordance with the invention.
While the invention has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular system, device or component thereof to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiments disclosed for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another.