用于在集成电路装置上存储阵列冗余数据的装置和方法

文档序号:6760566阅读:197来源:国知局
专利名称:用于在集成电路装置上存储阵列冗余数据的装置和方法
技术领域
本发明总体上涉及一种改进的数据处理系统及方法。更具体地说,本发明涉及使用单组电熔丝(eFuses)连续地存储来自多个测试阶段的测试数据的装置和方法。
背景技术
传统地,具有元件阵列的复杂集成电路的制造商使用多个测试阶段来测试各种元件的操作。例如,制造商可以以晶片形式首先在常温和常压下测试集成电路的元件。然后制造商可以在应力条件下进行良好元件的附加测试,即,通过初始测试的哪些元件。然后当该集成电路被封装时,制造商可以再次测试该集成电路。在测试制度中也可以包括其它测试,以检查各种条件下集成电路的元件的操作。
例如,大集成电路和处理器典型地包括作为它们的设计的一部分的存储器单元的大阵列。为了保证合理的产量,这些阵列具有内建备用单元,即,冗余单元,该单元可以代替任意较不完美的单元。当这些大阵列被测试时,确定哪些单元需要被映射到存储器单元阵列的备用或冗余单元。该信息被转变成数据,该数据被称为阵列冗余数据。
每个单元替换所需的该数据被称为修复,基于该数据执行的校正被称为修复活动。这些修复活动需要跳过阵列中的无功能单元,以及映射到冗余单元。这些修复活动相继地被连续加载。一旦阵列测试器确定需要的阵列冗余数据或需要的修复活动,则在集成电路装置或处理器的通电时,该数据必须被重新加载。
每个测试可以产生阵列冗余数据,该数据可以用来校正通电时的元件阵列。该阵列冗余数据,一旦证实,典型地被存储在测试时可以被编程的集成电路装置或处理器的区域中,如一组激光熔丝、电熔丝(eFuses)或其它类型的存储器件。在大集成电路装置或处理器上,有大量的阵列冗余数据,该数据可能占用大量eFuses。大量eFuses占据装置的较大面积。
此外,对于每个测试阶段,需要位于集成电路上的eFuses的特定专用的分立组,来存储由测试阶段产生的阵列冗余数据。eFuses的这些分立组的每一个,需要在集成电路上的它自己的分立器件区以及它自己的控制逻辑。而且,如果从一个测试阶段留下任意eFuses,那么它们在后续测试阶段中不能被使用。
因此,当从一个测试阶段至下一个阶段eFuses不能被利用时,用于存储和使用来自集成电路装置的多个测试阶段的阵列冗余数据的已知机制导致用于Fuses组的集成电路装置或处理器的区域过多以及导致浪费的空间。这是不合需要的,其中过多的区域和逻辑影响整个集成电路装置或处理器的功能和成本。而且,如果装置越大,那么操作它所需要的功率越多。
鉴于到上述情况,提供一种用于减小提供eFuses组需要的集成电路装置上的面积量的装置和方法将是有益的。而且,提供一种减小在一系列的多个测试阶段中从一个测试至下一个测试不能使用eFuses而产生的浪费空间量的装置和方法将是有益的。

发明内容
本发明提供了一种使用单组电熔丝(eFuses)、激光熔丝或其它类型的存储器件来连续地存储由多个测试阶段获得的测试数据的装置和方法。在本发明的一个示例性实施例中,该装置和方法用来在单组efuses中存储由多个测试阶段获得的压缩阵列冗余数据。
利用本发明的装置和方法,为了在相同的eFuses组中编码和存储来自每个后续测试的阵列冗余数据,使用基于一对一与扫描链的eFuses相关的锁存器来保持用于每个eFuse的编程信息。这些锁存器提供一机构,用于识别哪些eFuses已被编程,以便在每个测试阶段期间,仅仅组内的部分eFuses需要被编程。通过用未编程的值,例如,逻辑“0”简单地加载这些锁存器,可以容易地识别大量未编程的eFuses。
eFuses中编程的数据可以被检测和读出作为扫描链的一部分。因此,容易确定eFuses组的哪些部分已被先前测试阶段编程和在哪里开始将下一组数据编程在eFuses组中。结果,单组eFuses存储来自多个测试阶段的多组数据。
此外,本发明提供一种数据压缩编码技术以简明地编码全部冗余环。具体地,提供一跳跃命令,用于跳跃到eFuses组的适当部分,用于将数据写到eFuses组和/或从eFuses组读取数据。跳跃命令执行两件事(1)它允许通过跟随规定跳跃多少位(高达255或高达15位)的8或4位的长或短跳跃命令简明地编码该冗余数据;以及(2)当加载实际冗余环时,它允许多遍(pass),因为每遍可以容易地跳跃大批数据,保留先前数据在适当的位置用于哪些元件。
因此,每个测试阶段,在单组eFuses中编码整个冗余环的冗余数据。如果来自三个不同测试的冗余数据已被编码和存储,那么在集成电路装置的通电时,加载该阵列冗余环三遍。通过跳跃命令,后续遍将“跳跃”任意先前写入的数据,以便每遍仅仅增加附加的故障/校正。
在本发明的一个示例性实施例中,提供了一种在集成电路装置上的用于在集成电路装置上存储阵列冗余数据的装置。该装置包括用于存储用于集成电路装置的多个测试阶段的阵列冗余数据的单组存储器件,和用于控制编码阵列冗余数据的解码的控制逻辑,该编码阵列冗余数据存储在单组存储器件中。在单组存储器件中存储的编码阵列冗余数据是由集成电路装置上提供的一个或多个器件阵列的多个测试阶段产生的阵列冗余数据。
单组存储器件可以是电熔丝(eFuses)组。该单组存储器件可以被布置为存储器件的扫描链。每个存储器件可以具有相关的锁存器,该锁存器存储表示存储器件是否已被预先编程或未被编程的值。
编码的阵列冗余数据可以包括识别编码的阵列冗余数据的压缩方法(methodology)的位代码。该位代码可以包括跳跃位代码,用于跳跃存储器件组的一部分,由此访问除第一测试阶段以外的测试阶段的编码阵列冗余数据。
一个或多个器件阵列中的每个器件阵列包括至少一个冗余器件,用于代替阵列中的其它器件。此外,阵列冗余数据可以识别一个或多个器件阵列中的故障器件,故障器件需要用冗余器件代替。控制逻辑可以解码该编码的阵列冗余数据以及可以将解码的阵列冗余数据加载到一个或多个器件阵列中,以便在一个或多个器件阵列上执行一个或多个修复活动。
该装置还可以包括测试装置和连接到一个或多个器件阵列和测试装置的测试接口。该测试装置可以通过测试接口在一个或多个器件阵列时执行多个测试阶段,由此产生多组阵列冗余数据。该测试装置可以通过测试接口输出多组阵列冗余数据到用于分析的外部计算装置。
该装置还可以包括连接到存储器件组和外部计算装置的存储器件接口。外部计算装置中的控制逻辑可以通过存储器件接口编码该阵列冗余数据和将编码的阵列冗余数据写入存储器件组。此外,外部计算装置中的控制逻辑可以读取在与存储器件组中的存储器件相关的锁存器中存储的值,以识别未编程的第一存储器件以及在未编程的第一存储器件处开始将来自测试阶段的编码阵列冗余数据写入存储器件组。
在本发明的另一实施例中,提供了一种在数据处理系统中用于将编码的阵列冗余数据存储在集成电路装置上的单组存储器件中的方法。该方法包括接收来自外部计算装置的编码阵列冗余数据,其中该编码阵列冗余数据用于集成电路装置上的一个或多个器件阵列的多个测试阶段的一个测试阶段。该方法还包括识别单组存储器件的第一未编程存储器件以及在第一未编程的存储器件处开始在单组存储器件中存储该编码阵列冗余数据。该单组存储器件可以存储用于多个测试阶段的每个阶段的编码阵列冗余数据。
在本发明的另一实施例中,提供一种集成电路装置,该集成电路装置包括电熔丝组、多个存储器阵列、通电控制和阵列冗余解压缩单元以及阵列内建自测试单元。每个存储器阵列可以包括多个存储器单元,该存储器单元包括至少一个冗余存储器单元。通电控制和阵列冗余解压缩单元可以被连接到eFuses组和多个存储器阵列中的至少一个存储器阵列。该阵列内建自测试(ABIST)单元可以被连接到多个存储器阵列。
该ABIST单元可以在多个存储器阵列上执行多个测试阶段以产生阵列冗余数据。用于所有测试阶段的阵列冗余数据可以被编码和存储在eFuses组中。在集成电路装置通电时,通电控制和阵列冗余解压缩单元可以解码eFuses组中的编码阵列冗余数据以及将该解码的阵列冗余数据加载到多个存储器阵列中,以执行一个或多个修复活动。
此外,集成电路装置可以包括连接到多个存储器阵列中的至少一个存储器阵列的阵列测试接口和连接到eFuses组的eFuse测试接口。该阵列测试接口可以将阵列冗余数据从多个存储器阵列输出到用于分析的外部计算装置。该eFuse测试接口可以接收来自外部计算装置的编码阵列冗余数据,用于存储在eFuses组中。
本发明的这些及其它特点和优点将在优选实施例的下列详细描述中描述,或鉴于优选实施例的下列详细描述,本发明的这些及其它特点和优点对于所属领域的普通技术人员来说将显而易见。


在所附权利要求书中阐述了属于本发明的特征的新颖性特点。但是,通过参考下列说明性实施例的详细描述,同时结合附图阅读时,将很好理解本发明本身以及使用的优选方式、其更多目的和优点,其中图1是用于具有多个存储器阵列的复杂多处理器的改进阵列冗余环装置的示例性示图;图2是说明根据本发明的一个示例性实施例,可以用来实现压缩/解压缩算法的命令图表的示例性示图;图3是说明根据本发明的一个示例性实施例的eFuses组的示例性示图;图4是概述根据本发明的一个示例性实施例,用于在单组eFuses中存储阵列冗余数据的示例性操作的流程图;以及图5是概述根据本发明的一个示例性实施例,用于从单组eFuses读取阵列冗余数据和将该阵列冗余数据加载到阵列冗余数据环中的示例性操作的流程图。
具体实施例方式
如上所述,本发明涉及一种使用单组存储器件诸如电熔丝(eFuses)或激光熔丝连续地存储由多个测试阶段获得的测试数据的装置和方法。本发明可以用于任意装置,其中,在阵列中的元件出现故障的情况下,为元件阵列提供在阵列中提供的一个或多个冗余元件,用于代替。这种装置例如可以采用集成电路装置、微处理器等的形式。在下列示例性实施例中,假定该装置是具有多个存储器阵列的微处理器。但是,应该理解这些仅仅是示例性实施例以及本发明不局限于这些实施例。
参考图1,提供一个示图,说明根据本发明的一个示例性实施例,用于具有多个存储器阵列的复杂微处理器的改进阵列冗余数据环装置的示例性框图。如图1所示,处理单元150和存储器阵列132,134,136,138,139和140构成微处理器。在测试时,存储器阵列132,134,136,138,139和140被测试,以确定是否任何一个单元是无功能的。例如,通过运行阵列内建自测试(ABIST)引擎160可以确定故障单元。外部制造测试器计算装置将初始化和启动ABIST引擎160,ABIST引擎160将在存储器阵列132-140上进行测试,例如,通过阵列测试接口102,以及将结果存储在ABIST引擎160内。一旦测试完成,制造测试器计算装置将故障信息扫描出微处理器,如通过阵列测试接口102。通过外部制造计算装置执行芯片外的故障信息的分析。最终结果是确定哪些存储器单元需要被映射到备用或冗余单元。该数据称为阵列冗余数据或修复活动数据,以及用来产生修复活动。
然后通过阵列冗余环测试接口106,将未编码的阵列冗余数据或修复活动数据直接扫描到阵列冗余数据环104。一旦该数据被扫描到阵列冗余数据环104,ABIST引擎160重新进行该测试,以确保产生的修复活动校正存储器阵列132-140中的故障存储器单元。一旦确定修复活动校正了故障存储器单元,则使用此后将参考图2描述的压缩方法编码该阵列冗余数据环104的图像,即修复活动数据或阵列冗余数据。
当阵列冗余数据的编码完成时,通过外部制造测试器计算装置,经由eFuse测试接口114将该编码的阵列冗余数据编程到eFuses120中。eFuse测试接口114可以用来在eFuses120中存储该压缩的阵列冗余数据,以及对于无功能的eFuses,还可以用来测试eFuses120,该无功能的eFuses可能包含需要被跳过的缺陷数据。
当在工作模式中接通微处理器100时,通过通电控制和阵列冗余解压缩单元110读入该编码的阵列冗余数据,即,修复活动数据,此后使用图2中概述的方法解码该编码的数据。然后解压缩的阵列冗余数据可以被重新加载到阵列冗余数据环104中,以确定哪些存储器单元需要被映射到冗余单元。在解压缩处理之后,该阵列冗余数据环104包含完全地解码的阵列冗余数据且因此可以将故障存储器单元映射到存储器阵列132-140中的冗余存储器单元。
在图1中,实际上图示了两个阵列冗余环。第一阵列冗余环由存储器阵列132-140构成并共同地称为阵列冗余数据环104。第二阵列冗余环是在eFuses120中收集、压缩以及存储的阵列冗余数据的组合,表示阵列冗余数据环104的测试结果。本发明使用压缩方法将阵列冗余数据存储到eFuses120的第二阵列冗余环中和从该eFuses120读出该数据,以配置第一阵列冗余数据环104的存储器阵列132-140。
在2004年11月4日申请的,名称为″Algorithm to Encode and CompressArray Redundancy Data″的共同转让和共同待审的美国专利申请序列号10/981,158(代理案号AUS920040679US1)中描述了本发明使用的压缩方法,因此将其引入作为参考。如该共同待审的美国专利申请所述,用来执行阵列冗余数据到eFuses中的压缩和编码的命令有四种主要类型控制、移动零、移动实际数据和跳跃数据。有三种不同的控制命令。在图2中提供的示例性图表200中描绘了这些命令类型。
应当注意图2所示的控制命令被外部计算机用来编码阵列冗余数据,即修复活动数据,如先前所述。此外,控制命令也被eFuse解码器(未示出)用来解码该编码的阵列冗余数据,eFuse解码器可以是例如通电控制和阵列冗余解压缩单元110或分立单元的一部分。为了解释各种控制命令,将描述在解码过程中翻译这些控制命令的方法。为了执行阵列冗余数据的编码,阵列冗余数据被分析,以确定满足各种控制代码的条件,以便控制代码用来编码阵列冗余数据的这些识别部分。
如图2的示例性实施例所示,有三个不同的控制命令。由位代码0000定义的控制命令表示eFuse数据的结束。由位1110定义的控制命令表示移动存储在eFuses120或阵列冗余数据环104中的阵列冗余环数据的恢复,从下一个4-位代码开始。由位代码1111定义的控制命令表示eFuses120中存储的阵列冗余数据的读取,但是不移动阵列冗余数据环104中的数据。该最后的二个命令控制有缺陷的eFuse数据的跳跃。存储在有故障或有缺陷的eFuses中的数据是缺陷数据,其可以致使器件不可用。当eFuse解码器遇到1111代码时,eFuse数据继续被读取,但是该数据被忽略,即不被移动到阵列冗余数据环104中。当遇到1110控制命令时,eFuse解码器恢复正常操作。
在共同待审的美国专利申请序列号10/981,158(代理案号AUS920040679US1)中阐述的算法是基于大多数阵列冗余数据或修复活动数据是非必要的假定,即,阵列冗余数据的合理数量将是零。修复活动的性质是“0”之后跟随几个“0”表示没有修复活动。另外,“1”之后跟随地址表示修复活动。
因为在芯片上的岛之间有附加的管道(piping)锁存器(latch)(用于计时),有时在某些修复活动之间还有额外的虚拟锁存器。亦即,当用千兆赫逻辑信号工作时,并不总是可能从点A走到点B而没有分级(staging)信号。管道线(pipeline)锁存器被插入数据通路中,以“桥接(bridge)”长距离。例如,在图1中,可能需要管道线锁存器,以获取从存储器阵列136至存储器阵列138的阵列冗余数据环104数据。在编码/解码过程中,这些额外的虚拟锁存器也应该被跳过。
第二组命令涉及将零移动到阵列冗余环中,移动到eFuses120中的阵列冗余环或阵列冗余数据环104。位代码0001表示将一个零移动到阵列冗余环中,以及位代码0010表示将两个零移动到阵列冗余环中。这些命令用来调整阵列冗余数据的边界,仅仅使用4-位命令。
位代码0011表示将七个零移动到阵列冗余环中,以及位代码0100表示将八个零移动到阵列冗余环中。位代码0101表示将九个零移动到阵列冗余环中。该编码例子假定修复活动由7,8和9位的长度构成。这是最后的三个命令涉及将7,8和9个零移动到冗余环中的理由。如果该阵列冗余数据,即,修复活动数据,由不同的长度构成,那么不同数目的零可以被移动到阵列冗余环中。
第三组命令涉及将实际的数据移动到阵列冗余环中。位代码0110表示将下一个七个实际位移动到阵列冗余环中,以及位代码0111表示将下一个八个实际位移动到阵列冗余环中。位代码1000表示将下一个九个实际位移动到阵列冗余环中,以及位代码1001表示将下一个十四个实际位移动到阵列冗余环中。位代码1010表示将下一个十六个实际位移动到阵列冗余环中,以及位代码1011表示将下一个十八个实际位移动到阵列冗余环中。
如上所述,该示例性实施例中的阵列冗余数据,即,修复活动数据由7,8和9位的长度构成。因此,这些命令涉及将7,8,9,14,16和18位移动到阵列冗余环中。由此,7位的移动将移动修复活动数据的一部分到阵列冗余环中,以及14位的移动将移动修复活动数据的两个部分到阵列冗余环中。
第四组命令涉及当读取数据和加载数据到阵列冗余数据环104中时跳跃来自eFuses120的数据位。位代码1100表示跳跃下一个4-位字段中规定的位数目(这也称为短跳跃)。位代码1101表示跳跃下一个8-位字段中规定的位数目(这也称为长跳跃)。对于这两种命令,阵列冗余环被简单地移动和没有插入新数据。冗余数据环最初一直被初始化为零。因此,跳跃可以有效地将大量零移动到阵列冗余环中。
这四种命令允许压缩的阵列冗余数据,即,修复活动数据,被解压缩和移动到阵列冗余数据环104中。该压缩算法基于已知阵列冗余数据或修复活动的大小,以及简单性,以便在通电时解码是不困难的。该算法也是灵活的,因为在集成电路装置或微处理器上可以修改存储器阵列的数目,而不影响压缩/解压缩算法的设计/实施。
如果用于其它器件的修复活动的大小是不同的,那么某些基本零点和实际压缩命令可能需要被修改。由此,本发明不局限于如上所述的示例性实施例,以及在不脱离本发明的精神和范围的条件下可以进行许多改进。
本发明还使用该压缩/解压缩算法,以允许在单组eFuses中存储由多个测试阶段产生的阵列冗余数据,而不是现有技术装置所需要的多组eFuses。利用本发明,eFuses组中的efuses被布置为扫描链,扫描链中的每个eFuse具有相关的锁存器。锁存器中存储的值表示相关的eFuse被编程与否。基于与该eFuse相关的锁存器的值,可以通过与eFuses组相关的控制逻辑确定在阵列冗余数据的编码过程中该eFuse是否应该被跳跃或写入eFuses组中。先前论述的解压缩方法可以用来从eFuses读取阵列冗余数据,以便确定将在元件的阵列上,例如,在阵列冗余数据环104中的存储器单元的阵列上执行修复活动。
图3是说明根据本发明的一个示例性实施例的eFuses组的示例性示图。如图3所示,eFuses组300包括eFuses320的扫描链310,扫描链310基于元件阵列的测试阶段的结果可以被编程。如上所述,该测试阶段表示有故障或有缺陷的元件需要被代替,或被阵列中的冗余元件代替。该信息被输出作为该测试阶段的结果,作为阵列冗余数据。该阵列冗余数据被写入用于之后在集成电路装置的通电时在加载元件的阵列中使用的部分eFuses组300中。以此方式,可以执行修复活动,用于用冗余阵列元件代替测试过程中识别的有缺陷或有故障的阵列元件。
如上所述,在测试过程中,可能有许多测试阶段,每个测试阶段产生需要被存储在集成电路装置上的阵列冗余数据,用于之后在集成电路装置的通电过程中使用。在已知的集成电路装置中,这种阵列冗余数据必须被存储在用于每个测试阶段的eFuses或激光熔丝的分立组中。但是,利用本发明,提供允许将来自多个测试阶段的阵列冗余数据存储在相同的单组eFuses中的机制。
如图3所示,提供读取扫描链310和写入扫描链315。读取扫描链310用来确定什么被写入eFuses320。写入扫描链315用来更新eFuses320中存储的数据。
使用锁存器350-385允许当将附加的阵列冗余数据写入eFuses组300时,测试计算机的控制逻辑399以确定eFuses组300的哪些部分应该跳过。因此,例如,在第一测试阶段过程中,扫描链315可以加载有编程(写入)eFuses320中的冗余数据。当eFuses320被读取时,锁存器350-360返回存储的编码值,该编码值表示它们的相应eFuses320已经用阵列冗余数据编程。在后续测试阶段中,附加的阵列冗余数据可能需要被写入eFuses组300。在确定在哪里开始写入这种阵列冗余数据中,控制逻辑399可以读取来自的锁存器350-385的值,以确定在eFuses组300中存在扫描链310中的第一未编程的efuse320。另外,具有代码“FE”的标记可以被写入,例如,以表示特定测试阶段的数据的结束。然后控制逻辑390可以在第一未编程的eFuse320处开始写入来自后续测试阶段的阵列冗余数据。对于每个后续测试阶段,该处理可以被重复,以便在单组eFuses300中存储来自多个测试阶段的阵列冗余数据。
在阵列冗余数据写入eFuses组300的过程中,使用先前所述的命令,将阵列冗余数据压缩并存储在eFuses组300的扫描链315中。此后,如上所述的各种位代码被写入eFuses组300,作为编码的阵列冗余数据。因此,例如,如果9位的实际数据被写入eFuses组300,那么位代码1000被写入与该实际数据相关的eFuses组300。
在解压缩和加载时,通过简单地将适当的位代码写入存储器以使零被移动到阵列冗余数据环中,可以消除大批零被写入eFuses组300。因此,例如,代替将9个零写入eFuses组300中,位代码0101可以被写入eFuses组300中,使得9个零被移动到阵列冗余数据环中,而不必须从eFuses组300读取零。这允许实际数据串被连续地存储在eFuses组300中,通过相应的位代码插入零串。因此,从写入eFuses组300的数据除去零串,以及在eFuses组300中存储的整个阵列冗余数据被压缩。
用于eFuse的缺省未编程值是0。当用于特定测试阶段的所有阵列冗余数据被写入eFuse组300时,相应的“e-Fuse数据的结束”位代码被写入eFuses组300,以表示对于该测试阶段,阵列冗余数据的结束。为了清楚地定义数据的结束,例如,可以使用“FE“的标记。该标记简单地使控制逻辑399更容易清楚地识别特定测试阶段的数据的结束。然后可以以类似的方式使用下一个未编程的eFuse320,将用于下一个测试阶段的阵列冗余数据写到eFuses组300。在将下一个测试阶段的阵列冗余数据写到eFuses组300时,已用来自前一测试阶段的阵列冗余数据编程的哪些eFuses必须被跳过。结果,图2中所示的跳跃命令可以被写入,用于对于该测试阶段从eFuses组300读出阵列冗余数据时,识别将要跳跃的eFuses组300的一部分。因此,例如,使用位代码1101的长跳跃命令可以用来跳跃eFuses组300的一部分,以便从后续测试阶段解压缩和加载阵列冗余数据。然后基于为eFuses组300的所述部分存储的位代码的特定组,可以以如上所述的类似方式开始阵列冗余数据的解压缩和加载。
跳跃命令执行两件事。首先,它允许通过跟随8或4位的长或短跳跃命令简明地编码该阵列冗余数据,该长或短跳跃命令规定跳跃多少位(上至255或上至15位)。其次,当加载实际阵列冗余数据环时,它允许多遍,因为每遍可以容易地跳跃大批数据,保留先前数据在合适位置用于哪些元件。因此,对于每个测试阶段,可以在eFuses组中编码用于整个阵列冗余数据环的整个阵列冗余数据。然后可以在多遍中加载该阵列冗余数据,一遍对于用于产生阵列冗余数据的每个测试阶段。后续遍将“跳跃”任意先前写入的数据,以便每遍仅仅加载附加的故障/缺陷元件。
因此,利用本发明,与eFuses组中的扫描链的eFuses相关的锁存器允许识别哪些eFuses已被当前或先前测试阶段预先编程。本发明的编码/解码机制的跳跃命令允许跳跃部分eFuses组300,以便访问由不同的测试阶段产生的阵列冗余数据。这两种机制的结合允许在单组eFuses 300中存储由集成电路装置或微处理器中的元件阵列的多个测试阶段产生的阵列冗余数据。结果,通过本发明的机制节省芯片上的面积,导致装置的成本减少以及降低操作装置需要的功率。
作为本发明的示例性实施例的操作实例,假定有两遍测试处理,以及在第一遍测试中,未编码的阵列冗余数据串是00000000RA000000000RARA00000000000000000000000000。零是阵列冗余数据环的缺省值,因此,跳跃命令可以用来压缩/编码该数据。编码上述阵列冗余数据将产生1100 1000 0111 RA 1100 1001 1010 RARA 110100011010。
在第二遍测试中,可以探测存储器阵列中的新故障。例如,在第二遍中,以下未编码的阵列冗余数据串可以是00000000RARA000000000RA000000000000000,具有用粗体示出的新故障数据。编码该阵列冗余数据将产生1100 1000 0111 RA 1100 1001 1010RARA 0101 RA 1100 1111。应当注意移动9个零代码也可以跳跃9个代码,由于阵列冗余数据环的缺省值是零。
利用上面的两遍,写入eFuses组的数据如下1100 1000 0111 RA 11001001 1010 RARA 1101 00011010 1100 1000 0111 RA 1100 1001 1010 RARA0101 RA 1100 1111,粗体代码表示第二遍测试的编码阵列冗余数据。
利用该编码的阵列冗余数据,通电控制和阵列冗余解压缩单元110可以两次经过eFuses组120中存储的阵列冗余环,以解码和重新加载用于在存储器阵列132-140上执行修复活动的阵列冗余数据。在第一遍过程中,上面非加粗的数据被读取、解码和加载到阵列冗余数据环104中。在第二遍过程中,上面加粗的数据被读取、解码和加载到阵列冗余数据环104中。如果第三次测试已经被执行,那么编码的阵列冗余数据可以连接在上面编码的数据上,以使得冗余数据环被经过三次。
对于阵列冗余数据环的每次编码,整个阵列冗余环被编码,以便保持用于解码的数据的对准。上面的实例是简单遍,后续遍测试被连接到来自先前测试阶段的先前编码的数据结果。本发明的编码方案也允许提供执行更复杂的更新的能力。可以仅仅增加新的故障数据或新的修复活动和/或代替先前的故障数据或修复活动。跳跃、移动零和移动实际数据命令可以允许,以产生这种编码算法。该编码方案是灵活的和允许多种方法产生多遍修复。
图4和5是说明根据本发明的一个示例性实施例,用于将阵列冗余数据写到单组eFuses和/从单组eFuses读取阵列冗余数据的操作的流程图。应当理解所示的流程图的每个方框和流程图中的方框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给处理器或其它可编程数据处理装置,以产生一机器,以便在处理器或其它可编程数据处理装置上执行的指令产生用于实现流程图方框或多个方框中规定的功能的手段。这些计算机程序指令也可以被存储在计算机可读存储器或存储介质中,其可以指示处理器或其它可编程数据处理装置以特定的方式执行功能,以便在计算机-可读存储器或存储介质中存储的指令产生包括指令手段的制造品,指令手段实现流程图方框或多个方框中规定的功能。
由此,所示的流程图的方框支持用于执行规定功能的手段的组合、用于执行规定功能的步骤的组合和用于执行规定的功能的程序指令手段。也应该理解图示的流程图的每个方框和图示的流程图中的方框组合可以通过基于计算机系统的专用硬件或通过专用硬件和计算机指令的结合实现,基于计算机系统的专用硬件执行规定的功能或步骤。
图4是概述根据本发明的一个示例性实施例,用于在单组eFuses中存储阵列冗余数据的示例性操作的流程图。图4中概述的操作可以通过与测试计算机相关的控制逻辑来执行,用于将编码的阵列冗余数据存储在eFuses组中,如上所述。
如图4所示,通过测试元件阵列开始操作,以确定哪些元件是有缺陷的(步骤410)。该步骤可以用公知技术中的公知方式通过阵列测试接口102来完成。然后产生阵列冗余数据环(步骤420)。阵列冗余数据环包含例如确定哪些有缺陷的元件被映射到集成电路装置上的冗余元件的数据。
此后,阵列冗余数据被压缩/编码(步骤430)。该压缩/编码可以使用如上所述的命令来执行,参考图2。在压缩/编码之后,用此后论述的步骤440-480中概述的方式,将阵列冗余数据写到eFuses组。
读取与eFuses组的下一个eFuse相关的锁存器中存储的值(步骤440)。确定该值是否表示eFuse已被预先编程(步骤450)。倘若如此,该操作返回步骤440并读取用于下一个eFuse的锁存器的值。该处理继续,直到一个eFuse被识别,没有被当前或先前测试阶段编程。
如果与下一个eFuse相关的锁存器中存储的值表示该eFuse没有被预先编程,那么该阵列冗余数据被连续地写入eFuses组中,以识别的第一未编程eFuse位置为起点(步骤460)。
然后当用于该测试阶段的所有阵列冗余数据被写入eFuses组时,该操作终止。对于每个后续的测试阶段,该处理可以被重复,步骤440和450保证来自后续测试阶段的阵列冗余数据被写到相同eFuses组的不同部分。
作为已知技术,将数据写到eFuses涉及烧断eFuses表示“1”和在它们的缺省状态中保留eFuses表示“0”值。但是,可以采取相反的方法,在例如其中eFuse的烧断实际地能够电接触的反eFuses的情况下,由此表示“0”,缺省状态表示“1”。尽管依据单组eFuses的使用描述了本发明,但是本发明的机制还可以应用于包括激光熔丝、标准存储器件等的其它存储器件,该器件可以被设置在集成电路装置或微处理装置自身上。
图5是概述根据本发明的一个示例性实施例,用于从单组eFuses读取阵列冗余数据和将阵列冗余数据加载到阵列冗余数据环中的示例性操作的流程图。每当集成电路装置或微处理装置被通电时可以执行图5中概述的操作。图5中概述的操作可以通过图1中的通电控制和阵列冗余数据解压缩逻辑110来执行。
如图5所示,该操作从集成电路装置或微处理装置的通电开始(步骤510)。来自整个eFuses组的阵列冗余数据被加载到通电控制和阵列冗余解压缩逻辑装置中(步骤520)。然后通电控制和阵列冗余解压缩逻辑装置解压缩(解码)该数据并重新加载该数据到阵列冗余数据环中(步骤530)。
该解压缩(解码)处理可以包括基于在eFuses组中存储的位代码执行操作,eFuses组中存储的位代码用于eFuses组中的阵列冗余数据。因此,上面参考图2论述的各种命令可以被执行,以便适当地访问来自各个测试阶段的阵列冗余数据并将该数据加载到阵列冗余数据环中。例如,可以基于被执行以产生eFuses组中存储的阵列冗余数据的测试阶段的数目以多遍执行该解压缩(解码)处理。因此,如果在eFuses组中存储的阵列冗余数据用于三个测试阶段,那么可以执行三遍将阵列冗余数据加载到阵列冗余数据环中。每遍可以包括跳跃命令的使用,以跳过由先前测试阶段产生的阵列冗余数据。结果,对于每附加遍,仅仅增加附加的故障/有缺陷的元件数据。
然后使用阵列冗余数据环来映射有缺陷的元件到集成电路装置或微处理器装置上的冗余元件(步骤540)。然后该操作终止。
因此,本发明提供一种用于允许单组eFuses、激光熔丝或其它存储器件存储来自集成电路装置或微处理器装置的多个测试阶段的阵列冗余数据的机制。由于本发明的操作仅仅需要单组eFuses,用于阵列冗余数据的存储的芯片上的面积和浪费的空间被最小化。而且,通过减小这种芯片上的存储器件需要的面积,器件的成本和功耗被最小化。
如上所述的电路是集成电路芯片的设计的一部分。芯片设计用图形的计算机程序语言产生,并存储在计算机存储介质(如盘、带、物理硬驱动器或如在存储存取网络中的虚拟硬驱动器)中。如果设计者没有制造芯片或用来制造芯片的光刻掩模,那么设计者通过物理装置(例如通过提供存储该设计的存储介质的拷贝)或电子地(例如,通过互联网)直接或间接地将所得的设计传送到这种实体。然后存储的设计被转变为用于光刻掩模的制造的合适格式(例如,GDSII),典型地包括将要在晶片上形成的正被讨论的芯片设计的多个拷贝。光刻掩模用来限定将被刻蚀或另外处理的晶片(和/或其上的层)的区域。
所得的集成电路芯片可以被制造商以原始晶片形式(亦即,如具有多个未封装芯片的单个晶片)作为裸管芯或以封装形式分配。在后一种情况中,芯片被安装在单芯片封装(如塑料载体,具有固定到母板或其它高层载体的引线)中或安装在多芯片封装(如具有两个表面互连或掩埋的互连的陶瓷载体)中。在任何情况下,然后该芯片与其它芯片、分立电路元件和/或其它信号处理器件集成作为(a)中间产品如母板或(b)最终产品的一部分。最终产品可以是包括集成电路芯片的任意产品,范围从玩具及其它低端应用到具有显示器、键盘或其它输入装置的高级计算机产品和中央处理器。
应该理解本发明的编码/解码机制可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元件的实施例的形式。此外,本发明的编码/解码机制可以采取可由提供程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式,与计算机或任意指令执行系统结合使用。为了该说明书的描述,计算机可用或计算机可读的介质可以是包含、存储、通信、传播或传输该程序的任意装置,与指令执行系统、装置或设备结合使用。
该介质可以是电、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动的计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前例子包括光盘-只读存储器(CD-ROM),光盘-读/写(CD-R/W)和DVD。
在优选实施例中,编码机制可以包括适合于存储和/或执行程序代码的数据处理系统,其包括通过系统总线直接或间接地连接到存储器元件的至少一个处理器。该存储器元件可以包括程序代码的实际执行过程中采用的本地存储器、大容量存储和高速缓存存储器,其提供至少某些程序代码的临时性存储,以便减小在执行过程中必须从大容量存储取回(retrieved)的时间代码的数目。
本发明的描述为了说明和描述目的,并不旨在详尽或局限公开的发明形式。许多改进和变化对所属领域的普通技术人员来说是显而易见的。选择和描述实施例以最好地解释本发明的原理和实际应用,并使所属领域的其它普通技术人员能够理解,具有各种改进的各个实施例适于所希望的特定使用。
权利要求
1.一种集成电路装置上的装置,用于在所述集成电路装置上存储阵列冗余数据,包括单组存储器件,用于存储用于所述集成电路装置的多个测试阶段的阵列冗余数据;以及控制逻辑,用于控制在所述单组存储器件中存储的编码阵列冗余数据的解码,其中在所述单组存储器件中存储的所述编码阵列冗余数据是由在所述集成电路装置上提供的一个或多个器件阵列的多个测试阶段产生的阵列冗余数据。
2.根据权利要求1的装置,其中所述单组存储器件是电熔丝组。
3.根据权利要求1的装置,其中所述编码阵列冗余数据包括识别所述编码阵列冗余数据的压缩方法的位代码。
4.根据权利要求1的装置,其中所述单组存储器件被布置为存储器件的扫描链,以及其中每个存储器件具有相关的锁存器,所述锁存器存储表示所述存储器件是否已被预先编程或未编程的值。
5.根据权利要求3的装置,其中所述位代码包括跳跃位代码,用于跳跃所述存储器件组的一部分,以由此访问除第一测试阶段以外的测试阶段的编码阵列冗余数据。
6.根据权利要求1的装置,其中在所述一个或多个器件阵列中的每个器件阵列包括至少一个冗余器件,用于代替所述阵列中的另一器件,以及其中,所述阵列冗余数据识别所述一个或多个器件阵列中的故障器件,所述故障器件需要用冗余器件来代替。
7.根据权利要求6的装置,其中所述控制逻辑解码所述编码阵列冗余数据并将所述解码的阵列冗余数据加载到所述一个或多个器件阵列中,以便在所述一个或多个器件阵列上执行一个或多个修复活动。
8.根据权利要求6的装置,还包括测试装置;以及测试接口,连接到所述一个或多个器件阵列和所述测试装置,其中所述测试装置通过所述测试接口在所述一个或多个器件阵列上执行多个测试阶段,由此产生多组阵列冗余数据,并通过所述测试接口将所述多组阵列冗余数据输出到用于分析的外部计算装置。
9.根据权利要求8的装置,还包括存储器件接口,连接到所述存储器件组和所述外部计算装置,其中在所述外部计算装置中的控制逻辑编码所述阵列冗余数据并通过所述存储器件接口将所述编码的阵列冗余数据写到所述存储器件组。
10.根据权利要求9的装置,其中在所述外部计算装置中的控制逻辑读取在与所述存储器件组中的存储器件相关的锁存器中存储的值,以识别未编程的第一存储器件并在所述未编程的第一存储器件处开始将来自测试阶段的所述编码阵列冗余数据写到所述存储器件组。
11.一种在数据处理系统中用于在集成电路装置上的单组存储器件中存储编码阵列冗余数据的方法,包括以下步骤接收来自外部计算装置的编码阵列冗余数据,其中所述编码阵列冗余数据用于在所述集成电路装置上的一个或多个器件阵列的多个测试阶段中的一个测试阶段;识别所述单组存储器件中的第一未编程的存储器件;以及在所述第一未编程的存储器件处开始在所述单组存储器件中存储所述编码阵列冗余数据,其中所述单组存储器件存储用于所述多个测试阶段的每个阶段的编码阵列冗余数据。
12.根据权利要求11的方法,其中所述单组存储器件是电熔丝组。
13.根据权利要求11的方法,其中所述编码阵列冗余数据包括识别所述编码阵列冗余数据的压缩方法的位代码。
14.根据权利要求11的方法,其中所述单组存储器件被布置为存储器件的扫描链,以及其中每个存储器件具有相关的锁存器,所述锁存器存储表示所述存储器件是否已被预先编程或未编程的值,以及其中识别第一未编程的存储器件包括扫描所述扫描链,以检测在所述单组存储器件的所述锁存器中存储的所述值。
15.根据权利要求13的方法,其中所述位代码包括跳跃位代码,用于跳跃所述存储器件组的一部分,以由此访问除第一测试阶段以外的测试阶段的编码阵列冗余数据。
16.根据权利要求11的方法,其中在所述一个或多个器件阵列中的每个器件阵列包括至少一个冗余器件,用于代替所述阵列中的另一器件,以及其中,所述阵列冗余数据识别所述一个或多个器件阵列中的故障器件,所述故障器件需要用冗余器件来代替。
17.根据权利要求16的方法,还包括以下步骤解码所述单组存储器件中的所述编码阵列冗余数据;以及将所述解码的阵列冗余数据加载到所述一个或多个器件阵列中,以便在所述一个或多个器件阵列上执行一个或多个修复活动。
18.根据权利要求17的方法,其中所述解码和加载步骤执行多遍,以及其中所述遍数等于用于产生在所述单组存储器件中存储的所述编码阵列冗余数据的测试阶段的数目。
19.一种集成电路装置,包括电熔丝组;多个存储器阵列,其中每个存储器阵列包括多个存储器单元,以及其中所述多个存储器单元包括至少一个冗余存储器单元;通电控制和阵列冗余解压缩单元,连接到所述电熔丝组和所述多个存储器阵列中的至少一个存储器阵列;以及阵列内建自测试单元,连接到所述多个存储器阵列,其中所述阵列内建自测试单元在所述多个存储器阵列上执行多个测试阶段,以产生阵列冗余数据,所述用于所有测试阶段的阵列冗余数据被编码并存储在所述电熔丝组中,以及在所述集成电路装置通电时,所述通电控制和阵列冗余解压缩单元解码所述电熔丝组中的编码阵列冗余数据并将所述解码的阵列冗余数据加载到所述多个存储器阵列中,以执行一个或多个修复活动。
20.根据权利要求19的集成电路装置,还包括阵列测试接口,连接到所述多个存储器阵列中的至少一个存储器阵列;以及电熔丝测试接口,连接到所述电熔丝组,其中所述阵列测试接口将阵列冗余数据从所述多个存储器阵列输出到用于分析的外部计算装置,以及其中所述电熔丝测试接口接收来自所述外部计算装置的编码阵列冗余数据,用于存储在所述电熔丝组中。
全文摘要
提供了一种使用单组电熔丝(eFuses)连续地存储由多个测试阶段获得的测试数据的装置和方法。为了在相同eFuses组中编码和存储来自每个后续测试的阵列冗余数据,使用扫描链上的锁存器,保持用于每个eFuse的编程信息。所述锁存器允许在每个测试阶段过程中仅仅编程部分eFuses。而且,在eFuses中编程的数据可以被检测和读出作为扫描链的一部分。因此,可以容易地确定eFuses组的哪些部分已被先前测试阶段编程和在哪里开始将下一组数据编程到eFuses组中。结果,单组eFuses存储来自多个测试阶段的多组数据。
文档编号G11C29/44GK1881476SQ20061008854
公开日2006年12月20日 申请日期2006年6月2日 优先权日2005年6月6日
发明者M·W·赖利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1