WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for testing random access memory    
United States Patent5469443   
Link to this pagehttp://www.wikipatents.com/5469443.html
Inventor(s)Saxena; Nirmal (San Jose, CA)
AbstractA memory is tested by subjecting the memory to three phases of testing. In the first phase, a first address in the memory is initialized by writing an initial set of data to the address. Then data is read from the address just written to and this data is modified to produce a set of modified data. The modified data is then written to another address in the memory. The steps of reading, modifying, and writing modified data back to the memory are repeated until all addresses in the memory have been written to. Thereafter, the data values stored in the memory are compared to a reference list of data values to determine whether the memory contains a defect. In phase two, the steps of phase one are repeated except that the first address in the memory is initialized by writing a set of data which is the complement of the initial set of data used in phase one. Phase two, in effect, complements the contents of each address in the memory to ensure that each cell in the memory is written with both a 0 and a 1. At the end of phase two, the data values stored in the memory are again compared to a list of reference data values to determine whether the memory contains a fault. In phase three, an address in the memory is first selected. Data is then read from the selected address and modified to produce a set of modified data. The modified data is written back to the selected address. The steps of reading, modifying, and writing modified data back to the selected address are repeated a selected number of times. Thereafter, another address in the memory is selected and the process described above is repeated. After all of the addresses in the memory have been selected, the data values stored in the memory are once again compared to a reference list of data values. Using the three-phase test described above, all stuck-at, address uniqueness, address coupling, and bit coupling (within a storage location) faults in the memory are provoked and detected.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5469443
Method and apparatus for testing random access memory - US Patent 5469443 Drawing
Method and apparatus for testing random access memory
Inventor     Saxena; Nirmal (San Jose, CA)
Owner/Assignee     HaL Computer Systems, Inc. (Campbell, CA)
Patent assignment
All assignments
Publication Date     November 21, 1995
Application Number     08/130,376
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 1, 1993
US Classification     714/720 714/719
Int'l Classification     G01R 031/28
Examiner     Canney; Vincent P.
Assistant Examiner    
Attorney/Law Firm     Truong; Phong K.
Address
Parent Case    
Priority Data    
USPTO Field of Search     371/21.1 371/21.2 371/21.3 365/201 365/189.01 324/158 R
Patent Tags     testing random access memory
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5357523
Bogholtz, Jr.
714/718
Oct,1994

[0 after 0 votes]
5315553
Morris
365/201
May,1994

[0 after 0 votes]
5258986
Zerbe
714/719
Nov,1993

[0 after 0 votes]
4891811
Ash
714/719
Jan,1990

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. For a memory having a plurality of storage locations, each storage location having a unique address, a method for testing said memory for defects, comprising the steps of:

(a) writing an initial set of data to a particular address in said memory;

(b) reading a set of stored data from the address just written to;

(c) modifying the stored data to produce a set of modified data;

(d) writing the modified data to another address in said memory;

(e) repeating steps (b) through (d) until all addresses in said memory have been written to; and

(f) comparing data values stored in said memory with reference data values to determine whether said memory contains any defects.

2. The method of claim 1, wherein the step of modifying the stored data comprises the step of:

processing the stored data through a data modifier to produce a set of modified data, said data modifier having a property that, if the stored dater does not contain an error, said data modifier will produce a set of modified data which is distinct from any set of modified data previously written into said memory.

3. The method of claim 2, further comprising the steps of:

(g) writing a complementary set of data, which represents the complement of said initial set of data, to said particular address in said memory;

(h) reading a set of saved data from the address just written to;

(i) modifying the saved data to produce a set of altered data;

(j) writing the altered data to another address in said memory;

(k) repeating steps (h) through (j) until all addresses in said memory have been written to; and

(l) comparing data values stored in said memory with a second set of reference data values to determine whether said memory contains any defects.

4. The method of claim 3, wherein the step of modifying the saved data comprises the step of:

processing the saved data through said data modifier to produce a set of altered data, said data modifier having a further property that, if the saved data does not contain an error, said data modifier will produce a set of altered data which is distinct from any set of altered data previously written into said memory.

5. For a memory having a plurality of storage locations, each storage location having a unique address, an apparatus for testing said memory for defects, comprising:

a data modifier having a modifier input coupled to a data output of the memory, and a modifier output coupled to a data input of the memory, said data modifier receiving stored data from the data output of said memory, and processing said stored data to produce a set of modified data at said modifier output;

a controller for controlling operation of said memory, said controller causing an initial set of data to be written to a particular address in said memory, said controller further causing said memory to output a set of stored data from the address just written to, and to store the modified data received from said modifier output into another address, said controller continuing to cause said memory to output a set of stored data from the address just written to, and to store the modified data received from said modifier output into another address, until all addresses in said memory have been written to; and

a comparator coupled to the data output of the memory for comparing data values stored in said memory with reference data values to determine whether said memory contains any defects.

6. The apparatus of claim 5, wherein said data modifier has a property that, if the stored data received at said modifier input does not contain an error, said data modifier will produce a set of modified data which is distinct from any set of modified data previously written into said memory.

7. The apparatus of claim 6, wherein said controller further causes a complementary set of data, representing the complement of said initial set of data, to be written into said particular address, said controller further causing said memory to output a set of stored data from the address just written to, and to store the modified data received from said modifier output into another address, said controller continuing to cause said memory to output a set of stored data from the address just written to, and to store the modified data received from said modifier output into another address, until all addresses in said memory have been written to a second time.

8. The apparatus of claim 7, wherein said comparator, after all locations in said memory have been written to at least two times, further compares data values stored in said memory with a second set of reference data values to determine whether said memory contains any defects.

9. The apparatus of claim 8, wherein said data modifier has the following additional property:

given said initial set of data as input, said data modifier generates a first sequence of data values;

given said complementary set of data as input, said data modifier generates a second sequence of data values; and

the data values in said second sequence are complementary to the data values in said first sequence.

10. The apparatus of claim 6, wherein said data modifier receives eighteen bits of data, denoted as D[18:1], at said modifier input, and provides eighteen bits of modified data, denoted as MD[18:1], at said modifier output, and wherein said data modifier derives said modified data MD[18:1] as follows:

MD[i]=D[i-] for all i, except;

MD[8]=D[7] D[18] MCTL;

where denotes an exclusive-OR (XOR) operation and MCTL denotes a complementary control signal.

11. The apparatus of claim 6, wherein said data modifier receives forty-four bits of data, denoted as D[44:1], at said modifier input, and provides forty-four bits of modified data, denoted as MD[44:1], at said modifier output, and wherein said data modifier derives said modified data MD[44:1 ]as follows:

MD[i]=D[i-1] for all i, except;

MD[28]=D27] D[44] MCTL;

MD[27]=D[26] D[44] MCTL;

MD[2]=D D[1] D[44]D MCTL;

MD[1]=MD[44];

where denotes an exclusive-OR (XOR) operation and MCTL denotes a complementary control signal.

12. The apparatus of claim 6, wherein said data modifier receives fifty-six bits of data, denoted as D[56:1], at said modifier input, and provides fifty-six bits of modified data, denoted as MD[56:1], at said modifier output, and wherein said data modifier derives said modified data MD[56:1], as follows:

MD[i]=D[i-1] for all i, except;

MD[23]=D[22] D[56] MCTL;

MD[22]=D[21] D[56] MCTL;

MD[2]=D[1] D[56] MCTL;

MD[1]=MD[56];

where denotes an exclusive-OR (XOR) operation and MCTL denotes a complementary control signal.

13. The apparatus of claim 6, wherein said data modifier receives sixty-four bits of data, denoted as D[64:1], at said modifier input, and provides sixty-four bits of modified data, denoted as MD[64:1], at said modifier output, and wherein said data modifier derives said modified data MD[64:1] as follows:

MD[i]=D[i-1] for all i, except;

MD[5]=D[4] D[64] MCTL;

MD[4]=D[3] D[64] MCTL;

MD[2]=D[1] D[64] MCTL;

MD[1]=MD[64];

where denotes an exclusive-OR (XOR) operation and MCTL denotes a complementary control signal.

14. The apparatus of claim 6, wherein said data modifier receives seventy-two bits of data, denoted as D[72:1], at said modifier input, and provides seventy-two bits of modified data, denoted as MD[72:1], at said modifier output, and wherein said data modifier derives said modified data MD[72:1] as follows:

MD[i]=D[i-1] for all i, except;

MD[54]=D[53] D[72] MCTL;

MD[48]=D[47] D[72] MCTL;

MD[7]=D[6] D[72] MCTL;

MD[1]=MD[72];

where denotes an exclusive-OR (XOR) operation and MCTL denotes a complementary control signal.

15. For a memory having a plurality of storage locations, each storage location having a unique address, a method for testing said memory for defects, comprising the steps of:

(a) writing an initial set of data to a particular address in said memory;

(b) reading a set of stored data from the address just written to;

(c) processing the stored data through a data modifier to produce a set of modified data, said data modifier having a property that, if the stored data does not contain an error, said data modifier will produce a set of modified data which is distinct from any set of modified data previously stored into said memory;

(d) writing said modified data into another address in said memory;

(e) repeating steps (b) through (d) until all addresses in said memory have been written to, thereby allowing said data modifier to generate a sequence of modified data values;

(f) comparing data values stored in said memory with reference data values to determine whether said memory contains any defects;

(g) writing a complementary set of data, representing the complement of said initial set of data, to said particular address in said memory;

(h) reading a set of saved data from the address just written to;

(i) processing the saved data through said data modifier to produce a set of altered data;

(j) writing the altered data to another address in said memory;

(k) repeating steps (h) through (j) until all addresses in said memory have been written to a second time, thereby allowing said data modifier to generate a sequence of altered data values; and

(l) comparing data values stored in said memory with a second set of reference data values to determine whether said memory contains any defects;

wherein said data modifier has the additional property that, if the stored data and the saved data do not contain any errors, then the altered data values in said sequence of altered data values will be complementary to the modified data values in said sequence of modified data values.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

The present invention relates generally to very large scale integration (VLSI) chips, and more particularly, to a method and apparatus for testing a random access memory embedded within a VLSI chip.

DESCRIPTION OF THE BACKGROUND ART

Many VLSI chips currently manufactured have one or more random access memories (RAM) embedded within the chip as part of an overall device. The RAM, because it is an integral part of the chip, needs to be tested to determine whether it will function properly. Testing of the RAM may be achieved in one of two ways. The first method involves the use of an external testing device for accessing and manipulating the RAM. Because the RAM is embedded within the chip, it is very difficult for the external testing device to access the RAM. Hence, testing using the external testing method is difficult and inefficient. An alternative testing method involves the use of a built-in self-test (BIST) mechanism which is incorporated into the chip to enable the chip to test its own RAM. Because the BIST mechanism is a part of the chip and, hence, is internal to the chip, it does not experience any difficulties in accessing the RAM. Thus, the BIST mechanism tests the RAM much more effectively and efficiently than the external device. For this reason, many VLSI chips include a BIS T mechanism for testing on-chip RAM.

A typical BIST mechanism includes a test pattern generator and a test response evaluator. The test pattern generator generates pseudo-random patterns for the data and addresses and feeds these to the RAM. The test response evaluator, in turn, implements a compaction method (such as signature analysis) to evaluate the output data from the RAM. From the evaluation of the RAM output data, the BIST mechanism determines whether the RAM exhibits any faults.

A shortcoming of the current BIST mechanisms is that they cannot guarantee complete fault coverage for certain RAM fault models. This is due to the fact that, in traditional BIST techniques, fault coverage is estimated through fault simulation. Instead of simulating all possible faults (which is computationally impractical), only a sample of faults is simulated. This means that the fault determination of the BIST mechanism represents only a probability that the RAM is fault free. As with all probabilities, there is a chance that the RAM may have faults despite the fact that it passed the BIST test. For systems which demand high reliability, this possibility of error cannot be tolerated. High reliability systems require a BIST method and apparatus which can guarantee that any instance of certain fault models will be detected. Currently, there is no BIST mechanism believed to be available which can guarantee fault coverage for certain RAM fault models.

SUMMARY OF THE INVENTION

The present invention provides a BIST method and apparatus which guarantees that all stuck-at, address uniqueness, address coupling, and bit coupling (within a particular storage location) faults within a memory are provoked and detected. According to the method of the present invention, a memory is put through three phases of testing. In the first phase, an initial set of data is written to a particular address, preferably the first address, in the memory. Data is read from the address just written to and then modified to produce a set of modified data. The data is preferably modified such that the set of modified data is distinct from any set of data stored in a previous address in the memory. The modified data is thereafter written to another address, preferably the next sequential address, in the memory. The steps of reading data from the address just written to, modifying the data, and writing the modified data to another address are repeated until all addresses in the memory have been written to. Thereafter, the data values stored in the memory are read and compared to a set of reference data values to determine whether the memory exhibits any faults. Since all addresses are accessed and written to in phase one, phase one serves to provoke and detect all address uniqueness faults.

The steps performed in phase two are identical to those carried out in phase one except that, in phase two, the first address in the memory is initialized with a set of data which is the complement of the initial set of data used to initialize the memory in phase one. This subtle change causes each address of the memory to be written with a set of data which is the complement of the set of data with which it was written in phase one. Hence, phase two in effect complements each storage location in the memory to ensure that each cell in each storage location is written with both a 0 and a 1 value. If any cell is stuck at a particular value, phases one and two will provoke and detect it.

At the end of phase two, each storage location in the memory will have been written with a distinct set of data. In phase three, a particular address of the memory (preferably the first address) is first selected. Data is read from the selected address and modified to produce a modified set of data. This modified data is then written back to the selected address. Thereafter, data is read again from the selected address, the data is modified, and the modified data is again written back to the selected address. This process is repeated a selected number of times with the selected number preferably being equal to the number of storage cells in each storage location. Preferably, at some point during the process of iteratively writing modified data to the selected address, each and every pair of storage cells in the selected address simultaneously experiences opposite binary values. After the above process is repeated the proper number of times, another address is selected and this new address is processed as described above. This process continues until all of the addresses in the memory have been selected. By iteratively reading, modifying, and writing data to a selected address, phase three provokes all address coupling faults and all bit coupling faults within a storage location. The faults provoked, if any, are detected by reading and comparing the data values stored in the memory to a reference list of data values. Together, phases one, two and three serve to provoke and detect all stuck-at, address uniqueness, address coupling, and bit coupling (within a storage location) faults in the memory.

The apparatus of the present invention preferably comprises a data modifier, a comparator, and a controller. The controller is coupled to the memory to selectively send address and control signals to the memory to cause the memory to selectively input and output data. The controller preferably comprises a plurality of counters for generating addresses and a BIST controller. The data modifier, which has an input coupled to an output of the memory, and an output coupled to an input of the memory, receives output data from the memory and processes this data to produce a set of modified data. This modified data is sent to the input port of the memory. The controller, working together with the data modifier, causes data to be read from, and modified data to be written to, the memory to fill the memory with distinct sets of data. Thereafter, the controller causes data to be read out of the memory and sent to the comparator to be compared with a set of reference data values. If the comparator determines that there is a discrepancy between the data from the memory and the reference data, then an error signal is generated to indicate that the memory contains a defect.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow diagram of the first phase of the method of the present invention.

FIG. 2 is a block diagram of a test memory 40 and a magic function 42 to illustrate the sequence of operation of phase one of the method of the present invention.

FIG. 3 is, a flow diagram of the second phase of the method of the present invention.

FIG. 4 is a flow diagram of the third phase of the method of the present invention.

FIG. 5 is a block diagram representation of a system for implementing the method of the present invention.

FIG. 6 is circuit diagram of a specific implementation of the data modifier 112 of FIG. 5.

FIG. 7A is a flow diagram of the sequence of operation of BIST controller 150 during phase one of the method of the present invention.

FIG. 7B is a flow diagram of the sequence of operation of BIST controller 150 during phase two of the method of the present invention.

FIG. 7C is a flow diagram of the sequence of operation of BIST controller 150 during phase three of the method of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Before describing the invention in detail, a brief discussion of the common faults occurring within memories will be provided in order to facilitate a complete understanding of the invention. A typical random access memory comprises a plurality of storage locations, each storage location having a unique address and a plurality of storage cells. Ideally, each address should be uniquely addressable, each storage cell should be capable of storing both a 0 and a 1, and each storage cell should operate independently of the other storage cells. However, due to manufacturing imperfections, some memories will contain defects. Usually, these defects manifest themselves in the form of one or more fault conditions.

A first common fault condition is the stuck-at fault. Stuck-at faults occur when a storage cell is frozen at a particular data value. No matter what data is written into the cell, the cell always exhibits the same data value. Another common fault condition is the address uniqueness fault. This fault condition arises when one or more of the addresses in the memory cannot be accessed. Address uniqueness faults are normally caused by one or more of the memory's decoder outputs being stuck at a particular value. A third common fault condition is the address coupling fault. The result of such a fault is that accessing one address causes another address to also be accessed. A fourth common fault condition is the bit coupling fault. For a memory having this fault condition, changing a data value in one storage cell affects the data value in another storage cell. These four fault conditions are the most common manifestations of memory defects. The present invention provides a method and apparatus for testing a memory which provokes and detects all stuck-at faults, all address uniqueness faults, all address coupling faults, and all bit coupling faults within a particular storage location.

According to the method of the present invention, a memory is tested in three phases. In phases one and two, data is iteratively read from one address, modified, and written to another address to provoke and detect all stuck-at and address uniqueness faults. In phase three, data is iteratively read from each address, modified, and written back to the same address to provoke and detect all address coupling faults and all bit coupling faults within a particular storage location. Together, these three phases provide a thorough test for verifying the accuracy and integrity of the memory.

With reference to FIG. 1, the method of the present invention will now be described in greater detail. FIG. 1 shows a flow diagram of the first phase of the inventive method. As shown in FIG. 1, a memory is tested by first writing 20 a set of initial data to a particular storage location in the memory. This step is preferably carried out by writing 0x1 into the first address in the memory. The "x" is used here to represent a variable number of 0's. If each storage location in the memory has eight storage cells, then the "x" represents six 0's. If each storage location has eighteen storage cells, then the "x" represents sixteen 0's, and so forth.

After the initial data is written, data is read 22 from the address which was just written to, namely, the first address. This data is then modified 24 to produce a set of modified data. Preferably, the data is modified by passing it through a "magic" function. This magic function has several important properties. One important property is that the magic function ensures the modified data produced is distinct from any set of data stored in a previous address in the memory. As will be explained later, this property plays an important role in facilitating the detection of faults. Other properties of the magic function will be disclosed and explained in subsequent sections.

After the data from the first address is modified, the set of modified data is written 26 to another address in the memory, preferably the next address. Thereafter, it is determined 28 whether more addresses remain in the memory to be written. If so, steps 22, 24, 26, and 28 are repeated to again read data from the address just written to, modify the data, and write the modified data to another address. This iterative process continues until all addresses in the memory have been written to. At the end of this process, if the memory has no defects, each memory location in the memory has a distinct set of data. This is due to the fact that the magic function ensures that each set of modified data written into the memory is distinct from any set of data stored in a previous address in the memory. The magic function guarantees data distinctiveness among the memory locations if the memory is a 2.sup.k .times.n memory (2.sup.k memory locations, each location having n bits or storage cells) and n is greater than k. This condition is satisfied by most memories. After the memory is fully written with data, the contents of the memory are read out 30 and compared 32 to a set of reference data values. The set of reference values represents the data values which should be stored in the memory if the memory is free of defects. Any deviation from the reference values indicates a defect.

Phase one serves to provoke and detect all address uniqueness faults and some stuck-at faults. To illustrate this more clearly, reference is made to FIG. 2, which shows a block diagram of a test memory 40 having addresses 0 to 2.sup.k -1 and n bits, and a magic function 42. According to phase one, an initial set of data (0x1) is written to the first address in memory. Hence, in address 0 of memory 40, there is stored a set of data having the value of 0x1. The data stored in address 0 is then read and sent to the magic function 42 to be modified. The modified data MD.sub.1 from the magic function 42 is thereafter written into the next address of the memory 40, namely, address 1. The data in address 1 is then read and outputted to the magic function, which modifies the data to produce another set of modified data MD.sub.2. MD.sub.2 is then written into address 2 of the memory. This process repeats until modified data MD.sub.z is written into address 2.sup.k -1. Note that the data in each subsequent address is determined based upon the data read out of the previous address. This means that if a previous memory location contains a fault, this fault will be reflected in the data of subsequent memory locations. By checking the values stored in the memory, the fault can be detected.

To illustrate how phase one detects address uniqueness faults, suppose that address 1 is inaccessible. This means that MD 1 cannot be written into, nor can it be read from, address 1. Hence, when an attempt is made to read from address 1, the data at the output of the memory 40 will not be equal to MD 1. Since it is this erroneous output data which is modified and the modified data written into address 2, the data MD.sub.2 in address 2 will not have the proper data value. Since MD.sub.2 is in turn used to generate MD.sub.3, MD.sub.3 will also contain an incorrect data value. In fact, all subsequent memory locations will contain erroneous data values. Hence, this one address uniqueness fault taints the data in the remainder of the memory locations. By checking the data stored in the memory 40, this address uniqueness fault can be easily detected.

A stuck-at fault can be detected in a similar fashion. Suppose, for example, that 0x1 is written into address 0 but that, due to a stuck-at fault, 0x0 is the data actually stored at address 0 . When data is read from address 0, data value 0x0 will be outputted and sent to the magic function 42. Using this incorrect data, magic function 42 produces modified data MD.sub.1, which is written into address 1. Since magic function 42 uses the erroneous data to generate MD.sub.1, MD.sub.1 will have an incorrect data value. The data stored in subsequent storage locations will also have incorrect data values. Thus, the stuck-at fault can be detected by comparing the data stored in the memory to a set of reference data values.

Phase one serves to provoke and detect all address uniqueness faults, but it only provokes half of the stuck-at faults. This is because each storage cell has only been written with one value, a 0 or a 1. To provoke and detect all stuck-at faults, it is necessary to write each storage cell with both a 0 and a 1 to determine whether the storage cell is capable of storing both values. Phase two of the inventive method serves to provoke and detect the stuck-at faults left untested by phase one.

Referring to FIG. 3, there is shown a flow diagram of phase two of the method of the present invention. A brief review of FIG. 3 will reveal that substantially the same steps are performed in phase two as in phase one. The only difference is that in phase two, the complement of the initial set of data used in phase one is written 50 to a particular address in the memory. This set of complementary data is preferably written to the same address as that to which the initial set of data was written in phase one. Hence, in step 50 of phase 2, the complement of 0x1 (.about.(0x1)) is preferably written to the first address in the memory. Thereafter, data is read 52 from the address just written to, the data is modified 54 by the magic function to produce a set of modified data, and the modified data is written 56 to another address in the memory, preferably the next address. It is then determined 58 whether other addresses remain in the memory to be written. If so, steps 52, 54, 56, and 58 are repeated until all addresses in the memory have been written to. Thereafter, the contents of the memory are read out 60 and compared 62 to a set of reference data values to determine whether the memory contains erroneous data. If so, a defect in the memory is indicated.

The purpose of phase 2 is to write into each storage location in the memory the complement of the set of data written into the storage location in phase one. In effect, phase two complements the data stored in the memory. At the end of phase 2, if the memory contains no defects, each storage location in the memory has a distinct set of data, and each set of data is the complement of the set of data previously written into the storage location in phase one. In this manner, each storage cell is forced to store both a 0 and a 1 value. If any cell is stuck-at a particular data value, phases one and two will provoke and detect this defect.

It should be noted here that, preferably, the same magic function is used in both phases one and two to modify data read from the memory. Since the purpose of phase two is to complement the data generated in phase one, the magic function preferably has the following additional property: Given the complement of the set of initial data used in phase one, the magic function is capable of generating a sequence of data which is complementary to the sequence of data generated in phase one. That is, given the complement of 0x1, the magic function 42 generates a sequence of data wherein each set of data in the sequence is complementary to a corresponding set of data generated by steps 42-48 (FIG. 1) of phase one. This property allows the same magic function to be used in both phases, and this, in turn, simplifies implementation of the inventive method.

After phase two is completed, the inventive method proceeds on to phase three. With reference to FIG. 4, there is shown a flow diagram of phase three of the inventive method, wherein the first step is to initialize 70 the memory with distinct data. This is preferably achieved by writing a distinct set of data into each storage location. Recall that the magic function ensures (if no faults are encountered) that each set of modified data written into the memory is distinct from any set of data written into a previous storage location. Thus, if phase three is carried out immediately after phase two (as is preferred), and if no faults are encountered in phases one and two, then each storage location in the memory will already contain a distinct set of data. Thus, step 70 may not need to be performed.

After the memory is initialized, phase three enters into a first loop, wherein an address in the memory is selected 72. This selected address is preferably the first address in the memory. Thereafter, a second loop is entered to read 74 data from the selected address, to modify 76 the data to produce a set of modified data, and to write 78 the modified data back into the selected address. Preferably, the data from the selected address is modified by passing the data through the same magic function as in phases one and two. After the modified data is written back to the selected address, it is determined 80 whether steps 74-78 have been performed a selected number of times. If not, steps 74-78 are repeated. Preferably, steps 74-78 are performed an n number of times where n represents the number of storage cells in each storage location. After nested loop 74-80 has been executed, it is determined 82 whether more addresses remain in the memory to be processed. If so, another address, preferably the next sequential address in the memory, is selected 72 and this newly selected address is processed by the nested loop 74-80 as described above. Steps 72-82 are repeated until all addresses in the memory have been selected and processed. Thereafter, the contents of the memory are read out 84 and compared 86 to a set of reference data. If there is any discrepancy between the stored data and the reference data, then a memory defect is indicated.

As mentioned above, the data from the selected address is modified using the same magic function as in phases one and two. In order to provoke and detect all address coupling faults and bit coupling faults within a storage location, the magic function preferably has the following additional properties: (1) the magic function ensures that the last set of data written into each selected address is distinct from any set of data stored in a previous address; and (2) the magic function ensures that, at some point during the execution of nested loop 74-80, each and every pair of storage cells in the selected address simultaneously experiences opposite binary values.

Additional property (1) guarantees (if no faults are encountered) that the data stored in each storage location of the memory is distinct. This property is important when it comes time to detect the possible faults. To illustrate this point, suppose that each memory location does not contain a distinct set of data, but that locations 1 and 5 contain the same data. When it comes time to check the contents of the memory, both locations will output the same data. However, there is always uncertainty as to whether the data came from location 1 or location 5. It is possible that an address coupling fault exists between the two memory locations which causes location 5 to be accessed when the address for location 1 is fed to the memory. If such a fault exists, it will go undetected. Consequently, in order to guarantee that all address coupling faults are detected, the magic function preferably ensures data distinctiveness among the various memory locations.

To illustrate that phase three provokes and detects all address coupling faults, suppose that writing data to address 1 changes the data in address 3 so that address 3 now contains incorrect data. After addresses 1 and 2 are processed, address 3 is selected. In accordance with steps 74-78, data is read from address 3, the data is modified, and the modified data is written back to address 3. Because address 3 is first read from and then written to, the change in the data caused by the address coupling fault is preserved. Since this incorrect data is used to produce the modified data which is written back to address 3, the data stored in address 3 will reflect the error. Thus, when the contents of address 3 are later compared to a corresponding reference data value, the address coupling fault will be detected.

Suppose instead that writing data to address 3 changes the data in address 1. Such a fault will also be detected. Assuming that address 1 is processed prior to address 3, the data change caused by the address coupling fault is preserved in address 1 throughout phase three. When the contents of address 1 are eventually compared to a corresponding reference data value, the change in data will be detected. Hence, the address coupling fault is exposed. Therefore, phase three provokes and detects all address coupling faults.

Additional property (2) plays an important role in provoking all bit coupling faults. To elaborate, when two storage cells are bit coupled, a binary value written into one cell is also stored in another cell. Hence, if two cells are bit coupled, they must store the same binary value. Since property (2) guarantees that at some point during phase three, each and every pair of cells in the selected address will simultaneously experience opposite binary values, there will come a time when the bit coupled storage cells must take,, on different values. Since the cells are incapable of storing different binary values, the bit coupling fault will manifest itself in the form of incorrectly stored data. This incorrect data will alter the data sequence generated by the magic function, and this data alteration will, in turn, be detected when the contents of the memory are compared to the set of reference data. Thus, any and all bit coupling faults within a single storage location are provoked and detected by phase three. Together, phases one, two, and three provide a thorough test for verifying the accuracy and integrity of a memory.

With reference to FIG. 5, there is shown a system 100 wherein the method of the present invention is implemented. System 100 is preferably incorporated into a VLSI chip (not shown) as part of an overall device to allow the chip to self-test the on-chip memory 102. The memory 102 to be tested preferably is a read/write memory having 2.sup.k storage locations, each storage location having a unique address and n storage cells. As mentioned previously, the magic function ensures data distinctiveness among the various storage locations if n>k. For this reason, n is preferably greater than k for memory 102. Memory 102 also preferably comprises a decoder 104 for receiving and decoding address and read/write control signals, an output port 106 for outputting data from the memory 102, and an input port 108 for receiving data to be stored within the memory 102.

Note that input port 108 is coupled to the output of a 2-port data register 110 which, in turn, has its inputs coupled to a data bus and the output from the data modifier 112. Register 110 is included in system 100 to accommodate operation in both the standard and the self-test mode. In standard operation, memory 102 receives data from other components on the chip (not shown). Hence, the input port 108 should receive data from the chip's data bus. In self-test mode, however, memory 102 receives data from the data modifier 112. To accommodate both operational modes, register 110 receives data from both the data bus and the data modifier 112 but sends only one of the two sets of input data to the input port 108. The select control signal 114 determines which set of input data is sent to the input port 108 of the memory 102.

The component in system 100 responsible for carrying out the magic function described above is the data modifier 112. Data modifier 112 has a data input port 114 coupled to the output 106 of the memory 102 for receiving data D[n:1] therefrom, and a data output port 116 coupled to register 110 for outputting modified data MD[n:1] thereto. Modifier 112 also has a control input port 118 for receiving a complementary control signal MCTL. The MCTL signal determines the operational mode of modifier 112. If MCTL is set to logic 0, modifier 112 operates in regular mode to generate a particular data sequence using 0x1 as the initial set of data. If MCTL is set to logic 1, modifier 112 operates in the complementary mode to generate, using .about.(0x1) as the initial set of data, a data sequence which is complementary to the data sequence generated in regular mode. These two modes ensure that each set of data generated is complemented to provoke all stuck-at faults in the memory 102.

Because data modifier 112 is responsible for carrying out the magic function, the modifying function performed by modifier 112 preferably has the properties articulated above for the magic function. While all modifying functions have the same general properties, the specific implementation of a modifying function will depend upon the dimensions of the particular memory tested. Several examples of modifying functions are provided below for specific memories.

Denoting input data to the modifier 112 as D[n:1] and modified data from the modifier 112 as MD[n:1], the modifying function for a 2.sup.10 .times.18 memory is as follows:

for all i:

MD[i]=D[i-1];

except

MD[8]=D[7] D[18] MCTL,

where denotes an exclusive OR (XOR) operation.

A possible implementation of this modifying function is shown in FIG. 6. Note that the implementation of modifier 112 includes only one XOR gate 120 and a plurality of wires. Most of the modified data bits MD[n:1] are derived directly from one of the input data bits D[n:1]. The only bit which requires a logic gate to generate is bit MD[8]. Note that gate 120 receives the MCTL signal as one of its inputs. This means that the value of bit MD[8] is a function of the complementary control signal MCTL. For the modifier 112 shown in FIG. 6, MD[8] is the only bit whose value is a function of MCTL. While the effect of MCTL on the modified data is subtle, this effect is sufficient to cause modifier 112 to generate a complementary data sequence using .about.(0x1) as the initial set of data.

As a further example, the modifying function for a 2.sup.9 .times.44 memory is as follows:

for all i:

MD[i]=D[i-1]; except

MD[28]=D[27] D[44] MCTL;

MD[27]=D[26] D[44] MCTL;

MD[2]=D[1] D[44] MCTL; and

MD[1]=D[44].

The modifying function for a 2.sup.8 .times.56 memory is:

for all i:

MD[i]=D[i-1];except

MD[23]=D[22] D[56] MCTL;

MD[22]=D[21] D[56] MCTL;

MD[2]=D[1] D[56] MCTL; and

MD[1]=D[56].

The modifying function for a 2.sup.4 .times.64 memory or a 2.sup.7 .times.64 memory is:

for all i:

MD[i]=D[i-1]; except

MD[5]=D[4] D[64] MCTL;

MD[4]=D[3] D[64] MCTL;

MD[2]=D[1] D[64] MCTL; and

MD[1]=D[64].

The modifying function for a 2.sup.6 .times.72 memory is:

for all i:

MD[i]=D[i-1];except

MD[54]=D[53] D[72] MCTL;

MD[48]=D[47] D[72] MCTL;

MD[7]=D[6] D[72] MCTL; and

MD[1]=D[72].

These modifying functions may be implemented in substantially the same manner as that shown in FIG. 6 using direct connections and XOR gates. Note that even for memories having a large number of output bits, the modifying functions are rather simple. This means that the implementations of the modifying functions are likewise simple. By keeping implementation of modifier 112 simple, costs are reduced and testing speed is increased. This is one of the major advantages of the present invention.

Referring again to FIG. 5, system 100 further comprises a comparator 160 and a reference data provider 162. Comparator 160 has a first data input port coupled to receive data from the output 106 of memory 102, and a second data input port coupled to receive reference data from data provider 162. Comparator 102 compares the two sets of input data, and if they are not equivalent, an error signal is generated at the output 164 of the comparator 160. Preferably, the output 164 of comparator 160 is error latched so that, if any discrepancy is detected between a set of reference data and a set of data from the memory 102, the output 164 remains at the error state regardless of the result of subsequent comparisons. Comparator 160 preferably further has a control port for receiving a sync control signal. The sync control sign