CN102483953B - 检测对非易失性储存器的编程的完成 - Google Patents

检测对非易失性储存器的编程的完成 Download PDF

Info

Publication number
CN102483953B
CN102483953B CN201080027960.7A CN201080027960A CN102483953B CN 102483953 B CN102483953 B CN 102483953B CN 201080027960 A CN201080027960 A CN 201080027960A CN 102483953 B CN102483953 B CN 102483953B
Authority
CN
China
Prior art keywords
group
volatile storage
storage unit
storage element
programmed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080027960.7A
Other languages
English (en)
Other versions
CN102483953A (zh
Inventor
格里特·扬·赫明克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of CN102483953A publication Critical patent/CN102483953A/zh
Application granted granted Critical
Publication of CN102483953B publication Critical patent/CN102483953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

一组非易失性储存元件经受编程处理以便存储数据。在编程处理期间,执行一个或更多个验证操作(Vvz、Vvb、Vvc),以确定非易失性储存元件是否达到其目标条件来存储适当的数据。当所有非易失储存元件达到其目标电平时、或当尚未达到其目标电平的非易失性储存元件的数量小于在读取操作(或其它操作)期间可以使用错误校正处理校正的存储单元的数量时,可以停止编程。可以通过对尚未达到不同于(例如,低于)目标电平的条件(VvIc)的非易失性储存元件的数量进行计数,来估计尚未达到其目标电平的非易失性储存元件的数量。

Description

检测对非易失性储存器的编程的完成
技术领域
本发明涉及一种用于非易失性储存器的技术。
背景技术
半导体存储装置变得更普及地在各种电子装置中使用。例如,非易失性半导体存储器用在蜂窝电话、数字摄像装置、个人数字助理、移动计算装置、非移动计算装置以其它装置中。电可擦除可编程只读存储器(EEPROM)和闪存包括在最普及的非易失性半导体存储器中。
EEPROM和闪存两者均利用浮栅,该浮栅位于半导体基底中的沟道区域之上并与其绝缘。浮栅位于源区和漏区之间。控制栅设置于浮栅之上并与其绝缘。通过在浮栅上保持的电荷量来控制晶体管的阈值电压。即,通过浮栅上的电荷的水平,来控制在晶体管接通之前必须施加到控制栅、以允许其源和漏之间的导通的最小电压量。
当对EEPROM或闪存装置进行编程时,通常编程电压施加到控制栅,并且位线接地。来自沟道的电子注入到浮栅。当电子在浮栅中积累时,浮栅变得负充电,并且存储单元的阈值电压提高,使得存储单元处于编程状态。可以在题为“Source Side Self Boosting Technique For Non-VolatileMemory”的美国专利6,859,397和题为“Detecting Over ProgrammedMemory”的美国专利6,917,542中得到关于编程的更多信息,通过引用将这两个专利的全部内容合并于此。
一些EEPROM和闪存装置具有用来存储两个电荷范围的浮栅,因此存储单元可以在两个状态(对应于数据“1”和数据“0”的擦除状态和编程状态)之间编程/擦除。这样的装置被称为二进制或两态装置。
通过识别多个、明显允许的阈值电压范围,来实现多态闪存单元。每个明显的阈值电压范围对应于一组数据位的预定值。被编程到存储单元的数据和单元的阈值电压范围之间的具体关系取决于存储单元采用的数据编码方案。例如,美国专利第6,222,762号和美国专利申请公布第2004/0255090号(通过引用将这两者的全部内容合并于此)描述了用于多态闪存单元的各种数据编码方案。
在一些实施例中,施加到控制栅的编程电压包括一系列脉冲,其中每个相继脉冲在幅值上增加预定步进尺寸(例如,0.2V、0.3V、0.4V或其它)。在脉冲之间,存储系统将验证各个存储单元是否达到了它们各自的目标阈值电压范围。已达到其目标阈值电压的那些存储单元将被锁定而不进行进一步编程(例如,通过将位线电压提高至Vdd)。当所有存储单元达到其目标阈值电压范围时,完成编程。
附图说明
图1是NAND单列的顶视图。
图2是NAND单列的等效电路图。
图3是非易失性存储系统的框图。
图4是描绘感测块的一个实施例的框图。
图5A是描绘存储阵列的一个实施例的框图。
图5B描绘了数据页。
图6描绘了阈值电压分布的示例组并且描述了用于对非易失性存储器进行编程的处理。
图7描绘了阈值电压分组的示例组并且描述了用于对非易失性存储器进行编程的处理。
图8A-8C示出了各种阈值电压分布并且描述了用于对非易失性存储器进行编程的处理。
图9是描绘一个实施例中对非易失性存储器进行编程的顺序的表格。
图10描绘了阈值电压分布的示例组并且描述了用于对非易失性存储器进行编程的处理。
图11A-11I示出了各种阈值电压分布并且描述了用于对非易失性存储器进行编程的处理。
图12是描述用于对非易失性存储器进行操作的处理的一个实施例的流程图。
图13是描述用于对非易失性存储器进行编程的处理的一个实施例的流程图。
图14-17描绘了非易失性存储器的一个实施例的控制栅信号。
图18描绘了阈值电压分布的示例组。
图19描绘了一个示例阈值电压分布。
图20-23描绘了非易失性存储器的一个实施例的控制栅信号。
图24是描述用于对非易失性存储器进行编程的处理的一个实施例的流程图。
图25是描述用于对非易失性存储器进行编程的处理的一个实施例的流程图。
图26A、26B以及26C描绘了作为粗略/精细编程的一部分执行的编程处理的一个实施例。
图27A、27B以及27C描绘了作为粗略/精细编程的一部分执行的编程处理的一个实施例。
具体实施方式
在非易失性储存系统中,一组非易失性储存元件经受编程处理以便存储一组数据。当所有非易失储存元件达到其目标电平时、或当尚未达到其目标电平的非易失性储存元件的数量小于在读取操作(或其它操作)期间可以使用错误校正处理校正的存储单元的数量时,可以停止编程。可以通过对尚未达到不同于目标电平的条件的非易失性储存元件的数量进行计数,来估计尚未达到其目标电平的非易失性储存元件的数量。
非易失性储存系统的一个示例是使用NAND结构的闪存系统,该NAND结构包括夹在两个选择栅之间、串行布置多个晶体管。串行的晶体管和选择栅被称为NAND单列。图1是示出一个NAND单列的顶视图。图2是其等效电路。在图1和图2中绘制的NAND单列包括夹在(漏侧)选择栅120和(源侧)选择栅122之间的、串行的四个晶体管100、102、104以及106。选择栅120将NAND单列经由位线触点126连接到位线。选择栅122将NAND单列连接到源线128。通过向选择线SGD施加适当的电压来控制选择栅120。通过向选择线SGS施加适当的电压来控制选择栅122。晶体管100、102、104以及106中的每个具有控制栅和浮栅。例如,晶体管100具有控制栅100CG和浮栅100FG。晶体管102包括控制栅102CG和浮栅102FG。晶体管104包括控制栅104CG和浮栅104FG。晶体管106包括控制栅106CG和浮栅106FG。控制栅100CG连接到字线WL3,控制栅102CG连接到字线WL2,控制栅104CG连接到字线WL1,以及控制栅106CG连接到字线WL0。
注意,虽然图1和图2在NAND单列中示出了四个存储单元,但是使用四个存储单元仅提供为示例。NAND单列可具有少于四个存储单元或多于四个存储单元。例如,一些NAND单列将包括八个存储单元、16个存储单元、32个存储单元、64个存储单元、128个存储单元等。这里的讨论不限于NAND单列中的任何特定数量的存储单元。一个实施例使用具有66个存储单元的NAND单列,其中64个存储单元用来存储数据,并且66个存储单元中的两个存储单元被称为虚拟存储单元,因为它们不存储数据。
使用NAND结构的闪存系统的典型结构将包括若干NAND单列。每个NAND单列通过选择线SGS控制的其源选择栅连接到公共源线,并且通过选择线SGD控制的其漏选择栅连接到其相关联的位线。每个位线和经由位线触点连接到该位线的各个NAND单列包括存储单元的阵列的列。多个NAND单列共享位线。通常,位线在垂直于字线的方向上在NAND单列的顶部走行(run),并连接到感测放大器。
在以下美国专利/专利申请(通过引用将其全部内容合并于此)中提供了NAND型闪存和它们的操作的相关示例:美国专利第5,570,315号;美国专利第5,774,397号;美国专利第6,046,935号;美国专利第6,456,528号;以及美国专利公布第US2003/0002348号。
除了NAND闪存之外,还可以使用其它类型的非易失性储存装置。例如,也可以与这里描述的技术一起使用TANOS结构(包括硅基底上的TaN-Al2O3-Sin-SiO2堆叠层),其基本上是使用氮化物层(取代浮栅)中的电荷的陷阱的存储单元。可在闪速EEPROM系统中使用的另一类存储单元利用非导电电介质材料来替代导电浮栅,来以非易失方式存储电荷。在Chan等人的文章“A True Single-Transistor Oxide-Nitride-OxideEEPROM Device”,IEEE Electron Device Letters,Vol.EDL-8,No.3,March 1987,pp.93-95中描述了这样的单元。由二氧化硅、氮化硅以及二氧化硅(“ONO”)构成的三层电介质夹在存储单元沟道之上的半导体基底的表面和导电控制栅之间。通过将电子从单元沟道注入到氮化物来对单元进行编程,其中电子被捕获并存储在限制区域中。该存储的电荷然后以可检测的方式改变单元的沟道的部分的阈值电压。通过将热孔注入到氮化物来擦除单元。还参见Nozaki等人的“A 1-Mb EEPROM with MONOSMemory Cell for Semiconductor Disk Application”,IEEE Journal ofSolid-State Circuits,Vol.26,No.4,April 1991,pp.497-501,其描述了分裂栅配置的类似单元,其中,掺杂的多晶硅栅延续存储单元沟道的一部分,以形成单独的选择晶体管。
Eitan等人的“NROM:A Novel Localized Trapping,2-Bit NonvolatileMemory Cell”,IEEE Electron Device Letters,vol.21,no.11,November2000,pp.543-545描述了另一示例。ONO电介质层延伸穿过源扩散和漏扩散之间的沟道。一个数据位的电荷定位于漏相邻的电介质层,而另一数据位的电荷定位于源相邻的电介质层。美国专利第5,768,192和6,011,725号公开了一种非易失性存储单元,其具有夹在两个二氧化硅层之间的捕获(trapping)电介质。通过对电介质内的空间分离的电荷储存区域的二进制状态进行读取,实现多态数据储存。还可以使用其它类型的存储装置。
图3示出了存储装置210,其具有用于对存储单元(例如,NAND多态闪存)的页并行进行读取和编程的读/写电路。存储装置210可包括一个或更多个存储管芯或芯片212。存储管芯212包括存储单元200、控制电路220、以及读/写电路230A和230B的阵列(二维或三维)。在一个实施例中,在阵列的相对侧上,以对称方式实现通过各个外围电路对存储阵列200的存取,使得每侧上的电路和存取线的密度降低一半。读/写电路230A和230B包括多个感测块300,其允许并行对存储单元的页进行读取或编程。经由行解码器240A和240B通过字线、以及经由列解码器242A和242B通过位线,存储阵列200是可寻址的。在典型实施例中,控制器244包括在相同存储装置210(例如,可拆卸储存卡或封装)中作为一个或更多个存储管芯212。命令和数据经由线232在主机和控制器244之间传送,并且经由线234在控制器和一个或更多个存储管芯212之间传送。
控制电路200与读/写电路230A和230B协作,以对存储阵列200执行存储操作。控制电路220包括状态机222、片上地址解码器224以及功率控制模块226。状态机222提供对存储器操作的芯片级控制。片上地址解码器224提供主机或存储器控制器使用的地址到解码器240A、240B、242A以及242B使用的硬件地址的地址接口。功率控制模块226控制在存储器操作期间提供到字线和位线的功率和电压。在一个实施例中,功率控制模块226包括可以创建比电源电压大的电压的一个或更多个电荷泵。控制电路220、解码器240A/240B和242A/242B、读/写电路230A/230B以及控制器244可以共同或单独被称为一个或更多个管理电路。
图4是各个感测块300的框图,感测块300被分割成称为感测模块480的核心部分和公共部分490。在一个实施例中,将存在用于每个位线的单个感测模块480和用于一组多个感测模块480的一个公共部分490。在一个实施例中,感测块将包括一个公共部分490和八个感测模块480。组中的每个感测模块将经由数据总线472与相关联的公共部分通信。对于进一步的细节,参照美国专利申请公布2006/0140007,通过引用将其全部内容合并于此。
感测模块480包括感测电路470,其确定所连接的位线中的导通电流是否高于或低于预定阈值电平。在一些实施例中,感测模块480包括通常被称为感测放大器的电路。感测模块480还包括位线锁存器482,其用来设置所连接的位线上的电压条件。例如,锁存在位线锁存器482中的预定状态将导致所连接的位线进入指定程序禁止(例如,Vdd)的状态。
公共部分490包括处理器492、一组数据锁存器494以及耦合在数据锁存器组494和数据总线420之间的I/O接口496。处理器492执行计算。例如,其功能之一是确定存储在所感测的存储单元中的数据,并且将所确定的数据存储在数据锁存器组中。数据锁存器组494用来存储处理器492在读取操作期间确定的数据位。数据锁存器组494还用来存储在编程操作期间从数据总线420导入的数据位。所导入的数据位表示意味着要编程到存储器中的写数据。I/O接口496提供数据锁存器494和数据总线420之间的接口。
在读取或感测期间,系统的操作在状态机222的控制下,状态机222控制向编址单元提供不同控制栅电压。随着其步进通过与存储器支持的各个存储器状态对应的各个预定控制栅电压(读取参考电压或验证参考电压),感测模块480会行程(trip)这些电压之一,并且输出从感测模块480经由总线472提供到处理器492。此时,处理器492通过考虑关于经由输入线493从状态机施加的控制栅电压的信息和感测模块的行程事件,确定得到的存储器状态。然后,其计算存储器状态的二进制编码,并且将得到的数据位存储到数据锁存器494。在核心部分的另一实施例中,位线锁存器482用作双重责任,即作为用于锁存感测模块480的输出的锁存器以及还作为如上所述的位线锁存器两者。
预期一些实现将包括多个处理器492。在一个实施例中,每个处理器492将包括输出线(在图4中未描绘),使得每个输出线线或(wired-OR)在一起。在一些实施例中,输出线在连接到线或线之前被反转。该配置使得实现编程验证处理期间对编程处理何时完成的快速确定,因为接收到线或线的状态机可以确定编程的所有位何时达到期望电平。例如,当每个位达到其期望电平时,该位的逻辑零将被发送到线或线(或反转数据一)。当所有位输出数据0(或反转的数据一)时,于是状态机知道终止了编程处理。在每个处理器与八个感测模块通信的实施例中,状态机会(在到来的实施例中)需要读取线或线八次,或者逻辑被加到处理器492以累积相关联的位线的结果,使得状态机仅需要读取线或线一次。在具有许多感测模块的一些实施例中,许多感测模块的线或线可以以N个感测模块的组成群,并且群可以成群以形成二进制树。
在编程或验证期间,要编程的数据从数据总线420存储在数据锁存器组494中。状态机控制下的编程操作包括同时施加到编址的存储单元的控制栅的一系列编程电压脉冲(具有增大的幅值),其中存储单元同时编程为编址的存储单元。每个编程脉冲后跟随着验证处理,以确定存储单元是否编程为期望状态。处理器492相对于期望存储器状态监视所验证的存储器状态。当两者一致时,处理器492设置位线锁存器482,以便使得位线进入指定程序禁止的状态。这禁止耦合到位线的存储单元进一步编程,即使它在其控制栅经受编程脉冲。在其它实施例中,处理器首先加载位线锁存器482,并且感测电路在验证处理期间将其设置为禁止值。
数据锁存器堆栈494包含与传感器模块对应的数据锁存器的堆栈。在一个实施例中,存在每个传感器模块480三个(或四个或其它数量的)数据锁存器。在一些实现中(但不要求),数据锁存器实现为移位寄存器,使得存储在其中的并行数据转换成用于数据总线420的串行数据,并且反之亦然。在一个优选的实施例中,与m个存储单元的读/写块对应的所有数据锁存器可以链接在一起,以形成块移位寄存器,使得可以通过串行传送来输入或输出数据块。特别地,匹配(adapt)读/写模块的组合,使得其数据锁存器组的每个顺序地将数据移位进或移位出数据总线,就像它们是整个读/写块的移位寄存器的一部分一样。
可以在以下专利文献得到关于非易失性储存装置的各个实施例的结构和/或操作的附加信息:(1)美国专利申请公布第2004/0057287号、“Non-Volatile Memory and Method With Reduced Source Line BiasErrors”、2004年3月25日公开;(2)美国专利申请公布第2004/0109357号、“Non-Volatile Memory And Method with Improved Sensing”、2004年6月10日公开;(3)美国专利申请公布第20050169082号;(4)美国专利申请公布2006/0221692、题为“Compensating for Coupling DuringRead Operations of Non-Volatile Memory”、发明人Jian Chen、2005年4月5日提交;以及(5)美国专利申请公布2006/0158947、题为“ReferenceSense Amplifier For Non-Volatile Memory”、发明人Siu Lung Chan和Raul-Adrian Cernea、2005年12月28日提交。通过引用将所有这五个以上直接列出的专利文献全文合并于此。
图5A描绘了存储单元阵列200的示例性结构。在一个实施例中,存储单元阵列被划分成大量存储单元的块。如对于闪速EEPROM系统通用的是,块是擦除的单位。即,每个块包含一起擦除的最小数量的存储单元。
作为一个示例,在图5A中描绘了NAND闪速EEPROM,其被分割成1024个块。然而,可以使用多于或少于1024个块。在每个块中,在该示例中,存在与位线BL0、BL1、...BL69,623对应的69,624个列。在一个实施例中,可以在读取和编程操作期间同时选择块的所有位线。可以同时对沿公共字线、并连接到任何位线的存储单元进行编程(或读取)。在另一实施例中,位线被划分成偶数位线和奇数位线。在奇数/偶数位线架构中,在一个时刻对沿公共字线、并连接到奇数位线的存储单元进行编程,而在另一时刻对沿公共字线、并连接到偶数位线的存储单元进行编程。
图5A示出了串行连接以形成NAND单列的四个存储单元。虽然示出了四个单元包括在每个NAND单列中,但是可以使用多于或少于四个(例如,16、32、64、128或其它数量存储单元可以在NAND单列上)。NAND单列的一个终端经由漏选择栅连接到对应的位线(连接到选择栅漏线SGD),并且另一终端经由源选择线连接到源线(连接到选择栅源线SCS)。
每个块通常被划分成多个页。页是编程的单位。一个或更多个数据的页通常存储在一行存储单元中。页可以存储一个或更多个扇区。扇区包括用户数据和开销数据。开销数据通常包括根据扇区的用户数据计算的错误校正码(ECC)。控制器在数据被编程到阵列中时计算ECC,并且在从阵列读取数据时检查ECC。在一些实施例中,状态机或其它部件可以计算并检查ECC。在一些替选实施例中,ECC和/或其它开销数据存储在不同页、或甚至不同块中,而不是存储在它们所属的用户数据中。用户数据的扇区通常是512字节,与磁盘驱动器中的扇区的尺寸对应。大量页形成块,大概从例如8页上至32、64、128或更多页。图5B描绘了页的数据。取决于页的尺寸,页包含许多扇区。每个扇区包括用户数据、错误校正码(ECC)、以及头信息。
在一些利用多态存储单元的存储系统中,存储单元中的每个数据位在不同页。例如,如果存储单元的阵列每存储单元存储三个数据位(八个状态或数据级),则每个存储单元在三个页存储数据,其中三个位的每个在不同页。因此,在该示例的块内,每个字线与三个页或者三页的整数倍相关联。其它布置也是可能的。
在海量数据储存装置和储存系统、以及在数据通信系统中使用错误校正编码(ECC)是公知的。作为本领域的基础,错误校正编码涉及附加位(通常称为奇偶位、码位、校验数字、ECC位等)的储存或通信,该附加位根据正被编码的“有效载荷”(或原始数据)数据位确定或计算。例如,存储器资源中的错误校正编码数据的储存涉及使用所选码对一个或更多个码字进行编码以包括实际数据和附加码位。取得所存储的数据涉及根据如用来对所存储的码字进行编码的相同码,对所存储的码字进行解码。因为码位“过指定(over-specify)”码字的实际数据部分,因此可以容忍一些数量的错误位,而在解码后不引起明显的实际数据的任何损失。
在本领域中,许多ECC编码方案是公知的。这些传统的错误校正码在大规模存储器(包括闪存(和其它非易失性存储器))中特别有用,因为这样的编码方案可以提供的装置可靠性和对制造生产的实质影响允许具有少量非可编程或有缺陷的单元的装置是可使用的。当然,在生产节约和提供附加存储单元以存储码位(即,码“率”)的成本之间存在折中。用于闪存装置的一些ECC码趋于具有比在数据通信应用中使用的码(其会具有低至1/2的码率)更高的码率(即,码位对数据位的较低比率)。
一些存储单元与其它存储单元相比编程或擦除较慢,这是因为这些单元当中的制造变化、因为这些单元先前被擦除为比其它单元低的阈值电压、因为页内单元之间的不均匀磨损、或其它原因。当然,一些单元无论如何都不能够被编程或擦除,这是因为缺陷或其它原因。如上所述,错误校正编码提供容忍一定数量的较慢或故障单元的能力,而依然保持存储器可用。在一些应用中,通过重复地施加编程脉冲来对数据页进行编程,直到该页上的所有存储单元验证为期望的编程状态。在这些应用中,如果在对编程页的成功验证之前达到了编程脉冲的最大数量,则编程终止,随后将尚未被验证为期望状态的单元的数量与阈值进行比较,该阈值取决于将在从该页的数据读取中使用的错误校正编码的能力。在错误校正充分鲁棒的其它应用中,通过在尚未充分编程或擦除的较慢(或错误)单元的数量少于可校正的位数时终止编程或擦除脉冲的序列,来节省编程和擦除时间。
通常以逐扇区基础来执行错误校正。因此,每个扇区将具有其自身的ECC码的组。因为在一个实施例中扇区是到主机系统和来自主机系统的传送的数据的期望单位,因此该错误校正是方便和有用的。
在成功的编程处理(利用验证)的结束处,存储单元的阈值电压应该适当地在用于编程的存储单元的一个或更多个阈值电压的分布内、或在用于擦除的存储单元的阈值电压的分布内。图6示出了当每个存储单元存储两个数据位时用于存储单元阵列的示例阈值电压分布。然而,其它实施例可以使用每存储单元多于或少于两个数据位(例如,诸如每存储单元三个数据位)。图6示出了用于擦除的存储单元的第一阈值电压分布E。还描绘了用于编程的存储单元的三个阈值电压分布A、B以及C。在一个实施例中,分布E中的阈值电压为负的,而A、B以及C分布中的阈值电压为正的。如可以看到的,阈值电压分布A在A、B以及C中最低。阈值电压分布C在A、B以及C中最高。
图6中的每个明显的阈值电压范围与用于数据位组的预定值对应。编程到存储单元中的数据与单元的阈值电压电平之间的具体关系取决于单元采用的数据编码方案。例如,2003年6月13日提交的、“Tracking CellsForA Memory System”的美国专利申请公布第2004/0255090和美国专利第6,222,762(通过引用将两者的全部内容合并于此)描述了用于多态闪存单元的各种数据编码方案。在一个实施例中,使用格雷码(Gray code)分配来将数据值分配给阈值电压范围,使得如果浮栅的阈值电压错误地偏移到其邻近阈值电压分布,则将仅影响一个位。一个示例将“11”分配给阈值电压范围E(状态E),将“10”分配给阈值电压范围A(状态A),将“00”分配给阈值电压范围B(状态B),并且将“01”分配给阈值电压范围C(状态C)。然而,在其它实施例中,不使用格雷码。虽然图6示出了四个状态,但是本发明还可以与其它多态结构(包括具有多于或少于四个状态的结构)一起使用。
图6示出了用于从存储单元读取数据的三个读取参考电压Vra、Vrb以及Vrc。通过测试给定存储单元的阈值电压是否高于或低于Vra、Vrb以及Vrc,系统可以确定存储单元在何种状态中。即,通过知道存储单元是否响应于Vra、Vrb以及Vrc接通,处理可以了解存储单元在哪个状态。例如,当读取存储单元时,如果存储单元响应于接收到Vrc而接通而没有响应于Vrb而接通,则存储单元在状态B中。
图6还示出了三个验证参考电压Vva、Vvb以及Vvc。当将存储单元编程为状态A时,系统将测试这些存储器单元是否具有大于或等于Vva的阈值电压。当将存储单元编程为状态B时,系统将测试存储单元是否具有大于或等于Vvb的阈值电压。当将存储单元编程为状态C时,系统将测试存储单元是否具有大于或等于Vvc的阈值电压。
通常,在验证操作和读取操作期间,所选字线连接到如下电压:其电平对于每个读取操作(例如,参见图6的读取比较电平Vra、Vrb以及Vrc)或验证操作(例如,参见图6的验证电平Vva、Vvb以及Vvc)而指定,以便确定所关注的存储单元的阈值电压达到了这样的电平。在应用字线电压之后,测量存储单元的导通电流,以确定存储单元是否响应于施加到字线的电压而接通。如果测量导通电流为大于特定值,则假设存储单元接通并且施加到字线的电压大于存储单元的阈值电压。如果测量导通电流为不大于特定值,则假设存储单元不接通并且施加到字线的电压不大于存储单元的阈值电压。
存在许多方式在读取或验证操作期间来测量存储单元的导通电流。在一个示例中,通过对感测放大器中的专用电容器的放电或充电的速率来测量存储单元的导通电流。在另一示例中,所选存储单元的导通电流允许(或不允许)NAND单列包括存储单元来对相应的位线放电。在一时段之后测量位线上的电压,以查看其是否放电。注意,可以与本领域已知的不同方法一起使用这里描述的技术用于验证/读取。可以在以下专利文献(通过引用将其全部内容合并于此)中得到关于验证/读取的更多信息:(1)美国专利申请公布第2004/0057287号;(2)美国专利申请公布第2004/0109357号;(3)美国专利申请公布第2005/0169082号;以及(4)美国专利申请公布第2006/0221692号。根据本领域已知的技术来执行上述读取和验证操作。因此,本领域技术人员可以改变许多说明的细节。还可以使用本领域已知的其它读取和验证技术。
在已知为全序列编程的一个实施例中,可以将存储单元从擦除状态E直接编程为编程状态A、B或C中的任意一个。例如,可首先擦除要编程的存储单元总体,使得该总体中的所有存储单元在擦除状态E中。在第一组存储单元从状态E编程为状态A的同时,第二组存储单元从状态E编程为状态B,并且第三组存储单元从状态E编程为状态C。通过图6的三个弯曲箭头图形描绘了全序列编程。
图7示出了对多态存储单元进行编程的两阶段技术的示例,该技术对于两个不同页存储数据:下页和上页。描绘了四个状态(阈值电压分布):状态E(11)、状态A(10)、状态B(00)以及状态C(01)。对于状态E,两个页均存储“1”。对于状态A,下页存储“0”而上页存储“1”。对于状态B,两页均存储“0”。对于状态C,下页存储“1”而上页存储“0”。注意,虽然为每个状态分配了特定位图案,但是还可以分配不同位图案。
在第一编程阶段,根据要被编程到下逻辑页的数据位设置存储单元的阈值电压电平。如果数据位为逻辑“1”,则不改变阈值电压,因为作为较早擦除的结果,它在适当的状态中。然而,如果要编程的数据位为逻辑“0”,则如箭头530所示,单元的阈值电平增加为状态A。
在第二编程阶段,根据被编程到上逻辑页的数据位来设置存储单元的阈值电压电平。如果上逻辑页位要存储逻辑“1”,则取决于下页位的编程,由于单元在状态E或A(两者均承载上页位“1”)之一中,因此不发生编程。如果上页数据位要为逻辑“0”,则阈值电压偏移。如果存储单元中得到的第一阶段保持在擦除状态E,则在第二阶段,对存储单元进行编程,使得阈值电压增大为在状态C内,如箭头534所示。如果作为第一编程阶段的结果存储单元被编程为状态A,则在第二阶段中进一步对存储单元进行编程,使得阈值电压增大到在状态B内,如箭头532所描绘。第二阶段的结果是针对上页将单元编程到指定为存储逻辑“0”的状态,而不改变下页的数据。
在一个实施例中,如果写入足够的数据来填充字线,则可以设置系统来执行全序列写入。如果没有写入足够的数据,则编程处理可以利用所接收的数据来对下页进行编程。当接收到后续数据时,然后系统将对上页进行编程。在另一实施例中,则系统可以以对下页进行编程的模式开始写入,并且如果随后接收到足够数据以填充整个(或大多数)字线的存储单元则转换到全序列编程模式。在发明人Sergy Anatolievich Gorobets和Yan Li的、2004年12月14日提交的、美国专利申请公布第2006/0126390、序列号11/013,125、题为“Pipelined Programming of Non-Volatile MemoriesUsing Early Data”中公开了这样实施例的更多细节,通过引用将其全部内容合并于此。
图8A-8C公开了用于对非易失性存储器进行编程的另一处理,其减少了浮栅到浮栅耦合的效应。在实现由图8A-8C教导的处理的一个示例中,非易失性存储单元使用四个数据状态、每存储单元存储两个数据位。例如,假设状态E是擦除状态,并且状态A、B以及C是编程状态。状态E存储数据11。状态A存储数据01。状态B存储数据10。状态C存储数据00。因为两个位均在相邻状态A和B之间变化,因此这是非格雷编码的示例。还可以使用到物理数据状态的其它数据编码。每个存储单元在两页中存储两个数据。为了参考的目的,这些数据页将被称为上页和下页;然而,可以给予它们其它标签。对于图8A-8C的处理参照状态A,上页存储位0,并且下页存储位1。参照状态B,上页存储位1,而下页存储位0。参照状态C,两页均存储位数据0。
图8A-8C的编程处理是两步处理。在第一步中,对下页进行编程。如果下页保持数据1,则存储单元状态保持在状态E。如果数据要编程为0,则提高存储单元的电压的阈值,使得存储单元编程为状态B’。因此,图8A示出了存储单元从状态E编程为状态B’。图8A中描绘的状态B’是临时状态B;因此,验证点描绘为Vvb’,其低于Vvb。
在一个实施例中,在(字线WLn上的)存储单元从状态E编程为状态B’时,然后将关于其下页对NAND单列上的(字线WLn+1上的)其邻近存储单元进行编程。例如,在对连接到WL0的存储单元的下页进行编程之后,可以对同一NAND单列上、连接到WL1的存储单元(邻近存储单元)的下页进行编程。在对邻近存储单元进行编程之后,如果较早的存储单元其阈值电压从状态E提高到状态B’,则浮栅到浮栅的耦合效应将提高要编程的该较早存储单元的明显阈值电压。这将具有加宽状态B’的阈值电压分布的效果,如图8B中的阈值电压分布550所描绘。当对上页进行编程时,将补偿该阈值电压分布的明显加宽。
图8C描绘了对上页进行编程的处理。如果存储单元在擦除状态E中,并且上页保持为1,则存储单元将保持在状态E中。如果存储单元在状态E中,并且其上页数据将编程为0,则将提高存储单元的阈值电压,使得存储单元在状态A中。如果存储单元在中间阈值电压分布550中,并且上页数据保持为1,则存储单元将编程为最终状态B。如果存储单元在中间阈值电压分布550中,并且上页数据要变为数据0,则将提高存储单元的阈值电压,使得存储单元在状态C中。因为仅邻近存储单元的上页编程将对给定存储单元的明显阈值电压具有影响,因此图8A-8C描绘的处理减少了浮栅之间的耦合效应。
虽然图8A-8C相对于四个数据状态和两个数据页提供了示例,但是图8A-8C教导的概念可以应用于具有多于或少于四个状态、不同于两页、和/或其他数据编码的其它实现。
图9是描述用于利用图8A-8C的编程方法对存储单元进行编程的顺序的一个实施例的表格。对于连接到字线WL0的存储单元,下页构成页0,而上页构成页2。对于连接到字线WL1的存储单元,下页构成页1,而上页构成页4。对于连接到字线WL2的存储单元,下页构成页3,而上页构成页6。对于连接到字线WL3的存储单元,下页构成页5,而上页构成页7。根据从页0到页7的页数,对存储单元进行编程。在其它实施例中,还可以使用其它编程顺序。
图10示出了当每个存储单元存储多态数据的三个位时、存储单元阵列的示例阈值电压分布(还称为数据状态)。然而,其它实施例可使用每存储单元多于或少于三个数据位(例如,诸如每存储单元四个或更多个数据位)。
在图10的示例中,每个存储单元存储三个数据位;因此,存在八个有效数据状态S0-S7。在一个实施例中,数据状态S0低于0伏,而数据状态S1-S7都高于0伏。在其它实施例中,所有八个数据状态都高于0伏,或者可以实现其它布置。在一个实施例中,阈值电压分布S0宽于分布S1-S7。
在一个实施例中,S0用于擦除存储单元。从S0到S1-S7对数据进行编程。如从图10可见,在S1-S7中,S1幅值最低,而S7幅值最高(例如,最极值(extreme))。
每个数据状态对应于对于存储在存储单元中的三个数据位的唯一值。在一个实施例中,S0=111,S1=110,S2=101,S3=100,S4=011,S5=010,S6=001以及S7=000。还可以使用到状态S0-S7的其它数据映射。在一个实施例中,在相同逻辑页存储了存储在存储单元中的所有数据位。在其它实施例中,存储单元中存储的每个数据位对应于不同逻辑页。因此,存储三个数据位的存储单元将包括第一页中的数据、第二页中的数据以及第三页中的数据。在一些实施例中,连接到相同字线的所有存储单元将在相同三个数据页中存储数据。在一些实施例中,可以将连接到字线的存储单元分组成不同的页组(例如,通过奇数或偶数位线、或通过其它布置)。
在一些现有技术装置中,存储单元将被擦除为状态S0。可以将存储单元从状态S0编程为状态S1-S7中的任意状态。在已知为全序列编程的一个实施例中,存储单元可以从擦除状态S0直接编程为编程状态S1-S7中的任意状态。例如,首先擦除要编程的存储单元总体,使得总体中的所有存储单元都在擦除状态S0中。在一些存储单元从状态S0编程为状态S1的同时,其它存储单元从状态S0编程为状态S2、从状态S0编程为状态S3、从状态S0编程为状态S4,从状态S0编程为状态S5、从状态S0编程为状态S6、以及从状态S0编程为状态S7。通过图10的七个弯曲箭头图形描绘了全序列编程。
图10示出了一组目标验证电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6以及Vv7。这些目标验证电平用作编程处理期间的比较电平。例如,当将存储单元编程为状态1时,系统将检查以查看存储单元的阈值电压是否达到Vv1。如果存储单元的阈值电压没有达到VV1,则将对该存储单元继续编程,直到其阈值电压大于或等于Vv1为止。如果存储单元的阈值电压达到了Vv1,则将对该存储单元停止编程。目标验证电平Vv2用于编程为状态2的存储单元。目标验证电平Vv3用于编程为状态3的存储单元。目标验证电平Vv4用于编程为状态4的存储单元。目标验证电平Vv5用于编程为状态5的存储单元。目标验证电平Vv6用于编程为状态6的存储单元。目标验证电平Vv7用于编程为状态7的存储单元。
图10还示出了一组读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6以及Vr7。这些读取比较电平用作读取处理期间的比较电平。通过响应于分别施加到存储单元的控制栅的读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6以及Vr7而测试存储单元导通还是保持关断,系统可以确定存储单元对于哪个状态存储数据。
图11A-11I公开了用于对多态数据进行编程的其它处理。在第一步之前,将擦除存储单元,使得它们在状态S0的擦除阈值分布中。图11A-11I的处理假设每个存储单元存储三个数据位,其中给定存储单元的每个位在不同页中。数据的第一位(最左面位)与第一页相关联。中间位与第二页相关联。最右面位于第三页相关联。在一个实施例中,数据状态对数据的关联如下:S0=111、S1=110、S2=101、S3=100、S4=011、S5=010、S6=001以及S7=000。然而,其它实施例可以使用其它数据编码方案。
当对第一页进行编程时(如图11A所述),如果位将是数据“1”,则存储单元将停留在状态S0(阈值电压分布602)中。如果位将是数据“0”,则存储单元将被编程为状态S4(阈值电压分布604)。在对相邻存储单元编程之后,相邻浮栅之间的电容性耦合将使得状态S4加宽为如图11B所示。还可以加宽S0,但是在S0和S1之间存在足够宽裕以忽略该影响。可以在美国专利5,867,429和美国专利6,657,891(通过应用将这两者的全部内容合并与此)中得到关于相邻浮栅之间的电容性耦合的更多信息。
当对第二页进行编程(参见图11C)时,如果存储单元在状态S0中,并且第二页位为数据“1”,则存储单元停留在状态S0中。在一些实施例中,对于第二页的编程处理将使阈值电压分布602收紧到新S0。如果存储单元在状态S0中,并且要写入第二页的数据是“0”,则存储单元移动到状态S2(阈值电压分布606)。状态S2具有验证点C。如果存储单元在状态S4中,并且要写入存储单元的数据为“1”,则存储单元保持在S4中。然而,如图11C所描绘,通过将存储单元从阈值电压分布604移动到用于状态S4的阈值电压分布608,对状态S4进行收紧。阈值电压分布608具有验证点E(与阈值电压分布604的E**相比)。如果存储单元在状态S4中,并且要写入第二页的数据是“0”,则存储单元将其阈值电压移动到状态S6(阈值电压分布610),其具有验证点G
在对相邻存储单元进行编程之后,如通过图11D的阈值电压分布602、606、608以及610所描绘,由于浮栅到浮栅耦合,因此加宽了状态S0、S2、S4以及S6。
图11E、11F、11G以及11H描绘了第三页的编程。虽然可以使用一个图形,但是为了可视性原因,在四个图形中描绘了编程处理。在对第二页进行编程之后,存储单元在状态S0、S2、S4或S6之一中。图11E示出了用于第三页编程的、状态S0中的存储单元。图11F示出了用于第三页编程的、状态S2中的存储单元。图11G示出了用于第三页编程的、状态S4中的存储单元。图11H示出了用于第三页编程的、状态S6中的存储单元。图11I示出了在对存储单元的总体执行了图11E、11F、11G以及11H的处理(同时或顺序)之后的阈值电压分布。
如果存储单元在状态S0中,并且第三页数据是“1”,则存储单元保持为状态S0。如果第三页的数据是“0”,则存储单元的阈值电压提高为在状态S1中,其具有验证点B(参见图11E)。
如果存储单元在状态S2中,并且要写入第三页的数据是“1”,则存储单元将保持在状态S2中(参见图11F)。然而,将执行一些编程以将阈值分布606缩紧到具有验证点C的新状态S2。如果要写入第三页的数据是“0”,则存储单元将编程为具有验证点D的状态S3。
如果存储单元在状态S4中,并且要写入第三页的数据是“1”,则存储单元将保持在状态S4中(参见图11G)。然而,将执行一些编程以将阈值电压分布608缩紧到具有验证点E的新状态S4。如果存储单元在状态S4中,并且要写入第三页的数据是“0”,则存储单元将使其阈值电压提高至具有验证点F的状态S5中(参见图11G)。
如果存储单元在状态S6中,并且要写入第三页的数据是“1”,则存储单元将保持在状态S6中(参见图11H)。然而,将存在一些编程使得将阈值分布510缩紧到具有验证点G的新状态S6。如果第三页数据是“0”,则存储单元将使其阈值电压编程为具有验证点H的状态S7(参见图11H)。在对第三页的编程结束时,存储单元将在图11I描绘的八个状态之一中。
图12是描述用于对连接到所选字线的存储单元进行操作的处理的流程图。在一个实施例中,图12的处理用来对存储单元的块进行编程。在图12的处理的一个实现中,对存储单元进行预编程,以便维持对存储单元的均匀磨损(步骤650)。在一个实施例中,将存储单元进行预编程到最高状态、随机图案、或任何其它图案。在一些实现中,不需要执行预编程。
在步骤652中,在编程之前(以块或其它单位)擦除存储单元。在一个实施例中,通过对于足够的时段将p井提高到擦除电压(例如,20伏)并且将所选块的字线接地,来擦除存储单元,同时源和位线浮动。在未选中要擦除的块中,字线浮动。由于电容性耦合,未选中的字线、位线、选择线、以及公共源线还提高到擦除电压的显著分数(fraction),由此阻止擦除未被选中要擦除的块。在被选中要擦除的块中,强电场施加到所选存储单元的管道氧化物层,并且当浮栅的电子发射到基底侧时,通常通过Fowler-Nordheim隧穿机制来擦除所选存储单元。当电子从浮栅传送到p井区时,降低所选单元的阈值电压。可以对整个存储阵列、单个块、或单元的其它单位执行擦除。在一个实施例中,在对存储单元进行擦除之后,所有所擦除的存储单元将在状态E或S0中。擦除处理的一个实现包括将若干擦除脉冲应用到p井,并且在擦除脉冲之间验证NAND单列是否正确擦除。
在步骤654,(可选地)执行软编程以缩窄所擦除的存储单元的擦除阈值电压的分布。作为擦除处理的结果,一些存储单元会处于比需要更深的擦除状态。软编程可以施加编程脉冲,以将更深的所擦除存储单元的阈值电压移动到擦除阈值分布(例如,状态E或S0)。
在步骤656中,对块的存储单元进行编程。在编程之后,可以读取块的存储单元。可以使用本领域已知的许多不同读取处理来读取数据。在一些实施例中,读取处理包括使用ECC来校正错误。读取的数据被输出到请求读取操作的主机。可以通过状态机、控制器或其它装置来执行ECC处理。
图12示出了:在没有读取或与读取无关的情况下擦除编程循环可以发生许多次、在没有编程或与编程无关的情况下读取处理可以发生许多次、以及在编程之后读取处理可以发生任意次。可以使用上述各种电路、在状态机的指导下执行图12的处理。在其它实施例中,可以使用上述各种电路、在控制器的指导下执行图12的处理。
图13是描述以下处理的一个实施例的流程图:该处理用个对连接到公共字线的存储单元执行编程到一个或更多个目标条件(例如,数据状态或阈值电压范围)。在图12的步骤656期间可以执行一次或多次图13的处理。例如,图13的处理可以用来将存储单元直接从状态E或S0编程为状态A-C(参见图6)或S1-S7(参见图10)中的任意一个(例如,全序列编程)。替选地,图13的处理可以用来执行图7的处理的阶段的一个或每个、图8A-8C的处理的步骤的一个或每个、或者图11A-11I的处理的步骤的一个或每个。例如,当执行图7的处理时,图13的处理用来实现第一阶段,其包括将一些存储单元从状态E编程为状态A。然后,图13的处理可以再次用来实现第二阶段,其包括将一些存储单元从状态E编程为状态C、同时将其它存储单元从状态A编程为状态B。
通常,在编程操作期间施加到控制栅的编程电压施加为一系列编程脉冲。在编程脉冲之间,存在一组验证脉冲以执行验证。在许多实现中,增大编程脉冲的幅值,其中,每个相继脉冲增大预定步进尺寸。在图13的步骤670中,将编程电压(Vpgm)初始化为开始幅值(例如,~12-16V或其它合适的电平),并且将状态机222维持的程序计数器PC初始化为1。在步骤672中,编程信号Vpgm的编程脉冲施加到所选字线(为编程所选的字线)。在一个实施例中,被编程的存储单元的组都连接到相同字线(所选字线)。未选字线接收一个或更多个升压电压(例如,~9伏)来执行本领域已知的升压方案。如果应该对存储单元进行编程,则相应的位线接地。另一方面,如果存储单元应该保持在其当前阈值电压,则相应的位线连接到Vdd以禁止编程。在步骤672中,编程脉冲同时施加到连接到所选字线的所有存储单元,使得同时对连接到所选字线的所有存储单元进行编程。即,同时(或在重叠时间期间)对它们进行编程。以此方式,连接到所选字线的所有存储单元将同时使其阈值电压变化,除非已将它们锁存而不被编程。
在步骤674中,使用适当的目标电平组来验证所选存储单元的状态。步骤674包括执行一个或更多个验证操作。如果检测到存储单元的阈值电压达到了适当的目标电平,则通过例如在随后的编程脉冲期间将其位线电压提高至Vdd,使存储单元锁存而不被进一步编程。
在步骤676中,检查是否所有存储单元达到其目标阈值电压。如果是这样,因为所有所选存储单元被编程并且被验证为其目标状态,则编程处理完成并成功。在步骤678中报告“通过”状态。如果在676中确定并非所有存储单元达到其目标阈值电压,则编程处理继续到步骤680。
在步骤680中,系统对尚未达到其各自目标阈值电压分布的存储单元的数量进行计数。即,系统对验证处理失败的单元的数量进行计数。该计数可以通过状态机、控制器或其它逻辑装置来完成。在一个实现中,每个感测块300(参见图3)将存储其各个单元的状态(通过/失败)。可以使用数字计数器对这些值进行计数。如上所述,许多感测块具有一起线或的输出信号。因此,检查一条线可以指示大单元组的单元没有验证失败。通过适当地组织线或在一起的线(例如,类似二进制树结构),二进制搜索方法可以用来确定失败的单元的数量。以这种方式,如果少量单元失败,则迅速完成计数。如果大量单元失败,则计数花费较长时间。可以在通过引用合并于此的、美国专利公布2008/0126676中得到更多信息。在其它替选中,每个感测放大器如果其相应的单元失败则可以输出模拟电压或电流,并且模拟电压或电流求和电路可以用来对失败的单元的数量进行计数。
在一个实施例中,存在一个总计数,其反映在最后验证步骤失败的、当前被编程的存储单元的总数量。在其它实施例中,对每个数据状态保存单独计数。
在步骤682中,确定来自步骤680的计数是否小于或等于预定限制。在一个实施例中,预定限制是在对存储单元的页的读取处理期间可以由ECC校正的位数。如果失败的单元的数量小于或等于预定限制,则编程处理可以停止,并且在步骤678中报告“通过”的状态。在该情形下,对足够的存储单元正确地编程,使得可以在读取处理(参见图12的步骤658)期间使用ECC,对尚未完成编程的较少剩余存储单元进行校正。
在其它实施例中,预定限制可以少于在读取处理期间可以通过ECC校正的位数,以允许此外的错误。当对少于页的所有存储单元进行编程、或对仅一个数据状态(或少于所有状态)的计数进行比较时,预定限制可以是对于存储单元的页、在读取处理期间可以通过ECC校正的位数的一部分(成比例或不成比例)。在一些实施例中,不预先确定限制。替代地,限制基于已经对于页计数的错误数、执行的程序-擦除循环的数量、温度或其它准则而改变。
如果失败的单元的数量不少于预定限制,则编程处理在步骤684继续,并且再次将程序计数器PC相对于程序限制值(PL)进行检查。程序限制值的一个示例是20;然而,可以使用其它值。如果程序计数器PC不少于程序限制值PL,则认为程序处理失败,并且在步骤688中报告失败的状态。如果程序计数器PC少于程序限制值PL,则处理在步骤686继续,在该时间期间,将程序计数器PC增1,并且编程电压Vpgm步进至下一幅值。例如,下一脉冲将具有比先前脉冲大步进尺寸(例如,0.1-0.4伏的步进尺寸)的幅值。在步骤686之后,处理循环回到步骤672,并且另一编程脉冲施加到所选字线。
图14示出了以下电压波形的一部分:该电压波形施加到所选字线,并且因此在图13的处理的编程期间施加到连接到所选字线的存储单元的控制栅。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。图14的示例对应于每存储单元两个位和四个数据状态的实施例。因此,验证处理包括Vva处的验证脉冲、Vvb处的验证脉冲以及Vvc处的验证脉冲。在具有每存储单元三个位和八个数据状态的实施例中,会存在上至八个验证脉冲。注意,在存储单元对于特定数据状态显然不需要测试时,一些实施例将在一些迭代中使用少于所有三个或八个验证脉冲。附加地,具有不同数据状态数的实施例将使用不同验证脉冲数。在图14的实施例中,在编程脉冲之间执行验证操作(步骤674)和对失败的单元进行计数(步骤680)。因此,一旦确定验证了所有存储单元或者验证失败的存储单元的数量少于预定限制(或不是预先确定的限制),则可以在不应用下一个编程脉冲的情况下停止编程处理。
图15示出了以下电压波形的另一实施例的一部分:该电压波形施加到所选字线,并且因此在图13的编程处理期间施加到连接到所选字线的存储单元的控制栅。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。在图15的实施例中,在编程脉冲之间执行验证操作(步骤674)。然而,在下一编程脉冲期间执行对失败的单元的计数,这可以节省时间。当确定验证了所有存储单元或者验证失败的存储单元的数量少于预定限制(或不是预先确定的限制)时,则可以停止编程处理;然而,已经施加了下一编程脉冲。如上所讨论,可以在锁存器494中存储验证处理的结果。可以在下一编程脉冲期间读取这些锁存器。
图16示出了以下电压波形的另一实施例的一部分:该电压波形施加到所选字线,并且因此施加到连接到所选字线的存储单元的控制栅。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。图16的实施例属于仅验证一个状态的编程处理。例如,当将数据编程为四个、八个或更多个状态时,处理可以达到如下条件:其中,除了被编程为最高状态(例如,状态C或状态S7)的存储单元之外,存储单元使所有单元达到其目标状态。此时,验证处理将仅在Vvc(参见图6)或Vv7(参见图7)处执行验证。因此,图16仅示出了用于测试存储单元是否在最高数据状态(或不是最高的其它状态)的一个验证脉冲。在其它示例中,图16的波形可以与仅编程为一个状态的编程操作一起使用;该编程操作例如图7的处理、图8A的处理、图11A的处理或其它处理的第一阶段。对于编程为多于一个状态的编程操作,附加验证脉冲可以被适当地添加到波形。在图16的实施例中,在编程脉冲之间执行验证操作(步骤674)和对失败的单元进行计数(步骤680)。
图17示出了以下电压波形的另一实施例的一部分:该电压波形施加到所选字线,并且因此施加到连接到所选字线的存储单元的控制栅。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。与图16相似,图17的波形属于仅验证一个状态的编程处理。在图17的实施例中,在编程脉冲之间执行验证操作(步骤674)。然而,在下一编程脉冲期间执行对失败的单元的计数。
因为编程电压施加到连接到字线的所有存储单元,因此字线上的未选中的存储单元(不是要被编程的存储单元)会变得非有意地被编程。所选字线上的未选中单元的无意编程被称为“编程干扰”。例如,状态E中的存储单元会使其阈值电压提高到状态E之外的电平。图18示出了编程处理期间阈值电压与存储单元的总体的数据状态E、A、B以及C的存储单元的数量的关系。状态E被描绘为使得由阴影区域702表示的、其存储单元的子集经受编程干扰,使得它们各自的阈值电压高于正常旨在为状态E的一部分的电平。当将存储单元编程为最高(最极值)状态(例如,状态C或S7)时,编程干扰最严重。这是因为通常利用更多的电压脉冲来将存储单元编程为最高状态,并且所施加的更多脉冲增大编程干扰的机会。此外,由于电压的幅值随着每个脉冲增大,因此利用较高电压对最高数据状态进行编程,这还可以提高编程干扰的机会。
图18还示出了被编程为最高状态C的一些存储单元(参见阴影区域704)尚未达到Vvc。在这种情况下,继续对由阴影区域704表示的存储单元编程仅将加重阴影区域702中的存储单元的编程干扰。因此,上述编程处理在所有存储单元达到目标(例如,达到了Vvc)之前停止将存储单元编程为最高状态(和其它数据状态),以便减少(或防止进一步加重)编程干扰。然而,如以上参照图13的步骤680和682所说明,仅当未完全编程的存储单元的数量小于可以通过ECC校正的单元的数量时,停止编程。
在一个实施例中,替代对低于验证比较值(例如,Vvc)的单元的数量进行计数,系统可以对低于中间比较值的单元的数量进行计数,并且使用该计数作为多少单元低于验证比较值的估计。例如,图19示出了具有验证比较值Vvc和读取比较值Vrc的数据状态C的阈值电压分布。图19还示出了中间比较值VvcL。在图13的步骤680的一个实施例中,系统将对其阈值电压小于VvcL、假设为编程为状态C的存储单元的数量进行计数,以便估计其阈值电压小于Vvc、假设为编程为状态C的存储单元的数量。
其阈值电压小于VvcL的存储单元的数量与其阈值电压小于Vvc的存储单元的数量成比例。例如,如果VvcL比Vvc低.4-.5v,则其阈值电压小于VvcL的存储单元的数量约为其阈值电压小于Vvc的存储单元的数量的十分之一(1/10)。如果VvcL比Vvc低.8-1.0v,则其阈值电压小于VvcL的存储单元的数量约为其阈值电压小于Vvc的存储单元的数量的百分之一(1/100)。在一些实现中,被计数为低于比较值的单元的数量将随着对于每.4-.5v因子10而减少。图19示出了表示具有低于Vvc且高于Vrc的阈值电压的这些存储单元的阴影区域712。阴影区域714表示具有低于Vrc且高于VvcL的阈值电压的这些存储单元。阴影区域716表示具有低于VvcL的阈值电压的这些存储单元。因此,其阈值电压低于Vvc的存储单元的数量是阴影区域712+714+716的总和。如可以看到的是,这显著大于其阈值电压小于VvcL的存储单元的数量。在一些实施例中,对低于中间比较值VvcL的存储单元的计数将快于对低于Vvc的存储单元的计数。
图20示出了对于步骤680的实施例、在图13的编程处理期间施加到所选字线(并且因此,施加到连接到所选字线的存储单元的控制栅)的电压波形的一部分,在该实施例中,系统将对其阈值电压低于中间比较值VvcL、假设被编程为状态C的存储单元的数量进行计数。如果其阈值电压低于VvcL、假设被编程为状态C的存储单元的数量小于或等于特定限制(参见图13的步骤682),则结束编程处理。由于VvcL低于Vvc,则与VvcL比较的特定限制低于与Vvc比较的限制。在以上两个示例中,用于VvcL的限制比用于Vvc的限制小10或100倍。图20的波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。在该实施例中,步骤680(对失败的单元进行计数)包括施加VvcL的电压脉冲,以便测试存储单元是否具有至少VvcL的阈值电压。还可以使用测试阈值电压的其它方法。附加地,注意,虽然电压脉冲被描绘为理想的正方形波形,但是在现实中,电压脉冲(以及该图和其它图中的其它脉冲)不可能是理想的正方形,并且在许多情况下,其可以是与正方形波形不同的形状。
图20的示例对应于具有每存储单元两位和四个数据状态的实施例。因此,验证处理包括Vva处的验证脉冲、Vvb处的验证脉冲以及Vvc处的验证脉冲。在具有每存储单元三位和八个数据状态的实施例中,会存在上至八个验证脉冲。注意,当存储单元对于特定数据状态显然不需要测试时,一些实施例在一些迭代中将使用少于所有三个或八个验证脉冲。附加地,具有不同数据状态数的实施例将使用不同数量的验证脉冲。在图20的实施例中,在编程脉冲之间执行验证操作(步骤674)和对失败的单元进行计数(步骤680)。因此,一旦确定验证了所有存储单元或者验证失败的存储单元的数量少于限制,则可以在不施加下一编程脉冲的情况下停止编程处理。
图21示出了对于图13的步骤680的另一实施例、施加到所选字线(并且因此,施加到连接到所选字线的存储单元的控制栅)的电压波形的一部分,在该实施例中,系统将对其阈值电压低于VvcL、假设被编程为状态C的存储单元的数量进行计数。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。在该实施例中,步骤680(对失败的单元进行计数)包括施加VvcL的电压脉冲,以便测试存储单元是否具有至少VvcL的阈值电压。还可以使用测试阈值电压的其它方法。在图21的实施例中,在编程脉冲之间执行验证操作(步骤674)。然而,在下一编程脉冲期间执行对失败的单元的计数(步骤680)。如上所讨论,验证处理的结果可以存储在锁存器494中。可以在下一编程脉冲期间读取这些锁存器。
图22示出了对于图13的步骤680的另一实施例、施加到所选字线(并且因此,施加到连接到所选字线的存储单元的控制栅)的电压波形的一部分,在该实施例中,系统将对其阈值电压低于VvcL、假设被编程为状态C的存储单元的数量进行计数。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。图16的实施例属于仅验证一个状态的编程处理。例如,当将数据编程为四个、八个或更多个状态时,处理可以达到如下条件:其中,除了被编程为最高状态(例如,状态C或状态S7)的存储单元之外,存储单元使所有单元达到其目标状态。此时,验证处理将仅在Vvc(参见图6)或Vv7(参见图7)处执行验证。因此,图22仅示出了用于测试存储单元是否达到最高数据状态(或不是最高的其它状态)的一个验证脉冲。图22的波形可以与仅编程为一个状态的编程操作一起使用;该编程操作例如图7的处理、图8A的处理、图11A的处理或其它处理的第一阶段。对于编程为多于一个状态的编程操作,附加验证脉冲可以被适当地添加到波形。在图22的实施例中,在编程脉冲之间执行验证操作(步骤674)和对失败的单元进行计数(步骤680)。在该实施例中,与图21的实施例相似,步骤680(对失败的单元进行计数)包括施加VvcL的电压脉冲,以便测试存储单元是否具有至少VvcL的阈值电压。还可以使用测试阈值电压的其它方法。
图23示出了对于图13的步骤680的另一实施例、施加到所选字线(并且因此,施加到连接到所选字线的存储单元的控制栅)的电压波形的一部分,在该实施例中,系统将对其阈值电压低于VvcL、假设被编程为状态C的存储单元的数量进行计数。该波形示出了对于包括图13的步骤672-686的循环的三个迭代的部分,在步骤672期间施加的编程脉冲(编程)、在步骤674期间施加的验证脉冲(验证)以及在步骤680期间用于对失败的单元进行计数的时段(对失败的单元进行计数)。与图22相似,图23的波形属于仅验证一个状态的编程处理。在图23的实施例中,在编程脉冲之间执行验证操作(步骤674)。然而,在下一编程脉冲期间执行步骤680的失败的单元的计数(对失败的单元的计数)。在该实施例中,与图21的实施例相似,步骤680(对失败的单元进行计数)包括施加VvcL的电压脉冲,以便测试存储单元是否具有至少VvcL的阈值电压。在一个实施例中,在下一编程脉冲之前施加VvcL的电压脉冲,同时与下一编程脉冲同时执行对失败的单元的计数。还可以使用测试阈值电压的其它方法。
图20-23描述了在对被编程为状态C的存储单元执行步骤680时,使用中间比较电平(例如,VvcL)。在一组实施例中,将通过对尚未达到各自验证比较电平(例如,Vva和Vvb)的存储单元的数量进行计数,对被编程为除状态C(其是最高状态、或最极值状态)之外的状态的存储单元执行步骤680。因此,在少于旨在被编程为状态A的第一预定数量的存储单元尚未达到Vva时,将停止编程为状态A;在少于旨在被编程为状态B的第二预定数量(可以与第一预定数量相同或不同)的存储单元尚未达到Vvb时,将停止编程为状态B;以及在少于旨在被编程为状态C的第一预定数量的存储单元尚未达到VvcL时,将停止编程为状态C。
在另一组实施例中,将仅通过被编程为最高、或最极值状态(例如,状态C或状态S7)的存储单元来执行步骤680和682。
在另一组实施例中,步骤680将对于每个状态使用中间比较值。例如,步骤680将对于被编程为状态A的存储单元使用低于Vva的中间比较值,并且步骤680将对于被编程为状态B的存储单元使用低于Vvb的中间比较值。
在一些实施例中,诸如在阈值电压对于编程较低而在擦除期间提高的情况,中间比较值将高于验证比较值。
图20-23示出了与存储两个数据位的存储单元一起使用的中间比较电平(例如,VvcL)。然而,图20-23教导的概念可以应用于存储多于两个数据位的存储单元。例如,可以与图10和11的编程处理一起使用对步骤680中阈值电压小于中间值的存储单元的计数。在包括存储三个数据位的存储单元的一个示例中,步骤680将对于编程为S1-S6的存储单元,对阈值电压小于S1-S6各自的验证电平(例如,Vv1、Vv2、Vv3、Vv4、Vv5、Vv6)的存储单元进行计数,并且对于编程为状态S7的存储单元,将对小于Vv7L的存储单元进行计数,其中,Vv7L比Vv7低.5v(或不同的值)。在一个替选中,Vv7L可以等于Vv6、Vv5或这些值附近的其它值。
在包括存储三个数据位的存储单元的另一示例中,步骤680将对于编程为S1-S5的存储单元,对阈值电压小于S1-S5各自的验证电平(例如,Vv1、Vv2、Vv3、Vv4以及Vv5)的存储单元进行计数,对于编程为状态S6的存储单元,将对小于Vv6L的存储单元进行计数,以及对于编程为状态S7的存储单元,对小于Vv7L的存储单元进行计数,其中,Vv6L比Vv6低.5v(或不同的值)。
图24描述了VvcL被设置为等于Vvb、或者Vv7L被设置为Vv6的另一实施例。附加地,在确定失败的单元(例如,阈值电压小于中间比较值的单元)的数量小于预定数量之后,应用预定数量的一个或更多个编程脉冲。在下一编程脉冲期间执行步骤680的实施例中(参见图21和23),在下一编程脉冲之后施加预定数量的一个或更多个附加编程脉冲。图24的处理与图13的处理类似(相同附图标记描绘相同步骤);然而,步骤740-744替代步骤680和682。除了VvcL=Vvb或者Vv7L=Vv6之外,步骤740与步骤680类似。除了与失败的单元相比较的预定限制不同之外,步骤742与步骤682类似。如果失败的单元的数量大于预定限制,则处理在步骤684继续。如果失败的单元的数量小于或等于预定限制,则处理在步骤744继续。在步骤744中,预定数量的编程脉冲经由所选字线施加到存储单元。在这些预定数量的编程脉冲之间执行验证操作(其对于成功验证的存储单元封锁)。可以基于仿真或装置特性来确定预定限制和预定数量的编程脉冲。在一个实施例中,可以基于程序-擦除周期的数量、温度或其它因素来动态设置编程脉冲的数量和限制,而不是被预先确定。
图25描述了如下另一实施例:其包括施加预定数量的编程脉冲,并且在旨在编程为状态B的所有存储单元充分被编程为状态B之后结束编程。假设在旨在编程为状态B的所有存储单元充分被编程为状态B之后,旨在编程为状态C的少量存储单元依然不具有达到Vvb的阈值电压。短语“充分地编程”意思是,足够的存储单元达到状态B以考虑编程处理成功。例如,当使用图13的处理将一组存储单元编程为状态B时,当成功地验证足够的存储单元使得验证失败的存储单元的数量少于预定限制(例如,可以利用ECC固定预定限制)时,对该组存储单元进行了充分地编程。此时,假设如果如此测试,则少于旨在编程为状态C的预定限制的存储单元将对于状态B验证失败。因此,仅应用预定附加组的一个或更多个编程脉冲,然后停止编程。当应用该附加组的一个或更多个编程脉冲(在该实施例或图24的实施例中)时,在该附加组的一个或更多个编程脉冲期间或之间将不存在计数的失败单元。为了实现该实施例,被编程为状态C的存储单元将执行图25的处理,而被编程为状态A和B的存储单元将执行图13的处理。
除了以下例外之外,图25的处理与图13的处理类似。如果在步骤676中确定并未正确地验证所有存储单元,则在步骤780中确定是否旨在编程为状态B的所有存储单元充分地编程为状态B。如果不是,则处理在步骤684继续。如果旨在编程为状态B的所有存储单元充分地编程为状态B,则在步骤782中,预定数量的编程脉冲经由所选字线施加到存储单元。在这些预定数量的编程脉冲之间执行验证操作(对于验证成功的存储单元封锁)。可以基于实验、仿真和/或装置特性,确定在步骤782期间施加到存储单元的编程脉冲的数量。编程脉冲之间的增加量会影响在步骤782期间施加到存储单元的编程脉冲的数量。
图25的实施例可以与存储多于两个数据位的存储单元一起使用。例如,图25的处理、以及其它编程处理可以与如图10和11H中描绘而编程的存储单元一起使用。在一个实施例中,当与存储三个数据位的存储单元一起使用图25的处理时,步骤780测试旨在编程为状态S6(第二最高状态)的所有存储单元是否充分编程为状态S6。
在不会不合理地放慢编程处理的情况下、用于实现缩紧阈值电压分布的一个解决方案包括使用两阶段编程处理。第一阶段(粗略编程阶段)包括试图以较快的方式提高阈值电压并且花费较少的注意来实现紧密的阈值电压分布。第二阶段(精细编程阶段)试图以较慢方式提高阈值电压以便达到目标阈值电压,同时还实现较紧密的阈值电压分布。可以在美国专利6,643,188(通过引用将其全部内容合并于此)中得到粗略/精细编程方法的一个示例。
图26A-26C和27A-27C提供了粗略/精细编程方法的一个示例的更多细节。图26A和27A描绘了施加于控制栅的编程脉冲Vpgm。图26B和27B描绘了用于被编程的存储单元的位线电压。图26C和27C描绘了被编程的存储单元的阈值电压。该示例使用两个验证电平,在图中指示为Vver1和Vver2。最终目标电平为Vver1。当存储单元的阈值电压达到Vver1时,通过将禁止电压施加到与该存储单元相对应的位线,可以禁止存储单元进一步被编程。例如,位线电压可以提高到Vinhibit(参见图26B和图27B)。在一个实施例中,Vinhibit为Vdd。然而,当存储单元达到了接近(但低于)目标值Vver1的阈值电压时,通过将特定偏置电压(通常为0.3v到0.8v的量级)施加到位线,减慢在随后编程脉冲期间到存储单元的阈值电压偏移。因为阈值电压偏移的速度在下一较少编程脉冲期间减少,因此最终阈值电压分布可以比其它情况更窄。为了实现该方法,使用低于Vver1的验证电平的第二验证电平。该第二验证电平描绘为Vver2。当存储单元的阈值电压大于Vver2但依然低于Vver1时,通过施加位线偏置Vs(图27B),对于随后编程脉冲将减少到存储单元的阈值电压偏移。注意在该情况下,对于每个状态需要两个验证操作。对于每个状态,一个验证在相应的Vver1处的操作,而对于每个状态,一个验证在相应的Vver2处的操作。这可增大对存储单元进行编程的总时间。然而,较大的AVpgm步进尺寸可以用来加速该处理。
图26A、26B以及26C示出了如下存储单元的性能:其阈值电压在一个编程脉冲中移动经过Vver2和Vver1。例如,在图26C中阈值电压被描绘为在t2和t3之间经过Vver2和Vver1。因此,在t3之前,存储单元在粗略阶段中。在t3之后,存储单元在禁止模式中。
图27A、27B以及27C描绘了进入粗略和精细编程阶段两者的存储单元。存储单元的阈值电压在时间t2和时间t3之间穿过Vver2。在t3之前,存储单元在粗略阶段。在t3之后,位线电压提高至Vs;因此,存储单元在最终阶段。在t3和t4之间,存储单元的阈值电压穿过Vver1;因此,通过将位线电压提高至Vinhibit,禁止存储单元被进一步编程。
可以与相对于图26A-26C和27A-27C描述的粗略/精细编程(或不同类型的粗略/精细编程)一起,使用以上相对于在验证失败的存储单元的估计数量小于限制时停止编程描述的技术。用来估计验证失败的存储单元的数量的中间值可以为Vver2。
一个实施例包括:将编程信号应用于第一组非易失性储存元件,以便将第一组非易失性储存元件编程为第一目标条件;确定尚未达到中间条件的第一组非易失性储存元件的量是否小于比较值;以及响应于确定尚未达到中间条件的第一组非易失性储存元件的量小于比较值,结束第一组非易失性储存元件的编程。中间条件不同于第一目标条件。
一个实施例包括:第一组非易失性储存元件;以及与第一组非易失性储存元件通信的一个或更多个管理电路。一个或更多个管理电路对第一组非易失性储存元件执行编程处理,以将第一组非易失性储存元件编程为第一目标条件。编程处理包括一个或更多个管理电路将编程信号施加到第一组非易失性储存元件、并且验证第一组非易失性储存元件是否达到第一目标条件。一个或更多个管理电路在编程处理期间确定尚未达到中间条件的第一组非易失性储存元件的数量。中间条件不同于第一目标条件。如果尚未达到中间条件的第一组非易失性储存元件的数量小于比较值,则一个或更多个管理电路结束对于第一组非易失性储存元件的编程处理。
一个实施例包括:将编程信号施加到多个非易失性储存元件,以便同时将非易失性储存元件编程为不同目标条件;验证非易失性储存元件是否达到其各自目标条件;对尚未达到相对于最高目标条件的中间条件的第一子集的非易失性储存元件进行计数;以及响应于计数小于尚未达到中间条件的预定数量的第一子集的非易失性储存元件、和确定对旨在不同目标条件的其它目标条件的其它非易失性储存元件充分地编程,结束非易失性储存元件的编程。达到最高目标条件的非易失性储存元件通过中间条件。不同目标条件包括最低目标条件和最高目标条件。编程信号包括一组脉冲。多个非易失性储存元件包括被编程为最高目标条件的非易失性储存元件的第一子集。验证包括在脉冲之间执行一个或更多个验证处理。
一个实施例包括将编程信号施加到多个非易失性储存元件,以便将非易失性储存元件编程为不同目标条件。编程信号包括一组脉冲。不同目标条件包括第一目标条件和第二目标条件。多个非易失性储存元件包括被编程为第一目标条件的非易失性储存元件的第一子集和被编程为第二目标条件的非易失性储存元件的第二子集。该方法还包括验证非易失性储存元件的第二子集是否充分达到第二目标条件,响应于确定非易失性储存元件的第二子集充分达到了第二目标条件而将预定数量的一个或更多个脉冲施加到非易失性储存元件的第一子集,以及响应于、和在将预定数量的一个或更多个脉冲施加到非易失性储存元件的第一子集之后而结束非易失性储存元件的第一子集的编程。
呈现上述本发明的详细描述以用于说明和描述的目的。不旨在穷举或将本发明限制于所公开的精确形式。根据以上教导,许多修改和变更是可能的。选择所描述的实施例以便最好地说明本发明的原理和其实践应用,由此使得本领域技术人员能够最好地在各个实施例中利用本发明,并且其中,各种修改适于设想的特定使用。目的是,通过这里所附权利要求限定本发明的范围。

Claims (16)

1.一种对非易失性储存器进行编程的方法,包括:
将编程信号施加于第一组非易失性储存元件,以便将所述第一组非易失性储存元件编程为第一目标条件,所述编程信号包括一组编程脉冲;
确定尚未达到中间条件的所述第一组非易失性储存元件的数量是否小于比较值,所述中间条件与所述第一目标条件不同;以及
响应于确定尚未达到所述中间条件的所述第一组非易失性储存元件的数量小于所述比较值,结束所述第一组非易失性储存元件的编程,结束编程包括在不将下一编程脉冲施加到所述第一组非易失性储存元件的情况下停止编程,或者在将预定数量的一个或更多个附加编程脉冲施加到所述第一组非易失性储存元件之后停止编程。
2.根据权利要求1所述的方法,还包括:
验证所述第一组非易失性储存元件是否达到所述第一目标条件。
3.根据权利要求2所述的方法,其中,所述确定尚未达到中间条件的所述第一组非易失性储存元件的数量是否小于所述比较值包括:
对尚未达到所述中间条件的所述第一组非易失性储存元件进行计数;以及
对所计数的非易失性储存元件的数量与所述比较值比较。
4.根据权利要求3所述的方法,其中:
所述第一目标条件是阈值电压范围;并且
所述中间条件是作为比所述第一目标条件低的电压电平的阈值电压电平。
5.根据权利要求4所述的方法,其中:
所述第一组非易失性储存元件是多态闪存装置。
6.根据权利要求5所述的方法,其中:
所述第一组非易失性储存元件与一组阈值电压范围相关联,所述第一目标条件是所述一组阈值电压范围中的最高阈值电压范围,所述中间条件是低于所述最高阈值电压范围的阈值电压值。
7.根据权利要求2-6中任一项所述的方法,其中:
所述验证包括在脉冲之间执行一个或更多个验证处理;并且
所述确定包括在至少部分所述脉冲期间对尚未达到所述中间条件的所述第一组非易失性储存元件进行计数。
8.根据权利要求1-6中任一项所述的方法,其中:
施加所述编程信号同时将多个非易失性储存元件编程为不同目标条件,所述不同目标条件包括最低目标条件和最高目标条件,所述多个非易失性储存元件包括所述第一组非易失性储存元件,所述第一目标条件是所述最高目标条件。
9.根据权利要求2-6中任一项所述的方法,其中:
所述验证包括在脉冲之间执行一个或更多个验证处理;并且
所述确定包括在脉冲之间对尚未达到所述中间条件的所述第一组非易失性储存元件进行计数。
10.根据权利要求1-6中任一项所述的方法,其中:
所述第一组非易失性储存元件与一组数据状态相关联,所述第一目标条件是所述一组数据状态之一,所述中间条件是对于所述一组数据状态的不同数据状态的验证值。
11.一种非易失性储存设备,包括:
第一组非易失性储存元件;以及
与所述第一组非易失性储存元件通信的一个或更多个管理电路,所述一个或更多个管理电路对所述第一组非易失性储存元件执行编程处理,以将所述第一组非易失性储存元件编程为第一目标条件,所述编程处理包括所述一个或更多个管理电路将编程信号施加到所述第一组非易失性储存元件、并且验证所述第一组非易失性储存元件是否达到所述第一目标条件,所述编程信号包括一组编程脉冲,所述一个或更多个管理电路在所述编程处理期间确定尚未达到中间条件的所述第一组非易失性储存元件的数量,所述中间条件不同于所述第一目标条件,如果尚未达到所述中间条件的所述第一组非易失性储存元件的数量小于比较值,则所述一个或更多个管理电路结束对于所述第一组非易失性储存元件的所述编程处理,并且所述一个或更多个管理电路在不将下一编程脉冲施加到所述第一组非易失性储存元件的情况下停止编程或者在将预定数量的一个或更多个附加编程脉冲施加到所述第一组非易失性储存元件之后停止编程,以结束所述编程。
12.根据权利要求11所述的非易失性储存设备,其中:
所述一个或更多个管理电路在脉冲之间执行验证。
13.根据权利要求11或12所述的非易失性储存设备,其中:
所述第一组非易失性储存元件是多态闪存装置。
14.根据权利要求11或12所述的非易失性储存设备,还包括:
第二组非易失性储存元件,所述一个或更多个管理电路将所述第二组非易失性储存元件编程为第二目标条件;以及
第三组非易失性储存元件,所述一个或更多个管理电路将所述第三组非易失性储存元件编程为第三目标条件,所述第一目标条件与所述第二目标条件和所述第三目标条件相比为最极值目标条件。
15.根据权利要求11或12所述的非易失性储存设备,还包括:
第二组非易失性储存元件,所述一个或更多个管理电路在将所述第一组非易失性储存元件编程为所述第一目标条件的同时、将所述第二组非易失性储存元件编程为第二目标条件;以及
第三组非易失性储存元件,所述一个或更多个管理电路在将所述第一组非易失性储存元件编程为所述第一目标条件的同时、将所述第三组非易失性储存元件编程为第三目标条件。
16.根据权利要求11或12所述的非易失性储存设备,其中:
所述第一组非易失性储存元件与一组数据状态相关联,所述第一目标条件是所述一组数据状态之一,所述中间条件是对于所述一组数据状态的不同数据状态的验证值。
CN201080027960.7A 2009-06-26 2010-06-08 检测对非易失性储存器的编程的完成 Active CN102483953B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/492,421 US8054691B2 (en) 2009-06-26 2009-06-26 Detecting the completion of programming for non-volatile storage
US12/492,421 2009-06-26
PCT/US2010/037846 WO2010151428A1 (en) 2009-06-26 2010-06-08 Detecting the completion of programming for non-volatile storage

Publications (2)

Publication Number Publication Date
CN102483953A CN102483953A (zh) 2012-05-30
CN102483953B true CN102483953B (zh) 2015-06-24

Family

ID=42668336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080027960.7A Active CN102483953B (zh) 2009-06-26 2010-06-08 检测对非易失性储存器的编程的完成

Country Status (7)

Country Link
US (4) US8054691B2 (zh)
EP (1) EP2446442A1 (zh)
JP (1) JP2012531694A (zh)
KR (1) KR101688603B1 (zh)
CN (1) CN102483953B (zh)
TW (1) TW201104681A (zh)
WO (1) WO2010151428A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7916533B2 (en) * 2009-06-24 2011-03-29 Sandisk Corporation Forecasting program disturb in memory by detecting natural threshold voltage distribution
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
US8174895B2 (en) 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8531888B2 (en) 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
JP5330425B2 (ja) * 2011-02-09 2013-10-30 株式会社東芝 不揮発性半導体メモリ
JP2012198973A (ja) * 2011-03-23 2012-10-18 Toshiba Corp 不揮発性半導体記憶装置
US8913437B2 (en) * 2011-12-15 2014-12-16 Marvell World Trade Ltd. Inter-cell interference cancellation
US9299459B2 (en) 2012-09-07 2016-03-29 Macronix International Co., Ltd. Method and apparatus of measuring error correction data for memory
KR102066739B1 (ko) * 2013-05-15 2020-01-15 현대모비스 주식회사 메모리 덤프 파일 생성 및 복제 장치와 그 동작 방법
KR20150051056A (ko) 2013-11-01 2015-05-11 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9530523B2 (en) * 2014-06-25 2016-12-27 Intel Corporation Thermal disturb as heater in cross-point memory
US9627046B2 (en) 2015-03-02 2017-04-18 Sandisk Technologies Llc Programming techniques for non-volatile memories with charge trapping layers
US11437094B2 (en) 2015-08-13 2022-09-06 Samsung Electronics Co., Ltd. Nonvolatile memory device, storage device, and operation method of storage device
KR102291456B1 (ko) * 2015-08-13 2021-08-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법 및 프로그램 검증 방법
CN106910520B (zh) * 2015-12-22 2021-05-28 北京忆芯科技有限公司 存储装置的写入方法、存储装置、存储控制器和存储系统
CN105654989B (zh) * 2016-03-07 2020-04-24 北京兆易创新科技股份有限公司 Nand flash闪存中状态码的验证方法及装置
US9595343B1 (en) 2016-06-05 2017-03-14 Apple Inc. Early prediction of failure in programming a nonvolatile memory
KR102452994B1 (ko) * 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
KR20180062158A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 루프 상태 정보를 생성하는 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US10249382B2 (en) * 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory
US10134474B1 (en) 2017-10-20 2018-11-20 Sandisk Technologies Llc Independent state completion for each plane during flash memory programming
US10410732B1 (en) * 2018-05-21 2019-09-10 Western Digital Technologies, Inc. Failure prediction by cell probing
KR20200091712A (ko) * 2019-01-23 2020-07-31 에스케이하이닉스 주식회사 반도체 메모리 장치, 컨트롤러 및 이들의 동작 방법
US11049578B1 (en) * 2020-02-19 2021-06-29 Sandisk Technologies Llc Non-volatile memory with program verify skip
CN113764026A (zh) * 2020-04-08 2021-12-07 长江存储科技有限责任公司 一种三维存储器的编程操作方法、存储器装置
US11657883B2 (en) 2021-07-22 2023-05-23 Western Digital Technologies, Inc. Isolating problematic memory planes to avoid neighbor plan disturb
KR20230098657A (ko) * 2021-08-27 2023-07-04 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 장치 및 그 프로그램 동작
US20230091724A1 (en) * 2021-09-17 2023-03-23 Samsung Electronics Co., Ltd. Storage device, non-volatile memory, and method of operating program of non-volatile memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1783343A (zh) * 2004-10-26 2006-06-07 三星电子株式会社 非易失性存储器件及其编程方法
CN1902711A (zh) * 2003-10-29 2007-01-24 赛芬半导体有限公司 用于对非易失性存储器阵列编程的方法、系统和电路
US7339835B1 (en) * 2005-02-14 2008-03-04 National Semiconductor Corporation Non-volatile memory structure and erase method with floating gate voltage control

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781895B1 (en) * 1991-12-19 2004-08-24 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device and memory system using the same
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
WO1998028745A1 (en) 1996-12-20 1998-07-02 Intel Corporation Nonvolatile writeable memory with fast programming capability
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5867429A (en) 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6418059B1 (en) * 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
DE60230592D1 (de) 2002-05-21 2009-02-12 St Microelectronics Srl Selbstreparaturverfahren für nichtflüchtige Speicheranordnung mit Lösch-/Programmierfehlerdetektion, und nichtflüchtige Speicheranordnung dafür
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US6657891B1 (en) 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US6859397B2 (en) 2003-03-05 2005-02-22 Sandisk Corporation Source side self boosting technique for non-volatile memory
JP4256198B2 (ja) 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US6917542B2 (en) 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US7046555B2 (en) * 2003-09-17 2006-05-16 Sandisk Corporation Methods for identifying non-volatile memory elements with poor subthreshold slope or weak transconductance
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
US6888758B1 (en) 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
JP4261462B2 (ja) 2004-11-05 2009-04-30 株式会社東芝 不揮発性メモリシステム
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7295478B2 (en) 2005-05-12 2007-11-13 Sandisk Corporation Selective application of program inhibit schemes in non-volatile memory
EP1891644B1 (en) 2005-06-15 2009-02-11 Micron Technology, Inc. Selective slow programming convergence in a flash memory device
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7440319B2 (en) 2006-11-27 2008-10-21 Sandisk Corporation Apparatus with segmented bitscan for verification of programming
US7545681B2 (en) 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
US7564711B2 (en) 2007-02-20 2009-07-21 Sandisk Corporation Multiple pass write sequence for non-volatile storage
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1902711A (zh) * 2003-10-29 2007-01-24 赛芬半导体有限公司 用于对非易失性存储器阵列编程的方法、系统和电路
CN1783343A (zh) * 2004-10-26 2006-06-07 三星电子株式会社 非易失性存储器件及其编程方法
US7339835B1 (en) * 2005-02-14 2008-03-04 National Semiconductor Corporation Non-volatile memory structure and erase method with floating gate voltage control

Also Published As

Publication number Publication date
US20130016566A1 (en) 2013-01-17
EP2446442A1 (en) 2012-05-02
KR20120039562A (ko) 2012-04-25
JP2012531694A (ja) 2012-12-10
USRE45603E1 (en) 2015-07-07
KR101688603B1 (ko) 2016-12-22
US8054691B2 (en) 2011-11-08
US20100329004A1 (en) 2010-12-30
CN102483953A (zh) 2012-05-30
TW201104681A (en) 2011-02-01
WO2010151428A1 (en) 2010-12-29
US8416626B2 (en) 2013-04-09
US8605513B2 (en) 2013-12-10
US20120033494A1 (en) 2012-02-09

Similar Documents

Publication Publication Date Title
CN102483953B (zh) 检测对非易失性储存器的编程的完成
CN102754164B (zh) 具有快速位检测及验证跳过的对非易失性存储器的编程
CN102160118B (zh) 非易失性存储器阵列的最后字线的数据保持的改进
CN102138182B (zh) 编程并选择性地擦除非易失性存储器
KR101502104B1 (ko) 프로그래밍 동안에 간섭의 영향을 감소시키는 방법
CN102906820B (zh) 用同步耦合编程非易失性存储器
CN102160119B (zh) 非易失性存储器中感测期间的基于数据状态的温度补偿
CN102099867B (zh) 非易失性存储器的擦除-验证处理
CN102005244B (zh) 非易失性存储的可变编程
CN102385924B (zh) 借助非易失性存储器的循环的开始编程电压偏移
KR101736414B1 (ko) 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍
CN102203874B (zh) 以高分辨率可变初始编程脉冲对非易失性存储器编程
CN100589202C (zh) 多级单元快闪存储器中较高级状态的较快编程
CN101584004B (zh) 使用早期源极侧升压减少非易失性存储装置中的编程干扰
CN107112047A (zh) 用于在非易失性存储器中区块编程的部分区块擦除
WO2014039459A1 (en) Non-volatile storage with joint hard bit and soft bit reading
CN103765519A (zh) 用于非易失性存储的读取通过电压的智能移位
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
CN105009218B (zh) 用于收紧阈值电压宽度以避免编程干扰的编程方法
CN102138181A (zh) 用最小的额外时间损失来减少干扰的改进编程算法
JP2012531003A (ja) 不揮発性記憶装置においてチャネルブーストを改良するための縮小されたプログラミングパルス幅
CN102187399A (zh) 使用字线耦合的用于存储器的多趟次编程
CN101779250B (zh) 编程脉冲持续期的智能控制
CN101802925B (zh) 控制门线架构
CN104704567A (zh) 针对非易失性存储器的写入数据保存

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Technologies, Inc