Method for testing and programming memory devices and system for same
A method and system are provided for programming a plurality of memory devices arranged in parallel. In one embodiment of the present invention, the plurality of memory devices comprises first and second memory devices, and the method comprises providing successively the first address to the first memory device and the second address to the second memory device. The first address refers to a first group of storage locations in the first memory device and the second address refers to a second group of storage locations in the second memory device. The method then proceeds to load in parallel a string of data to the first and second memory devices so that the string of data is written simultaneously to the first group of storage locations in the first memory device and to the second group of storage locations in the second memory device.
The present application claims priority to U.S. Provisional Patent Application No. 60/541,555 filed on Feb. 3, 2004, the entire content of which is incorporated herein by this reference.
FIELD OF THE INVENTIONThe present invention relates in general to integrated circuit testing technologies, and more particularly to a system and method for automatic testing of memory devices.
BACKGROUND OF THE INVENTIONManufacturers of integrated circuit (IC) devices use test systems or testers to weed out defective devices at various points in a manufacturing process. Broadly, there are two types of digital testers, those suitable for testing memory arrays or circuits, such as flash memory or Random Access Memories (RAM), and those suitable for testing logic circuits, such as Micro Controllers, Application Specific ICs (ASICs), and Programmable Logic Devices (PLDs). Common types of flash memory devices include NOR Flash, NAND Flash, and Serial Data Flash memories.
Flash memory devices are often produced with various data organizations. As part of a typical manufacturing test process, both algorithmic and non-algorithmic data patterns may be programmed into the device. Furthermore, customers often want specific codes, such as a cell phone operating system, programmed into the devices by the manufacturer before receiving the devices. Data patterns or customer specific codes are programmed at specific locations in the Flash memory device with each data word identified by a row address and a column address.
A NAND Flash memory device has storage cells internally organized as rows of data. Each row typically has 512 user programmable cells, or data bits, and ten to twenty additional bits for use by the device manufacturer to store device characteristics and defect information. Usually, rows are grouped together into “blocks,” with each block typically having eight to sixty-four rows. User data is programmed into the NAND Flash rows in a serial fashion by loading a high-speed shift register that mirrors a row, and then simultaneously transferring the data from the shift register into all data bits in the row.
Monolithic NAND Flash devices often contain as many as two billion individual storage locations or cells. With this big a number of storage locations on one integrated circuit, it is often difficult to manufacture perfect devices with 100% functional storage locations. For this reason, extra rows of storage cells are designed into Flash memories in such a way that they can be used to replace defective or otherwise inoperable storage cells. Replacement of defective cells is usually done at the block level with a good replacement block being substituted for a block with defective cells. In the IC industry, the extra cells are called “redundant elements” or “redundant cells” and the repair of a defective device is called “redundancy repair”.
When a defective block is detected in a testing process, the address of the defective block is entered in a “bad block table,” which is stored in designated locations of the Flash memory device. The bad block table can later be used to locate defective storage elements. From this point in the device manufacturing flow, the defective block is no longer programmed with test data patterns or customer codes. If there are more defective blocks than there are redundant blocks, the device is considered “unrepairable” and is discarded.
SUMMARY OF THE INVENTIONBecause of the large number of storage cells in a Flash memory device, the device may take a long time to program. Manufacturing test time per flash memory device is usually measured in minutes. To reduce the cost of testing, IC manufacturers often test many IC devices simultaneously, or “in parallel.” Simultaneous or parallel testing of multiple flash memory devices, however, cannot be easily done because each flash memory device usually has a different set of bad blocks so that a series of data patterns may need to be programmed at different row addresses in different flash memory devices. The problem becomes more complicated when more flash memory devices are involved.
The present invention provides a method for programming a plurality of memory devices arranged in parallel. In one embodiment of the present invention, the plurality of memory devices comprises first and second memory devices, and the method comprises providing successively the first address to the first memory device and the second address to the second memory device. The first address refers to a first group of storage locations in the first memory device and the second address refers to a second group of storage locations in the second memory device. The method then proceeds to load in parallel a string of data to the first and second memory devices so that the string of data is written simultaneously to the first group of storage locations in the first memory device and to the second group of storage locations in the second memory device.
The present invention also provides a system for programming a plurality of memory devices in parallel. In one embodiment of the present invention, the plurality of memory devices comprises first and second memory devices, and the system comprises an address generator configured to generate successively a memory address for the first memory device and the same memory address for the second memory device. The system further comprises an address adjuster coupled between the address generator and the plurality of memory devices and configured to determine whether a storage unit in the first memory device corresponding to the memory address is inoperable. In response to the determination that the storage unit is inoperable, the address adjuster is configured to generate a first modified address to bypass a first collection of storage locations comprising the inoperable storage unit. The first modified address is provided to the first memory device.
The address adjuster is also configured to determine whether a storage unit in the second memory device corresponding to the memory address is inoperable. In response to the determination that the storage unit is inoperable, the address adjuster is configured to generate a second modified address to bypass a second collection of storage location comprising the inoperable storage location. The second modified address is provided to the second memory device subsequent to the first modified address being provided to the first memory device. In one embodiment of the present invention, the first modified address refers to a first group of storage locations in the first memory device and the second modified address refers to a second group of storage locations in the second memory device, and the system comprises a data buffer memory storing therein data patterns corresponding to the first group of storage locations in the first memory device and to the second group of storage locations in the second memory device. The data buffer memory is configured to output the data patterns to the first memory device and to the second memory device in parallel so that the data patterns are written simultaneously to the first group of storage locations in the first memory device and to the second group of storage locations in the second memory device.
BRIEF DESCRIPTION OF THE DRAWINGS
In normal operation, an algorithmic pattern gets loaded by a host computer (not shown) into the MicroRAM 104. A test site computer (not shown) and a clock (not shown) are coupled to tester 100 to provide timing or clock signals to tester 100 and to control its operation. MicroRAM Address Register 102 addresses MicroRAM 104, pointing to the next instruction to be executed. MicroRAM 104 outputs control bits to loop counters and stack 110 and to branch logic 112. Loop counters and stack 110 operates together with branch logic 112 to determine the next MicroRAM address to load into the MicroRAM Address Register 102. At the same time when the control bits are output, additional bits from MicroRAM 204 are sent to address generator 120. The output of address generator 120 drives address topological scramblers 122, data generator 230, and data buffer memory 132. Address topological scramblers 122 comprises Random Access Memory that provides a topologically true data pattern to the DUT's internal array (not shown) after passing through the DUT's address decoders (not shown).
The register-based data generator 230 algorithmically generates data patterns for the DUT(s). In addition to algorithmic data, non-algorithmic data patterns stored in data buffer memory 132, which comprises Random Access Memory that holds the non-algorithmic data patterns, are delivered as a function of address from address generator 120. The test program loaded in MicroRAM 104 controls which data source is sent to the DUT(s) through multiplexer 134 (control connections not shown). Pin scrambler 140 routes the outputs of address topological scramblers 122 and data multiplexer 134 to selected pins of the DUT(s) according to instructions from MicroRAM 104.
For purposes of clarity, many details of tester 100 that are either known or are not relevant to the present invention have been omitted. Descriptions related to these details can be found in commonly assigned U.S. Pat. No. 6,754,868 entitled Semiconductor Test System Having Double Data Rate Pin Scrambling, the entire content of which is incorporated herein by reference, and in commonly assigned co-pending U.S. patent application Ser. No. 10/431,043, filed 6 May 2003 and entitled Semiconductor Testing System Having Multitasking Algorithmic Pattern Generator; U.S. patent application Ser. No. 10/170,916, filed 12 Jun. 2002 and entitled Stackable Semiconductor Test System And Method For Operating Same; and U.S. patent application Ser. No. 10/039,738, filed 4 Jan. 2002 and entitled An Apparatus Having Pattern Scrambler For Testing A Semiconductor Device And Method For Operating Same; the entire content of each of which is incorporated herein by reference.
NAND Flash memories are generally low pin count devices, with a single NAND flash memory device having, for example, 16 pins. Because of their low pin count, multiple NAND Flash DUTs can be connected to one tester. For example, four 16 pin Flash memory devices could be connected to a 64-pin tester, such as tester 100. For maximum test throughput in this example, it would be preferred that the same tests be executed on all four DUTs at the same time. When defective or otherwise inoperable Flash memory storage locations are found as part of the testing process, the defective cells are logged in the bad block tables in the respective DUTs and those defective cells are bypassed for the remainder of the tests. In particular, test programming patterns and customer data patterns should not be programmed into bad blocks containing defective storage cells and should instead be shifted to the next available good block(s) of functioning storage cells.
As an example,
To illustrate the problem,
The data bus on a typical NAND Flash DUT is 8 bits wide. Thus, information exchanged between tester 100 and a typical NAND Flash DUT is multiplexed onto an 8-bit bus (not shown) and sent to and retrieved from the DUT in this width. For instance, a twenty-bit row address would take three clock cycles to send to the DUT.
As illustrated in
In one embodiment of the present invention, as shown in
The address delivered to data buffer memory 132 is unaltered, so that the data in data buffer memory 132 corresponding to the original row address is accessed and sent to the DUT aligned with the modified row address from address topological scramblers 122, which points to the good block. To prevent the good block (e.g., block 440) from being overwritten when address generator 120 later generates another row address that points to the good block, BBCC is further configured to accumulate the offsets it generates for each DUT and the accumulated offset is added to each later generated row address by adder 510 to shift the row address accordingly, as explained in more detail below.
Thus, for each DUT, a potentially different modified row address is produced and given to the DUT. As shown in
After the four DUTs are written with potentially different row addresses in a serial fashion, as shown in
BBCC 520 further comprises multiplexors 642, 644, and 646, each having n data inputs coupled to respective ones of the n storage blocks 600. The data inputs of multiplexor 642 are coupled to bad block address outputs 613 of respective ones of the n storage blocks; the data inputs of multiplexor 644 are coupled to offset outputs 615 of respective ones of the n storage blocks; and the data inputs of multiplexor 646 are coupled to holding register outputs 622 of respective ones of the n storage blocks. BBCC 520 further comprises an address compare circuit 650 having one input coupled to multiplexor 642 and another input coupled to address generator 120 in
To illustrate operation of BBCC 520, a column in DUT-1 having bad blocks 810, 820, 840, 870, 880, interleaved with good blocks 830, 850, 860, 890, is shown in
Using the example shown in
While address generator 120 continues to produce the same row address, DUT select 690 then selects DUT-2 so that storage block 600-2 is selected, and events similar to what is described above occur except that a potentially different offset may be generated by adder 680 and accumulated in the holding register 620 in storage block 600-2 depending on the bad block configurations in DUT-2. For example, the row address may point to a good block in DUT-2 so that compare circuit 650 does not produce a valid compare and buffer 670 is not enabled and outputs a zero for adder 680. As a result, what is stored in holding register 620 in storage block 600-2 goes through adder 680 unmodified. Since holding register 620 is initialized to hold a zero offset, adder 680 should also produce a zero offset so that the row address goes through adder 510 in
Since discussions related to the other DUTs are similar, only DUT-1 will be discussed in detail in the following. After the first bad block hit when address generator generates the address for row 0, counter 630 is incremented to point at the next entry (e.g., the entry of 8 for bad block 840) in the bad block address list 612. When address generator subsequently generates row addresses for rows 2 through 7, compare circuit 650 does not generate valid compares. As a result, buffer 670 is not enabled and what is stored in holding register 620 goes through adder 680 to adder 510 in
This invention has been described in terms of a number of embodiments, but this description is not meant to limit the scope of the invention. Numerous variations will be apparent to those skilled in the art, without departing from the spirit and scope of the invention disclosed herein. Furthermore, certain aspects of the present invention have been described in terms of components in a tester, while these components may be used outside of tester in other applications.
Claims
1. A method for programming a plurality of memory devices arranged in parallel, the plurality of devices comprising first and second memory devices, the method comprising providing successively a first address to the first memory device and a second address to the second memory device, the first address referring to a first group of storage locations in the first memory device and the second address referring to a second group of storage locations in the second memory device, and loading in parallel a string of data to the first and second memory devices whereby the string of data is written simultaneously to each of the first and second groups of storage locations.
2. The method of claim 1 wherein the first and second addresses are the same.
3. The method of claim 1 wherein the first and second addresses are different.
4. The method of claim 1 wherein the first and second addresses are row addresses and the method further comprises providing in parallel a common column address to the first and second memory devices prior to providing successively the first address to the first memory device and the second address to the second memory device.
5. The method of claim 4 wherein the loading step includes loading the string of data simultaneously to storage locations referred to by the common column address and the first row address in the first memory device and to storage locations referred to by the common column address and the second row address in the second memory device.
6. The method of claim 1 wherein the providing step comprises, for each of the plurality of memory devices, generating a memory address, determining if the memory address corresponds to an inoperable storage unit in the memory device, generating a modified memory address in response to the determination that the memory address corresponds to an inoperable storage unit, and providing the modified memory address to the memory device.
7. The method of claim 6 wherein the determining step comprises determining if the memory address matches a stored bad address.
8. The method of claim 7 wherein the generating step comprises obtaining a stored address offset associated with the bad address and generating the modified memory address based on the address offset.
9. A method for programming a memory device comprising generating a first memory address, determining if the first memory address matches a stored bad address, obtaining an address offset associated with the bad address, generating a second memory address based on the first memory address and the address offset, and loading a string of data into a memory location referred by the second memory address.
10. The method of claim 9 wherein the determining step includes producing an entry from a bad block address list, the entry corresponding to a bad block in the memory device, and comparing the entry with the first memory address.
11. The method of claim 9 wherein the generating step includes adding the offset to the first memory address.
12. A system for programming a plurality of memory devices comprising an address generator configured to generate a memory address, an address adjuster coupled between the address generator and the plurality of memory devices and configured to determine whether a storage unit corresponding to the memory address in a first one of the plurality of memory devices is an inoperable storage unit and, in response to the determination that the storage unit is an inoperable storage unit, to generate a first modified address to bypass a first collection of storage locations in the first memory device, the first collection of storage locations comprising the inoperable storage unit, the first modified address being provided to the first memory device.
13. The method of claim 12 wherein the address adjuster comprises a bad block correction calculator configured to produce a first offset associated with the first collection of storage locations, and an adder configured to add the offset to the memory address to generate the first modified address.
14. The system of claim 13 wherein the bad block correction calculator comprises storage blocks for storing information related to inoperable storage units in each of the plurality of memory devices, a device selector configured to select a storage block associated with the first memory device and a comparator configured to compare the memory address with a stored address retrieved from the selected storage block to determine whether the storage unit corresponding to the first address in the first memory device is an inoperable storage unit.
15. The system of claim 14 wherein the information related to inoperable storage units in the first memory device comprises a bad block address list and offsets associated with respective entries in the bad block address list.
16. The system of claim 15 wherein the bad block address list comprises entries each corresponding to an address of a bad block and the offset associated with each entry indicates a number of contiguous bad blocks for the entry.
17. The system of claim 15 further comprising a holding register associated with each storage block, the holding register storing an accumulated offset, and an adder configured to add the accumulated offset from the holding register associated with the selected storage block to an offset retrieved from the selected storage block to generate the first offset.
18. The system of claim 14 further comprising at least one multiplexor configured to select an output among outputs from the storage blocks.
19. The system of claim 12 wherein the address generator is configured to repeat the generation of the memory address, the address adjuster is configured to determine whether a storage unit corresponding to the memory address in a second one of the plurality of memory devices is an inoperable storage unit and, in response to the determination that the storage unit is an inoperable storage unit, to generate a second modified address to bypass a second collection of storage locations in the second memory device, the collection of storage locations comprising the inoperable storage unit in the second memory device, the second modified address being provided to the second memory device subsequent to the first modified address being provided to the first memory device.
20. The system of claim 19 wherein the first modified address refers to a first group of storage locations in the first memory device and the second modified address refers to a second group of storage locations in the second memory device, and the system comprises a data buffer memory storing therein data patterns corresponding to the first group of storage locations in the first memory device and the second group of storage location in the second memory device, the data buffer memory being configured to output the data patterns to the first memory device and to the second memory device in parallel whereby the data patterns are written simultaneously to each of the first group of storage locations and the second group of storage locations.
21. The method of claim 9 wherein the loading step includes loading a string of data corresponding to the first memory address into a memory location referred by the second memory address.
Type: Application
Filed: Feb 3, 2005
Publication Date: Sep 1, 2005
Patent Grant number: 7861059
Inventors: Paul Magliocco (Monte Sereno, CA), Young Kim (Saratoga, CA), Richard Greene (Los Gatos, CA), John Holmes (Campbell, CA)
Application Number: 11/051,325