一种基于广义折叠集的自动测试向量生成方法
【技术领域】
本发明涉及集成电路测试方法,特别是自动测试向量生成方法。
【背景技术】
自有集成电路产业以来,如何以最经济、最快捷的方法测试集成电路,而且获得不错的测试品质,一直是非常重要的课题。随着集成电路制造工艺的不断发展,集成电路的规模日益增大、复杂度日益增加,使对其测试也变得越来越困难,测试成本在总成本中所占的比例不断上升。测试已经成为集成电路发展的瓶颈,是设计周期中最昂贵、问题最多的环节之一。
测试成本与许多因素有关,其中日益增加的庞大的测试数据量是与测试成本相关的重要因素之一。测试数据逐年呈指数规律增长,到2014年测试数据量将达到120Gb,这么庞大的数据导致了以下问题:(1)硬盘和自动测试设备(Automatic Test Equipment,ATE)之间带宽有限,使得测试数据从硬盘传输到ATE的时间大于测试数据从ATE传输到被测电路(Circuit Under Test,CUT)的时间,会导致浪费在等待测试数据从硬盘到ATE之间的加载时间加长。(2)ATE的存储容量有限,使得必须裁剪或分批加载测试数据。如果裁剪测试数据就会导致测试质量降低;如果分次加载测试数据,就会增加测试时间。(3)ATE与CUT之间的带宽有限,使得不能降低测试数据从ATE的存储器到CUT的加载时间。虽然更换高档次的ATE可以在一定程度上缓解上述问题,但这势必会增加测试成本(ATE价格在50-120美元/台)。上述问题是由于测试数据量增加带来的,显然,如果在测试质量不变的情况下减少测试数据量,同样也能解决上述问题。因此迫切需要研究测试数据量减少技术。
关于测试数据量减少技术的研究,主要集中在四个方面:
(1)测试集紧缩(Test Set Compaction)。该技术主要通过紧缩部分带有无关位(Don’t Care Bits)的测试立方(Test Tubes),在故障覆盖率不变的情况下减少测试向量的个数来减少测试数据量,其优点是不需要投入附加的硬件开销,其缺点是其非模型故障的故障覆盖率要受到影响。另外,紧缩后的测试集的数据量仍然非常庞大,并不能直接存储和传输。
(2)内建自测试(Built-in Self-Test,BIST)。BIST的基本思想是利用芯片本身所带有的测试模式生成器(Test Pattern Generator,TPG),在片上直接生成测试向量,以降低对ATE的要求,甚至可以摆脱ATE。由于BIST生成的多是伪随机测试向量,测试时通常存在着抗随机故障(Random Resistant Fault,RRF),故BIST存在故障覆盖率不高、测试序列较长的弊端。虽然可以通过加权或采用混合模式的BIST等方法来进一步提高测试效率,但随着电路规模的扩大,RRF的增多,所需要的硬件开销将显著增加。
(3)测试数据压缩(Test Data Compression,TDC)。TDC主要采用的是无损数据压缩的方法,来压缩预先计算的测试数据,然后通过片上解压器进行解压。它将一些测试资源从ATE移入到芯片中,以达到减少测试数据量、缩短测试时间的目的,并能允许使用低速ATE而不降低测试质量。该方法不需要了解CUT的具体内部结构,可以很好的保护知识产权,因而得到了广泛地研究。
但是,由于在CUT与ATE之间数据传输存在着信号难以同步的缺点,不解决好同步问题,将会严重影响测试效率,改进通讯方式,又将会增加通讯协议的复杂性。另外,基于编码的测试数据压缩技术对多扫描链结构并不能很好的相容,需要对每一条扫描链都提供一个独立的解压电路才能使解压效率最高。
正是由于这些原因,对基于编码的测试数据压缩技术的研究仅停留在学术界,到目前为止还没有实用的相关EDA工具出现。
(4)二维测试数据压缩,是一种相容于标准扫描设计的BIST新技术,它有效地组合折叠计数器以及LFSR编码技术利用LFSR编码折叠计数器的种子作为LFSR的种子,显著地压缩确定测试集的模式数和模式宽度。由于无需调整任何扫描链,这一方案完全相容标准扫描设计,而不需要任何额外开销,从整体上来看,此方案是一种具有最佳柔性的BIST方案。
从解决问题的方式来看,测试集紧缩技术可以得到精简的测试集,由于精简后的测试集仍然很庞大,因此可以将其与其它测试数据减少技术结合起来使用。内建自测试将ATE的功能移到芯片上用硬件来产生,因此可以摆脱ATE,在业界得到广泛的应用。对于基于编码的测试数据压缩技术,选择合适的代码字,可以提高编码效率,减少测试数据体积。但对于确定的测试数据,其数据分布是确定的,即其理论极限(熵)是确定的,因此其编码所能达到的压缩极限必然是一定的,即无论怎么选择代码字,其压缩效果都不会超过该理论极限(熵)。
从各技术的压缩效果来看,二维测试压缩采用两维的压缩方法,其有效地组合折叠计数器以及LFSR编码技术,是一种非常优秀的方案,目前其能达到的压缩效果在所有同类技术中最好。但其需要的测试时间比较长,有时很难被接受。另外,该方案中的折叠技术的翻转规律比较单一,其很难将压缩效果发挥到极致,因此需要对该方案进行改进和完善。
对ISCAS89标准电路的Mintest测试集研究发现用3到4个折叠集就可以达到60%左右的故障覆盖率,然而剩下的部分测试向量却很难嵌入到少量的折叠集中。由于通常一条测试向量可能测了几个故障点,因此用前面提到的3到4个折叠集所覆盖的测试向量可能会测到剩下部分测试向量所能测到的全部或部分故障,那么剩下部分测试向量就可以少测一些故障而不影响总的故障覆盖率,即剩下部分测试向量中某些向量的确定位可以减少,相应的无关位可以增加,这样这些剩下的部分测试向量就有可能嵌入到原始的折叠集或较少的几个新的折叠集中。另外,由于敏化路径不同,对于同一个故障点可能会产生几个测试向量,而这几个测试向量之中可能有的更容易嵌入到前面的折叠集中。即调整无关位或更换测试同一故障点的不同测试向量可以让更多的测试向量嵌入到折叠集中。
【发明内容】
本发明所要解决的技术问题在于提供一种基于广义折叠集的自动测试向量生成方法,是一种非侵入式的测试数据压缩方法,无需改变被测试的电路结构,尤其是电路中扫描链的结构。在测试生成时就考虑测试数据压缩,从而使测试生成的数据满足广义折叠规律。
本发明是通过以下技术方案解决上述技术问题的:一种基于广义折叠集的自动测试向量生成方法,包括下述步骤:
a、根据电路结构,生成故障列表;
b、进行伪随机测试,将故障分离成易测故障和难测故障;
c、对难测故障进行合并,分三个原则来执行:①如果两个故障没有相同的结构输入核,这两个向量是可以合并的,基于这两个故障产生一个测试向量;②如果两个故障的结构输入核有交叉,但是它们的影响范围没有交叉,仍然基于这两个故障产生一个测试向量;③如果结构输入核和影响范围都有交叉,不能判断他们是否可以直接合并成一个测试向量,在这种情况下,通过已经量化的影响范围指标来判断两个故障影响范围的交叉程度,优先选取影响范围交叉小的故障进行;
d、对难测故障按可以合并难测故障数进行分组;
e、选择可以合并难测故障数最多的两组故障,产生两个对应的测试向量;
f、由该两个测试向量确定广义折叠集;
g、用该广义折叠集进行故障模拟,生成该广义折叠集可以测试的故障列表;
h、对剩下的用该广义折叠集不能测的故障,重复步骤b-g,一直到所有故障均能被广义折叠集测试。
本发明进一步具体为:
上述步骤c中所述影响范围的判定方法如下:
对每一个信号线取确定值受影响的基本输入(PI)或伪基本输入(PPI)的集合记录下来,在回溯的过程中进行选择。
信号线l的可控性RCi(l)被定义为:使信号线l的值成为i,其中i∈{0,1},所需最小的赋确定值的伪基本输入集合,对于一根信号线,Ci(l)表示最小使l的值为i的有确定值的伪基本输入集合的个数,它们有如下关系:Ci(l)=|RCi(l);
如果l是一个基本输入或者伪基本输入的时候,用l(0)和l(1)分别代表信号线l被赋值为0和1,有如下关系:
RC1(l)={l(1)},RC0q)={l(0)} (1)
C1(l)=C0(l)=1 (2)
对于一个与门来说,假设它的输入是A和B,它们之间的关系如下:
RC1(l)=RC1(A)∪RC1(B) (3)
C1(l)=C1(A)+C1(B)+ΔC (4)
为了区分基本输入和伪基本输入,因为我们的目标是让赋值向尽量少的伪基本输入的方向回溯。如果对于两个都是基本输入的情况,C1(l)取值为10,作为一个惩罚值;
对于同样的与门,它们的可控性之间的关系如下:
使一个与门的值为0,只需要一个输入为0,在多种选择的时候,只需要选择一个最小代价的进行回溯;
对于一个输入为A或B的或门,有如下关系:
RC0(l)=RC0(A)∪RC0(B) (7)
C0(l)=C0(A)+C0(B)+ΔC (8)
对于一个输入是A的非门,它有如下关系:
RC1(B)=RC0(A),C1(B)=|RC1(B)| (11)
RC0(B)=RC1(A),C0(B)=|RC0(B)| (12)
对于一个多扇出的信号线s,如果它的扇出是B1,B2,…,Bk,其中j为整数,1≤j≤k,它们之间有如下关系:
Ci(Bj)=Ci(s) (13)
对于与非门和或非门来说,是与门、非门和或门的复合,再用上面的公式(1)至(13)复合;
对于每个信号线的故障传播的输出的可观测性RO(l)被定义为:将信号线l上的故障传播到输出,所需的最小的需要赋确定值的伪基本输入集合,集合的大小用O(l)来表示;
对于电路的原始输入端PO,有:
RO(PO)=,O(PO)=0 (14)
对于非门,其中A为其输入信号线,B为其输出信号线,则有:
RO(A)=RO(B) (15)
O(A)=|RO(A)| (16)
对于两输入与门,其中A,B为其输入信号线,l为其输出信号线,则有:
RO(A)=RO(l)∪RC1(B) (17)
O(A)=|RO(A)| (18)
对于两输入或门,其中A,B为其输入信号线,l为其输出信号线,则有:
RO(A)=RO(l)∪RC0(B) (19)
O(A)=|RO(A)| (20)
对于扇出s,设B1,B2,…,Bk为其扇出分支,则有如下关系:
O(s)=min(O(B1),O(B2),…,O(Bk)。
所述步骤b中,使用传统的ATPG算法,基于两个故障产生一个测试向量,所述步骤e中,使用传统的ATPG算法,产生两个对应的测试向量。
本发明的优点是:本发明在测试生成时就考虑压缩,在测试生成过程中,通过测试影响范围技术指导测试向量生成,使生成的测试向量满足广义折叠规律,这样对整个测试集的存储就变成对广义折叠种子和广义折叠规律的存储。这样可以根据广义折叠规律来压缩测试数据,即生成的数据更易于压缩。
【附图说明】
图1为本发明一种基于广义折叠集的自动测试向量生成方法的流程图。
【具体实施方式】
下面参照附图结合实施例对本发明作进一步的描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明基于广义折叠集的自动测试向量生成方法的的特征是在测试生成时就考虑压缩,让生成的测试向量满足广义折叠规律,这样可以根据该广义折叠规律来压缩测试数据。具体步骤包括:
a、根据电路结构,生成故障列表;
b、进行伪随机测试,将故障分离成易测故障和难测故障;
c、对难测故障进行合并,大致分三个原则来执行:①如果两个故障没有相同的结构输入核,这两个向量肯定是可以合并的,使用传统的ATPG算法,基于这两个故障产生一个测试向量。②如果两个故障的结构输入核有交叉,但是它们的影响范围没有交叉,仍然可以使用传统的ATPG算法,基于这两个故障产生一个测试向量。③如果结构输入核和影响范围都有交叉,从理论上,我们不能判断他们是否可以直接合并成一个测试向量,所以在这种情况下,我们通过我们已经量化的影响范围指标来判断两个故障影响范围的交叉程度,优先选取那些影响范围交叉小的故障进行。
d、对难测故障按可以合并难测故障数进行分组;
e、选择可以合并难测故障数最多的两组故障,产生两个对应的测试向量;
f、由该两个测试向量确定广义折叠集;
g、用该广义折叠集进行故障模拟,生成该广义折叠集可以测试的故障列表;
h、对剩下的用该广义折叠集不能测的故障,重复步骤b-g,一直到所有故障均能被广义折叠集测试。
本研究采用较为准确的影响范围技术来准确判断每个信号线在回退过程中产生影响的原始输入,从而指导测试向量的生成过程。
上述步骤c中所述影响范围的判定方法如下:
SCOAP是ATPG过程中得到广泛应用的可测性度量方法。但是它在考虑门的时候都是单独的分析,没有在全局上进行测量。本研究提出新的测度从整体上考虑,对每一个信号线取确定值可能影响的基本输入(PI)或伪基本输入(PPI)的集合记录下来,在回溯的过程中进行选择。
信号线l的可控性RCi(l)被定义为:使信号线l的值成为i,其中i∈{0,1},所需最小的赋确定值的PPI集合。对于一根信号线,Ci(l)表示最小使l的值为i的有确定值的PPI集合的个数。它们有如下关系:Ci(l)=|RCi(l)|。
如果l是一个PI或者PPI的时候,用l(0)和l(1)分别代表信号线l被赋值为0和1。有如下关系:
RC1(l)={l(1)},RC0(l)={l(0)} (1)
C1(l)=C0(l)=1 (2)
对于一个与门来说,假设它的输入是A和B。它们之间的关系如下:
RC1(l)=RC1(A)∪RC1(B) (3)
C1(l)=C1(A)+C1(B)+ΔC (4)
为了区分PI和PPI,因为我们的目标是让赋值向尽量少的PPI的方向回溯。如果对于两个都是PI的情况,C1(l)取值为10,作为一个惩罚值。
对于同样的与门,它们的可控性之间的关系如下:
使一个与门的值为0,只需要一个输入为0即可,在多种选择的时候,只需要选择一个最小代价的进行回溯即可。
对于一个输入为A或B的或门,有如下关系:
RC0(l)=RC0(A)∪RC0(B) (7)
C0(l)=C0(A)+C0(B)+ΔC (8)
对于一个输入是A的非门,它有如下关系:
RC1(B)=RC0(A),C1(B)=|RC1(B)| (11)
RC0(B)=RC1(A),C0(B)=|RC0(B)| (12)
对于一个多扇出的信号线s,如果它的扇出是B1,B2,…,Bk,其中j为整数,1≤j≤k,它们之间有如下关系:
Ci(Bj)=Ci(s) (13)
对于与非门和或非门来说,计算情况类似,认为是与门、非门和或门的复合,再用上面的公式(1)至(13)复合就可以了。
对于一个故障,检测它不仅需要激活它,并且需要把故障效应传递到原始输出。所以对于每个信号线的故障传播的输出的可观测性也需要给出一个定义。
与可控制性相似,可观测性RO(l)被定义为:将信号线l上的故障传播到输出,所需的最小的需要赋确定值的PPI集合。集合的大小用O(l)来表示。
对于电路的原始输入端PO,有:
RO(PO)=φ,O(PO)=0 (14)
对于非门,其中A为其输入信号线,B为其输出信号线,则有:
RO(A)=RO(B) (15)
O(A)=|RO(A)| (16)
对于两输入与门,其中A,B为其输入信号线,1为其输出信号线,则有:
RO(A)=RO(l)∪RC1(B) (17)
O(A)=|RO(A)| (18)
对于两输入或门,其中A,B为其输入信号线,l为其输出信号线,则有:
RO(A)=RO(l)∪RC0(B) (19)
O(A)=|RO(A)| (20)
对于扇出s,设B1,B2,…,Bk为其扇出分支,则有如下关系:O(s)=min(O(B1),O(B2),…,O(Bk)。
根据以上结果,我们可以正确估计一个故障需要置确定值可能会受影响的原始输入,这样在ATPG产生测试向量时,可以有选择性的调整确定位的位置,从而使产生的测试向量可以更容易嵌入到广义折叠集中。
本方法主要是考虑到易测故障更易于嵌入到广义折叠集中,因此让难测故障产生测试向量。该技术与通用测试(Universal Testing)有点相似,但该技术的测试向量的生成是基于预先计算的难测故障的,且广义折叠序列的长度明显小于随机测试的序列长度,因此该技术可以取得更好的效果。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。