Abstract:
Memory cell programming time can be reduced by using a longer initial pulse followed by regular length pulses as needed. Since memory cell programming pulses have raise and fall times, when the voltage applied is less than the programming voltage, and each programming pulse requires a program verify, which increases the programming overhead, replacing the first few regular pulses with a single longer pulse reduces the programming overhead.

Description:
RELATED APPLICATIONS 
     The following application is related by subject matter and is hereby incorporated by reference: 
     Application Ser. No. 09/513,643 to entitled “Multilevel Cell Programming.” Attorney reference 9076/64 filed herewith. 
    
    
     BACKGROUND 
     A flash memory cell can be a field effect transistor (FET) that includes a select gate, a floating gate, a drain, and a source. A cell can be read by grounding the source, and applying a voltage to a bitline connected with the drain. By applying a voltage to the wordline connected to the select gate, the cell can be switched on and off. 
     Programming a cell includes trapping excess electrons in the floating gate to increase voltage. This reduces the current conducted by the memory cell when the select voltage is applied to the select gate. The cell is programmed when the cell current is less than a reference current when the select voltage is applied. The cell is erased when the cell current is greater than the reference current and the select voltage is applied. 
     Memory cells with only two programmable states contain only a single bit of information, such as a “0” or a “1”. A multi-level cell (“MLC”) is a cell that can be programmed with more than one voltage level. Each voltage level is mapped to corresponding bits of information. For example, a single multilevel cell can be programmed with one of four voltage levels, e.g. −2.5V, 0.0V, +1.0V, +2.0V that correspond to binary bits “00”, “01”, “10”, and “11”, respectively. A cell that is programmable at more voltage levels can store more bits of data based on Eqn. 1. 
     
       
           N= 2{circumflex over ( )} B   Eqn.1 
       
     
     B is the number of bits of data stored 
     N is the number of voltage levels. 
     Thus, a 1 bit cell requires 2 voltage levels, a 2 bit cell requires 4 voltage levels, a 3 bit cell requires 8 voltage levels, and a 4 bit cell requires 16 voltage levels. 
     FIG. 1 shows a representation of a four level multilevel cell program voltage diagram  100 . The program voltage distribution (“distribution”) of the four levels are shown between lines  102  and  104 ,  106  and  108 , lines  110  and  112 , and above line  114 , respectively. The programming distribution can be for example 100 mV to 600 mV wide. A four level multilevel memory cell can be programmed with any one of these voltage levels. Because the cell can store one of four binary values it can store 2 bits of information. The data margin (“margin”), also called a guard band, is the voltage levels between distributions that is not normally used. The margins are shown in FIG. 1 between lines  104  and  106 ; lines  108  and  110 ; and lines  112  and  114 . For example, the data margin can be 800 mV to 100 mV wide. 
     BRIEF SUMMARY OF THE PREFERRED EMBODIMENTS 
     Memory cell programming time can be reduced by using a longer initial pulse followed by regular length pulses as needed. Since memory cell programming pulses have raise and fall times, when the voltage applied is less than the programming voltage, and each programming pulse requires a program verify, which increases the programming overhead, replacing the first few regular pulses with a single longer pulse reduces the programming overhead. 
    
    
     BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS 
     The present invention is illustrated by way of example and not limitation in the accompanying figures. In the figures, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. 
     FIG. 1 is a representation of the programmable voltage levels of a multi-level cell; 
     FIG. 2 is a diagram of a memory device; and 
     FIG. 3 is a flow diagram of an embodiment of the method of programming memory cells. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     It is desirable to reduce the time required to program memory cells, for example multi-level NAND memory cells. Traditional programming methods apply a series a identical pulses and each pulse is followed by a verify. The pulses are applied until the verify determines that the cell has been programmed. Each pulse has a rise and fall time during which less than the full programming voltage is applied. In order to reduce the programming time consumed by rise and fall times and verifies, the first programming pulse is increased. 
     Because the number of traditional programming pulses required to program a cell often vary from cell to cell, a preferred embodiment includes determining the minimum number of traditional pulses and determining the initial pulse to be equal to or less than the minimum number of traditional pulses. 
     For example, a particular wordline has a minimum programming time of six traditional pulses, each 7.5 μs wide, and a maximum programming time of ten traditional pulses. Using traditional methods, up to ten 7.5 μs pulses each followed by a 5 μs verify would be required to ensure that all cells on the wordline were programmed. The programming time for that wordline would be 125 μs. See Eqn. 2. 
     
       
         Program time=#Pulses×(width+verify) 
       
     
     
       
         =10×(7.5 μs+5 μs) 
       
     
     
       
         =125 μs  Eqn. 2 
       
     
     A programming pulse has a raise and fall time, during which time the voltage applied to the cell is less than the programming voltage and thus does not program the cell as well as during the program time of the pulse. For example, a 7.5 μs pulse has a 3 μs rise time, a 3.5 μs programming time, and a 1 μs fall time. This pulse applies the full programming voltage only during the programming time, which is less than half of the total pulse time. 
     In a preferred embodiment, the initial pulse of 21.5 μs is used followed by up to five traditional pulses each followed by a verify. The programming time for that wordline is 84 μs, which is a 41 μs (33%) improvement over the traditional method. See Eqn. 3. 
     
       
         Program time=First pulse+#Pulses×(width+verify) 
       
     
     
       
         =21.5 μs+5×(7.5 μs+5 μs) 
       
     
     
       
         =84 μs  Eqn. 3 
       
     
     In this embodiment, the initial pulse width of 21.5 μs was determined by determining the programming time of the five pulses that were replaced by the initial pulse and adding the raise and fall time of the initial pulse. See Eqn. 4. 
     
       
         Initial pulse=#pulse×prgming time+rise time+fall time 
       
     
     
       
         =5×3.5 μs+3 μs+1 μs 
       
     
     
       
         =21.5 μs  Eqn. 4 
       
     
     Alternatively, the initial pulse width calculation can include the rise and fall time of the five pulses being replace. Since some voltage is applied to the cell during these time, the width of the initial pulse could be increased to account for this. 
     In an alternative embodiment, the initial pulse could be any value greater than the traditional pulse width. It is preferred that the initial pulse width be equal to or less than the minimum programming time of the cells on a particular wordline. However, the initial pulse width can be longer than the minimum programming time. For example, if one cell on a wordline has an uncharacteristically short programming time, it is desirable that the initial pulse be closer to the next longer minimum programming time. 
     The minimum programming time of the cells on a wordline can be determined in a variety of manners. The minimum programming time can be determined by empirical analysis(device analysis), by statistical analysis, by analysis of the design, and by other means. 
     The minimum programming time for each wordline can be stored for later reference. However, if the same minimum programming time is used for all wordlines in an array of memory, then it is preferred that the minimum programming time is stored only once. 
     Multi-level memory cells, also called multi-bit memory cells, may have different minimum programming times for the different programming levels. In a one embodiment, the over all minimum programming time is used for all programming levels. In another embodiment, the minimum for each programming level is used for that programming level. 
     The reduced programming time achieved can be used in several different ways. First, the memory cells can be programmed faster. Second, the pulse count target can be increased, thus narrowing the program distributions, while maintaining the original programming time. 
     Referring to FIG. 2, a memory device  200  includes memory cells  202 , initial pulse width determinator  204 , and a cell programmer  206 . The memory cells  202  can include a single memory cell or multiple memory cells such as multiple pages of memory cells where each page includes  1024  memory cells. Preferably, the memory cells  202  are grouped into cells by wordlines. Preferably, the memory cells include NAND flash memory cells. The initial pulse width determinator  204  determines the initial pulse width for the memory cells based on a minimum programming time of a memory cell. For cells connect together via a wordline, the initial pulse width determinator  204 . The cell programmer  206  is capable of programming each of the memory cells by applying an initial pulse having the initial pulse width determined by the initial pulse width determinator and applying a series of secondary pulses having a second pulse width. Preferably, the first pulse width is different than the second pulse width. Optionally, the cell programmer  206  can include a verifier that verifies a programming state of a memory cell. The verify indicates when the cell is programmed. The indication is used to stop the series of secondary pulse once the cell is programmed. 
     Referring to FIG. 3, a method  200  is illustrated that programs a memory cell with an initial pulse width and a series of secondary pulses. 
     In  302 , an initial programming pulse is applied to the memory cell. The pulse width of the initial programming pulse is determined to be close to the minimum programming time of a memory cell. Preferably, the memory cells are grouped together via wordlines and the initial programming pulse width is based on the minimum programming pulse of the memory cells on each wordline. 
     In  304 , a series of secondary programming pulses is applied to the memory cell. 
     In  306 , a programmed state of the memory cell is verified after the secondary programming pulses. Preferably, the programming state of the memory cell is verified after each secondary programming pulse. If the memory cell is not programmed, then another secondary programming pulse is applied. If the memory cell is programmed, the programming is complete. Optionally, the programmed state of the memory cell can also be verified after the initial programming pulse. 
     While preferred embodiments have been shown and described, it will be understood that they are not intended to limit the disclosure, but rather it is intended to cover all modifications and alternative methods and apparatuses falling within the spirit and scope of the invention as defined in the appended claims or their equivalents.