非易失性存储器的利用双脉冲编程的自然阈值电压压缩的利记博彩app
【专利摘要】本公开涉及非易失性存储器的利用双脉冲编程的自然阈值电压压缩。与非易失性存储器单元通信的控制电路被配置成基于编程性能将存储器单元区分和分类成不同存储器单元子集。基于该分类,控制电路将不同的编程信号施加于被编程到共同数据状态的存储器单元的不同子集。
【专利说明】非易失性存储器的利用双脉冲编程的自然阈值电压压缩
[0001 ]优先权声明
[0002]本申请要求于20 15年4月22日提交的题为“Natural Threshold VoltageCompact1n With Dual Pulse Program(利用双脉冲编程的自然阈值电压压缩)”的美国临时申请62/150,947以及于2015年10月29日提交的题为“Natural Threshold VoltageCompact1n With Dual Pulse Program For Non-volatile Memory(非易失性存储器的利用双脉冲编程的自然阈值电压压缩)”的美国专利申请N0.14/926,167的优先权。
【背景技术】
[0003]半导体存储器被广泛应用于各种电子装置,诸如蜂窝电话、数码摄像机、个人数字助理、医疗电子装置、移动计算装置以及非移动计算装置。半导体存储器可以包括非易失性存储器或易失性存储器。非易失性存储器使得即使在非易失性存储器未连接至电源(例如,电池)时也能够存储和保持信息。非易失性存储器的示例包括闪速存储器(例如,NAND型闪速存储器和NOR型闪速存储器)以及电可擦除可编程只读存储器(EEPROM)。
[0004]电荷俘获材料可用于非易失性存储器装置以存储表示数据状态的电荷。可以以三维(3D)堆叠式存储器结构竖直地布置电荷俘获材料。3D存储器结构的一个示例是位成本可扩展(BiCS)构造,其包括交替的导电层和介电层的堆叠。在堆叠中形成存储器孔(memoryhole)并且然后通过以下方式形成NAND串:用包括电荷俘获层的材料填充存储器孔以产生存储器单元的竖直列。直的NAND串在一个存储器孔中延伸。由导电层提供存储器单元的控制栅极。
[0005]—些非易失性存储器装置用于存储两个范围的电荷,并且因此可以在对应于以下两个数据状态的两个阈值电压范围之间对存储器单元进行编程/擦除:擦除状态(例如,数据“I” )和编程状态(例如,数据“O” ) ο这样的装置被称为二进制装置或双态装置。
[0006]通过识别多个不同的允许的阈值电压范围来实现多状态非易失性存储器。每个不同的阈值电压范围对应于针对一组数据位分配了预定值的数据状态。编程到存储器单元中的数据与阈值电压范围之间的具体关系取决于针对存储器单元采用的数据编码方案。例如,美国专利N0.6,222,762和美国专利申请公开N0.2004/0255090两者描述了用于多状态闪速存储器单元的各种数据编码方案。
[0007]用于非易失性存储器的编程操作通常包括应用多次编程以及在每次编程之后对编程进行验证。虽然多状态非易失性存储器能够存储比二进制非易失性存储器更多的数据,但是对于多状态非易失性存储器来说编程和对编程进行验证的过程会花费更长时间。
【发明内容】
[0008]根据一个实施例,提供一种设备,其包括:非易失性存储器单元;以及与存储器单元通信的控制电路,控制电路被配置成将不同的编程信号施加于被编程到共同编程状态的存储器单元的子集。
[0009]根据另一个实施例,提供一种设备,其包括:非易失性存储器单元;连接至存储器单元的分类电路,分类电路被配置成基于编程性能将存储器单元分类成多个组;连接至非易失性存储器单元的编程和压缩电路,编程和压缩电路被配置成向非易失性存储器单元提供编程信号;以及连接至编程和压缩电路的选择电路,当在编程过程期间将多个组编程到共同数据状态时,选择电路选择性地指示编程和压缩电路向多个组提供单独的编程信号。
[0010]根据又一个实施例,提供一种设备,其包括:用于与非易失性存储器单元通信的存储器接口;以及与存储器单元通信的控制电路,控制电路被配置成通过使存储器单元的属性值改变来将存储器单元编程到一个或更多个编程状态,控制电路被配置成使得将快编程存储器单元与慢编程存储器单元区分开,基于对快编程存储器单元与慢编程存储器单元的区分,控制电路使第一编程信号施加于慢编程存储器单元并且第二编程信号施加于快编程存储器单元,在编程过程的共同迭代期间第一编程信号的幅度高于第二编程信号。
【附图说明】
[0011]在不同的附图中,具有相似附图标记的元件指代共同部件。
[0012]图1是3D堆叠式非易失性存储器装置的透视图。
[0013]图2是诸如图1的3D堆叠式非易失性存储器装置100的存储器装置的功能框图。
[0014]图3A是描绘用于对控制器中的一个或更多个处理器进行编程的软件模块的框图。
[0015]图3B是描绘用于对存储器晶片(die)上的状态机或其它处理器进行编程的软件模块的框图。
[0016]图3C是个体感测块的框图。
[0017]图4A是具有两个平面的存储器结构的框图。
[0018]图4B描绘了存储器单元块的一部分的顶视图。
[0019]图4C描绘了存储器单元块的一部分的截面图。
[0020]图4D描绘了选择栅极层和字线层的视图。
[0021 ]图4E是存储器单元的竖直列的截面图。
[0022]图4F是多个NAND串的示意图。
[0023]图5是感测放大器的示意图。
[0024]图6是描述在图5的感测放大器中描绘的某些信号的行为的时序图。
[0025]图7是描述图5的电路的操作的一个实施方式的流程图。
[0026]图8和图9描绘了阈值电压分布。
[0027]图10是描述用于编程的过程的一个实施方式的流程图。
[0028]图11是描述用于压缩(compact)阈值电压分布的过程的一个实施方式的流程图。
[0029]图12是能够执行图11的过程的一组示例部件的框图。
[0030]图13是描述用于压缩阈值电压分布的过程的一个实施方式的流程图。
[0031]图14是描述用于压缩阈值电压分布的过程的一个实施方式的流程图。
[0032]图15A描绘了一组阈值电压分布。
[0033]图15B描绘了一组阈值电压分布。
[0034]图15C描绘了一组阈值电压分布。
[0035]图lf5D是描述用于对快编程存储器单元和慢编程存储器单元进行分类的过程的一个实施方式的流程图。
[0036]图16A描绘了阈值电压分布。
[0037]图16B是描述用于对快编程存储器单元和慢编程存储器单元进行分类的过程的一个实施方式的流程图。
[0038]图17A描绘了一组阈值电压分布。
[0039]图17B描绘了一组阈值电压分布。
[0040]图17C是描述用于对快编程存储器单元和慢编程存储器单元进行分类的过程的一个实施方式的流程图。
[0041 ]图18描绘了一组编程脉冲。
[0042]图19是描述用于压缩阈值电压分布的过程的一个实施方式的流程图。
[0043]图20描绘了阈值电压分布。
[0044]图21是描述用于压缩阈值电压分布的过程的一个实施方式的流程图。
[0045]图22是描述字线电压和位线电压的行为的时序图。
【具体实施方式】
[0046]当存储器单元存储表示多个数据状态的多位数据时,验证所有可能数据状态的验证过程会花费较长时间。因此,在给定时刻,一些系统将仅对存储器单元能够潜在地实现的编程状态的子集进行验证。在一些实施方式中,在给定时间验证的数据状态的数目取决于自然阈值分布的宽度,其中自然阈值分布为众多存储器单元在一定量的编程之后但在存储器单元的编程被阻断之前的阈值电压的分布,其被人为地减慢或人为地加速。提出了通过减小阈值电压分布的宽度来减小验证所需的时间量,使得在给定时间需要验证较少数据状态。被配置成减小阈值电压分布的宽度的一个实施方式包括非易失性存储器单元和与存储器单元通信的控制电路。控制电路被配置成将不同的编程信号应用于被编程到共同数据状态的存储器单元的不同子集。
[0047]在一个示例实现中,控制电路被配置成基于编程速度将存储器单元区分和分类成不同存储器单元子集,使得不同存储器单元子集接收不同的编程信号。例如,控制电路可以区分快编程存储器单元和慢编程存储器单元,然后将第一组一个或更多个编程脉冲应用于快编程存储器单元以及将第二组一个或更多个编程脉冲应用于慢编程存储器单元。在编程过程的共同迭代期间,第二组编程脉冲的幅度高于第一组编程脉冲中的相应编程脉冲。
[0048]图1是能够实现本文提出的技术的三维(3D)堆叠式非易失性存储器装置的透视图。存储器装置100包括衬底101。在衬底上以及上方有存储器单元(非易失性存储元件)的示例块BLKO和BLKl。衬底101上也有具有供这些块使用的支持电路的外围区104。衬底101也可以在这些块下方承载电路,以及被沿导电路径图案化以传送电路的信号的一个或更多个下金属层。这些块被形成在存储器装置的中间区域102中。在存储器装置的上部区域103中,一个或更多个上金属层被沿导电路径图案化以传送电路的信号。每个块包括存储器单元的堆叠区,其中堆叠中交替的层级表示字线。虽然描绘了两个块作为示例,但是可以使用在X方向和/或y方向上延伸的额外的块。
[0049]在一个示例实现中,平面在X方向上的长度表示用于字线的信号路径延伸的方向(字线方向或SGD线方向),而平面在y方向上的宽度表示用于位线的信号路径延伸的方向(位线方向Kz方向表示存储器装置的高度。
[0050]图2是诸如图1的3D堆叠式非易失性存储器装置100的示例存储器装置的功能框图。在图2中描绘的部件是电路。存储器装置100包括一个或更多个存储器晶片108。每个存储器晶片108包括存储器单元(诸如,例如存储器单元的3D阵列)的三维存储器结构126、控制电路110和读/写电路128。在其它实施方式中,可以使用存储器单元的二维阵列。存储器结构126能够经由行解码器124通过字线寻址以及经由列解码器132通过位线寻址。读/写电路128包括多个感测块SBl,SB2,…,SBp 129(感测电路)并且允许并行地对存储器单元的页面进行读取或编程。
[0051]在一些系统中,控制器122与一个或更多个存储器晶片108被包括在同一存储器装置100(例如,可移除存储卡)中。然而,在其它系统中,控制器可以与存储器晶片108分离。在一些实施方式中,一个控制器122将与多个存储器晶片108通信。在其它实施方式中,每个存储器晶片108具有它自己的控制器。经由数据总线120在主机140与控制器122之间以及经由线路118在控制器122与一个或更多个存储器晶片108之间传输命令和数据。在一个实施方式中,存储器晶片108包括连接至线路118的一组输入和/或输出(I/O)管脚。
[0052]存储器结构126可以包括存储器单元的一个或更多个阵列,包括3D阵列。存储器结构可以包括整体式三维存储器结构,在该结构中,在诸如晶圆(wafer)的单个衬底上方(而不是单个衬底中)形成多个存储器层级,而没有中介衬底。存储器结构可以包括任何类型的非易失性存储器,该非易失性存储器整体地形成在具有布置在硅衬底上方的有源区的存储器单元的阵列的一个或更多个物理层级中。存储器结构可以为具有与存储器单元的操作相关的电路的非易失性存储器装置,而不管相关电路是在衬底上方还是在衬底内。
[0053]控制电路110与读/写电路128协作以对存储器结构126执行存储器操作(例如,擦除、编程、读取以及其它),并且控制电路110包括状态机112、片上地址解码器114以及电力控制模块116。状态机112提供对存储器操作的芯片级控制。可以提供代码和参数存储113以用于存储操作参数和软件。在一个实施方式中,状态机112能够由存储在代码和参数存储113中的软件编程。在其它实施方式中,状态机112不使用软件并且完全以硬件(例如,电子电路)来实现。
[0054]片上地址解码器114提供由主机140或存储器控制器122使用的地址与由解码器124和132使用的硬件地址之间的地址接口。电力控制模块116控制在存储器操作期间供给到字线和位线的电力和电压。电力控制模块116可以包括用于3D构造中的字线层(在下文论述)的驱动器、选择晶体管(例如,下文论述的SGS晶体管和SGD晶体管)以及源极线。电力控制模块116可以包括用于产生电压的电荷栗。感测块包括位线驱动器。SGS晶体管是在NAND串的源极端处的选择栅极晶体管并且SGD晶体管是在NAND串的漏极端处的选择栅极晶体管。
[0055]控制电路110,状态机112,解码器114/124/132,代码和参数存储113,电力控制模块116,感测块381、382、‘"、38?,读/写电路128和控制器122中的任意一个或任意组合可被认为是执行本文所述的功能的控制电路。
[0056](片上或片外)控制器122可以包括存储装置(诸如ROM122a和RAM 122b)、处理器122c和存储器接口 122d。存储装置存储诸如一组指令的代码,并且处理器122c能够进行操作以执行这组指令来提供本文所述的功能。可替选地或另外地,处理器122c能够访问来自存储器结构中的存储装置,诸如连接至一个或更多个字线的存储器单元的保留区的代码。与ROM 122a,RAM 122b和处理器122c通信的存储器接口 122d是在控制器122与存储器晶片108之间提供电接口的电路。例如,存储器接口 122c能够改变信号的格式或时序,提供缓冲器,隔离浪涌,锁定I/O等。
[0057]存储器结构126中的多个存储器元件可以被配置成使得它们串联连接或者使得每个元件能够被单独访问。通过非限制性示例,NAND构造(NAND闪速存储器)中的闪速存储器装置通常包含串联连接的存储器元件。NAND串是一组串联连接的存储器单元和选择栅极晶体管的一个示例。NAND闪速存储器阵列可以被配置成使得该阵列由多个NAND串构成,多个NAND串中的一个NAND串有共享单个位线并且作为一个组被访问的多个存储器单元构成。在一个实施方式中,NAND串被分组成块。在一个块内,每个NAND串的一端连接至多个位线之一,并且每个NAND串的另一端连接至块中所有NAND串的共同源极线。可替选地,存储器元件可以被配置成使得每个元件能够被单独访问,例如,NOR存储器阵列。NAND存储器构造和NOR存储器构造是示例性的,并且可以以其它方式配置存储器单元。
[0058]存储器单元可以以有序阵列的方式,诸如以多行和/或多列的方式布置在单个存储器装置层级中。然而,可以以不规则或非正交构造或者以不认为是阵列的结构来布置存储器元件。
[0059]三维存储器阵列被布置成使得存储器单元占据多个平面或者多个存储器装置层级,从而形成三维结构(即沿X、y和z方向,其中z方向基本上垂直于且X和y方向基本上平行于衬底的主表面)。
[0060]作为非限制性示例,三维存储器结构可以被竖直布置为多个二维存储器装置层级的堆叠。作为另一非限制性示例,三维存储器阵列可以被布置为多个竖直列(例如,基本上垂直于衬底的主表面即沿y方向延伸的列),其中每个列具有多个存储器单元。可以以二维构造即在x-y平面中布置竖直列,产生存储器单元的三维布置,其中存储器单元处在多个竖直堆叠的存储器平面上。其它三维存储器元件构造也可以构成三维存储器阵列。
[0061 ]通过非限制性示例,在三维NAND存储器阵列中,存储器元件可以被耦合在一起以形成穿过多个水平存储器装置层级的竖直NAND串。可以想到其它三维构造,其中一些NAND串包含单个存储器层级中的存储器元件,而其它NAND串包含跨多个存储器层级的存储器元件。也可以以NOR构造和ReRAM构造来设计三维存储器阵列。
[0062]本文所述的技术也能够与除了上述电荷俘获和浮动栅极闪速存储器以外的技术一起使用。除了闪速存储器(例如,2D和3D NAND型闪速存储器和NOR型闪速存储器)以外,非易失性存储器的示例包括ReRAM存储器、磁阻式存储器(例如,MRAM)以及相变存储器(例如,PCRAM)ο
[0063]ReRAM存储器的一个示例包括以由X线和Y线(例如,字线和位线)访问的交叉点阵列布置的可逆电阻开关元件。能够由一系列电压脉冲(即多次编程)来提供编程。能够通过以下方式禁止(inhibit)存储器单元:将足够大的电压施加于相应位线以防止跨存储器单元的足够的电压差。
[0064]在另一实施方式中,存储器单元可以包括导电桥存储器元件。导电桥存储器元件也可以称为可编程金属化单元。导电桥存储器元件可被用作基于离子在固体电解质内的物理迀移的状态变化元件。在一些情况下,导电桥存储器元件可以包括两个固体金属电极,一个是相对惰性的(例如,妈)而另一个是电化学活性的(例如,银或铜),其中在两个电极之间有固体电解质薄膜。随温度升高,离子的迀移率也增加,这导致导电桥存储器单元的编程阈值减小。因此,导电桥存储器元件可以随温度具有宽范围编程阈值。(随离散的时间段一一各次)应用合适的温度可以用于编程。类似地,调节温度可以用于禁止。在一些实现中,通过将电压和/或电流施加于存储器单元和/或周围的部件来控制温度。
[0065]磁阻式存储器(MRAM)通过磁性存储元件存储数据。这些元件由被薄绝缘层分隔的两个铁磁板组成,每个铁磁板可以保持磁化。两个板之一是被设置成特定极性的永磁体,另一个板的磁化可以被改变以匹配外部磁场的磁化来存储内存。该构造被称为自旋阀并且是MRAM位的最简结构。存储器装置由这样的存储器单元的网格来构建。在编程的一个实施方式中,每个存储器单元位于以下述方式布置的一对写入线之间:彼此成直角、平行于单元、一个在单元上方且一个在单元下方。当电流经过它们时,产生感应磁场(即该次编程)。该方法需要颇大量的电流以生成场。因此,编程作为电流单位施加。充分减小或移除电流能够用于禁止编程。
[0066]相变存储器(PCRAM)利用硫系玻璃的独特性能。一个实施方式使用GeTe-Sb2Te3超晶格通过用激光脉冲(或者来自另一个源的光脉冲)简单地变化锗原子的协调状态来实现非热相变。因此,各次编程是各激光脉冲。可以通过阻止存储器单元接收光来禁止存储器单元。注意到,本文档中使用的“脉冲”不需要是矩形脉冲,而是包括声音、电流、电压光或其它波的(连续的或不连续的)振动或突发。
[0067]本领域普通技术人员将会认识到该技术不限于单个特定的存储器结构,而是涵盖在本文所描述的以及本领域普通技术人员所理解的技术的精神和范围内的许多相关的存储器结构。
[0068]图3A是描绘用于对控制器122中的一个或更多个处理器进行编程的软件模块的框图。图3A描绘了被存储在ROM 122a中的读取模块150、编程模块152、擦除模块154和压缩模块156。这些软件模块也可以被存储在RAM或存储器晶片108中。读取模块150包括对处理器122c进行编程以执行读取操作的软件。编程模块152包括对处理器122c进行编程以执行编程操作(包括对编程的验证)的软件。擦除模块154包括对处理器122c进行编程以执行擦除操作的软件。压缩模块156包括对处理器122c进行编程以执行下述分类和压缩(例如,将不同的编程信号应用于被编程至共同编程状态的不同存储器单元子集)的软件。基于软件,控制器122指示存储器晶片108执行存储器操作。
[0069]图3B是描绘用于对状态机112(或者存储器晶片108上的其它处理器)进行编程的软件模块的框图。图3B描绘了被存储在代码和参数存储113中的读取模块160、编程模块162、擦除模块164和压缩模块166。这些软件模块也可以被存储在RAM中或存储器结构126中。读取模块160包括对状态机112进行编程以执行读取操作的软件。编程模块152包括对状态机112进行编程以执行编程操作(包括对编程的验证)的软件。擦除模块154包括对状态机112进行编程以执行擦除操作的软件。压缩模块166包括对状态机112进行编程以执行下述分类和压缩(例如,将不同的编程信号应用于被编程至共同编程状态的存储器单元的不同子集)的软件。可替选地,可以完全用硬件来实现状态机112(其为电子电路),使得不需要软件来执行这些功能。
[0070]图3C是个体感测块129的框图,感测快129被分割成称为感测模块480的核心部分以及共同部分490。在一个实施方式中,将存在用于每个位线的单独的感测模块480以及用于一组多个感测模块480的一个共同部分490 ο在一个示例中,感测模块将包括一个共同部分490和八个感测模块480。一组中的每个感测模块将经由数据总线472与相关的共同部分通信。
[0071]感测模块480包括感测电路470,感测电路470确定所连接的位线中的传导电流是在预定水平以上还是在预定水平以下。在一些实施方式中,感测模块480包括通常称为感测放大器的电路。感测模块480也包括位线锁存器482,位线锁存器482用于对所连接的位线设置电压状态。例如,位线锁存器482中锁存的预定状态将导致所连接的位线被拉向指定编程禁止的状态(例如,Vdd)。
[0072]共同部分490包括处理器492、一组数据锁存器494以及耦合在一组数据锁存器494与数据总线420之间的I/O接口 496。处理器492执行计算。例如,处理器492的功能之一是确定存储在所感测的存储器单元中的数据以及将所确定的数据存储在一组数据锁存器中。一组数据锁存器494用于存储在读取操作期间由处理器492确定的数据位。一组数据锁存器494也用于存储在编程操作期间从数据总线420输入的数据位。输入的数据位表示要编程到存储器中的写入数据。I/O接口 496在数据锁存器494与数据总线420之间提供接口。
[0073]在读取或感测期间,系统的操作受状态机112的控制,其中状态机112控制将不同的电压供给到所寻址的存储器单元。随着它逐步跨过对应于存储器所支持的各个存储器状态的各个预定义电压(读取参考电压或验证参考电压),感测模块480可以在这些电压中的一个电压处断开,并且输出将被经由总线472从感测模块480提供至处理器492。在那时,处理器492通过以下方式确定所产生的存储器状态:通过考虑感测模块的断开事件以及关于经由输入线493来自状态机的所应用的控制栅极电压的信息。然后,它计算用于存储器状态的二进制编码并将产生的数据位存储到数据锁存器494中。在核心部分的另一实施方式中,位线锁存器482用于双重任务,即作为用于锁存感测模块480的输出的锁存器并且也作为如上所述的位线锁存器。
[0074]可以预期的是,一些实现将包括多个处理器492。在一个实施方式中,每个处理器492将包括输出线(未在图3C中描绘),使得输出线中的每个线或(wired-OR)在一起。在一些实施方式中,使输出线在被连接至wired-OR线之前反转。该构造使得在编程验证过程期间能够快速确定编程过程何时结束,这是因为接收wired-OR线的状态机能够确定被编程的所有位何时达到期望水平。例如,当每个位均达到了其预期水平时,用于该位的逻辑零将被发送至wired-OR线(或者数据I被反转)。当所有位都输出数据0(或者数据I被反转)时,则状态机知道终止编程过程。在每个处理器与八个感测模块通信的实施方式中,状态机可能(在一些实施方式中)需要读取八次wired-OR线,或者逻辑被添加到处理器492以累积相关位线的结果,使得状态机仅需要读取一次wired-OR线。在一些具有许多感测模块的实施方式中,许多感测模块的wired-OR线可以被分组在N个感测模块的集合中,然后可以对这些组进行分组以形成二叉树。
[0075]在编程或验证期间,要被编程的数据被存储在来自数据总线420的一组数据锁存器494中。受状态机控制的编程操作包括一系列编程电压脉冲(具有增大的幅度),它们被同时应用于所寻址的存储器单元,以同时对存储器单元进行编程。每个编程脉冲后面跟有一个验证过程,以确定存储器单元是否已经被编程至期望状态。处理器492相对于期望的存储器状态监视所验证的存储器单元。当二者一致时,处理器492设置位线锁存器482以使得位线被拉向指定编程禁止的状态。这即使在存储器单元在其控制栅极处经受编程脉冲的情况下也禁止被耦合至位线的存储器单元被进一步编程。在其它实施方式中,处理器初始地加载位线锁存器482并且感测电路在验证过程期间将其设置成禁止值。
[0076]数据锁存器堆叠494包括对应于感测模块的数据锁存器堆叠。在一个实施方式中,每个感测模块480有三个(或四个或者其它数目个)数据锁存器。在一些实现中(但不必需),数据锁存器被实现为移位寄存器,使得将存储在其中的并行数据转换成用于数据总线420的串行数据,反之亦然。在一个优选实施方式中,对应于存储器单元的读/写块的所有数据锁存器能够被链接在一起以形成块移位寄存器,使得可以通过串行传送输入或输出数据块。特别地,调整读/写模块组使得其数据锁存器组中的每个数据锁存器将数据依次移入或移出数据总线,就如同它们是整个读/写块的移位寄存器的一部分。
[0077]图4A是说明存储器结构126的一个示例构造的框图,存储器结构126被分成两个平面302和304。每个平面随后被分成M个块。在一个示例中,每个平面具有约2000个块。然而,也可以使用不同数目的块和平面。
[0078]图4B至图4E描绘了示例3DNAND结构。图4B是描绘来自存储器结构126的一个块的一部分的顶视图的框图。在图4B中描绘的块的部分对应于图4A的块2中的部分306。如从图4B可以看出的,图4B中描绘的块沿箭头300的方向以及沿箭头332的方向延伸。在一个实施方式中,存储器阵列将具有48个层。其它实施方式具有少于或多于48个层。然而,图4B仅示出了顶层。
[0079]图4B描绘了表示竖直列的多个圆圈。竖直列中的每个包括多个选择晶体管和多个存储器单元。在一个实施方式中,每个竖直列实现NAND串。在下文中提供竖直列的更多细节。由于图4B中描绘的块沿箭头330的方向以及沿箭头332的方向延伸,所以该块包括比图4B中描绘的更多的竖直列。
[0080]图4B也描绘了一组位线412。因为仅描绘了块的一部分,所以图4B示出了24个位线。可以预期的是,多于24个位线连接至块的竖直列。表示竖直列的每个圆圈具有“X”以指示其与一个位线的连接。
[0081]图4B中描绘的块包括将各个层连接至竖直列下方的源极线的一组本地互连402、404、406、408和410。本地互连402、404、406、408和410也用于将块的每个层分成四个区域;例如,图4B中描绘的顶层被分成区域420、430、440和450。在实现存储器单元的块的各层中,四个区域被称为字线分支(word line finger),其被本地互连分隔开。在一个实施方式中,块的共同层级上的字线分支在该块的端部连接在一起,以形成单个字线。在另一实施方式中,同一层级上的字线分支没有连接在一起。在一个示例实现中,位线仅连接至区域420、430、440和450中的每个区域中的一个竖直列。在该实现中,每个块具有16排有效列并且每个位线连接至每个块中的4排。在一个实施方式中,连接至共同位线的全部4排被(经由在同一层级上彼此连接在一起的不同字线分支)连接至同一字线;因此,系统使用源极侧选择线和漏极侧选择线来选择四个中的一个(或者另一子集)以进行存储器操作(编程、验证、读取和/或擦除)。
[0082]虽然图4B示出了每个区域具有四排竖直列,块中有4个区域和16排竖直列,但那些确切数字是示例实现。其它实施方式可以包括每个块有更多或更少的区域、每个区域有更多或更少排的竖直列以及每个块有更多或更少排的竖直列。
[0083]图4B也示出了交错的竖直列。在其它实施方式中,可以使用不同的交错图案。在一些实施方式中,竖直列不交错。
[0084]图4C描绘了三维存储器结构126的实施方式的一部分,其示出了沿图4B的线AA的截面图。该截面图切断了竖直列432和434以及区域430(参见图4B)。图4C的结构包括两个漏极侧选择层SGDl和SGDl;两个源极侧选择层SGSl和SGS2;四个虚设字线(dummy word line)层DWLLla、DWLLlb、DWLL2a和DWLL2b;以及32个用于连接数据存储器单元的字线层WLLO-WLL31。其它实施方式可以实现多于或少于两个漏极侧选择层、多于或少于两个源极侧选择层、多于或少于四个虚设字线层以及多于或少于32个字线层。竖直列432或434被描绘成穿过漏极侧选择层、源极侧选择层、虚设字线层以及字线层。在一个实施方式中,每个竖直列包括NAND串。在竖直列和列于竖直列下方的各层之下的是衬底101、衬底上的绝缘膜454以及源极线SL。竖直列432的NAND串具有堆叠的底部处的源极端以及堆叠的顶部处的漏极端。与图4B相一致地,图4C示出了经由连接器415连接至位线414的竖直列432。也描绘了本地互连404和406。
[0085]为了便于参考,漏极侧选择层SGDl和SGDl;源极侧选择层SGSl和SGS2;虚设字线层DWLLla、DWLLlb、DWLL2a和DWLL2b;以及字线层WLL0-WLL31统称为导电层。在一个实施方式中,导电层由TiN和钨的组合制成。在其它实施方式中,可以使用其它材料形成导电层,诸如掺杂多晶硅、诸如钨的金属或金属硅化物。在一些实施方式中,不同的导电层可以由不同材料制成。导电层之间是介电层DL0-DL19。例如,介电层DLlO在字线层WLL26上方且在字线层WLL27下方。在一个实施方式中,介电层由Si02制成。在其它实施方式中,可以使用其它介电材料来形成介电层。
[0086]沿着延伸通过堆叠中交替的导电层和介电层的竖直列形成存储器单元。在一个实施方式中,以NAND串布置存储器单元。字线层WLL0-WLL31连接至存储器单元(也称为数据存储器单元)。虚设字线层DWLLla、DWLLlb、DWLL2a和DWLL2b连接至虚设存储器单元。也称为非数据存储器单元的虚设存储器单元不存储用户数据,而数据存储器有资格存储用户数据。因此,可以对数据存储器单元编程。漏极侧选择层SGDl和SGDl用于使NAND串与位线电连接和电断开。源极侧选择层SGSl和SGS2用于使NAND串与源极线SL电连接和电断开。
[0087]图40描绘了在图4(:中部分描绘的块的导电层(3601、3602、3631、3632;服1^1&、DffLLIb、DffLL2a、DWLL2b和WLL0-WLL31)的透视图。如上文中参考图4B提及的,本地互连401、404、406、408和410将每个导电层分割成四个区域。例如,漏极侧选择栅极层SGDl (顶层)被分成区域420、430、440和450。类似地,位线层WLL31被分成区域460、462、464和466。对于字线层(WLL0-WLL31),区域被称为字线分支;例如,字线层WLL31被分成字线分支460、462、464和466。在一个实施方式中,每个字线分支作为单独的字线工作。在另一实施方式中,在同一层级上的四个字线分支被连接在一起。
[0088]漏极侧选择栅极层SGDl(顶层)也被分成区域420、430、440和450,其也被称为分支或者选择线分支。在一个实施方式中,选择线分支中的每个作为单独的字线工作;因此,区域420被标记为选择线SGD1/S0(即漏极侧选择线层O的选择线O),区域430被标记为选择线SGD1/S1 (即漏极侧选择线层O的选择线I),区域440被标记为选择线SGD1/S2,以及区域450被标记为选择线SGD1/S3。类似地,漏极侧选择栅极层SGD2具有作为选择线SGD2/S0、SGD2/SUSGD2/S2和SGD2/S3工作的四个分支。源极侧选择栅极层SGSl具有作为选择线SGS1/S0、SGS1/S1、SGS1/S2和SGS1/S3工作的四个分支。源极侧选择栅极层SGS2具有作为选择线SGS2/S0、SGS2/S1、SGS2/S2 和 SGS2/S3 工作的四个分支。
[0089]图4E描绘了图4C的区域442的截面图,其包括竖直列432的部分。在一个实施方式中,竖直列是圆的并且包括四个层;然而,在其它实施方式中,可以包括多于或少于四个层并且可以使用其它形状。在一个实施方式中,竖直列432包括由诸如S12的电介质制成的内核层470。也可以使用其它材料。内核470周围是多晶硅沟道471。也可以使用除了多晶硅以外的材料。注意到,连接到位线的是沟道471。沟道471周围是隧道电介质472。在一个实施方式中,隧道电介质472具有ONO结构。隧道电介质472周围是电荷俘获层473,诸如(例如)增加陷阱密度的特殊配方的氮化硅。
[0090]图4E 描绘了介电层 01^11、01^12、01^13、01^14和01^15,以及字线层机^27、机^28、WLL29、WLL30和WLL31。字线层的每个包括被氧化铝层477包围的字线区域476,氧化铝层477被阻挡氧化物(S12)层478包围。字线层与竖直列的物理相互作用形成存储器单元。因此,在一个实施方式中,存储器单元包括沟道471、隧道电介质472、电荷俘获层473、阻挡氧化物层478、氧化铝层477以及字线区域476。例如,字线层WLL31以及竖直列432的部分构成存储器MCI。字线层WLL30以及竖直列432的部分构成存储器MC2。字线层WLL29以及竖直列432的部分构成存储器MC3。字线层WLL28以及竖直列432的部分构成存储器MC4。字线层WLL27以及竖直列432的部分构成存储器MC5。在其它结构体系中,存储器单元可以具有不同的结构;然而,存储器单元(memory cell)将依然是存储单元(storage unit)。
[0091]当对存储器单元进行编程时,电子被存储在与存储器单元相关联的电荷俘获层473的部分中。响应于字线区域476上的合适的电压,这些电子被通过隧道层473从沟道471拉入电荷俘获层473。存储器单元的阈值电压(Vth)与所存储的电荷量成比例地增加。在擦除操作期间,电子返回至沟道或者空穴与电子重新结合。
[0092]图4F是描绘多组连接的可编程且可擦除非易失性存储器单元的电路图,其中可编程且可擦除非易失性存储器单元被布置为连接至位线414和共同源极线SL的四个NAND串。选择线 SGD1/S0、SGD1/S1、SGD1/S2、SGD1/S3、SGD2/S0、SGD2/S1、SGD2/S2、SGD2/S3、SGSl/SO、SGS1/S1、SGS1/S2、SGS1/S3、SGS2/S0、SGS2/S1、SGS2/S2 和 SGS2/S3 用于选择 / 取消选择所描绘的NAND串。在一个实施方式中,在每个NAND串的每侧有两个选择线(并且因此有两个选择栅极)。其它实施方式可以在NAND串的每侧使用多于两个选择线(以及两个选择栅极)或者在NAND串的每侧使用少于两个选择线(以及两个选择栅极)。在图4F所描绘的实施方式中,为了将NAND串连接至位线,必须(经由两个相应的选择线)激励两个选择栅极,并且为了将NAND串连接至共同源极线SL,必须(经由两个相应的选择线)激励两个选择栅极。
[0093]图5是描绘感测放大器电路的示意图。每个感测块581,582,-_,58?(参见图2)会包括多个感测放大器电路(例如,感测电路470)。如下文所述,图5的电路将电容器(或其它电荷存储装置)预充电至预充电幅度,在选通时间内通过存储器单元使电容器放电,以及在选通时间之后感测电容器处的电压。感测电压将指示存储器单元是否传导所感测的电流,这指示存储器单元的阈值电压是大于还是小于所检验的阈值电压(对应于控制栅极电压)。如果存储器单元的阈值电压大于所检验的阈值电压,则在验证操作期间,存储器单元将基于本文所述的过程视情况结束编程。图5示出了连接至位线和晶体管502的晶体管500。晶体管500在其栅极处接收信号BLS,并且用于连接至位线或者隔离位线。晶体管502在其栅极处接收信号BLC,并且用作电压钳。将栅极电压BLC偏置成处于等于期望位线电压加上晶体管502的阈值电压的恒定电压。因此,晶体管502的作用是即使经过位线的电流变化也在感测操作期间(读取或验证期间)保持恒定的位线电压。
[0094]晶体管502连接至晶体管504、506和508。晶体管506连接至标记为SEN的节点处的电容器516。晶体管506的目的是将电容器516连接至位线500以及将电容器516与位线500断开,使得电容器516与位线500选择性连通。换言之,晶体管506控制选通时间。也就是说,当晶体管506导通时,电容器516能够通过位线放电,并且当晶体管506关断时,电容器516不能通过位线放电。
[0095]晶体管506连接至电容器516的节点也连接至晶体管510和晶体管514。晶体管510连接至晶体管508、512和518。晶体管518也连接至晶体管520。晶体管518和520是PMOS晶体管,而图5的其它晶体管是NMOS晶体管。晶体管510、518和520为电容器516提供预充电路径。电压(例如,Vdd或其它电压)被施加于晶体管520的源极。通过适当地偏置晶体管510、518和520,施加于晶体管520的源极的电压可以用于对电容器516进行预充电。在预充电之后,电容器516可以经由晶体管506通过位线放电(假设晶体管500和502导电)。
[0096]图5的电路包括形成锁存器电路的反相器530和532。反相器532的输出连接至反相器530的输入,并且反相器530的输出连接至反相器532的输入以及晶体管520和522。反相器532的输入将接收Vdd并且两个反相器530、532将用作存储Vdd的锁存器。反相器532的输入也可以连接至另一个值。晶体管512和522提供用于将反相器530和532存储的数据传递到晶体管514的路径。晶体管522在其栅极处接收信号FC0。晶体管512在其栅极处接收信号STR0。通过升高或降低FCO和STR0,提供或断开反相器530、532与晶体管(感测开关)514之间的路径。晶体管514的栅极在标记为SEN的节点处与电容器516、晶体管506和晶体管510连接。电容器516的另一端连接至信号CLK。
[0097]如上所述,经由晶体管510、518和520对电容器516进行预充电。这将会使SEN节点处的电压升高至预充电电压水平(Vpre)。当晶体管506导通时,如果存储器单元的阈值电压低于所检验的电压水平,则电容器516能够通过位线和所选存储器单元放电。如果电容器516能够放电,则电容器处(SEN节点处)的电压将会减小。
[0098]SEN节点处的预充电电压(Vpre)大于晶体管914的阈值电压;因此,在选通时间之前,晶体管514导通(导电)。由于晶体管514在选通时间期间导通,于是晶体管512应当关断。如果电容器在选通时间期间不放电,则SEN节点处的电压将保持高于晶体管514的阈值电压,并且在STRO使晶体管512导通时反相器530、532处的电荷能够被放电到CLK信号中。如果电容器在选通时间期间充分放电,则SEN节点处的电压将减小到低于晶体管514的阈值电压;从而使晶体管914关断并且使得存储在反相器530、532处的数据(例如,Vdd)不通过CLK放电。所以检验二极管530、532是否保持其充电或放电将指示验证过程的结果。在一个实施方式中,通过用栅极信号NCO使晶体管534导通可以在节点A处经由晶体管534读取该结果(数据输出)。
[0099]电容器516的预充电水平(并且因此节点SEN处的预充电电压)受经过晶体管510的电流限制。经过晶体管510的电流受栅极电压HOO限制。如此,节点SEN处的预充电电压受小于晶体管510的阈值电压的电压HOO限制。通过这种布置,系统能够通过控制HOO来控制节点SEN处的预充电电压。HOO处的较大电压在预充电时导致SEN节点处的较大电压。HOO处的较低电压在预充电时导致SEN节点处的较低电压。
[0100]当系统执行读取或验证操作(两者都是感测操作)时,施加于单元的控制栅极的电压可以使得单元的沟道(连接至位线)导电。如果发生这种情况,则电容器通过沟道放电,从而电压随着其放电而降低。
[0101]图6是描述来自图5的各个信号的行为的时序图。信号BLS在所描绘的整段时间都处于Vdd并且信号BLC处于Vbl+Vsrc+Vth,其中Vb I为位线的电压,Vsrc为源极线的电压以及Vth为晶体管502的阈值电压。信号FLA在t0处以Vss开始并且在t6处达到Vdd。当信号FLA处于Vss时,预充电路径受晶体管510控制。在t0处,HOO的电压从接地升高至预充电水平。HOO处电压的升高使晶体管510导通并且打开预充电路径。设置HOO处的电压的幅度。图6示出了HOO达到Vhoo。信号HOO将停留在预充电电压(Vhoo)直到时间tl。如SEN处的电压所描绘的,当HOO高时,晶体管510导通并且电容器516将在t0与tl之间预充电。在时间tl处,使HOO降低至IJVss并且预充电完成。
[0102]信号X00用于允许电容器516与位线连通,使得电容器可以通过位线和所选存储器单元放电。在时间t3处,X00升高至Vblc+Vblx,其中Vblc为信号BLC的电压并且Vblx为信号BLX的电压(两者均在前面讨论过)。在时间t4处,X00处的电压被降低至Vss。在称为选通时间的时间t3与t4之间,电容器516将与位线连通,以允许电容器516通过位线和所选存储器单元放电(取决于所选存储器单元的阈值电压)。信号CLK在时间t2处升高至Vblx并且在时间t5处下降回到Vss,以防止电路中的任何竞争状况并且允许电容器516正确放电。
[0103]如上所述,因为H00在t0与tl之间升高,所以电容器516(以及SEN节点)在t0与tl之间充电(预充电)。这在图6中通过SEN节点从Vss充电至Vpre来描绘。用于Vpre的实线表示节点SEN(以及电容器516)响应于VhOO被施加于电容器510的栅极的示例预充电。
[0104]当X00在t3处升高时,电容器516能够初始地对位线进行预充电然后通过位线放电(如果阈值电压处于适合的水平)。如图6中t3与t4之间所描绘的,如果存储器单元因其阈值电压小于或等于被施加于其控制栅极的电压而接通(导电),则SEN节点处的电压将从Vpre耗散成Vp0st_C0n。如果所检测的存储器单元的阈值电压高于被施加于其控制栅极的电压,则电容器516将不放电并且电压将保持处于Vpre。如上所述,t3与t4之间的时间段为选通时间并且可以被调节。
[0105]图6示出了信号FCO在t7处升高至Vdd以及在t9处降低至Vss。信号STRO在t8处升高至Vdd以及在t9处降低。在时间t8与t9之间,在反相器530、532与晶体管514之间存在路径。如果节点SEN处的电压大于晶体管514的阈值电压,则将会存在从反相器530、532到CLK的路径,并且反相器530、532处的数据通过信号CLK以及通过晶体管514耗散。如果节点SEN处的电压低于晶体管514的阈值电压(例如,如果电容器放电),则晶体管514将关断并且由反相器530、532存储的电压将不被分散到CLK中。图6示出了节点A处的处于Vdd的电压水平。如果电容器的电压不耗散(例如,归因于:因为所选存储器单元的阈值电压大于所检验的电压而没有足够的电流流过),则晶体管514将保持导通并且节点A处的电压将耗散成Vss(如由虚线所描绘的)。如果电容器的电压不耗散(例如,归因于:因为所选存储器单元的阈值电压低于所检验的电压而有足够的电流流过),则晶体管514将关断并且节点A处的电压将保持处于Vdd(如由实线所描绘的)。通过向信号NCO提供Vdd而将节点A的输出经由晶体管534提供至数据输出信号。
[0106]图7是描述根据图6的时序图执行的感测操作的流程图。在步骤702中,合适的验证参考电压(例如,¥7、¥¥1、¥¥2、¥¥3、¥¥4、¥¥5、¥¥6或¥¥7——参见图8)被施加于所选字线。所选字线连接至被编程和验证的存储器单元。连接至被编程和验证的存储器单元的位线被充电成预定预充电水平。在步骤704中,对所有SEN节点进行预充电。在步骤706中,例如通过使电容器516放电而允许位线放电(参见图6的t5-t6)。在称为“选通时间”或“积分时间”的预定时间段之后,如上文所描述的那样对电容器516(或者SEN节点)的电压进行采样,以在步骤708中查看相应存储器单元是否导电。如上所述,针对连接至同一字线和不同位线的数千个存储器单元同时执行验证过程。
[0107]在成功的编程过程(通过验证)结束时,视情况而定,存储器单元的阈值电压应当在所编程的存储器单元的阈值电压的一个或更多个分布内,或者在所擦除的存储器单元的阈值电压的分布内。图8图示出了在每个存储器单元存储四位数据时存储器单元阵列的示例阈值电压分布。然而,其它实施方式可以使用每存储器单元的其它数据容量(例如,如每个存储器单元一位数据、两位数据、三位数据或者五位数据)。图8示出了对应于16个数据状态的16个阈值电压分布。第一阈值电压分布(数据状态)SO表不被擦除的存储器单元。其它15个阈值电压分布(数据状态)S1-S15表示被编程的存储器单元,并且因此也称为编程状态。每个阈值电压分布(数据状态)对应于一组数据位的预定值。被编程到存储器单元中的数据与单元的阈值电压水平之间的具体关系取决于单元所采用的数据编码方案。在一个实施方式中,使用格雷码分配将数据值分配给阈值电压范围,使得如果浮动栅极的阈值电压错误地偏移到其邻近的物理状态,则将仅影响一位。注意,状态N-1为状态N的邻近的较低数据状态;例如,状态7为状态8的邻近的较低数据状态。
[0108]图8也示出了15个读取参考电压¥11、¥12、¥13、¥14、¥技、¥沛、¥17、¥18、¥的、¥『10、¥1'11、'\^12、'\^13、'\^14和¥1'15,以用于从存储器单元读取数据。通过检验给定存储器单元的阈值电压是高于15个读取参考电压还是低于15个读取参考电压,系统能够确定存储器单元处于什么数据状态(即S0,S1,S2,S3,...)。
[0109]图8也示出了15个验证参考电压¥¥1、¥¥2、¥¥3、¥丫4、¥¥5、¥¥6、¥¥7、¥¥8、¥¥9、¥¥10、Vvll、Vvl2、VV13、VV14和Vvl5。当将存储器单元编程到数据状态SI时,系统将检验那些存储器单元是否具有大于或等于Vvl的阈值电压。当将存储器单元编程到数据状态S2时,系统将检验存储器单元是否具有大于或等于Vv2的阈值电压。当将存储器单元编程到数据状态S3时,系统将检验存储器单元是否使其阈值电压大于或等于Vv3。当将存储器单元编程到数据状态S4时,系统将检验那些存储器单元是否具有大于或等于Vv4的阈值电压。当将存储器单元编程到数据状态S5时,系统将检验那些存储器单元是否具有大于或等于Vv5的阈值电压。当将存储器单元编程到数据状态S6时,系统将检验那些存储器单元是否具有大于或等于Vv6的阈值电压。当将存储器单元编程到数据状态S7时,系统将检验那些存储器单元是否具有大于或等于Vv7的阈值电压。当将存储器单元编程到数据状态S8时,系统将检验那些存储器单元是否具有大于或等于VvS的阈值电压。当将存储器单元编程到数据状态S9时,系统将检验那些存储器单元是否具有大于或等于Vv9的阈值电压。当将存储器单元编程到数据状态SlO时,系统将检验那些存储器单元是否具有大于或等于VvlO的阈值电压。当将存储器单元编程到数据状态Sll时,系统将检验那些存储器单元是否具有大于或等于Vvll的阈值电压。当将存储器单元编程到数据状态S12时,系统将检验那些存储器单元是否具有大于或等于Vvl2的阈值电压。当将存储器单元编程到数据状态S13时,系统将检验那些存储器单元是否具有大于或等于Vvl3的阈值电压。当将存储器单元编程到数据状态S14时,系统将检验那些存储器单元是否具有大于或等于Vvl4的阈值电压。当将存储器单元编程到数据状态S15时,系统将检验那些存储器单元是否具有大于或等于Vvl5的阈值电压。
[0110]在称为全序列编程的一个实施方式中,存储器单元可以被从擦除数据状态SO直接编程到编程数据状态S1-S15中的任何编程数据状态。例如,可以首先擦除要编程的众多存储器单元,使得该众多存储器单元中的所有存储器单元都处于擦除数据状态SO。然后,使用编程过程将存储器单元直接编程到数据状态S1、S2、S3、S4、S5、S6、S7、S8、S9、SI O、SI 1、S12、S13、S14和/或S15。例如,当一些存储器单元被从数据状态SO编程到数据状态SI时,其它存储器单元被从数据状态SO编程到数据状态S2和/或从数据状态SO编程到数据状态S3,以此类推。图8中的箭头表示全序列编程。本文所述的技术也可以与除了全序列编程以外的其它类型的编程一起使用(包括但不限于多级/多阶段编程)。
[0111]图9图示出了对应于数据状态S0-S15的阈值电压分布的另一实施方式,其中由于误差校正能够处理一定比例的出错存储器单元,所以数据状态S0-S15可以部分重叠。因为附图的尺寸的原因,截短了对数据状态的引用,使得使用O而非S0,使用I而非SI,使用2而非S2,以此类推。
[0112]图10是描述用于执行将连接至共同字线的存储器单元编程至一个或更多个目标(例如,也称为数据状态、编程状态或阈值电压范围)的过程的一个实施方式的流程图。可以将图10的过程执行一次或多次,以将数据编程到一组存储器单元。例如,可以使用图10的过程将存储器单元从SO编程到图8的全序列编程中的编程状态S1-S15中的任何编程状态。可以使用图10的过程针对本领域中公知的多阶段编程过程的各阶段中的任何阶段对存储器单兀进行编程。
[0113]通常,在编程操作期间应用于控制栅极的编程电压作为一系列编程脉冲被施加。编程脉冲之间是执行验证的一组验证脉冲。在许多实现中,编程脉冲的幅度以预定步长随着每个连续脉冲增大。在图10的步骤770中,编程电压(Vpgm)被初始化为起始幅度(例如,?12-16V或者另一合适水平),并且由状态机112保持的编程计数器PC被初始化为I。在步骤772中,编程信号Vpgm的一个或更多个编程(电压)脉冲被施加于所选字线(为编程所选择的字线),使得其被施加于多个NAND串。在一个实施方式中,被同时编程的一组存储器单元全部被连接至同一字线(所选字线)。未被选择的字线接收一个或更多个升压电压(例如,?7-11伏特)以执行本领域中公知的升压方案。在步骤772中,编程脉冲被同时施加于连接至所选字线的全部存储器单元,使得对未被禁止的、连接至所选字线的存储器单元同时编程。也就是说,在同一时间或者在重叠时间期间(二者都被认为是同时的)对它们编程。通过这种方式,未被禁止的、连接至所选字线的所有存储器单元将同时使它们的阈值电压改变。另夕卜,如在下文中更详细地描述的,步骤772包括分别且在适当时间应用压缩(compact1n)。
[0114]在步骤774中,使用一组合适的目标水平验证合适的存储器单元以执行一个或更多个验证操作。在一个实施方式中,通过检验被选择进行编程的存储器单元的阈值电压是否已经达到合适的验证参考电压(¥71^72,¥73,-_,¥715)来执行验证过程。阻止被成功验证为已经达到其目标状态的存储器单元被进一步编程。
[0115]在步骤775中,系统基于编程期间的性能将存储器单元区分和分类成不同存储器单元子集,并且将分类的指示存储在锁存器494中。用虚线描绘步骤775,这是因为在一些实施方式中,在步骤772-786的每次迭代期间不执行步骤775。在一个实施方式中,仅在步骤772-786的一次迭代中执行步骤775,并且在执行步骤775之前,步骤772的每次迭代施加一个编程脉冲,并且在执行步骤775之后,步骤772的每次迭代施加两个具有不同幅度的编程脉冲。
[0116]在步骤776中,确定是否所有存储器单元都已经达到其目标阈值电压(通过)。如果是,则编程过程完成且成功,这是因为所有所选存储器单元都被编程且验证成其目标状态。在步骤778中报告状态“通过”。在步骤776中,如果确定不是所有存储器单元都达到其目标阈值电压(失败),则编程过程继续进行至步骤780。
[0117]在步骤780中,系统对尚未达到其相应目标阈值电压分布的存储器单元的数目计数。也就是说,系统对未通过验证过程的存储器单元的数目计数。该计数可以由状态机、控制器或者其它逻辑实现。在一个实现中,每个感测块将存储其各单元的状态(通过/失败)。在一个实施方式中,存在反映未能通过最后的验证步骤的当前被编程的存储器单元的总数目的一个总计数。在另一实施方式中,为每个数据状态单独计数。
[0118]在步骤782中,确定步骤780中的计数是否小于等于预定界限。在一个实施方式中,预定界限为能够在对存储器单元的页的读取过程期间被ECC校正的位数。如果失败单元的数目小于或等于预定界限,则编程过程可以停止并在步骤778中报告状态“通过”。在这种情形下,足够的存储器单元被正确编程,使得能够在读取过程期间使用ECC来校正未被完全编程的少数剩余存储器单元。在一些实施方式中,步骤780将针对每个扇区、每个目标数据状态或其它单元对失败单元计数,并且在步骤782中将这些计数单独地或集体地与阈值进行比较。
[0119]在另一实施方式中,预定界限可以小于在读取过程期间能够由ECC校正的位的数目以容许将来的误差。当对少于一页的所有存储器单元进行编程或者仅对一个数据状态(或者少于所有状态)的计数进行比较时,则预定界限可以是在针对存储器的页的读取过程期间能够由ECC校正的位的数目的一部分(成比例的或者不成比例的)。在一些实施方式中,界限不是预定的。取而代之的是,该界限基于针对该页已计数的误差数目、所执行的编程擦除循环数目或者其它标准而改变。
[0120]如果失败的存储器单元的数目不小于预定界限,则编程过程在步骤784处继续进行,并且编程计数器PC对照编程界限值(PL)进行核查。编程界限值的示例包括20和30;然而,可以使用其它值。如果编程计数器PC不小于编程界限值PL,则编程过程被认为已经失败,并且在步骤788中报告状态“失败”。如果编程计数器PC小于编程界限值PL,则该过程在步骤786处继续进行,在此期间编程计数器PC递增I并且编程电压Vpgm步进至下一幅度。例如,下一脉冲的幅度将比前一脉冲大一个步长(例如,0.1-0.4伏特的步长)。在步骤786之后,过程循环返回步骤772并且另一编程脉冲被施加于所选字线。在一个实施方式中,在状态机112(和/或控制器122)的指示下,由解码器114/124/132、代码和参数存储113、电力控制模块116、感测块SB I,SB2,…,SBp、读/写电路128执行图1O的过程。
[0121]当使用16个数据状态在每个存储器单元中存储四位数据时,如图8和图9中所描绘的,验证过程(参见图10的步骤774)可以使编程过程减慢。例如,一些系统将对15个可能的编程状态S1-S15中的每个编程状态执行验证操作。因此,在步骤774期间,图10的过程的每次迭代(循环)可以包括15个验证操作(例如,所选字线上的15个验证脉冲)O大量验证操作使编程减慢。因此,一些系统仅对存储器单元潜在地能够实现的编程状态的子集进行验证。在一些实施方式中,在给定时间被验证的编程状态的数目取决于自然阈值分布的宽度。因此,建议通过减小阈值电压分布的宽度来减小验证所需要的时间量,使得在给定时间需要验证较少数据状态。
[0122]图11是描述用于压缩阈值电压分布使得在给定时间需要验证较少数据状态并使得编程过程更快完成的过程的一个实施方式的流程图。
[0123]在图11的步骤800中,系统基于编程期间的性能(例如,如编程的速度)将存储器单元区分和分类成不同存储器单元子集。例如,系统可以将快编程存储器单元与慢编程存储器单元区分开。也可以使用其它属性来区分子集或存储器单元。在一个实施方式中,步骤800作为图10的步骤775被执行。可以在编程过程的开始处或附近(或者在编程过程的中间)执行一次区分和分类,或者可以在整个编程过程中执行多次区分和分类。区分和分类的结果被存储在相应锁存器494中。
[0124]在步骤802中,基于分类,系统在编程过程的共同迭代期间将不同的编程信号施加于被编程到共同编程状态的不同存储器单元子集,以对阈值电压分布进行编程和压缩。为存储器单元的子集自定义不同的编程信号。例如,较慢编程存储器单元可以接收较高幅度的编程电压。在一个实施方式中,作为步骤772的多次迭代的部分执行图11的步骤802,其中在步骤772的每次迭代期间施加两个(或更多个)编程脉冲。较低幅度的编程脉冲被施加于快编程存储器单元并且较高幅度的编程脉冲被施加于慢编程存储器单元,以试图使慢编程存储器单元的编程加快,使得阈值电压分布将会变窄。
[0125]图12是能够执行图11的过程的一组示例部件的框图。例如,图12描绘了与非易失性存储器单元126通信的控制电路818。在一个实施方式中,存储器单元126可以包括二维结构或三维结构(例如,如图4A至图4F中描绘的结构)的存储器单元。本领域中已知的各种非易失性技术中的任何技术可以用于实现存储器单元126。控制电路818的一个示例实现包括编程和压缩电路820、分类电路822和选择电路824。与非易失性存储器单元126通信的编程和压缩电路820用于通过向非易失性存储器单元提供编程信号来对非易失性存储器单元126编程,以及使阈值电压分布变窄。在共同编程过程期间将非易失性存储器单元的多个组/子集编程到共同数据状态的同时,连接至编程和压缩电路820的选择电路824选择性地指示编程电路向多个组/子集提供单独的编程信号。在一个实施方式中,编程电路820和选择电路824执行图11的步骤802(这可以包括执行图10中描绘的过程的全部或部分)。分类电路822用于对存储器单元进行分类,或者以其他方式基于编程性能对存储器单元的不同组进行区分。在一个实施方式中,分类电路822执行图11的步骤800。
[0126]在一个示例实现中,编程和压缩电路820、分类电路822以及选择电路824是与非易失性存储器单元126实现在同一半导体芯片上的电路。在其它实施方式中,编程和压缩电路820、分类电路822以及选择电路824可以被实现在单独的半导体芯片上。在一个实施方式中,编程和压缩电路820、分类电路822以及选择电路824被实现为能够执行三个功能的一个单个电路。例如,该单个电路在图12中称为控制电路818。在一个示例中,控制电路818可以由状态机112、控制电路110、控制器122、上述控制电路中的任何一个或更多个或者存储器系统中的其它电路来实现。
[0127]图13是描述针对以下实施方式的图11的过程的一个示例实现的流程图,在该实施方式中,所描绘的过程由控制器122、主机装置或者在存储器晶片108外部的其它装置执行。步骤840包括通过使存储器单元的属性值(例如,阈值电压、磁性、电阻、电荷等)改变而将所选存储器单元编程到一个或更多个编程状态。例如,为了将存储器单元的阈值电压变成图8中描绘的数据状态中的任何一个数据状态,控制器122将会把指令发送至存储器晶片108以施加编程脉冲。在一个实施方式中,步骤840的编程包括子步骤842和844。在子步骤842中,控制器122使快编程存储器单元与慢编程存储器单元区分开。例如,为了对快编程存储器单元和慢编程存储器单元进行区分和分类,控制器122可以将指令发送至存储器晶片108以执行(如上所述的)一个或更多个感测操作。在子步骤844中,基于对快编程存储器单元和慢编程存储器单元的区分,控制器122使第一编程信号施加于慢编程存储器单元并且使第二编程信号施加于快编程存储器单元。在编程过程的共同迭代期间,第一编程信号的电压幅度高于第二编程信号。例如,回过来看图10,步骤772-786是重复的循环。该循环的每次重复是编程过程的迭代。在步骤772-786的一次迭代期间,步骤772包括施加多个编程脉冲(第一编程信号的一个编程脉冲以及第二编程信号的另一个编程脉冲)。在编程过程的同一迭代期间,那些编程脉冲将如本文所述的那样具有不同幅度。子步骤844包括控制器122将指令发送至存储器晶片108以施加编程脉冲。
[0128]图14是用于实现本文所述(例如,参见图11-13)的区分、分类和压缩的过程的一个实施方式的流程图。在步骤880中,系统仅通过一个编程信号执行编程过程的迭代(例如,经过图10的步骤772-786的一个迭代)。也就是说,例如,当执行步骤772时,仅施加一个编程脉冲。在步骤882中,确定被编程的众多存储器单元是否已经达到检测点。存在许多可以使用的检测点,将在下文论述其中的一些检测点。如果众多存储器单元尚未达到检测点,则过程循环回步骤880并且仅用一个编程信号(例如,在步骤772中施加的一个编程信号)执行编程过程的另一迭代(例如,经过图10的步骤772-786的一个迭代)。然而,如果被编程的众多存储器单元已经达到检测点(步骤882),则在步骤884中系统将在一个或更多个检验层级处执行感测操作以对被编程的存储器单元进行分类。在一个实施方式中,针对每次用一组数据对众多存储器单元进行编程,仅将步骤884执行一次。参考图15A-17C(参见VdetectJtest、\^681:1、'\^68〖2和\^68〖3)在下文讨论检测点(步骤882)以及一个或更多个检验层级(步骤884)的过多细节。在步骤886中,编程过程(例如,图10的流程图)将通过在编程过程的每次迭代期间施加多个编程信号来继续进行。例如,在执行步骤884之后,编程过程的迭代将包括施加多个编程脉冲的步骤772。基于步骤884中的分类,不同的编程脉冲将被施加于存储器单元的不同组。在下文中提供更多细节。注意,图14中的过程可以由控制电路818、状态机112、控制电路110、控制器122和/或上述一个或更多个控制电路中的任何控制电路来执行。
[0129]存在许多不同方式将存储器单元区分和分类成适合于本文所述的技术的不同组(例如,快和慢)。图15々、158、15(:、150、164、168、174、178和17(:描述了一组示例实施方式。然而,本文所公开的技术不限于这些用于对存储器单元进行区分和分类的确切过程。另外,本文所公开的技术不限于基于快/慢的区分和分类。在一些实施方式中,由分类电路822、控制电路818、状态机112、控制电路110、控制器122和/或上述一个或更多个控制电路中的任何控制电路来执行用于实现图15厶、158、15(:、150、16厶、168、17厶、178和17(:的过程。图15厶、158、15(:、1^)、164、168、174、178和17(:的过程是图11的步骤800的示例实现。
[0130]图15A示出了两个阈值电压分布950和952。图15A的曲线图也标识了特定阈值电压Vdetect。系统将监视被编程的存储器单元的阈值电压,直到预定最小数目的存储器单元的阈值电压高于Vdetect。这种情形由阈值电压分布950描绘。图15A指示在第η个编程脉冲之后产生阈值电压分布950。在预定最小数目的存储器单元的阈值电压大于Vdetect之后,系统将再执行M次图10的编程过程的迭代,使得再施加M个编程脉冲。阈值电压分布952指示在已经施加了 n+m个编程脉冲之后存储器单元的状态。此时,系统将执行感测操作以确定哪些存储器单元的阈值电压小于Vdetect以及哪些存储器单元的阈值电压大于Vdetect。例如,如果Vdetect伏特被施加于用于被编程的存储器单元的所选字线,则那些导通的存储器单元的阈值电压将小于Vdetect并且那些未导通的存储器单元的阈值电压似乎将大于Vdetect。在一个实施方式中,阈值电压小于Vdetect的那些存储器单元被认为是慢编程存储器单元,而阈值电压大于Vdetect的那些存储器单元被认为是快编程存储器单元。
[0131]图15B描绘了图15A的实施方式的替选方式。图15B示出了两个阈值电压分布960和962。图15B也指示了两个阈值电压Vdetect和Vtest。当至少预定最小数目的存储器单元的阈值电压大于Vdetect时,如第η个脉冲之后的阈值电压960所描绘的,系统将再施加m个编程脉冲(即再进行m次图10的过程的迭代)。阈值电压分布962表示n+m个编程脉冲之后的阈值电压分布。此时,系统将执行检验以查看哪些存储器单元的阈值电压小于一些所确定的检验点Vtest。阈值电压小于Vtest的那些存储器单元被认为是慢编程存储器单元,而阈值电压大于Vtest的那些存储器单元被认为是快编程存储器单元。在图16B所描绘的实施方式中,Vtest为仿真阈值电压分布或预期阈值电压分布的中间点;然而,在其它实施方式中,检验点Vtest可以处于其它阈值电压。
[0132]图15C描绘了图15A的实施方式的替选方式,该方式将存储器单元分类成四组:非常慢、慢、快、非常快。在其它实施方式中,可以实现多于四组或少于四组。图15C示出了两个阈值电压分布964和966。图15B也指示了四个阈值电压:Vdetect、Vtestl、Vtest2、Vtest3和Vtest4。当至少预定最小数目的存储器单元的阈值电压大于Vdetect时,如第η个脉冲之后的阈值电压964所描绘的,系统将再施加m个编程脉冲(即再进行m次图10的过程的迭代)。阈值电压分布966表不在n+m个编程脉冲之后的阈值电压的分布。此时,系统将执行检验,以查看哪些存储器单元的阈值电压:(a)小于Vtestl ; (b)大于Vtestl且小于Vtest2; (c)大于\^68丨2且小于\^68丨3;或者((1)大于\^68丨3。阈值电压小于\^681:1的那些存储器单元被认为是非常慢编程存储器单元。阈值电压大于Vtestl且小于Vtest2的那些存储器单元被认为是慢编程存储器单元。阈值电压大于Vtest2且小于Vtest3的那些存储器单元被认为是快编程存储器单元。阈值电压大于Vtest3的那些存储器单元被认为是非常快编程存储器单元。
[0133]图lf5D是描述用于对快编程存储器单元和慢编程存储器单元进行分类的过程的一个实施方式的流程图。图15D的过程可以用于实现图15A或图15B的实施方式(在图15C的实施方式中具有一些变化)以及其它实施方式。在步骤1004中,系统将在Vdetect处执行感测操作。在步骤1006中,系统确定“关断”位的数目(因为阈值电压大于Vdetect而没有导通的存储器单元的数目)是否大于预定最小数目。如果不是,则此时相对于对存储器单元进行分类不采取任何进一步动作(步骤1008)。如果“关断”位的数目大于预定最小数目,则在步骤1010中系统将再执行m个编程脉冲(例如,再进行m次图10的编程过程的迭代一一参见包括步骤771-786的循环)。在步骤1012中,(在m个编程脉冲之后)在Vdetect处针对被编程的存储器单元执行感测操作。可替选地,将在Vtest (或\^681:1、'\^68〖2和\^68〖3)处执行感测操作。在步骤1014中,响应于Vdetect或Vtest而导通的存储器单元的阈值电压低于Vdetect或Vtest,并且因此被认为是慢编程存储器单元。对于那些慢编程单元,O被存储在合适的锁存器中。回过来看图3C,感测块129中的每个包括一组数据锁存器494。在一个实施方式中,针对每个位线有三个数据锁存器。在另一实施方式中,针对每个位线可以使用多于三个数据锁存器。那些数据锁存器中的一个用于存储针对慢编程存储器单元的O以及针对快编程存储器单元的I。也可以使用快和慢的其它编码。在一个实施方式中,数据将在整个编程过程(图10的过程)中保持在锁存器中。在其它实施方式中,可以在装置的寿命中将快或慢的指示保持在锁存器中。在步骤1016中,未响应于Vdetect或Vtest(或者其它水平)处的感测操作而导通的存储器单元被认为是快编程存储器单元。对于那些快编程存储器单元,逻辑I被存储在合适的锁存器中。
[0134]图16A描绘了阈值电压分布1100以及两个特定阈值电压点Vtest和Vdetect。当预定数目的存储器单元的阈值电压大于Vdetect时,则系统将检验被编程的所有存储器单元的阈值电压是大于还是小于Vtest。阈值电压小于Vtest的那些存储器单元被认为是慢编程存储器单元。阈值电压大于Vtest的那些存储器单元被认为是快编程存储器单元。
[0135]图16B是描述用于基于图16A的曲线图对快编程存储器单元和慢编程存储器单元执行分类的一个实施方式的流程图。在步骤1112中,系统在Vdetect处执行感测操作。如果(步骤1114)系统确定关断位(因为其阈值电压大于Vdetect,所以未响应于Vdetect导通的存储器单元)的数目不大于预定最小数目,则此时不采取任何进一步动作作为分类的部分(步骤1116)。如果(步骤1114)系统确定关断位(因为其阈值电压大于Vdetect,所以未响应于Vdetect导通的存储器单元)的数目大于预定最小数目,则在Vtest处针对被编程的存储器单元执行感测操作。在步骤1120中,响应于Vtest处的感测操作而导通(因为阈值电压小于Vtest)的存储器单元被认为是慢编程存储器单元(参见图16A)。对于那些慢编程存储器单元,O被存储在合适的锁存器中。在步骤1122中,未响应于Vtest处的感测操而导通(因为其阈值电压大于Vtest)的存储器单元被认为是快编程存储器单元。对于快编程存储器单元,数据I被存储在合适的锁存器中。
[0136]图17A至图17C描绘了对存储器单元进行区分和分类的另一实施方式。图17A描绘了阈值电压分布1200和1202以及阈值电压Vtest。如上所述以及如图4F中图形描述的,块的NAND串连接至共同单元源极线(例如,参见图4F的共同源极线SL)。当执行感测操作时,如果连接至所选字线的存储器单元中的每个(每个NAND串一个存储器单元)因为其阈值电压小于施加于所选字线的电压而导通,则共同源极线处的电流将是经过所有NAND串的电流之和。这在本文中称为总电位电流Ipc。在共同源极线SL处测量的电流称为总测量电流Imc。在一个实施方式中,系统将包括用于测量共同源极线处的电流的电路。在另一实施方式中,连接至位线中的每个位线的感测放大器中的每个感测放大器将具有用于检测电流并将所检测的水平报告至状态机或其它部件的电路。如果存储器单元处于由阈值电压1200描绘的条件下并且电压Vtest被施加于所选字线,则总测量电流Imc将等于总电位电流Ipc。随着众多存储器单元接收额外编程使得一些存储器单元的阈值电压增大至大于Vtest的水平,则总测量电流Imc将因为一些存储器单元(阈值电压大于Vtest的存储器单元)将关断而将变成小于总电位电流Ipc。图17A的实施方式试图确定总测量电流Imc何时等于总电位电流Ipc的一半。阈值电压分布1202表示Imc = l/2Ipc时的情况。在那时,如图17A中的文本所描绘的,阈值电压低于Vtest的那些存储器单元被认为是慢编程存储器单元,而阈值电压大于Vtest的那些存储器单元被认为是快编程存储器单元。
[0137]图17B是图17A的实施方式的替选方式。在图17A的一个实现中,系统将在编程过程的每次迭代处核查总测量电流。图17B提供了一种去除在编程过程的每次迭代处测量总测量电流的需要的实施方式。图17B的曲线图示出了三个阈值分布:1212、1214和1216。当存储器单元处于阈值电压1212时,总测量电流Imc应当等于总电位电流Ipc。然而,系统不在编程过程的每次迭代处检查总测量电流Imc,而是将会通过确定预定最小数目的存储器单元是否具有大于Vtest的阈值电压而开始。当众多存储器单元确实具有阈值电压大于Vtest的预定最小数目的存储器单元时,则系统开始测量Imc并将Imc与Ipc进行比较。该情形由阈值电压分布1214记录,阈值电压分布1214示出了表示阈值电压大于Vtest的存储器单元的阴影区域1218。当该情形(阈值电压分布1214)发生时,系统将开始在编程过程的每次迭代处核查总测量电流Imc是否等于总电位电流Ipc的一半。阈值电压分布1216表示Imc = l/2Ipc时的情形。在那时,如图17B的文本所描绘的,阈值电压小于Vtest的那些存储器单元被认为是慢编程存储器单元,而阈值电压大于Vtest的那些存储器单元被认为是快编程存储器单元。
[0138]图17C是描述用于实现图17A和图17B的实施方式以基于编程期间的性能对存储器单元进行区分和分类的过程的一个实施方式的流程图。在步骤1250中,系统通过在步骤772期间仅施加一个编程脉冲来执行编程过程的迭代(例如,经过图10的步骤772-786的迭代)。在步骤1252中,系统确定众多存储器单元是否已经达到检测点。在图17A的实施方式中,检测点可以为编程过程的第一次迭代或者编程过程的第η次迭代。在图17B的实施方式中,检测点为预定最小数目的存储器单元的阈值电压大于Vtest时。也可以使用其它检测点。如果系统尚未达到检测点,则过程循环回步骤1250并且通过在步骤772中仅施加一个编程脉冲来继续执行编程过程的另一迭代。
[0139]如果众多存储器单元已经达到检测点(步骤1252),则在步骤1254中系统确定总如在共同源极线(例如,图4F的SL)处经历的总测量电流Imc。在步骤1256中,确定总测量电流Imc是否等于总电位电流Ipc的一半。如果不是,则在步骤1258中,系统将通过在图10的步骤772期间仅施加一个编程脉冲来执行编程过程的另一迭代。在步骤1258之后,过程循环返回至步骤1254。
[OMO]如果在步骤1256中,确定总测量电流Imc等于总电位电流Ipc的一半,则在步骤1260中系统将在一个或更多个检验水平处感测存储器单元,以对存储器单元进行分类。该分类被存储在锁存器494中。在一个实施方式中,系统将仅对快编程存储器单元和慢编程存储器单元进行检测和分类。在其它实施方式中,可以存在多于两个分类(例如,非常快、块、慢、非常慢等)。在步骤1262中,系统通过在编程过程的共同迭代期间施加多个编程信号来继续进行编程过程。例如,图10中的过程将继续,并且每次迭代将包括施加具有不同电压幅度的多个编程脉冲以考虑存储器单元的不同分类的步骤772。在步骤772的单个迭代期间执行应用具有不同电压幅度的多个编程脉冲。
[0141]图15六、158、15(:、150、164、168、174、178和17(:描述了如何区分快编程存储器单元和慢编程存储器单元的示例(参见图11的步骤800)。图18至图22提供了如何基于已知哪些存储器单元是快编程存储器单元以及哪些存储器单元是慢编程存储器单元,通过在编程过程的共同迭代期间将不同的编程信号施加于快编程存储器单元和慢编程存储器单元来压缩/窄化阈值电压分布的示例(参见图11的步骤802)。在一个实施方式中,通过编程和压缩电路820、控制电路818、状态机112、控制电路110、控制器122或者上述一个或更多个控制电路中的任何控制电路来执行图18至图22所描述的功能。
[0142]图18描绘了一系列编程脉冲,使得在编程过程的每次迭代中系统将施加两个编程脉冲:具有较低幅度的一个编程脉冲将被施加于快编程存储器单元,具有较高幅度的一个编程脉冲将被施加于慢编程单元。通过将较高电压的编程脉冲施加于较慢编程存储器单元,意图是使较慢编程存储器单元的编程加快,使得将会压缩或窄化阈值电压。例如,图18示出了编程脉冲1302和编程脉冲1304。与编程脉冲1304相比,编程脉冲1302为较低电压幅度的编程脉冲。编程脉冲1302和编程脉冲1304两者在步骤772的同一迭代/执行期间被施加于同一共同字线。应用第一编程脉冲1302。在应用编程脉冲1302时,禁止(例如,通过将位线电压Vbl升高至Vdd)慢编程存储器单元编程并且允许快编程存储器单元编程(例如,位线电压Vbl被设置在O伏特)。在施加编程脉冲1304时,允许慢编程存储器单元编程(例如,位线电压Vbl被设置在O伏特)并且禁止快编程存储器单元(例如,通过将位线电压Vbl升高至Vdd)。编程脉冲1304的电压幅度比编程脉冲1302的电压幅度大△。在一个实施方式中,△等于1.5伏特。在其它实施方式中,A可以具有其它值。在一些实施方式中,在编程过程期间、之后或之前,A为可编程的或动态可调的。在步骤772中施加编程脉冲1302和1304之后,系统将在步骤774中执行验证操作。
[0143]在图10的编程过程的下一迭代中,步骤772将包括施加编程脉冲1306和1308。编程脉冲1308的幅度比编程脉冲1306的幅度大△。编程脉冲1306的幅度比编程脉冲1302的幅度大Δ Vpgm。在△ Vpgm等于.2伏特的一个实施方式中,编程脉冲1306用于对快编程存储器单元编程(禁止慢存储器单元并且允许快编程存储器单元编程)。施加编程脉冲1308以对慢编程存储器单元编程(允许慢编程存储器单元编程并且禁止快编程存储器单元)。在图10的步骤772中施加编程脉冲1306和1308之后,系统将在步骤774中执行一个或更多个验证操作。
[0144]在步骤772的下一迭代中,系统施加编程脉冲1310和1312。编程脉冲1312的幅度比编程脉冲1310的幅度大△。编程脉冲1310的幅度比编程脉冲1306的幅度大△ Vpgm。施加编程脉冲1310以对快编程存储器单元编程(禁止慢存储器单元并且允许快编程存储器单元编程)。应用编程脉冲1312以对慢编程存储器单元编程(允许慢编程存储器单元编程并且禁止快编程存储器单元)。在施加编程脉冲1310和1312之后,系统执行一个或更多个验证操作,并且图10的编程过程将继续。
[0145]对于图18的实施方式,在步骤772中的每个迭代期间,两个编程脉冲(例如,编程脉冲1302和编程脉冲1304)表示不同的编程信号。第一编程脉冲是第一编程信号的部分。第二编程脉冲是第二编程信号的部分。在一个实施方式中,第一编程信号包括每个迭代的第一脉冲(例如,编程脉冲1302、1306、1310…),而第二编程信号是每个迭代的第二编程脉冲(例如,编程脉冲1304、1308、1312…)。因此,存储器单元的不同组或子集(例如,快存储器单元和慢存储器单元)将接收不同的电压幅度。也就是说,系统将向被编程到共同编程状态或数据状态的不同存储器单元子集提供不同的电压幅度。例如,被编程到同一数据状态的慢存储器单元和快存储器单元将接收处于不同幅度的编程脉冲。另外,在不同时间施加编程脉冲。在图18的示例中,首先施加较低幅度的编程脉冲,其次施加较高幅度的编程脉冲。在其它实施方式中,可以首先施加较高幅度的编程脉冲,并且其次施加较低幅度的编程脉冲。注意,在一个实施方式中,能够基于众多存储器单元的性能、众多慢存储器单元的性能、众多快存储器单元的性能或者其它度量来调节△(较高幅度的编程脉冲与较低幅度的编程脉冲之间电压幅度的差)。
[0146]图19是描述用于通过如图18的实施方式那样施加不同的编程信号来执行阈值电压压缩的过程的一个实施方式的流程图。也就是说,图19的过程是基于图18的实施方式的图11的步骤802的一个示例实现。在步骤1340中,系统将禁止编程的电压施加在用于慢编程存储器单元的位线。在步骤1342中,系统将允许编程的电压施加在用于快编程存储器单元的位线。在步骤1344中,系统施加较低幅度的编程脉冲。在步骤1346中,系统将允许编程的电压施加在用于慢编程存储器单元的位线。在步骤1348中,系统将禁止编程的电压施加在用于快编程存储器单元的位线。在步骤1350中,系统施加较高幅度的编程脉冲。
[0147]在一个实施方式中,在图1O的步骤772的每次迭代期间执行图19的过程。例如,将首先针对编程脉冲1302和1304执行图19的过程。随后,将针对编程脉冲1306和1308再次执行图19的过程,以此类推。在一个替选方式中,当将编程脉冲施加于快编程存储器单元(例如,步骤1346)时,将不禁止慢编程存储器单元进行编程。
[0148]图18示出了在编程过程的每次迭代期间施加的两个编程脉冲。在其它实施方式中,在编程过程的每次迭代期间可以施加多于两个编程脉冲。例如,存储器单元可以被分成X个组(其中X = 2,3,4,…),并且编程过程的每次迭代将包括施加X个编程脉冲(即在图10的步骤772期间),每组一个编程脉冲。
[0149]在图18和图19的实施方式中,基于对施加于所选字线的编程信号的幅度进行改变,存储器单元将使其编程加速或减慢。用于改变编程速度的另一手段是改变字线上的电压。图20、21和22描绘了通过调整施加于字线的编程脉冲的幅度以及调整施加于位线的电压的组合来改变编程速度的实施方式。在该实施方式中,存储器单元可以被分类成两个或更多个组。例如,图20描绘了在基于上述电压Vtestl、Vtest2和Vtest3将存储器单元区分和分类成非常慢、慢、快和非常快四个组的情况下的阈值电压分布。在一个示例实现中,一组编程脉冲(较高电压幅度编程脉冲)用于对非常慢存储器单元和慢存储器单元编程。另一组编程脉冲(较低电压幅度编程脉冲)用于对快编程存储器单元和非常快编程存储器单元编程。为了使慢编程存储器单元以与非常慢编程存储器单元一样的速度编程,将使用对字线电压的调整。为了使非常快编程存储器单元以与快编程存储器单元一样的速度编程,将使用对位线电压的调整。由图21处的流程图说明该过程。
[0150]在图21的步骤1340中,系统对用于慢编程存储器单元和非常慢编程存储器单元的位线施加禁止对那些存储器单元编程的电压。在步骤1342中,系统将允许完全编程的电压施加在用于快编程存储器单元的位线。例如,零伏特可以施加于那些位线。在步骤1344中,系统将允许较慢编程的电压施加在用于非常快编程存储器单元的位线。这意味着将不会禁止非常快编程存储器单元并且将发生一些编程。然而,将施加小于禁止位线电压并大于完全编程位线电压的位线电压,诸如一伏特,以允许非常快编程存储器单元比快编程存储器单元更慢地编程。在步骤1346中,施加较低电压幅度的编程脉冲。在一个实施方式中,可以施加图18的编程脉冲作为图21的过程的部分。在该实施方式中,步骤1346包括施加编程脉冲1302、编程脉冲1306或编程脉冲1310。
[0151]在图21的步骤1340中,系统将禁止编程的电压施加在用于快编程存储器单元和非常快编程存储器单元的位线。例如,位线将接受Vdd(例如,3.5至5伏特)。在步骤1342中,系统将允许完全编程的电压应用在用于非常慢编程存储器单元的位线。例如,这些位线将接收零伏特。在步骤1344中,系统将允许较慢编程的电压施加在用于慢编程存储器单元的位线(例如,与在步骤1344中施加的位线电压相同)。一个示例包括将I伏特施加于位线。在步骤1346中,施加较高幅度编程脉冲。例如,可以施加编程脉冲1304、1308或1312。因此,图21中的过程允许通过仅使用两种不同的编程脉冲信号来区分四个组。图21的实施方式包括向被编程到共同编程状态(例如,S1-S15)的不同存储器单元子集/组提供不同的编程信号和提供不同的位线电压。
[0152]图22是示出字线信号“WL”、用于非常快编程存储器单元的位线信号“BL(非常快)”、用于快编程存储器单元的位线“BL(快)”、用于慢编程存储器单元的位线“BL(慢)”以及用于非常慢编程存储器单元“BL(非常慢)”在图21的过程期间的行为的时序图。图22示出了在图10的步骤772的一个迭代期间的行为,包括应用两个编程脉冲,一个编程脉冲处于Vpgm并且另一编程脉冲处于Vpgm+Δ。
[0153]当施加Vpgm的第一编程脉冲时,用于非常快编程存储器单元的位线电压BL(非常快)处于允许较慢编程的电压Vspl(例如,I伏特);用于快编程存储器单元的位线电压BL(快)处于被设置成允许完全编程的Vfp(例如,O伏特);用于慢编程存储器单元的位线电压BL(慢)处于被设置成禁止任何编程的Vinhibit(例如,3.5至5伏特);以及用于非常慢编程存储器单元的位线电压BL(非常慢)也被设置成处于Vinhibit。
[0154]在处于Vpgm+△的第二编程脉冲期间,用于非常快编程存储器单元的位线电压BL(非常快)被设置成处于Vinhibit;用于快编程存储器单元的位线电压BL(快)被设置成处于Vinhibit;用于慢编程存储器单元的位线电压BL(慢)被设置成Vsp2(例如,I伏特);并且用于非常慢编程存储器单元的位线电压BL(非常慢)被设置成处于Vfp。在一个实施方式中,Vspl =Vsp2。在另一实施方式中,Vspl#Vsp2。
[0155]在编程过程的迭代期间包括两个(或更多个)编程脉冲的一些实施方式中,编程信号Vpgm在检测带点(基于编程将存储器单元区分和分类成不同存储器单元子集)之前和之后均以相同步距(pace)步进(参见图10的步骤786)。所以,例如如果系统使用0.2伏特的步长,则编程信号Vpgm在检测之前以0.2V步进,然后在检测之后,Vpgm分成两个脉冲,其中较低幅度编程脉冲(被施加于快编程存储器单元)在检测之前和检测之后依然以0.2V步进。这样,快编程存储器单元再检测之间和检测之后继续以相同步距继续移动。
[0156]在通过调整施加于字线的编程脉冲的幅度以及调整施加于位线的电压的组合来改变编程速度的实施方式中,刚好在检测点处系统将Vbl偏压(S卩Vspl)施加在非常快编程存储器单元。这意味着非常快编程存储器单元刚好在压缩开始后突然经历减慢,这可以导致性能的一些损失。因此,在一个替选实施方式中,在刚好在检测点之后的编程脉冲处,系统可以对Vpgm使用更大的步长DVpgm+K伏特,而不是使用相同的步长(DVpgm伏特)。通过调节K,系统可以确保非常快编程存储器单元保持其编程速度不变,并且变化仅影响快编程存储器单元的编程速度。对于慢编程存储器单元也一样,刚好在检测点之后的编程脉冲处的编程脉冲的幅度变化应当也使用较大的步长DVpgm+K伏特,其中K是可调的以确保慢编程存储器单元保持其变成速度。简而言之,仅对于紧接在检测点之后的编程脉冲的特殊情况,系统对DVpgm加K伏特。在随后的编程脉冲,系统恢复到使用在检测之前使用的标准DVpgm。
[0157]上述技术描述了一种用于使阈值电压分布变窄的手段。
[0158]—个实施方式包括一种设备,该设备包括与存储器单元通信的非易失性存储器单元和控制电路。控制电路被配置成将不同的编程信号施加于被编程到共同编程状态的不同存储器单元子集。
[0159]在一个示例实施方式中,控制电路被配置成通过以下方式将不同的编程信号施加于不同存储器单元子集:在编程过程的共同迭代期间在不同时间向被编程到共同编程状态的不同存储器单元子集提供具有不同幅度的编程信号。
[0160]在一个示例实施方式中,控制电路被配置成通过以下方式将不同的编程信号施加于存储器单元的不同子集:在共同编程过程期间向被编程到共同编程状态的不同存储器单元子集提供具有不同幅度的编程信号。
[0161]在一个示例实现中,控制电路被配置成区分快编程存储器单元和慢编程存储器单元,快编程存储器单元包括存储器单元的第一子集,慢编程存储器单元包括存储器单元的第二子集;控制电路被配置成通过向快编程存储器单元提供第一组编程脉冲以及向慢编程存储器单元提供第二组编程脉冲来将不同的编程信号施加于存储器单元的子集,第二组编程脉冲的幅度高于第一组编程脉冲中的相应编程脉冲;控制电路被配置成向被编程到共同编程状态的不同存储器单元子集额外地提供不同的位线电压;控制电路被配置成在除了紧接在区分快编程存储器单元和慢编程存储器单元之后的编程脉冲以外的第一组编程脉冲中的编程脉冲之间以及第二组编程脉冲中的编程脉冲之间使用第一步长;控制电路被配置成在紧接在区分快编程存储器单元和慢编程存储器单元之后的第一组编程脉冲中的编程脉冲之间以及第二组编程脉冲中的编程脉冲之间使用第二步长;并且第二步长以可调的差大于第一步长。
[0162]—个实施方式包括一种设备,该设备包括:非易失性存储器单元;连接至存储器单元的分类电路,该分类电路被配置成基于编程性能将存储器单元分类成多个组;连接至非易失性存储器单元的编程和压缩电路,该编程电路被配置成向非易失性存储器单元提供编程信号;以及连接至编程和压缩电路的选择电路,当在编程过程期间将多个组编程到共同数据状态时,该选择电路选择性地指示编程电路向多个组提供单独的编程信号。
[0163]—个实施方式包括一种设备,该设备包括:用于与非易失性存储器单元通信的接口以及与存储器单元通信的控制电路。控制电路被配置成通过使存储器单元的属性值改变来将存储器单元编程到一个或更多个编程状态。该控制电路被配置成使快编程存储器单元与慢编程存储器单元区分开。基于对快编程存储器单元与慢编程存储器单元的区分,控制电路使第一编程信号施加于慢编程存储器单元并且使第二编程信号施加于快编程存储器单元。在编程过程的共同迭代期间,第一编程信号的幅度高于第二编程信号的幅度。
[0164]一个实施方式包括一种方法,该方法包括:通过改变存储器单元的属性值来将存储器单元编程到多个编程状态中的一个或更多个编程状态;区分快编程存储器单元和慢编程存储器单元;以及基于对快编程存储器单元和慢编程存储器单元的区分,将第一编程信号施加于慢编程存储器单元并且将第二编程信号施加于快编程存储器单元,在共同编程迭代期间第一编程信号的幅度高于第二编程信号的幅度。
[0165]为了本文档的目的,应注意,附图中描绘的各种特征的尺寸不一定按比例绘制。
[0166]为了本文档的目的,说明书中引用的“实施方式”、“一个实施方式”、“一些实施方式”或“另一实施方式”可以用于描述不同的实施方式或者同一实施方式。
[0167]为了本文档的目的,连接可以为直接连接或间接连接(例如,经由一个或更多个其它部分)。在一些情况下,当元件被称为连接或親合至另一元件时,该元件可以直接地连接至其它元件或者经由中间元件间接地连接至其它元件。当元件被称为直接地连接至另一元件时,那么在该元件与其它元件之间不存在中间元件。在两个装置直接或间接连接的情况下,该两个装置是“进行通信”的,使得这两个装置能够在它们之间传递电信号。
[0168]为了本文档的目的,术语“基于”可以被理解为“至少部分地基于”。
[0169]为了本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数值术语可以不暗指物体的顺序,而是用于标识不同物体的标识目的。
[0170]为了本文档的目的,术语物体的“组”指代一个或更多个物体的“组”。
[0171]已经出于说明和描述的目的呈现了本发明的在前详细描述。该详细描述并不意在穷举或将本发明限制为所公开的确切形式。根据以上教导,很多修改和变型是可能的。选择所描述的实施方式以最佳地解释本发明的原理及其实际应用,从而使得本领域普通技术人员能够最佳地利用本发明的各种实施方式和适合所构思的特定应用的本发明的各种变型。意在由所附权利要求来限定本发明的范围。
【主权项】
1.一种设备,包括: 非易失性存储器单元;以及 与所述存储器单元通信的控制电路,所述控制电路被配置成将不同的编程信号施加于被编程到共同编程状态的所述存储器单元的子集。2.根据权利要求1所述的设备,其中: 所述控制电路被配置成基于编程速度将所述存储器单元区分和分类成存储器单元的不同子集。3.根据权利要求1所述的设备,其中: 所述控制电路被配置成通过对被编程到所述共同编程状态的所述存储器单元的子集提供不同的电压幅度来将不同的编程信号施加于所述存储器单元的所述子集。4.根据权利要求1所述的设备,其中: 所述控制电路被配置成通过在不同时间向被编程到所述共同编程状态的所述存储器单元的不同子集提供编程信号来将不同的编程信号施加于所述存储器单元的所述不同子集。5.根据权利要求1所述的设备,其中: 所述控制电路被配置成区分快编程存储器单元和慢编程存储器单元,所述快编程存储器单元包括所述存储器单元的第一子集,所述慢编程存储器单元包括所述存储器单元的第二子集。6.根据权利要求5所述的设备,其中: 所述控制电路被配置成通过向所述快编程存储器单元提供第一组编程脉冲以及向所述慢编程存储器单元提供第二组编程脉冲来将不同的编程信号施加于所述存储器单元的子集,所述第二组编程脉冲的幅度高于所述第一组编程脉冲中的相应编程脉冲。7.根据权利要求6所述的设备,其中: 所述控制电路被配置成向被编程到共同编程状态的所述存储器单元的所述不同子集额外地提供不同的位线电压。8.根据权利要求7所述的设备,其中: 所述控制电路被配置成在除了紧接在对快编程存储器单元和慢编程存储器单元的区分之后的编程脉冲以外的所述第一组编程脉冲中的编程脉冲之间以及所述第二组编程脉冲中的编程脉冲之间使用第一步长; 所述控制电路被配置成在紧接在对快编程存储器单元和慢编程存储器单元的区分之后的所述第一组编程脉冲中的编程脉冲之间以及所述第二组编程脉冲中的编程脉冲之间使用第二步长;并且 所述第二步长以可调的差大于所述第一步长。9.根据权利要求5所述的设备,其中: 所述控制电路被配置成通过以下操作来区分快编程存储器单元和慢编程存储器单元:感测经过所述存储器单元的总测量电流是否为总电位电流的一半,以及在经过所述存储器单元的所述总测量电流为总电位电流的一半时将导通的存储器单元识别为慢编程存储器单元。10.根据权利要求1所述的设备,其中: 所述非易失性存储器单元被以三维结构布置。11.一种设备,包括: 非易失性存储器单元; 连接至所述存储器单元的分类电路,所述分类电路被配置成基于编程性能将所述存储器单元分类成多个组; 连接至所述非易失性存储器单元的编程和压缩电路,所述编程和压缩电路被配置成向所述非易失性存储器单元提供编程信号;以及 连接至所述编程和压缩电路的选择电路,当在编程过程期间将所述多个组编程到共同数据状态时,所述选择电路选择性地指示所述编程和压缩电路向所述多个组提供单独的编程信号。12.根据权利要求11所述的设备,其中: 所述分类电路被配置成将所述存储器单元分类为较快编程存储器单元和较慢编程存储器单元,所述多个组包括较快编程存储器单元的组和较慢编程存储器单元的组。13.根据权利要求11所述的设备,其中: 所述分类电路被配置成基于阈值电压在自然阈值电压分布中的相对位置将所述存储器单元分类为较快编程存储器单元和较慢编程存储器单元,其中较快编程存储器单元具有较高阈值电压并且较慢编程存储器单元具有较低阈值电压。14.根据权利要求13所述的设备,其中: 所述编程和压缩电路被配置成通过向所述较慢编程存储器单元提供与所述较快编程存储器单元不同的编程脉冲来向所述多个组单独地提供编程。15.根据权利要求13所述的设备,其中: 所述编程和压缩电路被配置成通过以下操作向所述多个组单独提供编程:将编程电压施加于所述较慢编程存储器单元,所述编程电压在幅度上比在编程过程的共同迭代期间施加于所述较快编程存储器单元的编程电压高出一个幅度,该幅度为自然阈值电压分布的函数。16.根据权利要求11所述的设备,还包括: 多个锁存器,所述分类电路将对所述存储器单元进行分类的结果存储在所述锁存器中,所述编程和压缩电路被配置成在共同编程过程期间多次使用存储在所述锁存器中的所述结果。17.—种设备,包括: 用于与非易失性存储器单元通信的存储器接口 ;以及 与所述存储器单元通信的控制电路,所述控制电路被配置成通过使所述存储器单元的属性值改变来将所述存储器单元编程到一个或更多个编程状态,所述控制电路被配置成使得将快编程存储器单元与慢编程存储器单元区分开,基于对快编程存储器单元与慢编程存储器单元的所述区分,所述控制电路使第一编程信号施加于慢编程存储器单元并且第二编程信号施加于快编程存储器单元,在编程过程的共同迭代期间所述第一编程信号的幅度高于所述第二编程信号。18.根据权利要求17所述的设备,其中: 所述第一编程信号包括第一组电压脉冲,所述第二编程信号包括第二组编程脉冲,在连接至所述快编程存储器单元和慢编程存储器单元的共同字线上驱动所述第一组电压脉冲和所述第二组电压脉冲两者,所述控制电路被配置成当在所述共同字线上驱动所述第一组电压脉冲时使所述快编程存储器单元被禁止,所述控制电路被配置成当在所述共同字线上驱动所述第二组电压脉冲时使所述慢编程存储器单元被禁止。19.根据权利要求18所述的设备,其中: 所述第一组电压脉冲的幅度高于所述第二组电压脉冲中的相应电压脉冲;并且 所述非易失性存储器单元被以三维结构布置。20.根据权利要求18所述的设备,其中: 所述控制电路被配置成使第一位线电压施加于慢编程存储器单元并且第二位线电压施加于快编程存储器单元,所述第二位线电压的幅度高于所述第一位线电压。
【文档编号】G11C16/34GK106067323SQ201610247645
【公开日】2016年11月2日
【申请日】2016年4月20日 公开号201610247645.4, CN 106067323 A, CN 106067323A, CN 201610247645, CN-A-106067323, CN106067323 A, CN106067323A, CN201610247645, CN201610247645.4
【发明人】迪潘舒·杜塔, 曾怀远, 法鲁克·莫加特
【申请人】桑迪士克科技有限责任公司