SYSTEM AND METHOD FOR IMPLEMENTING TEMPERATURE COMPENSATION IN A MEMORY DEVICE

A method of operating memory cells includes programming memory cells at a first temperature to different program states associated with first read current values confirmed by using nominal read conditions. Modified read conditions are determined such that a second read current for the one memory cells at a second temperature is approximately equal to the first read current value for the one memory cell. A read operation is performed on the memory cells at the second temperature using the modified read conditions to determine respective third read current values. Error read current values are determined as respective differences between the first and third read current values. Upper and lower program states are assigned to respective desired program states, with read currents that correspond approximately to respective determined error read current values, and are separated approximately by a respective target read current value associated with the respective desired program state.

FIELD OF THE INVENTION

The present invention relates to non-volatile memory arrays.

BACKGROUND OF THE INVENTION

Memory devices with split gate non-volatile memory cells, and arrays of such cells, are well known. For example, U.S. Pat. No. 5,029,130 (“the '130 patent”) discloses an array of split gate non-volatile memory cells. The memory cell is shown inFIG.1. Each memory cell10includes source and drain regions14/16formed in a semiconductor substrate12, with a channel region18there between. A floating gate20is formed over and insulated from (and controls the conductivity of) a first portion of the channel region18, and over a portion of the drain region16. A control gate22(also referred to a word line gate or select gate) has a first portion22bthat is disposed over and insulated from (and controls the conductivity of) a second portion of the channel region18, and a second portion22cthat extends up and over the floating gate20. The floating gate20and control gate22are insulated from the substrate12by a gate oxide26.

The memory cell is erased (where electrons are removed from the floating gate) by placing a high positive voltage on the control gate22, which causes electrons on the floating gate20to tunnel through the intermediate insulation (e.g., a tunnel oxide)24from the floating gate20to the control gate22via Fowler-Nordheim tunneling.

The memory cell is programmed (where electrons are placed on the floating gate) by placing a positive voltage on the control gate22, and a positive voltage on the drain16. Electron current will flow from the source14towards the drain16. The electrons will accelerate and become heated when they reach the gap between the control gate22and the floating gate20. Some of the heated electrons will be injected through the gate oxide26onto the floating gate20due to the attractive electrostatic force from the floating gate20.

The memory cell is read by placing positive read voltages on the drain16and control gate22(which turns on the channel region under the control gate). If the floating gate20is positively charged (i.e. erased of electrons and positively coupled to the drain16), then the portion of the channel region under the floating gate20is turned on as well, and current will flow across the channel region18, which is sensed as the erased or “1” state. If the floating gate20is negatively charged (i.e. programmed with electrons), then the portion of the channel region under the floating gate20is mostly or entirely turned off, and current will not flow (or there will be little flow) across the channel region18, which is sensed as the programmed or “0” state.

The architecture of the memory array is shown inFIG.2. The memory cells10are arranged in rows and columns. In each column, the memory cells are arranged end to end in mirror fashion, so that they are formed as pairs of memory cells each sharing a common source region14(S), and each adjacent set of memory cell pairs sharing a common drain region16(D). All the source regions14(S) for any given row of memory cells are electrically connected together by a source line14a. Optionally, a group of the source lines14a, or all the source lines14ain the memory array, can be electrically connected together by a common source line14b. All the drain regions16(D) for any given column of memory cells are electrically connected together by a bit line16a. All the control gates22for any given row of memory cells are electrically connected together by a control gate line22a(also called word lines or select gate lines). Therefore, while the memory cells can be individually programmed and read, memory cell erasure is performed row by row (each row of memory cells is erased together, by the application of a high voltage on the control gate line22a). Row and column decoders decode incoming row and column addresses and provide the appropriate voltages to the control gate lines22aand bit lines16a, respectively. A sense amplifier senses the voltages or currents on the bit lines during read operations.

Those skilled in the art understand that the source and drain can be interchanged, where the floating gate can extend partially over the source instead of the drain, as shown inFIG.3.FIG.4best illustrates the corresponding memory cell architecture, including the memory cells10, the source lines14a, the bit lines16a, and the control gate lines22a. As is evident from the figures, memory cells10of the same row share the same source line14aand the same control gate line22a, while the drains of all cells of the same column are electrically connected to the same bit line16a. The array design permits individual programming of the selected cells, e.g., by applying 1.6 V and 7.6 V to the selected control gate line22aand source line14a, respectively, and grounding the selected bit line16a. Disturbing the non-selected memory cell in the same pair is avoided by applying a voltage greater than 2 volts on the unselected bit lines16aand grounding the remaining lines.

Split gate memory cells having more than two gates are also known. For example, memory cells have source region14, drain region16, floating gate20over a first portion of channel region18, a control gate22over a second portion of the channel region18, a coupling gate28over the floating gate20, and an erase gate30over the source region14are known, as shown inFIG.5. It should be noted that coupling gates are sometimes referred to as control gates, but will only be referred to as coupling gates herein for clarity (so they may be distinguished from the control gates22used to control a portion of the channel region18). Programming is shown by heated electrons from the channel region18injecting themselves onto the floating gate20. Erasing is shown by electrons tunneling from the floating gate20to the erase gate30by the application of a high positive voltage on the erase gate30.

The architecture for a four-gate memory cell array can be configured as shown inFIG.6. In this embodiment, each horizontal control gate line22aelectrically connects together all the control gates22for that row of memory cells. Each horizontal coupling gate line28aelectrically connects together all the coupling gates28for that row of memory cells. Each horizontal source line14aelectrically connects together all the source regions14for two rows of memory cells that share the source regions14. Each bit line16aelectrically connects together all the drain regions16for that column of memory cells. Each erase gate line30aelectrically connects together all the erase gates30for two rows of memory cells that share the erase gates30. As with the previous architecture, individual memory cells can be independently programmed and read. Erasing is performed by placing a high positive voltage on the erase gate line30a, which results in the simultaneous erasing of both rows of the memory cells that share the same erase gate line30a. Exemplary operating voltages can include those in Table 1 below, where selected lines (Sel.) are those that include the targeted memory cell(s), and unselected lines (Unsel.) are the remaining lines not including the targeted memory cell(s):

Split gate non-volatile memory cells having three conductive gates, and arrays of such cells, are also known. For example, U.S. Pat. No. 7,315,056 (“the '056 patent”) discloses an array of split gate non-volatile memory cells. The memory cell is shown inFIG.7. Each memory cell10includes source and drain regions14/16formed in a semiconductor substrate12, with a channel region18there between. A floating gate20is formed over and insulated from (and controls the conductivity of) a first portion of the channel region18, and over a portion of the source region14. A control gate22has a first portion22bthat is disposed over and insulated from (and controls the conductivity of) a second portion of the channel region18, and a second portion22cthat extends up and over the floating gate20. A program/erase gate32has a first portion32adisposed over the source region14and is laterally adjacent to the floating gate20, and a second portion32bthat extends up and over the floating gate20.

The memory cell is erased (where electrons are removed from the floating gate) by placing a high positive voltage on the program/erase gate32, which causes electrons on the floating gate20to tunnel through the intermediate insulation from the floating gate20to the program/erase gate32via Fowler-Nordheim tunneling.

The memory cell is programmed (where electrons are placed on the floating gate) by placing a positive voltage on the control gate22, and a positive voltage on the source region14and a positive voltage on the program/erase gate32. Electron current will flow from the drain16towards the source14. The electrons will accelerate and become heated when they reach the gap between the control gate22and the floating gate20. Some of the heated electrons will be injected through the gate oxide onto the floating gate20due to the attractive electrostatic force from the floating gate20.

The memory cell is read by placing positive read voltages on the drain16and control gate22(which turns on the channel region18under the control gate22). If the floating gate20is positively charged (i.e. erased of electrons and positively coupled to the source14), then the portion of the channel region18under the floating gate20is turned on as well, and current will flow across the channel region18, which is sensed as the erased or “1” state. If the floating gate20is negatively charged (i.e. programmed with electrons), then the portion of the channel region under the floating gate20is mostly or entirely turned off, and current will not flow (or there will be little flow) across the channel region18, which is sensed as the programmed or “0” state.

Example operating voltages can be:

The architecture of the memory array is shown inFIG.8. The memory cells10are arranged in rows and columns. In each column, the memory cells are arranged end to end in mirror fashion, so that they are formed as pairs of memory cells each sharing a common source region14, and each adjacent set of memory cell pairs sharing a common drain region16. All the source regions14for any given row of memory cells are electrically connected together by a source line14a. All the drain regions16for any given column of memory cells are electrically connected together by a bit line16a. All the control gates22for any given row of memory cells are electrically connected together by a control gate line22a. All the program/erase gates32for any given row of memory cells are electrically connected together by a program/erase gate line32a. Therefore, while the memory cells can be individually programmed and read, memory cell erasure is performed by pairs of rows (each pair of rows of memory cells sharing program/erase gates32are erased together, by the application of a high voltage on the program/erase gate line32a).

Recently, new applications for split gate non-volatile memory cells have been developed that require each memory cell to be programmed to specific values (including analog values) for either multibit storage or analog signal storage. Specifically, analog signal storage involves programming memory cells anywhere along a continuous spectrum of program states extending from fully erased to fully programmed. Programming can be performed by programming the memory cells using one or more short program voltage pulses, followed by a program verify operation to confirm the program state of the memory cell. If the cell is insufficiently programmed, one or more additional program pulses are applied. This continues until the program verify operation confirms the cell has achieved the desired program state. The program state corresponds to the number of electrons programmed onto the floating gate. A memory cell in its fully erased state has the lowest possible program state, and will provide the highest read current during a read operation.

The higher the programming state of the memory cell (i.e., the more electrons programmed onto the floating gate20), the lower the read current that will result during the read operation.

The memory cell read current (i.e., the electrical current through the channel region during a read operation) can be adversely affected by memory cell operating temperature. Specifically, if a memory cell is programmed at a relatively low temperature (e.g., around 30 degrees Celsius), then its desired read current is confirmed at an operating temperature of 30 degrees Celsius. However, if a read operation is later performed on the memory cell while operating closer to its highest rated operating temperature (e.g., around 85 degrees Celsius), the read current can be different (i.e., as the operating temperature rises, the read current for a memory cell programmed to a given program state can rise). This increase in read current can be problematic for applications where the memory cells are used for analog signal storage, where accuracy in the read operation is important.

There is a need for a memory cell device that provides compensation for the adverse effects of changing operating temperature.

BRIEF SUMMARY OF THE INVENTION

The aforementioned problems and needs are addressed by method of operating a plurality of memory cells that includes programming respective ones of the plurality of memory cells while at a first temperature to one of a plurality of different program states, wherein respective ones of the different program states are associated with a corresponding first read current value that is confirmed by performing a first read operation using nominal read conditions, determining modified read conditions using a second read operation for at least one of the memory cells while at a second temperature different than the first temperature, such that a second read current for the one memory cell using the modified read conditions in the second read operation is approximately equal to the first read current value for the one memory cell using the nominal read conditions in the first read operation, performing a third read operation on respective ones of the memory cells while at the second temperature using the modified read conditions to determine respective third read current values for the memory cells, determining error read current values for respective ones of the memory cells, which are the respective differences between the first read current values and the third read current values, and for respective ones of a plurality of desired program states, assigning an upper program state and a lower program state to the desired program state. A read current value for the assigned upper program state and a read current value for the assigned lower program state correspond approximately to one of the determined error read current values, and are separated approximately by a target read current value associated with the desired program state.

A memory device includes a plurality of memory cells and circuitry. The circuitry is to program respective ones of the plurality of memory cells while at a first temperature to one of a plurality of different program states, wherein respective ones of the different program states are associated with a corresponding first read current value that is confirmed by a first read operation using nominal read conditions, determine modified read conditions using a second read operation for at least one of the memory cells while at a second temperature different than the first temperature, such that a second read current for the one memory cell using the modified read conditions in the second read operation is approximately equal to the first read current value for the one memory cell using the nominal read conditions in the first read operation, perform a third read operation on respective ones of the memory cells while at the second temperature using the modified read conditions to determine respective third read current values for the memory cells, determine error read current values for respective ones of the memory cells, which are the respective differences between the first read current values and the third read current values, and for respective ones of a plurality of desired program states, assign an upper program state and a lower program state to the desired program state. A read current value for the assigned upper program state and a read current value for the assigned lower program state correspond approximately to one of the determined error read current values, and are separated approximately by a target read current value associated with the desired program state.

DETAILED DESCRIPTION OF THE INVENTION

Disclosed herein is an architecture configuration and techniques for temperature compensation for memory devices with an array of split-gate non-volatile memory cells. The architecture involves pairs of memory cells (each pair of memory cells10A and10B is referred to collectively as “supercell”40), where the read current outputs of the memory cell pair are provided as inputs to a differential sense amplifier42, as shown inFIG.9. The output42aof differential sense amplifier42is based on the amplitude of the signal (i.e., read current) on the positive (+) amplifier input subtracted by the amplitude of the signal (i.e., read current) on the negative (−) amplifier input. The output of Cell10A (i.e., its bit line16a) is connected to the positive (+) amplifier input, and the output of cell10B (i.e., its bit line16a) is connected to the negative (−) amplifier input, whereby the amplitude of the signal on output42aof the differential sense amplifier42is derived from the amplitude of the signal (read current) generated by Cell10A subtracted by the amplitude of the signal (read current) generated by Cell10B. It should be noted that the differential sense amplifier42preferably amplifies the signals on the bit lines (either before or after subtraction), so they are more easily detected and used. Therefore, the amplitude of the signal on output42aneed not be the actual difference between the signals on the bit lines16a, but rather may have an amplified value that is based on (e.g., proportional to, offset relative to, linearly increased relative to, otherwise derived from, without limitation) the difference between the signal amplitudes on bit lines16a. The adverse effects of changing operating temperature can be reduced by storing

a program state in supercell40, as opposed to just in a single memory cell. For example, if it is desired that the program state provide a read current of 4 nA, then Cell10A can be programmed to an upper program state corresponding to 6 nA, and Cell10B can be programmed to a lower program state corresponding to 2 nA. During a subsequent read operation of supercell40, the resulting read current from the supercell40would be 4 nA (6 nA minus 2 nA, where the subtraction can be performed by the differential sense amplifier42). If the programming is performed at room temperature, but the subsequent read operation is performed at an elevated operating temperature, the elevated operating temperature can result in increasing the read currents for both Cell10A and Cell10B, and therefore any increase to the read current for Cell10A can be at least partially offset by any increase to the read current for Cell10B, thus resulting in a lower overall read current increase for the supercell40caused by the temperature increase.

FIG.10illustrates a memory device1with an array of the supercells40operating under the control of a controller44(i.e., controller44is circuitry that controls the other circuits such as row driver46and column driver48, without limitation, that provide the various voltages to various memory array lines such as word lines WL, bit lines BL, and source lines, without limitation, for reading, programming and erasing the memory cells,), with each supercell40including a pair of memory cells10A and10B. The memory cells are arranged in rows and columns, and can be any non-volatile memory cells such as the 2-gate, 3-gate or 4-gate memory cells described above with respect toFIGS.1,3,5and7, that use a floating gate to control current flow through the channel region, including stacked gate memory cells where the floating gate extends along the entire channel region. The memory array includes word lines WL0-WLn (respectively connected to the control gates22of one row of memory cells and connected to row driver46which supplies the operational voltages thereto) and bit lines BL0-BLm (respectively connected to the drain regions16of one column of memory cells and connected to column driver48which supplies the operational voltages thereto). Specifically, bit lines BL0and BL1are respectively connected to the first two columns of memory cells, where respective rows of such cells contains a pair of memory cells10A and10B forming one supercell40. Therefore, there is a column of supercells40connected to bit lines BL0and BL1. There are differential sense amplifiers42-1to42-p, with differential sense amplifier42-1connected to bit lines BL0and BL1(with bit line BL0connected to one of the inputs (e.g., the positive input) of the differential sense amplifier42-1, and bit line BL1connected to the other one of the inputs (e.g., the negative input) of the differential sense amplifier42-1), differential sense amplifier42-2connected to bit lines BL2and BL3, and so on. By activating the appropriate word line WL and bit lines BL, a respective supercell40can be individually programmed and read. For example, placing WL0at the read voltage (with all other word lines held below read voltage), the first row of supercells40can be individually read by differential sense amplifiers42-1to42-p. A temperature sensor56can be included on-chip to measure the temperature of the device during operation, and controller44can be configured to provide temperature compensation during any of the program, read and erase operations.

FIG.11illustrates an alternate example, where the memory device2includes a multiplexer50on the bit lines between the supercells40and the differential sense amplifiers42. The multiplexer50selectively forwards the signals on any two bit lines to one of the differential sense amplifiers. Using a multiplexer allows for fewer differential sense amplifiers than the number of bit line pairs in the array. For example, inFIG.10, where there are m bit lines, there are p differential sense amplifiers, where p is m/2. However, inFIG.11, there are only two differential sense amplifiers for the array, reducing the size, complexity and cost of the device. WhileFIG.11shows two sense amplifiers42connected to the multiplexer50, any number of differential sense amplifiers42can be used, from a single sense amplifier42to as many as m/2 sense amplifiers.

FIG.12illustrates another alternate example, where the memory device3includes sense amplifiers52that individually sense and amplify the bit line voltages during read operations. The sensed voltages are then provided to conversion circuitry54which performs the subtraction of signal values on odd numbered bit lines from signal values on even numbered bit lines (which even numbered bit lines include the 0 bit line), to determine the read values for the supercells40.

Using supercells and differential sense amplifiers to store program states to alleviate the problems of overprogramming is known. See for example U.S. Pat. No. 10,586,598, which is incorporated herein for all purposes. However, it has been discovered by the present inventors that the read current error caused by changes in operating temperature varies as a function of program state. Moreover, the amount of read current error as a function of operating temperature and program state is not a linear function that can be effectively addressed with linear approximations. Therefore, a more effective temperature compensation method has been developed, as shown inFIG.13and described below.

In Block 1, a plurality of memory cells are programmed to different program states while at a first temperature. The first temperature can be confirmed by a temperature sensor56. The program operation includes first read operations using nominal read conditions (i.e., using the nominal voltages used to read the memory cells during normal user operation) to confirm the desired program states have been achieved. As a nonlimiting example, memory cells can be programmed to program states corresponding to target read current values in a range between 1-100 nA, where a first memory cell can be programmed to a first program state corresponding to a read current value of 1 nA, a second memory cell can be programmed to a second program state corresponding to a read current value of 2 nA, and so on up to a hundredth memory cell that can be programmed to a hundredth program state corresponding to a read current value of 100 nA. The first read operations can be used as part of the program operation to confirm the desired first read current values, and thus the desired program states, have been achieved. The first read current values confirmed in the first read operations for the plurality of memory cells can be stored in a table.

In Block 2, the plurality of memory cells are raised to a second temperature (higher than the first temperature). The second temperature can be confirmed by temperature sensor56. Both the first and second temperatures can be within the specified operating range of the memory device during normal user operation. In one example the range of temperatures between the first and second temperatures encompass a broad range covering typical memory device operation. A non-limiting example can have the first temperature be around room temperature such as 30 degrees Celsius, and the second temperature be around an elevated temperature such as 85 degrees Celsius.

In Block 3, modified read conditions are determined using a selected one of the plurality of memory cells programmed in Block 1, whereby the read conditions are modified until a resulting read current value at the second temperature is approximately equal to a corresponding first read current value at the first temperature using the nominal read conditions for the selected memory cell (still at its programmed state of Block 1). This determination is achieved by performing a second read operation on the selected memory cell, where the read conditions of the second read operation are modified relative to the nominal read conditions of the first read operation (i.e., one or more of the read voltages are modified relative to their nominal values) until a second read current value (during the second read operation using modified read conditions at the second temperature) for the selected memory cell is approximately equal to the corresponding first read current value for the selected memory cell (during the first read operation in Block 1 using nominal read conditions at the first temperature). As a non-limiting example, with respect to the four gate memory cell ofFIG.5, the modified read conditions could include a voltage on the coupling gate28that is lower than its nominal voltage, a voltage on the erase gate30that is lower than its nominal voltage, or both. The desired effect here is to use modified read conditions to produce a second read current value at the higher second temperature that matches the first read current value of the first read operation (using nominal read conditions) at the lower first temperature for the same memory cell (at the same program state). More than one of the plurality of memory cells can be selected here, where the determined modified read conditions are averaged.

In one example, the memory cell selected for Block 3 is the memory cell having the highest program state relative to the program states for the other memory cells of the plurality of memory cells programmed in Block 1. As used herein, program state corresponds to the number of electrons programmed onto the floating gate, where the more electrons on the floating gate, the lower the programming state and the lower the read current value; and conversely, the fewer electrons on the floating gate, the higher the programming state and the higher the read current.

In Block 4, third read operations are performed on the plurality of memory cells while at the second temperature using the modified read conditions determined in Block 3 to determine third read current values. The third read current values determined during the third read operations for the plurality of memory cells can be stored in a table.

In Block 5, the read current values of Blocks 1 and 4 are compared to each other to determine error read current values for respective ones of the plurality of memory cells. Specifically, for respective ones of the plurality of memory cells, the read current value from the first read operation in Block 1 (using nominal read conditions) is compared to the corresponding read current value for the respective memory cell from the third read operations in Block 4 (using the modified read conditions determined in Block 3), where the difference between the two values represents the error read current value. The error read current values can be stored in a table.

FIG.14is a graph illustrating the read current error values as a function of first read current value according to one example. In this non-limiting example, Block 1 was performed at a first temperature of 30 degrees Celsius on 100 memory cells programmed between 1 nA and 100 nA in increments of 1 nA, Block 2 was performed by raising the temperature to a second temperature of 85 degrees Celsius, Block 3 was performed using the memory cell having the highest program state (i.e., the memory cell programed to have a 100 nA read current value during nominal read conditions while at the first temperature), and Block 5 was performed using the first read current values and the third read current values from Blocks 1 and 4 respectively. The error read current values inFIG.14reflect absolute error values with some temperature compensation because the third read currents are determined using modified read conditions so that there is no error read current value for the selected memory cell (in this case the memory cell programmed to the program state corresponding to a first read current value of 100 nA). For that first read current value from the one selected memory cell, the third read current value was made to be the same in Block 3, and therefore that is the one first read current value for which the read current error value is zero.

The continuous data curve in the graph ofFIG.14can be generated from the error read current values of Block 5, and used to determine the assignments in Block 6, by, for example, polynomial fitting the error read current values to generate a polynomial equation in the form of y=anXn+an-1xn-1, + . . . +a2x2+a1x+a0, that represents the error read current values determined in Block 5. The polynomial equation can be in the form of continuous function or a discrete function. This equation can be stored on-chip (by storing the polynomial coefficients).

As evident fromFIG.14, the error read current values define a bell-shaped error function that initially starts out low near the first read current value of 1 nA, rises with increasing first read current values with a peak at first read current value of approximately 30 nA, and then drops back down and eventually reaches zero at the first read current value of 100 nA. For any given error read current value below the maximum error read current value (at first read current value of approximately 30 nA), there are two corresponding first read current values having approximately the same error read current value. For example, as shown by the dotted lines inFIG.14, first read current values 14 nA and 56 nA have approximately the same error read current value (e.g. 5 nA). Therefore, assigning 56 nA and 14 nA to individual cells of a supercell to represent a program state corresponding to a read current value of 42 nA (i.e., 56 nA minus 14 nA) would result in less temperature induced error than using other read current values to represent the same read current value of 42 nA.

Once the error function reflected inFIG.14is created (represented either by the error read current values of Block 5 or by a polynomial equation representing those values), it can then be used to assign the upper program state and lower program state pair used by the supercells to store each possible or desired program state. Specifically, in Block 6, for respective ones of the desired program states, an upper program state and a lower program state are assigned (to the desired program state of the supercell) where they (1) correspond to approximately the same error read current value and (2) correspond to read current values separated approximately by the target read current value TRCV (as would be determined using nominal read conditions) for the desired program state (i.e. the difference between the two read current values equals the target read current value TRCV for the desired program state). Using the example above, the upper program state corresponding to a read current value of 56 nA and the lower program state corresponding to a read current value of 14 nA would be assigned to the program state corresponding to a target read current value TRCV of 42 nA. The assignments of Block 6 can be stored in a table. It has been discovered that this assignment methodology results in less temperature induced errors when reading the supercells at different operating temperatures.

FIGS.15-16illustrate an example of assignments that can be generated in Block 6, where there are 32 desired program states (also referred to herein as program state levels), where respective program states have a target read current value TRCV. In this example, the target read current values TRCV for the program states are separated by 3 nA, where the first program state (level 0) corresponds to a target read current value TRCV of 3 nA, the second program state (level 1) corresponds to a target read current value TRCV of 6 nA, and so on up to the 32ndprogram state (level 31) which corresponds to a target read current value TRCV of 96 nA. The upper program states have corresponding read current values Icell+ (representing positive weights w+ of a neural network), the lower program states have corresponding read current values Icell− (representing negative weights w− of a neural network), and the program states have target read current values TRCV (representing final weight w=w+ minus w−). For each assignment of upper and lower program states to a given program state, the difference between corresponding read current values is equal to the target read current value TRCV for the program state, and both the upper and lower program states correspond to approximately the same error read current value determined in Block 5.

As an alternate example, a polynomial fitting can be used to generate a first polynomial equation that represents a continuous data curve for all the Icell+ values, and a second polynomial equation that represents a continuous data curve for all the Icell− values, where these two polynomial equations can be used to generate the upper program state and lower program state assignments in Block 6 instead of using the raw data points or raw data point approximations. The first and second polynomial equations can be in the form of continuous function or a discrete function. This is advantageous for situations where there may not be data points precisely at some of the program state levels.

As another alternate example, as shown inFIG.16, for respective program state levels, there can be a variable common current (Icommon) that is centered between the upper program state read current Icell+ and the lower program state read current Icell− (i.e., for any level, Icommon=(Icell+plus Icell−)/2). Variably common current Icommon can be represented as individual values saved in a table. Or, a polynomial fitting can be used to generate a polynomial equation that represents a continuous data curve for the variable common current (Icommon). The polynomial equation of Icommon can then be used to generate the upper program state and lower program state assignments in Block 6 instead of using the raw data points. For example, for any given program state level having a given target read current value TRCV, the assigned upper program state read current Icell+ would be equal to Icommon+TRCV/2, and the lower program state read current Icell− would be equal to Icommon−TRCV/2. The polynomial equation Icommon can be in the form of continuous function or a discrete function.

FIG.17illustrates user operation, where the supercells40are programmed with user data according to the assignments of Block 6, and later the programmed data is read out. Specifically, for programming a supercell40with user data corresponding to a desired program state (Block 7), one of the memory cells of the supercell40is programmed to the upper program state assigned to the desired program state (Block 8), and the other one of the memory cells of the supercell40is programmed to the lower programming state assigned to the desired program state (Block 9). Programming can include read operation(s), using nominal read conditions, to confirm that the upper program state and lower program state assigned to the desired program state have been achieved. Then, at some time later (Block 10), the user data stored in the supercell40is read out in a read operation using nominal read conditions, in which the difference between the read current values of the memory cell programmed to the upper program state and the memory cell programmed to the lower program state for the supercell is determined (e.g., by using a differential sense amplifier42).

FIG.18illustrates another example, where a reference memory cell60on the same chip as the supercells40is used as the selected memory cell in Block 3 for determining the modified read conditions at the first and second temperatures, instead of using one of the memory cells in the memory array that is later used to store user data. Specifically, the reference memory cell60may have the same configuration as memory cells10, but can be located outside of the memory array containing memory cells10(i.e., with a separate bit line BLR, a separate word line WLR, and separate lines for gates such as control gate28and erase gate30). The reference memory cells60can be programmed to a reference program state while at the first temperature, where the reference program state could be even higher than the program states of the plurality of memory cells programmed in Block 1. The temperature for the reference memory cell60is raised to a second temperature, and the second read operation is performed on the reference memory cell60, where the read conditions of the second read operation are modified relative to the nominal read conditions of the first read operation so that a second read current value for the reference memory cell60is approximately equal to the corresponding first read current value for the reference memory cell60. The advantage of using the reference memory cell60is that it's programming state need not be changed during operation, and the programming state can be higher than any of the nominal programming states used to store user data (i.e., the reference memory cell60could be deeply erased).

It should be noted that any number of the memory cells on a single chip or in a single array can be used for the above described technique, not just the example of 100 memory cells described above, and certainly not necessarily all the memory cells on a given chip. It should be further noted that accuracy can be enhanced by, for example, in Block 1, programming multiple memory cells to each of the different program states (e.g., 8 or 16 memory cells for each of the program states), whereby the determination of the error read current values for each program state in Block 5 can be determined by averaging the third read currents in Block 4 among all the memory cells associated with that program state. Doing so would average out any small cell to cell variations. Accuracy can also be enhanced by performing the first read operation on each memory cell multiple times and averaging the results in Block 1 to confirm the different program states were achieved, as well as performing the third read operation on each memory cell multiple times and averaging the results to determine the third read current values in Block 4 for use in determining the error read current values in Block 5.

This technique can be done once for any particular chip design by characterizing one or more representative samples of the chip and extrapolated to other same or similar chip designs, or the technique can be applied to each individually manufactured chip. The techniques of Blocks 1 and 3-10 can be implemented by the circuitry of controller44.

It is to be understood that the present invention is not limited to the example(s) described above and illustrated herein, but encompasses any and all variations falling within the scope of any claims. For example, references to the present invention herein are not intended to limit the scope of any claim or claim term, but instead merely make reference to one or more features that may be covered by one or more of the claims. Materials, processes and numerical examples described above are exemplary only, and should not be deemed to limit the claims. Single layers of material could be formed as multiple layers of such or similar materials, and vice versa. Lastly, while the conversion circuitry54is shown as being separate from the sense amplifiers52, the conversion circuitry54could be incorporated as part of the sense amplifier circuitry52. Alternately, the conversion circuitry54could be incorporated as part of the controller44. While the supercells are shown as two adjacent memory cells in the same row, the supercells could include two memory cells in different rows. For example, a supercell40could include the memory cell connected to word line WL0and bit line BL0and the memory cell connected to word line WL1and BL1. In fact, the pairing of memory cells to form the super cells40for bit lines BL0and BL1could include pairing any one of the memory cells connected to bit line BL0with any one of the memory cells connected to bit line BL1.