编程具有错误校正码(ecc)的非易失性存储器(nvm)系统的制作方法

文档序号:6518641阅读:263来源:国知局
编程具有错误校正码(ecc)的非易失性存储器(nvm)系统的制作方法
【专利摘要】本发明涉及编程具有错误校正码(ECC)的非易失性存储器(NVM)系统。一种编程非易失性半导体存储器器件(50)的方法包括确定在编程操作(60)期间编程验证失败的位单元的数量。所述位单元包括在位单元阵列的位单元的子集中。所述方法还确定先前是否已经针对位单元(74)的子集执行了错误校正码(ECC)校正。如果在预定数量的编程脉冲之后的编程验证失败的所述位单元数量低于阈值并且针对位单元的子集没有执行ECC校正,则所述编程操作被认为是成功的。
【专利说明】编程具有错误校正码(ECC)的非易失性存储器(NVM)系统
【技术领域】
[0001]本公开内容总体上涉及非易失性存储器(NVM),更具体地说,涉及具有错误校正码(ECC)的NVM系统。
【背景技术】
[0002]非易失性存储器(NVM)通常需要特殊操作以进行编程和擦除并且能够执行这些操作的次数是有限度的。然而在公用存储器类型中、闪存、存储器以块为单位擦除,以片段为单位编程。虽然不止一个片段可以同时被编程,但被编程的部分小于一个整块。然而,仍然可能存在一些相比于其它大多数位需要显著更多的编程脉冲的位。这些在编程上缓慢的位可以被称为编程缓慢的位。另一个问题是随着时间的推移以及可能是经过成千上万个周期,某些存储器单元在编程方面可能会变弱或者变慢。这些潜在的弱的存储器单元在它们在编程方面实际变弱或变慢之前很难检测到。因此,通常它们是工作正常的,但是在器件被放置在产品中之后,可能会导致产品故障。在任何情况下都非常希望避免产品故障,尤其是集成电路的故障。这通常不是产品用户可以修复的,产品必须被退回,就相对于产品成本的修复成本而言如果是值得维修的话,则必须由受过专业训练并且具有昂贵的设备的人进行维修。
[0003]因此,需要NVM系统来改进上述提出的一个或多个问题。
【专利附图】

【附图说明】
[0004]本发明通过举例的方式进行说明并且不被附图所限制,在附图中相似的附图标记表示类似的元素。附图中的元素是为了简便以及清晰而示出的,不一定按比例绘制。
[0005]图1是根据一种实施例的NVM系统;
[0006]图2是有助于理解图1的NVM系统的图表;
[0007]图3是有助于理解图1的NVM系统的图表;以及
[0008]图4是有助于理解图1的NVM系统的流程图。
【具体实施方式】
[0009]一方面,错误校正码(ECC)连同非易失性存储器(NVM) —起被用于优化编程操作。特别是在使用了很多编程/擦除周期之后,编程操作可能受到编程缓慢的单个位的妨碍。当该单个位离被编完程还很远时,可以预计它在任何时候都不会被成功地编程。在这种情况下,在接下来的读取操作期间,可以依靠ECC来校正该编程缓慢的位。另一方面,如果该单个位相对地接近被成功地编程,则能够很大程度地确信它将被成功地编程并继续编程处理。参照附图和下文描述可以更好地理解这些。
[0010]图1中所示出的是具有NVM阵列12、错误校正码(ECC)单元14、ECC记录16、以及存储器控制器18的非易失性存储器(NVM)系统10。所述NVM阵列12包括多个块,这些块包括被示出为块O的块20、被示出为块I的块22、被示出为块2的块24、以及被示出为块3的块26。存储器控制器18耦接于NVM阵列12和ECC记录16。所述ECC单元14耦接于NVM阵列12和ECC记录16。块20、22、24、以及26各自具有被布置在多个ECC片段中的多个存储器单元。块20是具有多个ECC片段25的示例块,其中每个ECC片段都具有数据位和ECC位。示例的数据位27和示例的ECC位28形成了单个ECC片段。ECC片段是发生对ECC片段中的数据的错误校正或检测的块的单元或子集。例如,一种典型的ECC方法能够在ECC片段中校正单个位错误并且检测双位错误。对于块20、22、24以及26中的给定块,所有的存储器单元同时被擦除,但是都在ECC片段中被编程,其中可以一次编程两个片段,但是小于整个块。ECC位28对应于数据位27并且存储与数据位27有关的信息,并且以这种方式,对于数据位组,存在分别存储了与它的相应数据位有关的信息的相应ECC位组。在作为闪存存储器的典型NVM中,擦除操作通过块进行但是编程通过片段进行。
[0011]存储器控制器18控制NVM阵列12的操作,例如控制块擦除操作、读取、以及片段编程。ECC单元14接收NVM阵列12的输出,校正错误并且提供被校正的输出。ECC单元14还给ECC记录16提供关于NVM阵列中哪些位置需要被校正的信息以及关于这些校正的信息。ECC记录16优选存储于非易失性存储器并且可以位于NVM阵列12的预留部分。通常在编程操作期间,用户只需要指定要编程的数据位27,相应的ECC位28将被ECC单元计算,然后连同数据位一起被编程。存储器控制器18能够存取存储在ECC记录16中的信息。
[0012]图2中所示出的是在块20、22、24、以及26的其中一个的编程操作之前的位的选通电压分布32以及在编程操作的一部分之后的位的分布30。分布32示出了要编程的ECC片段的初始状态,其中该片段的所有位处于擦除状态。分布是理想地紧密的。编程操作被执行成多个编程脉冲,以将正被编程的块的ECC片段的位的阈值电压提升到足够高的阈值电压,以便它们传导指定的电流时的选通电压Vg处于被称为正常编程验证Vgp的正常编程验证电平之上。因此第一步就是将第一组连贯的编程脉冲施加于可以是两个ECC片段的块的一部分。在第一步之后,测试该片段中的位单元,以根据用于传导指定电流的选通电压Vg处于正常编程验证Vgp之上来验证它们已被正确地编程。位单元的这种测试可以被称为编程验证。如果需要更多的编程,则执行施加脉冲的后续步骤。后续步骤可以在相同的持续时间内具有相同数量的脉冲并且处于相同的电压。另一方面,后续的编程步骤可以在脉冲数量、持续时间、以及电压上相同或不同。分布30被认为是已编程的,因为分布30中的所有的位都具有在所施加的选通电压处于正常编程验证Vgp的情况下导致仅传导指定电流的阈值电压。因此,分布30的位可以被当作是处于正常编程验证电压Vgp之上。在NVM系统10的正常读取操作期间施加于位单元的选通电压Vg处于擦除验证电压Vge和编程验证电压Vgp之间,并且基于对于执行读取的最佳状态而被选择,该最佳状态确保用于数据保留的足够余裕并且区分位的编程状态和擦除状态。也就是说,被擦除的位应该处于这样的状态,在该状态中,当在正常读取操作期间施加选通电压Vg作为读取电压时,电流应该以一定的余裕处于预定电流之上,并且当施加选通电压Vg作为用于正常读取操作的读取电压时,被编程的位应该提供以一定余裕处于预定电流之下的电流。
[0013]正如在图2中所示出的,还存在不处于由编程操作中第一步产生的电压Vgp之上的位34,因此而没有被充分地编程以进行基于施加正常编程验证电压Vgp作为验证选通电压Vg的测试。另一种编程验证是通过施加降低的电压Vgr的选通电压而被执行的,所述电压Vgr以预定的差值(可以是500毫伏)低于编程验证电压Vgp。放宽的编程验证电压Vgr应该高于正常读取选通电压。放宽的编程验证是比正常编程验证简单的测试,其原因在于由于作为选通电压Vg而施加降低的电压Vgr,具有较低阈值电压的位可以传导指定的电流。将降低的电压Vgr用作验证选通电压Vg可以被称为放宽的编程验证。正如在图2中所示出的,位34通过了放宽的编程验证。
[0014]图3中所示出的是针对以下的情况,即分布36相当于在起始于与图2的分布32相同的被擦除的分布32的编程操作之后的ECC片段的分布,但结果是存在不仅没有通过基于正常编程电压Vgp的正常编程验证,而且也没有通过基于放宽的编程电压Vgr的放宽的编程验证的位38。那么图2和图3之间的差别是未通过图3中的正常编程验证的单个位38也未通过放宽的编程验证。因此,在这种情况下,相比于充分编程图2中的位34所需要的编程,在第一编程步骤之后未通过放宽的验证的唯一的位38可能预期需要更多的进一步的编程。因此,对于图3中的位38,在正常读取操作期间,不施加附加的编程脉冲而是依靠ECC来校正它是有好处的,因为否则的话可能会使编程操作明显变慢。而对于图2中的位34,它接近于通过正常编程验证。因此在图2的情况下,施加附加的编程脉冲以检查位34是否可以被移至正常编程验证电平之上,并且仅当达到了最大编程脉冲计数的时候才依靠用于这个位的ECC,这是有好处的。
[0015]图4所示出的是示出了如何处理图2和图3中的单个位编程缓慢的情况的流程图 50。流程图 50 包括步骤 52、54、56、58、60、62、64、66、68、70、72、74、78、80、82、84、86、88和89。在步骤52,编程操作开始,该步骤包括对地址和编程脉冲计数进行初始化。通常,脉冲计数被初始化为0,并且地址将被初始化到要编程的第一 ECC片段。在这个系统中,一对ECC片段可以被同时编程,但是这两个ECC片段被分别处理,因为它们各自具有一组数据位和相应的ECC位组。因此,对数据位27和ECC位28的编程对于其它ECC片段来说是示例的,因此,在这个例子中,数据位27和ECC位28被认为是被选择的片段。步骤54是在正常编程验证电平Vgp执行当前片段的编程验证。在步骤56,如果答案是肯定的,该验证通过,并且该处理继续进行到步骤78,确定是否存在另一个ECC片段要编程。如果结果在步骤78是否定的,那么在步骤82,该处理以编程完成而结束。如果结果在步骤78是肯定的,那么处理继续进行到步骤80,而编程前进到下一个ECC片段。如果答案在步骤56是否定的,即验证没有通过,那么在步骤58,施加编程脉冲并且增加脉冲计数。实际上当步骤78是下一步骤的时候,那么该片段的编程被认为是成功的。
[0016]然后在步骤60执行编程验证,该验证以正常验证电平Vgp发生。这个步骤识别对于正常验证的失败位的数量(A)。如果在步骤62,失败位的数量为0,这表示当前ECC片段已被成功地编程,该处理继续进行到步骤78,并且如果没有更多要编程的ECC片段,那么该处理进行到步骤82,而如果有更多要编程的ECC片段,那么该处理进行到步骤78和步骤80。如果在步骤60,有来自正常编程验证的至少一个失败位,该处理继续进行到步骤64以在开始执行放宽的编程验证之前,确定是否达到了预定数量的脉冲。如果没有,该处理继续进行到步骤58,施加另一个编程脉冲。如果达到了预定数量的脉冲,那么下一步骤是步骤66。如果步骤66确定只有一个来自步骤60的正常编程验证的失败位,即A=l,那么下一步骤是步骤84,在步骤84中编程验证电平被放宽到减小的电平Vgr,并且在放宽的编程验证电平执行编程验证。如果根据在步骤66中所确定的,存在多于一个的来自正常编程验证的失败位,那么在步骤68确定是否已达到最大脉冲计数。预定的脉冲计数小于最大脉冲计数。如果尚未达到最大脉冲计数,那么该处理继续进行到步骤58,施加另一个编程脉冲。如果达到了最大脉冲计数,则在步骤72编程失败。
[0017]在处理继续进行到步骤84的情况下,由于结果在步骤66是肯定的,即只有一个当前片段的位在正常验证电平Vgp失败,则验证电平下降至电平Vgr。通过获取来自放宽的编程验证的失败位的数量(B),确定该位在放宽的验证电平Vgr是否仍然失败。如果是的话,那么在步骤68,B=I为真,这表示存在既低于正常编程验证电平也低于放宽的编程验证电平的位。这种情况的例子就是图3中的位38。该处理继续进行到步骤88,通过检查ECC记录16来确定ECC校正是否已在这个片段上发生。如果没有,那么该片段被认为是通过,这是可能的,因为在正常读取操作期间可以依靠ECC来校正该单个的失败位,该处理继续进行到步骤78,然后到步骤80或步骤82。如果在步骤88确定ECC校正已在当前ECC片段中发生,那么下一步骤是在步骤89中确定是否达到最大脉冲计数。如果没有,该处理继续进行到步骤58,施加另一个编程脉冲。情况是这样的,因为ECC电路已被用于校正另一个单个位问题,从而能够不再依靠ECC来校正当前ECC片段上的单个的编程缓慢的失败位。因此,有必要保持施加编程脉冲以将单个的失败位移至正常编程验证电平之上。如果在步骤86,B=0,那么该处理继续进行到步骤89,确定最大脉冲计数是否已发生。如果没有,那么在步骤58,施加另一个编程脉冲。在已经在步骤89达到最大脉冲的情况下,那么如果在步骤62中A=I且在步骤86中B=0(这表示有低于正常编程验证但是高于放宽的编程验证的单个位,例如图2中的位34),则在步骤74进一步确定ECC校正是否已在当前片段上发生。如果发生的话,那么在步骤72中编程失败。如果ECC校正没有在当前ECC片段上发生,那么该片段是通过的,则在步骤78之后为步骤80或步骤82。
[0018]可以在块的级别上而不是在片段的级别上利用可用的ECC校正能力,但是对于实际校正,采用片段的级别进行。例如,可能存在这样一些情况,在块中出现的ECC校正总数可能很重要。因此,确定在整个块上进行的ECC校正的总数,而不是简单地确定没有ECC校正被进行,这同样可能是有好处的。
[0019]因此,存储器块已经经历了编程操作,该编程操作利用了获知单个的失败位的最可能的情况并且利用了可用的ECC来实现。对于以片段为级别,尤其如此。例如,片段可能具有64个数据位,其中有8个相应的ECC位。如果ECC不是另外地需要的并且在编程期间存在单个的缓慢位,那么可以依靠ECC来处理这种情况。如果单个的缓慢位即将通过,那么编程可能继续,并且有希望最终将通过。如果缓慢位远不能通过,那么继续进行编程处理是不太可能会成功的,因此如果在很大程度上确信会依靠ECC校正错误,后续编程步骤就不需要被执行。
[0020]另一种方法是在编程验证期间不执行ECC检查,但是如果只有一个位在正常编程验证电平失败并且只有一个位在放宽的编程验证电平失败,或者只有一个位在正常编程验证电平失败而编程脉冲计数的数量达到最大编程脉冲计数极限,则认为编程操作是成功的。ECC将仍然在正常读取操作期间被执行以校正失败位。对于任何片段的任何编程操作,校正是可能的,在这些片段中只有一个位编程失败,并且不另外地需要该片段的ECC位。
[0021]到目前为止,应理解本发明提供了包括非易失性存储器(NVM)位单元阵列的半导体存储器存储器件,其中该NVM位单元阵列被划分成一个或多个块。所述半导体存储器存储器件还包括耦接于NVM位单元阵列的存储器控制器。所述半导体存储器存储器件还包括耦接于所述阵列和所述存储器控制器的错误校正码(ECC)单元。所述存储器控制器被配置为在所述块中的一个块的子集的所述编程操作期间,当第一编程验证操作仅仅检测到所述NVM位单元中的一个在正常编程验证电压电平下编程验证失败的时候以及当第二编程验证操作检测到所述NVM位单元中的一个在放宽的编程验证电压电平下编程验证失败的时候,认为编程操作是成功的,其中所述放宽的编程验证电压电平低于所述正常编程验证电压电平且高于正常读取电压电平。所述半导体存储器存储器件还可以具有如下特征,即如果所述ECC单元先前没有对被编程的子集执行校正,则所述编程操作被认为是成功的。所述半导体存储器存储器件还可以具有如下特征,即其中在包括编程脉冲的所述编程操作期间,所述第一编程验证操作和第二编程验证操作在每个编程脉冲或编程脉冲组之后被执行。所述半导体存储器存储器件还可以具有如下特征,即在对所述第一编程验证操作失败的NVM位单元的数量进行计数之前,所述存储器控制器执行预定数量的编程脉冲。所述半导体存储器存储器件还可以具有如下特征,即所述预定数量的编程脉冲在2个和10个编程脉冲之间。所述半导体存储器存储器件还可以具有如下特征,即当所述第一编程验证操作仅仅检测到所述NVM位单元中的一个在所述正常编程验证电压电平下编程验证失败的时候,执行所述第二编程验证操作。所述半导体存储器存储器件还可以具有如下特征,即如果所述ECC单元先前没有对所述块中包括在所述放宽的编程验证电压电平下编程验证失败的NVM位单元之一的一个块执行校正,则认为所述编程操作是成功的。所述半导体存储器存储器件还可以具有如下特征,即所述存储器控制器被配置成在所述块中的一个块上的编程操作期间,如果达到了最大数量的编程脉冲,当所述第一编程验证操作仅仅检测到所述NVM位单元中的一个在所述正常编程验证电压电平下编程验证失败并且所述第二编程验证操作在所述放宽的编程验证电压电平检测到所有的所述NVM位单元成功地被编程的时候,所述编程操作被认为是成功的。所述半导体存储器存储器件还可以具有如下特征,即如果所述ECC单元先前没有对包括在所述正常编程验证电压电平下编程验证失败的NVM位单元中的一个的子集执行校正,则所述编程操作被所述存储器控制器认为是成功的。所述半导体存储器存储器件还可以具有如下特征,即如果所述ECC单元先前对所述块中包括在所述正常编程验证电压电平下编程验证失败的所述NVM位单元之一的一个块执行校正,则所述编程操作被认为是不成功的。所述半导体存储器存储器件还可以包括ECC记录,所述ECC记录包括了存储在非易失性存储器中的一个或多个ECC指示器,其中所述ECC指示器中的一个被分配给所述子集并且指示是否已对所述子集执行ECC校正。
[0022]还公开了一种编程半导体存储器器件的方法。所述方法进一步包括在非易失性位单元阵列的子集上执行编程操作,以及当达到编程脉冲的最大数时,如果在所述编程操作期间第一编程验证操作仅仅检测到所述非易失性位单元中的一个在正常编程验证电压电平下编程验证失败以及第二编程验证操作在放宽的编程验证电压电平检测到所有的非易失性位单元都成功地被编程的时候,则指明所述编程操作是成功的,其中所述放宽的编程验证电压电平低于所述正常编程验证电压电平。所述方法可以还包括在所述编程操作期间,当所述第一编程验证操作仅仅检测到所述非易失性位单元中的一个在所述正常编程验证电压电平下编程验证失败的时候,以及当所述第二编程验证操作检测到所述非易失性位单元中的一个在所述放宽的编程验证电压电平下编程验证失败的时候,则指明所述编程操作是成功的。所述方法可以还包括如果错误校正码(ECC)校正先前没有对被编程的非易失性位单元的子集执行,则指明所述编程操作是成功的。所述方法还可以具有如下特征,即如果所述ECC单元先前没有对包括在所述放宽的编程验证电压电平下编程验证失败的所述非易失性位单元之一的所述子集执行校正,则所述编程操作被认为是成功的。所述方法还可以具有如下特征,即在所述编程操作期间,所述第一验证操作和第二验证操作在每个编程脉冲或编程脉冲组之后执行。所述方法还可以包括如果错误校正码(ECC)校正先前没有对所述非易失性位单元的所述子集执行,则指明所述编程操作是成功的,所述非易失性位单元的所述子集包括在所述正常编程验证电压电平和所述放宽的编程验证电压电平下编程验证失败的所述位单元。所述方法还可以包括如果错误校正码(ECC)校正先前没有对所述子集执行校正,则指明所述编程操作是成功的,所述子集包括在所述正常的编程验证电压电平和所述放宽的编程验证电压电平下编程验证失败的所述非易失性位单元中的一个。
[0023]还公开了一种编程非易失性半导体存储器器件的方法。所述方法包括确定在编程操作期间编程验证失败的位单元的数量,其中所述位单元被包括在位单元阵列的位单元的子集中。所述方法还包括确定先前是否已针对位单元的子集执行错误校正码(ECC)校正。所述方法还包括如果在预定数量的编程脉冲之后编程验证失败的所述位单元数量低于阈值数量并且针对位单元的所述子集没有执行ECC校正,则允许将所述编程操作认为是成功的。所述方法还可以包括在所述位单元的子集上的编程操作期间,当所述第一验证操作检测到预定数量的位单元在所述正常编程验证电压电平下编程验证失败的时候,以及当所述第二验证操作检测到预定数量的位单元在所述放宽的编程验证电压电平下编程验证失败的时候,指明所述编程操作是成功的。
[0024]虽然本发明参照具体实施例进行了描述,但可以进行各种修改以及变化,而不脱离以下权利要求给出的本发明范围。例如,被同时编程的片段的数量可以改变。因此,说明书以及附图被认为是说明性而不是限定性的,并且所有这些修改希望被包含于本发明范围内。本发明关于具体实施例所描述的任何好处、优点或解决方案都不希望被解释为是任何或所有权利要求的关键的、必需的、或本质的特征或元素。
[0025]本发明所使用的术语“耦接”不希望被限定为直接耦接或机械耦接。
[0026]此外,词语“一”(a)或“一个”(an),如同在此所使用的,被定义为一个或多个。同样,诸如“至少一个”或“一个或多个”这样的引入性短语的使用在权利要求中不应当被认为暗指由不定冠词“一”(a)或“一个”(an)所引入的另一权利要求的要素将含有该引入的权利要求要素的任意特定的权利要求限定于仅含有一个这样的要素的发明,即使当同一的权利要求包括引入性短语“一个或多个”或“至少一个”和例如“一” Ca)或“一个”(an)的不定冠词时也是如此。对于定冠词的使用同样如此。
[0027]除非另有说明,术语如“第一”以及“第二”用于任意区分这些术语所描述的元素。因此,这些术语不一定旨在表示这些元素的时间次序或其它优先次序。
【权利要求】
1.一种半导体存储器存储器件,包括: 非易失性存储器(NVM)位单元阵列,其中所述NVM位单元阵列被划分成一个或多个块; 存储器控制器,耦接于所述NVM位单元阵列;以及 错误校正码(ECC)单元,耦接于所述阵列和所述存储器控制器,其中所述存储器控制器被配置成: 在所述块之一的子集的编程操作期间, 当第一编程验证操作仅仅检测到所述NVM位单元中的一个在正常编程验证电压电平下编程验证失败的时候,以及 当第二编程验证操作检测到所述NVM位单元中的所述一个在放宽的编程验证电压电平下编程验证失败的时候,认为所述编程操作是成功的,其中所述放宽的编程验证电压电平低于所述正常编程验证电压电平且高于正常读取电压电平。
2.根据权利要求1所述的半导体存储器存储器件,其中如果所述ECC单元先前没有对被编程的子集执行校正,则所述编程操作被认为是成功的。
3.根据权利要求1所述的半导体存储器存储器件,其中在包括编程脉冲的编程操作期间,所述第一编程验证操作和所述第二编程验证操作在每个编程脉冲或编程脉冲组之后被执行。
4.根据权利要求1所述的半导体存储器存储器件,其中在对所述第一编程验证操作失败的NVM位单元的数量进行计数之前,所述存储器控制器执行预定数量的编程脉冲。
5.根据权利要求1所述的半导体存储器存储器件,其中当所述第一编程验证操作仅仅检测到所述NVM位单元中 的一个在所述正常编程验证电压电平下编程验证失败的时候,执行所述第二编程验证操作。
6.根据权利要求4所述的半导体存储器存储器件,其中所述预定数量的编程脉冲在2个和10个编程脉冲之间。
7.根据权利要求1所述的半导体存储器存储器件,其中如果所述ECC单元先前没有对所述块中包括在所述放宽的编程验证电压电平下编程验证失败的所述NVM位单元之一的一个块执行校正,则所述编程操作被认为是成功的。
8.根据权利要求1所述的半导体存储器存储器件,其中所述存储器控制器被配置成在所述块中的所述一个块的编程操作期间,如果达到了最大数量的编程脉冲,当所述第一编程验证操作仅仅检测到所述NVM位单元中的一个在所述正常编程验证电压电平下编程验证失败并且所述第二编程验证操作在所述放宽的编程验证电压电平下检测到所有的NVM位单元都成功地编程的时候,所述编程操作被认为是成功的。
9.根据权利要求8所述的半导体存储器存储器件,其中如果所述ECC单元先前没有对包括在所述正常编程验证电压电平下编程验证失败的NVM位单元中之一的子集执行校正,则所述编程操作被所述存储器控制器认为是成功的。
10.根据权利要求8所述的半导体存储器存储器件,其中如果所述ECC单元先前对所述块中包括在所述正常编程验证电压电平下编程验证失败的NVM位单元之一的一个块执行校正,则所述编程操作被认为是不成功的。
11.根据权利要求1所述的半导体存储器存储器件,还包括ECC记录,所述ECC记录包括存储在非易失性存储器中的 一个或多个ECC指示器,其中所述ECC指示器中的一个被分配给所述子集并且指示是否已对所述子集执行ECC校正。
12.—种编程半导体存储器器件的方法,包括: 在非易失性位单元阵列的子集上执行编程操作,以及 当达到编程脉冲的最大数时,如果在所述编程操作期间第一编程验证操作仅仅检测到所述非易失性位单元中的一个在正常编程验证电压电平下编程验证失败并且第二编程验证操作在放宽的编程验证电压电平下检测到所有的非易失性位单元都成功地编程的时候,则指明所述编程操作是成功的,其中所述放宽的编程验证电压电平低于所述正常编程验证电压电平。
13.根据权利要求12所述的方法,还包括: 在所述编程操作期间,当所述第一编程验证操作仅仅检测到所述非易失性位单元中的一个在所述正常编程验证电压电平下编程验证失败的时候,以及 当所述第二编程验证操作检测到所述非易失性位单元中的一个在所述放宽的编程验证电压电平下编程验证失败的时候, 指明所述编程操作是成功的。
14.根据权利要求12所述的方法,还包括如果错误校正码(ECC)校正先前没有对被编程的非易失性位单元的子集执行,则指明所述编程操作是成功的。
15.根据权利要求12所述的方法,其中如果所述ECC单元先前没有对包括在所述放宽的编程验证电压电平下编程验证失败的所述非易失性位单元之一的子集执行校正,则所述编程操作被认为是成功的。
16.根据权利要求13所述的方法,其中在所述编程操作期间,所述第一验证操作和所述第二验证操作在每个编程脉冲或编程脉冲组之后执行。
17.根据权利要求13所述的方法,还包括如果错误校正码(ECC)校正先前没有对所述非易失性位单元的、包括在所述正常编程验证电压电平和所述放宽的编程验证电压电平下编程验证失败的位单元的子集执行,则指明所述编程操作是成功的。
18.根据权利要求13所述的方法,还包括如果错误校正码(ECC)校正先前没有在所述子集上执行校正,则指明所述编程操作是成功的,所述子集包括在所述正常的编程验证电压电平和所述放宽的编程验证电压电平下编程验证失败的所述非易失性位单元中的一个。
19.一种编程非易失性半导体存储器器件的方法,包括: 确定在编程操作期间编程验证失败的位单元的数量,其中所述位单元包括在位单元阵列的位单元的子集中; 确定先前是否已针对位单元的子集执行错误校正码(ECC)校正;以及如果在预定数量的编程脉冲之后编程验证失败的位单元的数量低于阈值并且针对位单元的子集没有执行ECC校正,则允许将所述编程操作认为是成功的。
20.根据权利要求19所述的方法,还包括: 在对位单元的子集的擦除操作期间, 当所述第一验证操作检测到在正常擦除验证电压电平预定数量的位单元擦除验证失败的时候,以及 当所述第二验证操作检测到在所述放宽的擦除验证电压电平预定数量的位单元擦除验证失败的时候, 指明擦除操作是成功的。
【文档编号】G06F11/10GK103810055SQ201310559366
【公开日】2014年5月21日 申请日期:2013年11月12日 优先权日:2012年11月12日
【发明者】穆甫臣, 何晨 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1