1. Field of the Invention
The present invention is directed to technology for non-volatile memory.
2. Description of the Related Art
Semiconductor memory devices have 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 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. 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.
Some EEPROM and flash memory devices have a floating gate that is used to store two ranges of charges and, therefore, the memory cell can be programmed/erased between two states. When programming an EEPROM or 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.
Typically, the program voltage applied to the control gate is applied as a series of pulses. The magnitude of the pulses is increased with each successive pulse by a predetermined step size (e.g. 0.2v). In the periods between the pulses, verify operations are carried out. That is, the programming level of each cell of a group of cells being programmed in parallel is read between successive programming pulses to determine whether it is equal to or greater than a verify level to which it is being programmed. One means of verifying the programming is to test conduction at a specific compare point. The cells that are verified to be sufficiently programmed are locked out, for example in NAND cells, by raising the bit line voltage from 0 to Vdd (e.g., 2.5 volts) to stop the programming process for those cells. In some cases, the number of pulses will be limited (e.g. 20 pulses) and if a given memory cell is not completely programmed by the last pulse, then an error is assumed. In some implementations, memory cells are erased (in blocks or other units) prior to programming. More information about programming can be found in U.S. patent application 10/379,608, titled “Self Boosting Technique,” filed on Mar. 5, 2003, issued as U.S. Pat. No. 6,859,397 on Feb. 22, 2005; and in U.S. patent application 10/629,068, titled “Detecting Over Programmed Memory,” filed on Jul. 29, 2003, published as Publication No. US2005/0024939 on Feb. 3, 2005, both of which are incorporated herein by reference in their entirety.
FIG. 1 shows a program voltage signal Vpgm applied to the control gates (or, in some cases, steering gates) of flash memory cells. The program voltage signal Vpgm includes a series of pulses that increase in magnitude over time. At the start of the program pulses, the bit lines (e.g. connected to the drain) of all cells that are to be programmed are grounded, thereby, creating a voltage difference of Vpgm−0 v from gate to channel. Once a cell reaches the targeted voltage (passing program verify), the respective bit line voltage is raised to Vdd so that the memory cell is in the program inhibit mode (e.g. program to that cell stops).
A multi-state flash memory cell is implemented by identifying multiple, distinct allowed threshold voltage ranges separated by forbidden voltage ranges. For example, FIG. 2 shows eight threshold ranges (0, 1, 2, 3, 4, 5, 6, 7), corresponding to three bits of data. Other memory cells can use more than eight threshold ranges or less than eight threshold ranges. Each distinct threshold voltage range corresponds to predetermined values for the set of data bits. In some implementations, these data values (e.g. logical states) are assigned to the threshold ranges using a gray code assignment so that if the threshold voltage of a floating gate erroneously shifts to its neighboring physical state, only one bit will be affected. The specific relationship between the data programmed into the memory cell and the threshold voltage ranges of the cell depends upon the data encoding scheme adopted for the cells. For example, U.S. Pat. No. 6,222,762 and U.S. patent application No. 10/461,244, “Tracking Cells For A Memory System,” filed on Jun. 13, 2003, published as Publication No. US2004/0255090 on Dec. 16, 2004, both of which are incorporated herein by reference in their entirety, describe various data encoding schemes for multi-state flash memory cells.
As described above, when programming flash memory cells, between the programming pulses the memory cells are verified to see if they reached the target threshold value. One means for verifying is to apply a pulse at the word line corresponding to the target threshold value and determine whether the memory cell turns on. If so, the memory cell has reached its target threshold voltage value. For arrays of flash memory cells, many cells are verified in parallel. For arrays of multi-state flash memory cells, the memory cells will perform a verification step of each state to determine which state the memory cell is within. For example, a multi-state memory cell capable of storing data in eight states may need to perform verify operations for seven compare points. FIG. 3 shows three programming pulses 10a, 10b and 10c (each of which are also depicted in FIG. 1). Between the programming pulses are seven verify pulses in order to perform seven verify operations. Based on the seven verify operations, the system can determine the state of the memory cells.
Performing seven verify operations after each programming pulses slows down the programming process. One means for reducing the time burden of verifying is to use a more efficient verify process. For example, in U.S. patent application Ser. No. 10/314,055, “Smart Verify for Multi-State Memories,” filed Dec. 5, 2002, published as Publication No. US2004/0109362 on Jun. 10, 2004, incorporated herein by reference in its entirety, a Smart Verify process is disclosed. In an exemplary embodiment of the write sequence for the multi-state memory during a program/verify sequence using the Smart Verify process, at the beginning of the process only the lowest state (e.g. state 1 of FIG. 2) of the multi-state range to which the selected memory cells are being programmed is checked during the verify phase. Once the first storage state (e.g. state 1 of FIG. 2) is reached by one or more of the memory cells, the next state (e.g. state 2 of FIG. 2) in the sequence of multi-states is added to the verify process. This next state can either be added immediately upon the fastest cells reaching this preceding state in the sequence or, since memories are generally designed to have several programming steps to move from state to state, after a delay of several cycles. The amount of delay can either be fixed or use a parameter based implementation, which allows the amount of delay to be set according to device characteristics. The adding of states to the set being checked in the verify phase continues as per above until the highest state has been added. Similarly, lower states can be removed from the verify set as all of the memory cells bound for these levels verify successfully to those target values and are locked out from further programming.
In addition to programming with reasonable speed, to achieve proper data storage for a multi-state cell, the multiple ranges of threshold voltage levels of the multi-state memory cell should be separated from each other by sufficient margin so that the level of the memory cell can be programmed and read in an unambiguous manner. Additionally, a tight threshold voltage distribution is recommended. To achieve a tight threshold voltage distribution, small program steps typically have been used, thereby, programming the threshold voltage of the cells more slowly. The tighter the desired threshold distribution, the smaller the steps and the slower the programming process.
One solution for achieving tight threshold distributions without unreasonably slowing down the programming process is to use a two phase programming process. The first phase, a coarse programming phase, includes attempts to raise the threshold voltage in a faster manner and paying relatively less attention to achieving a tight threshold distribution. The second phase, a fine programming phase, attempts to raise the threshold voltage in a slower manner in order to reach the target threshold voltage while also achieving a tighter threshold distribution. Example of coarse/fine programming methodologies can be found in the following patent documents that are incorporated herein by reference in their entirety: U.S. patent application Ser. No. 10/051,372, “Non-Volatile Semiconductor Memory Device Adapted to Store A Multi-Valued Data in a Single Memory Cell,” filed Jan. 22, 2002, issued as U.S. Pat. No. 6,643,188 on Nov. 4. 2003; U.S. Pat. No. 6,301,161; U.S. Pat. No. 5,712,815; U.S. Pat. No. 5,220,531; and U.S. Pat. No. 5,761,222. When verifying a memory cell during programming, some prior solutions will first perform the verify process for the coarse mode and then subsequently perform the verify process for the fine mode. Such a verification process increases the time needed for verification. The coarse/fine programming methodology can be used in conjunction with the Smart Verify process described above.
As memory devices become smaller and more dense, the need for tighter threshold distributions and reasonable program times has increased. Although the coarse/fine programming methodology provides a solution to some existing issues, there is further need to improve the coarse/fine programming methodology to provide the desired tighter threshold distributions and reasonable program times.