掌桥专利:专业的专利平台
掌桥专利
首页

具有程序验证跳过的非易失性存储器

文献发布时间:2023-06-19 12:16:29



背景技术

半导体存储器广泛用于各种电子设备,诸如蜂窝电话、数码相机、个人数字助理、医疗电子器件、移动计算设备、服务器、固态驱动器、非移动计算设备和其它设备。半导体存储器可以包括非易失性存储器或易失性存储器。即使当非易失性存储器未连接到电源(例如,电池)时,非易失性存储器也允许存储和保留信息。非易失性存储器的示例为闪存存储器(例如,NAND型和NOR型闪存存储器)。非易失性存储器的用户通常希望存储器高速工作,使得他们不需要等待存储操作完成。

附图说明

类似编号的元件是指不同的图中的共同部件。

图1是描绘存储器系统的一个实施方案的框图。

图2是存储器管芯的一个实施方案的框图。

图3是单片三维存储器结构的一个实施方案的一部分的透视图。

图4A是具有两个平面的存储器结构的框图。

图4B描绘了存储器单元的块的一部分的顶视图。

图4C描绘了存储器单元的块的一部分的剖视图。

图4D描绘了选择栅极层和字线层的视图。

图4E是存储器单元的竖直列的剖视图。

图4F是多个NAND串的示意图,示出了多个子块。

图5描绘了阈值电压分布。

图6描绘了阈值电压分布。

图7是描述将数据值分配给数据状态的一个示例的表。

图8是描述用于对非易失性存储器进行编程的过程的一个实施方案的流程图。

图9描绘了一系列编程电压脉冲。

图10描绘了两个编程电压脉冲和一个验证电压脉冲。

图11描绘了两个编程电压脉冲和一组验证电压脉冲。

图12是描述用于对非易失性存储器进行编程验证的过程的一个实施方案的流程图。

图13A是描述编程过程期间的位线电压的曲线图。

图13B是描述编程过程期间的位线电压的曲线图。

图14是描述用于对非易失性存储器进行编程和编程验证的过程的一个实施方案的流程图。

图15是正被编程的一组非易失性存储器单元的阈值电压分布的曲线图。

图16是正被编程的一组非易失性存储器单元的阈值电压分布的曲线图。

图17是正被编程的一组非易失性存储器单元的阈值电压分布的曲线图。

图18描绘了描述在对非易失性存储器进行编程验证时执行的过程的一个实施方案的流程图。

图19是正被编程的一组非易失性存储器单元的两个阈值电压分布的曲线图。

具体实施方式

通过将编程信号作为一系列编程电压脉冲(或其它编程剂量)施加到选定的存储器单元并且验证编程电压脉冲之间的存储器单元来对非易失性存储器单元进行编程。为了实现更紧密的阈值电压分布,使用包括编程电压脉冲之间的两步验证的粗略/精细编程过程,该编程电压脉冲包括中间验证条件和最终验证条件。已达到中间验证条件的正被编程的存储器单元被减慢以进一步编程。已达到最终验证条件的正被编程的存储器单元被抑制进一步编程。为了减少执行的验证操作数量,本发明提出了一种系统,该系统针对一些编程电压脉冲在中间验证条件下跳过验证并且针对一些编程电压脉冲在最终验证条件下跳过验证。

非易失性存储装置的一个实施方案包括多个非易失性存储器单元和连接到这些非易失性存储器单元的控制电路。控制电路被配置为:执行将非易失性存储器单元编程到第一数据状态(以及可能的其它数据状态)的编程过程;针对第一数据状态的中间验证条件执行程序验证而不针对第一数据状态的最终验证条件执行程序验证,直到满足第一标准;在满足第一标准之后并且直到满足第二标准,针对中间验证条件和最终验证条件执行程序验证;以及在满足第二标准之后,针对最终验证条件执行程序验证而不针对中间验证条件执行程序验证。在一个示例中,当阈值数量的多个非易失性存储器单元已达到中间验证条件时,满足第一标准。在一些示例中,当阈值数量的多个非易失性存储器单元已达到最终验证条件时,在满足第一标准之后,在已将预定数量的编程剂量施加到多个非易失性存储器之后,或最小数量的非易失性存储器单元已达到第二数据状态的目标电平,满足第二标准。

图1是实现本发明的技术(包括本发明的用于跳过验证的过程)的存储系统100的一个实施方案的框图。在一个实施方案中,存储系统100为固态驱动器(“SSD”)。存储系统100还可为存储卡、USB驱动器或其它类型的存储系统。本发明的技术不限于任何一种类型的存储系统。存储系统100连接到主机102,主机可为计算机、服务器、电子设备(例如,智能电话、平板电脑或其它移动设备)、器具或使用存储器并具有数据处理能力的另一种装置。在一些实施方案中,主机102与存储系统100分开,但连接到存储系统。在其它实施方案中,存储系统100嵌入在主机102中。

图1中描绘的存储系统100的部件为电子电路。存储系统100包括连接到一个或多个存储器管芯130和本地高速易失性存储器140(例如,DRAM)的控制器120。一个或多个存储器管芯130各自包括多个非易失性存储器单元。下面提供关于每个存储器管芯130的结构的更多信息。控制器120使用本地高速易失性存储器140来执行某些功能。例如,本地高速易失性存储器140将逻辑存储在物理地址转换表(“L2P表”)中。

控制器120包括连接到主机102并与其通信的主机接口152。在一个实施方案中,主机接口152提供PCIe接口。也可使用其它接口,诸如SCSI、SATA等。主机接口152还连接到片上网络(NOC)154。NOC是集成电路上的通信子系统。NOC可跨越同步和异步时钟域,或者使用非时钟的异步逻辑。NOC技术将网络理论和方法应用于片上通信,并且与常规总线和交叉开关互连相比带来了显著的改善。与其它设计相比,NOC提高了片上系统(SoC)的可扩展性以及复杂SoC的电源效率。NOC的导线和链路由许多信号共享。由于NOC中的所有链路可在不同的数据分组上同时运行,因此实现了高度并行。因此,随着集成子系统的复杂性不断增大,与先前的通信架构(例如,专用的点对点信号线、共享总线或具有桥的分段总线)相比,NOC提供增强的性能(诸如吞吐量)和可扩展性。在其它实施方案中,NOC 154可由总线替换。处理器156、ECC引擎158、存储器接口160和DRAM控制器164连接到NOC 154并与其通信。DRAM控制器164用于操作本地高速易失性存储器140(例如,DRAM)并与其通信。在其它实施方案中,本地高速易失性存储器140可为SRAM或另一种类型的易失性存储器。

ECC引擎158执行错误校正服务。例如,ECC引擎158根据实现的ECC技术执行数据编码和解码。在一个实施方案中,ECC引擎158是由软件编程的电子电路。例如,ECC引擎158可为可编程的处理器。在其它实施方案中,ECC引擎158是不具有任何软件的定制的专用硬件电路。在另一个实施方案中,ECC引擎158的功能由处理器156实现。

处理器156执行各种控制器存储器操作,诸如编程、擦除、读取以及存储器管理过程。在一个实施方案中,处理器156由固件编程。在其它实施方案中,处理器156是不具有任何软件的定制的专用硬件电路。处理器156还实现转换模块,作为软件/固件过程或作为专用硬件电路。在许多系统中,使用与一个或多个存储器管芯相关联的物理地址将非易失性存储器向内寻址到存储系统。然而,主机系统将使用逻辑地址来寻址各种存储器位置。这使主机能够将数据分配给连续的逻辑地址,同时存储系统空闲下来按希望的那样在一个或多个存储器管芯的位置间存储数据。为了实现这种系统,控制器(例如,转换模块)在由主机使用的逻辑地址与由存储器管芯使用的物理地址之间执行地址转换。一个示例性具体实施是维护识别逻辑地址与物理地址之间的当前转换的表(即,上述L2P表)。L2P表中的条目可包括逻辑地址和对应物理地址的标识。虽然逻辑地址到物理地址表(或L2P表)包括字词“表”,但它们不必是字面意义上的表。而是,逻辑地址到物理地址表(或L2P表)可为任何类型的数据结构。在一些示例中,存储系统的存储器空间非常大,以致于本地存储器140不能保存所有L2P表。在这种情况下,将整组L2P表存储在存储器管芯130中,并且将L2P表的子集高速缓存(L2P高速缓存)在本地高速非易失性存储器140中。

存储器接口160与一个或多个存储器管芯130通信。在一个实施方案中,存储器接口提供切换模式接口。也可使用其它接口。在一些示例性具体实施中,存储器接口160(或控制器120的另一部分)实现用于向一个或多个存储器管芯传输数据以及从一个或多个存储器管芯接收数据的调度器和缓冲器。

图2是存储器管芯300的一个实施方案的功能框图。图1的一个或多个存储器管芯130中的每一个都可实现为图2的存储器管芯300。图2中描绘的部件为电子电路。在一个实施方案中,每个存储器管芯300包括存储器结构326、控制电路310和读/写电路328。存储器结构326能够经由行解码器324由字线来寻址,并且经由列解码器332由位线来寻址。读/写电路328包括多个感测块350(该多个感测块包括SB1、SB2、…、SBp(感测电路))并且允许多个存储器单元中的一个(或多个)数据页面被并行读取或并行编程(写入)。在一个实施方案中,每个感测块都包括感测放大器和连接到位线的一组锁存器。锁存器存储要写入的数据和/或已读取的数据。感测放大器包括位线驱动器。命令和数据经由线路319在控制器与存储器管芯300之间传输。在一个实施方案中,存储器管芯300包括连接到线路118的一组输入和/或输出(I/O)引脚。

控制电路310与读/写电路328协作以在存储器结构326上执行存储器操作(例如,写入、读取、擦除等)。在一个实施方案中,控制电路310包括状态机312、片上地址解码器314、功率控制电路316和存储器管芯参数318。状态机312提供存储器操作的管芯级控制。在一个实施方案中,状态机312可由软件编程。在其它实施方案中,状态机312不使用软件并且完全地在硬件(例如,电子电路)中实现。在一些实施方案中,状态机312可以被可编程的微控制器或微处理器替换。在一个实施方案中,控制电路310包括存储在缓冲器诸如寄存器、锁存器、ROM熔丝和其它存储设备中的存储器管芯参数318。存储器管芯参数318是默认值,诸如由存储器管芯300使用(例如,由状态机312使用)以执行存储器操作的基础电压和其它参数。一个示例是跳过参数SP,其在编程过程的一个实施方案期间使用,用于在满足第一标准以改变跳过验证的模式之后指示预定数量的编程脉冲,如下所述。在一个实施方案中,跳过参数SP在作为存储器管芯300的制造的一部分的测试期间设定。

片上地址解码器314将控制器120使用的地址之间的地址接口提供给解码器324和解码器332所用的硬件地址。功率控制模块316控制在存储器操作期间提供给字线和位线的功率和电压。功率控制模块316可以包括用于产生电压的充电泵。

出于本文件的目的,控制电路310、读/写电路328和解码器324/332包括用于存储器结构326的控制电路的一个实施方案。在其它实施方案中,支持存储器结构326并在其上工作的其它电路可被称为控制电路。例如,在一些实施方案中,控制器120可作为控制电路工作或者可为控制电路的一部分。在一些实施方案中,控制器120与控制电路310、读/写电路328和解码器324/332相结合地包括控制电路的一个实施方案。在另一个实施方案中,状态机312包括控制电路。在另一个实施方案中,主机可提供控制电路。

在一个实施方案中,存储器结构326包括非易失性存储器单元的单片三维存储器阵列,其中多个存储器级形成在单个基板诸如晶圆上方。存储器结构可以包括在存储器单元阵列的一个或多个物理层中单片地形成的任何类型的非易失性存储器,其具有设置在硅(或其它类型)衬底上方的有源区域。在一个示例中,存储器结构326的非易失性存储器单元包括具有电荷捕集材料的竖直NAND串,诸如例如在美国专利9,721,662中所述的,该专利全文以引用方式并入本文。NAND串包括由沟道连接的存储器单元。

在另一个实施方案中,存储器结构326包括非易失性存储器单元的二维存储器阵列。在一个示例中,非易失性存储器单元是利用浮栅的NAND闪存存储器单元,诸如例如在美国专利9,082,502中所述的,该专利全文以引用方式并入本文。也可使用其它类型的存储器单元(例如,NOR型闪存存储器)。

包括在存储器结构326中的存储器阵列架构或存储器单元的确切类型不限于上述示例。许多不同类型的存储器阵列架构或存储器单元技术可用于形成存储器结构326。实现本文提出的要求保护的新实施方案不需要特定的非易失性存储器技术。用于存储器结构326的存储器单元的合适技术的其它示例包括铁电存储器(FeRAM或FeFET)、ReRAM存储器、磁阻存储器(例如,MRAM、自旋转移扭矩MRAM、自旋轨道扭矩MRAM)、相变存储器(例如,PCM)等。用于存储器结构326的架构的合适技术的示例包括二维阵列、三维阵列、交叉点阵列、堆叠二维阵列、竖直位线阵列等。

ReRAM、或PCMRAM、交叉点存储器的一个示例包括可逆电阻切换元件,其布置在由X线和Y线(例如,字线和位线)访问的交叉点阵列中。在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。

磁阻存储器(MRAM)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化来存储内存。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。

相变存储器(PCM)利用了硫属化合物玻璃的独特性能。一个实施方案使用Ge2Sb2Te5合金以通过电加热相变材料来实现相变。编程剂量是不同幅值和/或长度的电脉冲,从而导致相变材料的不同电阻值。

本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储器结构,但涵盖了在本文所述和如本领域普通技术人员所理解的技术实质与范围内的许多相关的存储器结构。

图3是可包括存储器结构326的单片三维存储器阵列的一个示例性实施方案的一部分的透视图,该存储器结构包括被布置为竖直NAND串的多个非易失性存储器单元。例如,图3示出了一个存储器块的一部分。所描绘的结构包括一组位线BL,其位于交替的介电层和导电层的堆叠上方。出于示例目的,将介电层中的一个标记为D,并且将导电层中的一个(也被称为字线层)标记为W。交替的介电层和导电层的数量可以基于特定具体实施要求而变化。一组实施方案包括108-300个交替的介电层和导电层。一个示例实施方案包括96个数据字线层、8个选择层、6个虚设字线层和110个介电层。也可以使用多于或少于108至300个层。如将在下面所说明,交替的介电层和导电层被局部互连LI分成四个“指状部”。图3示出了两个指状部和两个局部互连LI。源极线层SL位于交替的介电层和字线层下方。在交替的介电层和导电层的堆叠中形成存储器孔。例如,存储器孔被标记为MH。需注意,在图3中,介电层被描绘为透视图,使得读者可以看到位于交替的介电层和导电层的堆叠中的存储器孔。在一个实施方案中,通过用包括电荷捕集材料的材料填充存储器孔以形成存储器单元的竖直列来产生NAND串。每个存储器单元可以存储一个或多个数据位。下面关于图4A至图4F提供包括存储器结构326的三维单片存储器阵列的更多细节。

图4A是说明存储器结构326的一个示例性组织的框图,该存储器结构被分为两个平面302和304。然后,将每个平面分成M个块。在一个示例中,每个平面具有约2000个块。然而,也可以使用不同数量的块和平面。在一个实施方案中,存储器单元的块是擦除单位。即,一个块的所有存储器单元一起被擦除。在其它实施方案中,可以出于其它原因将存储器单元分组为块,诸如为了组织存储器结构126以启用信令和选择电路。在一些实施方案中,块表示一组连接的存储器单元,因为块的存储器单元共享一组公共的字线。

图4B至图4F描绘了示例性三维(“3D”)NAND结构,其对应于图3的结构并且可用于实现图2的存储器结构326。图4B是描绘来自存储器结构326的一个块的一部分的顶视图的框图。图4B中描绘的框的部分对应于图4A的框2中的部分306。从图4B中可以看出,图4B中描绘的块沿332的方向延伸。在一个实施方案中,存储器阵列具有许多层;然而,图4B仅示出了顶层。

图4B描绘了表示竖直列的多个圆圈。竖直列中的每一个包括多个选择晶体管(也称为选择栅极或选取栅极)和多个存储器单元。在一个实施方案中,每个竖直列实现一个NAND串。例如,图4B描绘了竖直列422、432、442和452。竖直列422实现NAND串482。竖直列432实现NAND串484。竖直列442实现NAND串486。竖直列452实现NAND串488。下面提供了竖直列的更多细节。由于图4B中描绘的块在箭头330的方向上和在箭头332的方向上延伸,因此该块包括比图4B中描绘的更多的竖直列

图4B还描绘了一组位线415,包括位线411、412、413、414、……、419。图4B示出了二十四个位线,因为仅示出了该块的一部分。设想的是,多于二十四个位线连接到该块的竖直列。表示竖直列的每个圆圈都有一个“x”以指示其与一个位线连接。例如,位线414连接到竖直列422、432、442和452。

图4B中描绘的块包括一组局部互连402、404、406、408和410,该组局部互连将各个层连接到在竖直列下方的源极线。局部互连402、404、406、408和410还用于将块的每个层分为四个区域;例如,图4B中描绘的顶层被分为区域420、430、440和450,这些区域被称为指状部。在实现存储器单元的块的层中,这四个区域被称为字线指状部,它们被局部互连分开。在一个实施方案中,在块的公共级上的字线指状部连接在一起以形成单一字线。在另一个实施方案中,在同一级上的字线指状部不连接在一起。在一个示例性实施方式中,位线仅连接到区域420、430、440和450中的每个中的一个竖直列。在该实施方式中,每个块具有十六行活动列,并且每个位线连接到每个块中的四个行。在一个实施方案中,连接到公共位线的所有四个行都连接到同一字线(经由连接在一起的在同一级上的不同字线指状部);因此,系统使用源极侧选择线和漏极侧选择线来选择四个中的要进行存储器操作(编程、验证、读取和/或擦除)的一个(或另一个子集)。

尽管图4B示出了在一个块中每个区域具有四行竖直列,四个区域就有十六行竖直列,但是这些确切数字是示例性实施方式。其它实施方案可以包括每一块更多或更少的区域、每一区域更多行或更少行的竖直列、以及每一块更多行或更少行的竖直列。

图4B还示出了竖直列是交错的。在其它实施方案中,可以使用不同交错模式。在一些实施方案中,竖直列不交错。

图4C描绘了三维存储器结构326的一个实施方案的一部分,示出了沿图4B的线AA的剖视图。该剖视图切穿竖直列432和434以及区域430(参见图4B)。图4C的结构包括:四个漏极侧选择层SGD0、SGD1、SGD2和SGD3;四个源极侧选择层SGS0、SGS1、SGS2和SGS3;六个虚设字线层DD0、DD1、DS0、DS1、WLDL、WLDU;以及九十六个数据字线层WLL0至WLL95,这些数据字线层用于连接到数据存储器单元。其它实施方案可实现多于或少于四个漏极侧选择层、多于或少于四个源极侧选择层、多于或少于六个虚设字线层,以及多于或少于九十六个字线层。竖直列432和434被描绘为突出穿过漏极侧选择层、源极侧选择层、虚设字线层以及字线层。在一个实施方案中,每个竖直列都包括竖直NAND串。例如,竖直列432包括NAND串484。在竖直列和下面列出的层之下的是基板101、基板上的绝缘膜454以及源极线SL。竖直列432的NAND串在堆叠的底部处具有源极端并且在堆叠的顶部处具有漏极端。与图4B一致,图4C示出了经由连接器415连接到位线414的竖直列432。还描绘了局部互连404和406。

为了便于引用,漏极侧选择层SGD0、SGD1、SGD2和SGD3;源极侧选择层SGS0、SGS1、SGS2和SGS3;虚设字线层DD0、DD1、DS0、DS1、WLDL和WLDU;以及字线层WLL0至WLL95被统称为导电层。在一个实施方案中,导电层由TiN和钨的组合制成。在其它实施方案中,可以使用其它材料形成导电层,诸如掺杂的多晶硅、金属(诸如钨或金属硅化物)。在一些实施方案中,不同导电层可以由不同材料形成。在导电层之间的是介电层DL0至DL111。例如,介电层DL104在字线层WLL94上方并且在字线层WLL95下方。在一个实施方案中,介电层由SiO

非易失性存储器单元沿竖直列形成,该竖直列延伸穿过堆叠中的交替的导电层和介电层。在一个实施方案中,存储器单元布置在NAND串中。字线层WLL0至WLL95连接到存储器单元(也称为数据存储器单元)。虚设字线层DD0、DD1、DS0、DS1、WLDL和WLDU连接到虚设存储器单元。虚设存储器单元不存储主机数据并且没有资格存储主机数据(从主机提供的数据,诸如来自主机用户的数据),而数据存储器单元有资格存储主机数据。在一些实施方案中,数据存储器单元和虚设存储器单元可具有相同结构。虚设字线连接到虚设存储器单元。漏极侧选择层SGD0、SGD1、SGD2和SGD3用于将NAND串与位线电连接和断开。源极侧选择层SGS0、SGS1、SGS2和SGS3用于将NAND串与源极线SL电连接和断开。

图4C还示出了接合区域。在一个实施方案中,蚀刻与介电层混合的九十六个字线层是昂贵和/或具有挑战性的。为了减轻这种负担,一个实施方案包括铺设与介电层交替的四十八个字线层的第一堆叠,铺设接合区域,以及铺设与介电层交替的四十八个字线层的第二堆叠。接合区域定位在第一堆叠与第二堆叠之间。接合区域用于将第一堆叠连接到第二堆叠。在图4C中,第一堆叠被标记为“字线的下集”,并且第二堆叠被标记为“字线的上集”。在一个实施方案中,接合区域由与字线层相同的材料制成。在一个示例性具体实施组中,多条字线(控制线)包括交替的字线层和介电层的第一堆叠、交替的字线层和介电层的第二堆叠,以及第一堆叠与第二堆叠之间的接合区域,如图4C所示。

图4D描绘了图4C中部分地描绘的块的导电层(SGD0、SGD1、SGD2、SGD3、SGS0、SGS1、SGS2、SGS3、DD0、DD1、DS0、DS1以及WLL0至WLL95)的逻辑表示。如上面关于图4B所述,在一个实施方案中,局部互连402、404、406、408和410将导电层分成四个区域/指状部(或子块)。例如,字线层WLL94被划分成区域460、462、464和466。对于字线层(WLL0至WLL127),区被称为字线指状部;例如,字线层WLL126被划分成字线指状部460、462、464和466。例如,区域460是一个字线层上的一个字线指状部。在一个实施方案中,在同一级上的四个字线指状部连接在一起。在另一个实施方案中,每个字线指状部作为单独的字线操作。

漏极侧选择栅极层SGD0(顶层)也被划分成区域420、430、440和450,也称为指状部或选择线指状部。在一个实施方案中,在同一级上的四个选择线指状部连接在一起。在另一个实施方案中,每个选择线指状部作为单独的字线操作。

图4E描绘了包括竖直列432(存储器孔)的一部分的图4C的区域429的剖视图。在一个实施方案中,竖直列是圆形的;然而,在其它实施方案中,可使用其它形状。在一个实施方案中,竖直列432包括由诸如SiO

图4E描绘了介电层DLL105、DLL104、DLL103、DLL102和DLL101,以及字线WLL95、WLL94、WLL93、WLL92和WLL91。字线层中的每个字线层包括由氧化铝层477包围的字线区域476,氧化铝层由阻挡氧化物层478包围。字线层与竖直列的物理相互作用形成存储器单元。因此,在一个实施方案中,存储器单元包括沟道471、隧穿电介质472、电荷捕集层473、阻挡氧化物层478、氧化铝层477以及字线区域476。例如,字线层WLL95和竖直列432的一部分构成存储器单元MC1。字线层WLL94和竖直列432的一部分构成存储器单元MC2。字线层WLL93和竖直列432的一部分构成存储器单元MC3。字线层WLL92和竖直列432的一部分构成存储器单元MC4。字线层WLL91和竖直列432的一部分构成存储器单元MC5。在其它架构中,存储器单元可具有不同结构;然而,存储器单元仍将是数据存储单元。

当对存储器单元进行编程时,电子存储在与存储器单元相关联的电荷捕集层473的一部分中。响应于字线区域476上的适当电压,这些电子通过隧穿电介质472从沟道471被吸引到电荷捕集层473中。存储器单元的阈值电压(Vth)与所存储的电荷量成比例地增大。在一个实施方案中,通过电子的福勒-诺得海姆(Fowler-Nordheim)隧穿到电荷捕集层中来实现编程。在擦除操作期间,电子返回到沟道或空穴被注入到电荷捕集层中以与电子重组。在一个实施方案中,使用经由诸如栅极感应的漏极泄漏(GIDL)的物理机制的空穴注入到电荷捕集层中来实现擦除。

图4F是图3至图4E中描绘的存储器的一部分的示意图。图4F示出了跨整个块延伸的物理字线WLL0至WLL95。图4F的结构对应于图4A至图4E的块2中的部分306,包括位线411、412、413、414、…、419。在该块内,每个位线连接到四个NAND串。漏极侧选择线SGD0、SGD1、SGD2和SGD3用于确定四个NAND串中的哪一个连接到相关联的一个或多个位线。源极侧选择线SGS0、SGS1、SGS2和SGS3用于确定四个NAND串中的哪一个连接到公共源极线。还可以考虑将该块划分成四个子块SB0、SB1、SB2和SB3。子块SB0对应于由SGD0和SGS0控制的竖直NAND串,子块SB1对应于由SGD1和SGS1控制的竖直NAND串,子块SB2对应于由SGD2和SGS2控制的竖直NAND串,并且子块SB3对应于由SGD3和SGS3控制的竖直NAND串。

虽然图3至图4F的示例性存储器系统是包括具有电荷捕集材料的竖直NAND串的三维存储器结构,但是其它(2D和3D)存储器结构也可与本文所述的技术一起使用。

上面讨论的存储器系统可以被擦除、编程和读取。在成功编程过程(具有验证)结束时,在适当时,存储器单元的阈值电压应当在用于经编程的存储器单元的阈值电压的一个或多个分布内或在经擦除的存储器单元的阈值电压的分布内。

图5是阈值电压与存储器单元数量的曲线图,并且示出了当每个存储器单元存储一位数据时存储器阵列的示例性阈值电压分布。图5示出了两个阈值电压分布:E和P。阈值电压分布E对应于擦除数据状态。阈值电压分布P对应于编程数据状态。因此,在阈值电压分布E中具有阈值电压的存储器单元处于擦除数据状态(例如,它们被擦除)。因此,在阈值电压分布P中具有阈值电压的存储器单元处于编程数据状态(例如,它们被编程)。在一个实施方案中,被擦除的存储器单元存储数据“1”,并且被编程的存储器单元存储数据“0”。存储一位数据的存储器单元被称为单级单元(“SLC”)。

图6是阈值电压与存储器单元数量的曲线图,并且示出了当每个存储器单元存储三位数据时存储器阵列的示例性阈值电压分布。然而,其它实施方案可以使用每一存储器单元其它数据容量(例如,诸如每一存储器单元一位数据、二位数据、四位数据或五位数据)。存储多于一位数据的存储器单元被称为多级单元(“MLC”)。图6示出了八个阈值电压分布,其对应于八个数据状态。对于数据状态N,该数据状态N具有比数据状态N-1更高的阈值电压和比数据状态N+1更低的阈值电压。第一阈值电压分布(数据状态)S0表示被擦除的存储器单元。其它七个阈值电压分布(数据状态)S1至S7表示被编程的存储器单元,并且因此也称为编程数据状态。在一些实施方案中,数据状态S1-S7可重叠,其中控制器122依赖错误校正来识别正在存储的正确数据。

图6示出了七个读取参考电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7,用于从存储器单元读取数据。通过测试(例如,执行感测操作)给定存储器单元的阈值电压是高于还是低于七个读取参考电压,系统可以确定存储器单元所处于的数据状态(即,S0、S1、S2、S3、…)。在图5中,参考电压Vr用于测试存储器单元被擦除还是被编程。

图6还示出了七个验证参考电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7(也称为验证目标电压)。当将存储器单元编程为数据状态S1时,系统将测试这些存储器单元是否具有大于或等于Vv1的阈值电压。当将存储器单元编程为数据状态S2时,系统将测试存储器单元是否具有大于或等于Vv2的阈值电压。当将存储器单元编程为数据状态S3时,系统将确定存储器单元是否具有大于或等于Vv3的阈值电压。当将存储器单元编程为数据状态S4时,系统将测试这些存储器单元是否具有大于或等于Vv4的阈值电压。当将存储器单元编程为数据状态S5时,系统将测试这些存储器单元是否具有大于或等于Vv5的阈值电压。当将存储器单元编程为数据状态S6时,系统将测试这些存储器单元是否具有大于或等于Vv6的阈值电压。当将存储器单元编程为数据状态S7时,系统将测试这些存储器单元是否具有大于或等于Vv7的阈值电压。

在被称为全序列编程的一个实施方案中,存储器单元可从擦除的数据状态S0直接编程到编程数据状态S1-S7中的任一种。例如,可首先擦除要被编程的存储器单元的群体,使得该群体中的所有存储器单元处于擦除数据状态S0。然后,使用编程过程来将存储器单元直接编程到数据状态S1、S2、S3、S4、S5、S6和/或S7中。例如,虽然一些存储器单元正在从数据状态S0编程到数据状态S1,但其它存储器单元正在从数据状态S0编程到数据状态S2和/或从数据状态S0编程到数据状态S3,以此类推。图6的箭头表示全序列编程。除全序列编程之外,本文所述的技术还可与其它类型的编程(包括但不限于多级编程/多相编程)一起使用。

图6的每个阈值电压分布(数据状态)对应于存储在存储器单元中的一组数据位的预定值。编程到存储器单元中的数据与存储器单元的阈值电压电平之间的具体关系取决于存储器单元采用的数据编码方案。在一个实施方案中,使用格雷码分配将数据值分配到阈值电压范围,使得如果存储器的阈值电压错误地移位到其相邻物理状态,那么将仅影响一个位。

图7是描述将数据值分配给数据状态的一个示例的表。在图6的表中,S0=111(擦除状态),S1=110,S2=100,S3=000,S4=010,S5=011,S6=001,并且S7=101。也可以使用数据的其它编码。本文所公开的技术不需要特定的数据编码。在一个实施方案中,当块经受擦除操作时,所有存储器单元被移动到数据状态S0,即擦除状态。

一般来讲,在验证操作和读取操作期间,将选定的字线连接到电压(参考信号的一个示例),该电压的电平针对每个读取操作(例如,参见图6的读取参考电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7)或验证操作(例如,参见图6的验证参考电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7)指定,以便确定相关存储器单元的阈值电压是否已达到这个电平。在施加字线电压之后,测量存储器单元的传导电流以确定该存储器单元是否响应于施加到字线的电压而接通(被传导电流)。如果传导电流被测量为大于特定值,那么假设存储器单元被接通并且施加到字线的电压大于存储器单元的阈值电压。如果传导电流未测量为大于特定值,那么假设存储器单元未接通并且施加到字线的电压不大于存储器单元的阈值电压。在读取或验证过程期间,未选定的存储器单元在其控制栅极处被提供有一个或多个读取通过电压(也称为旁路电压),使得这些存储器单元将作为通过栅极操作(例如,不管这些存储器单元是被编程还是被擦除都传导电流)。

有许多方法来在读取或验证操作期间测量存储器单元的传导电流。在一个示例中,以存储器单元对感测放大器中的专用电容器放电或充电的速率来测量该存储器单元的传导电流。在另一个示例中,选定的存储器单元的传导电流允许(或不允许)包括存储器单元的NAND串对对应位线放电。在某时间段之后测量位线上的电压,以查看其是否已经放电。需注意,本文所述的技术可以与本领域中已知的用于验证/读取的不同方法一起使用。也可以使用本领域中已知的其它读取和验证技术。

图8是描述由存储器管芯300执行的用于编程的过程的一个实施方案的流程图。在一个示例性实施方案中,图8的过程在状态机312的指引下使用上面讨论的控制电路在存储器管芯300上执行。执行图8的过程以实现图5的编程、图6的全序列编程或包括多级编程的其它编程方案。当实施多级编程时,图8的过程用于实施多级编程过程的任何/每个阶段。

通常,在编程操作期间将编程信号Vpgm作为一系列编程电压脉冲施加到控制栅极(经由选定的字线),如图9所示。在编程脉冲之间的是一组验证脉冲以执行验证。在许多具体实施中,编程脉冲的幅值随每个连续脉冲而增大预定的步长大小(例如,0.2v至0.5v)。在图8的步骤570中,将编程电压(Vpgm)初始化为起始幅值(例如,约12V至16V,或另一个合适的电平),并且将由状态机312维持的编程计数器PC初始化为1。在步骤572中,将编程信号Vpgm的编程脉冲施加到选定的字线(被选择用于编程的字线)。在一个实施方案中,被同时地编程的一组存储器单元全部都连接到同一字线(选定的字线)。未选定的字线接收一个或多个升压电压(例如,约7伏至11伏)以执行本领域中已知的升压方案。在一个实施方案中,如果存储器单元应进行编程,则对应位线接地。另一方面,如果存储器单元应保持在其当前阈值电压,则对应位线连接到Vdd(例如,1伏至3.5伏)以抑制编程。在步骤572中,将编程电压脉冲同时地施加到连接到选定的字线的所有存储器单元,使得同时地对连接到选定的字线的所有存储器单元进行编程。也就是说,它们在同一时间上或在重叠时间期间(两者都被视为是同时的)进行编程。以此方式,除非已经将它们锁定以阻止进行编程,否则连接到选定的字线的所有存储器单元将同时地具有其阈值电压变化。

在步骤574中,使用一组适当验证参考电压以执行一个或多个验证操作来验证适当存储器单元。在一个实施方案中,通过测试被选择用于编程的存储器单元的阈值电压是否已达到适当验证参考电压来执行验证过程。

在步骤576中,确定是否所有存储器单元都已达到其目标阈值电压(通过)。若是如此,那么编程过程完成并是成功的,因为所有选择的存储器单元都被编程并验证了其目标状态。在步骤578中,报告“通过”(或成功)状态。如果在576中确定不是所有存储器单元都已达到其目标阈值电压(失败),那么编程过程将继续到步骤580。

在步骤580中,该系统对尚未达到其相应的目标阈值电压分布的存储器单元的数量进行计数。即,该系统对目前为止验证过程已失败的存储器单元的数量进行计数。该计数可以由状态机312、控制器120或其它逻辑部件来完成。在一个具体实施中,感测块中的每个感测块将存储其相应存储器单元的状态(通过/失败)。在一个实施方案中,存在一个总计数,其反映了最后一个验证步骤已失败的当前正在编程的存储器单元的总数。在另一个实施方案中,为每个数据状态保留单独计数。

在步骤582中,确定来自步骤580的计数是否小于或等于预定的极限。在一个实施方案中,预定的极限是在存储器单元的页面的读取过程期间可通过纠错码(ECC)校正的位的数量。如果失败单元的数量小于或等于预定的极限,则编程过程可以停止并且在步骤578中报告“通过”状态。在这种情况下,足够的存储器单元被正确地编程,使得可以在读取过程期间使用ECC来校正校正尚未完全地编程的剩余几个存储器单元。在一些实施方案中,步骤580将针对每个扇区、每个目标数据状态或其它单元计数失败单元的数量,并且在步骤582中将这些计数单独地或共同地与一个或多个阈值进行比较。

在一个实施方案中,预定的极限可以小于在读取过程期间可由ECC校正的位的总数以考虑到未来错误。当对页面的少于所有的存储器单元进行编程、或比较仅一个数据状态(或少于所有的状态)的计数时,预定的极限就可以是在存储器单元的页面的读取过程期间ECC可校正的位的数量的一部分(按比例或不按比例)。在一些实施方案中,该极限不是预定的。相反,它基于已经为页面计数的错误数量、所执行的编程擦除周期数量或其它标准来改变。

如果失败的存储器单元的数量不小于预定的极限,则编程过程在步骤584处继续并对照编程极限值(PL)检查编程计数器PC。编程极限值的示例包括6、20和30;然而,可以使用其它值。如果编程计数器PC不小于编程极限值PL,则认为编程过程已失败并且在步骤588中报告“失败”状态。如果编程计数器PC小于编程极限值PL,则过程在步骤586处继续,在此期间,编程计数器PC递增1,并且编程电压Vpgm被步进到下一幅值。例如,下一脉冲将具有比前一脉冲大一个步长大小(例如,0.1伏至0.4伏的步长大小)的幅值。在步骤586之后,过程循环回到步骤572,并且另一个编程脉冲被施加到选定的字线,使得执行图8的编程过程的另一个迭代(步骤572至586)。

由于在编程或读取时可能发生错误,并且在存储数据时可能发生错误(例如,由于电子漂移、数据保留问题或其它现象),因此纠错与数据编程一起使用。存储器系统通常使用纠错码(ECC)来保护数据免于损坏。许多ECC编码方案是本领域熟知的。这些常规的纠错码在包括闪存(和其它非易失性)存储器的大容量存储器中尤其有用,因为此类编码方案可提供对制造产率和设备可靠性的实质影响,使得具有几个不可编程或有缺陷的单元的设备成为可用的。当然,在产率节省和提供附加存储器单元以存储代码位(即,编码“速率”)的成本之间存在权衡。因此,一些ECC代码比其它ECC代码更适合闪存存储器设备。一般来讲,闪存存储器设备的ECC代码往往具有比数据通信应用中使用的代码(其可具有低至1/2的编码速率)更高的编码速率(即,更低的代码位/数据位比率)。通常与闪存存储器存储装置结合使用的熟知的ECC代码的示例包括里德-所罗门码、其它BCH码、汉明码等。有时,与闪存存储器存储装置结合使用的纠错码是“系统的”,因为最终码字的数据部分与被编码的实际数据没有变化,其中代码或奇偶校验位附加到数据位以形成完整的码字。

给定纠错码的特定参数包括代码的类型、从中导出码字的实际数据的块的大小以及编码之后码字的总长度。例如,如果使用至少60个ECC或奇偶校验位,则应用于512字节(4096位)数据扇区的典型BCH码可校正最多四个错误位。里德-所罗门码是BCH码的子集,并且也通常用于纠错。例如,典型的里德-所罗门码可使用约72个ECC位在512字节数据扇区中校正最多四个错误。在闪存存储器的情况下,纠错编码提供了制造产率以及闪存存储器随时间推移的可靠性的显著改进。

在一些实施方案中,控制器102接收要存储在非易失性存储器结构326中的主机数据(也称为用户数据或来自存储器系统外部的实体的数据),也称为信息位。信息位由矩阵i=[1 0]表示(需注意,两个位仅用于示例目的,并且许多实施方案具有长于两个位的码字)。纠错编码过程(诸如上文或下文提到的任何过程)由控制器120的ECC引擎158实施,其中奇偶校验位被添加到信息位以提供由矩阵或码字v=[1 0 1 0]表示的数据,指示两个奇偶校验位已经附加到数据位。可使用以更复杂方式将输入数据映射到输出数据的其它技术。例如,可使用低密度奇偶校验(LDPC)码,也称为Gallager码。关于LDPC代码的更多细节可见于R.G.Gallager的“Low-density parity-check codes”,IRE Trans.Inform.Theory,vol.IT-8,pp.21 28,Jan.1962(低密度奇偶校验码,《IRE信息理论汇刊》,IT-8卷,第21-28页,1962年1月);以及D.MacKay的Information Theory,Inference and LearningAlgorithms,Cambridge University Press 2003,chapter47(《信息理论、推理和学习算法》,剑桥大学出版社,2003年,第47章)。在实施过程中,此类LDPC码通常应用于(例如,通过ECC引擎158)跨多个存储元件编码的多个页面,但它们不需要跨多个页面应用。可通过将一个或多个存储器单元编程到对应于v的一个或多个编程状态来将数据位映射到逻辑页面并且存储在存储器结构326中。

在一个实施方案中,编程用于将存储器单元的阈值电压升高到编程数据状态S1中S7中的一者。擦除用于将存储器单元的阈值电压降低到擦除数据状态S0。

擦除一些存储器设备中的存储器单元的一种技术是将p阱(或其它类型的)基板偏置到高电压以对NAND沟道充电。将擦除使能电压施加到存储器单元的控制栅极,同时使NAND沟道处于高电压,以擦除非易失性存储元件(存储器单元)。擦除存储器单元的另一种方法是生成栅极感应的漏极泄漏(GIDL)电流以对NAND串沟道充电。将擦除使能电压施加到存储器单元的控制栅极,同时保持串沟道电势以擦除存储器单元。

在一个实施方案中,通过在选择晶体管处引起漏极到栅极电压来生成GIDL电流。生成GIDL电流的晶体管漏极至栅极电压在本文中称为GIDL电压。当选择晶体管漏极电压显著高于选择晶体管控制栅极电压时,可产生GIDL电流。GIDL电流是载流子生成的结果,即,由于带间隧穿和/或捕集辅助的生成而生成的电子-空穴对。在一个实施方案中,GIDL电流可导致一种类型的载流子(例如,空穴)主要移动到NAND沟道中,从而升高沟道的电势。通过电场在位线的方向上或在源极线的方向上从沟道中提取另一类型的载流子,例如电子。在擦除期间,空穴可从沟道隧穿到存储器单元的电荷存储区,并且与其中的电子重组,以降低存储器单元的阈值电压。

GIDL电流可在NAND串的任一端生成。连接到位线的选择晶体管(例如,漏极侧选择晶体管)的两个端子之间可产生第一GIDL电压,以生成第一GIDL电流。连接到源极线的选择晶体管(例如,源极侧选择晶体管)的两个端子之间可产生第二GIDL电压,以生成第二GIDL电流。基于NAND串的仅一端处的GIDL电流进行擦除称为单侧GIDL擦除。基于NAND串的两端的GIDL电流进行擦除称为两侧GIDL擦除。

如上所述,图9将编程信号Vpgm描绘为一系列编程电压脉冲。这些编程电压脉冲是施加到正被编程到数据状态的多个非易失性存储器单元的编程剂量的一个示例。如图8所述,系统在编程剂量之间执行程序验证,如图10和图11所示。图10例示了每个存储器单元存储一位数据的实施方案,描绘了图9的编程电压脉冲中的两个602和604。在编程电压脉冲602和604之间是验证电压脉冲610。在一个实施方案中,验证电压脉冲610具有Vv的量值(参见图5),并且表示在编程剂量(步骤572的连续迭代)之间执行程序验证(步骤574)的系统。

图11例示了每个存储器单元存储三位数据的实施方案,描绘了图9的编程电压脉冲中的两个602和604。在编程电压脉冲602和604之间是验证电压脉冲v1、v2、v3、v4、v5、v6和v7。在一个实施方案中,验证电压脉冲v1具有Vv1的量值(参见图6),验证电压脉冲v2具有Vv2的量值,验证电压脉冲v3具有Vv3的量值,验证电压脉冲v4具有Vv4的量值,验证电压脉冲v5具有Vv5的量值,验证电压脉冲v6具有Vv6的量值,并且验证电压脉冲v7具有Vv7的量值。验证电压脉冲v1、v2、v3、v4、v5、v6和v7表示系统在编程剂量(步骤572的连续迭代)之间执行程序验证(步骤574)。

图12是描述用于对非易失性存储器进行编程验证的过程的一个实施方案的流程图。即,图12的过程是在图8的步骤574的示例性具体实施期间针对每个存储器单元存储三位数据的实施方案执行的过程。图12的过程使用图9和图11的波形来执行。在图12的步骤660中,系统对数据状态S1执行验证。例如,系统测试正被编程到数据状态S1的存储器单元是否具有大于Vv1的阈值电压(例如,将图11的验证电压脉冲v1施加到正被编程到数据状态S1的存储器单元的控制栅极)。

在步骤662中,系统对数据状态S2执行验证。例如,系统测试正被编程到数据状态S2的存储器单元是否具有大于Vv2的阈值电压(例如,将图11的验证电压脉冲v2施加到正被编程到数据状态S2的存储器单元的控制栅极)。

在步骤664中,系统对数据状态S3执行验证。例如,系统测试正被编程到数据状态S3的存储器单元是否具有大于Vv3的阈值电压(例如,将图11的验证电压脉冲v3施加到正被编程到数据状态S3的存储器单元的控制栅极)。

在步骤666中,系统对数据状态S4执行验证。例如,系统测试正被编程到数据状态S4的存储器单元是否具有大于Vv4的阈值电压(例如,将图11的验证电压脉冲v4施加到正被编程到数据状态S4的存储器单元的控制栅极)。

在步骤668中,系统对数据状态S5执行验证。例如,系统测试正被编程到数据状态S5的存储器单元是否具有大于Vv5的阈值电压(例如,将图11的验证电压脉冲v5施加到正被编程到数据状态S5的存储器单元的控制栅极)。

在步骤670中,系统针对数据状态S6执行验证。例如,系统测试正被编程到数据状态S6的存储器单元是否具有大于Vv6的阈值电压(例如,将图11的验证电压脉冲v6施加到正被编程到数据状态S6的存储器单元的控制栅极)。

在步骤672中,系统对数据状态S7执行验证。例如,系统测试正被编程到数据状态S7的存储器单元是否具有大于Vv7的阈值电压(例如,将图11的验证电压脉冲v7施加到正被编程到数据状态S7的存储器单元的控制栅极)。需注意,在一个实施方案中,在编程剂量之间(例如,在编程电压脉冲之间)执行步骤660至672。在一些实施方案中,可在某些编程电压脉冲之间跳过步骤660至672中的一个或多个。在一个实施方案中,步骤660至672顺序地(以任何顺序或以所描绘的顺序)执行,而在其它实施方案中,步骤660至672并行地(例如,同时地)执行。

验证编程的一种方式是测试特定比较点(例如,验证参考电压)处的导通。例如,通过将位线电压从0升高到Vdd以停止那些存储器单元的编程过程来锁定被验证为充分编程的存储器单元。例如,图13A描绘了阈值电压(Vth)与时间以及位线电压(Vbl)与时间的曲线图。当存储器单元在其控制栅极处接收图9的编程电压Vpgm时,存储器单元的阈值电压增大。当存储器单元的阈值电压达到验证参考电压Vver(例如,图5和图6的Vv、Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7中的任一个,视情况而定)时,则位线电压升高到Vinhibit(例如,Vdd)。

当如图13A所示进行编程和验证时,在编程速度和编程精度之间存在折衷。编程精度与编程过程之后的已编程存储器单元的阈值电压分布相关。阈值电压分布越紧密,越容易明确读取存储器单元。对于存储多位数据的多级存储器单元,对紧密阈值电压分布的需要甚至更重要,因为读取过程需要明确区分不同的阈值电压分布(例如,对于数据状态S1至S7而言)。为了获得紧密的阈值电压分布,可对编程电压Vpgm使用较小的步长大小。然而,使用较小的步长大小减慢了编程过程。

对编程过程的改进在图13B中示出,这可被称为粗略/精细编程过程。图13B的过程将图9的编程电压信号Vpgm施加到待编程的存储器单元的控制栅极。在编程电压脉冲之间,执行验证操作。如果正被编程的存储器单元的阈值电压低于中间验证参考电压VverI,则对该存储器单元继续编程,其中位线电压保持较低(例如,0伏)。这是粗略/精细编程过程的粗略阶段,因为存储器单元编程较快。如果正被编程的存储器单元的阈值电压高于中间验证参考电压VverI并且低于最终验证参考电压VverF,则施加中间位线电压(例如,0.5伏至1.0伏)。由于中间位线电压,存储器单元的沟道电压将增大,并且该存储器单元的编程将减慢,因为由于每个编程电压脉冲引起的阈值电压的偏移将减小。这是粗略/精细编程过程的精细阶段。对于多个编程电压脉冲,位线将保持在中间位线电压,直到存储器单元的阈值电压达到最终验证参考电压VverF。当存储器单元的阈值电压达到最终验证参考电压VverF时,位线将升高以抑制进一步编程(例如,通过将位线电压升高到Vinhibit(例如,Vdd,其可为1伏至5伏)。需注意,最终验证参考电压VverF对应于存储器单元正被编程到的数据状态的验证参考电压。例如,在步骤660(参见图12)期间,最终验证参考电压VverF对应于Vv1;在步骤662期间,最终验证参考电压VverF对应于Vv2;在步骤664期间,最终验证参考电压VverF对应于Vv3;在步骤666期间,最终验证参考电压VverF对应于Vv4;在步骤668期间,最终验证参考电压VverF对应于Vv5;在步骤670期间,最终验证参考电压VverF对应于Vv6;并且在步骤672期间,最终验证参考电压VverF对应于Vv7。在一个实施方案中,数据状态的中间验证参考电压VverI比该数据状态的最终验证参考电压VverF低0.25伏。也可使用数据状态的VverI和VverF之间的其它分离量值。

使用图13B的方法导致编程的阈值电压分布比图13A的过程窄,因为一旦阈值电压接近目标值,阈值电压的每个编程脉冲的偏移就减小(例如,当阈值电压高于VverI且低于VverF时)。然而,图13B的方法减慢了编程过程,因为现在正在验证的每个数据状态需要两次验证操作。为了减少执行的验证操作数量(并且因此加速编程过程),提出了针对一些编程电压脉冲跳过VverF处的验证以及针对一些编程电压脉冲跳过VverI处的验证的系统。下面提供了更多详细信息。

图14是描述用于对非易失性存储器进行编程和编程验证的过程的一个实施方案的流程图,该过程包括针对一些编程电压脉冲(或其它编程剂量)跳过VverF(或另一个验证条件)处的验证以及针对一些编程电压脉冲(或其它编程剂量)跳过VverI处的验证(或另一个验证条件)。图14的过程由连接到多个非易失性存储器单元的控制电路(如上所述)执行。例如,图14的过程可在状态机312(连接到存储器结构326)的指导下执行。

在图14的步骤702中,控制电路执行将多个非易失性存储器单元编程到第一数据状态的编程过程。例如,图8的过程可用于将存储器单元编程到图5的编程数据状态P或图6的数据状态S1至S7中的一个或多个(其中第一数据状态可指S1至S6中的任一个)。在一些实施方案中,步骤702包括施加图9的编程电压脉冲。在步骤704中,控制电路在编程过程期间针对第一数据状态的第一验证条件执行程序验证而不针对第一数据状态的第二验证条件执行程序验证,直到满足第一标准。在一些实施方案中,步骤704包括执行图8的步骤574一次或多次。第一验证条件的一个示例是存储器单元正被编程为具有大于或等于第一数据状态的中间验证参考电压VverI的阈值电压。第二验证条件的一个示例是存储器单元正被编程为具有大于或等于第一数据状态的最终验证参考电压VverF的阈值电压。因此,步骤704的一个示例包括测试正被编程到第一数据状态的存储器单元是否具有大于或等于第一数据状态的中间验证参考电压VverI的阈值电压,而不测试正被编程到第一数据状态的存储器单元是否具有大于或等于第一数据状态的最终验证参考电压VverF的阈值电压。在步骤706中,在满足第一标准之后并且直到满足第二标准,控制电路在编程过程期间针对第一验证条件和第二验证条件执行程序验证。在一些实施方案中,步骤706包括执行图8的步骤574一次或多次。在步骤708中,在满足第二标准之后,控制电路在编程过程期间针对第二验证条件执行程序验证,而不针对第一验证条件执行程序验证。在一些实施方案中,步骤708包括执行图8的步骤574一次或多次。

在一些示例性具体实施中,步骤704被称为VverF跳过模式,因为系统跳过验证第一数据状态的最终验证参考电压VverF。在一些示例性具体实施中,步骤706被称为VverI和VverF模式,因为系统针对第一数据状态执行验证VverI和VverF。在一些示例性具体实施中,步骤708被称为VverI跳过模式,因为系统跳过验证第一数据状态的中间验证参考电压VverI。当执行图8的过程时,包括步骤572至586的循环的每次迭代将处于VverF跳过模式、VverI和VverF模式或VverI跳过模式中的一者。即,每次执行步骤574时,将执行步骤704、706或708中的一者。考虑其中使用十二个编程电压脉冲对存储器单元进行成功编程的示例;因此,包括步骤572至586的循环将执行十二次。可能(例如),执行包括步骤572至586的循环的前八次将是VverF跳过模式;因此,每次在那十二个循环期间执行步骤574时,步骤574被实现为图14的步骤704。例如,第九个和第十个循环将是VverI和VverF模式;因此,每次在这两个循环期间执行步骤574时,步骤574被实现为图14的步骤706。例如,第十一个和第十二个循环将是VverI跳过模式;因此,每次在最后两个循环期间执行步骤574时,步骤574被实现为图14的步骤708。

在一个实施方案中,如图15至图17所述,当非易失性存储器单元的阈值数量已达到第一验证条件时,满足第一标准,并且当非易失性存储器单元的阈值数量已达到第二验证条件时,满足第二标准。图15示出了在VverF跳过模式(当系统正在测试VverI而不是VverF时)下正被编程到第一数据状态的存储器单元的阈值电压分布。阈值电压分布的一部分740表示具有小于第一数据状态的VverI的阈值电压的存储器单元。阈值电压分布的一部分742表示具有大于第一数据状态的VverI但小于第一数据状态的VverF的阈值电压的存储器单元。没有存储器单元具有大于第一数据状态的VverF的阈值电压。当执行验证操作(测试阈值电压是否大于或等于第一数据状态的VverI)时,具有小于第一数据状态的VverI的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线保持在Vss(例如,0伏),并且具有大于或等于第一数据状态的VverI的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线升高到Vint(例如,0.5伏)。如果具有大于或等于第一数据状态的VverI的阈值电压的存储器单元的数量大于第一预定数量,则正被编程到第一数据状态的存储器单元组移动到VverI和VverF模式。在一个示例中,第一预定数量是被编程的所有存储器单元的0.02%、正被编程到第一数据状态的存储器单元的0.2%、或存储器单元的另一个量。

图16示出了在VverI和VverF模式下(当系统正在测试VverI和VverF时)正被编程到第一数据状态的存储器单元的阈值电压分布。阈值电压分布的一部分762表示具有小于第一数据状态的VverI的阈值电压的存储器单元。阈值电压分布的一部分764表示具有大于第一数据状态的VverI但小于第一数据状态的VverF的阈值电压的存储器单元。阈值电压分布的一部分766表示具有大于第一数据状态的VverF的阈值电压的存储器单元。当执行验证操作时,具有小于第一数据状态的VverI的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线保持在Vss(例如,0伏),具有大于或等于第一数据状态的VverI的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线升高到Vint(例如,0.5伏至1.0伏),并且具有大于或等于第一数据状态的VverF的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线升高到Vinhibit(例如,1.0伏至5.0伏)。如果具有大于或等于第一数据状态的VverF的阈值电压的存储器单元的数量大于第二预定数量,则正被编程到第一数据状态的存储器单元组移动到VverI跳过模式。在一个示例中,第二预定数量是被编程的所有存储器单元的0.02%、正被编程到第一数据状态的存储器单元的0.2%、或存储器单元的另一个量。

在一些实施方案中,测试大于或等于VverI的阈值电压包括以VverI施加第一电压脉冲,并且测试大于或等于VverF的阈值电压包括以VverF施加第二电压脉冲。在其它实施方案中,系统可通过一个电压脉冲但使用两个不同的感测时间来测试VverI和VverF。例如,系统可施加电压脉冲,感测存储器单元是否在VverI的0.7微秒之后接通,并且感测存储器单元是否在VverF的1.4微秒之后接通。

图17示出了在VverI跳过模式(当系统正在测试VverF而不是VverI时)下正被编程到第一数据状态的存储器单元的阈值电压分布。阈值电压分布的一部分774表示具有大于第一数据状态的VverI但小于第一数据状态的VverF的阈值电压的存储器单元。阈值电压分布的一部分776表示具有大于第一数据状态的VverF的阈值电压的存储器单元。在一些实施方案中,可以处于VverI跳过模式并且使一些存储器单元具有低于VverI的阈值电压。当执行验证操作时,具有大于或等于第一数据状态的VverI并且小于第一数据状态的VverF的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线升高到Vint,并且具有大于或等于第一数据状态的VverF的阈值电压的正被编程到第一数据状态的那些存储器单元针对下一个编程电压脉冲将其位线升高到Vinhibit。

图18描绘了描述在对非易失性存储器进行编程验证时执行的过程的一个实施方案的流程图。图18的过程由连接到多个非易失性存储器单元的控制电路(如上所述)执行。例如,图18的过程可在状态机312(连接到存储器结构326)的指导下执行。在一个实施方案中,图18的过程在图8的步骤574期间执行,使得在步骤574的每次迭代期间,图18的过程针对存储器单元正被编程到的每个数据状态(或针对数据状态的子集中的每一个)执行一次。例如,图18的过程可在图12的步骤660至672中的每一个期间执行。因此,图18的过程包括在编程剂量(例如,编程剂量的一个示例是图9的编程电压脉冲)之间执行程序验证,其中在图8的步骤572的每次迭代期间施加编程剂量。

如上所述,在一个实施方案中,系统可以至少三种验证模式操作:VverF跳过模式、VverI和VverF模式以及VverI跳过模式。图18的步骤802包括针对被验证的特定数据状态确定系统当前处于这三种验证模式中的哪一种。如果系统当前针对被验证的特定数据状态处于VverF跳过模式,则过程在步骤804处继续,该步骤包括针对第一数据状态的第一验证条件(例如,VverI)验证多个非易失性存储器单元,同时针对第一数据状态的第二验证条件(例如,VverF)跳过验证多个非易失性存储器单元。在步骤806中,具有不大于VverI的阈值电压(Vt)的存储器单元使其位线电压保持在Vsel(例如,0伏),以用于下一编程剂量。在步骤808中,具有大于VverI的阈值电压的存储器单元使其位线电压升高到Vint,以减慢用于下一编程剂量的那些存储器单元的编程。

在步骤810中,系统确定是否满足第一标准。在一个实施方案中,系统确定已满足第一验证条件的存储器单元的量是否符合第一标准;例如,具有大于VverI的阈值电压的存储器单元的数量是否大于第一预定数量(如上所述)。即,在一个示例性具体实施中,当阈值数量的多个非易失性存储器单元已达到第一验证条件时,满足第一标准。如果不满足第一标准,则在步骤812中,系统将对在下一编程剂量期间被验证的特定数据状态保持在VverF跳过模式。如果满足第一标准,则在步骤814中,系统将针对在下一编程剂量期间被验证的特定数据状态切换到VverI和VverF模式。

如果(在步骤802中)系统当前针对被验证的特定数据状态处于VverI和VverF模式,则过程在步骤820处继续,该步骤包括(例如,响应于确定满足第一验证条件的存储器单元的量符合第一标准)针对该数据状态的第一验证条件(例如,VverI)验证多个非易失性存储器单元,并且针对被验证的该特定数据状态的第二验证条件(例如,VverF)验证多个非易失性存储器单元。在步骤822中,具有不大于VverI的阈值电压的存储器单元使其位线电压保持在Vsel,以用于下一编程剂量。在步骤824中,具有大于第一验证条件(例如,VverI)的阈值电压的存储器单元使其位线电压升高到Vint,以减慢那些存储器单元针对下一编程剂量的编程。在步骤826中,具有大于第二验证条件(例如,VverF)的阈值电压的存储器单元使其位线电压升高到Vinhibit,以停止那些存储器单元的编程。在步骤828中,系统确定是否满足第二标准。如果不满足第二标准,则在步骤830中,系统将针对在下一编程剂量期间被验证的特定数据状态保持在VverI和VverF模式。如果满足第二标准,则在步骤832中,系统将针对在下一编程剂量期间被验证的特定数据状态切换到VverI跳过模式。

如果(在步骤802中)系统当前被验证的特定数据状态处于VverI跳过模式,则过程在步骤850处继续,该步骤包括(例如,响应于确定满足第二标准)针对被验证的该特定数据状态的第二验证条件(例如,VverF)验证多个非易失性存储器单元,同时针对被验证的该特定数据状态的第一验证条件(例如,VverI)跳过验证多个非易失性存储器单元。在步骤852中,具有不大于第二验证条件(例如,VverF)的阈值电压的存储器单元使其位线电压设置为Vint,以减慢那些存储器单元针对下一编程剂量的编程。在步骤854中,具有大于第二验证条件(例如,VverF)的阈值电压的存储器单元使其位线电压升高到Vinhibit,以停止那些存储器单元的编程。

有许多不同的测试可用于确定是否满足第二标准(步骤828)。在一些实施方案中,第二标准不同于达到第一验证条件(例如,VverI)的多个存储器单元的量。在一个实施方案中,当阈值数量的多个非易失性存储器单元达到第二验证条件(例如,VverF)时,满足第二标准。如上所述,在一个示例性具体实施中,当正被编程到该特定状态的所有存储器单元的0.02%达到第二验证条件(例如,VverF)时,满足第二标准。在另一个实施方案中,在满足第一标准之后将预定数量的编程剂量已施加到多个非易失性存储器之后,满足第二标准。例如,可设置存储器管芯的设备参数以指示要在VverI和VverF模式下施加的编程电压脉冲的数量,使得在此之后施加所指示数量的编程电压脉冲,同时在VverI和VverF模式下系统自动切换到VverI跳过模式。可用于指示在VverI和VverF模式下施加的编程电压脉冲的数量的设备参数的一个示例是跳过参数SP(参见图2)。跳过参数SP可在制造时设定或由用户在现场设定。

在另一个实施方案中,基于正被编程到与被验证的特定数据状态不同的数据状态的存储器单元的性能来满足第二标准。在该实施方案中,存储器单元中的每个存储器单元存储多位数据。控制电路被配置为将选定组非易失性存储器单元编程到多个数据状态。正被编程到被验证的特定数据状态的多个非易失性存储器单元是被编程的选定组非易失性存储器单元的第一子集。控制电路被配置为将选定组非易失性存储器单元的第二子集编程到第二数据状态。在该实施方案中,当选定组非易失性存储器单元的第二子集的最小数量达到第二数据状态的目标电平时,满足第二标准。该条件的一个示例在图19中描绘,该图示出了两个阈值电压分布912和914。阈值电压分布912针对正被编程到第一数据状态(状态N)的存储器单元,并且可表示在图18的过程中被验证的特定数据状态。阈值电压分布914针对正被编程到第二数据状态(状态N+1)的存储器单元。在一个实施方案中,第二数据状态与第一数据状态相邻并且具有更高的阈值电压(例如,第一数据状态为状态S4并且第二数据状态为S5,参见图6)。图19描绘了每个数据状态如何具有其自己的第一验证条件(例如,VverI)和其自己的第二验证条件(例如,VverF)。例如,数据状态N(阈值电压分布912的目标)具有VverI状态N和VverF状态N,而数据状态N+1(阈值电压分布914的目标)具有VverI状态N+1和VverF状态N+1。在该实施方案中,当阈值电压分布914的最小数量的存储器单元达到VverI状态N+1时,阈值电压分布912的存储器单元满足第二标准。达到VverI状态N+1的阈值电压分布914的存储器单元的该最小数量在图19中由阈值电压分布914的区域920示出,并且(在一个示例中)可为被编程的所有存储器单元的0.02%(或另一个量)。

以上描述介绍了用于减少编程验证所需的时间的系统。因此,编程过程更快完成。

一个实施方案包括非易失性存储装置,该非易失性存储装置包括多个非易失性存储器单元和连接到这些非易失性存储器单元的控制电路。控制电路被配置为:执行将非易失性存储器单元编程到第一数据状态的编程过程;在编程过程期间针对第一数据状态的第一验证条件执行程序验证而不针对第一数据状态的第二验证条件执行程序验证,直到满足第一标准;在满足第一标准之后并且直到满足第二标准,在编程过程期间针对第一验证条件和第二验证条件执行程序验证;并且在满足第二标准之后,在编程过程期间针对第二验证条件执行程序验证而不针对第一验证条件执行程序验证。

一个实施方案包括一种用于对非易失性存储装置进行编程的方法,该方法包括:将编程剂量施加到正被编程到到第一数据状态的多个非易失性存储器单元;以及在编程剂量之间执行程序验证。执行程序验证包括:针对第一数据状态的第一验证条件验证多个非易失性存储器单元,同时针对第一数据状态的第二验证条件跳过验证多个非易失性存储器单元;确定满足第一验证条件的存储器单元的量符合第一标准;响应于确定满足第一验证条件的存储器单元的量符合第一标准,针对该数据状态的第一验证条件验证多个非易失性存储器单元,并且针对该数据状态的第二验证条件验证多个非易失性存储器单元;确定满足第二标准;以及响应于确定满足第二标准的存储器单元的量,针对该数据状态的第二验证条件验证多个非易失性存储器单元,同时针对该数据状态的第一验证条件跳过验证多个非易失性存储器单元。

在一个示例性具体实施中,编程剂量包括量值从脉冲到脉冲增加的一系列编程电压脉冲;第一验证条件是第一数据状态的中间验证参考电压;并且第二验证条件是第一数据状态的最终验证参考电压。

一个实施方案包括:非易失性存储装置,该非易失性存储装置包括非易失性存储器单元的三维阵列;用于以下操作的装置:通过将一系列编程电压脉冲施加到存储器单元来对存储器单元进行编程;以及用于验证编程电压脉冲之间的编程的装置,具体方式为:测试非易失性存储器单元是否已达到数据状态的中间验证参考电压而不测试非易失性存储器单元是否已达到该数据状态的最终验证参考电压,直到超过预定数量的存储器单元达到该数据状态的中间验证参考电压;测试非易失性存储器单元是否已达到中间验证参考电压,并且在预定数量的存储器单元到中间验证参考电压之后并且直到满足测试标准,非易失性存储器单元是否已达到该数据状态的最终验证参考电压,使得测试标准不同于达到中间验证参考电压的存储器单元的量;并且在符合该测试标准之后,测试非易失性存储器单元是否已达到最终验证参考电压,而不测试非易失性存储器单元是否已达到该数据状态的中间验证参考电压。

出于本文档的目的,用于编程的装置可由微处理器、微控制器、状态机、FPGA或其它类型的处理器结合解码器、感测放大器、电压和电流源以及用于执行图5、图6、图8、图13A、图13B和/或图14(步骤702)的过程的其它控制逻辑来实现。例如,用于编程的装置可包括执行图5、图6、图8、图13A、图13B和/或图14(步骤702)的过程的图2的控制电路310、解码器324/332和读/写电路328。在一些实施方案中,用于编程的装置可包括在存储器管芯(例如,图2的存储器管芯300)上的电路支持或不支持的情况下执行图5、图6、图8、图13A、图13B和/或图14(步骤702)的过程的控制器120。在一些实施方案中,用于编程的装置可包括执行图5、图6、图8、图13A、图13B和/或图14(步骤702)的过程的控制器120、控制电路310、解码器324/332和读/写电路328。

出于本文档的目的,用于验证的装置可由微处理器、微控制器、状态机、FPGA或其它类型的处理器结合解码器、感测放大器、电压和电流源以及用于执行图5、图6、图8、图13A、图13B和/或图14(步骤702)的过程的其它控制逻辑来实现。例如,用于验证的装置可包括执行图8(步骤574)、图12、图13A、图13B、图14、图18和/或图19的过程的图2的控制电路310、解码器324/332和读/写电路328。在一些实施方案中,用于验证的装置可包括在存储器管芯(例如,图2的存储器管芯300)上的电路支持或不支持的情况下执行图8(步骤574)、图12、图13A、图13B、图14、图18和/或图19的过程的控制器120。在一些实施方案中,用于验证的装置可包括执行图8(步骤574)、图12、图13A、图13B、图14、图18和/或图19的控制器120、控制电路310、解码器324/332和读/写电路328。

出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。

出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其它部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接至另一个元件,或者经由居间元件间接连接至另一个元件。当元件被提及直接连接至另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。

出于本文档的目的,术语“基于”可理解为“至少部分地基于”。

出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。

出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。

出于说明和描述的目的,已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其它技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。

相关技术
  • 具有程序验证跳过的非易失性存储器
  • 具有快速位检测及验证跳过的对非易失性存储器的编程
技术分类

06120113238743