1. Field
The present invention relates to technology for non-volatile storage.
2. Description of the Related Art
Semiconductor memory has become more popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
Both EEPROM and flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate. The floating gate is positioned between the source and drain regions. A control gate is provided over and insulated from the floating gate. The threshold voltage of the transistor is controlled by the amount of charge that is retained on the floating gate (or other charge storage region). That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate (or other charge storage region).
When programming an EEPROM or flash memory device, such as a NAND flash memory device, typically a program voltage is applied to the control gate and the bit line is grounded. Electrons from the channel are injected into the floating gate. When electrons accumulate in the floating gate, the floating gate becomes negatively charged and the threshold voltage of the memory cell is raised so that the memory cell is in a programmed state. A typical programming process will apply the program voltage to the control gate as a series of pulses that increase in magnitude over time. Between these programming pulses are verify operations which determined whether the memory cell has reached its target threshold voltage. More information about programming can be found in U.S. Pat. No. 6,859,397, titled “Source Side Self-Boosting Technique For Non-Volatile Memory,” and U.S. Pat. No. 6,917,545, titled “Detecting Over Programmed Memory,” both of which are incorporated herein by reference in their entirety.
Some EEPROM and flash memory devices have a floating gate (or other charge storage region) that is used to store two ranges of charges and, therefore, the memory cell can be programmed/erased between two states (an erased state and a programmed state). Such a flash memory device is sometimes referred to as a binary memory device.
A multi-state memory device is implemented by identifying multiple distinct allowed/valid programmed threshold voltage ranges separated by forbidden ranges. Each distinct threshold voltage range corresponds to a data state associated with a predetermined value for the set of data bits encoded in the memory device.
In many cases it is necessary to program multiple memory cells in parallel, for example, in order to produce a commercially desirable memory system which can be programmed within a reasonable amount of time. However, a problem may arise when a large number of the memory cells are to be programmed at the same time. This is because the characteristics of each memory cell is different due to minor variations in the structure and operation of the semi-conductor devices which comprise the memory cells; therefore, variations in the programming speed of different memory cells will typically occur. This results in memory cells that become programmed faster than others and the possibility that some memory cells will be programmed to a different state than intended. Faster programming of multiple memory cells can result in over-shooting desired threshold voltage level ranges, producing errors in the data being stored.
Typically, when data is being programmed, the verify process for the memory device will attempt to guarantee that the threshold voltage of the memory cell is higher than a minimum level. However, many memory devices typically do not guarantee an upper limit on the threshold voltage during a regular programming process. Therefore, over programming, which includes the raising of the threshold voltage beyond the range for the desired state, can occur. Over programming can cause the memory cell to store incorrect data, thereby, causing an error during subsequent read operations.