The present invention is generally directed to testing semiconductor devices (e.g., integrated circuits (ICs)).
During the manufacture of any product, it is important to test the completed product to ensure that it is satisfactorily operable. When the product is a semiconductor device having relatively complex circuitry, the testing process may be difficult to perform without the inclusion of test circuitry on the device itself. For this purpose, these devices often include on-chip integrated circuits that include the circuitry and processing capability necessary to test the integrity of the device. An example of such a device is a central processing unit (CPU) having a relatively large number of memory element arrays that is designed and manufactured with memory built-in self-test (MBIST) circuitry included on a self-contained CPU chip.
MBIST circuitry typically includes one or more control units that writes data to various memory element arrays on the chip in such a manner that is intended to stress the array. The arrays are then read and the results checked to determine if the data read out from each array is the same as the data written to each array. If the data is not the same, the array is designated as defective.
Besides the slave control unit 115 and the memory element arrays 120, 125, 130 and 135, each of the functional blocks 110 may include various other circuit elements needed to carry out particular functions of the semiconductor device, such as an execution unit (EX) and a scheduler (SC). The slave control unit 115 associated with each particular functional block 110 is responsible for testing the integrity of the memory element arrays 120, 125, 130 and 135 associated with that functional block 110.
It should be understood by one of ordinary skill in the art that a semiconductor device may include any number of functional blocks 110, and each functional block 110 may include any number of slave control units 115 and any number of arrays 120, 125, 130 and 135. Furthermore, a semiconductor device may have other functional components that do not include memory element arrays, or have a single functional component that includes memory element arrays. Generally, however, a semiconductor device will include multiple memory arrays of various sizes. For example, in a processor application, each MBIST slave circuit is typically associated with anywhere from five to twenty arrays having memory elements that range in size from 64×32 bits to 256×512 bits. The number of arrays and array sizes may be outside such typical ranges. In the case where a functional block has more than twenty arrays, the arrays may be divided into sets that are each associated with a different MBIST slave circuit.
As shown in
As an alternative to the star configuration of the functional blocks 110 of the MBIST interface unit 100 of
Due to the large number of arrays included on some semiconductor devices such as CPUs, the MBIST circuitry may become congested with wires connected, for example, between the MBIST control unit and the arrays. These wires occupy valuable space on the IC and increase the cost and complexity of manufacture.
It would be desirable to have available a more efficient semiconductor device configuration that makes use of a bus that is already in place between a master control unit and a plurality of slave control units, for communication between the slave control units and their associated arrays. By using such an efficient semiconductor device configuration, the number of wires included on the semiconductor device may be drastically reduced, thus more efficiently using space on the semiconductor device.
A method and apparatus are described for performing a memory built-in self-test (MBIST) on a plurality of memory element arrays. Control packets are output over a first ring bus to respective ones of the arrays. Each of the arrays receives its respective control packet via the first ring bus, and reads commands residing in a plurality of fields within the respective control packet. Each of the arrays performs at least one self-test based on the commands, and outputs a respective result packet over a second ring bus. Each result packet indicates the results of the self-test performed on the array. Each control packet is transmitted in its own individual time slot to a respective one of the arrays.
A more detailed understanding may be had from the following description, given by way of example in conjunction with the accompanying drawings wherein:
The master control unit 305 is configured to issue global commands to all of the slave control units 315 via a bus 345 to instruct the slave control units 315 to initiate certain test functions in accordance with an MBIST test algorithm. Responsive to receiving the global commands, each of the slave control units 315 send instructions to the respective MBIST packet processing module 320 to execute the various test functions in the MBIST test algorithm to test the memory element arrays 325, 330, 335 and 340 they are associated with.
Besides the slave control unit 315 and the memory element arrays 325, 330, 335 and 340, each of the functional blocks 310 may include various other circuit elements needed to carry out particular functions of the semiconductor device, such as an EX and an SC. The slave control unit 315 associated with each particular functional block 310 is responsible for testing the integrity of the memory element arrays 325, 330, 335 and 340 associated with that particular functional block 310.
It should be understood by one of ordinary skill in the art that a semiconductor device may include any number of functional blocks 310, and each functional block 310 may include any number of slave control units 315, MBIST packet processing modules 320 and arrays 325, 330, 335 and 340. Furthermore, a semiconductor device may have other functional components that do not include memory element arrays, or have a single functional component that includes memory element arrays. Generally, however, a semiconductor device will include multiple memory arrays of various sizes. For example, in a processor application, each MBIST slave circuit is typically associated with anywhere from five to twenty arrays having memory elements that range in size from 64×32 bits to 256×512 bits. The number of arrays and array sizes may be outside such typical ranges. In the case where a functional block has more than twenty arrays, the arrays may be divided into sets that are each associated with a different MBIST slave circuit.
As shown in
In response to receiving control packets, the arrays 325, 330, 335 and 340 execute read or write commands by reading or writing data to particular array addresses included in the control packets. In response to receiving a control packet at a particular time slot, each array 325, 330, 335 and 340 reads the control packet and transmits a result packet to the MBIST packet processing module 320 via its respective output 380, 385, 390 and 395.
The MBIST interface unit 300 is configured to set the memory element arrays to a first state for a period of time and to thereafter set each memory element of the arrays to a second state that is the inverse of the first state of the respective memory element for a period of time. After the memory elements are set to the second state, the state of the memory element arrays is read and compared with the data written to the memory element arrays to set them in the second state. In this manner, the MBIST interface unit 300 pre-stresses the arrays 325, 330, 335 and 340 during completion of the manufacturing/testing processes to either force a failure of the semiconductor device or produce a pre-stressed semiconductor device.
The MBIST interface unit 300 may use built-in self-initialization (BISI) to initialize all of the arrays 325, 330, 335 and 340, as well as performing silicon stress for reliability purposes. A generic MBIST test procedure contains a sequence of memory write/read operations such that each array entry is written first. Then, the array entry is read out and compared to the written data to determine whether any errors occurred. The write/read operations may have various combinations to form MBIST test algorithms.
The control commands transmitted by the master control unit 305 and the slave control units 315 are encoded using a protocol that is specific to the control packet ring bus 350. The MBIST packet processing module 320 encodes the commands provided by the master control unit 305. A hierarchical design is used whereby the master control unit 305 communicates to the slave control units 315 with one set of encoding protocols, and the slave control units 315 communicate with the MBIST packet processing module 320 using another set of encoding protocols. Through these two levels of encoding/decoding, the array under test receives the operation that the master control unit 305 wants the array to perform.
The encoding process is necessary because at different times, the master control unit 305 will be sending information/commands to the slave control units 315, and then pass onto the destination array. These information/commands are usually many bits and it is preferred to encode them to save precious routing spaces (silicon area).
Referring to
The control packet 400 includes a write port select field 405, a read port select field 410, a read address field 415, a write address field 420, an array identifier field 425, a control command field 430, a read command field 435, a write command field 440 and a background bit field 445.
The write port select field 405 indicates the port bits selected for a write command. The read port select field 410 indicates the port bits selected for a read command. The write port select field 405 is associated with write address field 420, and similarly, the read port select field 410 is associated with read address field 415. For multiple port arrays, it may be desired to further test the arrays in a mode called simultaneous-access, i.e., read and write to the array at the same time but at different entries. This is a normal functional usage and thus is tested in a similar manner.
The read address field 415 indicates the bits that tell the array where to read data from. The write address field 420 indicates the bits that tell the array where to write data to. An array contains many entries. Read/write addresses indicate which entries the data should be read from and written to.
The array identifier field 425 indicates a particular array that is to receive a command. Each array has it own identifier coded locally. When the control packet reaches the array, the identifier is compared. If it matches, the array will perform the command from the control packet 400. If the identifier is not matched, the array will not respond to the control packet 400 since this packet does not belong to this array. By way of example, each array may be assigned a 5-bit identifier that is included with the command. All of the arrays coupled to the control packet ring bus 350 monitor the bus 350 for their unique identifier and, if it is identified, the array reads the command. Otherwise, the array does not read the command on the bus.
The control command field 430 may indicate a background shift enable command (01), a compare enable command (10) to compare results or a bit map enable command (11). There are many MBIST operations including 1) setup the data to be written to the array, 2) compare the array read-out to see if it is expected, and 3) enabling a bitmap function for debugging purposes. These three operations are performed by a MBIST master control unit at different times, and are encoded though the control command field 430 where the background shift enable command corresponds to setup the data to be written to the array, compare enable corresponds to compare the array read-out to see if it is expected, and bitmap enable corresponds to enabling a bitmap function for debugging purposes.
The read command field 435 may indicate a read enable command (01), an inverse read command (10) or a match command (11). The read command field 435 encodes several operations for both random-access memory (RAM) and content-addressable memory (CAM) type of arrays. The read command instructs the array to read out the data and expects it to be the same as what was written to the array. The inverse read command expects the readout to be the inverse of what was written to the array. The match command is used for the CAM array where the comparison is expected to yield a single match in the array, i.e., the array has exactly one entry containing the exact data that was sent for comparison.
The write command field 440 may indicate a write enable command (01), an inverse write enable command (10), or an initialization write command (11). The write command instructs the array to write data into the array, while the inverse-write command will result in inverse data to be written into the array. The ping (i.e., initialization write) command is an indication to the array that currently the slave unit is trying to find out the access latency between the slave control unit and the array. This latency is array dependent and is important to determining the failing address during debugging
The background bit field 445 is a single bit used to serially shift information to be written to the array. For example, if an array has 8 bits per entry, then typically there is an 8-bit register, (i.e., a background register), located in the vicinity of the array that contains the data to be written to the array. The slave unit uses the background bit field 445 to serially populate the 8-bit register (take 8 cycle shifts). Once the register has the 8 bits of data, the array is ready to receive the write command to write these 8 bits into the array. A one bit serial shift mechanism is used to populate the 8-bit register to reduce the number of routing wires.
The field 510 includes a pass/fail bit, which indicates whether a particular array is defective or not defective. For example, the pass/fail bit may be a 1 to indicate a defective array, or a 0 to represent a non-defective array (or vice versa). For each entry that is compared to the array read-out, a pass/fail indication occurs. When the slave logic receives this indication, it is passed on to the master control unit 305 where it is logged to indicate that this array under test has been subjected to one or more failures. For example, an array of 10 entries having failures at entry 2 and 5 should have two fail indications when reading out entries 2 and 5, and eight pass indications for the other entries. There is only one bit indication per array to indicate whether the array failed or passed. If a user desires to determine which particular entries of an array failed or passed, a bit map mode must be used to read out the entire array content, which allows one to decide which entry, or bit per entry, is correct and not correct.
Although features and elements are described above in particular combinations, each feature or element can be used alone without the other features and elements or in various combinations with or without other features and elements. The methods or flow charts provided herein may be implemented in a computer program, software, or firmware incorporated in a computer-readable storage medium for execution by a general purpose computer or a processor.
Suitable processors include, by way of example, a general purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a plurality of processors, one or more processors in association with a DSP core, a controller, a microcontroller, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs) circuits, any other type of integrated circuit (IC), and/or a state machine.
Embodiments of the present invention may be represented as instructions and data stored in a computer-readable storage medium. For example, aspects of the present invention may be implemented using Verilog, which is a hardware description language (HDL). When processed, Verilog data instructions may generate other intermediary data, (e.g., netlists, GDS data, or the like), that may be used to perform a manufacturing process implemented in a semiconductor fabrication facility. The manufacturing process may be adapted to manufacture and test semiconductor devices (e.g., processors) that embody various aspects of the present invention.