The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself however, 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 present invention is generally directed to testing of integrated circuits (ICs). The present invention is further directed to a system, method and computer program product that provide an on-chip and/or off-chip mechanism for scan testing an IC, generally referred to herein as a device under test (DUT). In one aspect, the present invention may be deployed as part of a compression encoding module for compressing serial test data input utilized for boundary scan testing. In another aspect, the present invention comprises decompression/decoding logic for restoring the compressed input test vector data which can then be scanned into the DUT at the DUT clock speed. As explained in further detail below, the present invention may encompass a boundary scan architecture having a data and clock interface into which input test vectors are scan loaded and processed during scan testing of a DUT. The boundary scan architecture of the present invention employs an efficient compression technique that provides flexible and lossless compression and decompression of the input test vectors.
The present invention covers compression encoding techniques to reduce test data volume and test pattern delivery time for a serial scan-in test application. Fundamentally, the compression encoding entails packetizing a serial input bit-string, comprising one or more test vectors, into multiple packets each including at least two basic fields. One field, referred to in a preferred embodiment as a “bucket select field,” directly or indirectly encodes the bit length of a bit-string encoded by the packet. The other field is a fill value field that indicates the uniform binary value (either 1 or 0) of the string. This combination of a bucket select field and fill value field is particularly efficient when applied to boundary scan test vector input data which is characterized as including relatively long strings of uninterrupted 1's or 0's.
With reference now to the figures, wherein like reference numerals refer to like and corresponding parts throughout, and in particular with reference to
The boundary scan functionality provided by ATE 5 and the boundary scan architecture of DUT 15 provides a means to test interconnects and clusters of logic, memories, etc., generally depicted in
ATE 5 further includes electronic storage for storing compressed test vectors 8 resulting from the compression of test vectors 6 by compression module 4. As explained in further detail below with reference to
The packet encoding performed by compression module 4 is defined, in part, in terms of packet field characteristics such as the bit-length of particular fields and overall packet size. The embodiment depicted in
In support of its compression encoding function, compression module 4 accesses data contained in a set of coding tables 7. As depicted and explained in further detail below with reference to
ATE 5 includes a boundary scan interface with DUT 15. In accordance with the IEEE 1149 standard the boundary scan interface includes a test data input, TDI, a test mode select input, TMS, a test clock input, TCK, and a test data output, TDO. In accordance with the invention, the interface further includes a compression enable input, CMP_EN, and a compression mode select input, CMP_MODE. The boundary scan interface is preferably a multi-pin interface added to the chip on which DUT 15 is fabricated and designed so that multiple chips on a circuit board (not depicted) can be daisy chained together using the boundary scan lines. In this manner, a test probe need only be connected to a single boundary scan port to have access to all chips on a circuit board.
Test data input and output lines TDI and TDO are serial. An ATE clock input is applied by ATE 5 at the TCK input. One bit of data is transferred in and out per TCK clock pulse at the TDI and TDO pins, respectively. The frequency of TCK varies depending on the chip under test and the ATE. In the present state of the art, TCK runs on the order of 10-200 MHz.
During boundary scan testing using test system 10, the packetized, compressed test vectors 8 are serially delivered over the TDI input from ATE 5 to DUT 15 where the compressed test vector data is expanded, scanned in, and applied to the interconnects and internal logic of cores 16a-16n. To accommodate the serially scanned in data, the boundary scan architecture of DUT 15 includes a boundary scan register comprising multiple scan latch cells C1-Cp connected between each pin (not depicted) of each of the cores 16a-16n and the internal core logic. The boundary scan register comprising the multiple scan latch cells C1-Cp coupled in association with cores 16a-16n provides a serial scan path that intercepts the signals between the core logic within cores 16a-16n and the boundary scan interface pins. In this manner, the boundary scan register provides a mechanism for controlling the logic blocks within cores 16a-16n in the same manner as if each of the logic blocks was a physically independent circuit.
Scan latch cells C1-Cp can be programmed via scan chain logic (not depicted) in a variety of testing modes. For example, one of cells C1-Cp may be programmed to drive a signal onto a pin and across an individual trace on the board. The cell at the destination of the board trace can then be programmed to read the value at the pin, verifying the board trace properly connects the two pins. If the trace is shorted to another signal or if the trace has been opened, the correct signal value will not reach the destination pin, and DUT 15 will be identified as faulty.
During regular (i.e. non-test) operation, latch cells C1-Cp for cores 16a-16n are set so that they have no effect on the circuit, and are therefore operationally invisible in non-test operating mode. However, when DUT 15 is configured in a scan test mode, latch cells C1-Cp enable a data stream to be passed from one latch cell to the next. Once a complete test input vector has been passed into a given one or more of cores 16a-16n under test, it can be latched into place within latch cells C1-Cp. In this manner, latch cells C1-Cp set up test conditions for cores 16a-16n by enabling specified data vector placement within DUT 15. The relevant output logic states as revealed in the receiver cells among cells C1-Cp can then be fed back into the ATE 5 portion of test system 10 by shifting the latched data through the scan path and finally back through the TDO port to ATE 5 so that it can be analyzed. In the foregoing manner, boundary scan test systems such as that depicted in
To expand the compressed test vectors 8 for scan in test application, DUT 15 includes an expansion module 12 that decodes the packetized compressed data. Expansion module 12 is communicatively coupled to ATE 5 via the TDI, CMP_MODE, and TCK ports of the boundary scan interface. Expansion module 12 preferably includes combinatorial and sequential logic modules that expand the compressed test vector data by decoding a stream of packets in which the test vector data has been encoded. Expansion module 12 receives the packetized compressed test vector data received from the TDI input. The CMP_MODE input from ATE 5 sets the expansion mode for expansion module 12 consistent with the currently set compression mode set by compression mode select module 14. In one embodiment, the selected expansion mode determines which bucket select conversion table among multiple such tables expansion module 12 utilizes to decode/expand the packets. In the depicted embodiment, such alternatively selectable tables are stored and accessed from coding tables 7, which may be accessed from within or external to DUT 15. Expansion module 12 decodes the packets in accordance with the selected expansion mode such that the original test vector data is restored from the compressed vector data and may then be applied as scan data patterns for the scan chains comprising latch cells C1-Cp.
Test system 10 is designed to accommodate either compression or non-compression based boundary scan testing procedures. Depending on whether ATE 5 has been programmably or otherwise set to operate in compression mode, ATE 5 delivers either the compressed test vector data from compressed test vectors 8 or the uncompressed test vectors 6 to DUT 15 via the TDI port.
When operating in non-compression boundary scan test mode, ATE 5 delivers the test vector data from uncompressed test vectors 6 to the TDI port where it is selected by a multiplexer M1, in accordance with control signal CMP_EN, to be scanned into the boundary scan registers within DUT 15. Operating in non-compression scan testing mode further results in a second multiplexer M2 selecting, in accordance with the control signal CMP_EN, the ATE clock signal TCK from the boundary scan interface to be applied to the boundary scan registers comprising scan latch cells C1-Cp.
When operating in compression boundary scan test mode, ATE 5 delivers the compressed test vectors 8 in the form of encoded packets to the TDI port where they are received and processed by expansion module 12. Multiplexer M1 selects, in accordance with the CMP_EN control signal, the expanded bit-string output from expansion module 12 to be scanned in to the boundary scan registers within DUT 15. Operating in compression mode further results in a second multiplexer M2 selecting, in accordance with the CMP_EN control signal, a DUT clock signal from expansion module 12 or elsewhere within DUT 15, to be applied to the boundary scan registers comprising scan latch cells C1-Cp.
Referring to
Scan test path 20 is designed to receive and process test vector data from ATE 5 “at speed” rather than in an intermittent or otherwise unsynchronized manner. Conventionally, and when operating in a non-compression mode using the non-compression mode path depicted in
In compression mode, the compressed, packetized test vectors are serially cycled into scan input registers 22 at the ATE clock rate TCK. Once registered within the scan input registers 22, the packets are serially transferred to decode module 24, again at the ATE clock rate. Packet decode module 24 performs the test vector expansion function by decoding each of the packets received from scan input registers 22. The decoding results in the expansion that restores the original test vector data 6 from the packetized, compressed test vectors 8.
Decode module 24 decodes received packets in accordance with a coding table included within coding tables 7. With reference now to
For packets having an n-bit bucket select field, a coding table may have up to 2n different bucket select values. In accordance with the present invention, the tabular mapping provided by a coding table such as coding table 35 is preferably selected so that for each of the 2n bucket select values, in which each of the 2n bucket select values maps to one of a set of 2n different bit-string length values, one or more of the bit-string length values is specified to be greater than 2n. For example, and referring to
As depicted in
Decode processing performed by packet decode module 24 using one or more of coding tables 7 such as coding table 35 runs synchronously with the ATE clock rate, TCK, in terms of clock cycles per bit serially transferred. The expansion of packets results in substantially greater test vector data volume, requiring that the decoded data be output from packet decode module 24 at a substantially higher clock rate, in terms of cycles per bit transferred, than the ATE clock rate, TCK. To this end, a DUT clock input, CLKDUT, having a higher clock rate that TCK is applied to the output processing stages of packet decode module 24. In this manner, the expanded test vector data can be cycled from packet decode module 24 “at speed” relative to the compressed test vector data being cycled into scan input registers 22 and the input processing stages of packet decode module 24. The DUT clock input, CLKDUT, is preferably a clock signal native to DUT 15 or otherwise available on the DUT side of the scan test process. In the present state of the art, CLKDUT may typically range from 1 to 5 GHz.
The expanded test vector data is cycled from packet decode module 24 into the scanning stages comprising boundary scan register 26 where it is processed in accordance with boundary scan testing procedures. On the output side of boundary scan register 26, the output scan data is serially cycled from the output side latch cells within processor cores 16a-16n to a test data output port, TDO, on the boundary scan interface through which the output data is received by ATE 5. Since the TDO port may share the same operational frequency limitations as TDI, test vectors may be scanned in with compressed mode active, while the corresponding scan-out results are scanned out via TDO in non-compressed mode.
Referring to
If, as shown at steps 48, 50, and 52, the system is operating in compression mode as reflected by CMP_EN, compression mode select module 14 selects a particular compression mode that specifies a packet size and bucket select encoding to be utilized for encoding (and subsequently decoding) the packets. In one embodiment, compression mode select module 14 selects a compression mode in accordance with binary value continuity properties of the strings within test vectors 6. For the embodiments depicted in
The process continues with one or more of test vectors 6 being compressed using the one or more of coding tables 7 corresponding to the selected compression mode (step 54). The compression encoding of the serial test vector strings into packets preferably accounts for uniform value strings that fall within bit-string length value gaps between sequentially contiguous coding table records or that otherwise require more than one packet to compress a given string of uninterrupted 1-bits or 0-bits. To this end, the compression depicted at step 54 includes compression module 4 selecting as the bucket select values for the multiple packets, the combination of two or more bucket select field values that will minimize the total number of packets required to encode the uniform value bit string in accordance with the associated bit-string length values. Next, as illustrated at step 56, the resultant packets are received and decoded by DUT 15 at the ATE clock rate, TCK. The expanded serial test vector data is then cycled from packet decode module 24 into boundary scan register 26 at the higher frequency DUT clock, CLKDUT (step 60). The scanned test vector output data is cycled from boundary scan register 26 and into ATE 5 for processing via the TDO port and the process ends as shown at steps 62 and 64.
With reference to
The embodiment depicted in
Whether or not the compression/expansion mode has changed, the process continues as shown at step 80 with packet decode module 24 reading the bucket select and fill value fields of the packets compressed in accordance with the specified compression mode. Packet decode module 24 directly determines the logic value (1 or 0) of each compressed bit-string encoded within each packet in accordance with the fill value contained within the fill value field of each packet (step 82). The bit-string length for each packet is determined by matching or otherwise correlating the n-bit bucket select value within each packet with the 2n bucket select values in the selected one or more of coding tables 7 to find the record containing the correct bit-string length (step 84). Packet decode module 24 generates a uniform value bit-string having the fill value and bit-string length values determined at steps 82 and 84 and the packet expansion processing continues for the remaining packets as depicted as steps 86, 88 and 89.
The system and method disclosed herein provide a simple and efficient compression scheme that may be implemented on the DUT and ATE to minimize the scan-in delivery time. In addition to providing lossless ATE-side compression and DUT-side expansion, the invention's packetized compression/expansion coding scheme is computationally inexpensive thus requiring minimal additional logic be added to conventional DUT-side boundary scan architecture.
The foregoing embodiments depicted the invention as deployed using circuit and logic modules deployed on a device under test and automated test equipment used for boundary scan testing. The present invention is not limited to the specific embodiments depicted herein and may be practiced in alternative computer-implemented configurations. The invention may be embodied using any combination of hardware, firmware, and software and as such, embodiments may be embodied in the form of computer program code containing instructions embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.