平衡3D堆叠存储器中的存储器单元的编程速度的制作方法

文档序号:13080567阅读:265来源:国知局
平衡3D堆叠存储器中的存储器单元的编程速度的制作方法与工艺



背景技术:

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

近来,已经提出使用三维(3d)堆叠存储器结构的超高密度存储器件。3d存储器结构的一个示例是位成本可扩展(bitcostscalable,bics)架构,其包括交替导电层和电介质层的堆叠体。在堆叠体中形成存储器孔,然后通过用包含电荷捕获层的材料填充存储器孔来形成nand串。直的nand串在一个存储器孔中延伸,而管状或u形的nand串(p-bics)包括在两个存储器孔中延伸并由底部背栅接合的存储器单元的垂直列对。存储器单元和选择栅极晶体管的控制栅由导电层提供。

然而,在操作这样的存储器器件中呈现出各种挑战。

附图说明

相同附图标记的元件是指不同图中的通用部件。

图1a是3d堆叠非易失性存储器器件中的块组的透视图。

图1b是诸如图1a的3d堆叠非易失性存储器器件100的存储器器件的功能框图。

图2描绘了可由处理器执行的代码。

图3是描绘了图1b中感测块sb1的一个实施例的框图。

图4a描绘了在直的nand串实施例中的图1a中的块blk0的示例字线层400的俯视图。

图4b描绘了与图4a一致的示例sgd层420的俯视图。

图4c描绘了堆叠体440的实施例,其示出了沿图4a的线412和图4b的线412a的横截面视图。

图4d描绘了图4c的堆叠体440的选择栅极层和字线层的另一视图。

图4e描绘了图4c的区域442的视图。

图4f描绘了图4a的区域406,其中存储器单元被布置成四个交错行。

图4g描绘了示例字线层的区域406a,其中存储器单元被布置成四个统一的行。

图4h描绘了示例字线层的区域406b,其中存储器单元被布置成六个交错行。

图4i描绘了存储器单元行的本征编程速度和该行与字线层(wll)的边缘的距离的曲线图。

图5描绘了编程操作,其基于存储器单元在字线层内的位置来提供对存储器单元的不同本征编程速度的补偿。

图6a描绘了与图5的过程一致的存储器单元组的阈值电压(vth)分布和示例读取电压。

图6b描绘了与图5的步骤593a一致的位线电压与存储器单元行的本征编程速度的曲线图。

图6c描绘了存储器单元行的编程速度与在n次编程-验证(p-v)迭代后具有vth>验证电压的单元的数量(#)的曲线图,与图5的步骤594a一致。

图6d描绘了存储器单元行的编程速度与指定数量的存储器单元具有vth>验证电压需要的p-v迭代的数量(#)的曲线图,与图5的步骤594a一致。

图6e描绘了存储器单元行的示例目标数据状态的验证电压与存储器单元的编程速度的曲线图,与图5的步骤594b一致。

图6f描绘了当测量编程速度时存储器单元的vth分布,与图5的步骤594a及图6c及图6d一致。

图6g描绘了与图5的步骤593a一致的位线电压与不同存储器单元行的本征编程速度差的曲线图。

图7a描绘了与图5的步骤593一致的编程电压组。

图7b描绘了与图5的步骤593和593a及图6一致的位线电压组。

图7c描绘了与图5的步骤594一致的验证电压组。

图7d描绘了与图5的步骤594和594b及图6a一致的验证电压组,其中使用两个偏移验证电压和最终验证电压用于每个目标数据状态。

图7e描绘了与图5的步骤594和594b及图6a一致的验证电压组,其中使用一个偏移验证电压和最终验证电压用于每个目标数据状态。

具体实施方式

本文提供了用于对存储器器件(诸如3d堆叠非易失性存储器器件)中的存储器单元进行编程的技术。还提供了对应的存储器器件。

3d堆叠非易失性存储器器件具有多层配置,其中堆叠体中的导电层与电介质层交替。在堆叠体中蚀刻存储器孔,并且将薄膜沉积在孔中,使得形成存储器单元或选择栅极晶体管,其中导电层与存储器孔相交。薄膜可以包含电荷捕获材料、隧道层和通道材料。一些导电层(例如,控制栅极层或字线层)用作存储器单元的控制栅极,并且其它导电层用作选择栅极晶体管的控制栅极,例如nand串中的漏极或源极晶体管。nand串在存储器器件中垂直延伸。电荷捕获材料可以是例如氮化硅或其它氮化物。存储器单元可以包括有资格存储数据的数据存储器单元,以及无资格存储数据但在选择栅极和数据存储器单元之间提供过渡区的虚拟存储器单元。

存储器单元被编程为根据阈值电压(vth)电平存储数据。例如,可以使用两个、四个、八个、十六个或更多个数据状态。然而,为了准确地读回数据,编程之后的每个数据状态的vth分布应尽可能窄。

本文提供的技术,基于存储器单元的本征编程速度的变化,允许在编程过程中通过提供补偿来实现窄vth分布,存储器单元的本征编程速度为字线层中的存储器单元的函数。在一种方法中,变化是由于与字线层的边缘的距离。在一种实现方式中,金属互连与字线层的边缘相邻。与边缘平行的行中的存储器单元组可以具有相似的本征编程速度。对于与边缘相对较远的存储器单元,编程速度可能相对较高。

编程过程的调整可能会以不同的方式发生。在一种方法中,具有相对较高的本征编程速度的存储器单元被减慢,使得所有存储器单元具有类似的有效编程速度。减慢编程的一种方式是在编程电压期间提高位线电压。在另一种方法中,基于本征编程速度来调整存储器单元的偏移验证电压。例如,具有相对较高的本征编程速度的存储器单元的偏移验证电压可以相对较低。偏移验证电压低于目标数据状态的最终验证电压,并且例如通过提高位线电压来触发存储器单元的慢速编程模式。各种方法也可以组合。

存储器单元的本征编程速度可以以不同的方式确定,例如,来自制造时的测试或在编程期间测量。例如,可以基于在施加了指定数量的编程脉冲之后具有高于指定电压的vth的存储器单元的数量,来确定存储器单元组的编程速度。存储器单元组的编程速度也可以基于用于使指定数量或部分存储器单元具有高于指定电压的vth的编程脉冲数来确定。

以下讨论提供了解决上述和其它问题的示例性存储器器件和编程技术的细节。

图1a是3d堆叠非易失性存储器器件中的块组的透视图。存储器器件100包括基板101。在基板上是存储器单元(存储元件)的示例性块blk0、blk1、blk2和blk3以及具有由块使用的电路的外围区域104。例如,电路可以包括可以连接到块的控制栅极层的电压驱动器105。在一种方法中,块中共同高度的控制栅极层通常被驱动。基板101还可以承载块下方的电路,以及在导电路径中图案化以携带电路信号的一个或多个下金属层。这些块形成在存储器器件的中间区域102中。在存储器器件的上部区域103中,一个或多个上金属层在导电路径中图案化以携带电路的信号。每个块包括存储器单元的堆叠区域,其中堆叠的交替级表示控制栅极层。在一种可能的方法中,在共同高度处的每个块的控制栅极层彼此连接并连接到电压驱动器。虽然描绘四个块作为示例,但是可以使用在x和/或y方向上延伸的两个或更多个块。

在一种可能的方法中,块中的每个控制栅极层可以被划分为如图4a、4b、4d、4f、4g和4h中所示的区域。

平面在x方向上的长度可以表示信号路径在一个或多个上金属层上延伸到字线的方向(字线或sgd线方向),并且平面在y方向的宽度表示信号路径在一个或多个上金属层上延伸到位线的方向(位线方向)。z方向表示存储器器件的高度。

图1b是诸如图1a的3d堆叠非易失性存储器器件100的存储器器件的功能框图。存储器器件100可以包含一个或多个存储器裸芯108。图1的块组1a可以在一个裸芯上。存储器裸芯108包含诸如存储器单元阵列、控制电路110和读取/写入电路128的存储器单元的存储器结构126。在3d配置中,存储器结构可以包括图1a的块。存储器结构126可以经由行解码器124由字线来寻址,并且经由列解码器132由位线来寻址。读取/写入电路128包括多个感测块sb1、sb2、...、sbp(感测电路),并且允许存储器单元的页被并行读取或编程。通常,控制器122包括在与一个或多个存储器裸芯108相同的存储器器件100(例如,可移动存储器卡)中。命令和数据经由数据总线120在主机140和控制器122之间传输,以及经由线118在控制器与一个或多个存储器裸芯108之间传输。

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

控制电路110与读取/写入电路128协作以对存储器结构126执行存储器操作,并且包含状态机112、片上地址解码器114和功率控制模块116。状态机112提供存储器操作的芯片级控制。可以提供用于操作存储器器件的参数的存储区域113,例如用于不同行或其他组存储器单元的编程参数。这些编程参数可以包含位线电压和验证电压。

片上地址解码器114为解码器124和132使用的硬件地址提供由主机或存储器控制器使用的地址接口。功率控制模块116在存储器操作期间控制提供给字线和位线的功率和电压。它可以包含3d配置中的字线层(wll)、sgs和sgd晶体管和源极线的驱动器。在一种方法中,感测块可以包含位线驱动器。sgs晶体管是在nand串的源极端的选择栅极晶体管,sgd晶体管是在nand串的漏极端的选择栅极晶体管。

在多个实现方式中,可以组合多个部件。在各种设计中,除了存储器结构126之外,部件中的一个或多个(单独或组合)可被认为是被配置为执行本文所述动作的至少一个控制电路。例如,控制电路可以包含控制电路110、状态机112、解码器114/132、功率控制模块116、感测块sb1、sb2、...、sbp、读取/写入电路128、控制器122等的中的任何一个或组合。

片外控制器122可以包括处理器122c和诸如rom122a和ram122b的存储器件(存储器)。存储器件包括诸如指令组的代码,并且处理器可操作以执行该组指令以提供本文所描述的功能。或者或另外,处理器可以从存储器结构的存储器件126a访问代码,诸如一个或多个字线中的存储器单元的保留区域。

例如,图2描绘了可由处理器122c执行的代码。控制器使用代码150来访问存储器结构,例如用于编程、读取和擦除操作。代码可以包括启动代码151和控制代码(例如,指令组)160。启动代码是在启动或开始过程中初始化控制器并使控制器能够访问存储器结构的软件。控制器可以使用该代码来控制一个或多个存储器结构。上电时,处理器122c从rom122a或存储器件126a取出启动代码以进行执行,启动代码初始化系统部件,并将控制代码加载到ram122b中。一旦将控制代码加载到ram中,则由处理器执行。控制代码包含执行基本任务(例如控制和分配存储器、优先处理指令,以及控制输入和输出端口)的驱动器。

该指令组包含对存储器单元组执行编程操作的指令(161)。这些指令可以包含将编程电压施加到选择的字线层的指令,同时基于选择的字线层内的相关联的存储器单元的位置向相应位线施加电压(162)。通常,控制代码可以包含指令,该指令执行本文描述的包含图5的过程的步骤的功能。

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

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

存储器器件可以由无源和/或有源元件以任何组合形成。作为非限制性示例,无源半导体存储器元件包括reram器件元件,其在一些实施例中包括诸如反熔丝或相变材料的电阻率开关存储元件,以及可选地诸如二极管或晶体管的导向元件。此外,作为非限制性示例,有源半导体存储器元件包括eeprom和闪存器件元件,其在多个实施例中包括包含电荷存储器区域的元件,例如浮置栅极、导电纳米颗粒或电荷存储器电介质材料。

多个存储器元件可以被配置为使得它们被串联连接或者使得每个元件可单独地访问。通过非限制性的示例,nand配置的闪存器件(nand存储器)典型地含有串联连接的存储器元件。nand串是包括存储器单元和选择栅极晶体管的一组串联晶体管的示例。

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

位于基板内和/或基板上的半导体存储器元件可以被布置成二维或三维,例如二维存储器结构或三维存储器结构。

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

存储器元件可以以有序阵列(例如以多个行和/或列)布置在单个存储器器件级中。然而,存储器元件可以布置成非正规或非正交的配置。每个存储器元件可以具有两个或多个电极或者诸如位线和字线的接触线。

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

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

作为非限制性示例,在三维nand存储器阵列中,存储器元件可以耦合在一起以在单个水平(例如,x-y)存储器器件级内形成nand串。或者,存储器元件可以耦合在一起以形成穿过多个水平存储器器件的垂直nand串。可以设想其他三维配置,其中一些nand串在单个存储器级中包含存储器元件,而其他串包含跨越多个存储器级的存储器元件。三维存储器阵列也可以被设计为nor配置和reram配置。

通常,在单片三维存储器阵列中,在单个基板上形成一个或多个存储器器件级。可选地,单片三维存储器阵列也可以具有在单个基板内的至少一部分的一个或多个存储器层。作为非限制性示例,基板可以包括诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器器件级的层典型地形成在阵列的底层存储器器件级的层上。然而,单片三维存储器阵列的相邻的存储器器件的级可以被共享或者具有在存储器器件级之间的中间级。

然后,二维阵列可以单独形成,然后封装在一起以形成具有多层存储器的非单片存储器件。例如,非单片堆叠存储器可以通过在单独的基板上形成存储器级,然后在彼此的顶上堆叠存储器级来构建。基板在堆叠前可以变薄或者从存储器器件级移除,但是因为存储器器件级最初在单独的基板上形成,产生的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以在单独的芯片上形成然后封装在一起以形成堆叠芯片存储器器件。

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

本领域技术人员将认识到,该技术不限于所描述的二维和三维示例性结构,而是覆盖如本文所述和如本领域技术人员所理解的技术的精神和范围内的所有相关的存储器结构。

图3是描绘图1b的感测块sb1的一个实施例的框图。感测块被划分为称为感测模块(例如,sm0)或感测放大器的一个或多个核心部分,以及称为管理电路(例如,mc0)的通用部分。在一个实施例中,存在用于每个位线的单独的感测模块和用于感测模块组(例如sm0、smi、sm2和sm3)的通用管理电路。组中的每个感测模块经由数据总线172与相关联的管理电路通信。因此,存在与存储器单元组的感测模块通信的一个或多个管理电路。

每个感测模块sm0、smi、sm2和sm3分别包括感测电路sco、sci、sc2和sc3,分别通过确定连接的位线bl0、bl1、bl2和bl3中的导通电流是否高于或低于预定阈值电压(验证电压)来执行感测。每个感测模块sm0、sm1、sm2和sm3还分别包括位线锁存器bll0、bll1、bll2和bll3,用于设置连接的位线上的电压状态。例如,在编程电压期间,锁存在位线锁存器中的预定状态将导致连接的位线被拉至锁定状态(例如,1.5-3v)、慢速编程状态(例如,0.5-1v)或正常编程状态(例如,0v)。

管理电路mc0包括处理器192、四个示例的数据锁存器组194、195、196和197以及耦合在数据锁存器组和数据总线120之间的i/o接口198。可以为每个感测模块提供一组数据锁存器,并且可以包含由ldl和udl识别的数据锁存器。在存储每个存储器单元中的两位数据的存储器中,ldl存储写入数据的较低页(lowerpage,lp)的位,并且udl存储写入数据的较高页(upperpage,up)的位。

也可以使用附加的数据锁存器。例如,在每个存储器单元的三位的实现方式中,可以使用一个额外的数据锁存来存储数据的中间页(middlepage,mp)。每个存储器单元的四位的实现方式可以使用低-中(lower-middle)和高-中(upper-middle)数据锁存器。本文提供的技术意在包含这样的编号。在另一选择中,当锁存器的vth在其目标数据状态的验证电压的指定余量内时,另一个锁存器用于识别存储器单元是否处于慢速编程模式。

处理器192在读取和编程期间执行计算。为了读取,处理器确定存储在所感测的存储器单元中的数据状态,并将数据存储在该组数据锁存器中。对于完全编程和刷新编程,处理器读取锁存器以确定要写入存储器单元的数据状态。

在读取期间,系统的操作在状态机112的控制下,状态机112控制向寻址的存储器单元提供不同的控制栅极电压。当它逐步跟踪(stepthrough)与存储器支持的各种存储器状态(例如,状态a、b和c)对应的各种预定义的控制栅极电压(例如,图6a中的vrer/a、vra/b和vrb/c),感测模块可以在这些电压之一处触发,并且将从感测模块经由数据总线172将对应的输出提供给处理器192。此时,处理器192通过考虑感测模块的触发事件和关于经由输入线193从状态机施加的控制栅极电压的信息来确定存储器状态。然后,它计算存储器状态的二进制编码,并将结果数据位存储到数据锁存器组194-197中。在管理电路mc0的另一个实施例中,位线锁存器既用作锁存感测模块的输出的锁存器,也用作如上所述的位线锁存器。

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

在编程或验证操作期间,要编程的数据(写入数据)存储在来自数据总线120的数据锁存器组194-197中、lp和up数据锁存器中。在状态机的控制下,编程操作包括施加到寻址的存储器单元的控制栅极的一系列编程电压脉冲。每个编程电压后跟读回(验证),以确定存储单元是否被编程到所需的存储器状态。在某些情况下,处理器相对于所需的存储器状态来监视读回存储器状态。当两个状态一致时,处理器设置位线锁存器以使位线被拉至指定编程禁止的状态(例如,2-3v)。即使编程电压出现在其控制栅极上,也禁止耦合到位线的存储器单元进一步编程。在其他实施例中,处理器最初加载位线锁存器,并且感测电路在验证过程期间将其设置为禁止值。

每组数据锁存器194-197可以被实现为用于每个感测模块的数据锁存器的堆叠体。在一个实施例中,每个感测模块有三个数据锁存器。在多个实现方式中,数据锁存器被实现为移位寄存器,使得存储在其中的并行数据被转换为用于数据总线120的串行数据,反之亦然。与存储器单元的读取/写入块对应的所有数据锁存器可以链接在一起以形成块移位寄存器,使得可以通过串行传输来输入或输出数据块。特别地,读取/写入模块组被改编成使得它的数据锁存器组中的每一个将从数据总线中顺序地移入或移出数据,好像它们是整个读取/写入块的移位寄存器的一部分。

图4a描绘了在直的nand串实施例中的图1a中的块blk0的示例字线层400的俯视图。如上所述,图1a中的每个块中的字线层1a可分为区域。每个区域可以在堆叠中周期性地形成的狭缝之间延伸,以在存储器器件的制造过程期间处理字线层。该处理可以包括用金属代替字线层的牺牲材料。通常,狭缝之间的距离应该相对较小,以解释蚀刻剂可以横向移动以移除牺牲材料的并且金属可以移动以填充通过移除牺牲材料而产生的空洞的距离的限制。例如,狭缝之间的距离可以允许相邻狭缝之间的几行存储器孔。存储器孔和狭缝的布局也应当可以解释,可以在该区域上延伸同时每条位线连接到不同的存储器单元的位线的数量限制。在处理字线层之后,狭缝可以可选地用金属填充以提供通过堆叠体的互连。

这些图和其他数据并不一定按比例。在实践中,区域可以相对于y方向在x方向上比所描绘的更长以容纳附加的存储器孔。

在该示例中,相邻狭缝之间存在四行存储器孔。这里的一行是在x方向上对齐的一组存储器孔。此外,存储器孔的行是交错图案以增加存储器孔的密度。字线层被划分为各自通过连接器413连接的区域406、407、408和409。在一个方法中,块中的字线层的最后区域可以连接到下一个块中的字线层的第一区域。连接器又连接到用于字线层的电压驱动器。区域406具有沿线412的示例性存储器孔410和411。参见图4c。区域407具有示例性存储器孔414和415。区域408具有示例性存储器孔416和417。区域409具有示例性存储器孔418和419。

每个圆圈表示字线层或选择栅极层的存储器孔的横截面。每个圆圈可以替代地表示由存储器孔中的材料和相邻字线层提供的存储器单元。

金属填充的狭缝401、402、403、404和405(例如,金属互连)可以位于区域406-409的边缘之间并且邻近区域406-409的边缘。金属填充的狭缝提供从堆叠体的底部到堆叠体的顶部的导电路径。例如,堆叠体的底部的源极线可以连接到堆叠体上方的导线,其中导线连接到存储器器件的外围区域中的电压驱动器。

图4b描绘了与图4a一致的示例sgd层420的俯视图。sgd层被分为区域426、427、428和429区。每个区域可以连接到相应的电压驱动器并且与不同的子块相关联。这允许字线层的一个区域中的存储器单元组被同时编程,其中处于相应的nand串中的每个存储器单元连接到相应的位线。可以在每个位线上设置电压,以在每个编程电压期间允许或禁止编程。

区域426具有沿着与位线bl0一致的线412a的示例存储器孔410和411。参见图4c。多个位线在存储器孔的上方延伸,并且连接到如“x”符号所指示的存储器孔。bl0连接到包括存储器孔411、415、417和419的一组存储器孔。另一示例位线bl1连接到包括存储器孔410、414、416和418的一组存储器孔,图4a中的金属填充狭缝401、402、403、404、405也被描绘出,其中它们穿过堆叠体垂直延伸。位线可以在sgd层420上在-x方向上以序列bl0-bl23编号。

位线的不同子集连接到不同行中的单元。例如,bl0、bl4、bl8、bl12、bl16和bl20连接到每个区域的右侧边缘的第一行单元中的单元。参见例如图4f中的区域406的行505,bl2、bl6、bl10、bl14、bl18和bl22连接到相邻行单元中与右手边缘的第一行相邻的单元。参见例如图4f中的区域406的行504。bl3、bl7、bl11、bl15、bl19和bl23连接到每个区域的左侧边缘的第一行单元中的单元。参见例如图4f中的区域406的行502。bl1、bl5、bl9、bl13、bl17和bl21连接到相邻行单元中与右手边缘的第一行相邻的单元。参见例如图4f中的区域406的行503。

图4c描绘了堆叠体440的实施例,其示出了沿图4a的线412和图4b的线412a的横截面视图。除了数据字线层wll0-wll10之外,还提供两个sgd层、两个sgs层和四个虚拟字线层dwllla、dwlllb、dwll2a和dwll2b。对应于nand串ns1和ns2的存储器单元的列被描绘在多层堆叠体中。堆叠体包括基板101、基板上的绝缘薄膜250和源极线sl的部分。ns1在堆叠体的底部444处具有源极端439,在堆叠体的顶部443处具有漏极端438。来自图4a和4b的金属填充狭缝401和402也被描绘出。还描绘了位线bl0的部分。导电通孔441将漏极端438连接到bl0。在图4e和图4f中更详细地示出了堆叠体的区域442。

图4d描绘了图4c的堆叠体440的选择栅极层和字线层的另一视图。sgd层sgd1和sgd2各自包括与一组nand串的漏极侧相关联的选择栅极线的并行的行。例如,sgd1包含与图4b一致的漏极选择栅极区域426、427、428和429。

sgd层以下是漏极虚拟字线层。每个虚拟字线层在一种方法中表示字线,并且连接到堆叠体中给定高度处的一组虚拟存储器单元。例如,dwllla包括字线层区域450、451、452和453。虚拟存储器单元也称为非数据存储器单元,它不存储数据,并且不符合存储数据的资格,而数据存储器单元有资格存储数据。此外,虚拟存储器单元的vth通常在制造时是固定的,或者可以周期性地调整,而数据存储器单元的vth更频繁地变化,例如在数据存储器单元的擦除和编程操作期间。

虚拟字线以下是数据字线层。例如,wll10包括与图4a一致的字线层区域406、407、408和409。

数据字线层以下是源端虚拟字线层。

源端虚拟字线层以下是sgs层。sgs层sgs1和sgs2各自包含与一组nand串的源极侧相关联的选择栅极线的并行的行。例如,sgs1包括源极侧选择栅极线454、455、465和457。在一种方法中,每个选择栅极线可以被独立控制。或者,选择栅极线可以被连接并且被共同控制。

图4e描绘了图4c的区域442的视图。sgd晶体管480和481设置在虚拟存储器单元482和483以及数据存储器单元mc之上。可以沿着存储器孔410的侧壁(sw)和/或每个字线层(例如使用原子层沉积)内沉积多个层。例如,每个列(例如,由存储器孔内的材料形成的柱)可以包括电荷捕获层或薄膜463(例如sin或其它氮化物)、隧道层464、多晶硅体或通道465和电介质核芯466。字线层可以包含阻挡氧化物470、块状高k材料460、金属屏障461和例如作为控制栅极的钨的导电金属462。例如,提供控制栅极490、491、492、493和494。在该示例中,除了金属之外的所有层都设置在存储器孔中。在其他方法中,一些层可以在控制栅极层中。在不同的存储器孔中类似地形成附加柱。柱可以形成nand串的柱状有源区域(activearea,aa)。

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

每个存储器孔可以填充有多个环形层,包括阻挡氧化物层、电荷捕获层、隧道层和通道层。

每个存储器孔的核心区域填充有主体材料,并且多个环形层位于每个存储器孔中的核心区域和wll之间。

在一些情况下,隧道层464可以包括多个层,例如在氧化物-氮化物-氧化物配置中。

图4f描绘了图4a中的区域406,其中存储器单元被布置成四个交错行。还描绘了金属填充缝隙404和406。存储器单元被布置成平行于该区域的边缘500和501延伸的行502、503、504和505。在该示例中,边缘500和501彼此平行并且在区域的相对侧上彼此背离。在该示例中,该区域还包括彼此平行并且在该区域的相对侧上彼此背离的边缘514和517。在一种方法中,边缘514和517垂直于边缘500和501并连接边缘500和501。例如,边缘514和517可以对于不同的字线层重合,或者边缘可以从堆叠体的顶部以阶梯下降。其他配置也是可能的。在一种方法中,如这里所描绘,边缘514和517不与金属互连相邻。编程操作中选择的存储器单元的组410a可以包括区域406中的每个存储器单元。

行502、503、504和505包含分别沿虚线510、511、512和513延伸的存储器单元,分别包括示例性存储器单元506、410、507和411。行502和503位于区域406的一半515中,一半515相比边缘501更靠近边缘500,并且行504和505位于区域406的另一半516中,另一半516相比边缘501更靠近边缘501边缘500。此外,行502和503分别在离边缘500的距离d1a和d1b处,并且行504和505分别在边缘501的距离d2b和d2a处。在一种方法中,存储器孔的行对称地布置在区域的每一侧上,使得d1a=d2a和d1b=d2b,但是其他配置也是可能的。在任何情况下,d1b>d1a,并且d2b>d2a。

在一种方法中,存储器单元组包括与第一边缘(例如,500)相邻的第一行存储器(例如,502),以及与第一行相邻的第二行存储器单元(例如,503)。此外,为了执行存储器单元组的编程操作,控制电路被配置为:向选择的字线层同时施加编程电压并向多个位线施加电压,其中施加到多个位线的电压包括施加到与第一行存储器单元相关联的相应位线的第一电压(例如,vbl=0v)和施加到与第二行存储器单元相关联的相应位线的第二电压(例如,vb1_slow0或vb1_slow1,参见图6b),并且第二电压大于第一电压,并且是正电压。该组存储器单元还可以包含与第二边缘(例如,501)相邻的一行存储器单元(例如505)以及与该行相邻的第二行存储器单元(例如,504)。施加到多个位线的电压包括施加到与一行存储器单元相关联的相应位线的一个电压(例如,0v),以及施加到与另一行存储器单元相关联的相应位线的另一电压(例如,vb1_slow0或vb1_slow1)。

另一个电压可以大于一个电压,并且可以是正电压。一个电压可以等于第一电压,另一个电压可以等于第二电压。

行502和505是边缘行,行503和504是内部行。边缘500可以是第一边缘,其中存储器单元组包括离第一边缘的第一距离d1a处的存储器单元的行502以及离第一边缘的第二距离d1b处的存储器单元的行503,其中第二距离大于第一距离。

图4g描绘了示例字线层的区域406a,其中存储器单元被布置成四个统一的行。金属填充狭缝518和406被描绘出。存储器单元被布置成平行于该区域的边缘532和533延伸的行520、521、522和523。在该示例中,边缘532和533彼此平行并且在区域的相对侧上彼此背离。该区域还包括在该示例中彼此平行并且在该区域的相对侧上彼此背离的边缘530和531。在一种方法中,边缘530和531垂直于边缘532和533并连接边缘500和501。边缘530和531可以对于不同的字线层重合,或者边缘可以从堆叠的顶部以例如阶梯结构阶梯下降。在一种方法中,如这里所描绘,边缘530和531不与金属互连相邻。编程操作中的选择的存储器单元组534a可以包括区域406a中的每个存储器单元。

行520、521、522和523包含分别沿虚线526、527、528和529延伸的存储器单元,分别包括示例性存储器单元534、535、536和537。行520和521位于区域406a的一半524中,一半524相比边缘533更靠近边缘532,并且行522和523位于区域406a的另一半525中,另一半525相比边缘533更靠近边缘501边缘532。此外,行520和521分别在离边缘532的距离d3a和d3b处,并且行522和523分别在离边缘533的距离d4b和d4a处。在一种方法中,存储器孔的行对称地布置在区域的每一侧上,使得d3a=d4a和d3b=d4b,但是其他配置也是可能的。在任何情况下,d3b>d3a,并且d4b>d4a.

图4h描绘了示例字线层的区域406b,其中存储器单元被布置成六个交错行。金属填充狭缝550和551被描绘出。存储器单元被布置成平行于该区域的边缘552和553延伸的行540、541、542、543、544和545。在该示例中,边缘552和553彼此平行并且在区域的相对侧上彼此背离。在该示例中,该区域还包括彼此平行并且在该区域的相对侧上彼此背离的边缘548和549。在一种方法中,边缘548和548垂直于边缘552和553并连接边缘500和501。例如,边缘548和549可以对于不同的字线层重合,或者边缘可以从堆叠的顶部以阶梯下降。在一种方法中,如这里所描绘,边缘548和549不与金属互连相邻。编程操作中的选择的存储器单元组561a可以包括区域406b中的每个存储器单元。

行540、541、542、543、544和545包含分别沿虚线554、555、556、557、558和559延伸的存储器单元,分别包括示例性存储器单元560、561、562、563、564和565。行540、541和542位于区域406b的一半546中,一半546相比边缘553更靠近边缘552,并且行543、544和545位于区域406b的另一半547中,另一半547相比边缘552更靠近边缘553。此外,行540、541和542分别在离边缘552的距离d5a、d5b和d5c处,并且行543、544和545分别在离边缘553的距离d6c、d6b和d6a处。在一种方法中,存储器孔的行对称地布置在区域的每一侧上,使得d5a=d6a、d5b=d6b和d5c=d6c,但是其他配置也是可能的。在任何情况下,d5c>d5b>d5a,并且d6c>d6b>d6a。

行540和545是边缘行,行541和544是第一内部行,行542和543是第二内部行。边缘552可以是第一边缘,其中存储器单元组包括在离第一边缘的第一距离d5a处的存储器单元的行540,在离第一边缘的第二距离d5b处的存储器单元的行541,其中第二距离大于第一距离,并且存储器单元的的行542在离第一边缘的第三距离d5c处,其中第三距离大于第二距离。

图4i描绘了存储器单元行的本征编程速度和该行与字线层(wll)的边缘的距离的曲线图。存储器单元的编程速度可以被定义为当施加编程电压时存储器单元的vth的增加。编程速度是编程斜率的函数,其是施加具有给定步长的连续编程电压时的vth的增加率。已经观察到,存储器单元的编程速度可以基于wll中的存储器单元的位置而变化。在某些情况下,当存储器单元距离字线层的边缘相对较远时,编程速度相对较高。类似地,存储器单元组(诸如存储器单元行)的编程速度可以基于字线层中的组的位置而变化。

该曲线表示当与wll边缘的距离相对较大时,存储器单元行的编程速度相对较高。例如,在图4f中,行503和504将分别具有比行502和505更高的编程速度。此外,行502、503、504和505的编程速度可以分别与d1a、d1b、d2b和d2a成比例。例如,行的编程速度可以是行中的存储器单元的编程速度的平均值或中值。编程速度的变化可能是由于工艺变化或缺陷,这可能导致不同位置的存储器单元的结构差异和因此的电气行为差异。字线层与金属互连之间的相互作用也可能影响编程速度。

编程速度和斜率的差异导致更广泛的自然(natural)vth分布。此外,随着编程电压的增加,这种分布可能扩大。可能需要更高的最终编程电压和更多的编程循环来完成编程操作。因此,编程性能会降低,编程干扰会更严重。本文提供的技术通过平衡在存储器单元组上的编程速度和斜率来克服这些问题。该技术导致整体更快的编程、更窄的vth分布、编程干扰降低和更好的可靠性。

图4g中,行521和522将分别具有比行520和523相对更高的编程速度。行520、521、522和523的编程速度可以分别与d3a、d3b、d4b和d4a成比例。

图4h中,行542和543将分别具有比行541和544相对更高的编程速度。行541和544将分别具有比行540和545相对更高的编程速度。行540、541、542、543、544和545的编程速度可以分别与d5a、d5b、d5c、d6c、d6b和d6ca成比例。

图5描绘了一种编程操作,其基于它们在字线层内的位置来提供对存储器单元的不同本征编程速度的补偿。该过程用于编程字线,并且可以重复用于编程附加字线。在步骤590,对选择的字线层中的存储器单元开始编程操作。在步骤591中,选择字线层中的存储器单元的区域,并且对编程电压vpgm进行初始化。例如,图4a中的区域4064a可被选择用于编程,之后依次选择区域407、408和409用于在选择的字线层中进行编程。随后,可以选择另一个字线层进行编程,等等。

在步骤592,执行编程-验证迭代。这可以涉及步骤593-595。多个编程-验证迭代的每个编程-验证迭代包括编程部分(例如,编程电压),随后是验证部分(例如,一个或多个验证电压和相关联的感测操作)。在步骤593,将编程电压施加到选择的字线层,而位线电压被设置为禁止或允许编程。参见例如图7a和7b。该区域中的每个存储单元可以经由其中存储器单元所在的nand串的漏极端连接到相应的位线。步骤593a提供了一种选择,用于基于该区域中的存储器单元的位置和/或本征编程速度来设置存储器单元的不同位线电压。参见例如图6b和7b。例如,可以基于特定单元所在的行来设置特定单元的位线电压。步骤594使用验证电压执行一个或多个验证测试。参见例如图7c。步骤594a提供了测量存储器单元的编程速度的选择。参见例如图6c、6d以及6f。步骤594b提供了一种选择,用于基于测量的编程速度和/或该区域中的位置来为存储器单元设置不同的偏移验证电压。参见例如图6e和7d。

步骤595涉及为通过验证测试的单元设置锁定状态。例如,可以在与存储器单元相关联的锁存器中设置该状态。判定步骤596确定是否存在该区域的下一个编程-验证迭代。如果该区域中的所有或几乎所有的存储器单元已被编程,则步骤596为否。如果判定步骤596为是,则步骤596a增加vpgm,并且步骤592开始下一个编程-验证迭代。如果判定步骤596为否,则判定步骤597确定是否存在要在选择的字线层中编程的存储器单元的下一个区域。如果判定步骤597为是,则步骤591选择存储器单元的另一区域来对vpgm进行编程和初始化。如果判定步骤597为否,则字线层的编程操作在步骤598结束。

在一个实现方式中,参照图4f-4h,选择的字线层包括第一边缘(例如,边缘500或501、532或533、或552或553),该存储器单元组包括在离第一边缘的第一距离(例如,dla或d2a、d3a或d4a或d5a或d6a)处的第一行存储器单元(例如,行503或505、520或523、或541或544),和在离第一边缘的第二距离(例如,d1b或d2b、d3b或d4b、或d5b或d6b)处的第二行存储器单元,其中该第二距离大于该第一距离。此外,执行编程操作包括对选择的字线层执行多个编程-验证迭代,其中多个编程-验证迭代的每个编程-验证迭代包括编程部分,随后是验证部分,并且其中多个编程-验证迭代中的至少一个编程-验证迭代为第一存储器单元和第二行存储器单元的不同编程速度提供补偿。例如,补偿可以包括调整在编程部分期间使用的位线电压和/或在验证部分期间用于触发慢速编程模式的目标数据状态的相应偏移验证电压。补偿可以基于编程速度。

此外,补偿可以相对于第一和第二行在离第一边缘的第三距离(例如,d5c或d6c)处来解释存储器单元第三行(例如,图4h中的行542或543)的不同编程速度。

图6a描绘了与图5的过程一致的存储器单元组的阈值电压(vth)分布和示例读取电压。横轴表示vth,纵轴表示对数刻度上的多个存储器单元。为了清楚起见,以简化的形式示出了vth分布。

在一种方法中,一种编程通过操作(也称为全序列编程)(仅)涉及多个编程-验证操作(或编程循环)的一个序列,该序列从初始vpgm电平开始执行并进行到最终vpgm电平,直到选择的存储器单元组的阈值电压达到相应目标数据状态的一个或多个相应的验证电压。所有的存储器单元都可以在编程通过开始时处于擦除状态。

一种情况提供了存储器单元阵列的示例vth分布,其中每个存储器单元以四个可能的vth范围之一存储两位数据。一位表示lp数据,另一位表示up数据。位组合可以由up位后跟lp位来表示,例如,11表示up=1,lp=1,01表示up=0,lp=1,00表示up=0,lp=0,10表示up=1,lp=0。位组合存储在诸如图1d中的一组锁存器中。例如,lp位可以存储在ldl中,up位可以存储在udl中。在另一示例中,每个存储器单元将三位数据存储在八个可能的vth范围之一中。

为擦除(er)状态存储器单元提供第一vth分布600。vth分布601、602和603分别表示当存储器单元的vth超过验证电压vva、vvb或vvc时存储器单元达到的目标数据状态a、b和c。vver是擦除验证电压。

在完成编程通过之后,可以使用在vth分布之间的读取参考电压vrer/a、vra/b和vrb/c从存储器单元读取数据。通过测试给定存储器单元的vth是否高于或低于一个或多个读取参考电压,系统可以确定由存储器单元表示的数据状态。

可选偏移验证电压也被描绘出。为了在最小化编程时间损失(penalty)的同时获得窄的vth分布,当其vth超过偏移验证电压时,可以对存储器单元实现慢编程模式,该偏移验证电压低于存储器单元被编程为的目标数据状态的最终验证电压。例如,对于a状态,vva_off0和vva_off1是示例偏移验证电压,vva是最终验证电压。对于b状态,vvb_off0和vvb_off1是示例偏移验证电压,vvb是最终验证电压。对于c状态,vvc_off0和vvc_off1是示例偏移验证电压,vvb是最终验证电压。可以通过将相关联的位线电压提升到正值来实现对于存储器单元的慢速编程模式,从而减慢存储器单元的编程。在慢速编程模式之前,存储器单元可以处于快速编程模式,其中vb1=0v以使编程速度最大化。因此,存储器单元的vth可以以相对快的速率增加,每个编程电压最初处于编程操作中,直到vth移动到接近最终验证电压。此时,存储器单元的vth随每个编程电压以相对更慢的速率增加,使得其不会过度超过最终验证电压。当存储器单元的vth超过最终验证电压时,例如通过在编程操作的后续编程电压期间将vb1设置为高电平(例如2-3v),将存储器单元锁定为不进行进一步的编程。

在该示例中,作为示例,针对每个目标数据状态存在两个偏移验证电压。通过为目标数据状态提供两个(或多个)偏移验证电压,具有不同本征编程速度(但相同的目标数据状态)的存储器单元可以在不同时间和/或当满足不同的标准时开始慢速编程模式。例如,当存储器单元的vth超过vva_off0、vvb_off0和vvc_off0时,具有相对快的本征编程速度的a、b或c状态存储器单元可以开始慢速编程模式。当存储器单元的vth分别超过vva_off1、vvb_off1和vvc_off1时,具有相对更慢的本征编程速度的a、b或c状态存储器单元可以开始慢编程模式。通过基于存储器单元的本征编程速度调整用于触发慢速编程模式的偏移验证电压,可以为所有存储器单元实现更窄的vth分布。

在另一种方法中,为第二(和/或第三)行存储器单元提供用于触发慢速编程模式的目标数据状态(分别为a、b、c)的相应偏移验证电压(例如,vva_off0、vvb_off0、vvc_off0),而不提供用于触发第一行存储器单元的慢速编程模式的目标数据状态的相应偏移验证电压。该方法可以减少编程时间,因为与为所有行提供相应的偏移验证电压的情况相比,感测操作的数量减少。具有最慢编程速度的行可能不需要各自的偏移验证电压以实现足够窄的vth分布。

图6b描绘了与图5的步骤593a一致的位线电压与存储器单元行的本征编程速度的曲线图。本征编程速度可以是vb1=0v的速度,例如,在快速编程模式中。编程速度可以以任意单位测量,例如在指定数量的编程电压之后超过指定验证电压的单元的数量或部分,需要导致超过指定验证电压的指定数量的单元的编程电压(例如,编程-验证迭代)的数量,表明每个编程电压的vth增加速率的度量或一些其他度量。可以调整位线电压以减慢具有较高本征编程速度的存储器单元,使得所有单元具有基本相似的有效编程速度。

在不同情况下可以使用提高的位线电压。在一种可能的情况下,不使用偏移验证电压,并且提高的vb1可以被施加到更快的编程单元组,而vbl=0v被施加到更慢的编程单元组。这减慢了更快的编程单元组,以平衡所有单元的有效编程速度。在一种方法中,在编程操作的每个编程电压期间,提高的vb1被施加到更快的编程单元组,使得更快的变成单元组在整个编程操作中处于慢速编程模式。

在另一种可能的情况下,只有在存储器单元的vth已经超过偏移验证电压之后,提高的vb1被用于更快的编程单元组。在在这种情况下,更快的编程单元组最初处于快速编程模式,随后在编程操作期间处于慢速编程模式。在另一种可能的情况下,只有在存储器单元的vth超过偏移验证电压之后,提高的vb1也被用于更慢的编程单元组。在这种情况下,更慢的编程单元组最初处于快速编程模式,随后在编程操作期间处于慢速编程模式。对于目标数据状态,对于更慢和更快编程单元组,偏移验证电压可以相同,而对于更快的编程单元组,vb较高。或者,对于更快的编程单元组,偏移验证电压可以较低,因此与更慢的编程单元组相比,更快的编程单元组处于慢速编程模式用于更多的编程-验证迭代。

在该示例中,如果在每个编程电压期间,一行单元的编程速度低于值ps0,vbl=0v,则这些单元不使用慢速编程模式。如果一行单元具有ps0-ps1的编程速度,vb1=vb1_slow1,则这些单元使用弱慢速编程模式。如果一行单元具有高于ps1的编程速度,vb1=vb1_slow0,则这些单元使用强慢速编程模式。vb1锁定是抑制存储器单元的编程的相对高的电压。一行存储器单元的本征编程速度可以通过制造时和/或当存储器件在最终用户手中时的测试确定。

例如,在图4f中,行503可以具有高于ps1的编程速度。可以根据阶梯状实线619a将对应的位线电压设置在多个离散电平的一个电平,例如vb1_slow0。或者,可以根据逐渐增加的函数来设置位线电压,如虚线619b所示。可以基于组的编程速度的测量(例如,平均值或中值)为单元组设置位线电压。

另一个选择是在慢速编程模式下具有三个或更多类别的编程速度,该编程速度具有对应数量的不同位线电压。例如,在图4h中,行543、544和545的位线电压可以分别是第一高、第二高和第三高。例如,在图4h中,行543、544和545的位线电压可以分别是第一高、第二高和第三高。

在一种方法中,当编程操作开始时提供基于编程速度的位线电压,以平衡存储器单元中的编程速度和斜率。位线电压可以由编程速度和斜率两者确定。在这种方法中,抑制了单元编程速度和编程斜率之间的变化,并且自然vth分布宽度将变窄。结果,编程单元的最终vth分布宽度将变窄。此外,由于存储器单元的编程速度从一开始就对齐,所以可以将启动编程电压设置得更高,以缩短整个编程时间。

图6c描绘了存储器单元行的编程速度与在n次编程-验证(p-v)迭代后具有vth>验证电压的单元的数量(#)的曲线图,与图5的步骤594a一致。在该选择中,在编程操作期间确定存储器单元的编程速度。通常,可以通过观察编程操作的初始部分期间(例如在初始数量的编程-验证迭代期间)vth增加的速度来确定存储器单元组的编程速度。例如,可以使用指定的验证电压作为检查点。可以在第n个编程-验证迭代的验证部分中计数具有比检查点高的vth的存储器单元的数量,其中n是一个或多个的正整数。当数量相对较高时,编程速度相对更快。一旦对编程速度进行了确定,该信息可以用于调整编程操作的其余部分,例如在剩余数量的编程-验证迭代期间。在一种方法中,对正被编程到相对低的目标数据状态(例如a状态)的存储器单元确定编程速度。例如,可以在第三编程-验证迭代中计数具有vth>vva的a状态单元的数量。还参见图6f。可以假设编程速度与目标数据状态无关,因为目标数据状态被随机分配给存储器单元。

在另一种方法中,对正被编程到每个目标数据状态的存储器单元确定编程速度。例如,可以在第三编程-验证迭代中计数具有vth>vva的数量a、b和c状态单元。通过使用现有的验证电压例如vva,作为检查点验证电压,这避免使用附加的验证电压,而使用附加的验证电压会导致附加的感测操作和对应的时间损失。

对编程操作的其余部分的调整可以涉及例如偏移验证电压和/或位线电压的设置。例如,参见图6e关于偏移验证电压。关于位线电压,图6b表明对于具有相对高的编程速度的单元(或诸如行的单元组),如何将vb1设置为相对较高的电平,vb1_slow0,对于具有相对低的编程速度的单元(或诸如行的单元组),如何将vb1设置为相对较低的电平,vb1_slow1。

图6d描绘了存储器单元行的编程速度与指定数量的存储器单元具有vth>验证电压需要的的p-v迭代的数量(#)的曲线图,与图5的步骤594a一致。例如,可以对编程-验证迭代的数量进行计数,这些迭代需要使至少80%的a状态单元具有vth>vva,或至少80%的a、b和c状态单元具有vth>vva。这个数量是正整数。当数量相对较高时,编程速度相对更慢。而图6d中获得的数量提供了编程速度的有效指示,图6c中获得的数量在测量编程速度方面提供了更高的粒度。

图6e描绘了存储器单元行的示例目标数据状态(例如,b状态)的验证电压与存储器单元的编程速度的曲线图,与图5的步骤594b一致。曲线620描绘了b状态的最终验证电压。曲线621描绘了相对高的偏移验证电压vvb_off1,其用于具有相对更慢的编程速度(低于psd的分界电平)的存储器单元行和使用相对低的偏移验证电压vvb_off0,其用于具有相对较高的编程速度(高于psd)的存储器单元行。基于编程速度,其他目标数据状态也可以具有不同的偏移验证电压。可选地,三个或更多个偏移验证电压可以用于目标数据状态的单元。例如,在图4h中,行545、544和543的目标数据状态的偏移验证电压可以分别是第一高、第二高和第三高。使用多个偏移验证电压可能导致由于附加的感测操作而造成的时间损失。

例如,在图4f中,行503可以具有高于psd的编程速度,而行502具有低于psd的编程速度。根据阶梯状实线621a,可以将对应的偏移验证电压设置为多个离散电平的一个电平,例如vvb_off1或vvb_off0。或者,可以根据逐渐减小的函数来设置偏移验证电压,如虚线621b所示。可以基于组的编程速度的测量(例如,平均值或中值)为单元组设置目标数据状态的偏移验证电压。在一种方法中,对于单元组,对于不同的目标数据状态,最终验证电压和偏移验证电压之间的差是相等的。在另一种方法中,对于单元组,不同的目标数据状态的差异是不同的。例如,对于相对较高的目标数据状态,差异可以相对较大。

另一个选择是为不同的目标数据状态提供不同数量的偏移验证电压。例如,为最高目标数据状态(例如c状态)提供一个偏移验证电压就足够,而为第二高目标数据状态(例如b状态)提供两个偏移验证电压,这是由于对于c状态的较大超出vth的容限。

图6f描绘了当测量编程速度时存储器单元的vth分布,与图5的步骤594a及图6c及6d一致。这里,用于测量编程速度的示例验证电压为vva。当擦除状态对存储器单元进行编程时,作为示例,在三个编程-验证迭代之后获得vth分布601c。具体地说,从擦除状态的vth分布600开始,在一个、两个、三个和四个编程-验证迭代或编程电压之后获得vth分布601a、601b、601c和600。vth分布601c的区域601d指示具有vth>vva的单元的数量。如所讨论的,这样的单元的计数可以作为编程速度的度量。

在一个示例中,在多个编程-验证迭代的指定数量的编程-验证迭代之后,在离字线层的区域的边缘一定距离处的存储器单元行的编程速度基于行中达到指定阈值电压(例如,vva)的存储器单元的数量。例如,可以在三次编程验证迭代之后测量该数量,这与图6c一致(n=3)。在另一示例中,可以在每个编程-验证迭代之后测量达到指定阈值电压的行中的存储器单元的数量,直到该数量大于指定数量,例如所有单元的80%。在任一种情况下,用于测量编程速度的存储器单元可以是所有正被编程的单元,或被编程的单元的子集。例如,子集可以是具有一个或多个指定目标数据状态的单元。在另一种方法中,该子集可以是与第n位线相关联的单元,其中n是两个或更多个的正整数。

编程速度可以基于单元组何时达到编程里程碑(milestone)。例如,在离第一边缘第一距离处的第一行存储器单元的编程速度可以基于第一行存储器单元达到编程的里程碑所需的多个编程-验证迭代的编程-验证迭代的数量,并且在离第一边缘第二距离处的第二行存储器单元的编程速度可以基于第二行存储器单元达到相同或另一个编程里程碑所需的多个编程-验证迭代的编程-验证迭代的数量。例如,当第一行存储器单元中的至少指定数量的存储器单元达到指定的阈值电压(例如,vva)时,第一行存储器单元可以满足编程里程碑。当第二行存储器单元中的至少指定数量的存储器单元达到指定的阈值电压时,第二行存储器单元可以满足编程里程碑。对于不同行或其他组,指定阈值电压可以相同或不同。

图6g描绘了与图5的步骤593a一致的位线电压与不同存储器单元行的本征编程速度差的曲线图。这种方法设置存储器单元中更快编程行(例如,图4f中的行503)的位线电压,该位线电压与其编程速度超过更慢编程的存储器单元行(例如图4f中的行502)的编程速度的量成比例。参考图6f,在三次编程-验证迭代之后,例如,可以确定在行502中编程的70%的存储器单元具有vth>vva和80%的存储器单元具有vth>vva。相应地,编程速度的差异由10%的存储器单元的度量表示。基于编程的其余部分的差异,可以对更快编程的存储器单元行修改位线电压和/或偏移验证电压。该方法有利地在编程期间基于单元行的相对速度提供补偿,使得可以实现有效编程速度的最佳均衡。

在另一种方法中,可以执行单独的测试过程以在编程操作之前确定相对编程速度。例如,测试过程可以涉及对存储器单元施加固定数量的编程电压,并且通过对每个单元组超过指定vth的单元的数量计数来测量编程速度。响应于该测试,控制器可以存储用于正常编程操作的数据,其中用户数据存储在该存储器单元组中。

图7a描绘与图5的步骤593一致的编程电压组。垂直轴描绘vcg、控制栅极或字线电压,横轴描绘时间或编程循环数量(例如,编程-验证迭代数量)。具有四个数据状态的一遍编程操作在图7a-7e中描绘。其他选项也是可能的。编程操作包括一系列包含编程电压701-709的波形700。执行增量步进脉冲编程,使得vpgm在初始电平vpgm_int开始,并在每个编程循环中逐步增加。该示例还基于编程循环执行验证测试(参见图7c-7e)。例如,在循环1和2中验证a状态单元,在循环3-5中验证a和b状态单元,在循环6-8中验证b和c状态单元,并且在循环9中验证c状态单元。图7a-7e的横轴是按时间校准的。

图7b描绘与图5的步骤593和593a及图6b一致的一组位线电压。每个短的水平线表示可以在给定单元的对应编程电压期间施加的位线电压。例如,vb1_inhabit可以被施加到具有锁定状态的存储器单元的位线(例如,已经完成对目标数据状态的编程的擦除状态单元或存储器单元)。可以在所有编程电压期间或在这些单元达到偏移验证电压之后发生的编程电压期间,以相对高的本征编程速度施加到存储器单元。例如,这可以是离字线层的区域的边缘合相邻的金属互连最远的单元行。

vb1_slow0可以以相对低的本征编程速度施加到存储器单元,例如在这些单元达到偏移验证电压之后发生的编程电压期间。例如,其可以是最靠近字线层的区域的边缘和相邻的金属互连的单元行。在这些单元达到偏移验证电压之前发生的编程电压期间,可以为这些单元设置vbl=0v。

图7c描绘了一组验证电压,与图5的步骤594一致。编程循环1和2中的波形711和712分别具有vva的幅度。编程循环3、4和5中的波形713、714和715分别具有vva和vvb的幅度。编程循环6、7和8中的波形716、717和718分别具有vvb和vvc的幅度。编程循环9中的波形719具有vvc的幅度。在该示例中,不使用偏移验证电压。而是使用目标数据状态的最终验证电压,而没有偏移验证电压。使用不同的位线电压,如图7b所示,可用于均衡不同行或其他组的存储器单元的有效编程速度。

具体地说,在编程循环1和2中,对vva的a状态单元进行感测。在编程循环3、4和5中,对vva处的a状态单元和vvb处的b状态单元进行感测。在编程循环6、7和8中,对vvb处的b状态单元和vvc处的c状态单元都进行感测。在编程循环9中,对在vvc处的c状态单元进行感测。

图7d描绘了与图5的步骤594和594b及图6a一致的验证电压组,其中对于每个目标数据状态使用两个偏移验证电压和最终验证电压。编程循环1和2中的波形721和722分别具有vva_off0、vva_off1和vva的幅度。编程循环3、4和5中的波形723、724和725分别具有vva_off0、vva_off1、vva、vvb_off0、vvb_off1和vvb的幅度。编程循环6、7和8中的波形726、727和728分别具有vvb_off0、vvb_off1、vvb、vvc_off0、vvc_off1和vvc的幅度。编程循环9中的波形729具有vvc_off0、vvc_off1和vvc的幅度。

具体来说,在编程循环1和2中,对具有较高本征编程速度vva_off0和vva的行中的a状态单元以及具有较低本征编程速度vva_off1和vva的行中的a状态单元进行感测。在编程循环3、4和5中,对具有较高本征编程速度vva_off0和vva的行中的a状态单元、具有较低本征编程速度vva_off1和vva的行中的a状态单元、对具有较高本征编程速度vvb_off0和vvb的行中的b状态单元、具有较低本征编程速度vvb_off1和vvb的行中的b状态单元进行感测。在编程循环6、7和8中,对具有较高本征编程速度vvb_off0和vvb的行中的b状态单元、具有较低本征编程速度vvb_off1和vvb的行中的b状态单元、对具有较高本征编程速度vvc_off0和vvc的行中的c状态单元、具有较低本征编程速度vvc_off1和vvc的行中的c状态单元进行感测。在编程循环9中,对具有较高本征编程速度vvc_off0和vvc的行中的c状态单元以及具有较低本征编程速度vvc_off1和vvc的行中的c状态单元进行感测。

可以将控制器配置为知道哪些存储器单元处于更快编程或更慢编程的单元组中。例如,进一步讨论图4b和4f,控制器可以被配置为知道第一组位线bl0、bl4、bl8、bl12、bl16和bl20连接到行505(更慢编程单元组)中的单元,第二组位线bl2、bl6、bl10、bl14、bl18和bl22连接到行504(更快编程单元组)中的单元,第三组位线bl3、bl7、bl11、bl15、bl19和bl23连接到行502(更慢编程单元组)中的单元,并且第四组位线bl1、bl5、bl9、bl13、bl17和bl21连接到行503(更快编程单元组)中的单元。此外,每个位线可以连接到相应的感测电路(例如,图3中的感测模块)。此外,锁存器(图3)存储识别要编程的存储器单元的目标数据状态的数据。锁存器指示将保持在擦除状态或已经完成编程到目标数据状态的存储器单元的锁定状态。

锁存器还可以指示存储器单元何时在偏移验证电压和最终验证电压之间具有vth,使得可以触发用于存储器单元的缓慢编程模式。

因此,连接到这些位线的特定组的感测电路的感测结果与具有已知相对编程速度的特定存储器单元行或其它存储器单元组相关联。在给定验证电压下的感测操作期间,相关的感测结果由控制器使用。例如,当在vvb_off0下感测时,感测结果用于更快的编程的存储器单元,该存储器单元与bl1、bl5、bl9、bl13、bl17和bl21以及bl2、bl6、bl10、bl14、bl18和bl22中的任何一个相关联,并且根据锁存器,该存储器单元被编程到b状态并且还没有达到vvb_off0。当在vvb_off1下感测时,感测结果用于更慢的编程的存储器单元,该存储器单元与bl0、bl4、bl8、bl12、bl16和bl20以及bl3、bl7、bl11、bl15、bl19和bl23中的任何一个相关联,并且根据锁存器,该存储器单元被编程到b状态并且还没有达到vvb_off1。例如,当在vvb下感测时,感测结果用于任一存储器单元,根据锁存器,该任一存储器单元被编程到b状态并且还没有达到vvb。一个相似的过程可以被施加到其他目标数据状态上。

图7e描绘了与图5的步骤594和594b及图6a一致的验证电压组,其中对于每个目标数据状态使用一个偏移验证电压和最终验证电压。编程循环1和2中的波形731和732分别具有vva_off0和vva的幅度。编程循环3、4和5中的波形733、734和735分别具有vva_off0、vva、vvb_off0和vvb的幅度。编程循环6、7和8中的波形736、737和738分别具有vvb_off0、vvb、vvc_off0、和vvc的幅度。编程循环9中的波形739具有vvc_off0和vvc的幅度。

具体来说,在编程循环1-5中,无论在vva_off0和vva处的本征编程速度如何,对于所有a状态单元都进行感测。在编程循环3、4和5中,对vvb_off0和vvb处的b状态单元也进行感测。在编程循环6、7和8中,对vvb_off0和vvb处的b状态单元以及vvc_off0和vvc处的c状态单元进行感测。在编程循环9中,对vvc_off0和vvc处的c状态单元进行感测。

因此,可以看出,用于三维堆叠存储器器件的编程技术基于相对于字线层的边缘的组的位置,来为不同存储器单元组的不同的本征编程速度提供补偿。距离边缘更大的距离与更快的编程速度相关联。一种方法中,通过提高用于更快编程存储器单元的位线电压来使编程速度均衡。偏移验证电压通过提高位线电压触发慢速编程模式,偏移验证电压也可以基于组位置来设置。可以在对于单元行或其他单元组的编程期间测量编程速度,以设置位线电压和/或偏移验证电压。对更快编程存储器单元的补偿也可以基于它们相对于更慢编程存储器单元的速度。

在一个实施例中,一种用于在3d堆叠存储器器件中编程的方法,包括:对存储器单元组执行编程操作,存储器单元组连接到多个字线层之中的选择的字线层,多个字线层通过堆叠体中的电介质层彼此垂直间隔开,其中存储器单元组中的每个存储器单元与多个位线中相应的位线相关联,选择的字线层包括第一边缘,存储器单元组包括第一行存储器单元和第二行存储器单元,第一行存储器单元在离第一边缘的第一距离处,第二行存储器单元在离第一边缘的第二距离处,其中第二距离大于第一距离。执行编程操作包括:对选择的字线层执行多个编程-验证迭代,多个编程-验证迭代的每个编程-验证迭代包括编程部分,随后是验证部分,其中多个编程-验证迭代中的至少一个编程-验证迭代位第一行存储器单元和第二行存储器单元的不同编程速度提供补偿。

在另一个实施例中,一种3d堆叠存储器器件包括:通过堆叠体中的电介质层彼此垂直间隔开的多个字线层,多个字线层包括选择用于编程的选择的字线层,选择的字线层在第一边缘和第二边缘之间延伸,包括存储器单元组,存储器单元组包括与第一边缘相邻的第一行存储器单元和与第一行相邻的第二行,存储器单元组中的每个存储器单元与多个位线中的相应位线相关联。器件还包括:控制电路,为了对存储器单元组执行编程操作,该控制电路被配置为:同时向选择的字线层施加编程电压和向多个位线施加电压,其中施加到多个位线的电压包括施加到与第一行存储器单元相关联的相应位线的第一电压和施加到与第二行存储器单元相关联的相应位线的第二电压,并且第二电压大于第一电压,并且是正电压。

在另一个实施例中,一种3d堆叠存储器器件的存储器控制器包括:存储器件,其包括指令组,和可操作以执行该指令组的处理器。该指令组包括:对存储器单元组执行编程操作的指令,存储器单元组连接到多个字线层之中选择的字线层,多个字线层通过堆叠体中的电介质层彼此垂直间隔开,且存储器单元组中的每个存储器单元与多个位线之中的相应位线相关联。执行编程操作的该指令包含将编程电压施加到选择的字线层的指令,同时基于选择的字线层内的相关联的存储器单元的位置向每个相应位线施加电压。

在另一个实施例中,一种3d堆叠存储器器件包括:通过堆叠体中的电介质层彼此垂直间隔开的多个字线层,多个字线层包括选择用于编程的选择的字线层,选择的字线层在第一边缘和第二边缘之间延伸,包括存储器单元组,存储器单元组包括在离第一边缘的第一距离处的存储器单元行和离第一边缘的第二距离处的存储器单元行,存储器单元组中的每个存储器单元与多个位线中的相应位线相关联。该器件还包括控制电路,其中为了对存储器单元组执行编程操作,控制电路被配置为:对选择的字线层执行多个编程-验证迭代,多个编程-验证迭代中的每个编程-验证迭代包括编程部分,随后是验证部分,其中对于多个编程-验证迭代中的至少一个编程-验证迭代,在离第一边缘的第一距离处的存储器单元行的参数值与在离第一边缘的第二距离处的存储器单元行的参数值不同。

前述对本发明的详细描述被呈现以旨在说明和描述。它不旨在穷尽或限制本发明为公开的精确形式。很多修改和变化在上述教导的启发下是可能的。选择所描述的实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域的技术人员最好地利用各种实施例中的发明且各种变化的修改适合于预期的特定用途。本发明的范围由所附的权利要求限定。

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