集成电路半导体器件及其内建存储器自修复电路和方法

文档序号:6772755阅读:290来源:国知局
专利名称:集成电路半导体器件及其内建存储器自修复电路和方法
技术领域
本发明涉及一种用于半导体集成电路器件中存储器电路的内建自检测(BIST)和内建自修复(BISR)电路和方法。
近来,随着片载系统(SOC)设计被推崇为新的设计潮流,基于内核的集成电路(IC)设计格外引人关注。因此,在IC设计中频繁采用存储器内核或模拟内核以及中央处理单元(CPU)内核。跟随SOC设计这一潮流,诸如CPU等复杂电路或系统芯片将需要更大容量的嵌入式存储器来改善系统带宽。
现代技术能够在满足相对较小芯片尺寸的要求的同时实现高存储容量。由于电路中的嵌入式存储器具有较高的复杂度,并且比其它逻辑块共享更多的信号,所述嵌入式存储器具有较高的故障率。为了解决这一问题,设计者通常为嵌入式存储器增加一些冗余。
一般通过外部的存储器测试器或自动测试设备(ATE)来测试半导体存储器器件。这些测试设备在判断故障存储单元是否可修复之后,通过软件修复算法来对检测出的故障存储单元进行物理修复(例如激光刷写-laserzapping)。为了按照上述方法测试SOC,必须单独测试内核和嵌入式存储器,因此需要有另外的外部管脚。于是,这使得SOC测试更复杂且使得SOC的制造成本很高。
为了解决这个问题,SOC通常包括用于执行自检测的内建自检测(BIST)电路、和用于执行自修复的内建自修复(BISR)电路。BISR电路包括一种修复算法,用于判断是否故障存储单元可修复,并通过软件来执行逻辑修复。如上所述,BISR电路的修复方法与执行物理修复的外部存储器测试器或ATE不同。上述自检测和自修复的应用成为在近来发展成SOC的处理器设计技术中的一个不可获缺的部分。在以下专利文献中可以找到BIST电路和BISR电路的例子,这些文献是于1999年7月颁发给沙伊克等人的名称为“用于在半导体存储器器件中进行内建自修复的冗余寄存器电路”的第5,920,515号美国专利,以及于1999年11月颁发给埃林克伊等人的名称为“采用自修复电路来测试存储器操作和永久失效存储位置的方法”的第5,987,632号美国专利。
通常,采用冗余单元的修复方法通过软件来利用字线(即行地址)和位线(即列地址)构建一个二值搜索树,按深度优先的搜索方式(DFS)逐个存储单元地确定将哪一个字线和位线的故障存储单元替换成冗余单元。在这种情况下,该技术要花费O(2n)的测试时间,这意味着若假定执行一次运算(例如相乘)需要的时间为n,则确定操作要花费2n的时间。所需时间与行和列冗余的数目以及故障存储单元的分布数量形成指数函数关系。因此,在冗余存储单元数很大时并且当存储器包括许多故障存储单元时,这种修复方法不是很有效。这种问题被称为“NP完全(NP completeness)”问题。为了解决这一问题,可采用一种试探性方法。试探性方法通过试验和错误获得的经验知识来解决给定问题。如果在NP完全问题中采用任何算法,则将问题的范围限定在特别窄的界限内会很有效。在这样的情况下,就不可能通过不设界限限制的硬件来解决NP完全问题。
为此,嵌入有BISR电路的某些SOC限制了要修复的界限。例如,将行和列的冗余存储单元数分别限制在1以下。在冗余存储单元数分别为1或1对的情况下,BISR电路的结构变得简单。在这种情况下,SOC具有这样一种限制,即SOC仅能够修复一行和一列。
然而,考虑到SOC需要更高容量的嵌入式存储器的趋势,需要另外的冗余存储单元来修复在嵌入式存储器中出现的其它故障存储单元。如果嵌入式存储器的故障存储单元没有被完全修复,即使诸如中央处理单元(CPU)等相对昂贵的内核无故障,SOC的可靠性也会受到相对便宜的嵌入式存储器的故障存储单元的不利影响。
因此,需要一种新的BISR电路和修复方法,用于以更加精确的方式修复具有多个冗余存储单元的嵌入式存储器的故障存储单元。
因此,本发明的目的是提供一种集成电路半导体器件,它具有用于含有多个冗余存储单元的嵌入式存储器的BISR电路。
本发明的另一目的是提供一种用于含有多个冗余存储单元的嵌入式存储器的BISR电路的修复方法。
为了实现上述目的,按照本发明的一个方面,提供了一种集成电路半导体器件,包括嵌入式存储器,它包含多个行和列冗余;内建自检测电路,用于检测存储器的故障存储单元;以及内建自修复电路,用于将检测到的故障存储单元信息分成行信息和列信息以保存该信息,根据行信息和列信息来确定故障存储单元的修复方法,并根据所确定的方法来生成存储器的修复地址。
最好是,内建自修复电路包括内建自修复控制器,用于控制内建自修复电路的操作;第一数据保存装置,它包括具有多个数据字段的多个项目,用于保存故障存储单元的行地址以及在相同行地址上出现的故障存储单元的数目;第一逻辑单元,用于在内建自修复控制器的控制下将故障存储单元的所述行地址和所述数目保存到第一数据保存装置中;第二数据保存装置,它包括具有多个数据字段的多个项目,用于保存故障存储单元的列地址以及在相同列地址上出现的故障存储单元的数目;第二逻辑单元,用于在内建自修复控制器的控制下将故障存储单元的所述列地址和所述数目保存到第二数据保存装置中;第三逻辑单元,用于在内建自修复控制器的控制下,保存具有与第一和第二数据保存装置的行和列地址相对应的列和行地址的相对数据保存装置的项目位置,并减小在相对数据保存装置的项目位置上保存的故障存储单元数目;以及地址校验器,用于在内建自修复控制器的控制下根据故障存储单元的行和列地址,来为存储器生成修复行和列地址。
最好是,内建自修复电路首先为第一和第二数据保存装置中具有较少项目的那一个数据保存装置确定修复方法。内建自修复电路也可以按照所保存的故障存储单元数目的大小次序,来选择第一或第二数据保存装置所包含的项目,以确定第一或第二数据保存装置的修复方法。
最好是,第三逻辑单元在为确定修复方法而要选择一个或多个项目时,将所选项目指定的相对数据保存装置中保存的故障存储单元数目减1,并且,在被减小的故障存储单元数目为零时,删除相对数据保存装置的项目。
最好是,在第一数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的行信息的有效性;第二数据字段,用于保存故障存储单元的行地址;第三数据字段,用于保存具有在第二数据字段中保存的同一行地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元行地址相对应的列地址的第二数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。最好是,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段包括[log2C]+1个比特,数目等于C的第四数据字段中的每一个第四数据字段包括[log2(C+CR)]个比特。最好是,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段还可以由C+1个比特组成,这包括一个设置成1的最低有效位,每当检测到具有相同行地址的故障存储单元时,就左移该最低有效位,并且,用作位标志以指示项目位置的第四数据字段由C个比特组成。
在第二数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的列信息的有效性;第二数据字段,用于保存故障存储单元的列地址;第三数据字段,用于保存具有在第二数据字段中保存的同一列地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元列地址相对应的行地址的第一数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段可以由[log2R]+1个比特组成,数目等于R的第四数据字段中的每一个第四数据字段可以由[log2(R+RC)]个比特组成。另外,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段由R+1个比特组成,这包括一个设置成1的最低有效位,每当检测到具有相同列地址的故障存储单元时,就左移该最低有效位,并且,用作位标志来指示项目位置的第四数据字段由R个比特组成。
按照本发明的另一方面,提供了一种用于嵌入式存储器的内建自修复电路的自修复方法,所述嵌入式存储器具有多个冗余,所述自修复方法包括下列步骤分别将行和列信息填入到第一和第二数据保存装置中,其中所述行和列信息分别包括故障存储单元的行和列地址、具有相同行和列地址的故障存储单元的数目、以及保存有与各个行和列地址相对应的列和行地址的相对数据保存装置的项目位置;按照在项目中保存的故障存储单元数目的大小次序,来选择在第一或第二数据保存装置中包括的一个项目,以便为数目等于行或列冗余数目的故障存储单元确定修复方法,并且减小由所选项目指定的相对数据保存装置的项目位置中保存的故障存储单元数目;以及按照所确定的修复方法生成存储器的修复地址。
在一个优选实施例中,在第一数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的行信息的有效性;第二数据字段,用于保存故障存储单元的行地址;第三数据字段,用于保存具有在第二数据字段中保存的同一行地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元行地址相对应的列地址的第二数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
在第二数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的列信息的有效性;第二数据字段,用于保存故障存储单元的列地址;第三数据字段,用于保存具有在第二数据字段中保存的同一列地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元列地址相对应的行地址的第一数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
最好是,用于将行/列信息填入到第一/第二数据保存装置的步骤包括下列步骤判断是否在第一数据保存装置中保存有一个故障存储单元的行地址;如果在第一数据保存装置中保存有所述故障存储单元的行地址,则将第一数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第二数据保存装置的一个项目位置;如果在第一数据保存装置中没有保存所述故障存储单元的行地址,则在第一数据保存装置中保存所述行地址,并且在第四数据字段中保存第二数据保存装置的所述项目位置;判断是否在第二数据保存装置中保存有所述故障存储单元的列地址;如果在第二数据保存装置中保存有所述故障存储单元的列地址,则将第二数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第一数据保存装置的一个项目位置;以及如果在第二数据保存装置中没有保存所述故障存储单元的列地址,则在第二数据保存装置中保存所述列地址,并且在第四数据字段中保存第一数据保存装置的所述项目位置。
最好是,用于确定修复方法的步骤包括下列步骤(a)在第一数据保存装置和第二数据保存装置中选择具有较少项目的一个数据保存装置;(b)按照故障存储单元数目的大小次序选择项目,确定所选的数据保存装置的修复方法;(c)减小由所选项目指定的相对数据保存装置的项目位置中保存的故障存储单元数目;(d)将步骤(b)和(c)重复与对应于所选数据保存装置的行/列冗余数目相同的次数;(e)在第一数据保存装置和第二数据保存装置中选择具有较多项目的一个数据保存装置;以及(f)将步骤(b)和(c)重复与对应于所选数据保存装置的行/列冗余数目相同的次数。
最好是,所确定的修复方法使用行/列冗余。最好是,若被减小的故障存储单元数目等于零,就删除相对数据保存装置的项目。
通过以下参照附图详细说明本发明的优选实施例,本发明的上述和其它目的、特征和优点将变得很明显。附图中的相同标号表示相同的部件。附图并没有按照实际比例来制作,其重点放在了本发明原理的说明上。


图1是表示本发明一个优选实施例的集成电路半导体器件的方框图;图2是表示常规填充项目结构的示意图;图3A是表示本发明一个优选实施例的行填充项目结构的示意图;图3B是表示本发明一个优选实施例的列填充项目结构的示意图;图4A是表示如图3A所示的行填充项目之一的结构的示意图;图4B是表示如图3B所示的列填充项目之一的结构的示意图;图5是表示一例在如图1所示的嵌入式存储器中出现的故障存储单元的示意图;图6A-6J是表示用于将与如图5所示的故障存储单元有关的信息保存到图3A和图3B所示的行和列填充项目中的处理的示意图;图7A-7F是表示用于按照如图6A-6J所示的行和列填充项目中保存的信息为图5所示的故障存储单元确定修复方法的步骤的示意图;图8是表示如图7A-7F所示步骤确定的修复方法的嵌入式存储器修复结果的示意图;图9是表示如图1所示的BISR电路的操作的示意流程图;图10A和图10B是表示用于将故障存储单元信息保存到如图3A和图3B所示的行和列填充项目中的步骤的详细流程图;图11A和图11B是表示如图9所示的用于确定故障存储单元修复方法的步骤的详细流程图;图12是表示利用如图3A和图3B所示的行和列填充项目以及利用如图2所示的常规填充项目的BISR电路修复覆盖率的示意图。
应明白,优选实施例的说明只是示意性的,而不应将其理解成是限制性的。在下面的详细说明中,为了全面理解本发明,给出了几个具体细节。然而,本领域普通技术人员应明白,本发明的实施不受这些具体细节的限制。
图1是表示本发明一个优选实施例的集成电路半导体器件的方框图。参照图1,SOC系统包括嵌入式存储器30、用于测试包括存储器30的SOC系统的BIST电路10、以及用于按照BIST电路10输出的测试结果来修复SOC系统的BISR电路20。
存储器30由M×N个存储单元组成,并包括多个行冗余(例如R个冗余)31以及多个列冗余(例如C个冗余)32。
BIST电路10包括BIST控制器11、地址生成器12、数据生成器13以及比较器14。BISR电路20包括BISR控制器21、地址校验器22、第一填充逻辑23、第二填充逻辑24、行填充项目25、列填充项目26和分配逻辑27。行和列填充项目25和26是由多个项目组成的内部存储器,这些项目用于保存在嵌入式存储器30中出现的行和列故障存储单元的信息。在许多情况下,行/列填充项目25或26被称为故障地址存储器(FAM)。下面将说明嵌入式存储器30的BIST电路10和BISR电路20的测试和修复操作。
BIST控制器11按照其采用的测试算法来控制整个BIST的操作。地址生成器12生成用于发送到存储器30的地址Addr。地址Ad出由行地址和列地址组成。数据生成器13生成要与读出数据Dout比较的输入数据Din。比较器14将输入数据Din与读出数据Dout相比较,并且在出现不匹配时,为BISR电路20的BISR控制器21生成故障存储单元信息。
BISR电路20通常与BIST电路10一起工作。BISR控制器21控制整个BISR的操作。它通过从BIST电路10接收故障存储单元信息来开始工作。在一个优选实施例中,当BISR电路20在工作中时,BIST电路10将暂停工作并一直等待BISR工作完成。
当BIST电路10向BISR控制器21提供故障存储单元信息时,第一和第二填充逻辑23和24分别将故障的地址和数目保存到行填充项目25和列填充项目26。行填充项目25和列填充项目26分别包括用于指定对应项目位置的指针,这将在下面进行说明。利用这些指针,能够检验保存有与故障存储单元行/列地址相对应的列/行地址的相对填充项目26或25的项目位置。由分配逻辑27保存各个指针。
在完全将故障存储单元信息保存到行和列填充项目25和26之后,BISR控制器21选择行填充项目25或列填充项目26。被选的项目的数目少于未被选择的项目的数目。此外,BISR控制器21按照所保存的故障存储单元数目的大小次序来选择相应的项目,以确定所选行或列填充项目的修复方法。如果全部确定出所选填充项目的修复方法,则对其它填充项目25或26执行相同的过程,反之亦然。
在BIST控制器21的控制下,当选择一个项目来确定修复方法时,分配逻辑27将由所选项目指定的相对项目中保存的故障存储单元数目减1。在这种情况下,如果被减小的故障存储单元数目等于0,分配逻辑27就删除相应的项目。在按照上述处理完成故障存储单元修复方法的确定之后,BISR电路20根据故障存储单元的地址生成存储器30的修复地址。
按照上述的BISR电路20的操作,SOC自身可以利用存储器30的行/列冗余来修复故障存储单元。无论行/列冗余31或32的数目有多少,利用行和列填充项目25和26的本发明的修复方法都具有很高的修复率。
图2是表示常规填充项目结构的示意图。常规BISR电路包括用于保存故障存储单元的行和列地址信息的填充项目。通常,若嵌入式存储器包括R个行冗余和C个列冗余,则故障存储单元数目为要在填充项目中作为地址信息来保存的2×R×C。因此,如图2所示,填充项目数目为2×R×C。在这样的情况下,由于要按照在相同填充项目中保存的故障存储单元的行和列地址来执行修复算法,所以执行修复算法的限制将随着故障存储单元数目和冗余存储单元数目的增加而成比例地增长。
参照图2,“有效性”字段表示信息的有效性。“行地址”字段用于保存故障存储单元的行地址。“行内计数(Row Hit Count)”字段用于保存具有相同行地址的所检测出的故障存储单元的数目。“列地址”字段用于保存故障存储单元的列地址,和“列内计数”字段用于保存具有相同列地址的所检测出的故障存储单元的数目。此外,“修复行/列”字段是在确定出一行/列需要修复时设置的字段。在需要进行行/列修复的情况下,利用填充项目进行故障修复的常规BISR电路的问题在于,其修复率随故障存储单元数目和行/列冗余数目的增加而成比例地降低。
因此,本发明的BISR电路20(见图1)通过将故障存储单元信息分割成行填充项目和列填充项目来分别构建行填充项目和列填充项目,以进行自修复。因此,降低了硬件开销。此外,相应的行和列项目保存了相对的填充项目信息,以使BISR电路20在即使行/列冗余增加的情况下也能够准确修复故障存储单元。下面将说明行和列填充项目25和26的结构。
图3A是表示本发明一个优选实施例的行填充项目25的结构的示意图。在嵌入式存储器30包括R个行冗余和C个列冗余的情况下,行填充项目25的总数为R+R×C。
参照图3A,“有效性”字段用于表示信息的有效性。“行地址”字段用于保存故障存储单元的行地址。“行内计数”字段用于保存此时在同一行地址上检测出的故障存储单元的数目。在这样的情况下,如果具有相同行地址的故障存储单元的数目大于存储器30的列冗余的数目(即C),则“行内计数”值不再增加。“列填充项目指针”字段是用于指示一个列填充项目位置的指针,该列填充项目保存有与“行地址”字段中保存的行地址相对应的列地址。“列填充项目指针”字段被分配对应于冗余数目C。此外,“修复行”字段在当确定一行要利用行冗余来修复时被设置。
图3B是表示本发明一个优选实施例的列填充项目26的结构的示意图。在嵌入式存储器30包括R个行冗余和C个列冗余的情况下,列填充项目26的总数为C+C×R。
参照图3B,“有效性”字段用于表示信息的有效性。“列地址”字段用于保存故障存储单元的列地址。“列内计数”字段用于保存此时在同一列地址上检测出的故障存储单元的数目。在这样的情况下,如果具有相同列地址的故障存储单元的数目大于存储器30的行冗余的数目(即R),则“列内计数”值不再增加。“行填充项目指针”字段是用于指示一个行填充项目位置的指针,该行填充项目保存有与“列地址”字段中保存的列地址相对应的行地址。“行填充项目指针”字段被分配R。此外,“修复列”字段在当确定一列要利用列冗余来修复时被设置。
图4A是表示如图3A所示的行填充项目25之一的结构的示意图。参照图4A,它示出了组成行填充项目25A的每一个字段的长度。
例如,“有效性”字段的长度为1比特。如果嵌入式存储器30由M×N存储单元组成,则“行地址”字段由log2M个比特组成,“行内计数”字段由[log2C]+1个比特组成,“列填充项目指针”字段由[log2(C+CR)]个比特组成,及“修复行”字段由1个比特组成。填充项目25A包括C个列项目指针单元。
图4B是表示如图3B所示的列填充项目26之一的结构的示意图。参照图4B,它示出了组成列填充项目26A的每一个字段的长度。
例如,“有效性”字段的长度为1比特。如果嵌入式存储器30由M×N存储单元组成,则“列地址”字段由log2N个比特组成,“列内计数”字段由[log2R]+1个比特组成,“行填充项目指针”字段由[log2(R+RC)]个比特组成,和“修复列”字段由1个比特组成。填充项目26A包括R个“行填充项目指针”单元。
除了上述的结构之外,“列填充项目指针”可以由对应于嵌入式存储器30的列冗余数目的C个比特组成,和“行填充项目指针”可以由对应于嵌入式存储器30的行冗余数目的R个比特组成。“行填充项目指针”或“列填充项目指针”用作位标志,它用于指示保存有故障存储单元行/列地址的相对填充项目的位置。在这样的情况下,“行填充项目指针”和“列填充项目指针”的每一位将表示在相对项目中保存与当前项目列或行地址相对应的行或列地址的位置。通过在“行填充项目指针”或“列填充项目指针”的各位中搜索哪一位被设置成1,可以校验项目位置。
此外,“行内计数”和“列内计数”可以由“相对冗余数目+1”个比特组成,并且分别将“行内计数”和“列内计数”的最低有效位(LSB)设置为1。例如,“行内计数”由C+1个比特组成,“列内计数”由R+1个比特组成。在这样的情况下,每当在相同的行或列地址上检测到一个故障存储单元时,就左移一次标记为1的位。例如,如果没有在相同的行或列地址上检测到故障存储单元,则“行内计数”或“列内计数”的LSB保持1的值。然而,如果在相同的行或列地址上检测到故障存储单元,则将标记为1的位移动与相同地址上出现的故障存储单元的数目相同的次数。因此,利用被标记为1的位的位置,可以校验具有相同地址的故障存储单元的数目。
图5是表示一例在如图1所示的嵌入式存储器30中出现的故障存储单元分布的示意图。参照图5,各字符a-j表示故障存储单元的检测次序。下面将说明本发明的故障存储单元的修复方法,其中,行冗余数目为3(即R=3),且列冗余数目为2(即C=2)。
图6A至6J是表示用于将与如图5所示的故障存储单元a-j有关的信息保存到图3A和图3B所示的行和列填充项目25和26中的步骤的示意图。
首先参照图6A,由于存储器30A中包括的行冗余数目为3(即R=3),且存储器30A中包括的列冗余数目为2(即C=2),则行填充项目25由9(即3+3×2=9)个项目组成,而列填充项目26由8(即2+2×3=8)个项目组成。在这样的情况下,“列填充项目指针”字段被分配2,这等于列冗余的数目(即C=2),例如,该字段由列项目指针1和列项目指针2组成。此外,“行填充项目指针”字段被分配3,这等于行冗余的数目(即R=3),例如,该字段由行项目指针1、行项目指针2和行项目指针3组成。在图6A至6J中,黑圆点表示检测出的故障存储单元,白圆点表示未检测出的故障存储单元。
参照图6A的行填充项目25,当检测到第一个故障存储单元“a”时,要判断是否在行填充项目25中保存有第一个故障存储单元“a”的行地址。在这种情况下,在行填充项目25中还没有保存该行地址(即1),则第一项目变为有效,并将第一个故障存储单元“a”的行地址保存在“行地址”字段中。至此,第一行的检测出的故障存储单元的数目为1,于是“行内计数”字段被填充为1。在列填充项目26的第一项目中将保存第一个故障存储单元“a”的列地址(即3)。因此,第一个“列填充项目指针”(即列项目指针1)字段被填充为1。
接着再参照6A的列填充项目26,在保存了第一个故障存储单元“a”的行地址信息之后,将判断是否在列填充项目26中保存有第一个故障存储单元“a”的列地址。在这种情况下,在列填充项目26中没有保存该列地址(即3),则第一项目变为有效,并将该列地址(即3)保存在“列地址”字段中。至此,第三列的检测出的故障存储单元的数目为1,于是“列内计数”字段被填充为1。在行填充项目25的第一项目中保存第一个故障存储单元“a”的行地址。因此,第一个“行填充项目指针”(即行项目指针1)字段被填充为1。
参照图6B的行填充项目25,当在检测到第一故障存储单元“a”之后又检测到第二个故障存储单元“b”时,要判断是否在行填充项目25中保存有第二个故障存储单元“b”的行地址。在这种情况下,如果在行填充项目25的第一项目中已经保存了该行地址(即1),则“行地址”字段不变,并将“行内计数”字段值更新为2。在列填充项目26的第二项目中将保存第二个故障存储单元“b”的列地址。因此,第二个“列填充项目指针”(即列项目指针2)字段被填充为2。
接着再参照6B的列填充项目26,在保存了第二个故障存储单元“b”的行信息之后,将判断是否在列填充项目26中保存有第二个故障存储单元“b”的列地址(即5)。在这种情况下,在列填充项目26中没有保存该列地址(即5)。因此列填充项目26的第二项目变为有效,并将该列地址(即5)保存在第二项目的“列地址”字段中。至此,第五列的检测出的故障存储单元的数目为1,于是“列内计数”字段被填充为1。在行填充项目25的第一项目中保存第二个故障存储单元“b”的行地址。因此,第一个“行填充项目指针”(即行项目指针1)字段被填充为1。
然而,当行冗余数目为3(即R=3)且列冗余数目为2(即C=2)时,如果在一行中检测到三个以上的故障存储单元(即如果“行内计数”值超过列冗余数目),则必须利用行冗余来修复故障存储单元,原因是故障存储单元数目超过了列冗余的修复范围。换句话说,如果在某一行上故障存储单元数目超过了列冗余数目,则必须将“修复行”字段设置成1。此时,将列填充项目26的保存有与该行地址对应的各列地址的各“列内计数”值减1。此外,还删除行填充项目25的“行填充项目指针”,然后执行下一行的故障检验。上面,以行填充项目25为例说明了如上所述的操作。然而,如同对行填充项目25一样,对列填充项目26也执行相同的过程。
如果如图6C至6J所示重复用于保存故障存储单元有关信息的步骤,则能够获得如图6J所示的行和列填充项目25和26,它们保存有全部故障存储单元的信息。在完成了将故障存储单元信息保存到行和列填充项目25和26中之后,本发明的BISR电路20将利用所保存的信息来确定故障存储单元的修复方法,并通过所确定的修复方法来修复故障存储单元。下面将说明本发明的用于确定故障存储单元的修复方法的步骤。
图7A-7F是表示用于按照如图6A-6J所示的行和列填充项目25和26中保存的信息为图5所示的故障存储单元a-j确定修复方法的步骤的示意图。本发明的BISR电路20在为行/列填充项目25和26中保存的故障存储单元a-j确定修复方法的过程中,要减小在相对的填充项目中保存的故障存储单元a-j的数目。在完成了修复方法的确定之后,要利用在行和列填充项目25和26中保存的信息来修复故障存储单元a-j。在修复完成之后,BISR电路20为嵌入式存储器30生成修复地址。
为了确定修复方法,按照存储器30中配备的行和列冗余的数目,将行和列填充项目25和26划分成多数(major)项目和少数(minor)项目。例如,如果行冗余数目为3(即R=3)而列冗余数目为2(即C=2),则将行填充项目25指定为多数项目,而将列填充项目26指定为少数项目。为了减少处理时间,首先选择少数项目。
参照图7A,选择被定义为少数项目的列填充项目26的第一项目,因为该项目包含最大的用于指示故障存储单元数目的“列内计数”值(用圆圈表示)。在所选的第一列填充项目中保存的列地址所对应的故障存储单元被确定为要利用列冗余进行修复的故障存储单元。在行项目指针1、行项目指针2和行项目指针3字段中分别保存与该列地址(即3)对应的各故障存储单元的行地址。参照图7A的列填充项目26,在行项目指针1、行项目指针2和行项目指针3字段中分别保存了1、3和6。这意味着与该列地址(即3)相对应的各故障存储单元的行地址被分别保存在第一、第三和第六行填充项目中(以箭头表示)。
如上所述,由于要利用列冗余来修复列填充项目26的第一项目,所以将“修复列”字段设置成1,并删除在行项目指针1、行项目指针2和行项目指针3字段中保存的值。此外,分别将第一、第三和第六行填充项目中保存的“行内计数”值减1。在这种情况下,如果被删除的“行内计数”值为0,则删除该项目。
例如,在第一行填充项目中保存的“行内计数”值变成1,在第三和第六行填充项目中保存的“行内计数”值分别变成0。因此,第三和第六行填充项目都要被删除。图7B示出了上述处理的结果。
参照图7B,选择第二列填充项目,因为在未确定修复方法的列填充项目26中,第二项目包含最大的“列内计数”值(用圆圈表示)。在所选的列填充项目中保存的列地址(即5)所对应的故障存储单元被确定为要利用列冗余进行修复的故障存储单元。在行项目指针1、行项目指针2和行项目指针3字段中分别保存与该列地址(即5)对应的各故障存储单元的行地址。参照图7B的列填充项目26,在行项目指针1、行项目指针2和行项目指针3字段中分别保存了1、4和5。这意味着与该列地址(即5)相对应的各故障存储单元的行地址被分别保存在第一、第四和第五行填充项目中(以箭头表示)。
由于要利用列冗余来修复列填充项目26的第二项目,所以将“修复列”字段设置成1,并删除在行项目指针1、行项目指针2和行项目指针3字段中保存的值。此外,分别将第一、第四和第五行填充项日中保存的“行内计数”值减1。
例如,在第一行填充项目中保存的“行内计数”值变成0,在第四和第五行填充项目中保存的“行内计数”值分别变成1。因此,第一行填充项目被删除。图7C示出了上述处理的结果。
参照图7C,少数项目(即列填充项目26)的修复方法确定为两个列冗余。在确定了少数项目的修复方法之后,将按照行冗余的数目来确定利用行冗余的多数项目的修复方法。
首先,选择被定义为多数项目的行填充项目25的第二项目,因为第二项目包含最大的用于指示故障存储单元数目的“行内计数”值(用圆圈表示)。与所选的行填充项目的行地址(即2)相对应的故障存储单元被确定为利用行冗余进行修复。在列项目指针1和列项目指针2字段中分别保存与该行地址对应的各故障存储单元的列地址。参照图7C,在列项目指针1和列项目指针2字段中分别保存了3和4。这意味着与该行地址(即2)相对应的各故障存储单元的列地址被分别保存在第三和第四列填充项目中(以箭头表示)。
由于要利用行冗余来修复行填充项目25的第二项目,所以将“修复行”字段设置成1,并删除在列项目指针1和列项目指针2字段中保存的值。此外,分别将第三和第四列填充项目中保存的“列内计数”值减1。在这种情况下,如果被删除的“列内计数”值为0,就删除该项目。
例如,在第三列填充项目中保存的“列内计数”值变成1,在第四列填充项目中保存的“列内计数”值变成0。因此,第四列填充项目要被删除。图7D示出了上述处理的结果。
如果如图7D至7E所示重复用于确定故障存储单元修复方法的步骤,则能够获得如图7F所示的全部故障存储单元的修复方法。
参照图7F,在行和列填充项目25和26中分别剩下了要修复的故障存储单元信息。所剩余的信息对应于行和列冗余的数目。利用行冗余来修复由行填充项目25指定的故障存储单元,利用列冗余来修复由列填充项目26指定的故障存储单元。此时,如果在行填充项目25或列填充项目26中存在尚未确定修复方法的有效项目,则对应于该项目的故障存储单元被确定为不可修复的故障存储单元。
例如,如果故障存储单元以一个特定的存储单元为基准沿各个方向成对称分布,则这些存储单元是不可修复的。按照本发明,根据存储单元的位置来确定存储单元是可修复的还是不可修复的。然而,这种故障存储单元分布出现的频率极低。因此。本发明的BISR电路及其修复方法能够修复绝大多数的故障存储单元。此外,BISR电路及其修复方法具有很高的修复覆盖率。
图8是表示利用如图7A至7F所示步骤确定的修复方法对如图1所示的嵌入式存储器进行修复的修复结果的示意图。参照图8,可以利用嵌入式存储器30A的行和列冗余来修复包括故障存储单元a-j的存储器30A。如图8中所示的存储器30B示出了存储器的修复结果。
图9是表示如图1所示的BISR电路20操作的流程图。参照图9,在步骤S20,本发明的BISR电路20将故障存储单元信息分别保存在行填充项目25和列填充项目26中。在步骤S40,按照修复效率的高低选择行填充项目25和列填充项目26的项目,来确定各个项目的修复方法,并且,将在相应于所选项目的相对填充项目中保存的故障数目减1。因此,能够在行和列填充项目25和26中剩下要被修复的信息。在这样的情况下,当选择了保存有大量故障的项目时,提高了修复效率。接下来,在步骤S60,BISR电路20通过对故障存储单元进行逻辑修复,来为存储器30生成修复地址。
图10A和图10B是表示如图9所示的用于将故障存储单元信息保存到行填充项目25和列填充项目26中的步骤的详细流程图。参照图10A,在步骤S21,判断是否完成嵌入式存储器30的故障检验。如果完成了故障检验,则流程进至图11A的步骤S41。如果没有完成,则流程进至下一个判断步骤S22。在步骤S22,判断是否在嵌入式存储器30中检测到一个故障存储单元F1。如果检测该故障存储单元,则流程进至步骤S23。在步骤S23,判断是否在行填充项目25中有故障存储单元F1的行地址。如果有,则在步骤S24将“行内计数”值加1,并且流程进至步骤S25。
然而,在步骤S23,如果在行填充项目25中没有故障存储单元F1的行地址,则流程进至步骤S29。在步骤S29,判断是否行填充项目25上溢。如果上溢,则确定故障存储单元F1是不可修复的。如果没有上溢,则在步骤S30将故障存储单元F1的行地址保存在行填充项目25之一中,并且流程进至步骤S25。在步骤S25,将用于保存故障存储单元F1列地址的列填充项目的位置保存在该行填充项目中,并且流程进至图10B中所示的步骤S26。
参照图10B,在步骤S26,判断是否在列填充项目26中有故障存储单元F1的列地址。如果有,则在步骤S27将“列内计数”值加1,并且流程进至步骤S28。如果没有,则在步骤S31,判断是否列填充项目26上溢。如果上溢,则确定故障存储单元F1是不可修复的。如果没有上溢,则在步骤S32将故障存储单元F1的列地址保存在列填充项目26之一中,然后流程进至步骤S28。在步骤S28,将用于保存故障存储单元F1行地址的行填充项目的位置保存在该列填充项目中,然后流程返回图10A中所示的步骤S21。
图11A和图11B是表示如图9所示的用于确定故障存储单元修复方法的步骤的详细流程图。首先参照图11A,在步骤S41,按照行和列冗余的数目,将行填充项目25和列填充项目26划分成多数项目和少数项目。在步骤S42,判断是否少数项目的修复方法的数目确定为存储单元行/列冗余的数目。如果是,则流程进至图11B中示出的步骤S51。如果否,则流程进至步骤S43。在步骤S43,按照“内计数”值的大小次序选择少数项目之一,并确定所选项目的修复方法。接下来,在步骤S44,将所选少数项目指定的多数项目的“内计数”值减1。在步骤S45,判断是否被减小的“内计数”值等于0。如果是,则流程进至步骤S46。在步骤S46,删除具有零“内计数”值的多数项目。如果否,则流程进至步骤S42。
接下来,参照图11B,在步骤S51,判断是否多数项目的修复方法的数目确定为行/列冗余的数目。如果是,则流程进至步骤S56。在步骤S56,判断是否在多数项目或少数项目中有未确定修复方法的有效项目。如果是,则确定该项目是不可修复的。如果否,则确定该项目是可修复的项目。
在步骤S51,如果多数项目的修复方法的数目没确定为行/列冗余的数目,则流程进至步骤S52。在步骤S52,按照“内计数”值的大小次序选择多数项目之一,并确定所选项目的修复方法。接下来,在步骤S53,将所选多数项目指定的少数项目的“内计数”值减1。在步骤S54,判断是否被减小的“内计数”值等于0。如果是,则流程进至步骤S55。在步骤S55,删除具有零“内计数”值的相应少数项目,并且流程返回步骤S51。如果否,则流程返回步骤S51。
图12示出了本发明BISR电路的修复覆盖率的实验结果。参照图12,“A”是表示利用图3A和图3B中所示的行和列填充项目25和26的BISR电路的修复覆盖率的曲线,“B”是表示利用图2所示的常规填充项目的BISR电路的修复覆盖率的曲线。X轴表示在稀疏阵列中注入的故障数目。Y轴表示修复覆盖率。这些曲线示出了在嵌入式存储器30的行和列冗余数日分别为3和2时的实验结果。为了获得图12中示出的结果,对于多种故障数目(例如6至12个)的情况,进行了一千万次的模拟,这样模拟总次数为七千万次。
在故障数目为6至12的情况下进行了模拟。如果故障数目为5,则利用任何方法均足以修复这5个故障,原因是行和列冗余的数目之和为5。因此,在故障数目为6时开始模拟。此外,在嵌入式存储器30的行和列冗余数目分别为3和2的情况下,本发明的BISR电路和任何常规方法的BISR电路均不能修复多于2×R×C个故障(即,2×3×2=12)。因此,没有考虑在超过12个故障的情况下的修复覆盖率。
如图12所示,与本发明的修复覆盖率(用A表示)相比,常规方法的修复覆盖率(用B表示)迅速下降。然而,即使故障数目增加,本发明的修复覆盖率也保持基本恒定的值。
参照图12的曲线“A”,本发明的在故障数目为12时的修复覆盖率大于在故障数目为11时的修复覆盖率。当故障数目为12时,在少数项目(例如列填充项目)中存在的内计数值大于多数冗余数目(例如R=3)的项目的数目大于少数项目的数目(例如C=2),这样,就提高了为利用少数冗余修复故障而选择项目的可能性。此外,在多数项目(例如行填充项目)中存在的内计数值大于少数冗余数目(例如C=2)的项目的数目大于多数项目的数目(例如R=3),这样,就提高了为利用多数冗余修复故障而选择项目的可能性。因此,本发明的在故障数目为12时的修复覆盖率大于在故障数目为11时的修复覆盖率。
如图12所示,常规方法的修复覆盖率(即“B”)随着故障数目的增大成比例地快速下降。然而,即使故障数目增加,本发明的修复覆盖率(即“A”)也保持基本恒定的值。此外,常规方法的修复覆盖率(即“B”)受限于嵌入式存储器的行和列冗余的数目。然而,本发明的修复覆盖率(即“A”)却不受冗余数目的影响。
因此,即使冗余数目和故障数目增加,本发明的BISR电路也能够保持基本恒定的修复覆盖率。因此,BISR电路能够更精确地利用多个冗余修复在嵌入式存储器中出现的故障存储单元。
虽然已经参照本发明的优选实施例具体展示并说明了本发明,但是本领域普通技术人员应明白,在不脱离由所附权利要求限定的本发明实质和范围的情况下,本发明可以有各种形式和细节上的变化。
权利要求
1.一种集成电路半导体器件,包括嵌入式存储器,它包含多个行和列冗余;内建自检测电路,用于检测存储器的故障存储单元;以及内建自修复电路,用于将检测到的故障存储单元信息分成行信息和列信息以保存该信息,根据行信息和列信息来确定故障存储单元的修复方法,并根据所确定的方法来生成存储器的修复地址,其中,所述内建自修复电路包括内建自修复控制器,用于控制内建自修复电路的操作;第一数据保存装置,它包括具有多个数据字段的多个项目,用于保存故障存储单元的行地址以及在相同行地址上出现的故障存储单元的数目;第一逻辑单元,用于在内建自修复控制器的控制下将故障存储单元的所述行地址和所述数目保存到第一数据保存装置中;第二数据保存装置,它包括具有多个数据字段的多个项目,用于保存故障存储单元的列地址以及在相同列地址上出现的故障存储单元的数目;第二逻辑单元,用于在内建自修复控制器的控制下将故障存储单元的所述列地址和所述数目保存到第二数据保存装置中;第三逻辑单元,用于在内建自修复控制器的控制下,保存具有与第一和第二数据保存装置的行和列地址相对应的列和行地址的相对数据保存装置的项目位置,并减小在相对数据保存装置的项目位置上保存的故障存储单元数目;以及地址校验器,用于在内建自修复控制器的控制下根据故障存储单元的行和列地址,生成存储器的修复行和列地址。
2.如权利要求1所述的集成电路半导体器件,其中,内建自修复电路首先为第一和第二数据保存装置中具有较少项目的那一个数据保存装置确定修复方法。
3.如权利要求1所述的集成电路半导体器件,其中,内建自修复电路按照所保存的故障存储单元数目的大小次序,来选择第一或第二数据保存装置所包含的项目,以确定第一或第二数据保存装置的修复方法。
4.如权利要求3所述的集成电路半导体器件,其中,第三逻辑单元在为确定修复方法而要选择一个或多个项目时,将所选项目指定的相对数据保存装置中保存的故障存储单元数目减1,并且,在被减小的故障存储单元数目为零时,删除相对数据保存装置的项目。
5.如权利要求1所述的集成电路半导体器件,其中,在第一数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的行信息的有效性;第二数据字段,用于保存故障存储单元的行地址;第三数据字段,用于保存具有在第二数据字段中保存的同一行地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元行地址相对应的列地址的第二数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
6.如权利要求5所述的集成电路半导体器件,其中,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段包括[log2C]+1个比特,数目等于C的第四数据字段中的每一个第四数据字段包括[log2(C+CR)]个比特。
7.如权利要求5所述的集成电路半导体器件,其中,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段由C+1个比特组成,这包括一个设置成1的最低有效位,每当检测到具有相同行地址的故障存储单元时,就左移该最低有效位,并且,用作位标志以指示项目位置的第四数据字段由C个比特组成。
8.如权利要求1所述的集成电路半导体器件,其中,在第二数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的列信息的有效性;第二数据字段,用于保存故障存储单元的列地址;第三数据字段,用于保存具有在第二数据字段中保存的同一列地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元列地址相对应的行地址的第一数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
9.如权利要求8所述的集成电路半导体器件,其中,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段由[log2R]+1个比特组成,数目等于R的第四数据字段中的每一个第四数据字段由[log2(R+RC)]个比特组成。
10.如权利要求8所述的集成电路半导体器件,其中,在存储器包括R个行冗余和C个列冗余的情况下,第三数据字段由R+1个比特组成,这包括一个设置成1的最低有效位,每当检测到具有相同列地址的故障存储单元时,就左移该最低有效位,并且,用作位标志来指示项目位置的第四数据字段由R个比特组成。
11.一种用于嵌入式存储器的内建自修复电路的自修复方法,所述嵌入式存储器具有多个冗余,所述自修复方法包括下列步骤分别将行和列信息填入到第一和第二数据保存装置中,其中所述行和列信息分别包括故障存储单元的行和列地址、具有相同行和列地址的故障存储单元的数目、以及保存有与各个行和列地址相对应的列和行地址的相对数据保存装置的项目位置;按照在项目中保存的故障存储单元数目的大小次序,来选择在第一或第二数据保存装置中包括的一个项目,以便为数目等于行或列冗余数目的故障存储单元确定修复方法,并且减小由所选项目指定的相对数据保存装置的项目位置中保存的故障存储单元数目;以及按照所确定的修复方法生成存储器的修复地址。
12.如权利要求11所述的自修复方法,其中,在第一数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的行信息的有效性;第二数据字段,用于保存故障存储单元的行地址;第三数据字段,用于保存具有在第二数据字段中保存的同一行地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元行地址相对应的列地址的第二数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
13.如权利要求12所述的自修复方法,其中,用于将行/列信息填入到第一/第二数据保存装置的步骤包括下列步骤判断是否在第一数据保存装置中保存有一个故障存储单元的行地址;如果在第一数据保存装置中保存有所述故障存储单元的行地址,则将第一数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第二数据保存装置的一个项目位置;如果在第一数据保存装置中没有保存所述故障存储单元的行地址,则在第一数据保存装置中保存所述行地址,并且在第四数据字段中保存第二数据保存装置的所述项目位置;判断是否在第二数据保存装置中保存有所述故障存储单元的列地址;如果在第二数据保存装置中保存有所述故障存储单元的列地址,则将第二数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第一数据保存装置的一个项目位置;以及如果在第二数据保存装置中没有保存所述故障存储单元的列地址,则在第二数据保存装置中保存所述列地址,并且在第四数据字段中保存第一数据保存装置的所述项目位置。
14.如权利要求11所述的自修复方法,其中,在第二数据保存装置中包含的每个项目包括第一数据字段,用于指示在该项目中保存的列信息的有效性;第二数据字段,用于保存故障存储单元的列地址;第三数据字段,用于保存具有在第二数据字段中保存的同一列地址的故障存储单元的数目;第四数据字段,用于保存具有与第二数据字段中保存的故障存储单元列地址相对应的行地址的第一数据保存装置的项目位置;以及第五数据字段,用于保存所确定的故障存储单元的修复方法。
15.如权利要求14所述的自修复方法,其中,用于将行/列信息填入到第一/第二数据保存装置的步骤包括下列步骤判断是否在第一数据保存装置中保存有一个故障存储单元的行地址;如果在第一数据保存装置中保存有所述故障存储单元的行地址,则将第一数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第二数据保存装置的一个项目位置;如果在第一数据保存装置中没有保存所述故障存储单元的行地址,则在第一数据保存装置中保存所述行地址,并且在第四数据字段中保存第二数据保存装置的所述项目位置;判断是否在第二数据保存装置中保存有所述故障存储单元的列地址;如果在第二数据保存装置中保存有所述故障存储单元的列地址,则将第二数据保存装置的第三数据字段中保存的故障存储单元数目加1,并且在第四数据字段中保存第一数据保存装置的一个项目位置;以及如果在第二数据保存装置中没有保存所述故障存储单元的列地址,则在第二数据保存装置中保存所述列地址,并且在第四数据字段中保存第一数据保存装置的所述项目位置。
16.如权利要求11所述的自修复方法,其中,用于确定修复方法的步骤包括下列步骤(a)在第一数据保存装置和第二数据保存装置中选择具有较少项目的一个数据保存装置;(b)按照故障存储单元数目的大小次序选择项目,确定所选的数据保存装置的修复方法;(c)减小由所选项目指定的相对数据保存装置的项目位置中保存的故障存储单元数目;(d)将步骤(b)和(c)重复与对应于所选数据保存装置的行/列冗余数目相同的次数;(e)在第一数据保存装置和第二数据保存装置中选择具有较多项目的一个数据保存装置;以及(f)将步骤(b)和(c)重复与对应于所选数据保存装置的行/列冗余数目相同的次数。
17.如权利要求16所述的自修复方法,其中,所确定的修复方法使用行冗余。
18.如权利要求16所述的自修复方法,其中,所确定的修复方法使用列冗余。
19.如权利要求16所述的自修复方法,其中,若被减小的故障存储单元数目等于零,就删除相对数据保存装置的项目。
全文摘要
一种包括内建自修复(BISR)电路的集成电路半导体器件。BISR电路具有用于保存嵌入式存储器故障单元信息的多个行填充项目和多个列填充项目。尺寸对应于存储器行和列冗余数目的行/列填充项目包括:故障单元行/列地址、相同行/列地址上出现的故障单元数目、保存有相对列/行地址的相对项目的位置。通过选择行/列填充项目并删除在其相对填充项目中保存的故障单元数目,BISR电路可以有效地根据剩余的修复信息来执行故障单元的自修复。
文档编号G11C29/00GK1307341SQ0011931
公开日2001年8月8日 申请日期2000年6月29日 优先权日2000年1月28日
发明者朴镇永, 金宪哲 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1