背景技术
每个制造的集成电路(IC)都必须彻底地进行测试以便在将其运往订户那里之前找出制造缺陷。测试IC的常规方法包括:利用ATPG(自动测试图案生成)工具自动生成测试图案,并且利用ATE(自动测试设备)将这些测试图案应用于IC以及芯片内的可测试性设计(DfT)结构。
一种用于数字逻辑电路的普通DfT技术就是‘扫描设计’,其允许在测试模式期间将电路中的触发器配置成串行移位寄存器(‘扫描链’)。参照在扫描测试期间的附图的图6,首先通过一个或多个管脚204将测试激励移入到扫描链200中。在完整的测试激励已被移入之后,电路208在功能性(或‘正常的’)模式下运行一个或多个时钟周期。在正常模式循环周期期间,将触发器中的激励施加到电路中的逻辑单元202上并且在触发器中捕获该响应。在正常模式循环周期之后,再次将所述电路配置成测试模式,并且将在触发器中捕获的响应移出。重复这个过程直到已经施加所有测试激励为止。典型地,可以基本上同时地进行将新的测试激励移入到扫描链中以及移出先前测试激励的测试响应。
考虑一个特定的故障模型,ATPG工具为数字逻辑电路生成测试图案。使用这个故障模型来对电路中可能出现的实际缺陷进行建模,比如像短路、(电阻性)开路,或在导线之间的桥接。ATPG工具生成的每种图案都能用来检测一些已建模故障。将ATPG测试图案集合的故障覆盖率(FC)定义为测试图案所检测出的已建模故障数量与已建模故障的总数量之比。每种测试图案都包含测试激励和对应的测试响应。
ATPG工具所生成的测试图案集合由p种测试图案组成。通常为组合电路或完全扫描时序电路使用组合的ATPG,而通常为局部扫描或非扫描时序电路使用顺序的ATPG。对于由组合的ATPG生成的图案集合而言,集合中的图案的顺序往往是任意的。用于顺序的ATPG而言,通常将集合中的图案编组,并且每组内的图案的顺序是固定的。
概念上讲,每种测试图案都是由测试矢量组成的。典型地,测试矢量是0值和1值的序列,并且包含对应IC输入管脚的激励位和对应IC输出管脚的响应位。如果IC具有n个管脚,那么对应这个IC的测试矢量将包含n位,每个管脚对应1位。典型地,测试图案包含按特定顺序施加到IC上的v个连续测试矢量的序列。
将测试矢量存储在ATE矢量存储器中。所述ATE从矢量存储器中读取特定测试矢量中的激励数据,并将它施加到IC管脚上。由ATE来捕获IC输出管脚上的响应,并且将其与存储在ATE矢量存储器中的无故障响应进行比较。所述ATE能够表明每个测试矢量其是否通过或失败,并且在失败的情况下,所述ATE能够报告输出了有故障的响应的所有IC管脚。
目前的趋势是将越来越多的晶体管集成在单个IC上。根据摩尔定律,这种增长是成指数的,并且约略地讲每个IC的晶体管数量每1.5年翻倍。随着典型的IC尺寸增大,于是测试这种IC所需的测试数据量也必定会增加。此外,深奥的次微米IC处理技术带来了新的缺陷类型,其在早先的处理技术中未出现过。这些新的缺陷通常都对电路的计时特性有影响,而且需要附加的测试图案来检测这些缺陷。因此,测试数据量是与IC尺寸增大成超线性关系增加的。事实上,预计测试数据量逐渐会发展到将不再适合常规ATE矢量存储器的程度。
对这个问题有许多潜在的解决方案:
1.将测试数据量限制到ATE矢量存储器的容量。然而,这意味着未将所有测试图案用于测试IC,因此降低了测试质量,这显然是不希望的。
2.将测试数据量划分成多个测试组,因此每个单独的测试组都适合ATE矢量存储器。然而,为适应每个测试组而‘重新装载′ATE矢量存储器,增加了IC的总体测试时间,这也是不希望的。
3.扩充ATE矢量存储器。然而,矢量存储器是很昂贵的,而在任何情况下ATE体系结构都限制了存储器扩充的上限。
4.用更新的ATE来替换常规的ATE,这提供了更多的矢量存储器。然而,这是非常昂贵的。
因此,上述的四个潜在解决方案中没有一个真正适用于应对不断增加的测试数据量。在可选的解决方案中,可以将测试数据以压缩的格式存储在ATE矢量存储器中。利用驻留在ATE本身上的电路或驻留在芯片上的电路或者驻留在ATE与IC之间的通信路径上的(例如,‘装载板’上的)电路来对所述数据进行解压缩。
近年来,已经提出了大量的测试数据压缩技术。多数的测试数据压缩技术都存在这样的事实,即:大量测试数据事实上都是随机数据。在每种测试图案中,只规定了极少数的激励位(通常,只有百分之几),即‘关注’位,而多数的激励位都是‘非关注’的并且能够随机填充的。原则上,只有规定的激励位必须存储在ATE中,而这提供了压缩必须存储的测试数据量的可能。
在生成测试图案的同时,ATPG工具插入对应非关注激励位的随机值。这个过程称为‘随机填充’。公开的美国专利申请第US2002/0099991 A1号和第US2002/0099992 A1号描述了这样的设备,在其中生成既包含关注位又包含非关注位的测试矢量。用重复的值填充非关注位,并且利用重复的矢量来压缩所得到的测试矢量。在上述现有技术文献中所提出的填充策略(或‘填充’类型)是:
a)利用‘重复填充’来填充非关注位;或
b)利用重复的背景数据来填充非关注位。
利用重复的背景数据相当于填0或填1,其中所有非关注位都是用‘0’或‘1’来填充的。重复填充意味着给序列中的每个非关注位赋予与最近的关注位相同的值。
例如,假定序列0XX1XX,其中符号X表示非关注位。将填0应用于这个序列,结果为000100(即,用0替换所有X)。将填1应用于相同的序列,结果为011111。应用重复填充会得到000111(即,将0之后和1之前的X赋0值,而将1之后的X赋1值)。
测试矢量能够通过使用多数ATE配置支持的矢量重复能力来进行压缩。图1A是说明典型的ATE体系结构的示意性框图。将测试矢量存储在ATE矢量存储器100中,同时所述指令存储器102还包含关于如何将这些矢量应用于IC104的指令。所述指令存储器102例如可以包含用于在许多循环周期内应用特定矢量(其称为‘矢量重复′)的指令。这允许测试数据压缩,因为利用ATE矢量存储器100中的单个矢量和ATE指令存储器102中的指令来重复这个矢量v次,就能够在ATE上存储v个相同测试矢量的序列。
在图1B中说明可选的ATE体系结构,其中矢量存储器100和指令存储器102是分布式的。现在,每个矢量存储器100a、100b及其对应的指令存储器102a、102b都用于将数据施加到IC管脚的子集合上。在这里,这类IC管脚的子集合称为管脚组或端口。图1B仅仅示出两个端口,不过可以根据需要将这扩展为两个以上的端口。每个端口的管脚数目都可能依每个端口而不同。在某些情况下,每个端口都可能对应于单个IC管脚,而在其它情况下,可以使用n管脚的端口,其中n为大于1的整数。
由于每个端口都具备它自己的矢量存储器和指令存储器,因而就可以针对每个端口来重复矢量数据。
我们现在已经设计出了改进的设备。
发明内容
依照本发明,提供了一种压缩数据的方法,所述数据包括至少两个连续的矢量,其中一个矢量包括一位或多位,所述方法的特征在于包括下列步骤:
i)比较两个连续矢量中的对应位来判断它们是否相容;并且如果所述位是相容的,则
ii)合并所述矢量以创建代表其的单个矢量;其中假如两个位不具有明确不相容的值或相对的值,则这两个位相容。
如果确保两个位是不同的,即如果b1≠b2、b1≠X且b2≠X,则两个位b1和b2是不相容的,则认为这两个位是不相容。
在优选实施例中,所述方法包括下列步骤:生成相对于一个或多个矢量的重复值,所述重复值表示应该重复各个已合并矢量以重构已合并矢量所代表的原始矢量序列的次数。
优选地,所述数据包括供测试逻辑产品之用的测试矢量数据,并且所述方法包括下列步骤:生成包括″关注″和″非关注″位的原始测试矢量数据,以及根据上面限定的步骤i)和ii)来压缩所述测试矢量数据。
原始测试矢量数据可以借助于自动测试图案生成(ATPG)工具来生成。
本发明还引申为一种数据集,其包括供测试逻辑产品之用的测试矢量数据,所述测试矢量数据是通过上面限定的方法来压缩的。
此外,依照本发明,还提供了一种测试逻辑产品的方法,所述方法包括下列步骤:生成如上面所限定的已压缩测试矢量数据,通过根据其各自的重复值重复已合并矢量一次或多次来重构测试矢量数据中的关注位,将已重构测试矢量数据施加到逻辑产品的输入上,以及获得所得到的输出数据。将会认识到的是,在原始的测试矢量中,存在有关注位和非关注位。在压缩之后,对于非关注位而言丢失了信息。因此,这里所使用的术语″重构″意味着重构矢量中的关注位,即在没有非关注位的情况下进行重构。照此,无法重构(具有非关注位的)原始测试矢量。
上面限定的方法还可以包括下列步骤:依照如上面限定的压缩数据的方法来压缩输出数据。
再一步依照本发明,提供了一种用于压缩数据的设备,所述数据包括至少两个连续矢量的序列,其中一个矢量包括一位或多位,所述设备的特征在于:
i)用于比较两个或两个以上连续矢量中的对应位以判断它们是否相容的装置;和
ii)用于合并所述两个或两个以上矢量以创建代表所述两个或两个以上矢量的单个矢量的装置,其中所述矢量的所有对应位是相容的;
其中假如两个位不具有明确不相容的值或相对的值,则这两个位的相容。
将会认识到的是,矢量可以包括n位,其中n为正整数(即,1或更大)。换言之,一个矢量可以包括一位或多位。
同样,所述数据可以包括供测试逻辑产品之用的测试矢量数据,并且所述设备包括用于生成或接收原始测试矢量数据的装置,所述原始测试矢量数据包括包含″关注″位和″非关注″位在内的两个或两个以上矢量。
再一步依照本发明,提供了一种用于测试逻辑产品的设备,其包括用于生成原始测试矢量数据的装置、用于压缩如上面限定的原始测试矢量数据的设备、用于重构测试矢量数据中的关注位的装置、用于将已重构数据施加到逻辑产品的输入上的装置、和用于获得产生的输出数据的装置。
所述输出数据也可以借助于如上面所限定的数据压缩设备来压缩。所述设备还可以包括用于在对其进行压缩之前重排测试图案的装置。同样,所述用于生成原始测试矢量数据的装置可以包括:自动测试图案生成(ATPG)工具。
所述设备可以包括用于以供测试逻辑产品之用的数据集的形式来存储已合并数据的装置,并且本发明引申为电子数据存储装置,在其上存储有借助于这类设备所创建的数据集。
因此,总起来说,测试矢量典型地包含大量″非关注″位(通常大于90%),并且能够在不影响这些矢量的故障覆盖率的情况下修改这些非关注位。依照本发明,可以将这些非关注位用于压缩测试矢量,由此缩减测试数据量。采用游程长度编码来压缩测试矢量的序列。如果平均游程长度达最大值,则可以最理想地进行这种压缩,并且本发明通过应用″合并填充″来获得这种优化。
合并填充的基本思想就是:以创建相容测试矢量的序列的方式来填充非关注位。可以将相容测试矢量的每个序列合并成单个测试矢量,优选的是外加重复计数值。与存储原始测试矢量相比,存储已合并测试矢量和重复计数值需要较小的ATE存储器。最后结果是:合并填充的使用允许最佳的游程长度编码,并且与现有技术相比较,实现了测试数据量的较大缩减。
因此,本发明的方法不同于常规的填充方法,因为非关注位是通过不仅考虑施加到单个管脚上的位而且还考虑施加到端口(在采用n管脚的端口的情况下)上所有管脚上的位来被填充的。现有技术的配置仅仅考虑用于图1A中的ATE配置的填充,其中所有IC管脚都连接于单个IC存储器,而本发明还可以用在如图1B所示的ATE配置中。对于这两种ATE配置而言,合并填充允许比其它填充类型更高的重复计数值,借此显著地缩减了需要被存储的测试数据量。
可以通过(如下所述的)重排测试图案来获得附加的自由度,以便进一步减少必须存储在ATE矢量存储器中的测试矢量的数量。
在本发明的另一个实施例中,在小于n个矢量的序列的情况下可以随机地填充非关注位,并且根据本发明的合并填充可以用来填充大于n个相容矢量的序列中的非关注位。
原则上,可以给测试矢量中的非关注位赋以任意值。然而,非关注位的填充影响测试矢量的测试质量。详细来讲,实际的缺陷覆盖范围,即已检测出的物理缺陷的数量,以及诊断分辩率,即识别故障电路中出现的哪些故障的能力,都受非关注位的填充的影响。随机填充非关注位的测试矢量势必要比用更多常规值填充的非关注位的测试矢量具备更高的测试质量,所述常规值比如像填0、填1、重复填充或合并填充。为了提高测试质量,因此最好用随机值来填充不相容矢量中的非关注位。此外,如果相容矢量的序列短(即,比值n小一些),那么也可以用随机值来填充这些矢量中的非关注位。如果相容测试矢量的序列大(即,大于或等于n),那么可以应用合并填充以便在这些矢量中填充非关注位。其结果是:与仅使用合并填充相比,能获得更高的测试质量,这在使用游程长度编码,即矢量重复时,达到略微缩减的测试数据压缩的成本。
具体实施方式
首先将描述‘合并’原理。假定有一个3值逻辑L={0,1,X}。使用这种符号表示法,它暗指序列中的每一位都能够具有值‘0’、‘1’、‘X’(非关注)。将会认识到的是,正如在现有技术中那样,可以将非关注位任意地设置为‘0’或‘1’。
对于下列目的而言,如果序列为00、0X、X0、11、1X、X1或XX,则认为两位b1b2的序列是相容的。如果它为10或01,则认为所述序列是不相容的。这可以扩展到n>2位的序列,而在这样情况下,如果该序列中的所有位都为0或X、所有位都为1或X、或所有位都为X,则认为所述序列是相容的。如果它包含至少一位是0以及至少一位是1,则认为所述序列是不相容的。
依照本发明的这个示例性实施例,可以利用‘merge’操作符将两个相容位合并成单个位:
1.merge(00)=merge(0X)=merge(X0)=0
2.merge(11)=merge(1X)=merge(X1)=1
3.merge(XX)=X
4.merge(01)和merge(10)都是未定义的(因为所述序列是不相容的)
对于n>2位的序列,可将此归纳为:
1.merge({0,X}~)=0,其中{0,X}~表示具有至少一个0的0的序列和X的序列。
2.merge({1,X}~)=1,其中{1,X}~表示具有至少一个1的1的序列和X的序列。
3.merge({X}+)=X,其中X+表示一个或多个X的序列。
4.merge({0,1,X}~)是未定义的,其中{0,1,X}~表示具有至少一个0、至少一个1和零个或多个X的0的序列、1的序列和X的序列。
可以将矢量vi定义为n位的序列(Vi1,...,vin)。如果对于所有j(1≤j≤n)都保持v1j和v2j位是相容的,则认为两个n位矢量v1、v2是相容的。可以将两个相容矢量v1和v2合并成一个新的矢量vmerged,其中vmerged=(merge(v11,v21),.....,merge(v1n,v2n))。
测试图案由v个连续测试矢量的序列组成,其中v典型地等于扫描移位循环周期加上正常模式循环周期的数量。测试图案中的v个矢量具有固定的顺序。
测试图案集合由p种测试图案组成,并且所述集合要么是有序的要么是无序的。如果测试图案集合是有序的,则p种测试图案的顺序就是固定的;测试图案集合继而包括按固定顺序的p·v个测试矢量的序列。如果测试图案集合是无序的,那么它就包括p·v个测试矢量的序列,其中每个子序列中的v个矢量都具有固定的顺序,但是子序列的顺序不是固定的。
测试矢量的序列能够通过合并连续的相容矢量来进行压缩,并且其结果为k个已合并测试矢量的序列。这样做的算法如下所示。数学上能够证明:这种压缩算法是最佳的,也就是说,在合并之后会得到最短的潜在序列。
k=1; /*k对合并矢量的数量进行计数*/
vk merged=v1; /*合并矢量v1 merged为矢量v1*/
For(2<i<p·v){ /*对所有p·v矢量进行迭代*/
Ifcompatible(vi,vk merged) /*如果矢量vI和Vk merge是相容的*/
vk merged=merge(vi,vk merged) /*则合并这些矢量。*/
Else{ /*如果矢量vI和Vk merged是不相容的*/
k++
vk merged=vi; /*则创建新的合并矢量*/
}
}
示例1
v1=0XX1X v1 merged=0XX1X v1 merged=0X010 3 0X010 00010
v2=XX01X v1 merged=0X01X v2 merged=1XXXX 1 0X010 00010
v3=0XXX0 v1 merged=0X010 v3 merged=0X110 2 0X010 00010
v4=1XXXX v2 merged=1XXXX 1XXXX 10101
v5=0XXX0 v3 merged=0XXX0 0X110 01110
v6=XX11X v3 merged=0X110 0X110 01110
(a) (b) (c) (d)(e) (f)
参照上述示例,(a)表示6个测试矢量的序列,而(b)示出当执行上述算法时生成的已合并测试矢量。如(c)所示,所得到的序列包括3个已合并测试矢量。在(a)的测试矢量的原始序列中的规定位能够通过重复每个已合并矢量许多次(如(d)所示的次数)、根据(c)的已合并测试矢量的序列来重构。在(e)中示出了重构后的矢量序列,其中强调了与(a)的区别。能够看出:这两个序列都具有相同的规定位,但是一些非关注位已在(e)中被填充。可以随机地填充已合并测试矢量中的其余非关注位,例如在(f)中说明的那样。
在上述示例中,存储原始测试矢量序列需要存储6个测试矢量。存储已合并测试矢量序列需要存储仅仅3个已合并测试矢量,外加对每个已合并测试矢量的重复计数值。最终结果就是用于存储这个矢量序列的测试数据量的明显缩减。
对于无序的图案集合而言,重排测试图案的可能性提供了附加的自由度。最好是通过以下方式来对图案排序:使图案的最后一个已合并测试矢量与后续图案的第一个已合并测试矢量相容。如果是这种情况,则就能够将这两个已合并测试矢量合并成单个已合并测试矢量。
(下面的)示例2是指两种测试图案(第(a列))。图案1的最后一个矢量(V3 merged)与图案2的第一个矢量(V4 merged)是不相容的,由此将图案2排在图案1后面不是优选的。图案2的最后一个矢量(v6 merged)与图案1的第一个矢量(v1 merged)是相容的,由此最好是将图案2排在图案1前面。由第(b)列来说明测试图案重排之后的已合并矢量与它们的重复计数值的结果序列。
示例2
图案1:v1 merged=0X010 3 v4 merged=0X010 2
v2 merged=1XXXX 2 v5 merged=X1XX1 2
v3 merged=0X110 1 v6 merged=0X010 5
v2 merged=1XXXX 2
图案2:v4 merged=0X010 2 v3 merged=0X110 1
v5 merged=X1XX1 2
v6 merged=0XX10 2
(a) (b)
因此,能够看出:用于图案重排的上述过程是最佳的,即会得到已合并测试矢量的最短可能序列。
测试矢量的合并以及测试图案的重排都能够被集成到ATPG过程中。现在,通过创建能被合并的相容测试矢量的方式来填充非关注激励位。
在图2A和2B中分别示出了两种可能的ATPG流程。在图2A中,在已经生成图案之后立即为每个单独的测试图案进行合并填充。这种方法的优点就在于:在故障模拟期间考虑所充填的激励位,由此因这些激励位而检测出的故障就被标记为已检测故障。在图2B中,在已经生成所有图案之后进行合并填充。由于故障模拟是在无需填充的情况下对图案执行的,因而测试图案的数量可以略大于图2A中该流程的数量。图2B中的流程的优点为:在某种程度上更加灵活。在这两个流程中,利用矢量合并进行的图案重排以及最后的故障模拟都是任选的。
可以为任何大小为n的矢量的序列进行矢量的合并。原则上讲,对于具有t个管脚的电路,所有测试矢量都具有大小t,由此n=t。也可以将每个t位的矢量vi分成许多子矢量vi1,...,vim。每个子矢量vij都具有大小s(vij),其中1<s(vij)<t,并且∑1<j<ms(vij)=t。一个子矢量对应于一组IC管脚的激励位。这样的一组管脚通常被称为″管脚组″或″端口″。
测试数据量的缩减是利用目前的ATE所支持的矢量重复能力来实现的。对于一些ATE,矢量重复仅对所有管脚是可能的:仅存在包含所有IC管脚的单个端口,由此仅存在单个矢量序列。对于其它ATE,矢量重复对每个管脚组都是可能的:存在多个端口,其中每个端口都包含一些IC管脚的子集,并且存在与端口相同数量的子矢量序列。在极端的情况下,每个端口都包含单个管脚,或单个端口包含所有管脚。对于其它配置而言,每个端口的管脚数量在1和IC管脚的数目之间变化。
在(下面的)示例3中,第一个子矢量vi1的序列被施加到端口1上,而第二个子矢量vi2的序列被施加到端口2上。现在,执行两次上述用于合并测试矢量的算法:一次是对第一个子矢量vi1的序列执行,并且独立地对第二个子矢量vi2的序列执行。在第(b)和(c)列中示出了所述结果。可以按第(d)列和第(e)列中所示那样对已合并子矢量的序列进行压缩。对于每个端口,都示出了已合并子矢量,以及重复每个子矢量的次数。端口2上的序列是由单个矢量″10″来表示的,它被重复6次。
示例3
端口1,端口2 端口1 端口2 端口1 端口2
v1=(0XX,1X) v11 merged=0XX v12 merged=1X v11merged=0X0 3 v12 merged=10 6
v2=(XX0,1X) v11 merged=0X0 v12 merged=1X v21 merged=1XX 1
v3=(0XX,X0) v11 merged=0X0 v12 merged=10 v31 merged=0X1 2
v4=(1XX.XX) v21 merged=1XX v12 merged=10
v5=(0XX,X0) v31 merged=0XX v12 merged=10
v6=(XX1,1X) v31 merged=0X v12 merged=10
(a) (b) (c) (d) (e)
上面提出的基本思想将把合并填充用作为ATPG填充策略。数学上能够证明:合并填充的使用获得了最佳的结果,即得到相容矢量的最长可能序列,由此得到最长的重复计数值。分析结果以及模拟结果如下所示:
对于按管脚重复(repeat-per-pin)(即,一个端口包含单个管脚),合并填充是与重复填充相同的。因此,在这种情况下,合并填充和重复填充两者都最优地执行,利用合并填充或重复填充而得到的平均重复计数值被证明要比利用其它填充策略(比如像随机填充、填零或填一)而得到的平均重复计数值更高。对于按端口重复(repeat-per-port)(即,一个端口包含1个以上的管脚),利用合并填充而得到的平均重复计数值被证明是佳想的,并且它要比利用重复填充或其它填充类型而得到的平均重复计数值大。
数学分析表明:对于n位的端口,平均重复计数值是如下形式:
其中p·q是激励位为0的概率,p·(1-q)是激励位为1的概率,而1-p是激励位为X的概率。cn(q)是取决于n和q的某个恒量。
例如,如果n=1,则利用合并填充而得到的平均重复计数值为:
And,ifn=2,then:
例如,对于q=1/3且p=0.003,其为E1=750 and E2=483。这些结果对应于利用随机测试矢量的模拟结果,其分别为744和485。
在图3中示出了利用随机测试矢量进行模拟的结果。该图示出了在改变每个端口的管脚数量的同时对各种填充类型的平均重复计数值。该图示出了对于n=1(按管脚重复),合并填充和重复填充同样地执行良好。对于n>1(按端口重复),合并填充明显要胜过重复填充及其它填充类型。
图4示出了对于各种不同的p值,利用合并填充而得到的平均重复计数值。该图示出了如果p增大则平均重复计数值减小。这正如所料,因为增大p意味着非关注激励位的数量减少,从而通过灵活地填充非关注位而为优化重复计数值留下更小的空间。图3和图4两者示出平均重复计数值也随每个端口的管脚数量的增加而减小。这也正如所料,因为每个端口具有更多的管脚降低了具有相容矢量的概率。
图5示出了在改变每个端口的管脚数量以及概率p的同时利用合并填充和重复填充而得到的平均重复计数值之比。例如,对于p·q=0.01,利用合并填充而得到的平均重复计数值是利用重复填充时的6倍。
示例
下列矢量重复的示例是取自美国专利申请第US2002/0099992号。考虑以下15个9位宽的矢量。(每一列都对应于一个矢量,并且所述矢量是从右到左排列的。符号″-″表示某一位是非关注位。)存储这15个矢量需要15×9=135位。
9-----0---------
8------------1--
7---1-1--------1
6-----1---------
5---------1-----
4-------1----0--
3---0-----------
2------------1-0
1-----0---0-----
下列矢量是当按第US2002/0099992号中提出的对初始非关注位应用重复填充和填0时而获得的。(所述矢量也从右到左排列)。
9000000000000000
8111111111111100
7111111111111111
6111111000000000
5111111111100000
4111111110000000
3000000000000000
2111111111111100
1000000000000000
现在,所需的就是仅仅存储具有重复计数值为2(矢量1-2)、3(矢量3-5)、2(矢量6-7)、2(矢量8-9)和6(矢量10-15)的5个矢量(以粗体表示)。这需要5×9=45位的存储器,加上5个重复计数值,其结果为(135-45)/135=67%的缩减。
下列矢量是当按本发明中提出的应用合并填充而得到的。(再次将所述矢量从右到左排列)。
9000000000000000
8111111111111111
7111111111111111
6111111111111111
5111111111111111
4111111110000000
3000000000000000
2111111111111100
1000000000000000
现在,所需的就是仅仅存储具有重复计数值为2(矢量1-2)、5(矢量3-7)和8(矢量8-15)的3个矢量(以粗体表示)。这需要3×9=27位,加上3个重复计数值,其结果为(135-27)/135=80%的缩减。
因此,本发明提出了用于缩减测试数据量的ATPG填充中的合并填充。典型地,测试矢量包含大量的非关注位(往往大于90%),并且能够在不影响这些矢量的故障覆盖率的情况下修改这些非关注位。合并填充的基本思想就是通过创建相容测试矢量的序列的方式来填充非关注位。可以将相容的矢量合并成单个测试矢量加上重复计数值。我们的压缩相当于测试矢量序列的游程长度编码。能够证明的是:在获得最长可能游程长度的意义上讲,合并填充的使用会产生最佳的游程长度码。
与存储原始测试矢量相比,存储已合并测试矢量和重复计数值需要较小的ATE存储器。合并填充是最佳的,而且胜过所有早先的填充类型。
在技术规范中,合并填充的概念被扩展为按端口重复,其中每个测试矢量都被分成许多子矢量,每端口一个子矢量。对于每个端口,都能够独立地应用合并填充。我们还使用附加的自由度来重排测试图案,以便进一步降低已合并测试矢量的数量。
本发明提供了一种用于应对上述测试数据量增加的有效而实际的解决方案。应用本发明避免了测试质量、测试时间和测试成本方面的不足。
已经在上面仅以举例的方式描述了本发明的实施例,并且对本领域的技术人员将显而易见的是,在不脱离如所附权利要求限定的本发明范围的情况下能够对所述的实施例作出修改和变形。还将理解的是:术语″包括″并不意在排除其它元件或步骤,所述术语″一″或″一个″不意在排除多个的情况,单个处理器或者其它单元也可以实现权利要求中所述的几个装置的功能。