CN108028069B - 用于编程非易失性存储器的智能验证 - Google Patents

用于编程非易失性存储器的智能验证 Download PDF

Info

Publication number
CN108028069B
CN108028069B CN201680053927.9A CN201680053927A CN108028069B CN 108028069 B CN108028069 B CN 108028069B CN 201680053927 A CN201680053927 A CN 201680053927A CN 108028069 B CN108028069 B CN 108028069B
Authority
CN
China
Prior art keywords
programming
volatile storage
memory cells
group
storage elements
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
CN201680053927.9A
Other languages
English (en)
Other versions
CN108028069A (zh
Inventor
M.邓加
G.J.赫明克
Z.周
东谷政昭
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.)
SanDisk Technologies LLC
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 CN108028069A publication Critical patent/CN108028069A/zh
Application granted granted Critical
Publication of CN108028069B publication Critical patent/CN108028069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/10Programming or 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
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells

Abstract

提供了在编程非易失性储存器时减少电流消耗的技术。使用存储器单元的子集来进行智能验证。通过将智能验证施加到存储器单元的仅一个子集来节省电流。智能验证可以用来表征编程速度。智能验证的结果可以用来确定稍后在编程过程中要被施加的虚拟编程脉冲的幅度。虚拟编程脉冲之后没有编程验证,从而减少了电流。如果虚拟编程脉冲将阈值电压推到足够高,则在稍后的编程中验证时,这些存储器单元将不传导电流。因此,在编程验证期间节省了电流。另外,在编程脉冲之前,接收虚拟脉冲的存储器单元的位线不需要预充电,从而可以节省更多的电流。

Description

用于编程非易失性存储器的智能验证
技术领域
本公开涉及用于非易失性储存器的技术。
背景技术
半导体存储器用于各种电子装置中。例如,非易失性半导体存储器用于蜂窝电话、数字照相机、个人数字助理、移动计算装置、非移动计算装置以及其他装置中。电可擦除可编程只读存储器(EEPROM)和闪速存储器是最流行的非易失性半导体存储器。
一些非易失性存储器将信息储存在与半导体基板中的沟道区域绝缘的电荷储存区域中。作为一个示例,浮置栅极位于半导体基板中的沟道区域之上并与之绝缘。浮置栅极位于源极与漏极区域之间。控制栅极设置在浮置栅极之上并与之绝缘。晶体管的阈值电压由浮置栅极上保留的电荷量控制。换言之,在晶体管导通以允许其源极与漏极之间导通之前,必须施加到控制栅极的最小电压量由浮动栅极上的电荷的电平控制。
一些非易失性存储器利用电荷俘获层来储存信息。一个这样的示例具有氧化物-氮化物-氧化物(ONO)区域,其中氮化物(例如,SiN)充当电荷俘获层以储存信息。在这样的存储器单元被编程时,电子被储存在电荷俘获层中。
非易失性存储器具有2D架构或3D架构。近来,已经提出了使用具有存储器单元串的3D堆叠存储器结构的超高密度储存装置。一种这样的储存装置有时称为位成本可扩展(BiCS)架构。例如,3D NAND堆叠存储器装置可由交替的导体和绝缘体层的阵列形成。在这些层中钻出存储器孔来同时限定许多存储器层。然后通过用适当的材料填充存储器孔来形成NAND串。直的NAND串在一个存储器孔中延伸,而管或U形NAND串(P-BiCS)包含存储器单元的一对垂直列,这对垂直列在两个存储器孔中延伸并且由管连接而连接。存储器单元的控制栅极由导体层提供。
在编程某些非易失性存储器装置(诸如NAND闪速存储器装置)之前,擦除存储器单元。对于一些装置,擦除操作从浮置栅极移除电子。对于一些装置,擦除操作从电荷俘获层移除电子。因此,擦除可以降低存储器单元的阈值电压。
可以通过将编程电压施加到控制栅极以提高存储器单元的阈值电压,来实现存储器单元的编程。典型地,为了确定存储器单元是否已经达到其预期的阈值电压,在施加编程电压之后,进行感测操作(称为编程验证)。此过程可以在若干编程循环中重复。存储器单元在达到其目标阈值电压后可以被锁定而不进一步编程,以防止过度编程。
附图说明
相同附图标记的元件在不同的图中指代共同的组件。
图1是3D堆叠非易失性存储器装置的透视图。
图2是诸如图1的3D堆叠非易失性存储器装置的存储器装置的功能性框图。
图3是具有两个平面的存储器结构的框图。
图4A描绘了存储器单元的块的部分的顶视图。
图4B描绘了存储器单元的块的部分的横截面视图。
图4C描绘了选择栅极层和字线层的视图。
图4D是存储器单元的垂直列的横截面视图。
图5A描绘了编程过程的一个实施例的流程图。
图5B说明了当每个存储器单元储存三位数据时,对应于存储器单元阵列的数据状态的示例性VT分布。
图5C说明了VT分布可以部分重叠。
图5D是编程非易失性储存元件的过程500的一个实施例的流程图。
图6是进行智能验证的过程600的一个实施例的流程图。
图7A-图7D描绘了在智能验证的一个实施例期间的阈值电压分布。
图8是使用LM序列编程存储器单元的过程800的一个实施例的流程图。
图9是使用全序列编程存储器单元的过程900的一个实施例的流程图。
图10A是在IM编程序列期间施加虚拟脉冲的过程1000的一个实施例的流程图。
图10B描绘了在图10A的过程1000的一个实施例之前的VT分布。
图10C-图10F描绘了在图10A的过程1000的一个实施例期间的VT分布。
图11A是在IM编程序列期间施加虚拟脉冲的过程1100的另一个实施例的流程图。
图11B-图11E描绘了在图11A的过程1100的一个实施例期间的VT分布。
图12A是将存储器单元编程到LM状态的过程1200的一个实施例的流程图。
图12B描绘了在过程1200的一个实施例之后的结果。
图13A是使用全序列编程的过程1300的一个实施例的流程图。
图13B-图13H描绘了在图13A的过程1300的一个实施例期间的VT分布。
图14A是使用全序列编程的过程1400的一个实施例的流程图。
图14B-图14H描绘了在图14A的过程1400的一个实施例期间的VT分布。
图15是完成全序列编程的过程1500的一个实施例的流程图。
图16是说明选择用于智能验证的存储器单元的一个实施例的图。
具体实施方式
提供了编程非易失性储存器的技术。通常,编程可能消耗大量电流。在编程验证操作期间可能消耗电流的大部分。这种电流消耗的一个原因是,未通过编程验证的存储器单元导通并传导电流,因为它们的阈值电压还不足够高以通过编程验证。本文中公开的技术减少了在编程验证操作期间所使用的电流的数量。设置编程条件还可能消耗大量电流。本文中公开的技术减少了当设置编程条件时所使用的电流的数量。
在一个实施例中,仅使用将被编程的存储器单元的子集来进行智能验证。通过向存储器单元的仅一个子集施加智能验证来节省电流。在一个实施例中,智能验证将编程脉冲施加到存储器单元,并且然后感测该子集。在一个实施例中,在智能验证期间,不参与智能验证的要被编程的组中的存储器单元被锁定,使得它们的阈值电压不受编程脉冲影响。另外,它们可以在感测期间被锁定以便节省电流。减少电流的一个因素是不需要对位线进行预充电。减少电流的另一个因素是,这些存储器单元在感测操作期间不会传导电流,因为它们被锁定。
智能验证可以用于表征存储器单元的编程。例如,智能验证可以提供信息以确定存储器单元编程有多快。在一个实施例中,智能验证用于确定稍后在编程存储器单元的过程中施加的虚拟编程脉冲的幅度。虚拟编程脉冲之后没有编程验证,从而减少了电流消耗。在施加编程验证之后的另一编程脉冲之前,虚拟编程脉冲可以用于将所选择的存储器单元的阈值电压移动到更高的电压。由于以下的原因,这可以减少电流。如果虚拟编程脉冲将阈值电压推到足够高,则这些存储器单元在验证时将不传导电流。因此,在编程验证期间减少了电流。讨论了用于施加虚拟编程脉冲的各种技术。
在一些实施例中,将本文公开的技术施加到了3D堆叠非易失性存储器装置中。以下是3D堆叠非易失性存储器装置的一个示例。本文公开的实施例不限于此3D示例。本文公开的实施例不限于3D存储器。例如,本文公开的技术也可以用于3D存储器,诸如但不限于2DNAND。实施例不限于NAND。
以下的讨论提供了可以实现所提出的技术的存储器装置的合适结构的一个示例的细节。图1是三维(3D)堆叠非易失性存储器装置的透视图。存储器装置100包含基板101。在基板上和基板上方是存储器单元(非易失性储存元件)的示例性块BLK0和BLK1。另外,在基板上是具有供块使用的支持电路的外围区域104。基板101还可以承载块下方的电路,连同一个或多个在导电路径中被图案化以承载电路信号的下部金属层。块形成于存储器装置的中间区域102。在存储器装置的上部区域103,一个或多个上部金属层在导电路径中被图案化以承载电路的信号。每个块包括存储器单元堆叠区,其中堆叠体的交替的级表示字线。尽管描绘了两个块作为示例,但是可以使用附加的块,其在x和/或y方向上延伸。
在一个示例性实现方式中,平面在x方向上的长度表示字线的信号路径延伸的方向(字线或SGD线方向),并且平面在y方向上的宽度表示位线的信号路径延伸的方向(位线方向)。z方向表示存储器装置的高度。
图2是诸如图1的3D堆叠非易失性存储器装置100的示例性存储器装置的功能性框图。存储器装置100包含一个或多个存储器裸芯108。每个存储器裸芯108包含存储器单元的三维存储器结构126(诸如,例如存储器单元的3D阵列)、控制电路110以及读取/写入电路128。存储器结构126经由行解码器124由字线可寻址,且经由列解码器132由位线可寻址。读取/写入电路128包含多个感测块SB1、SB2……SBp(感测电路),并且允许并行读取或编程存储器单元的页。在一些系统中,控制器122被包含在与一个或多个存储器裸芯108相同的存储器装置100(例如,可移动储存卡)中。然而,在其他的系统中,控制器可以与存储器裸芯108分离。在一些实施例中,一个控制器122将与多个存储器裸芯108通信。在其他的实施例中,每个存储器裸芯108具有其自己的控制器。命令和数据经由数据总线120在主机140与控制器122之间传送,并且经由线118在控制器122与一个或多个存储器裸芯108之间传送。在一个实施例中,存储器裸芯108包含连接到线118的输入和/或输出(I/O)引脚的集合。
存储器结构126可以包括包含3D阵列的存储器单元的一个或多个阵列。存储器结构可以包括单片三维存储器结构,其中多个存储器级形成在单一的基板(诸如晶片)上方(并且不存在于单一的基板中),而没有中间基板。存储器结构包括任何类型的非易失性存储器,其单片地形成在存储器单元阵列的一个或多个物理级中,该存储器单元阵列具有设置在硅基板之上的有源区(active area)。存储器结构可以在具有与存储器单元的操作相关联的电路的非易失性存储器装置之中,不论相关联的电路处于基板上方还是之内。
控制电路110与读取/写入电路128协作以在存储器结构126上进行存储器操作(例如,擦除、编程、读取等),并且包含状态机112、片上地址解码器114以及功率控制模块116。状态机112提供存储操作的裸芯级控制。代码和参数储存器113可以被提供用于储存操作参数和软件。在一个实施例中,状态机112可由储存在代码和参数储存器113中的软件编程。在其他的实施例中,状态机112不使用软件,并且完全以硬件(例如,电子电路)实现。
片上地址解码器114提供由主机140或存储器控制器122使用的地址与由解码器124和132使用的硬件地址之间的地址接口。功率控制模块116控制在存储器操作期间供给到字线和位线的功率和电压。功率控制模块可以包括3D配置的字线层的驱动器(下面讨论)、选择晶体管(例如,下面描述的SGS和SGD晶体管)以及源极线。功率控制模块116可以包含用于产生电压的电荷泵。感测块包含位线驱动器。SGS晶体管是在NAND串的源极端的选择栅极晶体管,并且SGD晶体管是在NAND串的漏极端的选择栅极晶体管。
控制电路110、状态机112、解码器114/124/132、储存器113、功率控制模块16、感测块SB1、SB2……SBp、读取/写入电路128以及控制器122中的任何一个或任何组合可以被认为是进行本文所描述的功能的管理电路。
(片上或片外)控制器122可以包括处理器122c和诸如ROM 122a和RAM 122b的储存装置(存储器)。储存装置包括代码(诸如指令的集合),并且处理器122c可操作来执行该指令的集合以提供本文所描述的功能。替代地或附加地,处理器122c可以从存储器结构中的储存装置存取代码,诸如连接到一个或多个字线的存储器单元的保留区域。
存储器结构126中的多个存储器元件可以经配置,以使得他们串联连接或以使得每个元件可单独存取。通过非限制性示例,NAND配置中的闪速存储器装置(NAND闪速存储器)典型地含有串联连接的存储器元件。NAND串是串联连接的存储器单元的集合和选择栅极晶体管的示例。
NAND闪速存储器阵列可以经配置,以使得阵列由多个NAND串组成,其中NAND串由共享单一的位线且作为群组存取的多个存储器单元组成。替代地,存储器元件可以经配置,以使得每个元件为单独可存取的(例如,NOR存储器阵列)。NAND和NOR存储器配置是示例性的,并且存储器单元可以以其他方式配置。
存储器单元可以以有序阵列布置在单一的存储器装置级中,诸如以多个行和/或列。然而,存储器元件可以以非规则或非正交配置布置,或以不被视为阵列的结构布置。
三维存储器阵列经布置,以使得存储器单元占用多个平面或多个存储器装置级,从而在三维(即,在x、y和z方向上,其中z方向基本垂直于基板的主表面并且x和y方向基本平行于基板的主表面)上形成结构。
作为非限制性示例,三维存储器结构可以作为多个二维存储器装置级的堆叠体而垂直布置。作为另一非限制性示例,三维存储器阵列可以布置为多个垂直的列(例如,列基本垂直于基板的主表面延伸,即在y方向上)布置,其中每列具有多个存储器单元。垂直的列可以以二维配置(例如,在x-y平面)来布置,导致存储器单元的三维布置,其中存储器单元位于多个垂直堆叠的存储器平面上。存储器元件在三维上的其他配置也可以构成三维存储器阵列。
通过非限制性示例,在三维NAND存储器阵列中,存储器元件可以耦合到一起以形成穿过多个水平的存储器装置级的垂直的NAND串。可以设想其他的三维配置,其中一些NAND串含有单一的存储器级中的存储器元件,而其他串含有跨过多个存储器级的存储器元件。三维存储器阵列还可以以NOR配置和以ReRAM配置设计。
本领域的普通技术人员将认识到,此技术不限于单一的特有的存储器结构,而是涵盖在本文所描述的技术的精神和范围内并且如本领域普通技术人员所理解的许多相关的存储器结构。
图3是解释了存储器结构126的一个示例性组织的框图,该存储器结构被分割成两个平面302和304。然后每个平面分割成M个块。在一个示例中,每个平面具有约2000个块。然而,也可以使用不同的数目的块和平面。
图4A是描绘了来自存储器结构126的一个块的部分的顶视图的框图。在图4A中所描绘的块的部分对应于图4A的块2中的部分306。如从图4A可见,在图4A中所描绘的块在箭头330的方向和箭头332的方向延伸。在一个实施例中,存储器阵列将具有48层。其他的实施例具有少于或多于48层。然而,图4A仅示出了顶层。
图4A描绘了表示垂直列的多个圆圈。垂直列的每列包含多个选择晶体管和多个存储器单元。在一个实施例中,每个垂直列实现NAND串。垂直列的更多的细节在下面提供。因为在图4A中所描绘的块在箭头330的方向和箭头332的方向上延伸,块包含比图4A中所描绘的更多的垂直列。
图4A还描绘了位线412的集合。因为仅描绘块的部分,图4A示出了二十四个位线。预期连接到块的垂直列的位线多于二十四个。表示垂直列的圆圈的每一个具有“x”以指示其连接到一个位线。
在图4A中所描绘的块包含局部互连体402、404、406、408和410的集合,局部互连体将各层连接到垂直列下方的源极线。局部互连体402、404、406、408和410也用于将块的每层分割成四个区域,例如,在图4A中所描绘的顶层被分割成区域420、430、440和450。在实现存储器单元的块的层中,由局部互连体分离的四个区域称为字线指状物。在一个实施例中,在块的公共级上的字线指状物在块的末端处连接到一起以形成单一的字线。在另一个实施例中,在相同级的字线指状物不连接到一起。在一个示例性实现方式中,位线仅连接到区域420、430、440和450的每个区域中的一个垂直列。在该实现方式中,每个块具有十六行活跃列,并且每个位线连接到每个块中的四行。在一个实施例中,连接到公共位线的所有四行(经由连接到一起的相同级上的不同的字线指状物)连接到相同的字线;因此,管理电路使用源极侧选择线和漏极侧选择线来选择要经受存储器操作(编程、验证、读取和/或擦除)的四行中的一行(或另一个子集)。
虽然图4A示出了每个区域具有四行垂直列,在一个块中具有四个区域和十六行垂直列,但是这些精确的数字是示例性实现方式。其他的实施例可以包含每个块更多或更少的区域、每个区域更多或更少的垂直列行数和每个块更多或更少的垂直列行数。
图4A还示出了垂直列是交错的。在其他的实施例中,可以使用不同的交错图案。在一些实施例中,垂直列是非交错的。
图4B描绘了三维存储器结构126的实施例的部分,示出了沿图4A的线AA的横截面视图。此横截面视图穿过垂直列432和434以及区域430(见图4A)。图4B的结构包含两个漏极侧选择层SGD1和SGD1,两个源极侧选择层SGS1和SGS2,四个虚拟字线层DWLLla、DWLLlb、DWLL2a和DWLL2b,以及连接到数据存储器单元的三十二个字线层WLL0-WLL31。其他的实施例可以实现多于或少于两个漏极侧选择层,多于或少于两个源极侧选择层,多于或少于四个虚拟字线层,以及多于或少于三十二个字线层。描绘了垂直列432和434,其突出通过漏极侧选择层、源极侧选择层,虚拟字线层和字线层。在一个实施例中,每个垂直列包括NAND串。在下面列出的垂直列和层的下方是基板101、在基板上的绝缘薄膜454以及源极线SL。垂直列432的NAND串具有位于堆叠底部的源极端和位于堆叠顶部的漏极端。如与图4A一致,图4B示出了经由连接器415连接到位线414的垂直列432。还描述了局部互连体404和406。
为便于参考,漏极侧选择层SGD1和SGD2,源极侧选择层SGS1和SGS2,虚拟字线层DWLLla、DWLLlb、DWLL2a和DWLL2b,以及字线层WLL0-WLL31共同称为导电层。在一个实施例中,导电层由锡和钨的组合制成。在其他的实施例中,可以使用其他的材料形成导电层,诸如掺杂多晶硅、金属(诸如钨)或金属硅化物。在一些实施例中,不同的导电层可以由不同的材料形成。导电层之间是介电层DL0-DL19。例如,介电层DL10在字线层WLL26的上方,并在字线层WLL27的下方。在一个实施例中,介电层由SiO2制成。在其他的实施例中,可以使用其他的介电材料来形成介电层。
沿延伸通过堆叠体中交替的导电层和介电层的垂直列形成存储器单元。在一个实施例中,存储器单元被布置成NAND串。字线层WLL0-WLL31连接到存储器单元(也称为数据存储器单元)。虚拟字线层DWLLla、DWLLlb、DWLL2a和DWLL2b连接到虚拟存储器单元。虚拟存储器单元(也称为非数据存储器单元)不储存用户数据,而数据存储器单元有资格储存用户数据。因此,数据存储器单元可以被编程。漏极侧选择层SGD1和SGD1用于将NAND串与位线电气连接和断开。源极侧选择层SGS1和SGS2用于将NAND串与源极线SL电气连接和断开。
图4C描绘了图4C中部分描绘的块的导电层(SGD1、SGD1、SGSl、SGS2、DWLLla、DWLLlb、DWLL2a、DWLL2b以及WLL0-WLL31)的透视图。如上面关于图4A所提到的,局部互连体401、404、406、408和410将每个导电层分解成四个区域。例如,漏极侧选择栅极层SGD1(顶层)被分割成区域420、430、440和450。相似地,字线层WLL31被分割成区域460、462、464和466。对于字线层(WLL0-WLL-31),区域称为字线指状物,例如,字线层WLL31被分割成字线指状物460、462、464和466。
图4D描绘了图4B的区域442的横截面视图,其中区域442包含垂直列432的部分。在一个实施例中,垂直列是圆的并且包含四个层,然而在其他的实施例中,可以包含多于或少于四个层并且可以使用其他的形状。在一个实施例中,垂直列432包含由诸如SiO2的电介质制成的内核层470。也可以使用其他的材料。围绕内核层470的是多晶硅沟道471。也可以使用除了多晶硅的材料。注意到,沟道471连接到位线。围绕沟道471的是隧穿电介质472。在一个实施例中,隧穿电介质472具有ONO结构。围绕隧穿电介质472的是电荷俘获层473,诸如(例如)增加陷阱密度的专门配制的氮化硅。
图4D描绘了介电层DLL11、DLL12、DLL13、DLL14和DLL15,以及字线层WLL27、WLL28、WLL29、WLL30和WLL31。字线层的每层包含由氧化铝层477围绕的字线区域476,该氧化铝层由阻挡氧化物(SiO2)层478围绕。字线层与垂直列的物理相互作用形成存储器单元。因此,存储器单元包括沟道471、隧穿电介质472、电荷俘获层473、阻挡氧化物层478、氧化铝层477以及字线区域476。例如,字线层WLL31和垂直列432的部分包括存储器单元MC1。字线层WLL30和垂直列432的部分包括存储器单元MC2。字线层WLL29和垂直列432的部分包括存储器单元MC3。字线层WLL28和垂直列432的部分包括存储器单元MC4。字线层WLL27和垂直列432的部分包括存储器单元MC5。
当编程存储器单元时,将电子储存在与存储器单元相关联的电荷俘获层473的部分。响应于字线区域476上的适当电压,这些电子从沟道471穿过隧穿层473被引入到电荷俘获层473中。存储器单元的阈值电压(VT)随着储存的电荷量成比例地增加。在擦除操作期间,电子回到沟道。
图5A是描述编程过程550的一个实施例的流程图,其包含一个或多个验证步骤。可以使用本文所描述的编程序列中的任何一个序列,以及其他的编程序列。例如,过程550可以在LM序列、完整编程序列、智能验证等中使用。
在步骤552中,将编程电压(Vpgm)设定为初始值。另外,在步骤552中,将编程计数器(PC)初始化为零。在步骤554中,将编程脉冲施加到存储器单元的控制栅极。步骤554还包含在位线上建立编程条件。与要接收编程的存储器单元相关联的位线可以配备有编程使能电压,与要防止编程的存储器单元相关联的位线可以配备有编程禁止电压。
在步骤556中,进行验证过程。在步骤558中,确定存储器单元是否已经验证其阈值电压处于该存储器单元的最终目标电压。请注意,并不要求各个存储器单元对于给定状态都被验证为处于适当的阈值电压。纠错能够纠正一些低于其目标阈值电压的存储器单元。纠错能够纠正一些被过度编程的存储器单元。步骤558是指所有的状态已经完成编程。
如果验证通过,则在步骤560成功完成编程过程(状况=通过)。如果不是所有的存储器单元都被验证,则确定编程计数器(PC)是否小于最大值(诸如20)。如果编程计数器(PC)不小于最大值(步骤562),则编程过程已失败(步骤564)。如果编程计数器(PC)小于最大值(例如,20),则在步骤566中,编程计数器(PC)增量1并且编程电压升高到下一个脉冲。继步骤566之后,过程循环回到步骤554,并且将下一个编程脉冲施加到存储器单元。
在成功的编程过程(具有验证)结束时,存储器单元的阈值电压应当在编程的存储器单元的阈值电压的一个或多个分布内,或者在擦除的存储器单元的阈值电压的分布内,视情况而定。图5B说明了当每个存储器单元储存三位数据时,对应于存储器单元阵列的数据状态的示例性VT分布。然而,其他的实施例可以使用每个存储器单元多于或少于三位数据。一个轴表示存储器单元的数目。这可以是对数刻度。另一个轴表示存储器单元的阈值电压(VT)。
图5B示出了对应于擦除状态和编程状态A-G的八个VT分布。在一个实施例中,处于擦除状态的阈值电压是负的,并且处于编程状态A-G的阈值电压是正的。然而,编程状态A-G中的一个或多个状态的阈值电压可以是负的。擦除状态中的阈值电压的一些或全部可以是正的。
在每个编程状态的阈值分布的下边缘处或附近是验证参考电压。例如,图5B示出A状态的VvA、B状态的VvB、C状态的VvC、D状态的VvD、E状态的VvE、F状态的VvF以及G状态的VvG。当将存储器单元编程到给定状态时,管理电路将测试那些存储器单元是否具有大于或等于验证参考电压的阈值电压。
在每个相邻的VT分布对之间是用于从存储器单元读取数据的读取参考电压。例如,图5B示出了擦除状态与A状态之间的读取参考电压VrA、A状态与B状态之间的VrB、B状态与C状态之间的VrC、C状态与D状态之间的VrD、D状态与E状态之间的VrE、E状态与F状态之间的VrF以及F状态与G状态之间的VrG。通过测试给定存储器单元的阈值电压是高于还是低于相应的读取参考电压,管理电路可以确定该存储器单元处于什么状态。例如,阈值电压大于VrD但小于VrE的存储器单元可以假设处于D状态。
图5C说明了VT分布可以部分重叠。例如,相对于读取级VrB,一些A状态存储器单元具有大于VrB的阈值电压。另外,一些B状态存储器单元具有小于VrB的阈值电压。可以接受一定量的重叠,因为纠错算法可以处理VT超出其预期VT范围的一定百分比的单元。
注意到,在一些实施例中,恰好在编程之后,阈值电压分布可以类似于图5C。然而,随着时间的推移,存储器单元的阈值电压可以偏移,使得VT分布之间可以存在重叠。偏移的一个可能的原因是电荷从存储器单元的电荷储存区域泄露。偏移的另一个可能的原因是电荷被无意地添加到存储器单元的电荷储存区域。
另一方面,在一些情况下,紧接在编程后VT分布之间可以存在重叠。例如,一些存储器单元可以被过度编程。例如,在将存储器单元编程到A状态时,其阈值电压可以无意地大于VrB。发生编程不足也是可能的。例如,当将存储器单元编程到B态时,其阈值电压可以不完全达到VrB级。在每个情况下,这不意味着编程失败。如上所述,纠错算法可以处理阈值电压不处于其预期VT分布中的一定百分比的单元。
还要注意,与所描绘的阈值电压分布的相等间隔/宽度相反,各种分布可以具有不同的宽度/间隔,以便适应对数据保持损失的易感性的变化量,以及其他因素。
图5D是编程非易失性储存元件(例如,存储器单元)的过程500的一个实施例的流程图。步骤502包含接收命令以编程存储器单元的组。在一个实施例中,要被编程的每个存储器单元与相同的字线相关联。在一个实施例中,要被编程的每个存储器单元与不同的位线相关联。在一个实施例中,控制器122向存储器裸芯108发送命令以编程一组存储器单元。该命令可以发送到含有数个存储器裸芯的存储器封装体。注意到,典型地在编程之前擦除存储器单元。因此,注意到,存储器单元组在过程500之前可以处于擦除状态。
过程500可以用于若干编程序列。一个示例称为全序列编程。在全序列编程中,在单一的阶段期间,可以将存储器单元从擦除状态编程到其相应的目标阈值。一个示例称为LM序列编程。在LM序列编程中,在一个阶段内,将目标阈值最高的存储器单元首先从擦除状态编程到中间电平。然后,在第二阶段期间,将存储器单元从擦除状态或中间电平中任一个编程到其相应的目标阈值。在过程500中可以使用许多其他的编程序列。
在步骤504中,使用将被编程的存储器单元的子集来进行智能验证。以下讨论该智能验证的一个实施例。简而言之,在智能验证期间,控制电路选择存储器单元的子集以在智能验证过程期间接收一定量的编程。在智能验证期间,未选择的存储器单元不接收任何编程。可以使用各种技术来选择存储器单元。在一个实施例中,使用智能验证来确定存储器单元编程有多快。例如,智能验证可以检查将存储器单元的阈值电压增加到目标电平所需的编程脉冲的数量以及编程脉冲的幅度。请注意,一些存储器单元可以比其他存储器单元编程更快,因此此测试可以基于确定何时一定百分比的存储器单元达到目标电平或一些其他方法。
在步骤506中,基于智能验证的结果,确定虚拟编程序脉冲的幅度。在本文中,术语“虚拟编程脉冲”是指编程脉冲,其后没有编程验证以测试虚拟编程脉冲的功效。当然,在稍后施加不是虚拟编程脉冲的编程脉冲之后,可以进行编程验证。步骤506可以确定数个不同虚拟编程脉冲的幅度。
步骤508包含,使能对未为其进行智能验证的所选择的存储器单元的编程。在一个实施例中,步骤508包含,向位线施加电压,以允许与那些位线相关联的存储器单元进行编程。在此步骤中,所选择的存储器单元不必需包含将在此过程中最终接收编程的所有存储器单元。作为一个示例,选择要被编程为接近智能验证电平的数据状态(并且未对其进行智能验证)的存储器单元。作为一个示例,选择要被编程为中间状态(并且未对其进行智能验证)的存储器单元。作为一个示例,选择要被编程为一个特定状态(并且未对其进行智能验证)的存储器单元。作为一个示例,选择要被编程为任何状态(并且未对其进行智能验证)的存储器单元。另外,可以使能进行了智能验证的一些存储器单元进行编程。例如,可以使能将被编程为显著高于智能验证电平的状态的存储器单元进行编程。本文描述了许多示例。
步骤510包含,防止对进行了智能验证的所选择的存储器单元的编程。在一个实施例中,这包含(但不限于),将将要编程为接近智能验证电平的状态的存储器单元。这种选择的原因是为了防止那些作为智能验证的一部分并且将被编程为接近智能验证参考电平的状态的存储器单元的过度编程。注意到,在一些实施例中,不是所有进行了智能验证的存储器单元都被锁定。未进行智能验证的其他的存储器单元也可以被防止编程。例如,保持在擦除状态的存储器单元可以被防止编程。另外,在步骤510中,在步骤508中未被选择的任何存储器单元可以被防止编程。在一个实施例中,步骤510包含,向位线施加电压,以防止与那些位线相关联的存储器单元进行编程。
步骤512包含,向组中的存储器单元施加虚拟编程信号(例如,电压脉冲)。在一个实施例中,向与存储器单元的组相关联的字线施加虚拟编程电压脉冲。在一个实施例中,向组中的存储器单元的每一个的控制栅极施加虚拟编程脉冲。步骤512可以包含向存储器单元施加多于一个虚拟编程脉冲。注意到,当施加多于一个虚拟脉冲时,被使能的存储器单元和被防止编程的存储器单元可以改变。
步骤514包含,继续编程存储器单元。步骤514可以包含施加编程脉冲,接下来进行编程验证。这种模式可以重复,直到完成对存储器单元的组的编程。因此,可以使用与图5A的过程相似的过程。
图6是进行智能验证的过程600的一个实施例的流程图。在过程600中,记录关于存储器单元的编程速度的信息。可以使用这个信息来确定虚拟编程脉冲的幅度。过程600是过程500的步骤504的一个实施例。在一个实施例中,当将存储器单元编程为中间状态时使用智能验证。这也可以称为编程数据的较低页。在这个示例中,智能验证参考电平可以是与中间状态相关联的验证电平。在这种情况下,涉及智能验证的存储器单元可以是要被编程到D、E、F以及G状态的存储器单元。在一个实施例中,在全序列编程期间使用智能验证。在这个示例中,智能验证参考电平可以是与最低数据状态(例如,A状态)相关联的验证电平。注意到,由于下面要讨论的原因,智能验证电平可以不恰好处于这些电平。在全序列示例中,涉及智能验证的存储器单元可以包含要被编程到A、B、C、D、E、F以及G状态的存储器单元。注意到,这些仅仅是两个示例。另外,当在编程结束的VT分布具有多于或少于八个状态时,可以使用智能验证。
在步骤602中,在位线的第一集合上建立条件以允许编程。此位线的第一集合与在智能验证期间将接收编程的存储器单元相关联。在一个实施例中,将编程使能电压施加到位线的第一集合。在一个实施例中,此电压将所选择的存储器单元的NAND串连接到位线。因此,此电压可以导通漏极侧选择栅极。
在一个实施例中,步骤602中的存储器单元包含要被编程到D、E、F以及G状态的存储器单元的子集。在一个实施例中,存储器单元包含要被编程到A、B、C、D、E、F以及G状态的存储器单元的子集。可以使用数据状态的不同的集合。注意到,仅仅选择存储器单元的子集可以显著地减少电流消耗。
在步骤604中,在第二组位线上建立条件以防止编程。此第二组位线与在智能验证期间不将接收编程的存储器单元相关联。在一个实施例中,将编程禁止电压施加到第二组位线。在一个实施例中,此电压将未选择的存储器单元的NAND串从位线断开。因此,此电压可以关断漏极侧选择栅极。
在步骤606中,将编程脉冲施加到存储器单元的控制栅极。在一个实施例中,向与存储器单元相关联的字线施加编程脉冲。注意到,在一些架构中,字线被连接到组中的所有存储器单元的控制栅极。可以将编程脉冲施加到组中的所有存储器单元的控制栅极,因为位线条件可以防止在不期望的地方进行编程。然而,不需要将编程脉冲施加到不是智能验证的部分的存储器单元的控制栅极。
在步骤608中,在智能验证参考电平处进行VT验证。这可以包含,将参考电压施加到存储器单元的控制栅极,并且响应于此来感测位线。注意到,不需要感测与组中的所有存储器单元相关联的位线。因此,不需要在所有的位线上建立感测电压,这可以节省电流和/或功率。因此,在一个实施例中,控制电路锁定检测除了被选择用于智能验证的子集以外的组中的所有存储器单元。从感测中锁定可以不包含将位线预充电到允许感测的电平。将被感测的存储器单元可以将他们的位线预充电到允许感测的电平。
在步骤610中,确定智能验证是否已经结束。参照图7A,初始所有的存储器单元都处于擦除状态702。在施加第一编程脉冲后,其位线被使能的那些存储器单元的阈值电压向上移动。这由图7B中的智能验证分布704表示。擦除分布702现在含有更少的存储器单元。
在一个实施例中,控制电路确定是否有充足数目的存储器单元已经通过智能验证。步骤610可以测试最快的编程存储器单元是否已经达到智能验证电平。因此,即使许多较慢的编程存储器单元尚未达到智能验证电平,步骤610仍可以通过。还要注意,在步骤610中,其位线被使能的存储器单元中的一些可能被排除在测试之外。例如,一些存储器单元可能不表示典型的编程速度,但被包含在内以为表示典型编程速度的存储器单元提供更好的结果。作为一个示例,在2D NAND中,控制电路可以使能(在步骤602中)四个邻近的NAND串的组上的存储器单元。每个未使能的四个的组之间可以存在数个(或许多)NAND串。在这种情况下,每个四个的组中的两个内部NAND串上的存储器单元可以表示典型的编程条件。因此,在步骤610中,可以感测两个内部NAND串的位线。然而,每个四个的组中的两个外部NAND串上的存储器单元不可以表示典型的编程条件。其一个原因是他们具有未经受编程的邻居。因此,在步骤610中,可以从感测中排除两个外部NAND串的位线。
假设智能验证尚未通过,则过程600然后进行到步骤606以将另一编程脉冲施加到存储器单元的控制栅极。此编程脉冲可以具有与先前的编程脉冲相同的特点,或者特点可以改变。例如,此编程脉冲可以具有与先前的编程脉冲相同的幅度,或者幅度可以增加。另一种可能性是更改编程脉冲的持续时间。例如,随着过程的进展,编程脉冲可以更长。可以使用幅度改变和持续时间改变的组合。
图7B-图7D描绘了在施加每个附加的编程脉冲之后的结果。在智能验证电平(Vsm)已经达到(步骤610=是)之后,在步骤614中,记录关于智能验证的信息。注意到,在图7D中,当最快的编程存储器单元已经达到智能验证电平(Vsm)时,智能验证通过。在一个实施例中,记录为了达到智能验证电平而施加的编程脉冲的数目。在一个实施例中,记录编程脉冲的幅度信息。例如,在过程期间幅度改变的实施例中,可以记录最终的编程脉冲的幅度。在一个实施例中,基于智能验证的结果,控制电路确定初始编程脉冲的适当幅度。因此,被记录的信息可能是虚拟编程脉冲的电压幅度。该信息可以是诸如一、二、三……的数,其标识用于将最快的存储器单元编程为初始量的编程循环的数目,用于将最快的存储器单元编程为初始量的编程电压的幅度等等。注意到,过程600是可以用来确定存储器单元编程有多快的一个实施例,但是其他的技术可以被使用。
记录的信息可以被储存在存储器阵列126的外部,诸如在代码/参数113中。或者,信息可以被储存在存储器裸芯108的外部。将信息储存在存储器阵列的非易失性存储器单元中的优点在于,如果存储器装置中存在停电或者在编程另一个块时信息被重写,则信息不会丢失。与此相反,数据寄存器典型地使用诸如RAM的易失性存储器,其中数据可能在停电时丢失。将信息储存在非易失性存储器单元中的另一个优点在于,他比RAM便宜。
图8是使用LM序列编程存储器单元的过程800的一个实施例的流程图。在一个实施例中,过程800用于涉及中间(IM)状态的LM序列。过程800是过程500的步骤506-步骤512的一个实施例。因此,注意到,可以在过程800之前进行存储器单元的子集的智能验证。
在步骤802中,基于智能验证的结果,确定一个或多个虚拟编程序脉冲的幅度。在一个实施例中,幅度适合于将阈值电压从擦除状态提高到接近D状态,而不会过度编程通过D状态。这可能是保守的以避免过度编程。相似地,可以确定适合于将阈值电压从擦除状态提高到接近E、F或G状态的幅度,而同样不会过度编程相应的状态。编程可以从擦除状态到接近D状态,并且然后到E状态,代替从擦除状态直接到E状态。许多其他的示例是可能的。下面讨论进一步的细节。
在步骤804中,要被编程到接近智能验证电平的电平的存储器单元中,使能编程未参与智能验证的那些存储器单元。在一个实施例中,D状态接近智能验证电平。因此,要被编程到D状态的那些存储器单元中,在步骤804中可以使能那些未参与智能验证的存储器单元。然而,代替地,一些其他状态的阈值电平可以被认为接近智能验证电平。基于验证电平可以限定数据状态为接近智能验证电平。作为一个示例,如果智能验证电平处于给定的状态之下的一个状态之内,则认为他接近。例如,如果智能验证电平处于VvC与VvD之间,则认为他接近D状态。然而,智能验证电平可以略高于状态,并且仍然认为接近。注意到,也可以在步骤804中使能其他的存储器单元。例如,要被编程到高于D状态的数据状态的存储器单元可以被使能编程。更一般地,可以使能要被编程到接近智能验证电平的上述状态之上的数据状态的存储器单元。
在步骤806中,要被编程到接近智能验证电平的电平的存储器单元中,锁定编程参与智能验证的那些存储器单元。注意到,也可以在步骤806中锁定其他的存储器单元。
在步骤808中,将一个或多个虚拟编程脉冲施加到存储器单元的控制栅极。注意到,不存在测试虚拟编程的结果的智能验证。还要注意,当施加多于一个虚拟编程脉冲时,被使能编程的存储器单元以及被锁定的存储器单元可以改变。还要注意,在施加多于一个虚拟脉冲时,虚拟脉冲的幅度可以彼此不同,这取决于期望VT的移动量。这将参照图10和图11进一步地解释。
图9是使用全序列编程存储器单元的过程900的一个实施例的流程图。过程900是过程500的步骤506-步骤512的一个实施例。因此,注意到,可以在过程900之前进行存储器单元的子集的智能验证。
在步骤902中,基于智能验证的结果,确定一个或多个虚拟编程序脉冲的幅度。在一个实施例中,对于不同的状态确定适当的虚拟编程脉冲。例如,如果要将存储器单元编程到A状态至G状态,则可以确定适当的虚拟编程脉冲用于从擦除状态到A状态的编程,擦除状态直接到B状态的编程,等等。另一种可能性是提供具有从擦除到A状态的目标的虚拟脉冲,然后提供从前述结果分布到B状态的虚拟脉冲等。下面讨论进一步的细节。
在步骤904中,未参与智能验证并且要被编程到状态的所选择的集合的存储器单元被使能编程。例如,要被编程到A状态至G状态的存储器单元可以被使能。可以选择数据状态的更小的集合。可以期望选择要编程到较高阈值电压状态的那些,因为在整个编程过程中可以有更大的电流节省,以虚拟编程较高阈值电压状态。术语“虚拟编程”是指将一个或多个虚拟编程脉冲施加到被使能编程的存储器单元。
在步骤906中,在步骤904中未被选择的存储器单元被锁定编程。这些存储器单元可以包含参与智能验证的存储器单元,以及未参与智能验证但在步骤904中未被选择的存储器单元。
在步骤908中,将一个或多个虚拟编程脉冲施加到存储器单元的控制栅极。再一次注意,不存在测试虚拟编程的结果的智能验证。还要注意,当施加多于一个虚拟编程脉冲时,被使能编程的存储器单元以及被锁定的存储器单元可以在虚拟脉冲之间改变。这将参照图13和图14进一步地解释。
图10A是在IM编程序列期间施加虚拟脉冲的过程1000的一个实施例的流程图。过程1000是过程800的步骤804-步骤-808的一个实施例。因此,可以在过程1000之前进行智能验证。图10B描绘了在过程1000的一个实施例之前的VT分布。还描绘了示例性验证参考电平VvA、VvB、VvC、VvD、VvE、VvF以及VvG。存在擦除分布702以及智能验证分布1050。在此实施例中,智能验证分布1050被编程,使得最快的编程存储器单元处于或低于D状态的验证电平(VvD)。可以将智能验证分布1050编程到更高或更低的VT。保持智能验证电平更低的原因是,当邻近的存储器单元被编程时,存储器单元的VT可以向上偏移。通过建立低于VvD的智能验证电平,可以防止D状态存储器单元的过度编程。然而,注意到,这些影响取决于架构,并且具有低于VvD的智能验证电平并不总是必要的。在另一个实施例中,将智能验证分布1050编程到与中间数据状态相关联的验证电平(例如,VLM)。在另一个实施例中,出于刚刚讨论的原因,将智能验证分布1050编程到略低于VLM的电平。对于智能验证分布1050可以使用其他的智能验证电平。为了便于解释,将使用在图10B中描绘的示例性智能验证分布1050来讨论过程1000。
另外,注意到,虚拟编程脉冲的幅度可以已经在过程800的步骤802中确定。过程1000用于具有八个数据状态的实施例。可以修改过程1000以适应更少或更多的数据状态。在过程1000中,假设所有的存储器单元被关联到相同的字线。
在步骤1002中,停留在擦除状态的存储器单元,以及要被编程到A、B和C状态的存储器单元被锁定。在步骤1004中,要被编程到D状态的存储器单元中,参与智能验证的存储器单元被锁定。另外,未参与智能验证的D状态存储器单元被使能编程。注意到,那些存储器单元由图10B中的智能验证分布1050表示。为便于解释,以此方式表达步骤1002-步骤1004。另一种说法是,参与智能验证的所有存储器单元都被锁定,并且所有要被编程到A、B和C状态的存储器单元也被锁定。
在步骤1006中,要被编程到E、F和G状态的存储器单元被使能编程。可以通过建立使能编程的相关位线的条件来实现使能编程。
在步骤1008中,将第一虚拟编程脉冲施加到与存储器单元的组相关联的字线。图10C描绘了在步骤1008之后的VT分布的一个示例。分布1052涉及要被编程到D、E、F或G状态并且不涉及智能验证的存储器单元。在此示例中,选择虚拟脉冲的幅度以试图获得接近D状态的验证电平VvD的阈值电压。由于各个存储器单元的不同的编程速度,分布1052可以相当宽。换言之,一些存储器单元可以具有明显多于其他存储器单元的VT偏移。在一个实施例中,基于在智能验证器件存储器单元编程有多快,确定虚拟脉冲的幅度。在此示例中,存储器单元中的一些可以具有高于VvD的VT,但这并不是需要的。因此,分布1052可以更低。另一方面,分布1052可以更高。如果存储器单元具有高于VvE的VT,则他们可能被过度编程(对于D状态单元)。因此,避免分布1052的大部分高于VvE可以是有益的。这可以通过对虚拟编程脉冲相当保守来完成。另外,如上所述,对于一些存储器架构,存储器单元的VT可以似乎由于电容耦合到稍后被编程的邻居而增加。在建立对于虚拟编程脉冲的适当的幅度时,可以考虑此影响。分布1050现在仅仅表示参与智能验证的D状态单元。分布1051表示参与智能验证的E、F以及G状态单元。
在步骤1010中,锁定D状态存储器单元而不进行进一步的编程。在步骤1012中,将第二虚拟编程脉冲施加到与存储器单元的组相关联的字线。图10D描绘了在步骤1012之后的VT分布的一个示例。分布1054涉及要被编程到E、F或G状态的存储器单元。这包含先前处于分布1051的存储器单元和处于分布1052的存储器单元的两者。因此,将E、F或G状态单元中的一些从分布1051编程到分布1054。将其他的从分布1052编程到分布1054。可以选择虚拟脉冲的幅度以试图获得接近E状态的验证电平VvE的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvE的VT,但这并不是需要的。因此,分布1054可以更低或更高。
分布1053表示来自分布1050和分布1052的D状态单元。换言之,分布1053表示所有的D状态单元。注意到,来自图10C的分布1053缩减到图10D中的分布1052。
在步骤1014中,锁定E状态存储器单元而不进行进一步的编程。在步骤1016中,将第三虚拟编程脉冲施加到与存储器单元的组相关联的字线。图10E描绘了在步骤1016之后的VT分布的一个示例。分布1056涉及要被编程到F或G状态的存储器单元。选择虚拟脉冲的幅度以试图获得接近F状态的验证电平VvF的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvF的VT,但这并不是需要的。因此,分布1056可以更低或更高。注意到,由于分布1054现在仅仅包含E状态存储器单元,来自图10D的分布1054缩减到图10E中的分布1054。
在步骤1018中,锁定F状态存储器单元而不进行进一步的编程。在步骤1020中,将第四虚拟编程脉冲施加到与存储器单元的组相关联的字线。图10F描绘了在步骤1020之后的VT分布的一个示例。分布1058包含要被编程到G状态的存储器单元。选择虚拟脉冲的幅度以试图获得接近G状态的验证电平VvG的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvG的VT,但这并不是需要的。因此,分布1058可以更低或更高。注意到,来自图10E的分布1056所见到图10F中的分布1056。
图10F中的结果是,要被编程到E、F以及G状态的存储器单元的大部分的VT已经被提升到高于VvD。如下面将要解释的,在编程到中间状态时,这可以节省电流。然而,在该解释之前,将讨论导致类似于图10F的VT分布的另一实施例。
图11A是在IM编程序列期间施加虚拟脉冲的过程1100的另一个实施例的流程图。过程1100是过程800的步骤804-步骤-808的一个实施例。因此,可以在过程1100之前进行智能验证。因此,在图10B中的VT分布也适用于在过程1100之前的一个实施例的条件。另外,过程1100的虚拟编程脉冲的幅度可以已经在过程800的步骤802中被确定。过程1100用于具有八个数据状态的实施例。可以修改过程1100以适应更少或更多的数据状态。在过程1100中,假设所有的存储器单元与相同的字线相关联。
在步骤1102中,停留在擦除状态的存储器单元,以及要被编程到A、B、C、E、F以及G状态的存储器单元被锁定。在步骤1104中,要被编程到D状态的存储器单元中,参与智能验证的存储器单元被锁定。为便于解释,以此方式表达步骤1002-步骤1004。另一种说法是,参与智能验证的所有存储器单元都被锁定,并且所有要被编程到A、B、C、E、F和G状态的存储器单元,以及停留在擦除状态的存储器单元也被锁定。
在步骤1106中,要被编程到D状态的存储器单元中,未参与智能验证的存储器单元被使能编程。可以通过建立使能编程的相关联的位线的条件来实现使能编程。
在步骤1108中,将第一虚拟编程脉冲施加到与存储器单元的组相关联的字线。图11B描绘了在步骤1108之后的VT分布的一个示例。分布1152涉及要被编程到D状态并且不涉及智能验证的存储器单元。选择虚拟脉冲的幅度以试图获得接近D状态的验证电平VvD的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定虚拟脉冲的幅度。在此示例中,存储器单元中的一些具有高于VvD的VT,但这并不是需要的。因此,分布1152可以更低或更高。分布1150是指包含于智能验证的D、E、F以及G状态存储器单元。
在步骤1110中,锁定所有的D状态存储器单元。另外,使能编程E状态存储器单元。停留在擦除状态的存储器单元,以及要被编程到A、B、C、F以及G状态的存储器单元保持锁定。
在步骤1112中,将第二虚拟编程脉冲施加到与存储器单元的组相关联的字线。图11C描绘了在步骤1112之后的VT分布的一个示例。分布1154涉及要被编程到E状态的存储器单元。这些存储器单元中的一些来自于智能验证分布1150(在图11B中),其他的来自于擦除分布702。分布1151包含处于智能验证的D、F以及G状态存储器单元。选择虚拟脉冲的幅度以试图获得接近E状态的验证电平VvE的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvE的VT,但这并不是需要的。因此,分布1154可以更低或更高。
在步骤1114中,锁定所有的E状态存储器单元。另外,使能编程F状态存储器单元。停留在擦除状态的存储器单元,以及要被编程到A、B、C、D以及G状态的存储器单元保持锁定。
在步骤1116中,将第三虚拟编程脉冲施加到与存储器单元的组相关联的字线。图11D描绘了在步骤1112之后的VT分布的一个示例。分布1156涉及要被编程到F状态的存储器单元。这些存储器单元中的一些来自于擦除分布702,其他的来自于分布1151。分布1155包含参与智能验证(先前在分布1151中)的D以及G状态单元。选择虚拟脉冲的幅度以试图获得接近F状态的验证电平VvF的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvF的VT,但这并不是需要的。因此,分布1156可以更低或更高。
在步骤1118中,锁定所有的F状态存储器单元。另外,使能编程G状态存储器单元。停留在擦除状态的存储器单元,以及要被编程到A、B、C、D以及E状态的存储器单元保持锁定。
在步骤1120中,将第四虚拟编程脉冲施加到与存储器单元的组相关联的字线。图11E描绘了在步骤1120之后的VT分布的一个示例。分布1158涉及要被编程到G状态的存储器单元。单元中的一些来自于擦除分布702,其他的来自于分布1155。图1155未在图11E中描绘。分布1159表示所有的D状态单元(包含以前在分布1155和分布1152中的单元)。选择虚拟脉冲的幅度以试图获得接近G状态的验证电平VvG的阈值电压。在一个实施例中,基于在智能验证期间存储器单元编程有多快,确定幅度。在此示例中,存储器单元中的一些具有高于VvG的VT,但这并不是需要的。因此,分布1158可以更低或更高。
注意到,在过程1100之后的图11E中的结果可以类似于在过程1000之后的图10F中的结果。其他的变化是可能的。例如,在D、E、F以及G状态单元处于分布1052的图10C中的结果之后,可以使用虚拟脉冲来推动接近VvE的E状态单元、接近VvF的F状态单元(使用一个虚拟脉冲)以及接近VvG的G状态单元(使用一个虚拟脉冲)。
图12A是将存储器单元编程到LM状态的过程1200的一个实施例的流程图。过程1200可以用于在进行过程1000或过程1100之后。在步骤1202中,在位线上建立条件,以允许要被编程到D、E、F以及G状态的存储器单元的编程。在步骤1204中,在位线上建立条件,以防止停留在擦除状态以及要被编程到A、B和C状态的存储器单元的编程。
在步骤1206中,将编程电压施加到字线。在步骤1208中,进行编程验证操作。在步骤1210中,确定LM编程是否结束。此步骤可以检测是否足够数目的存储器单元具有大于LM状态的VT。如果否,则过程继续到步骤1212。在步骤1212中,锁定已经通过LM验证的存储器单元。然后过程1200继续到步骤1206。在步骤1210指示LM状态编程完成之后,该过程结束。
图12B描绘在过程1200之后的结果。LM分布1226被示出为刚刚高于LM验证电平(VLM)。分布1254是指处于图10F的分布1054中的存储器单元。注意到,处于图10F中的分布1054的存储器单元中的一些可以已经接收一些编程,并且现在被描绘为LM分布1226的部分。相似的原因可以应用于图10F中的分布1056和分布1058。然而,可能图10F中的分布如此之高以至于在过程1200期间没有存储器单元接收到任何编程。来自于图10F的分布1052在图12B中不具有对应的分布。为了讨论,假设来自分布1052的所有存储器单元现在处于LM分布1226中。
还要注意,处于智能验证分布1050的存储器单元中的一些现在处于LM分布1226。换言之,要被编程到D、E、F和G状态并且参与智能验证的存储器单元被从分布1050编程到了LM分布1226。
以上讨论比较了图10F与图12B的VT分布。相似的原因应用于图11E的VT分布1152、1154、1156以及1158。
注意到,至少由于以下原因,在过程1200中节省了大量电流。处于图10F中的分布1054、1056以及1058的存储器单元中的许多可以在过程中提早被锁定。因此,在编程过程期间需要预充电的总BL电容减少。当建立编程条件时,这可以节省大量的电流。另外,在过程1200的编程验证期间,因为他们的VT将大于LM验证电平,他们将不传导电流。因此在编程期间会节省附加的电流。
在过程1200之后,通过将所有的存储器单元编程到其最终的状态,可以完成LM编程序列。这可以包含,将存储器单元从LM分布1226编程到D、E、F和G状态中的任何一个,将存储器单元从分布1254编程到E状态,将存储器单元从分布1256编程到F状态,并且将存储器单元从分布1258编程到G状态。另外,将处于擦除状态702的存储器单元中的一些编程到A、B或C状态。前述的编程可以发生在单一阶段或多个阶段。
图13A是使用全序列编程的过程1300的一个实施例的流程图。过程1300是过程900的步骤904-步骤908的一个实施例。因此,可以在过程1300之前进行智能验证。注意到,该智能验证电平可以与过程1000和过程1100中使用的智能验证电平不同。过程1300的一个可能的智能验证电平是A状态验证电平(VvA)。然而,如上所述,智能验证电平可以略低于A状态验证电平(VvA),考虑由于稍后邻近的编程导致的存储器单元的可能的明显的VT偏移。正如已经提到的,此影响取决于存储器的架构。
另外,过程1300的虚拟编程脉冲的幅度可以已经在过程900的步骤902中被确定。过程1300用于具有八个数据状态的实施例。可以修改过程1300以适应更少或更多的数据状态。在过程1300中,假设所有的存储器单元与相同的字线相关联。
在步骤1302中,停留在擦除状态的存储器单元被锁定。经过智能验证的状态存储器单元也可以被锁定。在步骤1304中,要被编程到B至G状态的存储器单元被使能编程。另外,未参与智能验证的状态单元被使能。在步骤1306中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13B描绘了在步骤1306的一个实施例之后的结果。图13B描绘了擦除分布702和分布1352。分布1352包含从擦除状态702编程的那些存储器单元。分布1352也可以包含在智能验证期间被编程的存储器单元。因此,为便于解释,智能验证分布未描绘于图13B中。
在步骤1308中,要被编程到A状态的存储器单元被锁定。停留在擦除状态的存储器单元保持锁定。要被编程到B至G状态的存储器单元保持使能编程。在步骤1310中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13C描绘了在步骤1310的一个实施例之后的结果。图13C描绘了分布1354,其表示从分布1352编程的B至G状态的存储器单元。分布1352现在仅仅含有A状态存储器单元。
在步骤1312中,要被编程到B状态的存储器单元被锁定。其他的存储器单元保持处于其先前的条件。在步骤1314中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13D描绘在步骤1314的一个实施例之后的结果。图13D描绘了分布1356,其表示从分布1354编程的C至G状态的存储器单元。分布1354现在仅仅含有B状态存储器单元。
在步骤1316中,要被编程到C状态的存储器单元被锁定。其他的存储器单元保持处于其先前的条件。在步骤1318中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13E描绘了在步骤1318的一个实施例之后的结果。图13E描绘了分布1358,其表示从分布1356编程的D至G状态的存储器单元。分布1356现在仅仅含有C状态存储器单元。
在步骤1320中,要被编程到D状态的存储器单元被锁定。其他的存储器单元保持处于其先前的条件。在步骤1322中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13F描绘了在步骤1322的一个实施例之后的结果。图13F描绘了分布1360,其表示从分布1358编程的E至G状态的存储器单元。分布1358现在仅仅含有D状态存储器单元。
在步骤1324中,要被编程到E状态的存储器单元被锁定。其他的存储器单元保持处于其先前的条件。在步骤1326中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13G描绘了在步骤1318的一个实施例之后的结果。图13G描绘了分布1362,其表示从分布1360编程的F至G状态的存储器单元。分布1360现在仅仅含有E状态存储器单元。
在步骤1328中,要被编程到F状态的存储器单元被锁定。其他的存储器单元保持处于其先前的条件。在步骤1330中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图13H描绘了在步骤1330的一个实施例之后的结果。图13G描绘了分布1364,其表示从分布1362编程的G状态的存储器单元。分布1360现在仅仅含有F状态存储器单元。
图14A是使用全序列编程的过程1400的一个实施例的流程图。在过程1400中,虚拟编程脉冲推动VT直接从擦除状态到接近其预期编程状态。过程1400是过程900的步骤904-步骤908的一个实施例。因此,可以在过程1400之前进行智能验证。在一个实施例中,智能验证电平是AvV电平,或略低于AvV电平。过程1400的虚拟编程脉冲的幅度可以已经在过程900的步骤902中被确定。过程1400用于具有八个数据状态的实施例。可以修改过程1400以适应更少或更多的数据状态。在过程1400中,假设所有的存储器单元与相同的字线相关联。
在步骤1402中,停留在擦除状态以及B至G状态的存储器单元被锁定。另外,参与智能验证的A状态存储器单元被锁定。在步骤1404中,未参与智能验证的要被编程到A状态的存储器单元被使能编程。在步骤1406中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14B描绘了在步骤1406的一个实施例之后的结果。图14B描绘了擦除分布702和分布1452。分布1452包含从擦除状态702编程的A状态存储器单元。分布1452也可以包含在智能验证期间被编程的A至G状态存储器单元。
在步骤1408中,要被编程到A状态的存储器单元被锁定。要被编程到B状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1410中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14C描绘了在步骤1410的一个实施例之后的结果。图14C描绘了分布1454,其表示从擦除状态702编程的B状态的存储器单元。
在步骤1412中,要被编程到B状态的存储器单元被锁定。要被编程到C状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1414中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14D描绘了在步骤1414的一个实施例之后的结果。图14D描绘了分布1456,其表示从擦除状态702编程的C状态的存储器单元。
在步骤1416中,要被编程到C状态的存储器单元被锁定。要被编程到D状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1418中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14E描绘了在步骤1418的一个实施例之后的结果。图14E描绘了分布1458,其表示从擦除状态702编程的D状态的存储器单元。
在步骤1420中,要被编程到D状态的存储器单元被锁定。要被编程到E状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1422中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14F描绘了在步骤1422的一个实施例之后的结果。图14F描绘了分布1460,其表示从擦除状态702编程的E状态的存储器单元。
在步骤1424中,要被编程到E状态的存储器单元被锁定。要被编程到F状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1426中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14G描绘了在步骤1426的一个实施例之后的结果。图14G描绘了分布1462,其表示从擦除状态702编程的F状态的存储器单元。
在步骤1428中,要被编程到F状态的存储器单元被锁定。要被编程到G状态的存储器单元被使能编程。其他的存储器单元保持锁定。在步骤1430中,将虚拟编程脉冲施加到字线。可以基于智能验证确定虚拟脉冲的幅度。图14H描绘了在步骤1430的一个实施例之后的结果。图14H描绘了分布1464,其表示从擦除状态702编程的G状态的存储器单元。
图15是完成全序列编程的过程1500的流程图。该过程可以在过程1300或过程1400之后被进行。过程1500可以从看起来像图13H或14H中的示例的VT分布开始,但不限于那些示例。过程1500的一个实施例的目标是收紧VT分布。在步骤1502中,要被编程到A至G状态的存储器单元被使能编程。擦除状态存储器单元可以被锁定。在一个实施例中,在智能验证期间维持与存储器单元的VT有关的信息,使得可以锁定A至G状态存储器单元中的一些以防止可能的过度编程。
在步骤1504中,将编程电压施加到与存储器单元相关联的字线。在步骤1506中,在各种电平(例如,VvA、VvB、VvC、VvD、VvE、VvE、VvF、VvG)处进行编程验证。在步骤1508中,对于其相应的状态通过验证的存储器单元被锁定,而不进一步编程。在步骤1510中,确定编程是否完成。该测试可以基于未通过编程验证的存储器单元不超过一定数目。如果编程未完成,则在步骤1512中编程电压(Vpgm)被升高。如果编程未完成,过程1500回到步骤1504。
注意到,在过程1500期间电流消耗可以显著减少。因为存储器单元中的许多在过程1500早期具有如此高的VT,所以在验证参考电平中的许多电平进行验证时,他们将不传导电流。这与常规的过程相反。还记得过程1300和过程1400施加虚拟脉冲。因此,在那些过程1300、过程1400中的编程验证期间,不使用电流。
图16是图4A的部分的图。描绘了局部互连体404与局部互连体406之间的区域。图16说明了选择参与智能验证的存储器单元的一个技术。存储器单元被编号为1-8。这个编号可以设计他们如何定址。标记为1、2、7或8的存储器单元更靠近于局部互连体404、局部互连体406。这些将被称为“外部存储器单元”。标记为3、4、5或6的存储器单元更远离于局部互连体。这些将被称为“内部存储器单元”。内部存储器单元的编程特点(例如,速度)可以与外部存储器单元的不同。
在一个实施例中,基于存储器单元是内部存储器单元还是外部存储器单元来选择用于智能验证的存储器单元。例如,可以选择内部存储器单元用于智能验证,而不选择外部存储器单元。替代地,可以选择外部存储器单元用于智能验证,而不选择内部存储器单元。可能的原因是,选择更快的编程存储器单元用于智能验证。选择更快的编程单元可以用来确保来源于智能验证的(多个)虚拟脉冲的幅度不太高。其他的原因可以被用来选择内部与外部存储器单元。另外,选择内部或外部存储器单元是基于他们的物理位置选择用于智能验证的存储器单元的一个示例。在此示例中,其基于从存储器单元到局部互连体404、局部互连体406的距离。可以存在存储器单元的物理位置影响编程速度的其他配置。选择对于智能验证更快编程的存储器单元的概念可以扩展到其他物理条件。
本文公开的一个实施例包含非易失性储存装置,其包括多个非易失性储存元件以及与非易失性储存元件通信的控制电路。控制电路配置为接收命令以编程多个非易失性储存元件的组,并且使能编程该非易失性储存元件的组的子集,并且禁止编程该组中的剩余的储存元件。控制电路配置为在非易失性储存元件的子集上进行智能验证,并且基于该智能验证来确定虚拟编程脉冲的幅度。控制电路配置为使能未进行智能验证的组中所选择的非易失性储存元件的编程。控制电路配置为防止进行了智能验证的组中所选择的非易失性储存元件的编程。控制电路配置为,在未进行智能验证的组中的所选则的非易失性储存元件被使能编程时,并且在进行了智能验证的组中的所选择的非易失性储存元件被防止编程时,将虚拟编程脉冲施加到非易失性储存元件的组。控制电路配置为在虚拟编程脉冲被施加到该组之后对该非易失性储存元件的组进行编程。
本文公开的一个实施例包含操作非易失性储存器的方法。方法包括接收编程非易失性储存元件的组的命令,使能编程非易失性储存元件的组的子集,并且禁止编程该组中的剩余的储存元件,在非易失性储存元件的子集上进行智能验证。基于该智能验证,确定虚拟编程脉冲的幅度。方法还包含,使能编程未进行智能验证的组中的所选择的非易失性储存元件;锁定编程进行了智能验证的组中的所选择的非易失性储存元件;以及在使能编程未进行智能验证的组中的所选择的非易失性储存元件时,并且在锁定编程进行了智能验证的组中的所选择的非易失性储存元件时,将虚拟编程脉冲施加到非易失性储存元件的组。方法还包含,在施加虚拟编程脉冲之后,编程非易失性储存元件的组。
一个实施例包含3D堆叠非易失性存储器装置,该3D堆叠非易失性存储器装置包括基板、存在于基板上方的三维存储器阵列以及与非易失性储存元件通信的控制电路。三维存储器阵列包括多个非易失性储存元件,每个非易失性储存元件包括控制栅极。控制电路接收命令以编程多个非易失性储存元件的组,在该组中的非易失性储存元件的第一集合被使能编程并且在该组中的非易失性储存元件的第二集合被锁定而不进行编程时,将信号施加到非易失性储存元件的组的控制栅极。控制电路响应于所施加的信号来感测非易失性储存元件的第一组,基于所施加的信号和非易失性储存元件的第一集合的感测来确定编程特点,并且基于编程特点来确定虚拟编程脉冲的幅度。控制电路使能编程第二集合中的所选择的非易失性储存元件,防止编程第一组中的所选择的非易失性储存元件,以及在第二集合中所选择的非易失性储存元件被使能编程时并且在第一集合中所选择的非易失性储存元件被阻止编程时,将虚拟编程脉冲施加到非易失性储存元件的组的控制栅极。在施加虚拟编程脉冲之后,控制电路编程非易失性储存元件的组。
上文的本发明的详细描述已经出于说明和描述的目的而被呈现。这并不旨在穷举或限制本发明为所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择所描述的实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域的其他技术人员能够以各种实施例和适合于所预期的特定用途的各种修改来最好地利用本发明。意图由所附的权利要求限定本发明的范围。

Claims (15)

1.一种非易失性储存器装置,包括:
多个非易失性储存元件(MCI、MC2……);
控制电路(110、122、124、128、132),其与所述非易失性储存元件通信,其中所述控制电路配置为:
接收命令以编程所述多个非易失性储存元件的组;
在所述组的子集被使能编程并且所述组的剩余的成员被禁止编程时,通过将编程信号施加到所述组来表征所述组的编程速度;
基于所述编程速度,确定虚拟编程脉冲的幅度;
在所述组的剩余的成员中所选择的成员被使能编程时并且在所述子集被禁止编程时,将所述虚拟编程脉冲施加到所述组;以及
在所述虚拟编程脉冲被施加到所述组之后,编程非易失性储存元件的所述组。
2.如权利要求1所述的非易失性储存器装置,其中所述控制电路配置为表征所述组的编程速度,还包括,所述控制电路配置为:
在施加所述编程信号之后,感测所述子集中的所述非易失性储存元件,同时锁定感测所述组的剩余的成员。
3.如权利要求1所述的非易失性储存器装置,其中,在所述控制电路将所述一个或多个虚拟编程脉冲施加到所述组时,被使能编程的所述组的剩余的成员中的所选择的成员要被编程到阈值电压,所述阈值电压超过所述组的一个或多个其他的成员的目标阈值电压。
4.如权利要求1所述的非易失性储存器装置,其中所述控制电路配置为,响应于施加所述一个或多个虚拟编程脉冲而不验证所述非易失性储存元件。
5.如权利要求1所述的非易失性储存器装置,其中,在所述控制电路将所述一个或多个虚拟编程脉冲施加到所述组时,被使能编程的所述组的剩余的成员中的所选择的成员要被从擦除状态编程到中间状态。
6.如权利要求1所述的非易失性储存器装置,其中,在所述控制电路将所述一个或多个虚拟编程脉冲施加到所述组时,被使能编程的所述组的剩余的成员中的所选择的成员要被从擦除状态编程到多个数据状态中的任何一个。
7.如权利要求1所述的非易失性储存器装置,还包括包含多个字线层的三维存储器阵列,其中非易失性储存元件的所述组存在于相同的字线层。
8.如权利要求7所述的非易失性储存器装置,其中所述组中的非易失性储存元件与局部互连体的距离不同,其中基于距所述局部互连体的距离而选择所述子集以表征所述组的编程速度。
9.一种操作非易失性储存器的方法,所述方法包括:
接收命令以编程非易失性储存元件的组(502);
使能编程非易失性储存元件的所述组的子集,并且禁止编程所述组中的剩余的非易失性储存元件(504);
对非易失性储存元件的所述子集进行智能验证(504);
基于所述智能验证,确定虚拟编程脉冲的幅度(506);
使能编程未进行所述智能验证的所述组中的所选择的非易失性储存元件(508);
锁定编程进行所述智能验证的所述组中的所选择的非易失性储存元件(510);
在使能编程未进行所述智能验证的所述组中的所选择的非易失性储存元件时,并且在锁定编程进行了所述智能验证的所述组中的所选择的非易失性储存元件时,将所述虚拟编程脉冲施加到非易失性储存元件的所述组(512);以及
在所述虚拟编程脉冲被施加之后,编程非易失性储存元件的所述组(514)。
10.如权利要求9所述的方法,其中对非易失性储存元件的所述子集进行智能验证包括:
锁定编程所述组中所述子集以外的所有非易失性储存元件;
使能编程所述子集中的要被从擦除状态编程到数据状态的非易失性储存元件;
将编程信号施加到非易失性储存元件的所述组的控制栅极;并且
感测所述子集中的所述非易失性储存元件。
11.如权利要求10所述的方法,其中感测所述子集中的所述非易失性储存元件包括:
锁定感测所述组中除所述子集以外的所有非易失性储存元件;并且
使能感测所述子集中的要被从所述擦除状态编程到数据状态的非易失性储存元件。
12.如权利要求9到11中的任一项所述的方法,还包括,基于所述组中的所述非易失性储存元件的物理位置来选择所述子集。
13.如权利要求9所述的方法,其中所述使能编程未进行所述智能验证的所述组中的所选择的非易失性储存元件包括:
使能编程未参与所述智能验证并且要被编程到接近所述智能验证的参考电平的第一数据状态的非易失性储存元件。
14.如权利要求13所述的方法,还包括使能编程非易失性储存元件,所述非易失性储存元件参与所述智能验证并且要被编程到高于所述第一数据状态的第二数据状态。
15.如权利要求14所述的方法,其中所述确定虚拟编程脉冲的幅度包括:
确定虚拟编程脉冲的幅度,以将阈值电压从擦除状态直接改变到靠近,所述第二数据状态,但不高于所述第二数据状态。
CN201680053927.9A 2015-10-30 2016-09-13 用于编程非易失性存储器的智能验证 Active CN108028069B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/928,436 US9564226B1 (en) 2015-10-30 2015-10-30 Smart verify for programming non-volatile memory
US14/928,436 2015-10-30
PCT/US2016/051452 WO2017074576A1 (en) 2015-10-30 2016-09-13 Smart verify for programming non-volatile memory

Publications (2)

Publication Number Publication Date
CN108028069A CN108028069A (zh) 2018-05-11
CN108028069B true CN108028069B (zh) 2021-05-25

Family

ID=56940477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680053927.9A Active CN108028069B (zh) 2015-10-30 2016-09-13 用于编程非易失性存储器的智能验证

Country Status (4)

Country Link
US (1) US9564226B1 (zh)
CN (1) CN108028069B (zh)
DE (1) DE112016003568B4 (zh)
WO (1) WO2017074576A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102903B1 (en) * 2017-03-31 2018-10-16 Intel Corporation Write process for a non volatile memory device
US10381095B1 (en) 2018-02-28 2019-08-13 Sandisk Technologies Llc Non-volatile memory with smart erase verify
US10839928B1 (en) 2019-05-16 2020-11-17 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
US11081198B2 (en) 2019-05-16 2021-08-03 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
CN115512747A (zh) 2021-06-23 2022-12-23 桑迪士克科技有限责任公司 用于具有相邻平面干扰检测的智能验证的设备和方法
US11967383B2 (en) 2022-01-20 2024-04-23 Western Digital Technologies, Inc. Non-volatile memory with enhanced program operation for last state on slow plane

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
KR101314306B1 (ko) 2005-10-27 2013-10-02 샌디스크 테크놀로지스, 인코포레이티드 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
US7224614B1 (en) 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
US7630253B2 (en) * 2006-04-05 2009-12-08 Spansion Llc Flash memory programming and verification with reduced leakage current
US7894269B2 (en) * 2006-07-20 2011-02-22 Sandisk Corporation Nonvolatile memory and method for compensating during programming for perturbing charges of neighboring cells
US7606091B2 (en) 2006-09-12 2009-10-20 Sandisk Corporation Method for non-volatile memory with reduced erase/write cycling during trimming of initial programming voltage
US7599223B2 (en) 2006-09-12 2009-10-06 Sandisk Corporation Non-volatile memory with linear estimation of initial programming voltage
KR100822805B1 (ko) * 2006-10-20 2008-04-18 삼성전자주식회사 다중 배속 동작 모드를 가지는 플래시 메모리 장치
US7570520B2 (en) 2006-12-27 2009-08-04 Sandisk Corporation Non-volatile storage system with initial programming voltage based on trial
US7564711B2 (en) 2007-02-20 2009-07-21 Sandisk Corporation Multiple pass write sequence for non-volatile storage
CN102067233B (zh) * 2008-06-12 2014-03-12 桑迪士克科技股份有限公司 使用索引编程和减少的验证的非易失性存储器和方法
US7800956B2 (en) 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
KR100976696B1 (ko) 2008-07-10 2010-08-18 주식회사 하이닉스반도체 불휘발성 메모리 장치의 프로그램 방법
JP5172555B2 (ja) 2008-09-08 2013-03-27 株式会社東芝 半導体記憶装置
US7768836B2 (en) 2008-10-10 2010-08-03 Sandisk Corporation Nonvolatile memory and method with reduced program verify by ignoring fastest and/or slowest programming bits
JP2010135023A (ja) 2008-12-05 2010-06-17 Toshiba Corp 半導体記憶装置
US8755229B1 (en) 2009-06-23 2014-06-17 Micron Technology, Inc. Limiting flash memory over programming
KR101633018B1 (ko) 2009-12-28 2016-06-24 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8130551B2 (en) 2010-03-31 2012-03-06 Sandisk Technologies Inc. Extra dummy erase pulses after shallow erase-verify to avoid sensing deep erased threshold voltage
JP2011258260A (ja) 2010-06-07 2011-12-22 Toshiba Corp 不揮発性半導体記憶装置
WO2013043602A2 (en) * 2011-09-19 2013-03-28 SanDisk Technologies, Inc. High endurance non-volatile storage
JP2013122799A (ja) 2011-12-09 2013-06-20 Toshiba Corp 不揮発性半導体記憶装置
US9142298B2 (en) 2013-02-11 2015-09-22 Sandisk Technologies Inc. Efficient smart verify method for programming 3D non-volatile memory
WO2014137928A2 (en) * 2013-03-04 2014-09-12 Sandisk Technologies Inc. Dynamic erase depth for improved endurance of non-volatile memory
US9269446B1 (en) * 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells

Also Published As

Publication number Publication date
WO2017074576A1 (en) 2017-05-04
US9564226B1 (en) 2017-02-07
CN108028069A (zh) 2018-05-11
DE112016003568T5 (de) 2018-06-14
DE112016003568B4 (de) 2023-12-21

Similar Documents

Publication Publication Date Title
CN108028069B (zh) 用于编程非易失性存储器的智能验证
US10014063B2 (en) Smart skip verify mode for programming a memory device
US9472298B1 (en) Dynamic read valley search in non-volatile memory
US9496040B2 (en) Adaptive multi-page programming methods and apparatus for non-volatile memory
US9343141B2 (en) Reprogramming memory with single program pulse per data state
US9361993B1 (en) Method of reducing hot electron injection type of read disturb in memory
US9576673B2 (en) Sensing multiple reference levels in non-volatile storage elements
US9336891B2 (en) Look ahead read method for non-volatile memory
CN111406288B (zh) 用于减少编程干扰的设备和方法
US9324419B2 (en) Multiple pass programming for memory with different program pulse widths
US20160260495A1 (en) Word Line Look Ahead Read For Word Line To Word Line Short Detection
US9165659B1 (en) Efficient reprogramming method for tightening a threshold voltage distribution in a memory device
CN111183482B (zh) 编程验证后通过修改两层堆叠体中接口处字线电压来减少编程干扰
US9595345B2 (en) Adaptive selective bit line pre-charge for current savings and fast programming
US10748627B2 (en) Reducing neighbor word line interference in a two-tier memory device by modifying word line programming order
CN113196401B (zh) 对由于块氧化物减薄引起的编程速度变化进行补偿的存储器设备
US9704595B1 (en) Self-detecting a heating event to non-volatile storage
US11211132B2 (en) Detection of a last programming loop for system performance gain
US9569143B1 (en) In block data folding for 3D non-volatile storage
CN113424258B (zh) 用于对存储器装置进行编程的改进的验证方案
US11328780B1 (en) Reduced verify scheme during programming based on spacing between verify levels
US20160189786A1 (en) Methods and apparatus for reducing read time for nonvolatile memory devices
US11398280B1 (en) Lockout mode for reverse order read operation
US11929125B2 (en) Window program verify to reduce data latch usage in memory device
US11475959B1 (en) Reduced program time for memory cells using negative bit line voltage for enhanced step up of program bias

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant