# Patent

## Title
Memory repair systems and methods for a memory having redundant memory

## Abstract

Memories, memory repair logic, and methods for repairing a memory having redundant memory are disclosed. One such memory includes programmable elements associated with respective redundant memory configured to have memory addresses mapped thereto, the programmable elements configured to be programmed with at least portions of the memory addresses. Such a memory further includes repair logic coupled to the programmable elements and configured to identify programmable elements available for programming to map memory addresses to respective redundant memory. One method for remapping a memory address of a memory to redundant memory includes receiving at least a portion of a memory address to be remapped to redundant memory, determining whether a programmable element associated with the redundant memory is available for programming, and when a programmable element is available, programming the programmable element such that the memory address will be mapped to the associated redundant memory.

## Background
TECHNICAL FIELD
Embodiments of the present invention relate generally to memory having redundant memory, and more specifically, in one or more of the illustrated embodiments, to mapping a memory address provided to memory for repair to redundant memory.
BACKGROUND OF THE INVENTION
Memory include redundant memory in order to “repair” memory locations deemed to be defective (e.g., failing). As used herein, the phrase “defective memory location” is used to refer to a memory location deemed to be defective, regardless of whether it actually is defective. Typically, memory addresses corresponding to defective memory locations are mapped to redundant memory so that when the defective memory locations are to be accessed (e.g., read or write data), the redundant memory to which the memory addresses are mapped are actually accessed instead. Programmable elements, such as fuse banks comprised of individual programmable elements (e.g., fuses, antifuses, flash cells, phase change cells, and the like) and associated redundant memory are used to program the memory addresses so that when access to a programmed memory address is requested, access is made to the associated (e.g., corresponding) redundant memory instead of the defective memory locations.
One example of repairing defective memory locations is through the use of a memory tester. The memory tester tests a memory under test to determine if there are any defective memory locations by writing data to the memory, and reading back the data from the memory. The data read is compared to the data that was written to determine if the memory accurately stored the written data. Memory locations that return read data different than the write data are deemed defective and the corresponding memory addresses are stored. After identifying the defective memory locations of the memory, the memory tester analyzes the memory addresses for the defective memory locations and resolves a redundancy solution to map the memory addresses of the defective memory locations to redundant memory. If there is insufficient redundant memory to repair all of the defective memory locations, the memory cannot be repaired.
Another example of repairing defective memory locations is through the use of self-testing and repair. Circuitry is included in the memory device to perform memory testing to determine defective memory locations and effect repair by remapping the memory addresses of the defective memory locations to redundant memory. The process of memory testing and repair is performed internally by the memory.
Memory testing and repair is typically performed by the manufacturer before the memory is provided to customers. In some cases, however, a customer may subject the memory to further assembly that may affect performance of the memory, including basic memory functionality. As a result, the memory is tested again after the customer's assembly process is completed by using a memory tester. The memory tester, however, typically does not include an analysis engine for resolving a redundancy solution to repair any defective memory locations identified by the memory testing. Moreover, calculating a solution often requires proprietary information that is available only to the manufacturer. Without the ability to repair defective memory locations of a memory already assembled by the customer, the memory must be disassembled and replaced, or the entire assembly discarded. Both solutions, however, are very undesirable because of the likelihood of damaging the assembly during the memory removal and replacement process as well as wastage of parts if the entire assembly is discarded.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a portion of a memory according to an embodiment of the invention.
FIG. 2 is a block diagram of a tester and memory under test according to an embodiment of the invention.
FIG. 3 is a flow diagram for memory repair according to an embodiment of the invention.
FIG. 4 is a block diagram of memory repair logic and fuse banks according to an embodiment of the invention.
FIG. 5 is a block diagram of a memory having memory repair logic and fuse banks according to an embodiment of the invention.



DETAILED DESCRIPTION
Certain details are set forth below to provide a sufficient understanding of embodiments of the invention. However, it will be clear to one skilled in the art that embodiments of the invention may be practiced without these particular details. Moreover, the particular embodiments of the present invention described herein are provided by way of example and should not be used to limit the scope of the invention to these particular embodiments. In other instances, well-known circuits, control signals, timing protocols, and software operations have not been shown in detail in order to avoid unnecessarily obscuring the invention.
FIG. 1 illustrates a portion of a memory 100 according to an embodiment of the invention. An address latch 110 receives a memory address and stores (e.g., latches) the address. The latched address is provided to an address decoder 120 which decodes the latched address and provides internal address signals to access the memory locations in the memory array 140 corresponding to the latched address. Read/write circuitry 160 is coupled to the memory of the memory array 140 to provide read data from the memory array 140 or to provide write data to the memory array 140 for storage.
The memory array 140 includes redundant memory 150 that may be used to repair defective memory locations in the memory array by mapping the memory address of the defective memory locations to redundant memory. In some embodiments, the redundant memory 150 includes redundant rows of memory to which rows of memory of the memory array may be mapped and further includes redundant columns of memory to which columns of memory of the memory array may be mapped. In some embodiments, the memory array 140 is divided into sub-arrays (e.g., banks or planes) and the redundant memory 150 is divided into portions that are limited to repair memory in a respective sub-array. As will be explained in more detail below, a unit of redundant memory typically has an associated programmable element(s) (e.g., a fuse bank) that may be programmed to map a memory address to the associated redundant memory.
At least a portion of the memory address latched by the address latch is also provided to memory repair logic and fuse banks 130. For example, a memory address may include row, column, and bank addresses. The row, column, bank address, or some combination of the addresses, may be provided to the memory repair logic and fuse banks 130. The term “memory address” is intended to be broadly interpreted and may refer to, for example, a memory address provided to the memory, portions of a memory address provided to the memory, internal address signals generated based at least in part from a memory address or a portion of a memory address, or other indicators identifying memory locations and/or portions of memory in the memory array. The memory addresses of defective memory locations are programmed in the fuse banks so that when the memory array 140 is accessed, the latched memory address is compared to the programmed memory addresses in the fuse banks to determine if the latched memory address corresponds to a memory location mapped to redundant memory 150 (i.e., repaired by redundant memory). In the event the latched memory address matches one of the programmed memory addresses, the redundant memory corresponding to the fuse bank having the programmed memory address is accessed instead of the defective memory location. The memory repair logic and fuse banks 130, which will be explained in greater detail below, also enables the memory 100 to repair defective memory locations identified by a memory address provided to the memory repair logic and fuse banks 130 by an external memory tester. In this manner, memory locations may be repaired using remaining redundant memory after the memory has been manufactured, for example, by a purchaser of the memory that has identified memory addresses of defective memory locations.
FIG. 2 illustrates a memory tester 200 coupled to a memory 220 according to an embodiment of the invention. The memory 220 may include the portions of memory 100 illustrated in and described with reference to FIG. 1, for example, memory repair logic and fuse banks 130, shown in FIG. 2 as memory repair logic and fuse banks 230. The memory tester 200 includes a defective memory address storage 210 for storing the memory addresses of memory locations that are determined to be defective during testing of the memory 220. That is, the memory tester 200 writes test data to memory locations of the memory 220 and determines if any of the memory locations are defective by reading back the test data from the memory 220 and comparing the read data from a memory location with the write data written to that memory location.
FIG. 3 illustrates a memory test and repair procedure according to an embodiment of the invention. The memory test and repair procedure illustrated in FIG. 4 may be used with the memory tester 200 and memory 220 illustrated in and described with reference to FIG. 2. A memory under test is tested at step 310 by writing functional test patterns of data to memory locations in the memory under test and reading the data from the memory under test. The read data is compared with the respective write data for the memory locations to determine if any of the memory locations are defective. For example, if the read data from a memory location is not the same as the data originally written to that memory location, the memory location may be determined “defective”. At step 315, if none of the memory locations of the memory under test are defective (i.e., pass) then the memory under test is deemed a good part at step 320. However, if defective memory locations are identified, the memory addresses for the defective memory locations are stored at step 325.
At step 330 a memory repair mode for the memory under test is entered so that defective memory may be repaired using available redundant memory. At step 335 availability of fuse banks for programming to repair defective memory locations corresponding to a stored memory address is determined (e.g., validated). If during step 335 it is determined that there are no fuse banks available for programming (i.e., there is no redundant memory available to repair the defective memory location corresponding to the stored memory address), the memory under test is deemed to be a defective part at step 340. If however, fuse banks available for programming are identified, programmable elements of the fuse bank, for example, antifuses, are programmed at step 345 so that when access to the defective memory location is requested, the corresponding memory address is mapped to the redundant memory associated with the programmed fuse bank instead of to the defective memory location.
Additional memory addresses may be programmed where additional fuse banks are available. Determining the availability of fuse banks for programming may be performed in various manners without departing from the scope of the present invention. For example, in the embodiment illustrated in FIG. 3, at step 350 if there are more defective memory to repair (i.e., more stored memory addresses), the step at 335 is performed again to determine if there are more fuse banks available for programming, and if so, the fuse bank is programmed to map the stored memory address to the redundant memory associated with the fuse bank. If, however, all defective memory locations are repaired, the memory repair mode is exited at step 355. The memory under test may be tested again at step 360, for example, to test that the programming of any fuse banks at step 345 correctly maps memory addresses of defective memory to redundant memory, to determine if there any other defective memory locations. If it is determined there are no other defective memory locations, the memory under test is deemed to be a good part at step 370. If additional memory locations are found to be defective, however, the memory repair mode can be re-entered at step 330 to repeat the validation and repair process, and the retest of the memory under test of steps 335-375.
FIG. 4 illustrates memory repair logic and fuse banks 400 according to an embodiment of the invention. The memory repair logic and fuse banks 400 may be used for the memory repair logic and fuse banks 130 and 230 of FIGS. 1 and 2. Fuse bank address logic 410 receives a validate signal that is active when a repair mode is entered to enable a memory to repair defective memory locations. The fuse bank address logic 410 further receives an address value related at least in part on the address or a portion of the address corresponding to a defective memory location to be repaired and an availability signal indicative of whether a fuse bank is available for programming (i.e., redundant memory is available for repair). For example, the address may be a repair plane address (e.g., RPA<0:1>, as shown for the embodiment of FIG. 4) that is based at least in part on the address or a portion of the address for the memory location which identifies a repair plane in which the address for the memory location is located. A clock signal is provided to a fuse bank counter circuit 420 that is enabled through enable logic 415 in response to the validate, address, and availability signals previously discussed. The clock signal clocks the fuse bank counter circuit 420 which provides a sequence of fuse bank addresses that are used to sequence through fuse banks 430. In the embodiment illustrated in FIG. 3, four fuse banks 430(0)-430(3) are shown, and a 2-bit counter circuit 420 is used in the fuse bank address logic 410. In other embodiments, fewer or greater fuse banks 430 are included, and the fuse bank counter circuit 420 provides an appropriate number of fuse bank addresses to sequence through the fuse banks 430.
Fuse bank 430(0) is shown in detail. The fuse banks 430(1)-430(3) may have the same arrangement as fuse bank 430(0) as described below. Fuse bank 430(0) includes fuse bank address decode logic 435 coupled to receive the fuse bank address provided by the fuse bank counter circuit 420. The bank address decode logic 435 generates a high logic signal in response to the fuse bank address corresponding to the respective fuse bank. The fuse bank 430(0) further includes at least one programmable element 437, for example, an antifuse, that may be used to indicate whether the fuse bank 430(0) is available for programming. For example, programmable element 437(1) indicates that the fuse bank 430(0) has already been programmed to repair another defective memory location, that is, a memory address for a defective memory location is already mapped to the redundant memory associated with the fuse bank. Another example is programmable element 437(2) which can be used to indicate that the redundant memory associated with the fuse bank 430(0) is unavailable because it has been deemed defective and cannot be used to repair a defective memory location. The fuse bank 430(0) further includes programmable elements 438 which may be programmed with an address to be mapped to the redundant memory associated with the fuse bank 430(0). In some embodiments, at least a portion of the address to be mapped is programmed in the fuse bank 430(0), such as, a row address, column address, bank address, other addresses related at least in part on the address to be mapped, or combinations of the addresses.
Fuse bank status logic 433 provides an output signal for the fuse bank 430(0) based on the state of the programmable elements 437 and if a current fuse bank address generated by the fuse bank counter circuit 420 matches (as determined by bank address decode logic 435) the respective fuse bank. For example, if either or both programmable elements 437(1) and 437(2) are programmed, the fuse bank 430(0) will output a low logic signal indicating that the redundant memory associated with fuse bank 430(0) is unavailable for use to repair a defective memory location. If the programmable elements 437(1) and 437(2) are not programmed, the fuse bank 430(0) will output a high logic signal when the fuse bank address provided by the fuse bank counter circuit 420 generates the fuse bank address for fuse bank 430(0), indicating that the fuse bank 430(0) is available for programming.
The output signals from the fuse banks 430 are provided to fuse bank program logic 440. The fuse bank program logic 440 includes fuse bank address latches and enable logic 448. The fuse bank address latches and enable logic 448 enable the fuse bank address latches in the event the fuse bank corresponding to the fuse bank address provided by the fuse bank address logic 410 is available for programming (i.e., to map the memory address for a defective memory location to the redundant memory associated with the fuse bank). However, when the fuse bank address provided by the fuse bank address logic 410 corresponds to a fuse bank that is unavailable for programming (e.g., the fuse bank has already been programmed or the redundant memory associated with the fuse bank is deemed defective), the fuse bank address latches are not enabled, and consequently, that fuse bank address is not latched. When enabled, however, the fuse bank address latches latch the fuse bank address of the available fuse bank and provides the latched fuse bank address to identify which fuse bank can be programmed so that the memory address (e.g., which corresponds to a defective memory location to be repaired) can be mapped to the redundant memory associated with the fuse bank.
The fuse bank program logic 440 further includes fuse bank availability logic 444 coupled to the enable logic 448 to provide a signal that is used to enable the fuse bank address latches, as previously described. The fuse bank availability logic 444 also provides an availability signal to the fuse bank address logic 410, for example, through an inverter 446. The availability signal can be used to prevent the fuse bank counter circuit 420 from continuing to count (i.e., generate a new fuse bank address) when a fuse bank 430 is identified as being available for programming. The availability signal can be further used to provide a signal (e.g., flag) indicative of whether a fuse bank can be programmed to map the memory address corresponding to a defective memory location to the associated redundant memory, that is, whether there is redundant memory available to repair a defective memory location. For example, with reference to the embodiment illustrated by and described with reference to FIG. 4, a flag having a high logic level can be provided when one of the fuse banks 430 can be programmed to repair a defective memory location and a flag having a low logic level can be provided when none of the fuse banks 430 are available for programming. The flag may be provided to a memory tester, where it can be used to cease the repair operation for the memory if no banks are available after all of the respective fuse bank addresses have been sequenced through.
In operation, when a repair mode is entered for a memory including memory repair logic and fuse banks 400, an address value related at least in part on the address or a portion of the address corresponding to a defective memory location to be repaired is provided to the fuse bank address logic 410, and availability of a fuse bank for programming is validated by sequencing through fuse bank addresses and identifying the fuse bank address of a fuse bank available for programming. When such a fuse bank 430 is identified, the programmable elements 438 for that fuse bank can be programmed to map the memory address of the defective memory location to the redundant memory associated with the fuse bank. The validation and programming continue until all of the portions of memory addresses received by the fuse bank address logic 410 are mapped to redundant memory or until no more fuse banks 430 are available for programming. In the latter case, the fuse bank program logic 440 provides a flag indicating that no fuse banks are available (i.e., no more redundant memory are available to repair defective memory locations).
FIG. 5 illustrates a portion of a memory 500 according to an embodiment of the present invention. The memory 500 includes an array 502 of memory cells, which may be, for example, DRAM memory cells, SRAM memory cells, flash memory cells, or some other types of memory cells. The array 502 includes redundant memory 504 to which memory addresses corresponding to memory locations in array 502 may be mapped. The memory 500 includes a command decoder 506 that receives memory commands through a command bus 508 and generates corresponding control signals within the memory 500 to carry out various memory operations. Row and column address signals are applied to the memory 500 through an address bus 520 and provided to an address latch 510. In some embodiments the address signals may be provided to the address latch 510 in parallel. In other embodiments, the address signals are provided in a multiplexed manner, sequentially, or other manner. The address latch then outputs a separate column address and a separate row address. The address latch 510 further provides the memory address to memory repair logic and fuse banks 512. Memory repair logic and fuse banks according to an embodiment of the present invention may be used for the memory repair logic and fuse banks 512. The memory repair logic and fuse banks 512 may be used to determine the availability of a fuse bank to be programmed in order to map a memory address to an associated redundant memory.
The row and column addresses are further provided by the address latch 510 to a row address decoder 522 and a column address decoder 528, respectively. The column address decoder 528 selects bit lines extending through the array 502 corresponding to respective column addresses. The row address decoder 522 is connected to word line driver 524 that activates respective rows of memory cells in the array 502 corresponding to received row addresses. The selected data line (e.g., a bit line or bit lines) corresponding to a received column address are coupled to a read/write circuitry 530 to provide read data to a data output buffer 534 via an input-output data bus 540. Write data are applied to the memory array 502 through a data input buffer 544 and the memory array read/write circuitry 530. The command decoder 506 responds to memory commands applied to the command bus 508 to perform various operations on the memory array 502. In particular, the command decoder 506 is used to generate internal control signals to read data from and write data to the memory array 502.
From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims.

## Claims

1. A method for remapping a memory address of a memory to redundant memory, comprising:
receiving the memory address to be remapped to redundant memory;
determining whether a programmable element associated with the redundant memory is available for programming by sequencing through a plurality of fuse banks associated with respective redundant memory, and for each fuse bank determining whether the associated redundant memory is available to have the memory address mapped thereto; and
when a programmable element associated with the redundant memory is available, programming the programmable element such that the memory address will be mapped to the redundant memory.

2. The method of claim 1 wherein programming the programmable element comprises:
programming antifuses of a fuse bank associated with the redundant memory to which the memory address is mapped.

3. The method of claim 1 wherein determining whether the associated redundant memory is available comprises:
for a particular one of the plurality of fuse banks, determining whether a programmable element of the fuse bank indicates that the fuse bank is available.

4. The method of claim 1 wherein sequencing through a plurality of fuse banks comprises:
enabling a counter circuit and clocking the counter circuit to count.

5. The method of claim 1 further comprising:
testing the memory to identify a defective memory location of the memory;
storing at least a portion of the memory address corresponding to the defective memory location; and
providing the portion of the stored memory address to the memory, wherein receiving the memory address comprises receiving the portion of the stored address.

6. The method of claim 5, further comprising:
retesting the memory using a tester to identify defective memory locations; and
storing at least respective portions of any memory addresses corresponding to defective memory locations identified during retesting.

7. The method of claim 1 wherein receiving at least a portion of the memory address to be remapped to redundant memory comprises:
receiving the memory address from a memory tester.

8. The method of claim 1, further comprising
setting a flag indicative of the memory not having any fuse banks available for programming to remap the memory address to redundant memory.

9. A memory having at least one memory array, the memory comprising:
a plurality of redundant memory;
a plurality of programmable elements, each programmable element configured to be programmed to map a memory address to an associated respective one of the plurality of redundant memory;
programmable elements address logic configured to provide programmable element addresses, each programmable element address identifying a respective programmable element of the plurality of programmable elements; and
program logic coupled to the plurality of programmable elements and the programmable elements address logic, the program logic configured to store an address of a programmable element available for programming in response to at least one of the plurality of programmable elements being available for programming, the program logic further configured to provide a signal indicative of whether any programmable element of the plurality of programmable elements is available for programming.

10. The memory of claim 9 wherein at least one of the plurality of programmable elements comprises a fuse bank comprising a plurality of individual programmable elements configured to be programmed to map the memory address to the associated redundant memory.

11. The memory of claim 9 wherein the plurality of programmable elements comprise a plurality of fuse banks, and wherein at least one of the plurality of programmable elements includes an individual programmable element configured to be programmed when the fuse bank is not available for programming.

12. The memory of claim 11 wherein the individual programmable element configured to be programmed when the fuse bank is not available for programming comprises a programmable element configured to be programmed when the fuse bank is already programmed.

13. The memory of claim 11 wherein the individual programmable element configured to be programmed when the fuse bank is not available for programming comprises an individual programmable element configured to be programmed when the associated respective redundant memory is defective.

14. The memory of claim 9 wherein each of the programmable elements of the plurality of programmable elements is configured to generate a signal indicative of whether the respective programmable element is available for programming.

15. The memory of claim 14 wherein the program logic is configured to provide a signal indicative of none of the plurality of programmable elements being available for programming in response to receiving a respective signal from each of the plurality of programmable elements indicative of the respective programmable element not being available for programming.

16. The memory of claim 9 wherein the programmable elements address logic comprises a counter enabled to generate a sequence of programmable element addresses in response to receiving at least a portion of a memory address to be mapped and a validation signal.

17. The memory of claim 9 wherein the programmable elements address logic is disabled in response to the program logic providing a flag indicative of none of the plurality of programmable elements being available for programming.

18. The memory of claim 9 wherein the program logic comprises program logic configured to latch an address of a programmable element available for programming.

19. A memory, comprising:
programmable elements associated with respective redundant memory configured to have memory addresses mapped thereto, each of the programmable elements being configured to be programmed with at least a portion of the respective one of the memory addresses; and
repair logic coupled to the programmable elements and configured to identify programmable elements available to be programmed for the memory addresses to be mapped to redundant memory, the repair logic including address logic configured to generate a sequence of programmable element addresses in response at least in part to the memory being in a repair mode, and to provide the sequence of fuse bank addresses to the programmable elements, and the repair logic further including program logic coupled to the address logic and the programmable elements, the program logic configured to store an address of a programmable element available for programming and further configured to provide a signal indicative of whether a programmable element is available for programming.

20. The memory of claim 19 wherein each of the programmable elements comprises a fuse bank, and each fuse bank comprises:
individual programmable elements configured to be collectively programmed with at least a portion of a memory address to be mapped;
at least one programmable element configured to be programmed to indicate the availability of the fuse bank for programming;
address decode logic configured to receive a fuse bank address and identify when the fuse bank address corresponds to the respective fuse bank; and
status logic coupled to the address decode logic and the at least one programmable element, the status logic configured to provide an output signal based at least in part on the state of the at least one programmable element and having a logic level indicative of the availability of the fuse bank for programming.

21. The memory of claim 20 wherein the individual programmable elements are configured to be collectively programmed with at least a portion of a memory address of a defective location in memory.

22. The memory of claim 20 wherein the at least one programmable element is configured to be programmed to indicate that the fuse bank has already been programmed with a memory address.

23. The memory of claim 19 wherein the address logic comprises a counter configured to count through a sequence when enabled.

24. The memory of claim 19 wherein the memory is configured to receive the portions of the memory addresses from a memory tester to the memory.

25. A method for remapping a memory address of a memory to redundant memory, comprising:
testing the memory to identify a defective memory location of the memory;
storing at least a portion of the memory address corresponding to the defective memory location;
providing the portion of the stored memory address to the memory;
receiving the portion of the stored memory address to be remapped to redundant memory;
determining whether a programmable element associated with the redundant memory is available for programming;
when a programmable element associated with the redundant memory is available, programming the programmable element such that the memory address will be mapped to the redundant memory;
retesting the memory using a tester to identify defective memory locations; and
storing at least respective portions of any memory addresses corresponding to defective memory locations identified during retesting.

26. A method for remapping a memory address of a memory to redundant memory, comprising:
receiving the memory address to be remapped to redundant memory;
determining whether a programmable element associated with the redundant memory is available for programming; and
when a programmable element associated with the redundant memory is available, programming the programmable element such that the memory address will be mapped to the redundant memory and setting a flag indicative of the memory not having any programmable elements available for programming to remap the memory address to redundant memory.

27. A memory, comprising:
programmable elements associated with respective redundant memory configured to have memory addresses mapped thereto, each of the programmable elements being configured to be programmed with at least a portion of the respective one of the memory addresses, wherein each of the programmable elements comprises a fuse bank, and each fuse bank comprises:
individual programmable elements configured to be collectively programmed with at least a portion of a memory address to be mapped;
at least one programmable element configured to be programmed to indicate the availability of the fuse bank for programming;
address decode logic configured to receive a fuse bank address and identify when the fuse bank address corresponds to the respective fuse bank;
status logic coupled to the address decode logic and the at least one programmable element, the status logic configured to provide an output signal based at least in part on the state of the at least one programmable element and having a logic level indicative of the availability of the fuse bank for programming; and
repair logic coupled to the programmable elements and configured to identify programmable elements available to be programmed for the memory addresses to be mapped to redundant memory.