Flash memory continues to be scaled to smaller and smaller dimensions. Although scaling down enables placing larger amounts of memory in a same sized footprint, problems may arise when memory cells are scaled down. For example, at a sufficiently small scale, memory cells exhibit non-uniform behavior.
Non-uniform behavior is especially problematic when a flash memory device performs a block erase. In a block erase, a large number of cells are exposed to an electrical charge in order to erase a “block” of memory by attempting to place the cells within a threshold voltage distribution (i.e., the erase distribution). Typically, the threshold voltage of a cell is altered, thereby erasing the cell, by changing the magnitude of the floating gate charge within the cell. Some cells within a block are slower to erase than others partly due to different floating gate charges on the cells before the block erase as well as intrinsic qualities of flash memory cells. When a block erase occurs, then, a distribution curve of threshold voltages will result, with some of the fastest erasing cells lying outside the intended erase distribution. Because the threshold voltage of the fast-erasing cells are below the lower limit of the erase distribution, these cells are in an over-erased state.
Over-erased cells are undesirable because they cause false data reads for electrically-coupled cells. For example, cells that share a bitline with an over-erased cell and are programmed to a logical 1, may now be read as a logical 0. This is because over-erased cells constantly draw current even while not being selected themselves and thus virtually lower the threshold voltage of the other cells. In severe cases, a single over-erased cell may disable an entire bitline. In another case, many cells may be slightly over-erased, resulting in a cumulative bitline leakage current.
Embodiments of the invention provide methods and flash memory devices that correct over-erased memory cells. The flash memory devices include flash memory cells, erase circuitry, measuring circuitry, and a pulse generator. The methods include performing an erase operation on a first plurality of memory cells, measuring at least one memory cell of a second plurality of memory cells, and if one or more over-erased cells are detected in measuring the second plurality of cells, applying one or more programming pulses to the one or more over-erased cells, the one or more programming pulses cumulatively sufficient to correct a cell in a maximum over-erased state.
Embodiments further provide a method that corrects a series of errors in a flash memory. The method includes detecting an over-erased cell, wherein the over-erased cell prevents at least one other cell from being properly read, and applying one or more programming pulses to the over-erased cell, the one or more programming pulses cumulatively sufficient to correct a cell in a maximum over-erased state.
Embodiments further provide a method correcting over-erased memory cells. The method includes performing an erase operation on a first plurality of cells, measuring at least one cell of a second plurality of cells, if one or more over-erased cells are detected in measuring the second plurality of cells, registering the one or more over-erased cells for programming, and applying one or more programming pulses to the registered over-erased cells, the one or more programming pulses cumulatively sufficient to correct a cell in a maximum over-erased state.
These and other features of the invention will be better understood when taken in view of the following drawings and a detailed description.
In the drawings, like reference characters generally refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the following description, various embodiments of the invention are described with reference to the following drawings, in which:
As described above, flash memory cells (also referred to as “memory cells” or “cells”) behave in a non-uniform manner during a block erase. This is shown by the graph of
One conventional technique to decrease the amount of over-erased cells from a block erase is to pre-program cells prior to an erase operation so that all of the cells that are to be erased have the same threshold voltage. This technique, however, limits but does not prevent over-erased cells. Soft programming is another conventional technique which re-shapes over-erased distribution 106 by sending programming pulses to an over-erased cell until a measured threshold voltage of the cell is within erase distribution 102. This technique greatly increases block erase time of a flash memory device because cells are corrected and checked in a step-wise manner. Another conventional technique applies a negative voltage to cells not being read to prevent currents from over-erased cells affecting cells that are being read. This technique requires additional power and circuitry. Another conventional technique organizes cells into sector selects, with each sector being electronically isolated from another. This technique requires additional area to implement and isolates rather than corrects over-erased cells.
Error correction codes are another conventional technique which may be used in tandem with the above described techniques. Error correction codes (also referred to as “ECC”) are limited in the number of errant bits they can correct. If an over-erased cell is causing false reads for electrically-coupled cells, the error rate will go up significantly and perhaps past the capability of an ECC due to a single erroneous over-erased bit.
According to various embodiments of the invention, it is possible to avoid size penalties but have a short erase time and low-power consumption when correcting over-erased cells. It is also possible to avoid an increase error rate due to an over-erased cell, where, in some embodiments, an ECC may correct for fewer errant bits. As detailed below, embodiments of the invention provide a method of erasing flash memory that applies one or more programming pulses, the one or more programming pulses cumulatively sufficient to correct a cell in a maximum over-erased state.
An example of a maximum over-erased state is shown in
An over-erased cell may have a voltage threshold anywhere within over-erased distribution 106. By applying a programming pulse sufficient to correct a cell in a maximum over-erased state, a cell will be programmed out of the over-erased state no matter where within over-erased distribution 106 a threshold voltage of a cell presides. Because only a single pulse capable of correcting even the most over-erased bit is applied, a fast and power-efficient process is achieved.
When the programming pulse is applied, a threshold voltage of a cell may result in one of three states. First, a threshold voltage may fall within erase distribution 102 as seen for cell 108. Second, a threshold voltage may fall in-between erase distribution 102 and program distribution 104 as seen for cell 110. Third, it may fall within program distribution 104 as seen for cell 112. Although applying such a programming pulse may cause a single error by over-programming a once over-erased cell to a cell with a threshold voltage above an erase distribution, the overall error rate significantly drops. The “corrected” over-programmed cell is no longer lowering threshold voltages of electrically-coupled cells, which causes errors when those cells are read.
At 208 a check is made to determine whether step 206 detected an over-erased cell or cells. If at least one over-erased cell is detected, then at 209 process 200 applies a programming pulse to the detected over-erased cell or cells sufficient to correct a cell in a maximum over-erased state as discussed above with reference to
In some embodiments, the programming pulse may be a single programming pulse with electrical energy sufficient to correct a cell in a maximum over-erased state. It is within the scope of the present invention, however, to apply one or more programming pulses to an over-erased cell. In such embodiments, the one or more programming pulses may total a cumulative electrical energy sufficient to correct a cell in a maximum over-erased state. In some embodiments, the number of the one or more programming pulse is predetermined.
At 214, the signal is processed through an error correction code. Embodiments of the present invention include both convolutional and block codes. Although process 200 may over-correct an over-erased cell so that it reads as a logical 1 instead of a 0 at 209, process 200 allows for a simple error correction code at 214 because the code only has to fix, in some cases, one bit. Some over-erased cells can cause erroneous readings of a whole column (or bitline) of a memory array, causing the number of errors to go beyond the capabilities of an error correction code. By applying a single programming pulse to over-erased cells at 209, an entire bitline of errors may be reduced to one or zero. After error correction at 214, process 220 ends at 216.
Flash memory array 300 is used for illustrative purposes only. The present invention is not limited to NOR or NOR-type flash memory. Alternative embodiments include other types of flash memory.
At 406, the cells on WL(n) are erased. At 408, a voltage of, for example, 1.8 volts is applied to the erased wordline to measure the current of an erased cell. If a cell is over-erased, it will conduct more current than a cell with a threshold voltage within an erase distribution. At 410 the cell located at WL(n), BL(m) is measured. At 412, a check is made to determine if the measured cell is over-erased. In one embodiment, the current conducted by the cell is compared to a reference value. If the current is beyond a certain threshold of the reference value, the cell is over-erased. In an alternative embodiment, explained in more detail below, cells on surrounding wordlines may be measured, wherein the measurement of the cell current post-erase is compared to the cell current pre-erase. If a difference arises, then an over-erased cell exists on the same bit line.
If a cell is over-erased, then at 414 a programming pulse sufficient to correct a cell in a maximum over-erased state is applied to the cell. Either after the programming pulse is applied at 414 if the cell is over-erased or after the check at 412 if the cell is not over-erased, m is increased by one at 416 to check the next cell on the wordline. At 418, a check is made to determine if m is less than or equal to X. X is the number of cells on a wordline. If m is less than or equal to X then method 400 returns to 410 to measure the next cell on the wordline. If m is not less than or equal to X, then n is increased by one. A check is made at 422 to determine if n is less than or equal to Y. Y is the number of wordlines that are to be erased during an erase operation. This number may range from 1 to the total number of wordlines a memory array may contain. If n is less than or equal to Y, then method 400 returns to 406 to erase another wordline. If n is not less than or equal to Y, then the method ends at 424.
At 506, the cells on WL(n) are erased. At 508, voltage of, for example, 1.8 volts is applied to a wordline either above or below the now erased wordline. Since method 500 is checking for over-erased cells after each wordline erasure, if a cell above or below the erased wordline deviates from a previously known value, then a cell on the corresponding bitline of the erased wordline is over-erased. At 510, the cell located at WL(n±x), BL(m) is measured, with x being greater or equal to 1. At 512, a check is made to determine if the threshold voltage, state (erased or programmed), or some other value of the measured cell matches its previous know value before the wordline was erased. If a difference arises, then an over-erased cell exists on the same bit line of the erased wordline.
If a cell is over-erased, at 514 a programming pulse sufficient to correct a cell in a maximum over-erased state is applied to the cell. In this embodiment, such a pulse may be, for example, 12 volts for a duration of 150 μs. Either after the programming pulse is applied at 514 if the cell is over-erased or after the check at 512 if the cell is not over-erased, m is increased by one at 516 in order to check the next cell on the wordline. At 518, a check is made to determine if m is less than or equal to X. X is the number of cells on a wordline. If m is less than or equal to X then method 500 returns to 510 to measure the next cell on the wordline. If m is not less than or equal to X, then n is increased by one. A check is made at 522 to determine if n is less than or equal to Y. Y is the number of wordlines that are to be erased during an erase operation. This number may range from 1 to the total number of wordlines a memory array may contain. If n is less than or equal to Y, then method 500 returns to 506 to erase another wordline. If n is not less than or equal to Y, then the method ends at 524.
At 618, a check is made to determine if m is less than or equal to X. X is the number of cells on a wordline. If m is less than or equal to X then method 600 returns to 610 to measure the next cell on the wordline. If m is not less than or equal to X, then all of the cells on WL(n) have been measured. At 619, a programming pulse sufficient to correct a cell in a maximum over-erased state is applied to all the registered over-erased cells of the current wordline WL(n). Thus, the over-erased cells are programmed in parallel.
If a difference is detected, then an over-erased cell exists on the same bit line of the erased wordline and method 640 applies to the over-erased cell a programming pulse sufficient to correct a cell in a maximum over-erased state at 628. If a difference is not detected, it is still possible that an over-erased cell resides on the current bitline because the over-erased cell may be only slightly over-erased and not affect the value of the measured cell. Since it is possible that an over-erased cell is affecting a pre-erasure value of another cell on the current bitline, at 624 a check is made to decide whether to measure another cell on the bitline or to move on to another bitline. At 626, x is increased by one and method 640 returns to 620 to measure another cell on BL(m). At 629, m is increased by one, wherein method 640 may measure another bitline.
The values given in
Memory device 704 includes memory array 720. In one embodiment, memory cells (not shown) of memory array 720 are non-volatile floating-gate memory cells and arranged in arrays of columns and rows. Address circuitry 716 accepts address signals provided on address input connections 708. Address signals are received and decoded by row decoder 718 and column decoder 722 to access memory array 720.
Read circuitry 726 reads data stored in memory array 720. A data signal output from read circuitry 726 is accepted by error correction circuitry 728, which detects and corrects errors in the data signal. Embodiments include error correction circuitry which may be adapted to implement any number of error detection and correction schemes, including, but not limited to, checksums, cyclic redundancy check, Hamming code, Reed-Solomon code, BCH code, as well as other convolutional and block codes. Codes may be used individually or in tandem. In some embodiments, error correction circuitry 728 may be embedded in read circuitry 726. In some embodiments error detection and correction may be performed by CPU 702.
Data input and output circuitry 730 is included for bi-directional data communication over a plurality of data connections 710 with processor 702. Write circuitry 724 is provided to write data to memory array 720. In one embodiment, pulse generator circuitry 725 is located within write circuitry 724. Pulse generator circuitry 725 is adapted to provide a programming pulse sufficient to correct a cell in a maximum over-erased state.
In some embodiments, control circuitry 712 determines the maximum over-erased state of the memory device 704. In some embodiments the control circuitry 712 may update its definition of the maximum over-erased state to accommodate, for example, changing memory cell characteristics or erase operations.
In another embodiment, control circuitry 712 executes the erase methods of the present invention. For example, in some embodiments, control circuitry 712 registers one or more over-erased cells for programming and instructs pulse generator circuitry 725 to apply one or more programming pulses to the registered over-erased cells. Control circuitry 712 may be a state machine, a sequencer, or some other type of controller.
While the invention has been particularly shown and described with reference to specific embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. The scope of the invention is thus indicated by the appended claims and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced.