Abstract:
A method for restoring the charge lost from memory cells, such as to restore the original voltage levels, within a time equivalent to the retention time. The condition of the memory cell is determined, for example, when the memory is switched on, or based on the time elapsed since the previous programming/restoration, or based on the difference between the present threshold voltage of the reference cells and the original threshold voltage of the (suitably stored) reference cells, or when predetermined operating conditions occur. This makes it possible to prolong the life of nonvolatile memories, in particular of multilevel type, wherein the retention time decreases as the number of levels (bits/cell) is increased.

Description:
TECHNICAL FIELD 
     The present invention relates to a method for maintaining the memory content of non-volatile memory cells, in particular flash-EEPROM cells. 
     BACKGROUND OF THE INVENTION 
     As known, the problem of charge retention in flash memory cells storing more than one bit is becoming increasingly important, as the number of levels to be stored in a single memory cell gradually increases. In general, it is found that the retention time (maximum time after which there is no longer any certainty of correctly reading the stored data) decreases when the number of levels to be stored in a single flash cell increases (see for example ISSCC&#39;98, SA 21.2: “1M-Cell 6b/Cell Analog Flash Memory of Digital Storage”, P. L. Rolandi et al., page 334). When there is one bit per cell (two levels), the existing technologies allow retention times of more than 10 years; however if there are 4 bits/cell (16 levels), even when the used reference elements are reference flash cells storing the various voltage levels such as to (obviously partially) compensate for the losses, the maximum times of use decrease to approximately 4-5 years, and to as little as approximately 6 months when there are 6 bits/cell. 
     FIGS.  1   a  and  1   b  show the effect of charge losses from the floating gate regions of a flash memory, in case of storing 2 bits/cell (four levels). In particular, FIG.  1   a  shows the distribution of the cells, i.e., the number of cells N versus the cell threshold voltage Vth for four stored levels, immediately after programming the memory, whereas FIG.  1   b  shows the distribution of the same cells after a time close to the retention time. As known, the charge loss modifies the cell distribution, both such as to displace towards lower threshold voltages the center of each bell-shaped curve (from voltages R 1 , R 2 , R 3 , R 4  to voltages R 1 ′, R 2 ′, R 3 ′, R 4 ′ for the four stored levels), and to cause extension of at least some distributions. Further charge losses subsequently prevent discrimination between the various levels, and thus correct reading of the cells. 
     SUMMARY OF THE INVENTION 
     The invention provides a method for maintaining the charge stored in non-volatile memory cells, such as to allow retention of the data for long periods, even in multilevel memories. 
     In practice, the invention is based on the finding that as long as it is possible to read the cells correctly, it is also possible to restore the original voltage levels (including those of the reference cells), thereby eliminating the effects caused by charge losses. 
     Taking into consideration for example a flash memory using 4 bits/cell, having a data retention time equivalent to 5 years, if, 5 years after initial programming, a process to restore the levels is carried out, data is preserved unchanged for a further 5 years, after which it is possible to carry out the restoration process again, and prolong retention of the data for a further 5 years. This is made possible also because the analog precision used for memory reading is far greater than the stored digital precision; in fact, to store 4 bits/cell, now reading systems with precision greater than 7 bits/cell are used. 
     The decision concerning the moment at which the process of restoring the memory is to be carried out can be taken for example when the memory is switched on, based on various criteria: 
     the time elapsed since the previous programming/restoration (here the memory must receive the current data, to decide whether or not to carry out the restoration); 
     the difference between current reference values (current threshold voltage of the reference cells) and original reference values (original threshold voltage of the reference cells); 
     pre-determined operating conditions, which are detected for example by the system including the memory. 
     In all cases, it is advantageous to have a reference memory with a retention time far greater than that of the non-volatile data memory, such as a ROM memory, which can store virtually permanently the original reference levels to be used to be compared with the current reference and/or restoration levels. As an alternative, the threshold voltages corresponding to the various original levels can also be stored in the data memory itself in a digital manner, and they can then be used when necessary to restore all the memory cells (including the reference cells and the cells themselves that store the references). 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     To assist understanding of the present invention, preferred embodiments are now described, purely by way of non-limiting example, with reference to the attached drawings, wherein: 
     FIGS.  1   a  and  1   b  show memory cell distributions, respectively after programming, and after a time close to the retention time; 
     FIG. 2 shows a block diagram of a memory used in a first embodiment of the invention; 
     FIG. 3 shows a block diagram of a memory used in a second embodiment of the invention; 
     FIG. 4 shows a flow chart of the present method; 
     FIG.  4   a  shows the detail of a block in FIG. 4, according to the second embodiment of the present method; 
     FIG.  4   b  shows the detail of a block in FIG. 4, according to the first embodiment of the present method; and 
     FIG. 5 shows the detail of two blocks of FIG.  4 . 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 2 shows the architecture of a memory device  1  implementing a first embodiment of the present method. The memory device  1  comprises a memory array  2 , preferably of flash type, comprising a plurality of data cells  3 . Memory array  2  additionally comprises reference cells  4 , used for comparison reading of data cells  3 . Memory array  2  is connected to a memory control unit  5 , generally integrated in a single chip with the memory array  2 , and comprising address circuits and management circuits of the memory array  2 , in a known manner. Memory control unit  5  additionally comprises a small permanent memory (ROM memory  6 ), for storing the original reference levels. The memory control unit  5  is also connected to the exterior through a control unit  7  of a user. 
     FIG. 3 shows a different architecture, wherein some data cells  3  of memory array  2 , indicated at  10 , store the date of the latest restoration of memory array  2 , and some data cells, indicated at  11 , store the original threshold voltages corresponding to the various preset digital levels. In this case, memory control unit  5  can dispense with the ROM memory for the original threshold voltages. According to another variant, not shown, memory array  2  stores, in data cells  10 , only the date of the latest restoration and not the original references, and memory control unit  5  comprises a ROM memory  6  similar to that of FIG.  2 . 
     According to an aspect of the invention, memory control unit  5  of FIGS. 2 and 3 begins a test regarding the need to carry out memory refreshing or restoration, at switching on, as described in detail hereinafter. 
     In particular, with reference to FIG. 4, upon switching on (block  20 ), memory control unit  5  checks whether it is necessary to carry out refreshing, for example according to the method shown in FIG.  4   a , or the method shown in FIG.  4   b , block  21 . 
     In FIG.  4   a , memory control unit  5  requests from the exterior (for example from user control unit  7 ) the current date DATT, and reads from data cells  10  the stored date DMEM of the latest refreshing or programming, block  23 . Memory control unit  5  then checks whether the difference between the current date DATT and the stored date DMEM is equal to, or greater than, a predetermined threshold value K 1  (for example 5 years), block  24 . 
     In FIG.  4   b , memory control unit  5  reads the current threshold voltage RIFATT of reference cells  4  and the original threshold voltage RIFMEM from ROM memory  6  or from data cells  11 , block  26 . Memory control unit  5  then checks whether the difference between the current threshold voltage RIFATT and the stored threshold voltage RIFMEM, is equal to, or greater than, a predetermined threshold value K 2 , corresponding to the separation between the various levels, block  27 . 
     If the result of the check in block  24  or block  27  is negative (NO outputs), no refreshing is carried out, and memory control unit  5  continues with the operations requested (block  30 ). On the other hand, if the result of the check in block  24  or block  27  is positive, the refreshing process is started. 
     The refreshing process begins with resetting an address counter I, block  32 ; the threshold voltage THi of the i-th data cell  3 , block  33 , is then read; threshold voltage THi is compared with threshold value THr corresponding to the level stored in the i-th data cell  3 , block  34 ; if the difference between THi and Thr in absolute value exceeds a predetermined error K 3 , reprogramming of the i-th cell itself is carried out (block  35 ). The check according to block  34  is carried out to take into account any cells originally overprogrammed, which, on completion of the latest programming, had a threshold voltage greater than the reference voltage, and therefore, even after long-term charge losses, have maintained a substantially correct threshold value. 
     At the end of programming according to block  35 , or for a NO output from block  34 , counter I is incremented, block  36 , and a check is made as to whether all the memory array  2  has been examined, block  37 , if not (still cells to be checked and possibly reprogrammed), the method returns to block  33 ; if the check is positive (YES output), the reference cells are reprogrammed, block  40 . Subsequently the current date is stored according to operation DMEM←DATT, if reprogramming is determined on the basis of the date of the latest programming, or if the information on the reprogramming date is to be retained for other reasons, and the operations requested by user control unit  7  are continued, block  30 . 
     Programming according to blocks  35  and  40  must be carried out as soft programming which does not overprogram the cell. For example, use can advantageously be made of the algorithm described in European patent application 97830566.2 of Mar. 11, 1997 entitled “Method for multilevel programming of a nonvolatile memory, and a multilevel nonvolatile memory”, and also referred to in the aforementioned article by Rolandi et al. This algorithm is summarized hereinafter for reference purposes. 
     In detail, the following algorithm is based on the fact that when a series of programming voltage pulses with a linearly increasing value is applied to the gate terminal of a nonvolatile cell, at equilibrium, the threshold voltage increases in the same manner as the programming voltage. Reading the present threshold voltage of the cell to be programmed with high precision, once set the increase speed of the cell gate voltage (gradient of the ramp) based on the required threshold voltage value, the time necessary to reach the required value, and thus the number of programming pulses (of constant, predetermined duration) are determined. In practice, the number of pulses is calculated from the following equation: 
     
       
         N−(V p −V i )/ΔV G   (1) 
       
     
     wherein N is the number of programming pulses to be applied; V p  is the required threshold voltage, V i  is the initial (measured) threshold voltage, and ΔV G  is the amplitude of each programming pulse, set on the basis of the required precision. 
     In practice, since calculation of the number of needed pulses is correct only after equilibrium has been achieved, and considering conditions of inaccuracy, a first sequence of pulses is initially applied, to bring the cells into an equilibrium condition; a verify step is then carried out, to identify the value of the present cell threshold voltage; the number of pulses necessary to obtain the required threshold value is calculated; a number of pulses close to the number of pulses just calculated is applied, to prevent the cell from being overwritten; the present threshold value is verified out again; the number of pulses necessary to obtain the required threshold value is calculated; the number of pulses just calculated is applied; and a verify step is carried out again, optionally followed by further steps of applying programming and verify pulses. 
     More specifically, with reference to FIG. 5, initially (block  100 ), the memory control unit reads the data necessary for programming a predetermined data cell  3  of the array. In particular, the following data are supplied: the intermediate voltage value V int  to which the threshold voltage of the data cell  3  is to be brought to arrive into the linear zone, the amplitude ΔV G  of the programming pulses, and the required final threshold voltage V p . In addition, memory control units  5  acquires the initial threshold voltage V i  corresponding to the just measured value THi for data cell  3 , or controls reading of the threshold voltage of reference cell  4  (block  110 ). 
     Subsequently (block  120 ), memory control unit  5  calculates the number of pulses N 1  necessary to reach the intermediate threshold voltage V int  on the basis of (1), and controls that N 1  pulses are supplied (block  130 ). Subsequently, a further verify step is carried out, and the output voltage V eff  representing the present threshold voltage of the data cell  3  (block  140 ) is acquired. 
     From the acquired value V eff , memory control unit  5  calculates the number of pulses N 2  necessary to reach the final threshold voltage V p , less one, for safety (block  150 ), and controls supplying of the N 2  pulses (block  160 ). A further verify step is then carried out, the value of the present threshold V eff  is acquired (block  170 ), and the number of pulses N 3  necessary to reach the final threshold voltage V p  is calculated (block  180 ). The N 3  pulses are applied (block  190 ), and a further verify step is carried out, acquiring the present threshold value V eff  ( 200 ). 
     Then it is checked whether the present threshold value V eff  is equal to the required threshold value, within the required precision level (block  210 ); if yes, the programming process ends; otherwise the method returns to block  180 , for calculating the number of pulses still necessary to reach the threshold, and verifying. 
     The advantages of the described method are apparent from the preceding description. The fact is now simply emphasized that the present method can easily be implemented by memory control unit  5 , which is already present in memory device  1 , without requiring changes to the structure thereof. 
     Finally, it is apparent that many modifications and variations can be made to the method described and illustrated here, all of which come within the scope of the invention, as defined in the appended claims. In particular, although the preceding description relates to application to a flash-EEPROM memory, the present method can also be applied to other types of nonvolatile memory. In addition, the decision as to whether or not to restore the memory can depend on criteria and needs which are different from those indicated by way of example.