对由于块氧化物减薄引起的编程速度变化进行补偿的存储器设备的制作方法

文档序号:26102485发布日期:2021-07-30 18:13阅读:178来源:国知局
对由于块氧化物减薄引起的编程速度变化进行补偿的存储器设备的制作方法



背景技术:

本技术涉及存储器设备的操作。

半导体存储器设备已经变得越来越普遍用于各种电子设备。例如,非易失性半导体存储器用于蜂窝电话、数字相机、个人数字助理、移动计算设备、非移动计算设备以及其他设备。

电荷存储材料(诸如浮栅)或电荷俘获材料可以用于此类存储器设备中以存储表示数据状态的电荷。电荷俘获材料可以被垂直布置在三维(3d)堆叠的存储器结构中,或者被水平布置在二维(2d)存储器结构中。3d存储器结构的一个示例是位成本可扩展(bics)体系结构,该体系结构包括交替的导电层和介电层的堆叠。

存储器设备包括可以例如串联布置在nand串(例如,nand链)中的存储器单元。然而,在操作此类存储器设备时存在各种挑战。

附图说明

图1是示例存储器设备的框图。

图2是描绘图1的感测块51的一个实施方案的框图。

图3描绘了图1的用于将电压提供给存储器单元的块的功率控制模块116的示例具体实施。

图4是存储器设备500的透视图,该存储器设备500包括图1的存储器结构126的示例3d配置中的一组块。

图5a描绘了图4的块blk0的一部分的示例性剖视图。

图5b描绘了blk0中的示例性晶体管650。

图5c描绘了图5a的堆叠中的存储器孔直径的图。

图6描绘了图5a的堆叠的区622的近距离视图。

图7描绘了与图4和图5a一致的块blk0中nand串的示例性视图。

图8a描绘了与图7一致的块blk0中的控制栅极层。

图8b描绘了图7的块blk0的附加细节。

图9a描绘了在编程操作开始时的一组存储器单元的阈值电压(vth)分布。

图9b描绘了一组存储器单元在编程操作之后的vth分布,示出了过度编程的影响。

图9c描绘了被编程到a状态以确定编程速度的不同子块的存储器单元的vth分布。

图10a描绘了在编程操作中使用的示例性电压信号,包括在编程速度采集模式中使用的电压信号1000和在正常编程模式中使用的电压信号1010。

图10b描绘了使用电压信号1010在图10a的不同编程循环中不同数据状态的验证的示例。

图10c描绘了使用电压信号1000在图10a的不同编程循环中不同数据状态的验证的示例。

图11a1描绘了示例性编程操作的流程图,其中编程速度从一个或多个子块采集并且用于确定另一个子块的初始编程电压。

图11a2描绘了用于字线组的图11a1的示例性具体实施的流程图。

图11b描绘了图11a1的过程的第一示例性具体实施的流程图,其中访问诸如图11c-图11e中的表以基于选定字线和选定子块来确定子块的优化初始编程电压。

图11c描绘了在图11b的过程中用于具有七个子块sb0-sb6的示例性块的示例性表格,其与图14a一致,其中编程速度是从sb0采集的。

图11d描绘了在图11b的过程中用于具有七个子块sb0-sb6的示例性块的示例性表格,其与图14a一致,其中编程速度是从sb1采集的。

图11e描绘了在图11b的过程中用于具有八个子块sb0-sb7的示例性块的示例性表格,其与图16a一致,其中编程速度是从sb0采集的。

图11f描绘了图11a1的过程的第二示例性具体实施的流程图,其中子块以基于其编程速度的顺序进行编程。

图11g描绘了图11f的过程的示例性具体实施的流程图,其中使用从中央子块和边缘子块采集的编程电压来确定另一个子块的初始vpgm。

图11h描绘了使用编程速度采集模式的子块的示例性编程操作的流程图,与图10a的电压信号1000一致。

图11i描绘了图11a1的过程的第三示例性具体实施的流程图,其中使用从子块的边缘行或其他选定行采集的编程电压来确定另一个子块的初始vpgm。

图11j描绘了用于实现图11i的过程的图11h的示例性编程操作的修改形式的流程图。

图11k描绘了使用正常编程模式的子块的示例性编程操作的流程图,与图10a的电压信号1010一致。

图12描绘了与图11h的步骤1145和1146以及与图11k的步骤1185和1186一致的示例性验证过程的流程图。

图13a描绘了与图14a的子块顺序1421一致的图11g的过程的示例性具体实施,其中块的编程不存在中断。

图13b描绘了与图14a的子块顺序1421一致的图11g的过程的示例性具体实施,其中sb0和sb1的编程之间存在中断。

图13c描绘了与图14a的子块顺序1420一致的图11i的过程的示例性具体实施,其中块的编程不存在中断。

图14a描绘了具有七个子块的示例性块1400的侧视图,与图5a一致。

图14b描绘了图14a的示例性块1400的俯视图。

图14c描绘了曲线图,其示出了图14b的块中的阻挡氧化物层的变化厚度随距块的最近边缘的距离的变化。

图14d更详细地描绘了图14a的区域1440,示出了阻挡氧化物层的变化厚度。

图15a描绘了编程电压相对于子块位置的曲线图,与图14a的块、图11b的过程和图11c的表一致。

图15b描绘了编程电压相对于子块位置的曲线图,与图14a的块以及图11f、图11g和图13a的过程一致。

图15c描绘了编程电压相对于子块位置的曲线图,与图14a的块以及图11i、图11j和图13c的过程一致。

图16a描绘了具有八个子块的示例性块1600的侧视图,与图5a一致。

图16b描绘了图16a的示例性块1600的俯视图。

图16c描绘了曲线图,其示出了图16b的块中的阻挡氧化物层的变化厚度随距块的最近边缘的距离的变化。

图17a描绘了编程电压相对于子块位置的曲线图,与图17a的块、图11b的过程和图11e的表一致。

图17b描绘了编程电压相对于子块位置的曲线图,与图17a的块以及图11f和图11g的过程一致。

图17c描绘了编程电压相对于子块位置的曲线图,与图17a的块以及图11i和图11j的过程一致。

图18描绘了在编程操作期间图2的锁存器中的示例值,与图11h的步骤1142和图11k的步骤1182一致。

图19描绘了连接到选定用于编程的字线的一组示例性存储器单元,其中使用八个数据状态。

具体实施方式

本发明描述了用于优化存储器设备中的编程操作以补偿由于块氧化物减薄引起的编程速度变化的装置和技术。

在一些存储器设备中,存储器单元彼此接合,诸如在块或子块中的nand串中。每个nand串包括:一个或多个漏极端选择栅极晶体管(称为sgd晶体管)之间串联连接的多个存储器单元,其位于nand串的连接到位线的漏极端上;以及一个或多个源极端选择栅极晶体管(称为sgs晶体管),其位于nand串或其他存储器串或连接的存储器单元组的连接到源极线的源极端上。此外,存储器单元可以布置有用作控制栅极的公共控制栅极线(例如,字线)。一组字线从块的源极侧延伸到块的漏极侧。存储器单元可以其他类型的串连接,并且也可以其他方式连接。

在3d存储器结构中,存储器单元可被布置以叠堆的垂直nand串,其中该叠堆包括交替的导电层和介电层。导电层用作连接到存储器单元的字线。每个nand串可具有与字线相交以形成存储器单元的柱的形状。

存储器单元可包括有资格存储用户数据的数据存储器单元,以及没有资格存储用户数据的虚设存储器单元或非数据存储器单元。虚设存储器单元可以具有与数据存储器单元相同的结构,但控制器认为该存储器单元无资格存储包括用户数据的任何类型的数据。虚设字线连接到虚设存储器单元。可以在一串存储器单元的漏极端和/或源极端处提供一个或多个虚设存储器单元,以提供沟道电压梯度的逐渐过渡。

在一些3d存储器结构中,存储器单元被布置在堆叠中的垂直nand串(或其他组连接的存储器单元)中,其中该堆叠包括交替的导电层和电介质层。在该结构中,导电层用作连接到存储器单元的字线。另外,存储器单元可以由在堆叠中延伸的阻挡氧化物、电荷俘获材料、隧道氧化物和沟道多晶硅的环形层形成。这些层可以同心地布置。每个nand串可具有与字线相交以形成存储器单元的柱的形状。

每个存储器单元可根据程序命令中的写入数据与数据状态相关联。基于该存储器单元的数据状态,存储器单元将保持在擦除状态或被编程为编程数据状态。例如,在每单元单个位的存储器设备(也被称为slc或单级单元)中,存在两种数据状态,包括擦除状态和编程状态。mlc或多级单元对于每个单元存储两个或更多个位,作为多位存储器单元。例如,在每单元两位的存储器设备中,存在四种数据状态,包括擦除状态和三种更高的数据状态,该三种更高的数据状态被称为a、b和c数据状态。在每单元三位存储器设备中,存在八种数据状态,这些数据状态包括擦除状态和七种更高的数据状态,称为a-g数据状态(参见图9b)。在每单元四位的存储器设备中,存在十六种数据状态,包括擦除状态(s0)和十五种更高的数据状态(s0-s15)。

编程操作可包括使用一组增加编程电压或脉冲,在一个或多个编程遍次中的相应的编程循环或编程-验证迭代中将该一组增加编程电压或脉冲施加到字线,诸如图10a中所描绘的那样。

在一些情况下,可在每个编程电压之后执行验证测试以确定存储器单元是否已完成编程。验证测试可涉及将分配数据状态的验证电压施加到选定字线,同时感测电路确定连接到字线的单元是处于导电状态还是非导电状态。如同在读取操作期间,未选定的字线的电压被设定到读取通过电压,该读取通过电压足够高以至将未选定的存储器单元置于强导电状态以避免干扰选定的存储器单元的感测。如果存储器单元处于非导电状态,则存储器单元的vth超过控制栅极电压,并且存储器单元已经达到分配的数据状态。因此完成了对存储器单元的编程,并且可将该存储器单元锁定以免进一步编程,同时在后续的编程循环中继续对其他存储器单元进行编程。

在对存储器单元进行编程之后,可以在读取操作中读回数据。读取操作可涉及将一系列读取电压施加到字线,同时感测电路确定连接到字线的单元是处于导电状态还是非导电状态。如果存储器单元处于非导电状态,则存储器单元的vth超过读取电压。该读取电压被设定为处于预期在相邻数据状态的阈值电压电平之间的电平。在读取操作期间,未选定的字线的电压被设定为读取通过电压,该读取通过电压足够高以至将未选定的存储器单元置于强导电状态以避免干扰对选定的存储器单元的感测。

然而,不同存储器孔的存储器单元的编程速度可以基于其与块的边缘的距离而变化,其中引入蚀刻剂以在沉积字线的金属之前移除字线的牺牲材料。参见图14d。具体地讲,除了移除牺牲材料之外,蚀刻剂还移除存储器单元的阻挡氧化物层663、663a、663b和663c中的一些。此外,最靠近块的边缘的阻挡氧化物层接受最多蚀刻并且变得最薄。较薄的阻挡氧化物层导致较快的编程速度,因为栅极至沟道距离有所减小。利用给定的栅极至沟道电压,诸如在编程操作中,当栅极至沟道距离较小时,电场强度较大。因此,可包含二氧化硅(sio2)的阻挡氧化物层的厚度th(图14c和图16c)基于其与引入蚀刻剂的块的最近边缘的距离针对存储器孔而变化。

本文提供的技术解决了上述及其他问题。在一个具体实施中,基于所测量的编程速度来优化编程参数,诸如初始编程电压,该编程速度又是阻挡氧化物层的厚度的函数。可以针对块的不同子块以及针对子块内的不同字线或字线组来优化编程参数。在一种方法中,执行测试以确定不同子块和子块内的字线组的编程速度。表基于测试用偏移电压进行填充。参见图11c至图11e。在编程操作期间,从子块的选定字线采集指示编程速度的编程电压。这可以是达到编程里程碑的编程循环中的编程电压,如结合图9c的解释所述。对于稍后编程的子块,适当的偏移从表中定位并且与采集的编程电压求和,以确定用于对连接到下一个编程子块中的选定字线的存储器单元进行编程的最佳初始编程电压。参见图15a和图17a,其中实心正方形表示采集的编程电压,空心正方形表示基于采集的编程电压从表中获得的初始编程电压。通过优化初始编程电压,可以用最佳编程时间和最佳vth分布宽度来完成编程操作。

相比之下,在没有优化的情况下,初始编程电压可能过高(在这种情况下,存储器单元可能被过度编程),或者可能过低(在这种情况下,由于使用附加且不必要的编程循环,编程时间变得过高)。

在另一个具体实施中,在两个子块(诸如中央子块和边缘子块)的编程操作期间测量或采集编程速度,并且通过在采集的编程速度之间进行插值来确定中央子块和边缘子块之间的中间子块的优化初始编程电压。例如,参见图14a中的中央子块1413、边缘子块1410和1416以及中间子块1411、1412、1414和1415,以及图16a中的中央子块1613和1614、边缘子块1610和1617以及中间子块1611、1612、1615和1616。还可参见图13a、图15b和图17b的示例。在图15b和图17b中,实心正方形表示采集的编程电压,并且空心正方形表示通过在采集的编程电压之间进行插值而获得的初始编程电压。

编程速度可以从中央子块和边缘子块采集,因为它们分别具有最低编程速度和最高编程速度,并且因此为块的子块提供编程速度范围的边界值。该具体实施可以涉及编程,其中具有最低编程速度的一个或多个子块首先被编程,接着具有最高编程速度的一个或多个子块被编程,并且随后具有中间编程速度(在最低编程速度和最高编程速度之间)的子块被编程。在对具有最低编程速度的一个或多个子块进行编程之后,可以按照其编程速度的相反顺序对子块进行编程,例如,首先对具有最高编程速度的子块进行编程,然后再对具有连续较低编程速度的子块进行编程。

该方法的优点在于,如果块的编程被中断并且编程速度数据被覆盖,则可以在尚未编程的子块中利用具有最高编程速度的子块恢复块的编程。具体地讲,当编程恢复时,编程速度可以是新采集的,并且用于为具有连续较低编程速度的剩余子块设置初始编程电压。参见图13b和图13c的示例。该方法避免了过度编程,因为对于具有相对高编程速度的子块而言,优化的初始编程电压将相对较低。当该相对低的初始编程电压用于具有较低编程速度的下一个子块时,过编程的风险将很小。将存在一些不必要的编程循环的风险,这会增加编程时间,但优于过度编程,因为只有较小的性能损失,而不是增加读取错误的风险。

在另一个具体实施中,在选定单个子块的编程操作期间采集编程速度,该单个子块可以是中央子块、边缘子块或任何其他子块。为选定子块的两行存储器单元(诸如子块的两个相对边缘行)采集编程速度。参见例如图14b和图16b以及行r1和行r4。通过基于剩余块相对于选定子块的位置或其在块内的位置将采集的编程速度外推到剩余块,可确定剩余子块(选定子块除外)的优化初始编程电压。参见图13c、图15c和图17c的示例。在图15c和图17c中,实心正方形表示从行采集的编程电压,并且空心正方形表示通过外推采集的编程电压所获得的初始编程电压。该方法有利地可以针对单个子块(而不是两个子块)使用编程速度采集模式,从而减少编程时间,因为编程速度采集模式使用比正常编程模式更多的编程循环。

这些和其他特征将在下文进一步讨论。

图1是示例存储器设备的框图。存储器设备100,诸如非易失性存储系统,可包括一个或多个存储器管芯108。存储器管芯108包括存储器单元的存储器结构126,诸如存储器单元的阵列、控制电路110和读/写电路128。存储器结构126能够经由行解码器124通过字线寻址,并且能够经由列解码器132通过位线寻址。读/写电路128包括多个感测块51、52、…、53(感测电路)并允许并行读取或编程存储器单元的页。通常,控制器122包括在与一个或多个存储器管芯108相同的存储器设备100(例如,可移动存储卡)中。控制器可与存储器管芯分开。命令和数据经由数据总线120在主机140和控制器122之间传输,并且经由线125在控制器和一个或多个存储器管芯108之间传输。

存储器结构可以为2d存储器结构或3d存储器结构。存储器结构可包括一个或多个存储器单元阵列,该一个或多个存储器单元阵列包括3d阵列。存储器结构可包括单体3d存储器结构,其中多个存储器级形成在单个基板(诸如晶圆)上方(而不是在其中),没有中间基板。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅基板上方的有源区域的存储器单元阵列的一个或多个物理级中单片地形成。存储器结构可在非易失性存储器设备中,该非易失性存储器设备具有与存储器单元的操作相关联的电路,无论相关联的电路是在基板上方还是在基板内。

控制电路110与读/写电路128协作以在存储器结构126上执行存储器操作,并且包括状态机112、片上地址解码器114、功率控制模块116(功率控制电路)、用于电压偏移表117的存储位置、用于采集的编程速度数据118的存储位置以及用于优化的初始编程电压(vpgm)数据119的存储位置。状态机112提供存储器操作的芯片级控制。可提供存储区113,例如,用于操作参数和软件/代码。在一个实施方案中,状态机由软件编程。在其他实施方案中,状态机不使用软件并且完全以硬件(例如,电气电路)实现。

片上地址解码器114提供主机或存储器控制器所使用的硬件地址与解码器124和132所使用的硬件地址之间的地址接口。功率控制模块116控制在存储器操作期间提供给字线、选择栅极线、位线和源极线的功率和电压。该功率控制模块可包括用于字线、sgs和sgd晶体管和源极线的驱动器。还可参见图3。在一种方法中,感测块可包括位线驱动器。电压偏移表117的存储位置可包括诸如图11c至图11e中针对一个或多个块所示的数据,并且可以是非易失性存储介质,诸如rom熔丝。

所获采集的编程速度数据118的存储位置可包括诸如图15a中的vpgm_acq_sb0、图15b中的vpgm_acq_sb0和vpgm_acq_sb1、图15c中的vpgm_acq_sb0_r1和vpgm_acq_sb0_r4、图17a中的vpgm_acq_sb0、图17b中的vpgm_acq_sb0和vpgm_acq_sb2以及图17c中的vpgm_acq_sb0_r1和vpgm_acq_sb0_r4的值。该存储位置可以是易失性存储介质,诸如ram或dram。

优化的初始vpgm数据119的存储位置可包括数据,诸如图15a中的vpgm_init_sb1-vpgm_init_sb6、图15b中的vpgm_init_sb2-vpgm_init_sb6、图15c中的vpgm_init_sb1-vpgm_init_sb6、图17a中的vpgm_init_sb1-vpgm_init_sb7、图17b中的vpgm_init_sb1和vpgm_init_sb3-vpgm_init_sb7和图17c中的vpgm_init_sb1-vpgm_init_sb7。该存储位置可以是易失性存储介质。

在一些具体实施中,可组合部件中的一些部件。在各种设计中,除存储器结构126之外的部件中的一个或多个部件(单独或组合)可被认为是至少一个控制电路,该至少一个控制电路被配置为执行本文所述的技术,包括本文所述的过程的步骤。控制电路被配置为通过将一个或多个编程脉冲施加到选定字线来对存储器单元进行编程,并且在编程脉冲期间施加编程禁止位线电压和编程使能位线电压。

例如,控制电路(诸如编程电路)可包括控制电路110、状态机112、解码器114和132、功率控制模块116、感测块51、52…53、读/写电路128、控制器122等中的任何一者或者其组合。

片外控制器122(在一个实施方案中是电路)可包括处理器122c、存储设备(存储器)诸如rom122a和ram122b、以及纠错码(ecc)引擎245。ecc引擎可以纠正许多读取错误。

控制器122或控制电路110可被配置有用于实现本文所述的过程的硬件、固件和/或软件。

还可以提供存储器接口122d。与rom、ram和处理器通信的存储器接口是提供控制器与存储器管芯之间的电接口的电路。例如,存储器接口可以改变信号的格式或定时、提供缓冲区、隔离电涌,锁存i/o等。处理器可以经由存储器接口122d向控制电路110(或存储器管芯的任何其他部件)发出命令。

存储设备包括代码诸如一组指令,并且处理器可以操作以执行该组指令从而提供本文所述的功能。另选地或除此之外,处理器可从存储器结构的存储设备126a访问代码,诸如一个或多个字线中的存储器单元的保留区域。

例如,控制器可使用代码来访问存储器结构,诸如用于编程操作、读取操作和擦除操作。代码可包括引导代码和控制代码(例如,一组指令)。引导代码是在引导或启动过程中初始化控制器并使控制器能够访问存储器结构的软件。控制器可使用代码来控制一个或多个存储器结构。在上电时,处理器122c从rom122a或存储设备126a取出引导代码以供执行,并且引导代码初始化系统部件并将控制代码加载到ram122b中。一旦控制代码被加载到ram中,便由处理器执行。控制代码包括执行基本任务的驱动器,基本任务为诸如控制和分配存储器、对指令的处理区分优先次序,以及控制输入和输出端口。

一般来讲,控制代码可包括执行本文所述功能的指令,包括下文进一步讨论的流程图的步骤,并且提供电压波形,包括下文进一步讨论的那些。控制电路可以被配置为执行用于执行本文所述的功能的指令。

在一个实施方案中,主机是计算设备(例如,膝上型计算机、台式计算机、智能电话、平板电脑、数字相机),其包括一个或多个处理器、一个或多个处理器可读存储设备(ram、rom、闪存存储器、硬盘驱动器、固态存储器),该一个或多个处理器可读存储设备存储用于对一个或多个处理器进行编程以执行本文所述方法的处理器可读代码(例如,软件)。主机还可包括附加系统存储器、一个或多个输入/输出接口和/或与一个或多个处理器通信的一个或多个输入/输出设备。

除nand闪存存储器之外,还可以使用其他类型的非易失性存储器。

半导体存储器设备包括易失性存储器设备,诸如动态随机存取存储器(“dram”)或静态随机存取存储器(“sram”)设备,非易失性存储器设备,诸如电阻式随机存取存储器(“reram”)、电可擦除可编程只读存储器(“eeprom”)、闪存存储器(也可以视为eeprom的子组)、铁电随机存取存储器(“fram”)和磁阻随机存取存储器(“mram”),以及能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的配置。例如,闪存存储器设备可以nand配置或nor配置进行配置。

该存储器设备可由无源元件和/或有源元件以任何组合形成。以非限制性示例的方式,无源半导体存储器元件包括reram设备元件,在一些实施方案中,reram设备元件包括电阻率切换存储元件,诸如反熔丝或相变材料,以及可选的转向元件,诸如二极管或晶体管。此外,以非限制性示例的方式,有源半导体存储器元件包括eeprom和闪存存储器设备元件,在一些实施方案中,该闪存存储器设备元件包括包含电荷存储区的元件,诸如浮栅、导电性纳米颗粒或电荷存储介电材料。

多个存储器元件可被配置为使得它们串联连接或者使得每个元件可被单独访问。以非限制性示例的方式,nand配置中的闪存存储器设备(nand存储器)通常包含串联连接的存储器元件。nand串是包括存储器单元和sg晶体管的一组串联连接的晶体管的示例。

nand存储器阵列可被配置为使得该阵列由存储器的多个串构成,其中串由共享单个位线并作为组被访问的多个存储器元件构成。另选地,可配置存储器元件,使得每个元件可被单独访问,例如nor存储器阵列。nand存储器配置和nor存储器配置为示例,并且可以其他方式配置存储器元件。

位于基板之内以及/或者之上的半导体存储器元件可被布置成二维或三维,诸如2d存储器结构或3d存储器结构。在2d存储器结构中,半导体存储器元件被布置在单个平面或单个存储器设备级中。通常,在2d存储器结构中,存储器元件被布置在平面中(例如,在x-y方向平面中),该平面基本上平行于支承存储器元件的基板的主表面延伸。基板可以是存储器元件的层在其之上或之中形成的晶圆,或者其可以是在存储器元件形成后附接到其的承载基板。作为非限制性示例,基板可包括半导体,诸如硅。

存储器元件可被布置在处于有序阵列中(诸如在多个行和/或列中)的单个存储器设备级中。然而,存储器元件可以非常规配置或非正交配置排列。存储器元件可各自具有两个或更多个电极或接触线,诸如位线和字线。

布置3d存储器阵列,使得存储器元件占据多个平面或多个存储器设备级,从而形成三维结构(即,在x、y和z方向上,其中z方向基本上垂直于基板的主表面,并且x和y方向基本上平行于基板的主表面)。

作为非限制性示例,3d存储器结构可被垂直地布置为多个2d存储器设备级的堆叠。作为另一个非限制性示例,3d存储器阵列可被布置为多个垂直的列(例如,基本上垂直于基板的主表面即在y方向上延伸的列),其中每列具有多个存储器元件。这些列可以例如在x-y平面中以2d配置布置,从而导致存储器元件的3d布置,其中元件位于多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可以构成3d存储器阵列。

以非限制性示例的方式,在3dnand存储器阵列中,存储器元件可耦合在一起以在单个水平(例如,x-y)存储器设备级内形成nand串。另选地,存储器元件可耦接在一起以形成横贯多个水平存储器设备级的垂直nand串。可以设想其他3d配置,其中一些nand串包含单个存储器级中的存储器元件,而其他串则包含跨越多个存储器级的存储器元件。3d存储器阵列还可以被设计为处于nor配置和处于reram配置。

通常,在单体3d存储器阵列中,在单个基板上方形成一个或多个存储器设备级。可选地,单体3d存储器阵列还可以具有至少部分地位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可包括半导体,诸如硅。在单体3d阵列中,构成阵列的每个存储器设备级的层通常形成在阵列的下层存储器设备级的层上。然而,单体3d存储器阵列的相邻存储器设备级的层可以在存储器设备级之间共享或者在存储器设备级之间具有中间层。

2d阵列可以单独形成,并且然后封装在一起以形成具有多层存储器的非单体存储器设备。例如,非单片的堆叠存储器可通过在单独的基板上形成存储器级并且然后将存储器级堆叠在彼此之上而构造。在堆叠之前可以将基板减薄或从存储器设备级移除,但由于存储器设备级最初形成在单独的基板之上,因此所得的存储器阵列不是单体3d存储器阵列。此外,多个2d存储器阵列或3d存储器阵列(单体或非单体)可以形成在单独的芯片上,并且然后封装在一起以形成堆叠芯片存储器设备。

通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可与存储器元件位于同一基板上和/或位于单独的基板上。例如,用于存储器读取-写入操作的控制器可定位在单独的控制器芯片上和/或定位在与存储器元件相同的基板上。

本领域的技术人员将认识到,该技术不限于所描述的2d示例性结构和3d示例性结构,而是涵盖如本文所述并且如本领域的技术人员所理解的技术的实质和范围内的所有相关存储器结构。

图2是描绘图1的感测块51的一个实施方案的框图。单独感测块51被划分为称为感测电路60-63或感测放大器的一个或多个核心部分以及称为管理电路190的公共部分。在一个实施方案中,将存在用于每个位线/nand串的单独感测电路和用于一组多个(例如,四个或八个)感测电路的一个公共管理电路190。组中的每个感测电路经由数据总线172与相关联的管理电路通信。因此,存在与一组存储元件(存储器单元)的感测电路通信的一个或多个管理电路。

作为示例,感测电路60包括感测电路170,该感测电路通过确定已连接位线中的传导电流是高于还是低于预定阈值电平来执行感测。感测可以在读取或验证操作中发生。在编程操作中施加编程电压期间,感测电路还供应位线电压。

感测电路可以包括vbl选择器173、感测节点171、比较电路175和跳闸锁存器174。在施加编程电压期间,vbl选择器173可以将编程禁止电压vbl_inh(例如,2v)传输到与被禁止编程的存储器单元连接的位线,或者将编程使能电压(例如,0v)传输到与当前编程循环中编程的存储器单元连接的位线。通过将晶体管的控制栅极电压设置得足够高(例如,高于从vbl选择器传输的vbl),晶体管55(例如,nmos)可被配置作为传输来自vbl选择器173的vbl的传输栅极。例如,选择器56可以将电源电压vdd(例如3v-4v)传输到晶体管55的控制栅极。

在诸如读取的感测操作和验证操作期间,晶体管55基于选择器56传输的电压来设置位线电压。位线电压大致等于晶体管的控制栅极电压减去其vth(例如,1v)。例如,如果由选择器56传输vbl+vth,则位线电压将为vbl。这假设源极线为0v。晶体管55根据控制栅极电压钳位位线电压并且作为源极跟随器而不是传输栅极。vbl选择器173可以传输诸如vdd的相对较高电压,其高于晶体管55上的控制栅极电压以提供源极跟随器模式。在感测期间,晶体管55因此对位线充电。

在一种方法中,每个感测电路的选择器56可以与其他感测电路的选择器分开控制,以传输vbl或vdd。每个感测电路的vbl选择器173也可以与其他感测电路的vbl选择器分开控制。

在感测期间,感测节点171被充电直到初始电压,诸如vsense_init=3v。然后,感测节点经由晶体管55连接到位线,并且感测节点的衰减量用于确定存储器单元是处于导电状态还是非导电状态。比较电路175用于在感测时将感测节点电压与跳闸电压进行比较。如果感测节点电压衰减到低于跳闸电压vtrip,则存储器单元处于导电状态并且其vth等于或低于验证信号的电压。如果感测节点电压未衰减到低于vtrip,则存储器单元处于非导电状态并且其vth高于验证信号的电压。感测电路60包括由比较电路175基于存储器单元是处于导电状态还是非导电状态而设置的跳闸锁存器174。跳闸锁存器中的数据可以是由处理器192读取的位。

管理电路190包括处理器192、四组示例性数据锁存器194-197、以及联接在数据锁存器组194与数据总线120之间的i/o接口196。可以为每个感测电路提供一组数据锁存器,例如,包括单独锁存器ldl、mdl和udl。在一些情况下,可以使用附加的数据锁存器。ldl为下页数据存储一个位,mdl为下页数据存储一个位,并且udl为上页数据存储一个位。这是在每个存储器单元八级或三位的存储器设备中。

处理器192执行计算,诸如确定存储在已感测的存储器单元中的数据以及将所确定的数据存储在该组数据锁存器中。每组数据锁存器194-197用于在读取操作期间存储由处理器192确定的数据位,并且在编程操作期间存储从数据总线120导入的数据位,这些数据位表示要编程到存储器中的写入数据。i/o接口196提供数据锁存器194-197和数据总线120之间的接口。

在读取期间,系统的操作处于状态机112的控制之下,该状态机控制向寻址的存储器单元提供不同的控制栅极电压。当它逐步通过与存储器支持的各种存储器状态相对应的各种预定义控制栅极电压时,感测电路可以在这些电压中的一个电压处跳闸,并且对应输出将经由数据总线172从感测电路提供给处理器192。此时,处理器192通过考虑感测电路的跳闸事件和关于来自状态机的经由输入线193施加的控制栅极电压的信息来确定所得的存储器状态。然后,它计算存储器状态的二进制编码,并将得到的数据位存储到数据锁存器194-197中。

一些具体实施可包括多个处理器192。在一个实施方案中,每个处理器192将包括输出线(未示出),使得每个输出线被线或在一起。在一些实施方案中,输出线在连接到线或线之前被反转。该配置使得能够在编程验证测试期间快速确定编程过程何时完成,因为接收线或的状态机可以确定何时所有被编程的位达到了期望的水平。例如,当每个位达到其所需电平时,该位的逻辑零将被发送到线或线(或数据一被反转)。当所有位输出数据0(或数据一被反转)时,状态机知道终止编程过程。因为每个处理器与八个感测电路通信,所以状态机需要读取线或线八次,或者将逻辑添加到处理器192以累积相关位线的结果,使得状态机只需要读取一次线或线。类似地,通过正确选择逻辑电平,全局状态机可以检测第一位何时改变其状态并相应地改变算法。

在存储器单元的编程或验证操作期间,待编程的数据(写入数据)从数据总线120存储在该组数据锁存器194-197中,在每个存储器单元三位的具体实施中存储在ldl、mdl和udl锁存器中。

在状态机的控制下,编程操作将一组编程电压脉冲施加到所寻址的存储器单元的控制栅极。每个电压脉冲的幅值可以在处理中从先前编程脉冲逐步增加一个步长,该处理被称为增量步进脉冲编程。每个编程电压之后是验证操作以确定存储器单元是否已被编程到所需的存储器状态。在一些情况下,处理器192监控相对于所需存储器状态的读回存储器状态。当两者一致时,处理器192将位线设置为编程禁止模式,诸如通过更新其锁存器。即使将附加的编程脉冲施加到其控制栅极,这也禁止耦接到位线的存储器单元进一步编程。

每组数据锁存器194-197可被实现为每个感测电路的数据锁存器的堆叠。在一个实施方案中,每个感测电路60有三个数据锁存器。在一些具体实施中,数据锁存器被实现为移位寄存器,使得存储在其中的并行数据被转换为数据总线120的串行数据,反之亦然。对应于存储器单元的读/写块的所有数据锁存器可以连接在一起以形成块移位寄存器,从而可以通过串行传输输入或输出数据块。具体地讲,读/写电路模块组被调整,使得其数据锁存器组将数据按顺序移入或移出数据总线,就如它们是整个读/写块的移位寄存器的一部分一样。

数据锁存器指示相关存储器单元何时达到编程操作的某些里程碑。例如,锁存器可识别存储器单元的vth低于特定验证电压。数据锁存器指示存储器单元当前是否存储来自一页数据的一个或多个位。例如,ldl锁存器可以用于存储下页数据。当下页位存储在相关联的存储器单元中时,ldl锁存器被翻转(例如,从0到1)。当中间或上页位分别存储在相关联的存储器单元中时,mdl或udl锁存器被翻转。这在相关联的存储器单元完成编程时发生。

图3描绘了图1的用于将电压提供给存储器单元的块的功率控制模块116的示例具体实施。在该示例中,存储器结构126包括四个相关块blk_0至blk_3的组410,以及四个相关块blk_4至blk_7的另一组411。块可以在一个或多个平面中。图1的行解码器124经由传输晶体管422向字线和每个块的选择栅极提供电压。行解码器向传输晶体管提供控制信号,该传输晶体管将块连接到行解码器。在一种方法中,每组块的传输晶体管由公共控制栅极电压控制。因此,一组块的传输晶体管在给定时间全部导通或截止。如果传输晶体管导通(导电),则来自行解码器的电压被提供给相应的控制栅极线或字线。如果传输晶体管截止(不导电),则行解码器与相应的控制栅极线或字线断开,使得电压在相应的控制栅极线或字线上浮动。

例如,控制栅极线412连接到传输晶体管组413、414、415和416,其进而分别连接到控制栅极线blk_4、blk_5、blk_6和blk_7。控制栅极线417连接到传输晶体管组418、419、420和421,其进而分别连接到控制栅极线blk_0、blk_1、blk_2和blk_3。

通常,一次在一个选定块上以及在块的一个选定子块上执行编程或读取操作。可以在选定块或子块上执行擦除操作。行解码器可将全局控制线402连接到本地控制线403。控制线表示导电路径。在许多电压驱动器的全局控制线上提供电压。一些电压驱动器可以向连接到全局控制线的开关450提供电压。控制传输晶体管424以将电压从电压驱动器传递到开关450。

电压驱动器可以包括:选定数据字线(wl)驱动器447,其在编程或读取操作期间在选择的数据字线上提供电压;未选定数据字线的驱动器448;以及虚设字线的驱动器449(例如,图5a中分别为wldd0、wldd1、wlds1和wlds0)。

电压驱动器还可以包括用于块的sgs驱动器445,以及分别用于子块790、791、792和793的单独sgd驱动器446、446a、446b和446c(诸如图7、图8a和图8b中所示)。在其他示例中,具有七个或八个子块的图14a和16a的块将分别具有七个或八个sgd驱动器。

此外,在一些情况下,在每个nand串中可存在多个sgd晶体管、多个sgs晶体管、多个漏极侧虚设存储器单元和/或多个源极侧虚设存储器单元。在一种方法中,为了在利用编程电压或其他字线特定参数对这些存储器单元和晶体管进行编程中提供最大灵活性,可存在用于nand串中的每个选择栅极晶体管和虚设存储器单元的单独驱动器。

包括行解码器的各种部件可以从控制器诸如状态机112或控制器122处接收命令,以执行本文描述的功能。

在一种方法中,阱区433对于块是公共的并且可以由电压驱动器430经由路径432驱动。块也共享一组位线442。位线电压驱动器440向位线提供电压。在诸如图4至图8b中示出的堆叠存储器设备中,多组连接的存储器单元可以被布置在nand串中,该nand串从基板垂直向上延伸。在一种方法中,每个nand串的底部(或源极端)与阱区接触,并且每个nand串的顶端(或漏极端)连接到相应的位线。

图4是存储器设备500的透视图,该存储器设备500包括图1的存储器结构126的示例3d配置中的一组块。在基板501上的是存储器单元的示例性块blk0、blk1、blk2和blk3,以及具有由块使用的电路的外围区域。外围区域504沿每个块的边缘延伸,而外围区域505位于该组块的端部。该电路可以包括电压驱动器,该电压驱动器可以连接到块的控制栅极层、位线和源极线。在一种方法中,块中处于共同高度的控制栅极层被共同驱动。基板501还可以承载块下方的电路,以及一个或多个下部金属层,该一个或多个下部金属层在导电路径中被图案化以承载电路的信号。这些块形成在存储器设备的中间区域502中。在存储器设备的上部区域503中,一个或多个上部金属层在导电路径中被图案化以承载电路的信号。每个块包括存储器单元的堆叠区域,其中堆叠的交替层表示字线。在一种可能的方法中,每个块具有相对的分层侧,垂直触点从该分层侧向上延伸至上部金属层,以形成与导电路径的连接。虽然描绘了四个块作为示例,但是可以使用在x方向和/或y方向上延伸的两个或更多个块。

在一种可能的方法中,这些块在平面中,并且在x方向上的平面的长度表示到字线的信号路径在一个或多个上部金属层中延伸的方向(字线或sgd线方向),以及在y方向上的平面的宽度表示到位线的信号路径在一个或多个上部金属层中延伸的方向(位线方向)。z方向表示存储器设备的高度。这些块也可以布置在多个平面中。

图5a描绘了图4的块blk0的一部分的示例性剖视图。该块包括交替的导电层和电介质层的堆叠610。在该示例中,导电层包括两个sgd层、一个sgs层、两个源极侧虚设字线层(或字线)wlds1和wlds0、两个漏极侧虚设字线层wldd1和wldd0、以及十一个数据字线层(或数据字线)wll0-wll10。wll0是源极侧数据字线,并且wlds1是与源极侧数据字线相邻的虚设字线层。wlds0是与wlds1相邻的另一个虚设字线层。wll10是漏极侧数据字线,并且wldd1是与漏极侧数据字线相邻的虚设字线层。wldd0是与wldd1相邻的另一个虚设字线层。介电层被标记为dl1-1l19。此外,描绘了包括nand串700n和710n的堆叠的区。每个nand串包含存储器孔618或存储器孔619,该存储器孔填充有形成与字线相邻的存储器单元的材料。在图6中更详细地示出了堆叠的区622。

该堆叠包括基板611。在一种方法中,源极线sl的一部分包括阱区611a作为基板中的n型源极扩散层或阱。阱区与块中的每串存储器单元的源极端接触。擦除脉冲可以在擦除操作中施加到该层。在一个可能的具体实施中,n型阱区611a形成在p型阱区611b中,该p型阱区继而又形成在n型阱区611c中,该n型阱区继而又形成在p型半导体基板611d中。在一种方法中,n型源极扩散层可以由平面中的所有块共享。

nand串700n在堆叠616的底部616b处具有源极端613,并且在堆叠的顶部616a处具有漏极端615。金属填充的狭缝617和620可以跨堆叠周期性地提供,作为延伸穿过堆叠的互连,诸如以将源极线连接到堆叠上方的线。狭缝可以在形成字线期间使用,并且随后用金属填充。还描绘了位线bl0的一部分。导电通孔621将漏极端615连接到bl0。

在一种方法中,存储器单元的块包括交替的控制栅极和介电层的堆叠,并且存储器单元布置在堆叠中的垂直延伸的存储器空穴中。

在一种方法中,每个块包括梯形边缘,其中垂直互连连接到每个层,包括sgs、wl和sgd层,并且向上延伸到到电压驱动器的水平路径。

还示出了存储器孔的直径dmh。有关进一步详细信息,参见图5c。

图5b描绘了blk0中的示例性晶体管650。晶体管包括控制栅极cg、漏极d、源极s和沟道ch,并且例如可以表示存储器单元或选择栅极晶体管。

图5c描绘了图5a的堆叠中的存储器孔直径的图。竖直轴线描绘了存储器孔和由存储器孔中的材料形成的柱的直径dmh。在此类存储器设备中,蚀刻穿过堆叠的存储器孔具有非常高的纵横比。例如,约25至30的深度与直径之比是常见的。存储器孔可具有圆形剖面。由于蚀刻工艺,存储器孔和所得的柱宽度可沿孔的长度变化。通常,存储器孔的直径从其顶部到底部逐渐变小(图550)。也就是说,存储器孔为锥形的,在堆叠的底部变窄。在一些情况下,在选择栅极附近的孔的顶部处略微变窄,使得存储器孔的直径在从其顶部到底部逐渐变小之前略微变宽(图551)。

由于存储器孔和柱的直径的不均匀性,存储器单元的编程和擦除速度可基于它们沿存储器孔的位置而变化。对于相对较小直径部分的存储器孔,跨隧道氧化物的电场相对较强,使得编程和擦除速度较高。该变化是除由阻挡氧化物层的不同厚度引起的变化之外的变化。

在由图552表示的另一种可能的具体实施中,堆叠被制造成两层。该叠堆可以被制造为两个或更多个层。底层最先形成有相应的存储器孔。然后,顶层形成有相应的存储器孔,该存储器孔与底层中的存储器孔对准。每个存储器孔为锥形的,使得形成双锥形存储器孔,其中宽度增加,然后再次减小和增加,从叠堆的底部移动到顶部。

编程速度因存储器孔直径的变化而发生变化,使得沿着nand串的高度存在编程速度变化。存储器单元可以按照图11c至图11e所描绘的进行分组,其中存储器孔直径针对一组相邻存储器单元在相对较小的范围内变化,并且存储器孔直径跨不同组的相邻存储器单元在相对较大的范围内变化。预期一个子块中的组内的存储器单元具有类似的编程速度,并且因此可具有相同的优化初始编程电压或其他编程参数。预期一个子块中不同组中的存储器单元具有不同的编程速度,并且因此可具有不同的优化初始编程电压或其他编程参数。

图6描绘了图5a的堆叠的区622的近距离视图。存储器单元在字线层和存储器孔的交叉处形成在堆叠的不同级。在该示例中,sgd晶体管718和717在虚设存储器单元716和715以及数据存储器单元714上方提供。这些sgd晶体管位于nand串的漏极端。

可以沿着存储器孔630的侧壁(sw)和/或在每个字线层内(例如,使用原子层沉积)沉积多个层。例如,由存储器孔内的材料形成的每个柱685或列可包括阻挡氧化物层663(例如,包括sio2)、电荷俘获层664或膜(例如,包括氮化硅(si3n4)或其他氮化物)、隧道层665(例如,包括栅极氧化物)、沟道660(例如,包括多晶硅)和介电核心666(例如,包括sio2)。字线层可包括金属阻挡层661和导电金属662(诸如钨)作为控制栅极。例如,提供了控制栅极690-694。在该示例中,除了金属之外的所有层都在存储器孔中提供。在其他方法中,层中的一些层可以在控制栅极层中。在不同的存储器孔中类似地形成附加柱。柱可以形成nand串的柱状有源区域(aa)。

每个nand串或每组连接的晶体管包括从一个或多个源极端选择栅极晶体管连续延伸到一个或多个漏极端选择栅极晶体管的沟道。例如,沟道700a、710a、720a和730a分别在nand串700n、710n、720n和730n中连续延伸。沟道700a在nand串700n中从sgs晶体管701连续延伸到sgd晶体管717和718。沟道700a是连续的,因为它是不间断的,并且因此可在nand串中提供连续的导电路径。

当对存储器单元进行编程时,电子存储在与存储器单元相关联的电荷俘获层的一部分中。这些电子从沟道被吸引到电荷俘获层中,并且穿过隧道层。存储器单元的vth与存储的电荷量成比例地增加。在擦除操作期间,电子返回到沟道。

存储器孔中的每个存储器孔可填充有多个环形层,这些环形层包括阻挡氧化物层、电荷俘获层、隧道层和沟道层。存储器孔中的每个存储器孔的核心区填充有主体材料,并且多个环形层位于存储器孔中的每个存储器孔中的核心区和字线之间。

nand串可被认为具有浮体沟道,因为沟道的长度没有形成在基板上。此外,nand串由彼此上下堆叠的多个字线层提供,并且通过介电层彼此分开。

如所提及的,阻挡氧化物层的厚度可跨块变化,如例如结合图14c、图14d和图16c进一步所述。

图7描绘了块blk0中的nand串的示例性视图,其与图4和图5a一致。nand串以3d配置布置在块的子块中。每个子块包括多个nand串,其中描绘了一个示例nand串。例如,子块790、791、792和793分别包括示例nand串700n、710n、720n和730n。nand串具有与图5a一致的数据字线、虚设字线和选择栅极线。每个子块包括一组nand串,该组nand串在x方向上延伸并且具有公共sgd线或控制线层。nand串可以布置在每个子块内的多行中,诸如图14b和图16b所示。可以基于字线编程顺序来进行块的编程。一个选项是在对连接到其他子块中的选定字线的存储器单元进行编程之前,对连接到一个子块中的选定字线的存储器单元进行编程。然后对连接到下一个字线的存储器单元进行编程,一次一个子块。例如,字线编程顺序可从wl0(源极端字线)开始,并且在wll10(漏极端字线)结束。因此,对于每个字线,编程可以一次处理一个字线并且一次一个子块。

nand串700n、710n、720n和730n分别具有沟道700a、710a、720a和730a。

另外,nand串700n包括sgs晶体管701、虚设存储器单元702和703、数据存储器单元704-714、虚设存储器单元715和716以及sgd晶体管717和718。

nand串710n包括sgs晶体管721、虚设存储器单元722和723、数据存储器单元724-734、虚设存储器单元735和736以及sgd晶体管737和738。

nand串720n包括sgs晶体管741、虚设存储器单元742和743、数据存储器单元744-754、虚设存储器单元755和756以及sgd晶体管757和758。

nand串730n包括sgs晶体管761、虚设存储器单元762和763、数据存储器单元764-774、虚设存储器单元775和776以及sgd晶体管777和778。

一个或多个sgd晶体管设置在每个nand串的漏极端,并且一个或多个sgs晶体管设置在每个nand串的源极端。在一种方法中,子块790、791、792和793中的sgd晶体管可以分别由单独的控制线sgd0(0)和sgd1(0)、sgd0(1)和sgd1(1)、sgd0(2)和sgd1(2)以及sgd0(3)和sgd1(3)驱动。在另一种方法中,子块中的所有sgd晶体管被连接并共同驱动。子块790、791、792和793中的sgs晶体管可以相互连接并且被共同驱动。在另一种方法中,sgs晶体管由单独控制线驱动。该示例包括每个块四个子块,而图14a描绘了每个块七个子块,并且图16a描绘了每个块八个子块。

图8a描绘了与图7一致的块blk0中的控制栅极层。控制栅极层被布置在堆叠800中并且包括虚设字线层或控制栅极层wlds0、wlds1、wldd0和wldd1,以及在不同子块790-793之间共享的数据字线层或控制栅极层wll0-wll10。每个控制栅极层可以是矩形板,其具有z方向上的高度、y方向上的宽度和x方向上的长度。

控制栅极层包括用于块的公共sgs控制栅极层,以及用于每个子块的单独sgd控制栅极层。例如,子块790包括sgd0(0)和sgd1(0),子块791包括sgd0(1)和sgd1(1),子块792包括sgd0(2)和sgd1(2),并且子块793包括sgd0(3)和sgd1(3)。每个sgd层可以是矩形板,其具有z方向上的高度、y方向上的宽度和x方向上的长度。sgd板的宽度小于控制栅极层板的宽度。sgd板的长度可以与控制栅极层板的长度相同。sgd板的高度可以与控制栅极层板的高度相同或类似。

另外,在简化的示例中,在每个子块中描绘了四个示例性存储器孔或nand串。在sgd0(0)中描绘了sgd晶体管718、718a、718b和718c,在sgd1(0)中描绘了sgd晶体管717,并且在wldd0中描绘了虚设存储器单元716。在另一个简化示例中,图14b和图16b的子块各自包括24个存储器孔或nand串。

图8b描绘了图7的块blk0的附加细节。描绘了示例存储器单元,该存储器单元在x方向上沿着每个子块中的字线延伸。为简单起见,每个存储器单元被描绘为正方形。子块790、791、792和793分别包括nand串700n-704n、710n-714n、720n-724n和730n-734n。位线连接到nand串的组。例如,位线bl0连接到nand串700n、710n、720n和730n,位线bl1连接到nand串701n、711n、721n和731n,位线bl2连接到nand串702n、712n、722n和732n,位线bl3连接到nand串703n、713n、723n和733n,并且位线bl4连接到nand串704n、714n、724n和734n。感测电路可连接到每个位线。例如,感测电路180-184(例如,类似于图2的感测电路60-63)分别连接到位线bl0-bl4。

可以对一个字线中的选定单元和一次一个子块进行编程和读取。这允许每个选定的单元由相应的位线和/或源极线控制。例如,包括示例性存储器单元714的一组存储器单元连接到子块790中的wll10。这是漏极端数据字线。wll0是源极端数据字线。一组存储器单元可以同时被编程或读取。附加的一组存储器单元连接到其他子块791-793中每一个中的wll10。

在该示例中,以电压vsource驱动源极线sl或源极区(阱区611a)。

每个nand串包括在漏极端的一个或多个sgd晶体管和在源极端的一个或多个sgs晶体管。在这种情况下,每个串有两个sgd晶体管和一个sgs晶体管。如图8a所示,每个sgd晶体管可以连接到单独的控制线层,使得它可以被单独驱动,或者串中的两个或更多个sgd晶体管可以连接并共同驱动它们的控制栅极。

nand串700n包括分别连接到选择栅极线sgd0(0)和sgd1(0)的sgd晶体管788和787、分别连接到wldd0和wldd1的虚设存储器单元786和785以及连接到wll10的数据存储器单元784。nand串700n还包括连接到选择栅极线sgs的sgs晶体管780、分别连接到wlds0和wlds1的虚设存储器单元781和782、以及连接到wll0的数据存储器单元783。nand串701n、702n、703n和704n中的数据存储器单元784a、784b、784c和784d也分别连接到wll10。例如,wll10可以是编程操作中的选定字线,其中存储器单元784-784d是连接到选定字线的选定存储器单元。bl0-bl5是分别连接到nand串700n-704n的相应位线。

图9a描绘了在编程操作开始时的一组存储器单元的阈值电压(vth)分布。存储器单元最初处于由vth分布910表示的擦除(er)状态。在擦除操作中,数据存储器单元从编程数据状态的vth分布(例如,状态a-g)转变到擦除状态。擦除操作可以包括多个擦除-验证循环。在每个循环中,对存储器单元进行偏置以用于擦除,在擦除之后执行擦除-验证测试。擦除-验证测试可以使用施加到字线的擦除验证电压vver。

图9b描绘了一组存储器单元在编程操作之后的vth分布,示出了过度编程的影响。使用电压信号来执行多个编程循环(诸如在图10a中),并且在每个编程脉冲之后通过将验证电压vva-vvg中的一个或多个施加到选定字线来执行验证测试。分配给er状态的存储器单元未被编程并且继续由vth分布910表示。在诸如通过使用如本文所述的最佳初始编程电压来优化编程的情况下,分配给a-g状态(编程状态)的存储器单元分别被编程到vth分布911-917。在编程未优化和过度编程发生的情况下,分配给a-g状态的存储器单元分别被编程到vth分布911a-917a。当发生过度编程时,vth分布的上尾增加到可能导致读取错误的程度。

分别使用验证电压vva、vvb、vvc、vvd、vve、vvf和vvg对编程为a、b、c、d、e、f和g状态的存储器单元进行验证测试。

读取电压vra、vrb、vrc、vrd、vre、vrf和vrg可用于在读取操作中读取这些存储器单元的状态。

图9c描绘了被编程到a状态以确定编程速度的不同子块的存储器单元的vth分布。在该示例中,与图14a一致,存在具有由vth分布920-923表示的四个不同编程速度的七个子块。在执行给定数量的编程循环之后,vth分布923的上尾超过存储器单元的子组(例如,正被编程的存储器单元的1%)的验证电压vva。该vth分布表示具有最高编程速度的子块。分别表示第二最高编程速度、第三最高编程速度和第四最高编程速度的vth分布922、921和920不超过vva。例如,,由vth分布923、922、921和920表示的存储器单元的子组可分别在八个、九个、十个或十一个编程循环之后超过vva。用于对高于指定验证电压(诸如vva)的子块的存储器单元的子组进行编程的编程循环的数量或编程电压可被存储为对存储器单元的编程速度的指示。存储的编程电压被称为采集的编程电压。

使用数据状态的验证测试来确定编程速度是有用的,因为该方法不需要进行会增加编程时间的附加验证测试。然而,可以使用非数据状态的验证电压的电压来执行验证测试,以确定编程速度。例如,这种验证电压可以低于或高于vva。

图10a描绘了在编程操作中使用的示例性电压信号,包括在编程速度采集模式中使用的电压信号1000和在正常编程模式中使用的电压信号1010。垂直轴描绘了电压,并且水平轴描绘了时间或多个编程循环(pl)。编程速度采集模式可以是一种编程操作,其目标是以相对较慢的速度对存储器单元进行编程以获得其编程速度的测量。在编程速度采集模式期间使用的初始编程电压和步长大小可以低于正常编程模式。在一种方法中,相对较慢的速度可以限于编程操作的开始部分。

电压信号1000和1010包括叠加以示出其相对量值的一组编程电压。电压信号1000包括用于采集编程速度的一系列编程脉冲,从pl1中量值为vpgm_init_low的编程脉冲1001开始,并且以pl8中的编程脉冲1003结束。然后,电压信号1000包括以pl9中的编程脉冲1004开始并且以pl22中的编程脉冲1005结束的一系列编程脉冲,这些编程脉冲用于以正常编程速度结束编程操作。虚线1002表示在pl1至pl8中使用的相对较低的步长大小,并且虚线1006表示在pl0至pl22中使用的相对较高的步长大小。

电压信号1010包括一系列编程脉冲,以pl1中的量值为vpgm_init_sb的编程脉冲1011开始,并且以pl17中的编程脉冲1013结束,这些编程脉冲用于正常编程模式。在一种方法中,虚线1012表示相对较高的步长大小,并且可以与虚线1006表示的步长大小相同。

由于电压信号1000包括编程速度采集模式的缓慢编程,因此例如用于完成编程的编程循环的总数(22个编程循环)高于不包括编程速度采集模式并且在17个编程循环中完成的电压信号1010。

电压信号是增量步长脉冲编程的示例,其中编程电压在初始编程循环中被设置为初始电平,然后在每个连续编程循环中阶跃上升。

每个编程循环中的验证信号(包括示例性验证信号1014)可以随着编程操作的进行包括较低分配数据状态,然后是中间分配数据状态,并且然后是较高分配数据状态,如图10b和图10c所示。示例性验证信号描绘了三个验证电压作为简化。验证信号包括在编程循环期间在将编程电压施加到选定字线之后施加到选定字线的信号。验证信号是感测操作的一部分。在施加验证信号期间感测存储器单元以判断其编程进度。验证信号包括用于判断存储器单元是否已完成编程为分配数据状态的一个或多个电压。相对于验证电压感测vth的结果可以用于抑制存储器单元的进一步编程。

可以将被编程或读取的数据布置成页面。例如,对于四个数据状态,或每个单元两位,可以存储两页数据。用于er、a、b和c状态的位的示例编码分别是上页(up)位/下页(lp)位的格式的11、10、00和01。下页读取可以使用vra和vrc,并且上页读取可以使用vrb。

通过八个数据状态或每个单元三位,可以存储三页数据。在图18中提供了a-g状态的位的示例性编码。可以通过使用vra和vre的读取电压读取存储器单元来确定下页的数据。可以通过使用vrb、vrd和vrf的读取电压读取存储器单元来确定中间页的数据。可以通过使用vrc和vrg的读取电压读取存储器单元来确定上页的数据。

图10b描绘了使用电压信号1010在图10a的不同编程循环中不同数据状态的验证的示例。水平轴表示编程循环并且与图10a的水平轴对准。

这些箭头在一些编程循环中重叠,从而可以对编程循环中的多个数据状态执行验证操作。箭头指示对于a、b、c、d、e、f和g状态的验证电压分别应用于编程循环1-5、3-7、5-9、7-11、9-13、11-15和13-17中的验证信号。

图10c描绘了使用电压信号1000在图10a的不同编程循环中不同数据状态的验证的示例。水平轴表示编程循环并且与图10a的水平轴对准。这些箭头在一些编程循环中重叠,从而可以对编程循环中的多个数据状态执行验证操作。箭头指示对于a、b、c、d、e、f和g状态的验证电压分别应用于编程循环1-8、6-10、10-14、13-17、16-20和18-22中的验证信号。

与图10b中的五个编程循环相比,a状态验证发生在八个编程循环中。这是由于在处于编程速度采集模式时所使用的步长减小。存储器单元的vth以相对较小的增量增加,使得可以检测到相对较小的编程速度差异,诸如图9c所示。

在这些示例中,用于验证b-g状态的编程循环的数量在图10b和图10c中是相同的,因为步长大小相同。

如所提及的,使用数据状态的验证测试来确定编程速度是有用的,因为该方法不需要进行会增加编程时间的附加验证测试。此外,使用最低编程数据状态(例如,a状态)的验证测试来确定编程速度是有用的,因为这允许编程操作从编程速度采集模式的相对较慢编程速度转变到正常编程速度,以最小化编程时间损失。

图11a1描绘了示例性编程操作的流程图,其中编程速度从一个或多个子块采集并且用于确定另一个子块的初始编程电压。在步骤1100处,接收命令以执行块的编程操作。步骤1101包括确定块的一个或多个子块的编程速度。步骤1102包括基于采集的编程速度来确定块的另一个子块的初始编程电压(vpgm)。步骤1103包括使用初始vpgm对另一个子块的存储器单元进行编程。

图11a2描绘了用于字线组的图11a1的示例性具体实施的流程图。例如,图11c示出了块可以如何被分成四组字线,即组1至组4。每组中的存储器单元被认为具有类似的编程速度,使得组中的一个字线的存储器单元的采集的编程速度表示该组中的其他字线的存储器单元的编程速度。类似地,被确定为对于组中的一个字线的存储器单元是最佳的初始vpgm或其他编程参数对于该组中的其他字线的存储器单元也是最佳的。

步骤1104涉及选择块的一组字线,诸如组1。继而可选择每个组。步骤1105包括针对一个或多个子块确定该组中选定字线的存储器单元的编程速度。例如,编程速度可以通过sb0中连接至wl0的存储器单元予以确定。步骤1106包括基于采集的编程速度确定初始编程电压(vpgm)。步骤1107a包括使用初始vpgm对一个或多个子块中的组中的剩余字线的存储器单元进行编程。步骤1107b包括使用初始vpgm对块的剩余子块中的组中的所有字线的存储器单元进行编程。因此,一旦从组中的一些存储器单元采集了初始vpgm,就可以将其用于对组中的剩余存储器单元进行编程。决定步骤1108确定是否存在下一组要编程的字线。如果决定步骤为假,则在步骤1109处完成过程。如果决定步骤为真,则在步骤1104处选择下一组。

例如,对于组0,可以为连接到sb0中的wl0的存储器单元确定编程速度,并且可以基于该编程速度确定vpgm_init_group1。然后可使用vpgm_init_group1对连接到sb0中的wl1-wl2的存储器单元以及连接到sb1-sb6中的wl0-wl2的存储器单元进行编程。

随后,对于组2,可针对sb0中连接到wl3的存储器单元确定编程速度,并且可基于该编程速度确定vpgm_init_group2。然后可使用vpgm_init_group2对连接至sb0中的wl4和wl5的存储器单元以及连接至sb1-sb6中的wl3-wl5的存储器单元进行编程。

随后,对于组3,可针对sb0中连接到wl6的存储器单元确定编程速度,并且可基于该编程速度确定vpgm_init_group3。然后可使用vpgm_init_group3对连接至sb0中的wl7和wl8的存储器单元以及连接至sb1-sb6中的wl6-wl8的存储器单元进行编程。

随后,对于组4,可针对sb0中连接到wl9的存储器单元确定编程速度,并且可基于该编程速度确定vpgm_init_group4。然后可使用vpgm_init_group4对sb0中连接至wl10的存储器单元以及sb1-sb6中连接至wl9和wl10的存储器单元进行编程。

需注意,可以基于感测子块的所有行中或子块的一行或多行中的存储器单元来确定连接到子块中的字线的存储器单元的编程速度。还可参见图11i,其涉及基于行的感测。

图11b描绘了图11a1的过程的第一示例性具体实施的流程图,其中访问诸如图11c-图11e中的表以基于选定字线和选定子块来确定子块的优化初始vpgm。该具体实施涉及准备具有与子块和字线或字线组交叉引用的偏移电压的表。例如,该表可基于制造时的编程速度测试来准备。在一种方法中,表可以由存储器设备的多个块共享。或者,每个块可具有单独的表。在步骤1110处,接收命令以对块的选定字线执行编程操作。步骤1111包括在编程速度采集模式下的子块中对连接到选定字线的存储器单元进行编程,并且存储指示编程速度的采集的vpgm。例如,这可以是块的第一编程子块。步骤1112包括访问表以基于选定字线和待编程的下一个子块来确定偏移电压。参见图11c至图11e的示例表。步骤1113包括基于偏移电压和选定字线的采集的vpgm的总和来确定初始vpgm。步骤1114包括使用初始vpgm对连接到下一个子块中的选定字线的存储器单元进行编程。决定步骤1115确定是否存在要编程的下一个子块,例如,用于当前的选定字线。如果决定步骤为假,则在步骤1116处完成过程。如果决定步骤为真,则在步骤1112处再次访问表以确定要编程的下一个子块的偏移电压。

该方法是有用的,因为编程速度是从一个子块而不是两个子块采集,使得编程时间损失最小化。此外,该过程适应存储器设备的性能随时间推移的变化。例如,随着编程-擦除(p-e)周期累积,采集的vpgm可随时间推移而减小,并且存储器单元变得劣化且更容易编程。采集的vpgm也可由于诸如温度变化等环境因素而变化。表中的相同偏移值可随着p-e周期的数量增加或随着温度变化而使用。因此,优化的初始vpgm随着采集的vpgm的变化而变化,而无需基于p-e周期或温度调整偏移值或提供附加的偏移值。可选地,可基于p-e周期或诸如温度等其他因素来调节偏移值。

在一种方法中,可以针对每个选定字线重复图11b的过程。然而,对于一组字线执行一次步骤1111是更有效的,并且图11c至图11e的表基于该方法。

图11c描绘了在图11b的过程中用于具有七个子块sb0-sb6的示例性块的示例性表,其与图14a一致,其中编程速度是在图11b的步骤1111中从作为第一子块sb0采集的。如结合图5c所讨论,字线由于类似的存储器孔直径而以具有类似编程速度的组布置。例如,这些组包括分别包含wl0-wl2、wl3-wl5、wl6-wl8和wl9-wl10的组1、组2、组3和组4,这与图5c一致。

sb6具有与sb0相同的编程速度,使得偏移量为0v。sb1和sb5具有比sb0稍慢的编程速度,使得偏移量相对较小,范围为0.1-0.4v。sb2和sb4具有比sb0适度较慢的编程速度,使得偏移量适度,范围为0.2-0.8v。sb3(中央子块)具有比sb0明显较慢的编程速度,使得偏移量相对较大,范围为0.3-1.2v。偏移量对于存储器单元的顶部组(组4)是最大的,其中存储器孔直径是最大的并且编程速度在子块中是最慢的。

图11d描绘了在图11b的过程中用于具有七个子块sb0-sb6的示例性块的示例性表格,其与图14a一致,其中编程速度是从sb1采集的。如果给定块的编程被中断,诸如通过另一个块的编程,则图11b的步骤1111的编程速度可以再次从给定块的当前编程子块获得。例如,中断可以在sb0被编程之后并且在sb1被编程之前发生。在这种情况下,来自sb0的采集的vpgm可被来自另一个块的采集的vpgm覆盖。在这种情况下,具有偏移电压相对于sb1或第一编程子块之外的子块的表可能是有用的。当存在功率重置或部分字线编程时,也可能发生中断。

sb0和sb6具有比sb1稍快的编程速度,使得偏移量相对较小,范围为-0.1至-0.4v。sb5具有与sb1相同的编程速度,使得偏移量为0v。sb2和sb4具有比sb1稍慢的编程速度,使得偏移量相对较小,范围为0.1-0.4v。sb3具有比sb1适度较慢的编程速度,使得偏移量适度,范围为0.2-0.8v。偏移量是子块的正电压,该子块具有比采集的编程速度的子块较低的编程速度。偏移量是具有比采集的编程速度的子块的编程速度更高的子块的负电压。

图11e描绘了在图11b的过程中用于具有八个子块sb0-sb7的示例性块的示例性表格,其与图16a一致,其中编程速度是从sb0采集的。sb7具有与sb0相同的编程速度,使得偏移量为0v。sb1和sb6具有比sb0稍慢的编程速度,使得偏移量相对较小,范围为0.1-0.4v。sb2和sb5具有比sb0适度较慢的编程速度,使得偏移量适度,范围为0.2-0.8v。sb3和sb4具有比sb0明显较慢的编程速度,使得偏移量相对较大,范围为0.3-1.2v。

在图11c-图11e中,控制电路被配置为基于第一编程电压和块的另一个子块的位置查找偏移电压,并且将偏移电压添加到第一编程电压以获得另一个子块的初始编程电压。

在一个具体实施中,多个存储器单元连接到一组字线,一个子块的存储器单元和另一个子块的存储器单元连接到该组字线中的字线,并且控制电路被配置为基于该组字线中的字线的位置查找偏移电压。字线的位置可以由其所在的一组字线指示。

图11f描绘了图11a1的过程的第二示例性具体实施的流程图,其中子块以基于其编程速度的顺序进行编程。步骤1120包括在块中以最低编程速度对一个或多个子块进行编程,并且采集指示编程速度的编程电压。例如,块中具有最低编程速度的子块通常是中央子块或子块,因为它们距引入蚀刻剂的块的边缘最远,因此将具有最厚的阻挡氧化物层。

步骤1121包括在块中以最高编程速度对一个或多个子块进行编程,并且采集指示编程速度的编程电压。例如,块中具有最高编程速度的子块通常是边缘子块或子块,因为它们距引入蚀刻剂的块的边缘最近,因此将具有最薄的阻挡氧化物层。

步骤1122包括以下一个较低编程速度(例如,低于先前编程的块)对剩余子块进行编程。块的剩余子块(例如,块中具有最低编程速度和最高编程速度的子块之外的子块,即编程速度在最高编程速度和最低编程速度之间的子块)可以采用其编程速度的相反顺序进行编程,例如,首先以最高编程速度对剩余子块进行编程,并且随后以连续较低的编程速度对剩余子块进行连续编程。

步骤1123包括结合步骤1122,使用基于一个或多个先前采集的编程电压(如果可用)的vpgm_init,或者采集指示编程速度的新编程电压。如果在剩余子块的编程开始时这些采集的编程电压可用,则如结合图11g所述,vpgm_init可以基于具有最高编程速度和最低编程速度的子块的采集的编程电压之间的插值。参见图13a的示例。如果在剩余子块的编程开始时该采集的编程电压(但不是其他先前采集的编程电压,诸如具有最低编程速度的子块的采集的编程电压)可用,则vpgm_init可以基于具有最高编程速度的子块的采集的编程电压。参见图13b的示例。如果在稍后编程的剩余子块的编程开始时采集的编程电压(但不是其他先前采集的编程电压)可用,则vpgm_init可以基于先前编程的剩余子块的采集的编程电压。参见图13b的示例。

决定步骤1124确定是否存在要编程的下一个子块。如果决定步骤为假,则在步骤1125处完成过程。如果决定步骤为真,则在步骤1123开始下一剩余子块的编程。

例如,在图14a中,子块1413具有最低编程速度并且首先被编程,子块1410和1416具有最高编程速度并且接着被编程,例如,子块1410之后是子块1416,或者子块1416之后是子块1410。其余子块是子块1411、1412、1414和1415。子块1411和1415在子块1410和1416之后具有下一个较低的编程速度,并且接着被编程,例如,子块1411之后是子块1415,或者子块1415之后是子块1411。子块1412和1414在子块1411和1415之后具有下一个较低的编程速度,并且接着被编程,例如,子块1412之后是子块1414,或者子块1414之后是子块1412。

在图16a中,编程顺序可以是:子块1613和1614、子块1610和1617、子块1611和1616,最后是子块1612和1615。

块中具有最低编程速度和最高编程速度的子块可以采用编程速度采集模式来编程,以获得指示编程速度的采集的vpgm。对于稍后编程的剩余子块,如果表示采集的vpgm的数据在存储位置仍然可用,则可以基于先前编程的子块采集的vpgm来确定初始vpgm,并且剩余的子块在正常编程模式下进行编程。如果表示采集的vpgm的数据仍然不可用,则可以在编程速度采集模式下对稍后编程的子块进行编程以获得新采集的vpgm。新采集的vpgm可以用于确定块的一个或多个剩余子块的初始vpgm。

因此,在步骤1122的一个具体实施中,如果vpgm_init在剩余子块的编程期间在存储位置中保持可用,则剩余子块可以全部用相同的vpgm_init进行编程。如果先前存储的vpgm_init不再可用,则确定新的vpgm_init,并且如果在剩余子块的编程期间在存储位置中保持可用,则剩余子块可以全部用新的vpgm_init进行编程。

图11f的过程确保根据具有较高编程速度的先前编程子块确定给定的剩余子块的初始vpgm。因此,给定剩余子块的初始vpgm相对较低并且避免了过度编程。

在一个选项中,初始vpgm被确定一次以用于对子块中的一组字线进行编程,而不是针对子块中的每个字线确定一次。

在另一个选项中,省略步骤1120。在这种情况下,块中所有子块的编程以其编程速度的相反顺序进行。例如,在图14a中,编程顺序可以是:子块1410和1416、子块1411和1415、子块1412和1414,最后是子块1413。在图16a中,编程顺序可以是:子块1610和1617、子块1611和1616、子块1612和1615,最后是1613和1614。

图11g描绘了图11f的过程的示例性具体实施的流程图,其中使用从中央子块和边缘子块采集的编程电压来确定另一个子块的初始vpgm。步骤1130包括以编程速度采集模式对连接到一个子块(例如,中央子块)中的选定字线的存储器单元进行编程。步骤1131包括当中央子块的存储器单元的子组的阈值电压超过验证电压时,确定并且存储识别所使用的第一采集的vpgm(第一编程电压)的数据。参见图9c。步骤1132包括以编程速度采集模式对连接到块的边缘子块中的选定字线的存储器单元进行编程。步骤1133包括当边缘子块的存储器单元的子组的阈值电压超过验证电压时,确定并且存储识别所使用的第二采集的vpgm(第二编程电压)的数据。步骤1134包括基于另一个子块的位置,通过在第一采集的vpgm和第二采集的vpgm之间进行插值来确定该块的另一个子块的初始vpgm。参见图13a、图15b和图17b。

另一个子块可以在块的一个子块(例如,子块1413)和边缘子块(例如,图14a中的子块1410或1416,或者图16a中的子块1610或1617)之间。此外,可以存在多个子块(例如,图14a中的子块1411、1412、1414或1415,或者图16a中的子块1611、1612、1615或1616),其包括一个子块与边缘子块之间的另一个子块。第一编程电压和第二编程电压之间的插值基于多个子块中的另一个子块的位置。

步骤1135包括使用初始vpgm对连接到另一个子块中的选定字线的存储器单元进行编程。决定步骤1136确定是否存在要编程的下一个子块。如果决定步骤为假,则在步骤1137处完成过程。如果决定步骤为真,则在步骤1134处重复过程。

在图14a中,中央子块是子块1413,并且边缘子块是子块1410和1416。在图16a中,中央子块是子块1613和1614,并且边缘子块是子块1610和1617。

一旦采集了第一编程电压和第二编程电压,并且只要它们在存储位置可用,就可以针对剩余子块中的每一个优化vpgm_init。如结合图11f所讨论,如果由于块的编程的中断,第一采集的vpgm或者第一采集的编程电压和第二采集的编程电压在存储位置中不再可用,则可以采集新的编程电压以确定新的vpgm_init。

图11h描绘了使用编程速度采集模式的子块的示例性编程操作的流程图,与图10a的电压信号1000一致。步骤1140设置具有初始低vpgm和步长大小的编程速度采集模式。步骤1141开始编程循环。步骤1142包括识别具有禁止状态的存储器单元以及具有编程状态的存储器单元。例如,如图18所描绘,可以读取锁存器中的位序列以识别分配给er状态的存储器单元和分配给a-g状态的存储器单元。步骤1143包括基于禁止或编程状态(例如,分别为2-3v或0v)设置位线电压。步骤1144包括在步骤1143中设置位线电压时,将编程电压或脉冲施加到选定字线。步骤1145包括将一个或多个验证信号施加到选定字线。参见图10a中的示例性验证信号1014。验证信号包括验证电压,诸如图10c中的vva。步骤1146包括在验证信号期间,感测一个或多个分配的数据状态的存储器单元。在验证信号期间的对存储器单元的感测是验证测试,因为它相对于验证信号的电压测试存储器单元的vth。在给定编程循环中,可以对具有编程状态的存储器单元的子组执行验证测试,例如结合图10c讨论。

步骤1147确定a状态存储器单元的子组是否已通过a状态验证测试。如果它们已通过,则决定步骤1148为真并且执行步骤1149。步骤1149涉及例如在采集的编程速度数据118的存储位置中存储当前vpgm,并且设置正常步长大小。决定步骤1150确定是否应当执行下一个编程循环。如果决定步骤为真(如果尚未针对所有数据状态完成编程),则在步骤1151处增加编程电压,并且在步骤1141处开始下一个编程循环。当禁止分配给数据状态的所有或几乎所有的存储器单元进行编程时,针对数据状态完成了编程。如果决定步骤1150为假,则在步骤1152处进行编程操作。如果决定步骤1148为假,则到达决定步骤1151。

在已发生编程速度采集之后,可以在编程操作的后续编程循环中绕过步骤1147-1149。

图11i描绘了图11a1的过程的第三示例性具体实施的流程图,其中使用从一个子块的边缘行或其他选定行采集的编程电压来确定另一个子块的初始vpgm。步骤1160包括以编程速度采集模式对连接到一个子块中的选定字线的存储器单元进行编程。步骤1161包括当子块的一个边缘行(或通常是一行)的存储器单元的阈值电压超过验证电压时,确定所使用的第一采集的vpgm。参见例如图14b的子块1410和图16b的子块1610中的行r1。步骤1162包括当子块的另一个边缘行(或通常是另一行)的存储器单元的阈值电压超过验证电压时,确定所使用的第二采集的vpgm。参见例如图14b的子块1410和图16b的子块1610中的行r4。步骤1163包括基于另一个子块的位置,通过外推第一采集的vpgm和第二采集的vpgm来确定该块的另一个子块的初始vpgm。参见例如图13c、图15c和图17c。步骤1164包括使用初始vpgm对连接到另一个子块中的选定字线的存储器单元进行编程。

决定步骤1165确定是否存在要编程的下一个子块。如果决定步骤为假,则在步骤1166处完成过程。如果决定步骤为真,则在步骤1164处重复过程。

图11i和图11j的过程可以从子块的任何两行采集编程电压,该子块可以是或者不是边缘行。但是,从两个边缘行采集编程电压是有利的,因为对于在子块中彼此间隔最远的行,编程速度差是最大的。编程脉冲步长大小可能不足以准确地检测子块中相对彼此靠近的相邻行之间的编程速度差异。

图11j描绘了用于实现图11i的过程的图11h的示例性编程操作的修改形式的流程图。图11j的过程替换图11h的步骤1146-1149,并且描绘了基于一个子块的两行而不是基于两个子块的编程速度采集。在图11h的步骤1145之后,并行执行步骤1170和1173。步骤1170包括例如确定一行(例如,边缘行r1)中的a状态存储器单元是否已通过a状态验证测试。步骤1173包括确定另一行(例如,相对的边缘行r4)中的a状态存储器单元是否已通过a状态验证测试。如果r1已通过,则决定步骤1171为真,并且在步骤1172处将当前vpgm存储为第一采集的vpgm。决定步骤1176确定r1和r4两者是否已通过验证测试。如果决定步骤1176为真,则步骤1177设置正常步长大小并且到达图11h的步骤1150。如果r1尚未通过,则决定步骤1171为假,并且到达图11h的步骤1150。

相似地,如果r4已通过,则决定步骤1174为真,并且在步骤1175处将当前vpgm存储为第二采集的vpgm。然后到达决定步骤1176。如果r4尚未通过,则决定步骤1174为假,并且到达图11h的步骤1150。

图11k描绘了使用正常编程模式的子块的示例性编程操作的流程图,与图10a的电压信号1010一致。步骤1180设置具有正常初始vpgm和步长大小的正常编程模式。步骤1181开始编程循环。步骤1182包括识别具有禁止状态的存储器单元以及具有编程状态的存储器单元。步骤1183包括基于禁止或编程状态设置位线电压。步骤1184包括在步骤1183中设置位线电压时,将编程电压或脉冲施加到选定字线。步骤1185包括将一个或多个验证信号施加到选定字线。参见图10a中的示例性验证信号1014。步骤1186包括在验证信号期间,感测一个或多个分配的数据状态的存储器单元。决定步骤1187确定是否应当执行下一个编程循环。如果决定步骤为真,则在步骤1188处增加编程电压,并且如果尚未针对所有数据状态完成编程,则下一个编程循环在步骤1181处开始。如果决定步骤1187为假,则在步骤1189处进行编程操作。

图12描绘了与图11h的步骤1145和1146以及与图11k的步骤1185和1186一致的示例性验证过程的流程图。步骤1200包括将验证电压施加到选定字线。步骤1201包括识别要在验证测试中感测的存储器单元。例如,要感测的存储器单元可以是具有编程状态并且被分配给与施加到选定字线的当前验证电压匹配的数据状态的存储器单元。步骤1202包括在所识别的存储器单元的感测电路的感测节点上设置电压。这些感测节点是经由相应位线连接到所识别的存储器单元的感测节点。例如,可以将电压vsense提供给图2中的感测节点171。

步骤1203包括在连接到所识别的存储器单元的位线上设置电压。例如,图2中的选择器56可以在位线bl上提供电压vbl。步骤1204包括允许感测节点与相应位线进行通信,并且针对感测中涉及的感测节点中的每一个,确定感测节点电压在感测时间是否衰减到低于跳闸电压。步骤1205包括如果感测节点电压未衰减到低于跳闸电压,则确定存储器单元处于非导电状态。当存储器单元的vth超过验证信号的电压时,该存储器单元处于非导电状态。这指示应当禁止存储器单元进一步编程。步骤1206包括如果感测节点电压衰减到低于跳闸电压,则确定存储器单元处于导电状态。当存储器单元的vth低于验证信号的电压时,该存储器单元处于导电状态。这指示应当对存储器单元进一步编程。步骤1207包括将验证测试的结果输出到例如控制器。

决定步骤1208确定在当前编程循环中是否存在下一个要施加的验证电压。如果决定步骤为真,则在步骤1200处重复过程。如果决定步骤为假,则在步骤1209处完成过程。

图13a描绘了与图14a的子块顺序1421一致的图11g的过程的示例性具体实施,其中块的编程不存在中断。由于不存在中断,因此采集的最低速度和最高速度子块的编程电压保持在存储位置中并且不被覆盖。然后可以从存储位置检索采集的编程电压,并且将其用于确定初始vpgm。在一个选项中,初始vpgm被存储在存储位置中,并且随后在对剩余子块进行编程时被检索。

示例性流程包括:(1)使用vpgm_init_low(参见图10a)对sb0进行编程(中央子块或一个子块),以采集vpgm_acq_sb0(例如,16v),即第一编程电压。vpgm_acq_sb0可以是在图9c的vth分布923被获得用于sb0的编程循环中使用的编程电压。(2)使用vpgm_init_low对sb1进行编程(边缘子块),以采集vpgm_acq_sb1(例如,15v),即第二编程电压。vpgm_acq_sb1可以是在图9c的vth分布923被获得用于sb1的编程循环中使用的编程电压。采集vpgm_acq_sb1的编程循环低于采集vpgm_acq_sb0的编程循环,因为sb1具有高于sb0的编程速度。(3)计算vpgm_init_sb3=vpgm_acq_sb1+1/3(vpgm_acq_sb0-vpgm_acq_sb1)=15.33v。参见图15b,其中sb3是sb0和sb1之间的方式的三分之一。sb3是sb0和sb1之后的另一个子块。(4)计算vpgm_init_sb5=vpgm_acq_sb1+2/3(vpgm_acq_sb0-vpgm_acq_sb1)=15.67v。参见图15b,其中sb5是sb0和sb1之间的方式的三分之二。(5)使用vpgm_init=vpgm_sb1对sb2进行编程,因为sb2由于其位置在距块的最近边缘的相同距离处,并且因此具有相同的块氧化物厚度,因此具有与sb1相同的编程速度。(6)使用vpgm_init_sb3对sb3进行编程。(7)使用vpgm_init_sb3对sb4进行编程,因为sb4由于其位置在距块的最近边缘的相同距离处而具有与sb3相同的编程速度。(8)使用vpgm_init_sb5对sb5进行编程。(9)使用vpgm_init_sb5对sb6进行编程,因为sb6由于其位置在距块的最近边缘的相同距离处而具有与sb5相同的编程速度。

在该示例中,控制电路被配置为:将识别第一编程电压的数据存储在易失性存储位置中;在对边缘子块的存储器单元进行编程期间,当边缘子块的存储器单元的子组的阈值电压超过验证电压时,确定施加到边缘子块的存储器单元的第二编程电压;将识别第二编程电压的数据存储在易失性存储位置;并且由于识别第一编程电压的数据和识别第二编程电压的数据在另一个子块的存储器单元的编程开始时在易失性存储位置中可用,因此将初始编程电压确定为在第一编程电压和第二编程电压之间的电压。

图13b描绘了与图14a的子块顺序1421一致的图11g的过程的示例性具体实施,其中sb0和sb1的编程之间存在中断。如所提及的,当在完成一个块的编程之前对另一个块或其部分进行编程时,可发生对块的编程的中断。当恢复一个块的编程时,采集的编程电压数据或初始vpgm数据可能已被覆盖并且因此不再可用。

示例性流程包括:(1)使用vpgm_init_low对sb0进行编程(一个子块),以采集vpgm_acq_sb0(例如,16v),即第一编程电压。(2)发生中断,其中vpgm_acq_sb0在采集的编程速度数据118的存储位置中被覆盖。(3)使用vpgm_init_low对sb1进行编程(边缘子块)以采集vpgm_acq_sb1(例如,15v),即第二编程电压。(4)使用vpgm_init=vpgm_acq_sb1对sb2进行编程,因为sb2具有与sb1相同的编程速度。(5)使用vpgm_init=vpgm_acq_sb1对sb3进行编程。sb3是sb0-sb2之后的另一个子块。(6)使用vpgm_init=vpgm_acq_sb1对sb4进行编程。(7)使用vpgm_init=vpgm_acq_sb1对sb5进行编程。(8)使用vpgm_init=vpgm_acq_sb1对sb6进行编程。

在该具体实施中,vpgm_acq_sb1用作剩余子块sb2-sb6的初始vpgm。vpgm_acq_sb1对于sb2是最佳的,因为其具有与sb1相同的编程速度。然而,vpgm_acq_sb1可低于sb3-sb6的初始vpgm,因为sb1具有高于sb3-sb6的编程速度。优点在于避免了sb3-sb6的过度编程,并且在采集vpgm_acq_sb1之后不必针对块重新采集编程电压,因此使时间损失最小化。

在该示例中,在另一个子块的存储器单元的编程开始时识别第一编程电压的数据在易失性存储位置中不可用但是识别第二编程电压的数据在易失性存储位置中可用,并且控制电路被配置为基于第二编程电压(而不是第一编程电压)来确定初始编程电压。

当在一个子块的存储器单元的编程与另一个子块的存储器单元的编程开始之间存在另一个块的存储器单元的编程时,在另一个子块的存储器单元的编程开始时,识别第一编程电压的数据在易失性存储位置中不可用。

当在边缘子块的存储器单元的编程与另一个子块的存储器单元的编程开始之间不存在另一个块的存储器单元的编程时,在另一个子块的存储器单元的编程开始时,识别第二编程电压的数据在易失性存储位置中可用。

图13c描绘了与图14a的子块顺序1420一致的图11i的过程的示例性具体实施,其中块的编程不存在中断。示例性流程包括:(1)使用vpgm_init_low对sb0进行编程,以采集vpgm_acq_sb0_r1(例如,15.95v)和vpgm_sb0_r4(例如,16.1v)。因此,针对子块sb0的两个边缘行采集单独的vpgm。(2)计算vpgm_init_sb1=vpgm_acq_sb0_r4+0.5x(vpgm_acq_sb0_r4-vpgm_acq_sb0_r1)=16.1+0.5x(16.1-15.95)=16.175v。将sb0的边缘行之一的采集的编程电压添加到sb0的两个边缘行的采集的编程电压的平均值,以获得相邻子块sb1的vpgm_init。sb0的边缘行的采集的编程电压被外推到sb1。

(3)计算vpgm_init_sb2=vpgm_init_sb1+(vpgm_acq_sb0_r4-vpgm_acq_sb0_r1)=16.175+0.15=16.325v。将sb0的边缘行的采集的编程电压外推到sb2。替代计算为vpgm_init_sb2=vpgm_acq_sb0_r4+1.5x(vpgm_acq_sb0_r4-vpgm_acq_sb0_r1)=16.1+1.5x(16.1-15.95)=16.325v。(4)计算vpgm_init_sb3=vpgm_init_sb2+(vpgm_acq_sb0_r4-vpgm_acq_sb0_r1)=16.325+0.15=16.475v。替代计算为vpgm_init_sb3=vpgm_acq_sb0_r4+2.5x(vpgm_acq_sb0_r4-vpgm_acq_sb0_r1)=16.1+2.5x(16.1-15.95)=16.475v。将sb0的边缘行的采集的编程电压外推到sb3。(5)计算vpgm_init_sb6=0.5x(vpgm_acq_sb0_r4+vpgm_acq_sb0_rl)=0.5x(15.95+16.1)=16.025v。sb6的vpgm_init具有与sb0相同的编程速度,被设定为sb0的边缘行的采集的编程电压的平均值。(6)使用vpgm_init_sb1对sb1进行编程。(7)使用vpgm_init_sb2对sb2进行编程。(8)使用vpgm_init_sb3对sb3进行编程。(9)使用vpgm_init_sb2对sb4进行编程,因为这些子块具有相同的编程速度。(10)使用vpgm_init_sb1对sb5进行编程,因为这些子块具有相同的编程速度。(11)使用vpgm_init_sb6对sb6进行编程。

图14a描绘了具有七个子块的示例性块1400的侧视图,与图5a一致。这是块中奇数个子块的示例,使得存在单个中央子块。该块包括在局部互连件(li)1401和1402之间的堆叠中竖直间隔开的多个字线层或控制栅极层。该块包括子块1410-1416。每个子块具有一个或多个单独的sgd层或板。例如,子块1410具有sgd层1417和1418。不同子块的sgd层由隔离区(ir)1403-1408分开。

该块还包括在局部互连件之间竖直间隔开的多个字线层。局部互连件与块的相对边缘1430和1431相邻,在制造过程中在相对边缘处引入蚀刻剂。在一种方法中,局部互连件包括被绝缘体包围的金属,以提供从堆叠的顶部到衬底的绝缘导电路径。在另一种方法中,局部互连件由不提供穿过叠堆的导电路径的隔离区(例如,绝缘体,诸如不具有金属的氧化物)代替。

可以根据不同的子块顺序对子块1410-1416进行编程。例如,在子块顺序1420中,子块1410-1416分别被标记为sb0-sb6,并且跨该块从左到右编程,一次一个子块。在子块顺序1421中,子块1410、1411、1412、1413、1414、1415和1416分别被标记为sb1、sb3、sb5、sb0、sb6、sb4和sb2,并且以sb0-sb6的顺序编程,从所述中央子块sb0开始,行进到边缘子块sb1和sb2,然后从边缘子块sb3和sb4行进到第二,最后从边缘子块sb5和sb6行进到第三。

图14b描绘了图14a的示例性块1400的顶视图。每个nand串或存储器孔(诸如示例nand串1435)由空心圆表示。在图14b和图16b中,实心圆表示位线与nand串的连接。位线bl0-bl23在y方向上跨块延伸,彼此平行,并且在x方向上彼此间隔开。每个位线连接到每个子块中的一个nand串。另外,nand串或存储器孔在每个子块中的多行中延伸,诸如子块1410中的行r1-r4。在该示例中,每个子块有四行,但是可以更少或更多。如前所述,一个边缘行(例如,r1)中的阻挡氧化物层的厚度与一个子块中的另一边缘行(例如,r4)中的阻挡氧化物层的厚度不同。类似地,子块的每个字线层包括多行存储器单元。

与每个子块仅使用一行nand串相比,所示的配置提供了更高密度的nand串,尽管本文所述的技术也可以用于每个子块仅使用一行nand串。

行和子块与块的最近边缘相距的距离各不相同。例如,子块1410-1412分别与最近边缘1430相距d1-d3的距离,并且子块1416-1414分别与最近边缘1431相距d1-d3的距离。子块1413与边缘1430或1431相距相同的距离d4。在一种方法中,可以在子块到边缘的中点处获取该距离。在子块1410中,行r1-r4分别位于与边缘1430相距d1a-d1d的距离处。

在图14d中更详细地示出了块的区域1440。

图14c描绘了曲线图,其示出了图14b的块中的阻挡氧化物层的变化厚度随距块的最近边缘的距离的变化。垂直轴示出厚度,并且水平轴示出沿图14b的块的y方向的位置。厚度范围从边缘1430和1431处的最小值th_min开始,其中子块1410和1416分别被定位并且增加到块的中心处的最大值th_max,其中子块1413被定位。

图14d更详细地描绘了图14a的区域1440,示出了阻挡氧化物层的变化厚度。该区域包括四个示例nand串或存储器孔,包括子块1410中的nand串1432和1433,以及子块1411中的nand串1434和1435。局部互连件的一部分1401a被描绘为具有边缘1430。nand串1432包括图6中描绘的部件,包括阻挡氧化物层663、电荷俘获层664、隧道层665、沟道660和介电核心666。对于nand串1432、1433、1434和1435,阻挡氧化物层663、663a、663b和663c的厚度分别从th_min、th1、th2逐渐增加到th3。

图15a描绘了编程电压相对于子块位置的曲线图,与图14a的块、图11b的过程和图11c的表一致。在图15a至图15c中,垂直轴示出电压,并且水平轴示出沿图14b的块的y方向的位置。在图15a和图15c中,基于图14a的子块顺序1420标记子块。在图15b中,基于图14a的子块顺序1421标记子块。子块标签表示从sb0开始并在sb6结束的程序顺序。实心正方形和符号“vpgm_acq”表示子块(图15a和图15b)或一行子块(图15c)的采集的编程电压,而空心正方形和符号“vpgm_init”表示基于采集的编程电压和子块在块中的位置而确定的子块的初始编程电压。

在该示例中,通过对sb0进行编程采集vpgm_acq_sb0,并且vpgm_init_sb1-vpgm_init_sb6中的每一个可以从图11c的表中确定,例如,通过将vpgm_acq_sb0与表的对应偏移电压相加。

图15b描绘了编程电压相对于子块位置的曲线图,与图14a的块以及图11f、图11g和图13a的过程一致。vpgm_acq_sb0和vpgm_acq_sb1分别通过对sb0和sb1进行编程而采集。如图13a的示例所示,vpgm_init_sb3和vpgm_init_sb5可通过在vpgm_acq_sb0和vpgm_acq_sb1之间进行插值来确定。如图13a的示例所示,vpgm_init_sb2、vpgm_init_sb4和vpgm_init_sb6可以分别被设置为vpgm_init_sb1、vpgm_init_sb3和vpgm_init_sb5。

图15c描绘了编程电压相对于子块位置的曲线图,与图14a的块以及图11i、图11j和图13c的过程一致。当对sb0进行编程时,vpgm_acq_sb0_r1和vpgm_acq_sb0_r4分别从行r1和r4采集。如图13c的示例所示,vpgm_init_sb1、vpgm_init_sb2和vpgm_init_sb3可通过外推电压相对于位置的斜率来确定,该斜率由vpgm_acq_sb0_r1和vpgm_acq_sb0_r4设定。如图13c的示例所示,vpgm_init_sb4、vpgm_init_sb5和vpgm_init_sb6可以分别被设置为vpgm_init_sb2、vpgm_init_sb1和vpgm_init_sb0。

图16a描绘了具有八个子块的示例性块1600的侧视图,与图5a一致。这是块中偶数个子块的示例,使得存在两个中央子块。该块包括在局部互连件(li)1601和1602之间的堆叠中竖直间隔开的多个字线层或控制栅极层。该块包括子块1610-1617。不同子块的sgd层由隔离区(ir)1603-1609分开。

该块还包括在局部互连件之间竖直间隔开的多个字线层。局部互连件与引入蚀刻剂的块的相对边缘1630和1631相邻。

可以根据不同的子块顺序对子块1610-1617进行编程。例如,在子块顺序1620中,子块1610-1617分别被标记为sb0-sb7,并且跨该块从左到右进行编程,一次一个子块。在子块顺序1621中,子块1610、1611、1612、1613、1614、1615、1616和1617分别被标记为sb2、sb4、sb6、sb0、sb1、sb7、sb5和sb3,并且以sb0-sb7的顺序编程,从所述中央子块sb0和sb1开始,行进到边缘子块sb2和sb3,然后从边缘子块sb4和sb5行进到第二,最后从边缘子块sb6和sb7行进到第三。

图16b描绘了图16a的示例性块1600的俯视图。行和子块与块的最近边缘相距的距离各不相同。例如,子块1610-1613分别与最近边缘1630相距d1-d4的距离,并且子块1617-1614分别与最近边缘1631相距d1-d4的距离。在子块1610中,行r1-r4分别位于与边缘1630相距d1a-d1d的距离处。

图16c描绘了曲线图,其示出了图16b的块中的阻挡氧化物层的变化厚度随距块的最近边缘的距离的变化。垂直轴示出厚度,并且水平轴示出沿图16b的块的y方向的位置。厚度范围从边缘1630和1631处的最小值th_min开始,其中子块1610和1617分别被定位,并且增加到块中心处的最大值th_max,其中子块1613和1614被定位。

图17a描绘了编程电压相对于子块位置的曲线图,与图17a的块、图11b的过程和图11e的表一致。在图17a至图17c中,垂直轴示出电压,并且水平轴示出沿图16b的块的y方向的位置。在图17a和图17c中,基于图16a的子块顺序1620标记子块。在图17b中,基于图16a的子块顺序1621标记子块。子块标签表示从sb0开始并在sb7结束的程序顺序。实心正方形和符号“vpgm_acq”表示子块(图17a和图17b)或一行子块(图17c)的采集的编程电压,而空心正方形和符号“vpgm_init”表示基于采集的编程电压和子块在块中的位置而确定的子块的初始编程电压。

在该示例中,通过对sb0进行编程采集vpgm_acq_sb0,并且vpgm_init_sb1-vpgm_init_sb7中的每一个可以从图11e的表中确定,例如,通过将vpgm_acq_sb0与表的对应偏移电压相加。

图17b描绘了编程电压相对于子块位置的曲线图,与图17a的块以及图11f和图11g的过程一致。vpgm_acq_sb0和vpgm_acq_sb2分别通过对sb0和sb2进行编程而采集。vpgm_init_sb4和vpgm_init_sb6可以通过在vpgm_acq_sb0和vpgm_acq_sb2之间进行插值来确定,vpgm_init_sb3、vpgm_init_sb5、vpgm_init_sb7和vpgm_init_sb1可以分别被设置为vpgm_init_sb2、vpgm_init_sb4、vpgm_init_sb6和vpgm_init_sb0。

图17c描绘了编程电压相对于子块位置的曲线图,与图17a的块以及图11i和图11j的过程一致。当对sb0进行编程时,vpgm_acq_sb0r1和vpgm_acq_sb0_r4分别从行r1和r4采集。类似于图13c的示例,vpgm_init_sb1、vpgm_init_sb2和vpgm_init_sb3可以通过外推电压相对于位置的斜率来确定,该斜率由vpgm_acq_sb0_r1和vpgm_acq_sb0_r4设定。类似于图13c的示例,vpgm_init_sb4-vpgm_init_sb7可以分别被设置为vpgm_init_sb3-vpgm_init_sb0。

图18描绘了在编程操作期间的图2的锁存器中的示例性值。针对锁存器udl、mdl和ldl中的每个锁存器显示0或1位。每列指示针对每个分配数据状态的锁存器的不同位配置或位序列。标题为er/inhibit的列指示,针对分配给擦除状态或被禁止编程的存储器单元,锁存器全都具有1。udl、mdl和ldl锁存器一起提供了3位序列,其识别存储器单元的分配数据状态。当禁止存储器单元编程时,具有0的任何udl、mdl和ldl锁存器被翻转为1。通过读取锁存器,可以确定每个选定存储器单元的分配数据状态,并且可以在编程脉冲期间设置对应的位线电压。

图19描绘了连接到选定用于编程的字线的一组示例性存储器单元,其中使用八个数据状态。该简化示例包括32个存储器单元,其中对于8个分配数据状态中的每一个有4个存储器单元。尽管数据状态通常在存储器单元中随机分布,但为简单起见,在此示例中将具有共同分配数据状态的存储器单元分组。每个存储器单元由正方形表示,并且分配数据状态(er-g)由正方形内的字母表示。

组1900可以表示连接到块中的字线的多个存储器单元。多个存储器单元被配置为以一组数据状态er-g存储数据。组1900的子组1903-1910分别表示分配给er-g状态的存储器单元。另外,子组1901表示被配置为在编程操作期间被编程的存储器单元。子组1903在编程操作期间保持在擦除状态。

在一个具体实施中,一种装置包括:布置在块的多个子块中的nand串中的多个存储器单元,该nand串包括多个同心层,该同心层包括阻挡氧化物层,并且该阻挡氧化物层的厚度在多个子块的不同子块中是不同的;以及控制电路,该控制电路被配置为:在对块的一个子块的存储器单元进行编程期间,当一个子块的存储器单元的子组的阈值电压超过验证电压时,确定施加到一个子块的存储器单元的第一编程电压;以及基于第一编程电压和另一个子块的位置来确定用于对块的另一个子块的存储器单元进行编程的初始编程电压。

在另一个具体实施中,一种方法包括:对块的多个子块中的多个存储器单元进行编程,其中该多个子块具有不同的编程速度,该多个存储器单元的编程包括根据子块编程顺序对多个子块进行编程,其中首先对块具有最低编程速度的一个或多个子块进行编程,接着对具有块具有最高编程速度的一个或多个子块进行编程,并且随后对具有比最高编程速度逐步降低的编程速度的剩余子块进行编程;确定并且存储指示在以最低编程速度对一个或多个子块进行编程期间的最低编程速度的数据;确定并且存储指示在以最高编程速度对一个或多个子块进行编程期间的最高编程速度的数据;在剩余子块的编程开始时,如果指示最低编程速度的数据和指示最高编程速度的数据尚未被覆盖,则基于指示最低编程速度的数据和指示最高编程速度的数据来确定用于剩余子块的编程的编程参数;以及如果指示最低编程速度的数据已被覆盖但指示最高编程速度的数据尚未被覆盖,则基于指示最高编程速度的数据(而不是指示最低编程速度的数据)来确定用于剩余子块的编程的编程参数。

在另一个具体实施中,一种装置包括:多个存储器单元,该多个存储器单元在块的多个子块中布置在nand串中,每个子块包括多行nand串,该nand串包括多个同心层,该同心层包括阻挡氧化物层;以及控制电路,该控制电路被配置为:在对一个子块的存储器单元进行编程期间,当一个子块的一行的存储器单元的阈值电压超过验证电压时,确定施加到一个子块的存储器单元的第一编程电压,并且当一个子块的另一行的存储器单元的阈值电压超过验证电压时,确定施加到一个子块的存储器单元的第二编程电压;以及基于第一编程电压、第二编程电压和块的另一个子块的位置来确定用于对另一个子块的存储器单元进行编程的初始编程电压。

已出于例证和描述的目的提出本发明的上述具体实施方式。它并非旨在是穷尽的或将本发明限制为所公开的精确形式。鉴于上述教导内容,许多修改和变型是可能的。选择所描述的实施方案是为了最好地解释本发明的原理及其实际应用,从而使得本领域的其他技术人员能够在各种实施方案中以及适合于预期的特定用途的各种修改中最好地利用本发明。本发明的范围旨在由所附权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1