Abstract:
A method of testing and diagnosing memory arrays. The method efficiently identifies a memory chip having faulty memory cells, and subsequently removes the memory chip containing the faulty memory cells from the testing process. The method uses a testing module and an active parts list. The method uses the active parts list to contain an identifier for each of a plurality of memory modules which do not have any identified malfunctioning memory cells.

Description:
RELATED APPLICATIONS 
     The subject matter of the U.S. Patent Application entitled MULTIPLE PASS TEST SYSTEM, filed concurrently herewith, application Ser. No. 09/053,403 contains related subject matter. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to the field of memory arrays. More particularly, the invention relates to a process for efficiently evaluating the operability of memory chips. 
     2. Description of the Related Technology 
     Substantially all modern electronic computers rely on semiconductor memory or memory chips to store data for processing by a central processing unit (CPU). Such computers employing memory chips vary from simple computers, such as those contained in telephone answering machines, to highly complex supercomputers employed for complicated scientific projects. The operability and functionality of these memory chips must be guaranteed after being manufactured. One or more defective memory locations in a memory of a computer used to perform scientific calculations may cause substantial problems. 
     Although current manufacturing techniques have substantially reduced the number of defective memory locations, excessive numbers of defective memory locations are still produced during the fabrication of computer memory. Those defective memory locations can be caused by an error in any of numerous steps taken during the manufacture of the memory chips such as is seen in semiconductor crystalinity defects and electrical connector discontinuities. Although memory chips with such defective memory locations typically represent a small portion (less than 1%) of the total number of memory chips produced, the actual number of such defective memory chips is substantial since computer manufacturers create many millions of memory chips each year. 
     Each memory chip includes a memory array, which is the area of the memory chip that stores bits of information. The array consists of rows and columns, with a cell at each intersection to store a bit. Manufacturers often use diagnostic programs to test each memory array before the array is shipped to the customers. These programs test the operability of each memory chip by writing a value into each memory cell and then reading the contents of that cell. If the value read from the memory cell is the same as that which was written into the memory cell, that particular memory cell is presumed to be functional. 
     FIGS. 1a and 1b are block diagrams illustrating the internals of some conventional memory chips. FIG. 1a illustrates a 4 Megabyte (M)×4 memory chip 100. The memory chip 100 has four memory arrays 102-108, each holding 4M of storage cells. The memory arrays 102-108 have 2048 rows and 2048 columns of memory cells. Each of four pins 110∝116 allows access to one of the memory arrays 102-108. FIG. 1b illustrates a 2M×8 memory chip 118. The memory chip 118 has 8 memory arrays 120-126. The memory arrays 120-126 each hold 2M of memory. Each of the memory arrays 120-126 contains 1024 rows and 2048 columns of memory cells. 
     FIG. 2 is a diagram illustrating two traditional memory chip handlers 200. Since thousands of memory chips need to be tested, memory chip handlers have been created to manipulate the memory chips for testing. An example of a commercial handler is the Atrium M4300 by Simtek. The handlers 200 carry a plurality of memory chips 202. Each of the handlers 200 can typically hold up to 32 memory chips at one time 202. 
     The handlers 200 are both connected to a testing computer 204 which runs a series of diagnostic tests on the memory chips 202. An example of a testing computer 204 is the Mongoose J994 manufactured by Teradyne. The testing computer 204 performs such tests as applying a range of voltages to the memory chips 202 as well as performing several types of memory diagnostic tests. However, one problem with the current testing computers is that they run the diagnostic tests on all of the memory in a memory array even upon the identification of a malfunctioning memory cell. If the memory chip 202 has a number of bad or marginal cells, time is wasted testing the entire memory array since the identification of a single malfunctioning cell often makes the memory chip not salable. 
     Additionally, such a testing process has been found to be very time consuming, especially in the retesting of previously identified bad memory chips. Bad memory chips 202 are often re-tested to re-evaluate whether a memory chip 202 was mis-identified. Sometimes, memory chips 202 appear to be malfunctioning due to faulty contacts with the handlers 200. Thus, a second evaluation of the memory chips 202 that failed the first testing may reveal that some of the memory chips 202 are actually operational. However, even though most of the cells are bad, traditional testing methodologies evaluate all of the memory cells on the memory chip before proceeding to the next chip. This thorough evaluation of all of the memory cells in the memory chip, after identifying some of the cells on the memory chip as malfunctioning, wastes time. 
     Therefore, memory chip manufacturers are in need of a testing process and system which would test memory chips in an efficient and cost effective manner. 
     SUMMARY OF THE INVENTION 
     The invention includes a system for efficiently testing and diagnosing memory arrays. One embodiment of the testing system calculates an efficient testing size for a specified number of rows in a memory array. The testing system efficiently identifies faulty memory cells, and subsequently identifies the faulty memory chip containing the faulty memory cells so it can be removed from the testing process. 
     Another embodiment of the invention includes a method of identifying malfunctioning memory cells on a plurality of memory chips, comprising connecting the plurality of memory chips to a testing computer, wherein each of the plurality of memory chips has a plurality of memory cells, associating a data structure for each of the plurality of memory chips on the testing computer, grouping the data structures into an active set, evaluating the operability of the set of memory cells on the plurality of memory chips, removing the data structures associated with any inoperable memory chips from the active set, and testing a new set of memory cells on each of the memory chips that has an associated memory structure in the active set. 
     Yet another embodiment of the invention includes a method of testing a memory chip, comprising identifying a subset of memory on a memory chip, performing a diagnostic test on the subset of memory, evaluating whether all of the tested memory cells are operational, halting the testing process if it is determined that the subset of memory has a malfunctioning memory cell, and providing an output indicating the results of the diagnostic test. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIGS. 1a and 1b are high level block diagrams illustrating the internals of traditional memory chips. 
     FIG. 2 is a diagram illustrating two traditional memory chip handlers connected to a testing computer. 
     FIG. 3 is a high level block diagram illustrating the components of the testing system. 
     FIG. 4 is a flowchart illustrating the testing process for the testing system shown in FIG. 3. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The following detailed description is directed to certain specific embodiments of the invention. However, the invention can be embodied in a multitude of different ways as defined and covered by the claims. In this description, reference is made to the drawings wherein like parts are designated with like numerals throughout. 
     System Overview 
     Referring to FIG. 3, a testing module 250 is shown connected to an active parts list 252. The active parts list 252 is a data structure that may reside in a system memory. The data structure may be in the form of an array, a linked list, or a type of hash table. The active parts list 252 contains an identifier for each of a plurality of memory chips 254 that are to be tested. The testing module 250 is also in communication with a user interface 256. The user interface 256 displays the testing options available to the user, displays the status of the testing process to the user, and receives input to modify the testing algorithms. 
     In one embodiment of the invention illustrated in FIG. 3, the memory chips 254 are situated on a commercial memory chip handler 258. An example of a commercial memory chip handler is the Atrium M4300 by Simtek. However, as can be readily appreciated by one in the art, the memory chips 254 can be located on various types of devices, so long as a communication pathway exists between the testing module 250 and the memory chips 254. 
     The testing module 250 may be implemented using a variety of programming languages including: C, C++, BASIC, COBOL, FORTRAN, Pascal, and Assembly Language. Moreover, the testing module 250 may be executed on any conventional general purpose single- or multi-chip microprocessor such as a Pentium® processor, a Pentium Pro® processor, a 8051 processor, a MIPS® processor, a Power PC®, or an ALPHA® processor. In addition, the microprocessor may be any conventional special purpose microprocessor such as a digital signal processor. 
     Mode of Operation 
     The testing module 250 provides for the testing of the memory chips 254 through a series of iterations, testing an increasingly larger subset of memory on the memory chips 254 during each pass. On a first iteration or pass, the testing module 250 tests an initial small optimal subset of a memory array of the memory chips 254. An iteration or pass is defined as a completion of the functionality and performance tests that are run on a set of memory cells. Memory chips 254 that fail the test on the first pass are removed from the active parts list 252, since these memory chips 254 have memory cells that are malfunctioning. The testing module 250 then executes an algorithm to determine the best optimal size of the remaining memory on the memory chips to be tested on the next pass. 
     The testing module 250 then again tests each of the non-failing memory chips 254 using the new optimal size of memory to test. The testing module 250 removes the failing memory chips 254 identified through this second run from the parts list 252 of sites to be tested on the next pass. This procedure is repeated until the testing module 250 tests all of the memory chips 254. This procedure allows the memory chips 254 that have few operational memory cells to be tested more quickly than memory chips 254 having more operational memory. Thus, the memory chips 254 having entirely operational memory arrays take the longest to test. 
     FIG. 4 is a flowchart illustrating the testing process. Starting at a state 300, the testing module 250 sets up the initial variables and counters. Moving to a state 302, the testing module 250 determines the initial size of the block of memory that is to be tested. The initial size of memory depends on the number of rows and columns in each memory array. As can be readily appreciated by one in the art, the size of the set of test cells may vary. In one embodiment of the invention, the size of the memory tested during each pass is increased exponentially. In an alternative embodiment of the invention, the memory cells on each of the memory chips 254 are tested in sequential order until a malfunctioning memory cell is identified. 
     Proceeding to a state 304, the testing module 250 performs a series of diagnostic routines on the memory cells. Typical diagnostic routines that are performed on the memory chips 254 may test the following parameters of each the memory chips 254: operable voltages, operable currents, speed, and refresh conditions. Further, each of these parameters can be tested by various methods. For example, a speed test can address the memory arrays by writing to columns, rows, diagonal, or specified bits of the memory array. As can be readily appreciated by one in the art, any of the various conventional diagnostic or testing routines may be used in connection with the testing methodology described herein. 
     Next, at a state 306, the testing module 250 removes the memory chips 254 that have bad memory arrays from the active parts list 252. The active parts list 252 contains the identifiers of a set of memory chips 202 in which the testing module 250 has not identified any malfunctioning memory cells. 
     It is noted that the testing module 250 may be configured to allow a predefined number of defective memory cells to be located on a dysfunctional memory chip before the memory chip is removed from the testing process. This predefined number or threshold value advantageously allows a manufacturer to determine if the memory chip contains enough operational memory cells to be partially usable. For example, a two megabyte memory chip with one megabyte of operational memory cells may be configured and sold as a one megabyte memory chip. 
     The threshold value may be inputted by a user at the beginning of the operation of the testing module 250. Alternatively, the testing module 250 may display the total number of defective memory cells at the end of the testing process, and thereby afford the user the option to keep or discard the partially dysfunctional memory chip. 
     Proceeding to a decision state 308, the testing module 250 analyzes the active parts list 252 to see if any memory chips 254 passed the diagnostic tests. If none of the memory chips 254 passed the tests, the testing module 250 proceeds to a state 310 which is described below. Otherwise, the testing module 250 proceeds to a state 312 to check whether any memory remains untested. If any of the memory cells remains untested, the testing module 250 moves to state 314 and retrieves the next block of memory. The testing module 250 then returns to a state 304 to start testing a new block of memory. If it is determined in state 312 that all of the memory has been tested, the testing module 250 proceeds to state 310. 
     In the state 310, the testing module 250 identifies to a user a listing of the faulty memory chips 254, and allows the user to remove these faulty memory chips 254. Next, at a decision state 316, the testing module 250 determines whether there are more memory chips 254 that are in need of testing. If a tester has additional memory chips 254, the testing module 250 moves to a state 302 to repeat the testing process described above. Otherwise, if the tests are complete, the testing module 250 moves to a state 318 and displays the final testing results to the user. Next, in a state 320 the testing module 250 ends. 
     The following equations 1-7 illustrate the algorithm or pseudo-code employed by one embodiment of the invention to selectively test portions of the memory chips 254. It should be noted that the equations 1-7 may be easily modified to evaluate memory arrays by columns instead of rows. Additionally, the equations 1-7 may be modified to evaluate selected sections of each of the memory chips 254. The equations 1-7 are executed for each memory array on each of the memory chips 254 that is located on a handler 258 or on a general purpose computer (not shown). The text following the equations further describes the purpose of each of the equations as well indicating when the equations are performed in reference to the flowchart shown in FIG. 4. ##EQU1## 
     The testing module 250 uses equations 1 and 2 to set the variables LOWER --  LIMIT and UPPER LIMIT to zero. LOWER --  LIMIT represents the starting row of the memory array that is to be tested during a pass. UPPER LIMIT represents the last row of memory that is to be tested during the pass. The testing module 250 performs equations 1 and 2 at the state 300 shown in FIG. 3. 
     Moving to equation 3, the testing module 250 initializes a looping variable i. The testing module 250 uses the variable i to calculate the row numbers of the memory cells that are to be tested for each pass of the testing process. The testing module 250 sets the variable N to the number of rows of memory cells in the memory chips 254. Next, at equation 4 the testing module 250 sets the UPPER --  LIMIT to be equal to the function 2 i  in order to exponentially increase the size of the memory cells that are to be tested. However, as was previously mentioned, the size of the test set of cells may vary. An alternative embodiment of the invention linearly increases the size of the set of test cells. The equations 3 and 4 are executed in the state 302 shown in FIG. 3. 
     Proceeding to use equation 5, the testing module 250 performs the diagnostic tests on each of the memory chips 254. Referring to FIG. 3, the testing module 250 runs the series of diagnostic tests on the memory cells (state 304), and removes bad memory chips 254 from the active parts list 252 (state 306). If no passing memory chips 254 are found, the testing module 250 stops analyzing the memory chips 254 (state 310). 
     Next, using equation 6 the testing module 250 resets the LOWER --  LIMIT to equal the UPPER --  LIMIT+1 in preparation for repeating the testing process on a new set of rows. Referring to FIG. 3, equation 6 is performed at the decision state 312. Moving to equation 7, the looping variable i is incremented by one in the decision state 312. 
     The testing module 250 then returns to equation 3 to determine whether the all of the rows have been tested this is done in the decision state 312. If some of the rows of memory have not been tested, the testing module 250 recalculates an UPPER --  LIMIT and repeats the diagnostic routines on the untested memory rows. Otherwise, the testing module 250 determines in the state 316 whether there are more memory chips 254 that are in need of testing. 
     Table 1 illustrates the state of the variables in equations 1-7 during the testing process for the embodiment disclosed above. Table 1 illustrates the different values for the variables LOWER --  LIMIT and UPPER --  LIMIT depending on the current iteration of the looping variable i for a memory array with 64 rows. 
     
                       TABLE 1______________________________________                           EVALUATEDi     LOWER.sub.-- LIMIT               UPPER.sub.-- LIMIT                           ROWS______________________________________0     0             1           0,11     2             3           2,32     4             7           4-73     8             15           8-154     16            31          16-315     32            63          32-63______________________________________ 
    
     As can be seen from Table 1, during each pass of the testing process, increasing sizes of memory are analyzed. In the first pass only two rows are analyzed, while in the fifth pass thirty-two rows are analyzed. 
     Using this testing system, memory chips having memory cells that have large numbers of dysfunctional memory cells are likely to be identified on the first several passes, and then be removed from the active parts list 252. The first pass runs quickly, since the testing module 250 only tests a small portion of the memory, and there is no wasted time testing the rest of the memory array. On the second pass, the testing module 250 tests a new portion of the remaining memory chips 254 based upon an algorithm, such as is disclosed in Equation 4, that increases the size of the memory to be tested upon each pass. Since the setup time to run a pass is small, the time to test the memory chips 254 with operational memory using this procedure is approximately equal to the time it takes to test the memory chips 254 having all operational memory using a traditional procedure. Thus, at its slowest, the system is as fast as the prior art systems disclosed herein. Furthermore, the more inoperable or partially operable memory cells that are in a set of memory chips 254, the quicker the memory chips 254 are tested. 
     The testing module 250 disclosed herein overcomes the long-standing problem in the industry of long testing times by providing efficient and cost effective procedures and processes for identifying malfunctioning memory chips 254. The testing module 250 dramatically decreases the testing time of memory chips 254 by only testing each of the memory chips 254 until the presence of an inoperable memory cell is identified. 
     While the above detailed description has shown, described, and pointed out fundamental novel features of the invention as applied to various embodiments, it will be understood that various omissions and substitutions and changes in the form and details of the system illustrated by be made by those skilled in the art, without departing from the intent of the invention. Thus, the scope of the invention is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.