Threshold voltage grouping of memory cells in same threshold voltage range
09536601 ยท 2017-01-03
Assignee
Inventors
Cpc classification
G11C16/3481
PHYSICS
International classification
G11C16/34
PHYSICS
Abstract
A memory cell undergoing programming is determined as belonging to a particular one of a plurality of second threshold voltage ranges that divide a present threshold voltage range of the particular memory cell. Programming pulses are applied to program the particular memory cell to within the target threshold voltage range. At least one of a program voltage and a total duration of the programming pulses applied to the particular memory cell is varied, depending on the particular second threshold voltage range of the memory cell.
Claims
1. A memory device, comprising: a memory array including a plurality of bit lines and a plurality of memory cells storing a same data value; a plurality of memory access circuits coupled to the plurality of bit lines in the memory array, the plurality of bit lines coupled to the plurality of memory cells, the plurality of memory access circuits including a plurality of sense nodes selectively coupled to the plurality of bit lines to read and program data via the plurality of bit lines; and control circuitry programming the plurality of memory cells, the plurality of memory cells storing the same data value prior to said programming by the control circuitry, said programming by the control circuitry including: regarding the plurality of memory cells occupying a first threshold voltage range, characterizing memory cells in the plurality of memory cells as belonging to particular threshold voltage subranges in a plurality of threshold voltage subranges that divide the first threshold voltage range; storing the particular threshold voltage subranges in the plurality of threshold voltage subranges, to which the memory cells in the plurality of memory cells belong, in memory coupled to the plurality of memory access circuits; and applying programming pulses to program the plurality of memory cells, the programming pulses having magnitudes that vary depending on the particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong.
2. The device of claim 1, wherein said programming by the control circuitry includes: prior to said characterizing the memory cells and prior to said applying the programming pulses, applying no early programming pulses to the plurality of memory cells.
3. The device of claim 1, wherein said programming by the control circuitry includes: storing respective target threshold voltage ranges of the plurality of memory cells in the plurality of memory access circuits.
4. The device of claim 1, wherein said magnitudes of the programming pulses also depend on respective target threshold voltage ranges of the memory cells in the plurality of memory cells.
5. The device of claim 4, wherein one or more program verify periods of one or more target threshold voltage ranges are skipped, responsive to said one or more program verify periods not characterizing any of the plurality of memory cells.
6. The device of claim 4, wherein said programming pulses are divided into a plurality of discrete programming periods dedicated to a plurality of combinations of the plurality of threshold voltage subranges and the respective target threshold voltage ranges.
7. The device of claim 1, wherein memory cells of the plurality of memory cells have a same target threshold voltage range.
8. The device of claim 1, wherein memory cells of the plurality of memory cells have different target threshold voltage ranges.
9. A memory device, comprising: a memory array including a plurality of bit lines and a plurality of memory cells storing a same data value; and control circuitry programming the plurality of memory cells, the plurality of memory cells storing the same data value prior to said programming by the control circuitry, said programming by the control circuitry including: regarding the plurality of memory cells occupying a first threshold voltage range, characterizing memory cells in the plurality of memory cells as belonging to particular threshold voltage subranges in a plurality of threshold voltage subranges that divide the first threshold voltage range; and applying programming pulses to program the plurality of memory cells, the programming pulses having magnitudes that vary depending on the particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong, wherein said programming by the control circuitry includes: prior to said characterizing the memory cells and prior to said applying the programming pulses, applying at least one early programming pulse to the plurality of memory cells to establish threshold voltages in said first threshold voltage range.
10. The device of claim 9, further comprising: a plurality of memory access circuits coupled to a plurality of bit lines in the memory array, the plurality of bit lines coupled to the plurality of memory cells, the plurality of memory access circuits including a plurality of sense nodes selectively coupled to the plurality of bit lines to read and program data via the plurality of bit lines, wherein said programming by the control circuitry includes: storing the particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong in the plurality of memory access circuits.
11. The device of claim 9, wherein said programming by the control circuitry includes: prior to said characterizing, characterizing an upper boundary of the first threshold voltage range.
12. The device of claim 9, wherein said programming by the control circuitry includes: prior to said characterizing, characterizing a lower boundary of the first threshold voltage range.
13. The device of claim 9, wherein said programming by the control circuitry includes: prior to said characterizing, characterizing a peak of the first threshold voltage range.
14. A method of programming memory, comprising: receiving a program instruction at an integrated circuit to program a plurality of memory cells storing a same data value; then regarding the plurality of memory cells occupying a first threshold voltage range, characterizing memory cells in the plurality of memory cells as belonging to particular threshold voltage subranges in a plurality of threshold voltage subranges that divide the first threshold voltage range; storing the particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong; and then applying programming pulses to program the plurality of memory cells, the programming pulses having magnitudes that vary depending on the stored particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong.
15. The method of claim 14, further comprising: prior to said characterizing, applying at least one early programming pulse to the plurality of memory cells to establish threshold voltages in said first threshold voltage range; and characterizing an upper boundary of the first threshold voltage range.
16. The method of claim 14, further comprising: prior to said characterizing, applying at least one early programming pulse to the plurality of memory cells to establish threshold voltages in said first threshold voltage range; and characterizing a lower boundary of the first threshold voltage range.
17. The method of claim 14, wherein said magnitudes of the programming pulses also depend on respective target threshold voltage ranges of the memory cells in the plurality of memory cells.
18. The method of claim 17, wherein one or more program verify periods of one or more target threshold voltage ranges are skipped, responsive to said one or more program verify periods not characterizing any of the plurality of memory cells.
19. The method of claim 17, wherein said programming pulses are divided into a plurality of discrete programming periods dedicated to a plurality of combinations of the plurality of threshold voltage subranges and the respective target threshold voltage ranges.
20. A memory device, comprising: a memory array including a plurality of bit lines and a plurality of memory cells storing a same data value; and control circuitry programming the plurality of memory cells, the plurality of memory cells storing the same data value prior to said programming by the control circuitry, said programming by the control circuitry including: regarding the plurality of memory cells occupying a first threshold voltage range, characterizing memory cells in the plurality of memory cells as belonging to particular threshold voltage subranges in a plurality of threshold voltage subranges that divide the first threshold voltage range; and applying programming pulses to program the plurality of memory cells, the programming pulses having magnitudes that vary depending on the particular threshold voltage subranges in the plurality of threshold voltage subranges to which the memory cells in the plurality of memory cells belong, wherein consecutive programming pulses are applied between any two adjacent program verify pulses.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
DETAILED DESCRIPTION
(17)
(18) Shown are a sequence of program and program verify pulses of a program operation. In a single iteration of program and program verify pulses, the different memory cell groups A and B receive program pulses, program pulse 2 for group A and program pulse 4 for group B. After the pulses are applied to the different memory cell groups, program verify 6 is performed for the different memory cell groups A and B. As shown in more detail in connection with other figures, the different memory cell groups A and B are associated with memory cells which began in the same threshold voltage range that represents a same data value. The memory cells can be SLC (single level cell or 1 bit), MLC (multi-level cell or 2 bits), TLC (triple level cell or 3 bits), or more bits.
(19) The magnitude of program pulse 2 for group A rises with subsequent iterations, and program pulse 4 for group 4 rises with subsequent iterations. In another embodiment, the word line voltage magnitude can remain the same, or follow another pattern other than strictly increasing magnitude. The magnitude of program verify pulses does not rise with subsequent iterations.
(20)
(21) To account for threshold voltage variations among memory cells, and the program and erase behavior of memory cells that varies with the number of program and erase cycles, the program operation allows for a varying number, varying voltage magnitude, and/or varying duration of program pulses to be applied in a program operation. A pulse indicates a signal applied for some duration, and does not limit the shape of the signal waveform.
(22) Threshold voltage distribution 8 represents memory cells that begin with a same data value stored on the memory cells, represented by stored threshold voltages within a beginning threshold voltage range. A first pulse, referred to as Program 1, applied to the memory cells with threshold voltage distribution 8 results in memory cells with threshold voltage distributions 10 and 12. This pulse is referred to as a first pulse for naming convenience, and can be the initial program pulse applied in a program operation, or a pulse subsequent to the initial program pulse applied in a program operation.
(23) In combination, threshold voltage distributions 10 and 12 represent the memory cells which began the program operation with threshold voltage distribution 8 representing a same data value stored in the memory cells, and experienced the first program pulse. Threshold voltage distributions 10 and 12 respectively have a lower threshold voltage range and a higher threshold voltage range.
(24) In the event that the memory cells are MLC (multi-level cell or 2 bits), TLC (triple level cell or 3 bits), or some other multi-bit memory cell, the initial threshold voltage distribution 8 can be the lowest magnitude erased threshold voltage distribution, or any other threshold voltage distribution other than the highest magnitude most programmed threshold voltage distribution. As the target threshold voltage distribution, the program operation can specify the next higher magnitude threshold voltage distribution, the highest magnitude threshold voltage distribution, or any other threshold voltage distribution in between. The program operation can also specify different destination threshold voltage distributions for different memory cells.
(25)
(26) Memory cells in threshold voltage distribution 10 undergo a sequence of program pulses, referred to as Program 2a, to raise the distribution's magnitude past the program verify voltage. Generally, with subsequent pulses, the distribution's magnitude rises and the distribution's width narrows.
(27)
(28) Memory cells in threshold voltage distribution 12 undergo a sequence of program pulses, referred to as Program 2b, to raise the distribution's magnitude past the program verify voltage. Generally, with subsequent pulses, the distribution's magnitude rises and the distribution's width narrows.
(29) Comparing
(30)
(31) The first program pulse, referred to as Program 1, applied to the memory cells with threshold voltage distribution 8 results in memory cells with threshold voltage distributions 10 and 12. A sequence of program pulses, referred to as Program 2, raises the threshold voltage distributions 10 and 12 to their target distribution past the program verify voltage. The sequence of program pulses, referred to as Program 2, actually includes two sequences of program pulses, Program 2a applied to threshold voltage distribution 10, and Program 2b applied to threshold voltage distribution 12.
(32)
(33) In
(34) In
(35) In
(36) In other embodiments, more than one target threshold voltage range exists, with a corresponding number of verify pulses equal to the number of target threshold voltage ranges.
(37)
(38) Threshold voltage distribution 18 represents memory cells that begin with a same data value stored on the memory cells, represented by stored threshold voltages within a beginning threshold voltage range.
(39) As memory cells undergo an increasing number of program and erase cycles, the program and erase behavior changes. For example, a program pulse applied to a memory cell with relatively many program and erase cycles can cause a relatively large threshold voltage shift, resulting in threshold voltage distribution 20. The same program pulse applied to a memory cell with relatively few program and erase cycles can cause a relatively small threshold voltage shift, resulting in threshold voltage distribution 22.
(40) This difference in the behavior of threshold voltage shift can be accounted for by changing the threshold voltage ranges defining the groups of memory cells, as discussed in connection with
(41)
(42) In
(43) In
(44) In some embodiments, the first pulse results in the at least part of the threshold voltage range exceeding the program verify voltage PV.
(45) Comparing threshold voltage distributions 20 and 22, the potential range of threshold positions can vary significantly, such that the threshold voltage ranges defining the groups also vary significantly. In some embodiments, the groups are defined without a first program pulse, although this reduces the accuracy and effectiveness of the groups.
(46)
(47) In
(48) In
(49) In
(50) The number of threshold voltage ranges can be a power of 2 represented by a number of bits equal to the power of 2, or another number other than a power of 2.
(51)
(52) In
(53) In
(54) Comparing
(55)
(56) At 30, the boundary search begins for the upper boundary of the threshold voltage distribution of memory cells, after a first program pulse or a first program shot applied to memory cells of a threshold voltage distribution representing memory cells that begin with a same data value stored on the memory cells. Other embodiments search for the lower boundary and/or the peak. An example is shown in
(57) In the shown process flow, a coarse resolution search is followed by a fine resolution search. In other embodiments, a single search is performed, or 3 or more searches of varying resolutions are performed. More searches increase the precision of the final result, but at the cost of increased duration. Fewer searches shorten the duration, at the cost of worsened precision.
(58) An example of a low or coarse resolution search for the upper boundary of the threshold voltage distribution of memory cells is shown at
(59) At 36, it is determined whether any memory cells in the threshold voltage distribution have a threshold voltage less than the chosen sensing threshold voltage. If not, then the process flow continues to 38. In terms of
(60) At 38, it is determined whether the chosen sensing threshold voltage is the last the sensing voltage to be chosen. If not, then the process flow continues to 40. If yes, then the process flow continues to 42.
(61) At 40, a new sensing threshold voltage is chosen. In terms of
(62) At 42, the chosen sensing threshold voltage from the final low resolution search is saved. In terms of
(63) At 44, the high resolution search begins. An initial sensing threshold voltage is chosen for the high resolution search. At 46, sensing is performed at the chosen sensing threshold voltage.
(64) At 48, it is determined whether any memory cells in the threshold voltage distribution have a threshold voltage less than the chosen sensing threshold voltage. If not, then the process flow continues to 50. In terms of
(65) At 50, it is determined whether the chosen sensing threshold voltage is the last the sensing voltage to be chosen. If not, then the process flow continues to 52. If yes, then the process flow continues to 54.
(66) At 52, a new sensing threshold voltage is chosen. In terms of
(67) At 54, the chosen sensing threshold voltage from the final high resolution search is saved. In terms of
(68) At 56, the threshold voltage range groups are defined. In terms of
(69) At 58, the memory cells are categorized into the different memory cell groups defined at 56.
(70)
(71) Nonvolatile memory array 60 is coupled to a set of bit lines, including bit line 1 62, bit line 2 64, and bit line N 66. Each of the bit lines is coupled to a corresponding page buffer. Bit line 1 62 is coupled to page buffer 1 68. Bit line 2 64 is coupled to page buffer 2 70. Bit line N 66 is coupled to page buffer N 72. The page buffers are memory access circuits with sense nodes selectively coupled to the bit lines to read and program data of the memory cells. The page buffers store memory cell threshold voltage group data.
(72)
(73) Node BLI 74 indicates the bit line and is coupled to node SENA 78 via p-type transistor 76 receiving signal BLC. Node SENA 78 is coupled to node VPG/VSS 84 via p-type transistor 82 receiving signal BLK. Node SENA 78 is coupled to node SEN 92 via p-type transistor 80 receiving signal BLCI. Node SEN 92 is coupled to node VPG/VSS 88 via p-type transistor 86 receiving signal DCH. Node SEN 92 is coupled to signal CLK via a capacitor. P-type transistor 94 has a gate coupled to node SEN 92, a first current carrying terminal coupled to node INV 100 and a second current carrying terminal coupled to p-type transistor 96. P-type transistor 96 has a gate receiving signal STBP, a first current carrying terminal coupled to p-type transistor 94, and a second current carrying terminal coupled to VPG 98. Node SEN 92 is coupled to node INV 100 via p-type transistor 102 receiving signal PASS.
(74) Node INV is coupled to 5 latches SDL 104, MDL 114, DDL 132, ODL 142, and BDL 152. Latch SDL 104 includes complementary nodes SLB 106 and SL 108. Node SLB 106 is coupled to node INV 100 via p-transistor 110 receiving signal PSLB. Node SL 108 is coupled to node INV 100 via p-transistor 112 receiving signal PSL.
(75) Latch MDL 114 includes complementary nodes MLB 116 and ML 118. Node MLB 116 is coupled to node INV 100 via p-transistor 120 receiving signal PMLB. Node ML 118 is coupled to node INV 100 via p-transistor 122 receiving signal PML.
(76) Node MLB 116 is coupled to DBUSB 128 via n-type transistor 124 receiving signal CNB. Node ML 118 is coupled to DBUS 130 via n-type transistor 126 receiving signal CNB.
(77) Latch DDL 132 includes complementary nodes DLB 134 and DL 136. Node DLB 134 is coupled to node INV 100 via p-transistor 138 receiving signal PDLB. Node DL 136 is coupled to node INV 100 via p-transistor 140 receiving signal PDL.
(78) Latch ODL 142 includes complementary nodes OLB 144 and OL 146. Node OLB 146 is coupled to node INV 100 via p-transistor 148 receiving signal POLB. Node OL 146 is coupled to node INV 100 via p-transistor 150 receiving signal POL.
(79) Latch BDL 152 includes complementary nodes BLB 154 and BL 156. Node BLB 154 is coupled to node INV 100 via p-transistor 158 receiving signal PBLB. Node BL 156 is coupled to node INV 100 via p-transistor 160 receiving signal PBL.
(80)
(81) Memory cells are divided into multiple groups such as G0, G1, G2, G3 of different threshold voltage ranges. The combination of the groups can be memory cells after an initial program pulse, such as in
(82)
(83) First, all the memory cells in group G0 are programmed, then memory cells in group G1, memory cells in group G2, and memory cells in group G3. Within each group, first memory cells are programmed to target threshold voltage range with program verify voltage PV1, then PV2, and then PV3. Other embodiments can skip combinations of groups and target threshold voltages that fail to characterize any of the memory cells undergoing programming. The word line voltage generally decreases.
(84) After all memory cells are programmed, program is performed for the different target threshold voltage ranges with program verify voltage PV1, then PV2, and then PV3. Other embodiments can skip program verify voltages that fail to characterize any of the memory cells undergoing programming. The word line voltage generally increases.
(85) In other embodiments, the memory cells can be programmed in different order and verified in different order.
(86) The following discussion about
(87) Step 1. Preset MBL
(88) VPG.fwdarw.BLI. Node VPG 98 couples to node BLI 74.
(89) Step 2. Setup MBL & SEN
(90) BLI.fwdarw.VSS. Node BLI 74 couples to signal VSS 88.
(91) Step 3. SEN clocking low, sensing. Signal CLK 90 goes low. Node SEN 92 senses the memory cell current.
(92) For VGG1 group_1 sensing, SEN 0000.fwdarw.1000
(93) For VGG2 group_2 sensing, SEN 0000.fwdarw.1100
(94) For VGG3 group_3 sensing SEN 0000.fwdarw.1110
(95) Step 4. SEN clocking high. Signal CLK 90 goes high. Transistor 80 turns off, decoupling node SEN 92 from node SENA 78.
(96) Step 5. Strobe BLB. Selectively couple VPG 98 to BDL 152 or ODL 142.
(97) VGG1 group_1 sensing BLB 0000.fwdarw.0111
(98) VGG2 group_2 sensing OLB 0000.fwdarw.0011
(99) VGG3 group_3 sensing BL 1000.fwdarw.1001
(100) The following discussion about
(101) Step 1. Reset DDL latch. Couple DDL latch 132 to VPG 98.
(102) Step 2. Set DDL latch.
(103) Step 2a. Move data from MDL latch 114 to SEN node 92.
(104) G0toPV3 MLB.fwdarw.SEN 0110
(105) G0toPV2 ML.fwdarw.SEN 1001
(106) G0toPV1 ML.fwdarw.SEN 1001
(107) G1toPV3 MLB.fwdarw.SEN 0110
(108) G1toPV2 ML.fwdarw.SEN 1001
(109) G1toPV1 ML.fwdarw.SEN 1001
(110) G2toPV3 MLB.fwdarw.SEN 0110
(111) G2toPV2 ML.fwdarw.SEN 1001
(112) G2toPV1 ML.fwdarw.SEN 1001
(113) G3toPV3 MLB.fwdarw.SEN 0110
(114) G3toPV2 ML.fwdarw.SEN 1001
(115) G3toPV1 ML.fwdarw.SEN 1001
(116) Step 2b. Move data from SEN node 92 to DDL latch 132.
(117) G0toPV3 SEN.fwdarw.DLB from 0000 to 1001
(118) G0toPV2 SEN.fwdarw.DLB from 0000 to 0110
(119) G0toPV1 SEN.fwdarw.DLB from 0000 to 0110
(120) G1toPV3 SEN.fwdarw.DLB from 0000 to 1001
(121) G1toPV2 SEN.fwdarw.DLB from 0000 to 0110
(122) G1toPV1 SEN.fwdarw.DLB from 0000 to 0110
(123) G2toPV3 SEN.fwdarw.DLB from 0000 to 1001
(124) G2toPV2 SEN.fwdarw.DLB from 0000 to 0110
(125) G2toPV1 SEN.fwdarw.DLB from 0000 to 0110
(126) G3toPV3 SEN.fwdarw.DLB from 0000 to 1001
(127) G3toPV2 SEN.fwdarw.DLB from 0000 to 0110
(128) G3toPV1 SEN.fwdarw.DLB from 0000 to 0110
(129) Step 2c. Move data from SDL latch 104 to SEN node 92.
(130) G0toPV3 SLB.fwdarw.SEN 0011
(131) G0toPV2 SLB.fwdarw.SEN 0011
(132) G0toPV1 SL.fwdarw.SEN 1100
(133) G1toPV3 SLB.fwdarw.SEN 0011
(134) G1toPV2 SLB.fwdarw.SEN 0011
(135) G1toPV1 SL.fwdarw.SEN 1100
(136) G2toPV3 SLB.fwdarw.SEN 0011
(137) G2toPV2 SLB.fwdarw.SEN 0011
(138) G2toPV1 SLB.fwdarw.SEN 0011
(139) G3toPV3 SLB.fwdarw.SEN 0011
(140) G3toPV2 SLB.fwdarw.SEN 0011
(141) G3toPV1 SL.fwdarw.SEN 1100
(142) Step 2d. Move data from SEN node 92 to DDL latch 132.
(143) G0toPV3 SEN.fwdarw.DL 0110 to 1110
(144) G0toPV2 SEN.fwdarw.DL 1001 to 1101
(145) G0toPV1 SEN.fwdarw.DL 1001 to 1011
(146) G1toPV3 SEN.fwdarw.DL 0110 to 1110
(147) G1toPV2 SEN.fwdarw.DL 1001 to 1101
(148) G1toPV1 SEN.fwdarw.DL 1001 to 1011
(149) G2toPV3 SEN.fwdarw.DL 0110 to 1110
(150) G2toPV2 SEN.fwdarw.DL 1001 to 1101
(151) G2toPV1 SEN.fwdarw.DL 1001 to 1101
(152) G3toPV3 SEN.fwdarw.DL 0110 to 1110
(153) G3toPV2 SEN.fwdarw.DL 1001 to 1101
(154) G3toPV1 SEN.fwdarw.DL 1001 to 1011
(155) Note that 1110 correspond to PV3, 1101 to PV2, and 1011 to PV1.
(156) Step 2e. Move data from BDL latch 154 to SEN node 92.
(157) G0toPV3 BL.fwdarw.SEN 1001
(158) G0toPV2 BL.fwdarw.SEN 1001
(159) G0toPV1 BL.fwdarw.SEN 1001
(160) G1toPV3 BLB.fwdarw.SEN 0110
(161) G1toPV2 BLB.fwdarw.SEN 0110
(162) G1toPV1 BLB.fwdarw.SEN 0110
(163) G2toPV3 BLB.fwdarw.SEN 0110
(164) G2toPV2 BLB.fwdarw.SEN 0110
(165) G2toPV1 BLB.fwdarw.SEN 0110
(166) G3toPV3 BL.fwdarw.SEN 1001
(167) G3toPV2 BL.fwdarw.SEN 1001
(168) G3toPV1 BL.fwdarw.SEN 1001
(169) Step 2f. Move data from SEN node 92 to DDL latch 132.
(170) G0toPV3 SEN.fwdarw.DL xxxx to x11x
(171) G0toPV2 SEN.fwdarw.DL xxxx to x11x
(172) G0toPV1 SEN.fwdarw.DL xxxx to x11x
(173) G1toPV3 SEN.fwdarw.DL xxxx to 1xx1
(174) G1toPV2 SEN.fwdarw.DL xxxx to 1xx1
(175) G1toPV1 SEN.fwdarw.DL xxxx to 1xx1
(176) G2toPV3 SEN.fwdarw.DL xxxx to 1xx1
(177) G2toPV2 SEN.fwdarw.DL xxxx to 1xx1
(178) G2toPV1 SEN.fwdarw.DL xxxx to 1xx1
(179) G3toPV3 SEN.fwdarw.DL xxxx to x11x
(180) G3toPV2 SEN.fwdarw.DL xxxx to x11x
(181) G3toPV1 SEN.fwdarw.DL xxxx to x11x
(182) Step 2g. Move data from ODL latch 142 to SEN node 92.
(183) G0toPV3 OL.fwdarw.SEN 1100
(184) G0toPV2 OL.fwdarw.SEN 1100
(185) G0toPV1 OL.fwdarw.SEN 1100
(186) G1toPV3 OL.fwdarw.SEN 1100
(187) G1toPV2 OL.fwdarw.SEN 1100
(188) G1toPV1 OL.fwdarw.SEN 1100
(189) G2toPV3 OLB.fwdarw.SEN 0011
(190) G2toPV2 OLB.fwdarw.SEN 0011
(191) G2toPV1 OLB.fwdarw.SEN 0011
(192) G3toPV3 OLB.fwdarw.SEN 0011
(193) G3toPV2 OLB.fwdarw.SEN 0011
(194) G3toPV1 OLB.fwdarw.SEN 0011
(195) Step 2h. Move data from SEN node 92 to DDL latch 132.
(196) G0toPV3 SEN.fwdarw.DL x11x to x111
(197) G0toPV2 SEN.fwdarw.DL x11x to x111
(198) G0toPV1 SEN.fwdarw.DL x11x to x111
(199) G1toPV3 SEN.fwdarw.DL 1xx1 to 1x11
(200) G1toPV2 SEN.fwdarw.DL 1xx1 to 1x11
(201) G1toPV1 SEN.fwdarw.DL 1xx1 to 1x11
(202) G2toPV3 SEN.fwdarw.DL 1xx1 to 11x1
(203) G2toPV2 SEN.fwdarw.DL 1 xx1 to 11x1
(204) G2toPV1 SEN.fwdarw.DL 1xx1 to 11x1
(205) G3toPV3 SEN.fwdarw.DL x11x to 111x
(206) G3toPV2 SEN.fwdarw.DL x11x to 111x
(207) G3toPV1 SEN.fwdarw.DL x11x to 111x
(208) Step 3. Program. Move data from DDL latch 132 to SEN node 92.
(209) G0toPV3 DL.fwdarw.SEN x111
(210) G0toPV2 DL.fwdarw.SEN x111
(211) G0toPV1 DL.fwdarw.SEN x111
(212) G1toPV3 DL.fwdarw.SEN 1x11
(213) G1toPV2 DL.fwdarw.SEN 1x11
(214) G1toPV1 DL.fwdarw.SEN 1x11
(215) G2toPV3 DL.fwdarw.SEN 11x1
(216) G2toPV2 DL.fwdarw.SEN 11x1
(217) G2toPV1 DL.fwdarw.SEN 11x1
(218) G3toPV3 DL.fwdarw.SEN 111x
(219) G3toPV2 DL.fwdarw.SEN 111x
(220) G3toPV1 DL.fwdarw.SEN 111x
(221) Note that G0 corresponds to x111, G1 to 1x11, G2 to 11x1, and G3 to 111x.
(222)
(223) An integrated circuit 250 includes a memory array 200. A word line decoder and word line drivers 201 is coupled to, and in electrical communication with, a plurality of word lines 202, and arranged along rows in the memory array 200. A bit line decoder and drivers 203 are coupled to and in electrical communication with a plurality of bit lines 204 arranged along columns in the memory array 200 for reading data from, and writing data to, the memory cells in the memory array 200. Addresses are supplied on bus 205 to the word line decoder and drivers 201 and to the bit line decoder 203. Sense amplifiers which are coupled to transistors bias as resistors as disclosed herein, and data-in structures in block 206, are coupled to the bit line decoder 203 via the bus 207. Data is supplied via the data-in line 211 from input/output ports on the integrated circuit 250, to the data-in structures in block 206. Data is supplied via the data-out line 215 from the sense amplifiers in block 206 to input/output ports on the integrated circuit 250, or to other data destinations internal or external to the integrated circuit 250. Program, erase, and read bias arrangement state machine circuitry 209 responds to a program command by performing program and program verify operations.
(224) The circuitry 209 can perform: categorizing a particular memory cell as belonging to a particular threshold voltage range of a plurality of threshold voltage ranges, the plurality of threshold voltage ranges dividing a present threshold voltage range of a particular memory cell; and applying programming pulses to program the particular memory cell to within the target threshold voltage range, and varying at least one of a program voltage and a total duration of the programming pulses applied to the particular memory cell depending on the particular threshold voltage range of the particular memory cell.
(225) The circuitry 209 can perform also: identifying a largest magnitude threshold voltage search range occupied by the largest magnitude threshold voltage stored by the plurality of memory cells, the largest magnitude threshold voltage search range in a plurality of threshold voltage search ranges dividing a first threshold voltage search range; and applying programming pulses to program the plurality of memory cells to within respective target threshold voltage ranges, and varying at least one of a program voltage and a total duration of the programming pulses applied to the plurality of memory cells depending at least on the largest magnitude threshold voltage search range occupied by the largest magnitude threshold voltage stored by the plurality of memory cells.
(226) The circuitry 209 can perform also apply a different number of program pulse numbers in view of different program verify levels, eliminating surplus program pulses necessary to program different parts of the beginning threshold voltage distribution to the target, ex: there are G0toPV3, G0toPV2, G0toPV1, G1toPV3, G1toPV2, G1toPV1, G2toPV3, G2toPV2, G2toPV1, G3toPV3, G3toPV2, G3toPV1. Example embodiments include program pulse before program verify (using
(227) The circuitry 209 can perform also, other features disclosed herein.
(228) While the present invention is disclosed by reference to the preferred embodiments and examples detailed above, it is to be understood that these examples are intended in an illustrative rather than in a limiting sense. It is contemplated that modifications and combinations will readily occur to those skilled in the art, which modifications and combinations will be within the spirit of the invention and the scope of the following claims.