Abstract:
A programming system and method for programming a programmable memory device having multiple individually programmable memory cells, such as an electrically programmable read only memory (EPROM), includes the use of an address and programming pulse signal source and a programming and test controller for establishing, based upon the programming of a small number of on-chip sample memory cells, a presumptively sufficient initial programming pulse duration for programming the remaining memory cells. In the event it is found during actual programming that such an initial programming pulse duration is insufficient for any particular memory cell, additional programming pulses, each of which is significantly shorter in duration than the initial programming pulse, are applied to such memory cell as needed until the programming of such memory cell is completed.

Description:
RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Application No. 60/025,312, filed Sep. 24, 1996, and entitled “Two-Pulse Method of Programming EPROM Cells.” Which is a continuation of Ser. No. 08,791,588 filed Jan. 31, 1997 U.S. Pat. No. 5,873,113. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to systems and methods for programming the memory cells of programmable memory devices, and in particular, to systems and methods for programming EPROM cells which require that multiple programming pulses be applied to selected memory cells. 
     2. Description of the Related Art 
     Referring to FIG. 1, as is well known in the art, the transistor forming a memory cell for an electrically programmable read only memory device (EPROM) has a floating polysilicon gate which is located between an access gate and the substrate and is electrically isolated from the substrate by a gate oxide and from the access gate by a dielectric inter-poly oxide. 
     During programming, a high programming voltage VPP is applied to the access gate while a lower voltage VD is applied to the drain and the source is grounded. As electrons flow from the source to the drain, they pick up kinetic energy and their path is altered by an electric field which is between the access gate and substrate and is generated by the potential difference between the programming voltage VPP on the access gate and the biasing voltage VD on the drain. Those electrons which achieve sufficient kinetic energy accelerate vertically toward the floating gate, passing through the gate oxide, and are trapped on the floating gate electrode, thereby creating a net negative voltage on the floating gate which opposes any electric field created by a positive voltage on the access gate. This results in a substantial increase in the threshold voltage required to transform the EPROM memory cell from a nonconductive state to a conductive state. 
     With conventional EPROM programming techniques, a small number of sample EPROM cells are used to sample the programmability of the remaining cells. Each sample cell is programmed by applying a sample programming pulse with a known relatively short pulse width and is immediately verified. If needed, more pulses of the same short width are applied followed by further verification until such cell is fully programmed. The maximum number of such short pulses that any of the sample cells took to reach the desired programming state is then used to establish the width, i.e., duration, of a longer programming pulse that will then be applied to the remaining cells. Typically, the duration of this longer pulse is simply set equal to the combined durations of the short pulses that were used to program the slowest sample cell. Thereafter, all remaining cells are then programmed by applying one or more of such longer pulses, as required, to each cell. 
     Such conventional technique, however, generally results in a significant amount of wasted time in programming and verifying an EPROM device. For example, for each cell which requires multiple programming pulses, the duration of each one of such programming pulses is that of the longest programming pulse duration found necessary to program the slowest sample memory cell. However, if the cell currently being programmed is not as slow as the slowest sample cell, but requires multiple programming pulses nonetheless, a proportionately significant amount of time can be wasted by applying extra programming pulses which are longer than necessary. 
     Accordingly, it would be desirable to have a programming technique in which advantage can be taken of the fact that it is statistically unlikely that most memory cells which are slower to program than the slowest sample memory cell will have programming times which are integer multiples of the programming time of the slowest sample cell. 
     SUMMARY OF THE INVENTION 
     A programming system and method in accordance with the present invention provides for the programming of programmable memory devices in significantly less time than conventional techniques. Each memory cell is programmed by using an initial programming pulse having a duration which is based upon programming tests conducted upon sample memory cells and then supplementing such initial programming with auxiliary programming pulses, as needed, each of which has a duration which is shorter than the initial programming pulse duration. 
     In accordance with one embodiment of the present invention, a programming system for programming a programmable memory device having multiple individually programmable memory cells includes a programming signal source and a programming controller. The programming signal source is configured to couple to a programmable memory device which includes multiple programmable sample memory cells and multiple programmable main array memory cells and provide thereto multiple programming signals by performing the steps of: 
     (a) receiving a programming mode control signal and in accordance therewith applying a programming mode signal to the programmable memory device in accordance with which the programmable memory device becomes configured for programming; 
     (b) receiving a plurality of sample programming control signals and in accordance therewith applying a plurality of sample programming signals to the programmable memory device; 
     (c) receiving a sample programming pulse control signal and in accordance therewith applying a sample programming pulse having a sample programming pulse duration to one of the plurality of programmable sample memory cells; 
     (d) receiving a programming verification control signal and in accordance therewith applying a programming verification signal to the programmable memory device; 
     (e) receiving a plurality of main array programming control signals and in accordance therewith applying a plurality of main array programming signals to the programmable memory device; 
     (f) receiving an initial main array programming pulse control signal and in accordance therewith applying an initial main array programming pulse having an initial main array programming pulse duration to one of the plurality of programmable main array memory cells; 
     (g) receiving an auxiliary main array programming pulse control signal and in accordance therewith applying an auxiliary main array programming pulse having an auxiliary main array programming pulse duration to the one of the plurality of programmable main array memory cells. 
     The programming controller is coupled to the programming signal source and is configured to couple to the programmable memory device and perform the steps of: 
     (h) providing the programming mode control signal; 
     (i) providing the plurality of sample programming control signals; 
     (j) providing the sample programming pulse control signal; 
     (k) providing the programming verification control signal; 
     (l) receiving from the programmable memory device, in response to the programming verification signal, a sample programming state signal which represents a programming state of the one of the plurality of programmable sample memory cells; 
     (m) comparing the programming state of the one of the plurality of programmable sample memory cells to a sample reference state; 
     (n) repeating steps (h), (i), (j), (k) and (l) if the programming state of the one of the plurality of programmable sample memory cells does not transcend the sample reference state, otherwise proceeding to step (o); 
     (o) determining a combination of the sample programming pulse durations of the sample programming pulses applied by the programming signal source in step (c) in accordance with steps (h), (i), (j), (k), (l), (m) and (n); 
     (p) repeating steps (h), (i), (j), (k), (l), (m), (n) and (o) for each remaining one of the plurality of programmable sample memory cells, then proceeding to step (q); 
     (q) establishing the initial main array programming pulse duration to be approximately equal to a selected one of the combinations of the sample programming pulse durations as determined in accordance with steps (h), (i), (j), (k), (l), (m), (n), (o) and (p); 
     (r) establishing the auxiliary main array programming pulse duration to be shorter than the initial main array programming pulse duration; 
     (s) providing the plurality of main array programming control signals; 
     (t) providing the initial main array programming pulse control signal; 
     (u) providing the programming verification control signal; 
     (v) receiving from the programmable memory device, in response to the programming verification signal, a main array programming state signal which represents a programming state of the one of the plurality of programmable main array memory cells; 
     (w) comparing the programming state of the one of the plurality of programmable main array memory cells to a main array reference state; 
     (x) proceeding to step (ad) if the programming state of the one of the plurality of programmable main array memory cells transcends the main array reference state, otherwise proceeding to step (y); 
     (y) providing the auxiliary main array programming pulse control signal; 
     (z) providing the programming verification control signal; 
     (aa) receiving from the programmable memory device, in response to the programming verification signal, the main array programming state signal; 
     (ab) comparing the programming state of the one of the plurality of programmable main array memory cells to the main array reference state; 
     (ac) repeating steps (o), (z), (aa) and (ab) if the programming state of the one of the plurality of programmable main array memory cells does not transcend the main array reference state, otherwise proceeding to step (ad), and 
     (ad) repeating, with each remaining one of the plurality of remaining programmable memory cells, steps (s), (t), (u), (v), (w) and (x) including repeating steps (y), (z), (aa), (ab) and (ac) in accordance with step (x). 
     In accordance with another embodiment of the present invention, a method of programming a programmable memory device having multiple individually programmable memory cells includes the steps of: 
     (a) applying a programming mode signal to a programmable memory device in accordance with which said programmable memory device becomes configured for programming, wherein said programmable memory device includes a plurality of programmable sample memory cells and a plurality of programmable main array memory cells; 
     (b) applying a plurality of sample programming signals to said programmable memory device; 
     (c) applying a sample programming pulse having a sample programming pulse duration to one of said plurality of programmable sample memory cells; 
     (d) applying a programming verification signal to said programmable memory device; 
     (e) receiving from said programmable memory device, in response to said programming verification signal, a sample programming state signal which represents a programming state of said one of said plurality of programmable sample memory cells; 
     (f) comparing said programming state of said one of said plurality of programmable sample memory cells to a sample reference state; 
     (g) repeating steps (a), (b), (c), (d) and (e) if said programming state of said one of said plurality of programmable sample memory cells does not transcend said sample reference state, otherwise proceeding to step (h); 
     (h) determining a combination of said sample programming pulse durations of said sample programming pulses applied in accordance with steps (a), (b), (c), (d), (e), (f) and (g); 
     (i) repeating steps (a), (b), (c), (d), (e), (f), (g) and (h) for each remaining one of said plurality of programmable sample memory cells, then proceeding to step (j); 
     (j) establishing said initial main array programming pulse duration to be approximately equal to a selected one of said combinations of said sample programming pulse durations as determined in accordance with steps (a), (b), (c), (d), (e), (f), (g), (h) and (i); 
     (k) establishing said auxiliary main array programming pulse duration to be shorter than said initial main array programming pulse duration; 
     (l) applying a plurality of main array programming signals to said programmable memory device; 
     (m) applying an initial main array programming pulse having an initial main array programming pulse duration to one of said plurality of programmable main array memory cells; 
     (n) applying said programming verification signal to said programmable memory device; 
     (o) receiving from said programmable memory device, in response to said programming verification signal, a main array programming state signal which represents a programming state of said one of said plurality of programmable main array memory cells; 
     (p) comparing said programming state of said one of said plurality of programmable main array memory cells to a main array reference state; 
     (q) proceeding to step (w) if said programming state of said one of said plurality of programmable main array memory cells transcends said main array reference state, otherwise proceeding to step (r); 
     (r) applying an auxiliary main array programming pulse having an auxiliary main array programming pulse duration to said one of said plurality of programmable main array memory cells; 
     (s) applying said programming verification signal to said programmable memory device; 
     (t) receiving from said programmable memory device, in response to said programming verification signal, said main array programming state signal; 
     (u) comparing said programming state of said one of said plurality of programmable main array memory cells to said main array reference state; 
     (v) repeating steps (r), (s), (t) and (u) if said programming state of said one of said plurality of programmable main array memory cells does not transcend said main array reference state, otherwise proceeding to step (w); and 
     (w) repeating, with each remaining one of said plurality of remaining programmable memory cells, steps (l), (m), (n), (o), (p) and (q) including repeating steps (r), (s), (t), (u) and (v) in accordance with step (q). 
     These and other features and advantages of the present invention will be understood upon consideration of the following detailed description of the invention and the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a cross-sectional view of a conventional EPROM cell. 
     FIG. 2 is a functional block diagram of a programming system in accordance with one embodiment of the present invention. 
     FIG. 3 is a timing diagram representing the programming pulses as applied to the sample cells and the remaining cells in accordance with the present invention. 
     FIG. 4 represents, in bar chart form, the programming pulses applied according to conventional techniques. 
     FIG. 5 represents, in bar chart form, the programming pulses applied according to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring to FIG. 2, when using a programming system  10  and method in accordance with the present invention, a programmable memory device  12 , such as an EPROM, is powered by dc power  15  provided by a power source  14 , receives various programming signals  17  from a programming signal source  16  and provides programming state signals  13  to a programming controller  18  for verification of the state of programming of the memory device  12 . The controller  18  provides programming control signals  19  for the signal source  16  in accordance with which the various programming signals  17  are generated. The control signals  19  include: a programming mode control signal; sample programming control signals; a sample programming pulse control signal; a programming verification control signal; main array programming control signals; an initial main array programming pulse control signal; and an auxiliary main array programming pulse control signal. In respective correspondence thereto, the programming signals  17  include; a programming mode signal; sample programming signals; a sample programming pulse; a programming verification signal; main array programming signals; an initial main array programming pulse; and an auxiliary main array programming pulse. 
     More specifically, the controller  18  provides the programming mode control signal in accordance with which the signal source  16  applies a programming mode signal to the memory device  12 , thereby configuring the memory device  12  in a programming mode of operation. The controller  18  then provides the sample programming control signals in accordance with which the signal source  16  applies the sample programming signals to the memory device  12 . Such sample programming control signals include sample address control signals and sample data control signals in accordance with which the signal source  16  provides corresponding sample address signals and sample data signals as parts of the sample programming signals. These address signals identify the programmable sample memory cells  22  which are to be programmed, while the sample data is the data with which such sample memory cells  22  are to be programmed. The controller  18  then provides the sample programming pulse control signal in accordance with which the signal source  16  provides the sample programming pulse, having a predetermined pulse duration, to the memory device  12 . Following this, the controller  18  provides the programming verification control signal in accordance with which the signal source  16  applies the programming verification signal to the memory device  12 . In response to this programming verification signal, the memory device  12  provides the sample programming state signal which represents the programming state of the sample memory cell being programmed. The controller  18  compares such programming state to a sample reference state. If such programming state does not transcend the sample reference state (e.g., exceed some predetermined minimum criterion or fall below some predetermined maximum criterion), programming of the sample memory cell is repeated with further sample programming pulses, as described above. 
     Once such sample cell has been programmed, a combination (e.g., sum) of the sample pulse durations required for such programming is determined. This process is then repeated for the remaining sample memory cells  22 , following which one of the combinations of sample pulse durations (e.g., the maximum sum) is selected for establishing the pulse duration for the initial programming pulse for programming the main array memory cells  32 . Also established is the pulse duration of the auxiliary programming pulse, with such auxiliary programming pulse duration being shorter than the initial programming pulse duration. 
     It should be noted that, in accordance with the present invention, other combinations of sample pulse durations can be used, as desired, for establishing the initial programming pulse duration. For example, other than the maximum sum of the sample pulse durations used for programming, the minimum sum can be used or some form of average of the sums of the various sequences of sample pulse durations used for programming the sample memory cells  22  can be used. 
     Following programming of the sample memory cells  22 , each of the main array memory cells  32  is then programmed using the initial main array programming pulse and, as necessary, the auxiliary main array programming pulse(s). With the programming mode control signal asserted and the corresponding programming mode signal applied, the controller  18  provides the main array programming control signals which include the address and program data for the specific main array memory cell(s)  32  intended to be programmed. In accordance therewith, the signal source  16  applies the appropriate main array programming signals to the memory device  12 . The controller  18  then provides the initial main array programming pulse control signal in accordance with which the signal source  16  applies the initial main array programming pulse having the predetermined pulse duration (as discussed above) to the addressed main array memory cell(s)  32 . Subsequent thereto, the controller  18  provides the programming verification control signal in accordance with which the signal source  16  again applies the programming verification signal to the memory device  12 . In response thereto, the memory device  12  provides a main array programming state signal which represents the programming state of the main array memory cell(s)  32  being programmed. The controller  18  compares this programming state to a main array reference state. (Preferably, although not necessarily, the main array reference state is the same as the aforementioned sample reference state.) If such programming state transcends the main array reference state, then the next one/group of the remaining memory cells  32  is/are programmed similarly. However, if such programming state does not transcend the main array reference state, then the controller  18  provides the auxiliary programming pulse control signal in accordance with which the signal source  16  applies the auxiliary main array programming pulse having a predetermined pulse duration to the memory device  12  for further programming of the previously addressed main array memory cell(s)  32 . Following this, the aforementioned application of the programming verification signals and testing of the main array programming state is repeated, following which this application of auxiliary programming pulses is repeated as necessary until such time as the programming state of the addressed main array memory cell(s)  32  transcends the main array reference state. The remaining main array memory cells  32  are then similarly programmed with the initial programming signals, as well as the auxiliary programming signals as necessary. 
     Referring to FIG. 3, the above-described programming operation can also be illustrated as follows. The top waveform represents that portion of the programming operation when the sample memory cells  22  (FIG. 2) are programmed so as to determine the duration of the initial programming pulse for the remaining memory cells  32 . Predetermined sample programming pulses P S  are applied with corresponding interposed test periods T for performing verification tests upon the programming state of the sample cell. When proper programming has been verified, the sum of the sample programming pulse P S  durations is used to establish the initial programming pulse P I  duration for the remaining memory cells  32  (FIG.  2 ), as discussed above. Accordingly, for each of the remaining memory cells  32 , an initial programming pulse P I  is applied, followed by a verification period T. As discussed above, in the event that programming is not yet complete, auxiliary programming pulses P A  (followed by corresponding verification periods T) are applied as necessary until programming is completed. (These waveforms are intended to represent the programming and testing time periods and are not intended to necessarily represent the polarities of the programming pulses; e.g., depending upon the specific type of programmable memory device, the actual pulses could have their peak amplitudes between zero and a positive voltage, zero and a negative voltage, two positive voltages, two negative voltages or a positive voltage and a negative voltage.) 
     Referring to FIGS. 4 and 5 together, the above-described differences between conventional programming techniques and a programming technique in accordance with the present invention can be represented as shown. FIG. 4 represents a conventional programming operation for the remaining memory cells  32  (FIG.  2 ). The height of each box represents the duration of the long programming pulse, and the number of the boxes stacked vertically indicates how often they are applied. For example, according to FIG. 4, in order to complete programming of the remaining cells  32 , the first cell took two long programming pulses, the second cell took one, the third cell took three, and so on. In contrast thereto, according to FIG. 5, when programming in accordance with the present invention, in addition to the initial long programming pulse, the first cell took one auxiliary pulse, the second cell took none, the third cell took six, and so on. As is apparent from the total height of these “stacks” the average combined programming pulse width, or effective programming time, for each cell can and often will be smaller than that required by conventional programming operations. 
     Various other modifications and alterations in the structure and method of operation of this invention will be apparent to those skilled in the art without departing from the scope and spirit of the invention. Although the invention has been described in connection with specific preferred embodiments, it should be understood that the invention as claimed should not be unduly limited to such specific embodiments. It is intended that the following claims define the scope of the present invention and that structures and methods within the scope of these claims and their equivalents be covered thereby.