首页 / 专利库 / 专利权 / 形式要求 / 缺陷 / 缺陷字线检测

缺陷字线检测

阅读:25发布:2020-05-13

专利汇可以提供缺陷字线检测专利检索,专利查询,专利分析的服务。并且提供了用于检测字线中的 缺陷 的方法和非易失性存储系统。可以检测“断”字线缺陷。可以保持关于哪些存储元件是用来被编程至追踪状态的信息。然后,在编程完成之后,读取存储元件以确定哪些存储元件具有在与追踪状态相关联的参考 电压 电平之下的 阈值 电压。通过追踪哪些存储元件处于追踪状态,可以过滤出与其他状态相关联的元件,使得可以精确估计哪些存储元件是编程不足的。根据该信息,可以确定字线是否为有缺陷的。例如,如果太多的存储元件是编程不足的,则这可以指示断字线。,下面是缺陷字线检测专利的具体信息内容。

1.一种用于操作非易失性存储器的方法,包括:
编程与字线相关联的一组非易失性存储元件,所述非易失性存储元件被编程至多个数据状态(1002);
在所述编程完成之后保持信息,所述信息指示所述非易失性存储元件中的哪些非易失性存储元件被用来编程至所述多个数据状态中的第一数据状态(1004);
在所述编程之后将第一参考电压施加到所述字线的第一端,所述第一参考电压与所述第一数据状态相关联(1006);
确定施加所述参考电压的结果(1008);以及
基于所述结果和保持的所述信息来确定所述字线是否具有异常高的电阻部分(1010)。
2.根据权利要求1所述的方法,其中,所述编程包括:
将第二参考电压施加到所述字线的所述第一端以验证非易失性存储元件是否被编程至所述第一数据状态,所述第一参考电压具有第一持续时间,所述第二参考电压具有比所述第一持续时间短的第二持续时间。
3.根据权利要求2所述的方法,其中,对于所述第二参考电压而言所述第二持续时间不足以使被用来编程至所述第一数据状态并且经过了所述字线的异常高的电阻部分的非易失性存储元件传导电流
4.根据权利要求3所述的方法,其中,对于所述第一参考电压而言所述第一持续时间足以使被用来编程至所述第一数据状态并且经过了所述字线的异常高的电阻部分的非易失性存储元件传导电流。
5.根据权利要求1至4中任一项所述的方法,其中,确定所述字线是否具有异常高的电阻部分包括:
确定被用来编程至所述第一数据状态并且响应于所述第一参考电压而传导电流的非易失性存储元件是否大于非易失性存储元件的阈值数量。
6.根据权利要求1至5中任一项所述的方法,其中,用于所述非易失性存储元件中的第一非易失性存储元件的信息被保持在数据存器中,所述数据锁存器在所述第一非易失性存储元件的编程期间使用。
7.根据权利要求6所述的方法,还包括释放至少一个其他的数据锁存器,所述至少一个其他的数据锁存器存储关于要被编程到所述第一非易失性存储元件中的状态的信息,该数据锁存器在编程完成之前被释放。
8.根据权利要求1至7中任一项所述的方法,其中,所述编程包括:
将与编程所述组中的所有的非易失性存储元件不同的模式编程至所述多个数据状态中的最高数据状态,所述编程在设备合格期间进行。
9.一种非易失性存储设备,包括:
多个非易失性存储元件;
多条字线(WL0,WL1,WL2…),第一字线与所述多个非易失性存储元件中的一组非易失性存储元件相关联,所述多条字线中的每一条字线具有第一端;
一个或多个管理电路(244,220,230,240,242),其与所述多条字线通信,所述一个或多个管理电路将与所述第一字线相关联的非易失性存储元件组编程至多个数据状态(例如Er,A,B…),所述一个或多个管理电路在所述编程完成之后保持信息,所述信息指示所述非易失性存储元件中的哪些非易失性存储元件被用来编程至所述多个数据状态中的第一数据状态,所述一个或多个管理电路在所述编程之后将第一参考电压施加到所述字线的第一端,所述第一参考电压与所述第一数据状态相关联,所述一个或多个管理电路确定施加所述参考电压的结果,所述一个或多个管理电路基于所述结果和保持的所述信息来确定所述字线是否具有异常高的电阻部分。
10.根据权利要求9所述的非易失性存储设备,其中,作为所述编程的一部分,所述一个或多个管理电路将第二参考电压施加到所述字线的所述第一端以验证非易失性存储元件是否被编程至所述第一数据状态,所述第一参考电压具有第一持续时间,所述第二参考电压具有比所述第一持续时间短的第二持续时间。
11.根据权利要求10所述的非易失性存储设备,其中,对于所述第二参考电压而言所述第二持续时间不足以使被用来编程至所述第一数据状态并且经过了所述字线的异常高的电阻部分的非易失性存储元件传导电流。
12.根据权利要求11所述的非易失性存储设备,其中,对于所述第一参考电压而言所述第一持续时间足以使被用来编程至所述第一数据状态并且经过了所述字线的异常高的电阻部分的非易失性存储元件传导电流。
13.根据权利要求9至12中任一项所述的非易失性存储设备,其中,作为确定所述字线是否具有异常高的电阻部分的一部分,所述一个或多个管理电路确定被用来编程至所述第一数据状态并且响应于所述第一参考电压而传导电流的非易失性存储元件是否大于非易失性存储元件的阈值数量。
14.根据权利要求9至13中任一项所述的非易失性存储设备,还包括:
多组(394,395,396,397)锁存器(ADL,BDL,CDL,DDL),每组锁存器与所述组中的非易失性存储元件之一相关联,与每个非易失性存储元件相关联的锁存器组包括数据锁存器(ADL,BDL,CDL)以及附加锁存器(DDL),所述数据锁存器用于存储要被编程到所述非易失性存储元件中的数据状态,所述附加锁存器用于除存储数据状态信息以外的编程目的,所述一个或多个管理电路将信息保持在与所述非易失性存储元件中的每一个非易失性存储元件相关联的附加锁存器中,以便在编程之后保持所述信息。
15.根据权利要求14所述的非易失性存储设备,其中,所述一个或多个管理电路在编程完成之前释放所述数据锁存器中的至少一个数据锁存器。

说明书全文

缺陷字线检测

背景技术

[0001] 本公开涉及用于非易失性存储器的技术。
[0002] 在各种电子设备中使用半导体存储器已变得日益流行。例如,在蜂窝电话、数字摄影机、个人数字助理、移动计算设备、非移动计算设备以及其他设备中使用非易失性半导体存储器。电可擦除可编程只读存储器(EEPROM)和快闪存储器都属于最流行的非易失性半导体存储器。与传统的全功能EEPROM相比,使用快闪存储器(也是一种类型的EEPROM),可以在一个步骤中擦除整个存储器阵列的内容或存储器的一部分的内容。可以将存储元件的阵列划分成大量的存储元件
[0003] 传统的EEPROM和快闪存储器两者都利用了浮栅,该浮栅位于半导体基底中的沟道区之上并且与其绝缘。该浮栅位于源极区与漏极区之间。控制栅极设置在浮栅之上并且与其绝缘。由此形成的晶体管的阈值电压(Vth)由浮栅上所保留的电荷量控制。亦即,在晶体管被接通以允许在它的源极与漏极之间进行传导之前,必须施加给控制栅极的最小电压量由浮栅上的电荷电平控制。由此,可以通过将参考电压施加给存储元件的控制栅极并且感测在存储元件的漏极与源极之间流过的电流量来读取存储元件。
[0004] 可以通过向存储元件的控制栅极施加适当的编程电压来对存储元件进行编程。典型地,在编程操作期间施加给控制栅极的编程电压Vpgm被施加为随时间增加而量值增加的一系列脉冲。
[0005] 对于某些架构,许多存储元件的控制栅极被电连接。典型地,用术语“字线”来指代多个存储元件的这种电连接。因此,可以同时向多个存储元件施加共用电压。通过读取的参考电压来驱动字线的一端,以便同时读取多个存储元件。同样地,通过编程电压来驱动字线的一端,以便同时编程多个存储元件。
[0006] 然而,如果字线具有某种缺陷,则读取的参考电压或编程电压可能无法适当地施加到所选择的字线上的每一个存储元件。因此,当对存储元件进行编程或读取时可能出现误差。附图说明
[0007] 图1A是NAND串的一个实施方式的顶视图。
[0008] 图1B是NAND串的等效电路图。
[0009] 图2示出了可以包括一个或多个存储器管芯或芯片的非易失性存储设备。
[0010] 图3是描绘感测块的一个实施方式的框图
[0011] 图4描绘了图2的存储器阵列中的NAND快闪存储器单元的块。
[0012] 图5A描绘了八状态存储器设备的阈值电压分布的示例组,其中每个存储元件存储三位数据。
[0013] 图5B示出了Vt分布可以部分交叠。
[0014] 图5C示出了具有用于检测误编程单元的区域的Vt分布,以及在用于检测缺陷的一个实施方式中所使用的参考电压。
[0015] 图5D示出了具有用于检测误编程单元的区域的Vt分布,以及在用于检测缺陷的一个实施方式中所使用的参考电压。
[0016] 图6A根据一个实施方式描绘了若干个Vt分布以示出参考电压。
[0017] 图6B根据一个实施方式描绘了若干个Vt分布以示出编程不足和过度编程的参考电压。
[0018] 图7描绘了存储器阵列的一个实施方式的一部分的示意图。
[0019] 图8是描述编程过程的一个实施方式的流程图,该编程过程包括一个或多个验证步骤。
[0020] 图9A描绘了阈值电压分布以帮助示出可以作为编程不足状态显示的可能的字线缺陷。
[0021] 图9B描绘了阈值电压分布以帮助示出可以作为过度编程状态显示的可能的字线缺陷。
[0022] 图10是在对非易失性存储器进行编程之后确定字线是否有缺陷的过程的一个实施方式的流程图。
[0023] 图11是在编程和验证非易失性存储器的同时操作数据存器的过程的一个实施方式的流程图。
[0024] 图12是在编程和验证非易失性存储器的同时操作数据锁存器的过程的一个实施方式的流程图。
[0025] 图13A、图13B、图13C及图13D是示出了贯穿图12的过程的各种阶段的数据锁存器ADL、BDL、CDL及DDL的状态表。
[0026] 图14示出了在编程的一个实施方式的各种阶段期间的锁存器的使用。
[0027] 图15A是确定字线是否有缺陷的过程的一个实施方式的流程图。
[0028] 图15B是在图15A的过程期间数据锁存器使用的一个实施方式的表。
[0029] 图15C是在图15A的过程期间数据锁存器使用的一个实施方式的表。
[0030] 图16是在设备合格期间确定断字线的过程的一个实施方式的流程图。
[0031] 图17是检测不规律编程的存储元件的方法的一个实施方式的流程图。
[0032] 图18是示出在编程和不规律编程检测(EPD)的一个实施方式期间如何使用锁存器的图。
[0033] 图19是用于对存储元件进行编程并且在锁存器中保持编程数据的过程的一个实施方式的流程图。
[0034] 图20A描绘了在编程的一个实施方式期间可以如何使用锁存器的一个示例。
[0035] 图20B示出了说明在编程的一个实施方式期间可以如何使用锁存器的表。
[0036] 图21是非易失性存储元件的不规律编程检测的过程的一个实施方式的流程图。
[0037] 图22A示出了标准阈值电压分布和不规律分布。
[0038] 图22B示出了说明在不规律编程检测的一个实施方式期间可以如何使用锁存器的表。
[0039] 图22C描绘了用于确定意图为G状态的存储元件是否是编程不足的阈值电压分布和编程不足参考电压。
[0040] 图22D示出了说明在不规律编程检测的一个实施方式期间可以如何使用锁存器的表。
[0041] 图22E示出了说明在不规律编程检测的一个实施方式期间可以如何使用锁存器的表。
[0042] 图23是用于检测断字线的过程的一个实施方式的流程图。

具体实施方式

[0043] 本发明提供了用于检测字线中的缺陷的方法和非易失性存储系统。在一个实施方式中,检测“断”字线缺陷。注意,术语“断”字线指的是字线具有异常高的电阻的部分。一些断字线可能导致编程不足的存储元件。然而,存储元件在编程的验证阶段期间可能不显示为编程不足。例如,如果电阻仅稍微高于正常,则这可能在编程期间不显示为编程缺陷。另一方面,如果电阻极其高,则可能在编程期间检测到编程缺陷。即使电阻不足够高以使得在编程期间编程缺陷作为错误被检测到,本文公开的实施方式也能够检测到电阻高于正常的情况(这导致编程不足的单元)。本文公开的实施方式在编程完成之后检测断字线和其他缺陷。
[0044] 注意,检测这种情况会很困难。每个存储元件可能存储一位、两位、三位、四位或者更多位。在一种方式中,存储元件被编程至2n个状态以存储“n”位。简单参考图5A,可以为每个状态(擦除和A-G)分配阈值电压的唯一范围。在图5A的示例中,各状态之间存在相当大的间隙。在一种可能的方式中,用阈值电压分布之间的间隙定义“禁止区域”。在一种可能的方式中,具有禁止区域中的阈值电压的存储元件要么是过度编程,要么是编程不足的。
[0045] 在一种可能的方式中,可以进行两次读取(每次读取都在两个参考电压处)以计算落在两个参考电压的范围内的存储元件的数量。如果各状态之间存在相当大的间隙,则这可以用于计算编程不足的存储元件。然而,随着每个存储元件存储更多位,各状态之间的间隙就会缩短。间隙缩短的可能原因是浮栅到浮栅的耦合。如图5C中所示,甚至可能由于阈值电压分布之间的某些交叠而使间隙缩短。因此,难以定义各状态之间的禁止区域。由此,即使在两个参考电压处进行读取,也不可能知道落在两个参考电压范围内的存储元件是过度编程还是编程不足。
[0046] 参考图5C,对于被用来编程至G状态的存储单元,可能存在独立的阈值电压分布G’,但是由于经过了字线中的“中断”,存储单元是编程不足的。如果进行读取以计算“禁止区域”502中的存储单元的总数量,则这种计算会遗漏G’分布中的大部分存储单元。注意,取决于沿字线的中断的位置以及中断的特性(例如它的电阻),G’区域的宽度和高度会显著不同。
[0047] 然而,在一个实施方式中,在Vgv_UP(例如编程不足的参考电压)处进行读取,以确定哪些存储单元具有在Vgv_UP之下的阈值电压。这可以在编程完成之后在不规律编程检测(EPD)期间进行。此外,关于哪些存储元件被用来编程为G状态(在本示例中)的信息被保持。因此,可以识别处于G’分布中的存储单元。因此,可以检测到断字线。
[0048] 在一个实施方式中,关于哪些存储元件被用来编程至追踪状态的信息被保持。该信息可以被保持而不增加任何附加的数据锁存器。此外,在编程操作期间可以释放在编程期间所使用的数据锁存器中的至少一些数据锁存器。然后,在编程完成之后,读取存储元件以确定哪些存储元件具有在与追踪状态相关联的参考电压电平之下的阈值电压。然而,这些元件可以包括来自在追踪状态之下的任何状态的存储元件,以及来自追踪状态的编程不足的元件。通过追踪哪些存储元件处于追踪状态,可以过滤出与其他状态相关联的元件,使得可以精确估计哪些存储元件是编程不足的。根据该信息,可以确定字线是否有缺陷。例如,如果太多存储元件为编程不足的,则这可以指示断字线。下面讨论更多细节。
[0049] 可能发生的另一个问题是在重循环块上的A状态变宽。针对重循环块,即使不带中断的字线也可能会呈现A状态的大的上尾部变宽。这由图5D中变宽的A’阈值分布来描绘。然而,值得注意的是新的(例如下循环)块可能不会有那么多的A状态变宽。
[0050] 还要注意的是,用来被编程至B状态的存储单元可以是编程不足的。B’分布表示具有一些编程不足的单元的情况。一种检测编程不足的B状态单元的可能方式是计算区域504中具有阈值电压的存储单元。然而,这要计算过度编程的A状态单元。可以对希望有多少个A状态单元在区域504中做出假设,以此来根据区域504中的总数推断出编程不足的B状态单元的数量。然而,对区域504中的A状态单元的数量的假设可能不准确。作为一个示例,对于一个新的块,区域504中的单元的总数量可能达不到失效准则。
[0051] 然而,在一个实施方式中,在Vbv_UP(例如B状态的编程不足的参考电压)处进行读取。这计算阈值电压小于Vbv_UP的所有单元。这可以在编程完成之后在不规律编程检测期间进行。注意,将对在区域504之下的B状态单元进行计数。此外,追踪被用来编程至B状态的存储单元。因此,可以从初始计数中减去A状态(以及擦除状态)单元。因此,可以精确计算出编程不足的B状态单元的数目。注意,即使对于新的块,这也可以允许对字线缺陷进行检测。
[0052] 用于实现实施方式的合适的存储器系统的一个示例使用NAND快闪存储器结构,该NAND快闪存储器结构在两个选择栅极之间布置多个串联的晶体管。串联的晶体管和选择栅极被称为NAND串。图1A是示出一个NAND串90的顶视图。图1B是其等效电路。所描绘的NAND串包括夹在第一选择栅极120与第二选择栅极122之间的串联的四个晶体管100、102、104和106。选择栅极120将NAND串连接到位线126。选择栅极122将NAND串连接到源极线128。通过分别向控制栅极120CG和122CG施加适当的电压来控制选择栅极120和122。晶体管100、102、104和106中的每一个晶体管具有控制栅极和浮栅。晶体管100具有控制栅极100CG和浮栅100FG。晶体管102包括控制栅极102CG和浮栅102FG。晶体管104包括控制栅极104CG和浮栅104FG。晶体管106包括控制栅极106CG和浮栅106FG。
控制栅极100CG、102CG、104CG和106CG分别连接到字线WL3、WL2、WL1和WL0。在一个实施方式中,晶体管100、102、104和106各自是存储单元。在其他实施方式中,存储单元可以包括多个晶体管,或者可以是与所描绘的存储单元不同。选择栅极120和122分别连接到漏极侧选择线SGD和源极侧选择线SGS。除了NAND快闪存储器以外,还可以使用其他类型的非易失性存储器。
[0053] 图2示出了可以包括一个或多个存储器管芯或者芯片212的非易失性存储设备210。存储器管芯212包括存储单元200的阵列(二维或者三维)、控制电路220以及读/写电路230A和230B。在一个实施方式中,在阵列的相对侧,以对称的方式来实现由各种外围电路对存储器阵列200的访问,以使得对每一侧的线路和电路进行访问的密度减半。读/写电路230A和230B包括多个感测块300,多个感测块300容许并行地读取或编程存储单元的页。存储器阵列200可以通过字线经由行解码器240A和240B以及通过位线经由列解码器242A和242B进行寻址。在典型的实施方式中,控制器244以及一个或多个存储器管芯212被包括在同一个存储器设备210(例如可移除存储卡或包)中。命令和数据经由线路232在主机与控制器244之间传送,并且经由线路234在控制器与一个或多个存储器管芯212之间传送。一种实现方式可以包括多个芯片212。
[0054] 控制电路220与读/写电路230A和230B进行协作,以对存储器阵列200进行存储操作。控制电路220包括状态机222、片上地址解码器224和功率控制模块226。状态机222提供对存储操作的芯片级控制。片上地址解码器224提供地址接口,以在主机或存储器控制器所使用的地址和解码器240A、240B、242A和242B所使用的硬件地址之间进行转换。
功率控制模块226控制在存储操作期间提供给字线和位线的功率和电压。在一个实施方式中,功率控制模块226包括可以产生比电源电压更大的电压的一个或多个电荷
[0055] 在一个实施方式中,控制电路220、功率控制电路226、解码器电路224、状态机电路222、解码器电路242A、解码器电路242B、解码器电路240A、解码器电路240B、读/写电路230A、读/写电路230B和/或控制器244中的一个或任意组合可以被称为一个或多个管理电路。
[0056] 图3是描绘感测块300的一个实施方式的框图。单独的感测块300被分割成被称为感测模块380的核心部分和通用部分390。在一个实施方式中,存在用于每条位线的单独的感测模块380以及用于成组的多个感测模块380的一个通用部分390。在一个示例中,感测块300将包括一个通用部分390和八个感测模块380。组中的感测模块中的每一个感测模块经由数据总线372与相关联的通用部分进行通信。
[0057] 感测模块380包括感测电路370,该感测电路370确定在连接位线中的传导电流是处于预定阈值电平之上还是之下。感测模块380还包括用于设定连接位线上的电压状况的位线锁存器382。例如,位线锁存器382中所锁存的预定状态会导致连接位线被拉到指定编程禁止的状态(例如1.5V至3V)。作为示例,flag=0可以禁止编程,而flag=1不禁止编程。
[0058] 通用部分390包括处理器392、五组示例数据锁存器394及耦合在该数据锁存器组394与数据总线320之间的I/O接口398。可以为每个感测模块提供一组数据锁存器,并且可以为每个组提供标识为ADL、BDL、CDL、DDL和XDL的五个数据锁存器。下面进一步讨论数据锁存器的使用。
[0059] 处理器392执行计算。例如,处理器392的功能之一是确定在感测的存储元件中所存储的数据并且将所确定的数据存储在数据锁存器组中。数据锁存器组(例如394)中的至少一些数据锁存器用于存储在读取操作期间由处理器392确定的数据位。数据锁存器组中的至少一些数据锁存器还用于存储在编程操作期间从数据总线320输入的数据位。所输入的数据位表示为了编程到存储器中的写入数据。I/O接口398提供数据锁存器394至397与数据总线320之间的接口。
[0060] 在一个实施方式中,用户能够将要编程至存储元件中的数据输送到XDL锁存器。该编程数据可以在编程操作开始时被传送至ADL、BDL和CDL锁存器。注意,这描述了每个存储单元编程三位。在一个实施方式中,在读取操作期间,ADL、BDL和CDL锁存器用于存储从存储单元读取的三位。在一个实施方式中,用户能够通过XDL锁存器切换出所读取的数据。
[0061] 在一个实施方式中,用户访问XDL锁存器,但是不访问ADL、BDL或CDL锁存器。例如,用户能够访问XDL锁存器以在编程操作期间进行后台缓存。下面更详细地讨论后台缓存。在一个实施方式中,用户在编程操作期间对XDL锁存器进行受限访问。例如,用户能够在编程操作之前将编程数据输送到XDL锁存器中。然而,用户在编程的一个实施方式期间可能不访问XDL锁存器。在一个实施方式中,XDL锁存器用于在编程操作期间对存储单元的“锁定数据”进行存储。简而言之,锁定数据可以指示存储元件被锁定进一步编程。下面讨论更多细节。
[0062] 在读取或其他感测期间,状态机222控制向寻址的存储元件供应不同的控制栅极电压。随着单步调试与存储器支持的各种存储器状态相对应的各种控制栅极电压,感测模块380可以在这些电压之一处跳闸并且提供从感测模块380经由总线372给处理器392的输出。在这点上,通过考虑感测模块的(一个或多个)跳闸事件以及关于从状态机经由输入线393施加的控制栅极电压的信息,处理器392确定作为结果的存储器状态。然后处理器392计算针对该存储器状态的二进制编码,并且将作为结果的数据位存储到数据锁存器(例如394)中。在核心部分的另一个实施方式中,位线锁存器382既充当用于锁存感测模块380的输出的锁存器,又充当如上所述的位线锁存器。
[0063] 一些实施方式可以包括多个处理器392。在一个实施方式中,每个处理器392将包括输出线(未描绘),输出线中的每一个输出线被一起有线“或”。在一些实施方式中,输出线在连接到有线“或”线之前被反相。这种配置使得在编程验证过程期间快速确定何时完成编程过程,这是因为接收有线“或”的状态机可以确定何时被编程的所有位都达到期望电平。例如,当每个位已达到其期望电平时,该位的逻辑0将被发送到有线“或”线(或者数据线被反相)。当所有位输出数据0时(或者数据线被反相),那么状态机就知道要终止编程过程。因为每个处理器与八个感测模块进行通信,所以状态机需要读取八次有线“或”线,或者将逻辑值添加至处理器392以累积相关联的位线的结果,使得状态机只需读取一次有线“或”线。类似地,通过正确地选择逻辑电平,全局状态机可以检测何时第一位改变其状态并且从而改变算法
[0064] 在编程或验证期间,将要编程的数据从数据总线320存储到数据锁存器组394至397中。在状态机的控制下,编程操作包括施加到寻址的存储元件的控制栅极的一系列编程电压脉冲。每个编程脉冲继之以读回(验证),以确定存储元件是否已经被编程到期望的存储器状态。处理器392监视相对于期望的存储器状态的读回的存储器状态。当两个状态一致时,处理器392设定位线锁存器382以将位线拉到指定编程禁止的状态。即使在存储元件的控制栅极上出现编程脉冲,也禁止对耦合至位线的存储元件进一步编程。在其他的实施方式中,处理器最初加载位线锁存器382,并且在验证过程期间感测电路将其设定成禁止值。
[0065] 在一个实施方式中,每组数据锁存器堆栈394至397包含对应于感测模块380的成堆的数据锁存器。在一个实施方式中,每个感测模块380有五个数据锁存器。ADL、BDL和CDL数据锁存器可以被实现为移位寄存器,以便将其中存储的并行数据转换成XDL锁存器中的串行数据用于通过数据总线320传送,反之亦然。与m个存储元件的读/写块对应的所有ADL、BDL和CDL数据锁存器可以链接在一起以形成块移位寄存器,以便可以通过串行传输来输入或输出数据块。具体地,适配成排的读/写模块,使得成组的ADL、BDL和CDL数据锁存器中的每一个数据锁存器会依次将数据移入或移出XDL锁存器,如同它们是整个读/写块的移位寄存器的一部分一样。
[0066] 在一个实施方式中,ADL、BDL和CDL锁存器的一个作用是将要被编程的数据存储到存储元件中。例如,存储元件可以是每个存储元件存储三位。在一个实施方式中,存储元件是每个存储元件存储四位。在这种情况下,可以有附加的数据锁存器(图3中未描绘)用于将要被编程的数据的第四位存储到存储元件中。在一个实施方式中,存储元件是每个存储元件仅存储两位,在这种情况下,不需要ADL、BDL和CDL锁存器中之一。存储元件可以是每个存储元件存储多于四位,在这种情况下,可以对每一位有一个数据锁存器。
[0067] 在一个实施方式中,ADL、BDL和CDL锁存器也可以用于存储在编程期间的状态信息。例如,在存储元件达到其目标阈值电压之后,每个锁存器(ADL、BDL、CDL)可以设定为“1”以指示针对该存储元件的编程完成。在一个实施方式中,随着编程进行到不同阶段,不同地使用锁存器。在一个实施方式中,在编程期间释放ADL锁存器。在一个实施方式中,在编程期间还释放BDL锁存器。结合图12、图13A至13D和图14等讨论更多细节。
[0068] 在一个实施方式中,DDL锁存器用于存储在编程期间的状态信息。在一个实施方式中,随着存储元件接近目标阈值电平,编程变慢。例如,DDL锁存器可以识别出存储元件的Vth在较低验证电平(例如图5A中的VvaL或者VvbL)之上。如果该存储元件尚未被锁定,则该存储元件可能接收较慢的编程。如果DDL锁存器指示存储元件的Vth在较低验证电平之下,则存储元件可能处于快速编程模式。下面讨论更多细节。
[0069] 在一个实施方式中,XDL锁存器用于存储在编程期间的状态信息。在来自XDL锁存器的数据被移位到ADL、BDL和CDL数据锁存器中之后,XDL锁存器可以被设定至初始状态(例如“0”)。在存储单元达到其目标阈值电压之后,XDL锁存器可以被设定至另一个状态(例如“1”)。由此,XDL锁存器可以存储“锁定状态”。因此,既可以在编程操作期间也可以在编程操作之后保存ADL、BDL和CDL数据锁存器中的编程数据。下面讨论更多细节。
[0070] 图4描绘了在图2的存储器阵列200中的NAND快闪存储器单元的块。存储器阵列可以包括多个块400。图4中描绘了两个示例块400。每个块400包括若干个NAND串。可以在各块之间共享一组位线,例如BL0,BL1…。由此,每个NAND串与一条位线相关联。每个NAND串的一端连接到漏极选择栅极(SGD),并且漏极选择栅极的控制栅极经由共用SGD线连接。NAND串的另一端连接到源极选择栅极,源极选择栅极继而连接到共用源极线420。
64条字线,例如WL0至WL63,在源极选择栅极与漏极选择栅极之间延伸。
[0071] 除了NAND快闪存储器以外,还可以使用其他类型的非易失性存储器。例如,在快闪EEPROM系统中使用的另一种类型的存储单元利用非导电介电材料代替导电的浮栅,以非易失方式存储电荷。由、氮化硅以及氧化硅(“ONO”)组成的三层介电层在存储单元的沟道之上,且夹在导电的控制栅极与半导体基底表面之间。该单元通过将电子从单元沟道注入到氮化物中而被编程,这些电子被俘获并且被存储在受限区域中。然后这里所存储的电荷以可检测的方式改变该单元沟道的一部分的阈值电压。通过将热空穴注入到氮化物中来擦除该单元。可以以下述分裂栅配置来设置类似的单元:掺杂的多晶硅栅极在存储单元沟道的一部分之上延伸以形成分离的选择晶体管。
[0072] 在另一个方式中,使用NROM单元。例如,在每个NROM单元中存储两位,其中ONO介电层跨越源极扩散与漏极扩散之间的沟道延伸。一个数据位的电荷位于与漏极邻近的介电层中,并且其他数据位的电荷位于与源极临近的介电层中。通过分别读取在电介质中空间上分离的电荷存储区域的二进制状态而获得多状态的数据存储。还已知其他类型的非易失性存储器。
[0073] 注意,可以有几千或者上万条位线。因此,数以万计的存储元件可以使用一条字线。典型地,在提供读取参考电压或者编程电压的字线的一端处存在驱动器
[0074] 图5A描绘了八状态存储器设备的阈值电压分布的示例组,其中每个存储元件存储三位数据。针对擦除(Er状态)的存储元件提供第一阈值电压(Vth)分布。七个Vth分布表示编程的状态A至状态G。在一个实施方式中,处于Er状态的阈值电压为负并且在A至G分布下的阈值电压为正。然而,在Er状态下的阈值分布的全部或者部分可以为正。此外,A状态的阈值分布的全部或者部分可以为负(对于其他数据状态同样)。
[0075] 为从存储元件读取数据还提供了Vra、Vrb、Vrc等读取参考电压。通过测试给定存储元件的阈值电压处于Vra、Vrb、Vrc等之上还是之下,系统可以确定存储元件所处的状态,例如编程条件。
[0076] 进一步,提供了验证参考电压Vva、Vvb、Vvc等。当将存储元件编程到A状态、B状态、C状态等时,系统会测试这些存储元件是否具有大于或等于Vva、Vvb、Vvc等的阈值电压。
[0077] 在一个实施方式中,存储元件可以从Er状态直接编程到编程状态A至G中的任一个状态,被称为全序列编程。例如,可以首先擦除成群的要编程的存储元件,以使得该群中的所有存储元件都处于Er状态。然后,使用一系列编程脉冲来将存储元件编程到它们相应的目标状态A至G中。一些存储元件从Er状态被编程为A状态,而其他存储元件从Er状态被编程到B状态等。
[0078] 图5A还示出了验证低参考电压VvAL、VvBL、VvCL等。在编程验证操作期间可以使用这些参考电压以确定存储元件是否接近其预期的目标阈值。如果接近,则编程速度会减慢。在一个实施方式中,将Vdd施加到已达到其目标状态并且被禁止进一步编程的位线。仍在验证低电平之下的存储元件的位线可以接地以允许快编程。然而,当在验证低电平与正常验证电平之间时,位线可以接收中间电压(例如在接地与Vdd之间)以使得减慢或者缓和编程速度。作为一个示例,中间电压可以在大约0.6V至0.8V。然而,中间电压可以在该范围之下或者之上。在一个实施方式中,DDL锁存器指示存储元件处在该编程序列中。下面讨论更多细节。在一个实施方式中,被编程至G状态的存储元件不接收慢速(或者中速)编程。因此,在图5A中针对G状态没有描绘验证低参考电压。然而,如果需要,对于G状态可以存在VvGL。
[0079] 在一个实施方式中,可以使用多次编程来编程存储元件。例如,一次编程可以用于编程每一位。因此,在每个存储单元存储三位的情况下,可以存在三次编程。在每个存储单元存储两位的情况下,可以存在两次编程。在一个实施方式中,多状态存储元件存储三个不同页的数据:下页、中页以及上页。八状态及其所表示的位可以是:Er状态(111)、A状态(011)、B状态(101)、C状态(001)、D状态(110)、E状态(010)、F状态(100)以及G状态(000)。对于Er状态,全部页存储“1”。对于A状态,下页存储“0”,中页存储“1”,上页存储“1”。可以以类似的方式推论其他的状态。注意,尽管为每一个状态分配了特定的位模式,但是也可以分配不同的位模式。还要注意的是,该位和页分配可以用于其他编程序列,诸如以上所述的快速/慢速编程。
[0080] 在一个实施方式的第一次编程中,针对所选择的字线WLn对下页进行编程。如果下页要保持数据1,则存储元件状态保持在擦除状态。如果数据要编程为0,则WLn上的存储元件的阈值电压增大,以使得存储元件被编程到中间状态。该中间状态可能具有刚好在VvD之下的下尾部。在一个实施方式的第二次编程中,针对所选择的字线WLn对中页进行编程。这导致产生另外两个阈值电压分布(一个附加的来自前面分布中的每一个分布)。在一个实施方式的第三次编程中,针对所选择的字线WLn对上页进行编程。这导致产生另外四个阈值电压分布(一个附加的来自前面四个分布中的每一个分布)。
[0081] 虽然编程示例描绘了八种数据状态和三页数据,但是教导的构思也可以应用于具有多于或少于八种状态以及多于或少于三页的其他实施方式。此外,在所讨论的示例编程技术中,存储元件的Vth随着存储元件被编程到目标数据状态而逐渐增大。然而,可以使用如下编程技术,在所述编程技术中,存储元件的Vth随着存储元件被编程到目标数据状态而逐渐降低。还可以使用测量存储元件电流的编程技术。本文的构思可以适用于不同的编程技术。
[0082] 图5B示出了Vt分布可以部分交叠,这是由于误差校正算法可以处理一定比例的出错单元。注意,在一些实施方式中,如图5B所示,在某个时间点处,阈值电压分布可能类似于图5A,而在别的时间处阈值电压分布可能交叠。例如,刚好在编程之后,阈值电压分布可能类似于图5A。然而,随着时间的推移,存储单元的阈值电压可能移位,使得阈值电压可能存在交叠。
[0083] 然而,紧跟在编程之后,在至少某些邻近的阈值分布之间可能存在交叠。注意,当邻近的Vt阈值之间存在交叠时检测字线缺陷会变得非常困难。
[0084] 还要注意的是,与所描绘的阈值电压分布的相等间隔/宽度形成对照,各种分布可以具有不同的宽度/间隔,以便调节数据保留损失的敏感度的变化量。
[0085] 图6A根据一个实施方式描绘了若干Vt分布以进一步示出参考电压。仅描绘了擦除状态、A状态和B状态。应当理解的是,存在更多状态。例如,如图5A中所描绘的那样,可以存在八种状态。如每个单独的Vt分布的宽度所指示的那样,每个数据状态被预算了阈值电压范围。
[0086] 可以在分布的上尾部与下一个最高状态的验证参考电平之间定义禁止区域602。在一个实施方式中,具有禁止区域中的阈值电压的任何存储元件可以归类为错误类型。例如,禁止区域602中的存储元件可以被归类为过度编程的或者编程不足的。注意,可以根据该示例不同地定义过度编程和编程不足。还要注意的是,禁止区域602并不必需在如本示例所示的精确位置处。
[0087] 图6B根据一个实施方式示出了过度编程的参考电压以及编程不足的参考电压。在本实施方式中,过度编程的参考电压可以在禁止区域602中的一个禁止区域的下边界处或者低于该下边界。例如,Verase_OP可以在禁止区域602的下边界处或者低于禁止区域
602的下边界,刚好在擦除状态之上。由此,意图处于擦除状态但是具有在Verase_OP之上的Vt的存储元件可以被归类为过度编程。同样,意图处于A状态但是具有在Vav_OP之上的Vt的存储元件可以被归类为过度编程。注意,图6B仅描绘了过度编程的参考电压的一种可能位置。
[0088] 在本实施方式中,编程不足的参考电压可以低于或者等于其相应状态的验证参考电压。例如,Vav_UP可以等于或者低于VvA。由此,意图处于A状态但是具有在Vav_UP之下的Vt的存储元件可以被归类为编程不足。同样,意图处于B状态但是具有在Vbv_OP之下的Vt的存储元件可以被归类为编程不足。注意,图6B仅描绘了编程不足的参考电压的一种可能位置。最后,请注意图6B未描绘任何代表性的编程不足的或者过度编程的存储元件。
[0089] 如上面所提到的那样,可能存在字线缺陷。当制造存储器设备时,这种缺陷可能出现,或者可能随时间的推移而发展。字线缺陷的一个示例被称为“断”字线。“断字线”是其中在沿字线的某点处电阻高于正常。对于断字线,高于正常电阻的电阻可能使存储单元不能正确编程;然而,这可能不会在编程期间作为编程缺陷而显示。注意,如果电阻极其高,则可能由于编程缺陷而在编程期间检测出。即使电阻没足够高到使得该情况在编程期间作为错误被检测出,此处所公开的实施方式也能够检测出电阻高于正常(使得引起编程不足的单元)的情况。此处所公开的实施方式在编程完成之后检测断字线和其他缺陷。注意,典型地,字线上的电压能够至少在某种程度上通过中断。然而,信号可能在中断处削弱。该削弱的一个可能原因是由于RC常数在中断处较高。
[0090] 图7描绘了存储器阵列200的一个实施方式的一部分的示意图。图7提供了存储器阵列200和相关联的行解码器240A的一个实施方式的更多细节。存储器阵列具有块702(0)至702(m)。图7中描绘了两个块,尽管通常存在更多的块702。块702中的字线(WL0…WLn)被建模为具有一定的电阻和一定的电容。行解码器240A包括连接到每条字线的块选择晶体管704。电压Vselect被施加到块702(n)中的每个块选择晶体管704以选择该块702(n)。电压Vss被施加到其他块(例如块702(0))中的每个块选择晶体管704,使得其他块是未被选择的。典型地,存在一个所选块和许多未选块。对于每条字线,都可能存在一个字线电压晶体管706(0)至706(n)与其耦合。例如,晶体管706(0)通过字线选择晶体管704中的一个字线选择晶体管耦合到每个块702的WL0。同样,晶体管706(n)通过字线选择晶体管704中的一个字线选择晶体管耦合到每个块702的WLn。注意,给定的字线电压晶体管706可以由不同的块共享。例如,如果每个块存在64条字线,则可以存在64个字线电压晶体管706。
[0091] 施加了用于读取或验证操作的合适的电压。将参考电压(Vref)施加到字线电压晶体管706(n)。参考电压可以是验证参考电压、读取参考电压等。将Vread施加到字线电压晶体管706(0)。还可以将电压Vread施加到其他字线电压晶体管(图7中未描绘),以便将Vread施加到所选块702(m)的其他未选字线。因为Vss被施加到未选块中的块选择晶体管704,所以电压Vref和Vread不传到未选块中的字线。注意,可以用其他配置向字线提供电压。
[0092] 因为存在与字线(包括所选的和未选的)相关联的一定电阻和一定电容,所以施加给字线的电压传导到字线的远端会花费一些时间。注意,字线可能具有与其相关联的多个存储单元。例如,可能存在成千上万甚至更多的存储单元与单个字线相关联。在某些情况下,在感测操作期间可以感测到沿整条字线的存储单元的位线。例如,可能一起感测到字线上的所有存储单元,或者可能一起感测到每个其他存储单元。即使感测到较少的存储单元,所选字线电压也应该在感测到所选存储单元之前在其目标参考电压电平处。
[0093] 如果读取参考电压的脉冲宽度相对于沿所选字线的RC时间常数足够长,则参考电压应该能够在所选字线的近端和远端二者处上升至其预期值。然而,如果存在所选字线的高电阻部分(例如“断”),则RC时间常数可以高到使得参考电压无法上升至其预期值。因此,在断的远侧(相对于驱动晶体管704)的存储元件可能接收到低于预期的参考电压。
因此,对验证的读取结果不可信。注意,这使得编程不足的某些存储元件可能通过编程验证,即使它们的Vt在其目标电平之下。
[0094] 注意,在一些实施方式中,存储器阵列200外部的控制线的电阻可能低于字线的电阻。此外,在某些情况下,控制线可能比存储器阵列200中的字线被隔开更远。因此,在存储器阵列200外部的控制线之间的电容耦合可能小于字线之间的电容耦合。由于该较低电阻和/或较低电容耦合,所以控制线的RC时间常数可能低于字线的RC时间常数。由此与沿字线的延迟相比,沿控制线的信号传播延迟可能问题更小。
[0095] 图8是描述编程过程的一个实施方式的流程图,该编程过程包括一个或多个验证步骤。在步骤810中,编程电压(Vpgm)被设定为初始值。此外,在步骤810中,编程计数器(PC)被初始化为零。在步骤820中,施加编程脉冲。
[0096] 在步骤822中,进行验证过程。在一个实施方式中,验证是并行的粗糙/精细验证。参考图5A,对正被编程至A状态的一些存储单元进行针对VvaL电平的验证,同时对其他正被编程至A状态的存储单元进行针对Vva电平的验证。在其中存储单元的阈值充分低于最终电平(Vva)的初始编程步骤期间,使用粗糙编程。然而,在存储单元的阈值电压达到VvaL之后,使用精细编程。因此,在一些存储单元正针对粗糙编程被验证的同时,其他存储单元正针对精细编程被验证。注意,在粗糙/精细编程的情况下,一些存储单元正针对一个状态(例如A状态)被验证,而其他存储单元正针对别的状态(例如B状态)被验证。注意,当特定的存储单元已被验证为被编程至其预期状态时,该存储单元可能被锁定防止进一步编程。
[0097] 然而,注意,如果在正被编程的所选字线上存在中断,则验证可能产生错误的结果。正如以上所提到的一样,字线中的中断可能导致在中断的远侧上的存储元件接收到小于预期的参考电压。例如,意图被编程至G状态的存储元件应该在其控制栅极处接收参考电压VvG(见图5A)。然而,存储元件事实上可能由于中断而接收较低的电压。在正常情况下,如果存储元件尚未达到其目标状态(例如其实际的Vt在参考电压之下),则存储元件将响应验证电压而接通。另一方面,如果存储元件达到其目标状态(例如其实际Vt在参考电压处或者在参考电压之上),则存储元件不应该接通。例如,考虑存储元件目标为G状态的情况。通过将VvG施加到所选字线来验证该存储元件。如果存储元件的实际Vt在VvG之下,则存储元件将传导电流。在存储元件的实际Vt在VvG之上以后,存储元件将不再接通,指示存储元件已达到其目标状态。
[0098] 然而,由于在中断的较远一边的存储元件接收太低的验证电压,所以当存储元件的实际Vt在目标Vt之下时存储元件也可能无法成功接通。通过中断的存储元件可能看到低于预期的验证电压。例如,目标为G状态的存储元件可能应该看到VvG的验证电压,但是可能在其控制栅极处遇到低电压。作为一个特定示例,如果经过中断,则该存储元件可能仅看到VvF的验证电压。因此,在本特定示例中,当存储元件的实际Vt大于VvF时,该存储元件将通过验证测试。通常来说,如果实际阈值电压在VvG之下,则经过中断的存储元件能够通过验证测试。因此,对于该存储元件编程将停止。然而,事实上该存储元件可能是编程不足的。
[0099] 在步骤824中,确定是否所有存储单元都已经验证了其阈值电压在该存储单元的最终目标电压处。如果已经验证,则编程过程在步骤826中成功完成(status=pass)。如果所有存储单元没有全部验证,则确定程序计数器(PC)是否小于最大值诸如20。如果程序计数器(PC)不小于最大值(步骤828),则编程过程失败(步骤830)。在步骤832中,如果程序计数器(PC)小于最大值(例如20),则程序计数器(PC)累加1并且编程电压步进到下一个脉冲。继步骤832之后,过程循环返回到步骤820并且将下一个编程脉冲施加到存储单元。
[0100] 图9A描绘了阈值电压分布以帮助示出可能的字线缺陷。实线表示每个状态的期望阈值电压分布。状态D至G的虚线表示如果字线具有诸如中断的缺陷则可能的阈值电压。正如在描述编程操作期间所提到的那样(见图8),如果存在断字线,则存储元件可能是编程不足的。具体地,在中断的较远一边的这些存储元件可能是编程不足的。然而,在字线驱动器与中断之间的存储元件应该不受中断的影响。这在图9A中通过编程不足的一些存储元件来描绘。当然,中断的位置(例如中断距离字线驱动器多近)可能影响发生多少编程不足。在一个可能的情况中,G状态可能比F状态经历更多的编程不足,F状态也可能比E状态经历更多,以此类推。然而,其他情况也是可能的。
[0101] 在图9A中,由区域902表示G状态的编程不足的存储元件。编程不足的区域位于所选字线的远端处的有效验证电压与施加到所选字线的VvG之间。注意,字线远端处的有效VvG可以是RC时间常数的函数,该RC时间常数归因于中断和验证脉冲的形状(例如持续时间)。为了使该图不会难以理解,针对其他状态未描绘类似的编程不足的区域。然而,可以定义这种区域。
[0102] 注意,对某些状态来说也可能具有过度编程的存储单元,该过度编程的存储单元是缺陷如断字线的结果。作为一个示例,处于A状态、B状态等的一些存储元件可以是过度编程的。图9B描绘了一种较低状态由于有缺陷的字线而被过度编程的情况。在本示例中,A状态和B状态是过度编程的。然而,还可以影响其他状态。在一个实施方式中,在不规律编程过程期间通过寻找处于较低状态的过度编程的存储元件来检测断字线。
[0103] 对此一个可能的原因是相邻字线和/或在该字线之上运行的信号与断字线的远端之间的耦合。例如,如果在中断处电阻足够高,则在编程验证期间,断字线的远端可能是浮置的(至少在某种程度上)。如果所选字线的远端是浮置的,则其电压电平可能被其邻居严重的影响。作为一个示例,这会使得A状态验证电压VvA与图9B中所描绘的正确电平相比向右边移位。当验证时,电压Vread通常被施加到未选择的相邻字线。作为一个示例,Vread可以为大约6至7伏并且A验证电压为大约0V。因此,断字线远端处的电压可能比预期高,尤其是在验证较低电压状态的情况下。注意,断字线远端处的电压可以在某段时间之后稳定。然而,在感测位线之前该电压可能不会稳定下来。
[0104] 图10是在对非易失性存储器进行编程之后确定字线是否有缺陷的过程1000的一个实施方式的流程图。在一个实施方式中,过程1000确定字线是否为断的(例如具有异常高的电阻部分)。
[0105] 步骤1002对与所选字线相关联的非易失性存储元件进行编程。图8示出了编程非易失性存储元件的一个实施方式。在一个实施方式中,当进行验证操作时,电压脉冲的宽度具有第一持续时间。该第一持续时间可能不足以使得验证电压在通过中断处(如果中断存在)的所选字线的末端处完全发展。因此,可能经过中断处的存储元件是编程不足的。还可能对于在远端处的电压,第一持续时间可能不足够长以在其电压与相邻字线耦联(尤其针对较低电压状态)的情况下将电压稳定至正确的验证电压。因此,可能经过中断处的存储元件是过度编程的。
[0106] 注意,在编程操作之后可以进行步骤1004至1010。步骤1004保持在编程操作完成之后的信息,该信息指示哪些元件被用来编程至追踪数据状态。可以追踪任一个数据状态。在一个实施方式中,使用在编程期间所使用的数据锁存器(例如394至397)之一来保持该信息。下面讨论更多细节。注意,在一个实施方式中,在编程期间可以释放至少一些数据锁存器。因此,这些空闲锁存器可以用于其他用途。
[0107] 在步骤1006,将与追踪数据状态相关联的参考电压施加到所选字线。该参考电压可能具有与针对追踪状态的验证参考电压相同的量值。然而,这并不是必需的。在一个实施方式中,步骤1006的参考电压是针对追踪状态的编程不足的电压。该编程不足的电压可以等于或者小于验证电压。针对图6B讨论示例。例如,如果B状态是所讨论的第一状态,则可以使用电压Vbv_UP。
[0108] 在一个实施方式中,步骤1006中的参考电压具有比在编程期间所使用的验证电压更长的持续时间。参考电压可以足够长以增大所施加的参考电压达到字线中的经过中断处的存储元件的可能性。然而,不可能保证该参考电压实际上会达到经过中断处的存储元件。例如,如果RC时间常数太高,则合理的持续时间的脉冲在字线的末端处可能达不到稳态值。然而,在一个实施方式中,在这种情况下可能编程操作失败。亦即,如果RC时间常数太高,则一个实施方式的编程操作失败。
[0109] 步骤1006的参考电压可以足够长以增大字线远端会稳定至预期参考电压的可能性。然而,不可能保证该远端会稳定至预期的参考电压。然而,在一个实施方式中,在这种情况下可能编程操作失败。
[0110] 在步骤1008中,确定施加参考电压的结果。例如,该结果指示哪些存储元件具有大于参考电压的阈值电压。注意,施加参考电压可能使得所选存储元件接通并且具有“传导电流”。有多种方法执行步骤1008。在一个实施方式中,对存储元件单元的传导电流(如果有的话)进行测量以确定存储元件是否响应于施加到字线的电压而接通。如果测量到传导电流大于某个值,则认为存储元件接通并且施加到字线的电压大于存储元件的阈值电压。如果没测量到传导电流大于某个值,则认为存储元件没接通并且施加到字线的电压不大于存储元件的阈值电压。
[0111] 在一个实施方式中,通过对感测放大器中的专用电容器进行放电的速率来测量存储元件的传导电流。在一个实施方式中,所选存储元件的传导电流允许(或不允许)包括在存储元件中的NAND串对位线进行放电。在一段时间之后测量位线上的电荷,以观察位线是否已被放电。
[0112] 在步骤1010中,基于步骤1008的结果和所保持的信息来确定字线是否具有缺陷。在一个实施方式中,步骤1010包括确定非易失性存储元件是否大于非易失性存储元件的阈值数量,该非易失性存储元件被用来编程至第一数据状态并且响应于第一参考电压而传导电流。
[0113] 例如,参考图9,步骤1010可以(基于所保持的信息)确定哪些存储元件被用来编程至G状态,但是具有在VvG之下的阈值电压(注意,可以使用不同的参考电压)。实际上,步骤1010的一个实施方式可以确定哪些存储元件在区域902中。
[0114] 要注意两个方面。首先,注意,用来被编程至除了G状态外的任何状态的存储元件不包括在步骤1010的计数中。其次,仅需要单次读取(在步骤1006中)。仅进行单次读取节省时间。这与下述技术形成对比:该技术需要在至少两点处进行读取以对在区域如区域902中的总单元数进行计数。注意,如果例如在Vfv_OP和Vgv_UP处进行两次读取,则可以计算出该区域中的单元数。然而,因为在F状态与G状态之间可能存在交叠,所以可能难以得知这些单元中多少为F状态以及多少为G状态。由此,这种技术可能不能准确确定有多少G状态存储单元为编程不足。而且,参考图9,可能存在阈值电压在字线的远侧处的有效VvG与VvG之间的大量的编程不足的G状态单元。然而,有效VvG可以是任意值,并且不可能对应于Vfv_OP。因此,在Vfv_OP和Vgv_UP处的读取不可能计算区域902中的G状态单元数。
[0115] 在一个实施方式中,步骤1010确定哪些被用来编程至A状态的存储单元是过度编程的。在这种情况下,过度编程的参考电压(例如图6B中的Vav_OP)可以用作为参考电压。在本示例中追踪状态可以是A状态。
[0116] 图11是在编程和验证非易失性存储器时操作数据锁存器的过程1100的一个实施方式的流程图。过程1100提供了保持指示哪些存储元件已被编程至特定状态的信息的细节。注意,在编程期间可以释放最初指示存储元件要被编程至哪个状态的数据锁存器。因此,在编程过程期间可能丢失该信息。在一个实施方式中,过程1100“追踪”或者保持针对一个状态的信息。通过追踪状态,意欲使过程1100在编程完成之后保持关于哪些存储元件被用来编程至特定的(追踪的)状态的信息。注意,这可以是擦除状态以及编程状态中的任何状态。
[0117] 过程1100提供图10的步骤1002和1004的一个实施方式的更多细节。将参考图3中的数据锁存器组394。正如以上所提到的一样,三个数据锁存器ADL、BDL和CDL最初将要被编程的数据存储到存储元件中。由此,在一个实施方式中,存储元件存储三位。第四数据锁存器DDL用于此处被称为“快速通过写”(QPW)状态。注意,可以存在比四个锁存器更多或者更少的锁存器。
[0118] 在步骤1102中,将数据锁存器设定至其目标程序状态。在一个实施方式中,ADL、BDL和CDL锁存器被设定为如图13A中所示。注意,可以使用不同的位分配。
[0119] 在步骤1104中,DDL锁存器被设定至初始状态。在一个实施方式中,DDL锁存器被设定为如图13A中所示。在该实施方式中,所有存储元件的DDL锁存器被设定为“0”,除了要保留在擦除状态中的那些。在一个实施方式中,每个DDL锁存器被设定为“0”。在一个实施方式中,在追踪擦除状态时,使用针对所有状态的DDL锁存器设定为“0”。
[0120] 在步骤1106中,至少部分基于数据锁存器来施加编程条件。在一个实施方式中,设定位线电压。在一个实施方式中,使用三个种类。一种用于被锁定(或者禁止)进行任何进一步编程的存储元件,一种用于仍在进行快编程的存储元件,而一种用于由于存储元件接近其目标阈值电压而接收慢编程的存储元件。
[0121] 在一个实施方式中,锁定的或者禁止的存储元件的位线被设定为Vdd,正进行标准(或者快速)编程的存储元件的位线被设定为接地(例如Vss),第三个种类的位线被设定为在接地与Vdd之间的中间电压。该中间电压在某种程度上减慢编程的速度。
[0122] 在步骤1108中,将一个或多个编程脉冲施加到所选字线。可以将通过电压(例如Vpass)施加到未选择的字线。
[0123] 在步骤1110中,将验证低脉冲施加到所选字线。参考图5A,可以施加VvAL。在步骤1112中,进行感测以确定被意图编程至与验证低脉冲相关联的状态的存储元件是否已达到验证低点。例如,对被意图编程至(如ADL、BDL和CDL所示的)A状态的存储元件进行感测以确定其阈值电压是否在VvAL处或者在VvAL之上。在一个实施方式中,感测位线的电流。
[0124] 在步骤1114中,基于步骤1112的结果设定DDL锁存器。注意,所讨论的DDL锁存器是与刚被验证的状态相关联的DDL锁存器。在一个实施方式中,将DDL锁存器设定为“1”以指示要进行慢编程。例如,将意图被编程至A状态的具有在VvAL之上的阈值电压的存储元件的DDL锁存器设定为“1”。
[0125] 在步骤1116中,针对正被验证的当前状态将验证参考电压增大至相关联的验证高参考电压。例如,将参考电压设定为VvA(见图5A)。在一个实施方式中,步骤1116涉及增大所选字线上的电压。
[0126] 在步骤1118中,进行感测以确定被用来编程至与标准验证脉冲相关联的状态的存储元件是否已达到标准验证点。例如,对被用来编程至A状态的存储元件进行感测以确定其阈值电压是在VvA处还是在VvA之上。在一个实施方式中,感测位线的电流。
[0127] 在步骤1120中,基于步骤1120的结果设定ADL、BDL和CDL锁存器。注意,所讨论的锁存器是与刚被验证的状态相关联的锁存器。在一个实施方式中,将ADL、BDL和CDL锁存器中的一个或多个锁存器设定为“1”以指示编程要被禁止。例如,用来被编程至A状态的具有在VvA之上的阈值电压的存储元件将其ADL、BDL和CDL锁存器设定为“1”。
[0128] 在一些情况下,可能仅需要数据锁存器中的一个或两个数据锁存器以指示锁定状态。由此,在一个实施方式中,步骤1120包括将锁存器ADL、BDL和CDL中的一个或多个锁存器设定为“1”。在一个实施方式中,过程1100保持对编程过程向前进行了多远的追踪,并且根据编程处于哪个阶段使用不同组的锁存器来指示锁定。下面讨论更多细节。
[0129] 在步骤1122中,如果存储元件刚通过编程验证,则可以将正被追踪的存储元件的DDL锁存器设定为“0”。例如,如果A状态正在被追踪,则对于A状态刚通过编程验证的这些存储元件的DDL锁存器将其DDL锁存器设定为“0”。然而,如果正在追踪与A状态不同的状态(例如A状态没有正被追踪),则DDL锁存器停留在“1”处。注意,因为在步骤1112至1114中存储元件还应该通过了验证低(例如VvAL),所以当存储元件通过标准验证(例如VvA)时,DDL锁存器应该在“1”处。注意,步骤1112中针对其中一个状态适当地设定DDL锁存器使得关于意图编程的状态的信息被保持。
[0130] 注意,要被追踪的状态也可以包括擦除状态。注意,对要停留在擦除状态的存储元件没有验证操作。因此,对于这些存储元件,在步骤1114中DDL锁存器的状态不应该改变。当与擦除状态不同的状态正被追踪时,保持擦除的存储元件的DDL锁存器最初可以被设定为“1”。然而,当擦除状态正被追踪时,DDL锁存器最初可以被设定为“0”。因此,贯穿编程该擦除状态的DDL锁存器应该保持在“0”处。与之相反,当验证低通过时,可以将其他状态的DDL锁存器设定为“1”。
[0131] 在步骤1124中,确定是否有额外状态要验证。注意,初期在编程操作中,并不必需验证所有状态。如果要验证的状态较多,则在步骤1126中增大验证参考电压。针对下一个状态可以将参考电压增大至验证低参考电平。然后,可以在步骤1110中施加验证低脉冲。在步骤1128中,当验证了此时要被验证的全部状态时,确定是否所有存储元件都通过验证。注意,一定数量的存储元件可能未能达到其预期状态,但是可以忽略。这可以有助于加快编程。
[0132] 如果不是所有存储元件都通过验证(包括一些可以被允许失败的存储元件),则过程1100返回至步骤1106以基于锁存器394施加编程条件。对于现在被锁定的存储元件(如由锁存器ADL、BDL、CDL中的一个或多个锁存器指示),它们的位线可以被设定为Vdd。对于接收慢编程的存储元件,它们的位线可以被设定为中间电压。在一个实施方式中,对未被锁定进一步编程的这些存储元件的DDL锁存器进行检查以确定是否应该进行慢编程。
[0133] 图12是在编程和验证非易失性存储器时操作数据锁存器的过程1200的一个实施方式的流程图。过程1200提供了根据编程过程的阶段不同地使用数据锁存器的更多细节。图13A至图13D示出了贯穿过程1200的各种阶段的数据锁存器ADL、BDL、CDL和DDL的状态表。
[0134] 图14示出了在编程的一个实施方式的各种阶段期间的锁存器使用。简言之,编程过程可以划分为下列阶段。在预锁定阶段,可以建立数据锁存器。在ABCDEFG阶段,所有状态被编程。在EFG阶段,仅E状态、F状态和G状态被编程。在G编程阶段,仅G状态被编程。在EPD阶段,进行不规律编程检测。在一个实施方式中,在EPD阶段期间检测字线缺陷。还要注意的是,在ABCDEFG阶段与EFG阶段之间ADL锁存器被复位。同样,在EFG阶段与G阶段之间BDL锁存器被复位。结合对图12的讨论来讨论更多细节。
[0135] 过程1200描述了G状态是追踪状态的一个实施方式。在步骤1202中,在锁存器中保存目标数据状态。图13A示出了锁存器ADL、BDL和CDL的初始状态表。
[0136] 在步骤1204中,设定DDL锁存器的初始状态。在本实施方式中,将要保留在擦除状态的存储元件的初始状态设定为“1”。将所有其他存储元件的DDL设定为“0”。图13A示出了目标为各种状态的存储单元的DDL锁存器的初始状态表。在预锁定阶段期间可以存在步骤1202和1204(见图14)。
[0137] 在步骤1206中,在验证一个或多个状态之后,施加一个或多个编程脉冲。步骤1206的一个实施方式包括一次或多次进行图11中的步骤1108、1110、1112、1116和1118。
例如,步骤1108可以被执行一次,继之以步骤1110、1112、1116和1118以验证不同的状态。
[0138] 最初,在ABCDEFG阶段开始编程(见图14)。图14中的黑条指示数据锁存器活跃地用于编程或者EPD的时间。在ABCDEFG阶段期间,将ADL、BDL和CDL锁存器用于存储锁定信息。将DDL锁存器用于存储QPW状态。
[0139] 图13B示出了在ABCDEFG阶段期间使用锁存器的示例。此时,被锁定的任何存储元件在所有ADL、BDL和CDL锁存器中具有“1”。在该状态下示出了擦除状态。对于状态A至G,示出了要被编程至存储元件中的数据。然而,在存储元件达到其预期目标状态时,其ADL、BDL和CDL锁存器可以被设定为“1”。这之前在图11的步骤1120中作为一种可能性被讨论过。因此,在确定存储元件在ABCDEFG阶段期间是否被锁定时,可以检查ADL、BDL和CDL的状态。
[0140] 图13B也示出了在ABCDEFG阶段期间使用DDL锁存器的示例。在一个实施方式中,DDL锁存器中的“1”是指要使用慢编程。由此,未被锁定并且在DDL锁存器中具有“1”的任何存储元件都可以接收慢编程。
[0141] 注意,对于G状态,DDL锁存器的使用不同。在一个实施方式中,对于要被编程至G状态的存储元件,贯穿整个编程过程,DDL锁存器保持为“0”。
[0142] 在步骤1208中,确定目标为状态A至D的存储元件是否被编程。注意,并不需要目标为这些状态的每个存储元件都达到其预期状态。在一个实施方式中,一些存储元件可以保持编程不足。如果尚未完成对A至D状态的编程,则过程返回至步骤1206。
[0143] 在步骤1210中,在目标为状态A至D的存储元件被编程时,释放ADL锁存器。这通过图14中在ABCDEFG编程阶段之后的ADL复位来反映。参考图13C,此时ADL锁存器是空闲的。作为一个示例,因为ADL锁存器是空闲的,所以ADL锁存器可以用于后台缓存。在属于Li等人的名称为“Method for Non-Volatile Memory with Background Data Latch Caching Operations During Program Operations”的美国专利7,502,260中描述了在编程操作期间使用被释放的数据锁存器的更多细节,将其全部内容并入本文用于各种目的。
[0144] 注意,在释放ADL锁存器之后,编程继续进行到EFG编程阶段(见图14)。此时,在一个实施方式中,仅BDL和CDL锁存器用于存储锁定信息。此外,仅需要BDL和CDL锁存器来包含唯一定义的存储元件正被编程至哪个状态的所需的信息。例如,在一个实施方式中,组合“01”唯一定义E状态,组合“10”唯一定义F状态,组合“00”唯一定义G状态,组合“11”唯一定义锁定状态。可以使用其他位分配。
[0145] 此外,注意,在图13C中,在E状态之下的全部存储元件的DDL锁存器应该为“1”。取决于验证低是否通过,被编程至E状态或者F状态的存储元件在DDL锁存器中具有“1”或者“0”。正如上面所述,G状态存储元件的DDL锁存器保持为“0”。在一个实施方式中,G状态存储元件不进行验证低。因此,贯穿整个编程期间DDL锁存器应该为状态“0”。然而,作为一个示例,只要在存储元件被锁定时DDL锁存器被设定为“0”,G状态就可以进行验证低。
[0146] 接着,编程继续到EFG阶段(见图14)。在确定如何施加编程条件时(图12的步骤1211),BDL和CDL锁存器的状态可以用于锁定。未被锁定并且在DDL锁存器中具有“1”的存储元件可以接收慢编程。
[0147] 在步骤1212中,确定E状态和F状态是否被编程。如果过程没有继续编程和验证,则使用锁存器BDL、CDL和DDL的状态。
[0148] 在步骤1214中,在E状态和F状态被编程时,释放BDL锁存器。这通过在EFG编程阶段末尾处的BDL复位来反映(见图14)。与ADL锁存器一样,BDL锁存器是空闲的,用于诸如后台缓存的目的。
[0149] 图13D示出了表示BDL锁存器被释放的表。此时,保留为要被编程的存储元件仅是处于G状态的那些存储元件。因此,CDL锁存器的状态可以唯一地描述存储元件是要被编程到G状态(在本示例中为“0”),还是被锁定(在本示例中为“1”)。
[0150] 注意,此时对于G状态存储元件,DDL锁存器的状态为“0”。正如前面所提到的那样,对于G状态存储元件,贯穿编程期间DDL锁存器可以停留在“0”处。
[0151] 然后编程继续到G编程阶段(见图14)。在步骤1215中,基于CDL和DDL的状态施加编程条件。CDL锁存器的状态可以用于确定哪些存储元件被锁定。在一个实施方式中,对于所有G状态存储元件,DDL锁存器的状态保持为“0”。然而,在一个实施方式中,DDL锁存器可以用于QPW状态。因此,如果情况是这样,则未被锁定并且将DDL锁存器设定为“1”的存储元件可以接收慢编程。
[0152] 在G状态存储元件被编程时(步骤1216),G编程阶段结束。此时,所有G阶段存储元件的CDL锁存器应该为“1”。所有的G状态存储元件的DDL锁存器应该为“0”。注意,在一个实施方式中,因为在编程操作期间DDL锁存器不允许被设定为“1”,所以DDL锁存器为“0”。
[0153] 然而,在一个实施方式中,在G状态存储元件通过验证低时,DDL锁存器被允许设定为“1”。在这种情况下,在G状态存储元件通过验证高时,DDL锁存器可以被设定为“0”。
[0154] 不管来自DDL锁存器的信息是被保存在该锁存器中,传送到别的锁存器,还是某个其他存储位置,哪些存储元件的目标为G状态的信息在编程操作之后被保持。注意,不需要额外的数据锁存器。还要注意的是,在编程期间释放两个数据锁存器用于诸如后台缓存的目的。
[0155] 图15A是确定字线是否有缺陷的过程1500的一个实施方式的流程图。在EPD阶段(例如见图14)期间可以进行过程1500。过程1500是来自图10的步骤1006至1010的一个实施方式。
[0156] 在步骤1502中,与目标状态相关联的参考电压被施加到所选字线的一端。在一个实施方式中,参考电压是与目标状态相关联的编程不足的电压。假设这是G状态,可以施加Vgv_UP。Vgv_UP可以与正常G验证参考电平(例如图5A中的VvG)一样高。然而,Vgv_UP可以低于该参考电平。
[0157] 在一个实施方式中,该参考电压的持续时间比正常验证脉冲的持续时间长。注意,由于在编程操作期间存在多个验证脉冲,所以理想的是保持这些验证脉冲相对短。然而,过程1500仅需要施加单个参考电压。因此,在不显著影响总体编程速度的情况下,持续时间可以更长。步骤1502是步骤1006的一个实施方式。
[0158] 在一个实施方式中,参考电压是与目标状态相关联的过度编程电压。例如,在A状态被追踪的情况下,参考电压可以是Vav_OP(图6B)。
[0159] 在步骤1504中,确定施加参考电压的结果。在一个实施方式中,这些结果被存储在感测放大器中的数据锁存器中。为便于讨论,该锁存器将被称为SDL。步骤1504是步骤1008的一个实施方式。
[0160] 在步骤1506中,可以确定所读取的哪些存储元件具有在步骤1502的参考电压之下的阈值电压并且被用来编程至追踪状态。这可以测试编程不足条件。
[0161] 参考图15B的表,在一个实施方式中,DDL锁存器保持关于哪些存储元件被用来编程至追踪状态的信息。在本示例中,追踪状态为G状态。由此,“0”指示存储元件被用来编程至G状态。如果步骤1504的读取指示阈值电压在参考电压之下,则SDL锁存器可以包含“0”;而如果步骤1504的读取指示阈值电压在参考电压之上,则SDL锁存器可以包含“1”。通过采用SDL和DDL锁存器的逻辑或,可以产生正确的结果。在一个实施方式中,该结果被存储在CDL锁存器中。
[0162] 只有在DDL锁存器和SDL锁存器均为“0”的时刻,CDL锁存器中的结果才应该为“0”。这是对于被用来编程至G状态但是具有在参考电压之下的阈值电压的存储元件的情况。被用来编程至G状态但是具有在参考电压之上的阈值电压的存储元件应该在CDL锁存器中具有“1”。在其DDL锁存器中具有“1”的存储元件应该导致在CDL锁存器中也为“1”。
[0163] 注意,在一个实施方式中,过度编程状态用于测试断字线。在步骤1506的一个实施方式中,确定追踪状态的哪些存储元件是过度编程的。这可以包括确定哪些存储单元具有在步骤1502的参考电压之上的阈值电压并且被用来编程至追踪状态。
[0164] 图15C示出了锁存器的表以示出在A状态被追踪时测试存储单元的过度编程。在编程期间,A状态单元的DDL锁存器可以被设定为“0”以追踪这些存储单元(见图11的步骤1122)。所有其他状态的DDL锁存器被设定为“1”到编程结束时为止。在过程1500之前,所有DDL锁存器可以被翻转,使得仅A状态单元具有“1”。在一个实施方式中,在DDL与SDL锁存器与之间进行逻辑与,并且存储在CDL锁存器中。正如以上所提到的一样,如果阈值电压在参考电压之上,则SDL锁存器可以包含“1”。因此,在本示例中,如果DDL与SDL均为“1”,则这指示过度编程的A状态单元。
[0165] 注意,过程1500可以有效地确定哪些存储元件在图9的区域902中(或者在区域902之下)。一旦确定哪些存储元件在该条件下,就在步骤1508中,确定这种存储元件的数量是否大于存储元件的阈值数量。注意,并不必需对每个存储元件进行计数。换言之,在达到阈值数量之后可以停止计数。步骤1506至1508是步骤1010的一个实施方式。
[0166] 在一个实施方式中,在设备合格期间使用断字线检测。图16是在设备合格期间确定断字线的过程1600的一个实施方式的流程图。该过程描述了分析一条字线。可以任何时间进行过程1600。亦即,可以在字段中进行该过程。然而,通常在设备的合格期间的某点处进行。
[0167] 在步骤1602中,对所选字线进行随机模式编程。注意,这是步骤1002的一个实施方式。
[0168] 在步骤1604中,指示哪些存储元件目标为追踪状态的信息被保持在数据锁存器中。在一个实施方式中,这是最高数据状态。然而,可以追踪别的状态。注意,这是步骤1004的一个实施方式。
[0169] 在步骤1606中,编程不足的参考电压被施加到所选字线。编程不足的参考电压可以是针对被追踪状态的参考电压。亦即,该参考电压用于确定目标为被追踪状态的存储元件是否为编程不足。在一个实施方式中,脉冲持续时间足够长以使得编程不足的参考电压达到经过字线中的断处的稳态。注意,这是步骤1006的一个实施方式。
[0170] 在步骤1608中,确定施加编程不足电压的结果。注意,这是步骤1008的一个实施方式。
[0171] 在步骤1610中,基于该结果确定所选字线是否是断的。上面已讨论了做出该确定的示例。注意,这是步骤1010的一个实施方式。
[0172] 图17是检测不规律编程的存储元件的方法的一个实施方式的流程图。该方法不需要使用任何附加的数据锁存器。在一个实施方式中,锁定状态被存储在用于通过数据总线在存储器阵列与控制器之间接收和发送数据的数据锁存器中。该数据锁存器至少在某个时间可由用户访问。然而,在编程期间,该锁存器不可由用户访问。XDL锁存器(见图3和相关讨论)是可用于存储锁定状态的锁存器的一个示例。
[0173] 在步骤1702中,在第一锁存器中接收编程数据。在一个实施方式中,控制器244将编程数据串行地通过线路234发送至存储器芯片212。该数据可以被串行地经由数据总线(图3中的320)发送至I/O接口398。可以将编程数据从I/O接口398传送至XDL锁存器。注意,编程数据可能仅被临时存储在XDL锁存器中。
[0174] 在步骤1704中,将编程数据移动或者传送至每一个存储元件的数据锁存器组中。在一个实施方式中,将编程数据从XDL锁存器移动至ADL、BDL和CDL锁存器。
[0175] 在步骤1706中,基于ADL、BDL和CDL锁存器中的编程数据开始对存储元件的编程。此外,在步骤1708中,在编程期间第一锁存器(例如XDL)用于锁定状态。在步骤1710中,编程完成。下面讨论步骤1706至1710的更多细节。
[0176] 在步骤1712中,在编程之后,编程数据被保持在数据锁存器组中。例如,编程数据被保持在ADL、BDL和CDL锁存器中。
[0177] 在步骤1714中,基于所保持的编程数据确定存储元件是否被不规律地编程。注意,这也可以被称为确定存储元件是否被误编程。不规律编程可以包括过度编程或者编程不足。
[0178] 图18示出在编程和不规律编程检测(EPD)的一个实施方式期间如何使用锁存器的图。ADL、BDL和CDL锁存器在编程和EPD阶段期间存储编程数据。在一个实施方式中,ADL锁存器存储下页数据,BDL锁存器存储中页数据,而CDL锁存器存储上页数据。可以存在比三页数据更多或者更少的数据。DDL锁存器在编程阶段期间存储QPW状态。下面将讨论在EPD阶段期间DDL锁存器的使用。XDL锁存器在编程阶段期间存储锁定状态。下面将讨论在EPD阶段期间XDL锁存器的使用。
[0179] 图19是用于编程存储元件的过程1900的一个实施方式的流程图。该编程方法是图17的步骤1706至1710的一个实施方式。因此,过程1900可以在编程数据已被传送至数据锁存器组(见图17中的步骤1704)之后开始。过程1900的一些步骤与过程1100的一些步骤类似并且将使用相同的附图标记。
[0180] 在步骤1902中,设定XDL锁存器的初始状态。在步骤1104中,设定DDL锁存器的初始状态。图20A描绘了在步骤1104之后可以如何设定锁存器的一个示例。XDL锁存器针对被保持在擦除状态的存储元件被设定为“1”并且针对所有其他存储元件被设定为“0”。同样,DDL锁存器针对被保持在擦除状态的存储元件被设定为“1”并且针对所有其他存储元件被设定为“0”。
[0181] 在步骤1906中,基于XDL锁存器和DDL锁存器施加编程条件。例如,建立位线电压。在一个实施方式中,使用三个种类。一种用于被锁定(或者禁止)进行任何进一步编程的存储元件,一种用于仍在进行快编程的存储元件,而一种用于由于存储元件接近其目标阈值电压而接收慢编程的存储元件。
[0182] 在一个实施方式中,XDL设定为“1”的存储元件被锁定。在一个实施方式中,XDL设定为“0”而DDL设定为“1”的存储元件接收慢编程。在一个实施方式中,XDL设定为“0”并且DDL设定为“0”的存储元件接收正常编程或者快编程。
[0183] 在一个实施方式中,锁定的或者禁止的存储元件的位线被设定为Vdd,正进行标准(或者快)编程的存储元件的位线被设定为接地(例如Vss),第三种位线被设定为在接地与Vdd之间的中间电压。该中间电压在某种程度上减慢编程的速度。
[0184] 图20B示出了说明在编程的一个实施方式期间如何使用锁存器的表。对于目标为A状态至G状态的存储元件,根据存储元件是仍正在编程还是已被锁定进一步编程,描绘了编程状态和锁定状态。保持在擦除状态(Er)的存储元件可以使所有锁存器为“1”。这些元件可以贯穿编程期间被锁定。对于目标为A状态至F状态的存储元件,可以适用以下方法。在贯穿编程期间,编程数据可以保持在ADL、BDL和CDL锁存器中。在仍进行编程时,DDL锁存器可以包含QPW数据。注意,QPW数据指示存储元件是接收快编程还是慢编程。XDL锁存器指示存储元件是否被锁定。在一个实施方式中,目标为G状态的存储元件不接收慢编程。
由此,在一个实施方式中,DDL锁存器不用于存储G状态单元的QPW状态。因此,当编程时DDL锁存器可以被设定为“0”,而当编程完成时DDL锁存器可以被设定为“1”。然而,可选地,DDL锁存器可以存储G状态单元的QPW状态。
[0185] 在步骤1108中,将一个或多个编程脉冲施加到所选字线。可以将通过电压(例如Vpass)施加到未选择的字线。
[0186] 在步骤1110中,将验证低脉冲施加到所选字线。参考图5A,可以施加VvAL。在步骤1112中,进行感测以确定被用来编程至与验证低脉冲相关联的状态的存储元件是否已达到验证低点。例如,对用来被编程至A状态(如ADL、BDL和CDL所示)的存储元件进行感测以确定其阈值电压是在VvAL处还是在VvAL之上。在一个实施方式中,感测位线的电流。
[0187] 在步骤1114中,基于步骤1112的结果设定DDL锁存器。注意,所讨论的DDL锁存器是与刚被验证的状态相关联的DDL锁存器。在一个实施方式中,将DDL锁存器设定为“1”以指示要进行慢编程。例如,用来被编程至A状态的具有在VvAL之上的阈值电压的存储元件将其DDL锁存器设定为“1”。
[0188] 在步骤1116中,针对正被验证的当前状态,将验证参考电压增大至相关联的验证高参考电压。例如,将参考电压设定为VvA(见图5A)。在一个实施方式中,步骤1116涉及增大所选字线上的电压。
[0189] 在步骤1118中,进行感测以确定用来被编程至与标准验证脉冲相关联的状态的存储元件是否已达到标准验证点。例如,对用来被编程至A状态的存储元件进行感测以确定其阈值电压是在VvA处还是在VvA之上。在一个实施方式中,感测位线的电流。
[0190] 在步骤1920中,对于通过了验证高的存储元件,XDL锁存器被设定为锁定进一步编程。换言之,锁定条件被存储在XDL锁存器中。在一个实施方式中,XDL锁存器被设定为“1”以指示对于其相关联的存储元件要禁止编程。注意,保持ADL、BDL和CDL锁存器中的编程数据。
[0191] 在步骤1124中,确定是否存在额外的状态要验证。如果不是所有存储元件都通过了验证(考虑到一些可能被允许失败的存储元件),则过程1900返回至步骤1906以基于锁存器施加编程条件。另一方面,如果所有(在一个实施方式中一些存储元件可以被允许未能验证)存储元件都通过了验证(步骤1128),则编程过程1900结束。
[0192] 图21是对非易失性存储元件的不规律编程检测的过程2100的一个实施方式的流程图。过程2100是来自图17的步骤1712和1714的一个实施方式。在使用过程1900(图19)进行编程之后可以进行过程2100。在过程2100中,可以确定编程不足或者过度编程。
此外,过程2100可以检测针对多于一个状态的不规律编程。在一个实施方式中,确定对所有编程状态的不规律编程。
[0193] 将讨论测试编程不足的E状态的示例。图22A描绘了阈值电压分布和编程不足的参考电压Vev_UP用于确定意图为E状态的存储元件是否为编程不足的。图22A用实线示出了C状态至G状态(及B状态的一部分)的标准阈值电压分布。注意,在各状态之间存在一些交叠。允许某些交叠,即使紧跟在编程之后。正如讨论过的那样,误差校正可以用于准确读取存储元件,即使在某些交叠的情况下。虚线表示相对于标准分布可能的不规律编程。在本示例中,相对于标准情况,存在明显更多的在Vev_UP之下的E状态存储元件。
[0194] 在步骤2101中,选择状态以对不规律编程进行测试。例如,选择E状态。此外,步骤2101可以选择对编程不足(或者可替代地过度编程)进行测试。
[0195] 在步骤2102中,与所选状态相关联的参考电压被施加到所选字线。例如,参考图22A,可以施加参考电压Vev_UP。返回参考图6B,讨论了可以使用编程不足的参考电压。在图6A中,描绘了参考电压Vav_UP、Vbv_UP和Vcv_UP。
[0196] 在步骤2104中,确定施加参考电压的结果。在一个实施方式中,结果可以被存储在与锁存器394不同的锁存器中。此处,SDL锁存器被认为能够存储所读取的结果。SDL锁存器可以位于感测电路370中,但是也可以位于其他位置。在一个实施方式中,如果存储元件具有在参考电压之下的阈值电压,则SDL锁存器将包含“0”,而如果存储元件具有在参考电压处或者在参考电压之上的阈值电压,则SDL锁存器将包含“1”。
[0197] 在步骤2106中,基于SDL锁存器以及ADL、BDL和CDL锁存器中的编程数据来更新DDL锁存器。参考图22B,取决于响应于步骤2102的参考电压所读取的内容,SDL锁存器可以包含“0”或者“1”。除了E状态存储元件以外的全部存储元件的DDL锁存器被设定为“1”,因为这些存储元件当前不被测试。
[0198] 在一个实施方式中,E状态单元的DDL锁存器被设定为“0”以指示编程不足以及被设定为“1”以指示正常编程。在一个实施方式中,读取为具有在Vev_UP之下的阈值电压的E状态存储元件将其DDL锁存器设定为“0”。另一方面,在本实施方式中,被读取为具有在Vev_UP处或Vev_UP之上的阈值电压的E状态存储元件将其DDL锁存器设定为“1”。在一个实施方式中,在步骤2106中,来自SDL锁存器的数据被传送至E状态存储元件的DDL锁存器。
[0199] 在步骤2108中,更新XDL锁存器。在一个实施方式中,不规律编程状态被存储在XDL锁存器中。在一个实施方式中,在步骤2108中,来自DDL锁存器的数据被传送至E状态存储元件的XDL锁存器。
[0200] 在步骤2110中,确定被误编程(或者不规律编程)的存储元件的数量。在一个实施方式中,对被设定为“0”的DDL锁存器的数量进行计算。注意,可以在步骤2110之后进行步骤2108。还要注意的是,将数据从DDL传送至XDL保存了该计数用于该过程的后续迭代,这测试其他状态的不规律编程。
[0201] 在步骤2112中,确定该计数是否大于允许的阈值。如果该计数大于允许的阈值,则在步骤2114中进行报告。注意,并不必需对被不规律编程的每个存储元件进行计数。在一个实施方式中,计数继续进行直到达到阈值(或者计数了所有单元)为止。如果达到阈值,则可以停止计数。
[0202] 在步骤2116中,确定是否存在被测试不规律编程的别的状态。如果存在,则返回至步骤2101。为了便于讨论,将提出测试G状态的不规律编程的示例。在步骤2102的下一个迭代中,如测试G状态的编程不足的图22C所描绘的,参考电压可以是Vgv_UP。在进行步骤2104至2108之后,锁存器可以处于图22D中所描绘的状态。如之前所述一样,ADL、BDL和CDL锁存器保持编程数据。SDL锁存器包含使用参考电压Vgv_UP读取的结果。在本实施方式中将除G状态之外的所有存储元件的DDL锁存器设定为“1”,因为这些存储元件目前不被测试。然而,注意,E状态存储元件的XDL锁存器保持来自测试编程不足的结果。G状态存储元件的DDL锁存器指示存储元件是否为编程不足。同样,适用于XDL锁存器。可以通过注意哪些存储元件被用来编程至G状态(如ADL、BDL和CDL锁存器所指示的)但具有在VgV_UP(如SDL锁存器所指示的)之下的阈值电压来确定编程不足。
[0203] 与E状态类似,在步骤2112中可以对编程不足的G状态存储元件进行计数。在一个实施方式中,分析DDL锁存器的状态。注意,可以分析所有DDL锁存器,这可以简化分析。亦即,并不必需仅分析G状态存储元件的DDL锁存器。还要注意的是,用于测试G状态的阈值可以与对于E状态的阈值不同。通常来说,每个状态可以具有其自己的阈值,或者两个或更多个状态可以共享同一阈值。
[0204] 过程可以继续以这种方式分析更多状态。在所有期望状态被分析之后,过程继续到步骤2118以计算不规律编程存储元件的总数。如果计数大于阈值,则在步骤2122中进行报告。注意,该阈值可以不同于在步骤2112中所使用的那些阈值。在一个实施方式中,该测试是针对编程不足的存储元件。一个实施方式中,该测试是针对过度编程的存储元件。参考图22E,该计数可以基于XDL锁存器。在本示例中,E状态和G状态的XDL锁存器指示这些存储元件是否为编程不足的。注意,其他状态也已在过程2100中测试。因此,可以对状态的几乎任何组合进行计数。典型地,不对Er状态测试编程不足。在一些实施方式中,不对G状态测试过度编程。
[0205] 在一个实施方式中,过程2100用于测试过度编程。在这种情况下,在步骤2102中可以使用不同组的参考电压。参考图6B,可以使用过度编程参考电压诸如Verase_OP、Vav_OP、Vbv_OP等。注意,这些过度编程参考电压仅为一个示例组;可以使用其他过度编程参考电压。
[0206] 还要注意的是,过程2100可以用于每个存储元件存储比三位更多或更少的存储元件。由此可能存在比ADL、BDL和CDL锁存器更多或更少的用于存储编程数据的锁存器。还要注意的是,并不必需进行快速通过写(QPW)。因此,在编程期间DDL锁存器不必需存储QPW数据。
[0207] 正如前面所提及的那样,在至少某些条件下XDL锁存器可以是用户可访问的。在一个实施方式中,在编程没有使用XDL锁存器用于存储锁定状态时,在编程期间为了用户目的(诸如后台缓存)释放XDL锁存器。用户还能够通过将编程数据发送至存储器阵列来有效地访问XDL锁存器,不管XDL锁存器是否将用于存储锁定状态。
[0208] 在一个实施方式中,过程1700用于确定字线是否为断的。图23是用于检测断字线的过程2300的一个实施方式的流程图。可以在EPD阶段(例如见图18)期间进行过程2300。过程2300的步骤2302至2308是过程1700的步骤1712和1714的一个实施方式。
在进行过程2300之前,存储元件可能通过使用步骤1702至1710被编程。回顾在一个实施方式中编程数据被保持在锁存器ADL、BDL和CDL中。而且,在一个实施方式中,XDL锁存器用于存储锁定信息。
[0209] 在步骤2302中,与任何状态相关联的参考电压被施加到所选字线的一端。在一个实施方式中,参考电压是与所选状态相关联的编程不足的电压。假设这是G状态,可以施加电压Vgv_UP。Vgv_UP可能与正常G验证参考电平(例如图5A中的VvG)一样高。然而,Vgv_UP可能低于该参考电平。注意,可以测试不同的状态。
[0210] 在一个实施方式中,该参考电压的持续时间比正常验证脉冲的持续时间长。注意,由于在编程操作期间存在多个验证脉冲,所以理想的是保持多个验证脉冲相对短。然而,过程2300仅需要施加单个参考电压。因此,在不显著影响整体编程速度的情况下,持续时间可能更长。
[0211] 在步骤2304中,确定施加参考电压的结果。在一个实施方式中,将这些结果存储在感测放大器中的数据锁存器中。例如,可以将结果存储在SDL中。
[0212] 在步骤2306中,设定DDL锁存器以指示来自所选状态的哪些存储元件是编程不足的。例如,如果阈值电压在Vgv_UP之下(如由SDL锁存器所示),则G状态存储元件(如由ADL、BDL和CDL确定的那样)将其DDL锁存器设定为“0”。另一方面,如果阈值电压在Vgv_UP处或者在Vgv_UP之上(如由SDL锁存器所示),则G状态存储元件(如由ADL、BDL、CDL确定的那样)将其DDL锁存器设定为“1”。所有其他状态的存储元件可以将其DDL锁存器设定为“1”,因为此时不测试它们。
[0213] 在步骤2308中,确定编程不足的存储元件的数量是否大于阈值数量。如果编程不足的存储元件的数量大于阈值数量,则在步骤2310中确定字线为断的。否则,过程结束。
[0214] 一个实施方式包含一种用于操作非易失性存储器的方法,包括以下步骤。与字线相关联的一组非易失性存储元件被编程至多个数据状态。在编程完成之后保持下述信息,该信息指示非易失性存储元件中的哪些被用来编程至数据状态中的第一数据状态。在编程之后第一参考电压被施加到字线的第一端。第一参考电压与第一数据状态相关联。确定施加参考电压的结果。基于这些结果和所保持的信息来确定字线是否具有异常高的电阻部分。
[0215] 一个实施方式包括一种用于操作非易失性存储器的方法,该方法包括以下步骤。对与字线相关联的一组非易失性存储元件进行编程。该非易失性存储元件被编程至多个数据状态。编程包括将第一参考电压施加到字线的第一端以验证状态中的第一状态。第一参考电压具有第一持续时间。在编程完成之后,保持下述信息,该信息指示非易失性存储元件中的哪些被用来编程至第一数据状态。在编程之后将第二参考电压施加到字线的第一端。
第二参考电压与第一数据状态相关联,其中第二参考电压具有比第一持续时间更长的第二持续时间。确定施加第二参考电压的结果。基于该结果和所保持的信息来确定字线是否为有缺陷的。在一个实施方式中,缺陷为断字线。
[0216] 一个实施方式包括非易失性存储设备,该非易失性存储设备包括多个非易失性存储元件、多条字线以及与多条字线通信的一个或多个管理电路。第一字线与多个非易失性存储元件中的一组非易失性存储元件相关联。多条字线中的每一条字线具有第一端。一个或多个管理电路将与字线相关联的一组非易失性存储元件编程至多个数据状态。一个或多个管理电路在编程完成之后保持下述信息,该信息指示非易失性存储元件中的哪些被用来编程至多个数据状态中的第一数据状态。一个或多个管理电路在编程之后将第一参考电压施加到字线的第一端。第一参考电压与第一数据状态相关联。一个或多个管理电路确定施加参考电压的结果。一个或多个管理电路基于该结果和所保持的信息来确定字线是否具有异常高的电阻部分。
[0217] 一个实施方式包括非易失性存储设备,该非易失性存储设备包括布置作为NAND串的多个非易失性存储元件、多条字线以及与多条字线通信的一个或多个管理电路。第一字线与多个非易失性存储元件中的一组非易失性存储元件相关联。多条字线中的每一条字线具有第一端。一个或多个管理电路对与第一字线相关联的一组非易失性存储元件进行编程。该非易失性存储元件被编程至多个数据状态。编程包括将第一参考电压施加到字线的第一端以验证状态中的第一状态。第一参考电压具有第一持续时间。一个或多个管理电路在编程完成之后保持下述信息,该信息指示非易失性存储元件中的哪些被用来编程至第一数据状态。一个或多个管理电路在编程之后将第二参考电压施加到字线的第一端。第二参考电压与第一数据状态相关联,其中第二参考电压具有比第一持续时间更长的第二持续时间。一个或多个管理电路确定施加第二参考电压的结果,一个或多个管理电路基于该结果和所保持的信息来确定字线是否有缺陷。
[0218] 一个实施方式包括一种用于操作非易失性存储器的方法,该方法包括以下步骤。针对与字线相关联的多个非易失性存储元件接收编程数据。可以在存储器阵列中的多个第一锁存器处接收数据。将编程数据从第一锁存器传送至每一个非易失性存储元件的相应的数据锁存器组。非易失性存储元件被编程至多个数据状态。在编程期间锁定数据被存储在多个第一锁存器中。在编程完成之后将编程数据保持在数据锁存器组中。基于被保持在数据锁存器组中的编程数据来确定非易失性存储元件的不规律编程。
[0219] 一个实施方式包括一种非易失性存储设备,该非易失性存储设备包括多个非易失性存储元件,多条字线,多组锁存器以及与多个非易失性存储元件、多条字线以及多组锁存器通信的一个或多个管理电路。第一字线与多组非易失性存储元件中的一组非易失性存储元件相关联。每组锁存器与该组中的非易失性存储元件之一相关联。与每个非易失性存储元件相关联的该组锁存器包括用于接收编程数据的第一锁存器。该组锁存器还包括用于存储要被编程到非易失性存储元件中的数据的数据锁存器。一个或多个管理电路将该组非易失性存储元件的编程数据传送至第一锁存器。一个或多个管理电路将编程数据从第一锁存器传送至该组中的每一个非易失性存储元件的相应的数据锁存器。一个或多个管理电路将该组中的非易失性存储元件编程至多个数据状态。在对该组非易失性存储元件进行编程时,一个或多个管理电路将锁定数据存储在第一锁存器中。一个或多个管理电路在编程完成之后将编程数据保持在数据锁存器中。一个或多个管理电路基于被保持在数据锁存器中的编程数据来确定该组中的非易失性存储元件是否被不规律地编程。
[0220] 一个实施方式包括一种用于操作非易失性存储器的方法,该方法包括以下步骤。经由总线在存储器控制器与存储器阵列之间串行传送编程数据。该编程数据针对与字线相关联的多个非易失性存储元件。将编程数据临时存储在与多个非易失性存储元件中的相应的非易失性存储元件相关联的第一数据锁存器中。将编程数据从第一锁存器移动至每一个非易失性存储元件的相应的数据锁存器组。基于编程数据将非易失性存储元件编程至多个数据状态。在编程期间将锁定条件存储在第一锁存器中。编程基于该锁定条件。在编程完成之后将编程数据保持在数据锁存器组中。基于被保持在数据锁存器组中的编程数据来确定被用来编程至数据状态中的第一数据状态的至少一组非易失性存储元件是过度编程的还是编程不足的。
[0221] 一个实施方式包括一种非易失性存储设备,该非易失性存储设备包括存储器阵列中的多个非易失性存储元件,多条字线,存储器阵列中的多个感测块以及与多个非易失性存储元件、多条字线及多个感测块通信的一个或多个管理电路。第一字线与多个非易失性存储元件中的一组非易失性存储元件相关联。感测块具有I/O接口,该I/O接口用于接收要被编程到存储器阵列中的数据并且用于提供从存储器阵列中读取的数据。每一个感测块具有至少一组锁存器。每组锁存器与该组中的非易失性存储元件之一相关联。与每个非易失性存储元件相关联的该组锁存器包括:用于从I/O接口接收编程数据的第一锁存器,以及用于存储要被编程至非易失性存储元件中的数据的一组数据锁存器。一个或多个管理电路将编程数据串行地传送至I/O接口中。该一个或多个管理电路将编程数据临时存储在与该组非易失性存储元件中的相应的非易失性存储元件相关联的第一数据锁存器中。该一个或多个管理电路将编程数据从第一锁存器移动至该组中的每一个非易失性存储元件的相应的数据锁存器组。该一个或多个管理电路基于编程数据将非易失性存储元件编程至多个数据状态。在编程期间,一个或多个管理电路将锁定条件存储在第一锁存器中。编程基于该锁定条件。该一个或多个管理电路在编程完成之后将编程数据保持在数据锁存器组中。该一个或多个管理电路基于被保持在数据锁存器组中的编程数据来确定被用来编程至数据状态中的第一数据状态的至少一组非易失性存储元件是过度编程的还是编程不足的。
[0222] 前述详细的描述用于说明与描述的目的。并不旨在穷举或将实施方式限制到所公开的精确形式。根据上述教导,许多修改和变化都是可能的。选择所描述的实施方式是为了最好地说明原理和实际应用,从而使本领域其他技术人员能够最好地利用各种实施方式以及适于所预期的特定用途的各种修改。所附权利要求限定本发明的范围。
相关专利内容
标题 发布/更新时间 阅读量
缺陷预测 2020-05-11 451
缺陷字线检测 2020-05-13 25
潜在缺陷识别 2020-05-13 327
缺陷检测机 2020-05-11 906
出生缺陷高危因子库及其构建方法 2020-05-11 288
缺陷登记方法 2020-05-12 810
缺陷检查仪 2020-05-11 905
AGSE缺陷菌株 2020-05-11 717
出生缺陷细胞库及其构建方法 2020-05-11 76
缺陷检测装置、缺陷修正装置及缺陷检测方法 2020-05-12 309
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈