基于极小碰集求解算法的测试向量集约简

欧阳丹彤1,3 陈晓艳1 叶 靖2,4 邓召勇1 张立明1,3

1(吉林大学计算机科学与技术学院 长春 130012) 2(计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京 100190) 3(符号计算与知识工程教育部重点实验室(吉林大学) 长春 130012) 4(中国科学院计算技术研究所 北京 100190)

摘 要 自动测试向量生成的目的是对特定的故障模型确定1个高质量测试向量集使得芯片(设计)的故障覆盖率达到期望值,在芯片测试中是非常重要的环节.TetraMAX ATPG 2018是众多ATPG工具中功能最强、最易于使用的自动测试向量生成工具,可以在很短的时间内生成具有高故障覆盖率的高质量测试向量集.提出基于极小碰集求解算法的极小完全测试向量集求解算法,通过对测试向量集约简问题重新建模,利用极小碰集求解算法对TetraMAX ATPG 2018产生的测试向量集进行约简.利用这一算法可以有效地缩减测试向量集规模,且保证其故障覆盖率不变,对降低芯片的测试成本有着重要的现实意义.实验针对固定型故障,结果表明:该算法具有良好的约简效果,而且可以保证所得测试向量集中不包含冗余的测试向量.

关键词 电路测试;自动测试向量生成;测试向量集;约简;故障覆盖率;极小碰集;固定型故障

随着信息产品需求的增长,集成电路市场也在其带领下迅速发展,电路的复杂度不断增加,使得电路的测试成本不断提高.为了解决这一问题,人们在设计阶段就开始考虑可测试性问题,以保证自动测试向量生成(automatic test pattern generation, ATPG)过程得以有效进行.ATPG的任务是针对特定的故障模型确定1个高质量测试向量集(test pattern set, TPS),使得设计的故障覆盖率达到期望值[1].在工业界,以Synopsys,Mentor Graphic,Cadence这3家公司为代表的芯片设计公司都提供了商用的ATPG工具.由Synopsys公司开发的TetraMAX ATPG 2018是现阶段工业界功能最强和最容易使用的ATPG工具,针对不同的电路设计,TMAX 2018可以在很短的时间内生成具有高故障覆盖率的TPS.本文中将TetraMAX ATPG 2018简记为TMAX 2018.

TPS的规模对电路的测试成本,如测试时间、测试功耗以及被测电路的寿命等问题有较大影响[2].为了缩短测试时间、降低测试成本,国内外学者在TPS优化、TPS压缩等领域进行了大量研究.TPS优化问题根据不同的优化目标可以大致分为2类:1)以故障覆盖率与故障隔离率为可测试性指标,以测试代价最小为目标对TPS进行优化,在优化的过程中,可测试性指标要求故障覆盖率与故障隔离率均不低于某个值,是兼顾测试成本、检测与诊断效果的优化方式[3-4].2)TPS优化问题的目的是对TPS进一步约简,求出其没有冗余的最小TPS,使其向量个数最少,同时尽可能保证故障覆盖率保持不变[5-9].在约简的过程中,并没有考虑TPS的诊断效果与测试所需的代价.优化之后的TPS将提供给自动测试仪(automatic test equipment, ATE)的测试程序使用.TPS压缩问题是指,在ATE测试的过程中,测试数据被存储在ATE的存储器中,由于ATE有限的存储资源和测试带宽往往难以满足片上系统高速测试的实际需求,通常要对测试数据进行压缩,减少测试过程中需要存储的数据空间,把数据转换成比原格式更紧凑的形式.测试数据压缩作用于待测电路对应的TPS,并对其进行压缩存储[10-11].

在TPS优化问题研究领域,国内外许多学者对保证TPS覆盖率不变的同时减少TPS数目的TPS约简问题进行了研究.俞龙江等人[5]提出基于蚁群算法的TPS约简算法,对最初的蚁群算法模型进行修正,设置参数较少,多次运行可以获得相同解,具有较强的鲁棒性,但是不能保证最终解中没有冗余的测试向量;乔家庆等人[6]提出利用遗传排序算法对TPS中的测试向量顺序进行优化,并采用行列消去法作为适应度评估算法,有效地减少了测试向量的数目,优于传统的遗传算法,但是遗传算法本身收敛速度慢、寻优效率低,容易陷入局部最优的算法仍然不可避免;侯艳丽等人[7]将粒子群算法应用于TPS约简问题,该算法重新定义粒子的位置和速度,利用具有全局优化能力的混沌算法将初始化粒子群,并且粒子针对故障编码,使得初始个体本身就是1个完备TPS,取得了较好的效果,但使用的参数往往依据经验设置,以最优解的适应性没有变化作为结束条件,在实际的应用中有一定的局限性;曹义亲等人[8]提出基于粗糙集的TPS优化算法中,利用粗糙集的知识约简理论构造电路对应知识系统,生成区分函数,对该函数进行求解得到最小TPS,该算法可以有效平衡约简效果与约简所用时间,但是不能保证约简后TPS的覆盖率与原TPS相同;王宏力等人[9]提出的基于粒子群的多目标TPS优化算法(以下简记为PSO-Td),以最大故障覆盖率和最少测试向量数目为优化目标,对TPS进行约简,取得了较好的约简效果.

以上TPS约简算法在尽可能保证约简后的TPS故障覆盖率保持不变的情况下,最大程度减少TPS中的测试向量数目,随机算法得到的TPS约简结果具有一定的随机性.在对以上工作的深入研究基础上,本文提出基于极小碰集求解算法[12-13]的极小完全测试集求解算法(minimal complete test pattern set reduction, MCTPSR).

该算法只需要针对TPS建立测试向量与需要检测的故障列表之间的对应关系,生成对应的向量覆盖集合簇,将TPS的约简问题转化为极小碰集的计算问题,即可使复杂的约简问题通过简单的模型得到解决.该算法的主要优点有5方面:

1) 可以得到所有的极小解,是完备性算法,同时保证所有解中都没有冗余的测试向量;

2) 可以很好地适应TPS约简问题,且其计算效率比较高,约简产生的开销远远小于因冗余测试所产生的开销;

3) 模型简单,仅需要结合测试向量与故障之间的对应关系重新建模即可求解,且求解过程不需要其他参数和多次迭代;

4) 具有选择的多样性,对于1个TPS,往往可以得到多个极小解,可以根据实际的测试开销选择合适的解;

5) TPS的约简不会降低故障覆盖率,同时由MCTPSR算法产生的所有解都可以保证有效性.

1 预备知识

本节介绍TPS约简问题、基于模型诊断和碰集的相关概念,以及MHS-DMECV算法中使用的相关概念与定义,并通过实例进行说明.

1.1 TPS约简

针对特定的电路,对于其中可能出现的所有故障的集合F={f0,f1,…,fn},TMAX 2018可以产生1个TPS T={t0,t1,…,tm},用于检测F中所有故障.其中,ti(0≤im)表示1个测试向量,ti可以检测到F中1个或多个故障,ti对应的故障集表示为Fi(FiF).TPS约简是指通过删除冗余的测试向量,保留尽可能少的ti,构成新的T′⊆T,使T′仍然可以检测到F中所有的故障,即

例1. 设某电路中的故障集F={f0,f1,f2,f3},TPS T={t0,t1,t2},其中t0对应的故障集为F0={f0,f1},t1对应的故障集为F1={f2},t2对应的故障集为F2={f2,f3}.显然在T中,t1是1个冗余的测试向量,因此会被删除,最终保留测试向量t1t3T′={t1,t3},使F1F3=F,TPS T被约简为T′.

1.2 碰 集

定义1[14]. 1个系统可定义为1个三元组(SD,COMPS,OBS),其中:

1) SD为系统描述,是一阶谓词公式集;

2) COMPS是系统组成部件的集合,是1个有限常量集;

3) OBS为观测集,是一阶谓词公式的有限集.

定义2[14]. 冲突集CS是1个部件集{c1,c2,…,cn}⊆COMPS,当且仅当SDOBS∪{AB(c1),AB(c2),…,AB(cn)}是不一致的.其中AB为一元谓词,表示“abnormal”.AB(c)为真,当且仅当c异常,且cCOMPS.

定义3[14]. 碰集.设CS={Si|i=1,2,…,n}是集合簇,称HSCS的1个碰集,如果HS满足:

1) HS⊆∪S

2) 对于任意1个SCS都有HSS≠∅.

集合簇CS的1个碰集是极小碰集(minimal hitting set, MHS)当且仅当它的任意真子集都不是CS的碰集.

例2. 对于集合簇CS={{1,2},{2,3},{2,4}},根据碰集的定义,通过计算得到CS的碰集HS有{2},{1,2},{2,3},{2,4},{1,2,3},{1,2,4},{2,3,4},{1,2,3,4}.其中,集合簇CS的MHS为{2}和{1,3,4}.

1.3 MHS-DMECV算法

本节介绍极小碰集算法MHS-DMECV中的相关定义与概念,并给出实例进行说明.

定义4[12]. 容量.若集合簇CS中包含元素的个数为n,则称n为集合簇CS的容量,记为CAP(CS)=n.

U是集合簇CS中所有元素的并集构成的集合,即U=∪Si={e1e2,…,em},用Car(U)表示集合U的势,即集合U中元素的个数.

定义5[12]. 频数.若eS,则称集合S含有元素e,记Freq(CS,e)表示集合簇CS中含有元素e的元素的个数,称为元素e在集合簇CS中的频数.

定义6[12]. 元素覆盖值.若元素e在集合簇CS的某个元素Si(i=1,2,…,n)中出现,且在当前状态下Si中没有其他元素出现,则称元素e覆盖Si;若对于集合簇CS中的所有元素,元素e能覆盖的元素个数为C,则称C为元素e的元素覆盖值,记为Cover(e).显然0≤Cover(e)≤Freq(CS,e).

例3. 对于集合簇CS={{1,3},{2,4},{1,2,3}},CS的容量Cap(CS)=3,CS中所有元素的并集U={1,2,3,4},集合U的势为Car(U)=4,元素1在CS中的频数Freq(CS,1)=2,因为元素1在CS的元素中出现了2次.对于集合簇CS,若首先选择元素1,由于它能覆盖集合{1,2}和{1,2,3},所以元素1的元素覆盖值Cover(1)=2,若接着选择元素2,此时集合{1,2}和{1,2,3}已被覆盖,所以它能覆盖的集合只有{2,4},因此Cover(2)=1,接下来若选择元素3或4,此时所有集合都被覆盖,所以Cover(3)和Cover(4)的值在该时刻都为0,因此不需要选择元素3或4,只需要元素1和2就可以完成对集合簇CS中所有集合的覆盖.不难看出CS的1个碰集是{1,2},由于其非空真子集{1},{2}都不能覆盖CS中的所有元素,因此{1,2}为CS的1个极小碰集.

2 MHS-DMECV算法

本节通过伪代码描述MHS-DMECV算法,并通过实例介绍其流程.

算法1. MHS-DMECV算法[12].

输入:待处理序列Seq、(与Seq对应的)Head邻接链表数组和元素覆盖值Cover数组、碰集保存容器HittingSet、集合簇CS的元素覆盖标志数组SetFlag、已覆盖数AlreadyCover

输出:集合簇CS对应的所有MHS.

① 初始化:

AlreadyCover=0,HittingSet=∅,

SetFlag=[0×CAP(CS)],

根据CS初始化Seq序列、Head数组、Cover数组;

② Begin

③ While (Seq≠[])

eSeq第1项;

⑤ If e是最后1项and

Cover(e)+AlreadyCover=Cap(CS)

container←{e}∪HittingSet

⑦ EndIf

⑧ If container是极小碰集

SetMHS=SetMHScontainer

⑩ Return;

Else

HittingSet=HittingSet∪{e};

update();

create(Seq);

计算CanCover

If CanCover+AlreadyCover<CAP(CS)

HittingSet=HittingSet-{e};

un_update();

Else

update(Seq′);

MHS-DMECV(params);

HittingSet=HittingSet-{e};

update();

EndIf

EndIf

EndWhile

End

Seq表示对U中元素的Cover值从大到小排列得到的序列;Head是用来存储U中每个元素对应于CS中的集合索引的邻接链表;update(),update(Seq′)表示更新相关变量信息;un_update()表示撤销对相关参数的更新;create(Seq)表示构建新的Seq′和与其对应的Head′,Cover′.

例4. 对于集合簇CS={{1,3},{2,3}},初始时,Cover(1)=1,Cover(2)=1,Cover(3)=2.根据元素的Cover值,得到的Seq序列为[3,1,2],其对应的Head如图1所示,此时还没有元素被选中,因此此时没有集合被覆盖,AlreadyCover=0,SetFlag=[0,0].首先处理Seq序列中的第1项“3”,更新相关参数值,AlreadyCover=2,SetFlag=[1,1],Seq′=[],CanCover=0,AlreadyCover+CanCover=CAP(CS),因此得到CS的1个碰集{3},将其加入HittingSet,根据极小碰集的定义判断出{3}是集合簇CS的1个极小碰集,将其加入SetMHS;接着处理元素1,此时新的待处理序列Seq″=[2],对应的Head如图2所示,此时AlreadyCover=1,因为集合{1,3}已经被Seq序列中的第2项“1”覆盖,而集合{2,3}没有被Seq序列中的第2项“1”覆盖,因此元素覆盖标志数组SetFlag=[1,0],可以覆盖的元素数CanCover=1,由于AlreadyCover+CanCover=CAP(CS),可以得到CS的1个碰集{1,2},通过判断得出它是1个极小碰集,将其加入SetMHS;然后处理Seq序列中的第3项“2”,此时Seq中没有其他元素,AlreadyCover=1,且AlreadyCover+Cover(2)<CAP(CS),返回;算法结束.容易看出,最后得到的SetMHS={{1,2},{3}}是MHS-DMECV算法所求得的CS所有的极小碰集.

算法的完备性已在文献[12]中进行证明.

Fig. 1 The adjacency list Head corresponding to pending sequence Seq
图1 待处理序列Seq′对应的邻接链表Head

Fig. 2 The adjacency list Head corresponding topending sequence Seq
图2 待处理序列Seq″对应的邻接链表Head

3 MCTPSR算法

本节对TPS约简问题进行建模,介绍其与极小碰集求解问题中相关联的概念,并通过伪代码描述基于MHS-DMECV的TPS约简算法MCTPSR.

3.1 问题建模

本节介绍TPS约简问题的相关概念与定义,并通过实例进行说明,同时对TPS约简问题进行建模,将其转化为适合极小碰集求解算法处理的模型.

定义7. 故障序列.电路中可能发生的所有故障组成的拥有确定顺序的集合,记为F={f0,f1,…,fn},F的容量为n.

在文献[6]中描述了完全测试集的概念,下面我们给出标准定义.

定义8. 完全测试集(complete test pattern set, CTPS).设T={t0,t1,…,tm}是电路的1个TPS,F={f0,f1,…,fn}是电路的故障序列,Fiti可以测试到的故障,称T是该电路的1个完全测试集,当且仅当

称CTPS T是极小完全测试集(minimal complete test pattern set, MCTPS).当且仅当T的任意1个真子集都不是CTPS.

定义9. 覆盖值.如果测试向量ti(tiT)可以检测到电路中的故障fj(fjF),则称该测试向量ti覆盖了故障fj,(tifj)的覆盖值为1,记为Cij=1,否则Cij=0.

定义10. 故障覆盖集.若tT可以检测到电路中的故障{fi,fj,…,fk}(0≤i,j,kn),则t对应的故障覆盖集为{fi,fj,…,fk}(0≤i,j,kn),记为Ft={fi,fj,…,fk}(0≤i,j,kn).

定义11. 向量-故障矩阵.设T={t0,t1…,tm}是电路的1个TPS,F={f0,f1,…,fn}是电路中的故障序列,由TF中的元素tifj的覆盖关系Cij组成的矩阵,称为该电路的向量-故障矩阵,记为PFM.

例5. 设TPS T={t0,t1,t2,t3},故障集合F={f0,f1,f2,f3,f4},其中,t0的故障覆盖集为F0={f0,f3,f4},因此可以得到覆盖值C00=1,C01=0,C02=0,C03=1,C04=1,同理可以得到T中其他测试向量与故障fjF的覆盖值,这些覆盖值构成PFM,如表1所示.其中,PFM(0,0)=0表示测试向量t0不能覆盖到故障f0PFM(1,3)=1表示测试向量t1可以覆盖到故障f3.从表1可以看出,T={t0,t1,t2,t3}是1个TPS,但由于其子集{t0,t1,t2}依然可以覆盖F中的全部故障,它显然不是1个MCTPS.实际上,由F0={f0,f3,f4},F2={f1,f2,f3},可以得出F0F2=F,因此{t0,t2}构成1个MCTPS,同理,由于F0F1F3=F,且{t0,t1,t3}的任意1个真子集都不是TPS,因此{t0,t1,t3}也是1个MCTPS.

Table 1 An Example of PFM
表1 PFM实例

PatternFaultsf0f1f2f3f4t010011t101001t201110t300110

定义12. 向量覆盖集.若fjF,则称集合Tj是故障fj的向量覆盖集,如果对于所有的tiTj,都有Cij=1.记为PCS(fj)={ti|Cij=1}.

例6. 如表1所示,在故障f0对应的1列数据中,C0j=1的测试向量为t0,0≤j≤3,因此PCS(f0)={0}.同理可得,故障f1对应的PCS(f1)={1,2},故障f2对应的PCS(f2)={2,3},故障f3对应的PCS(f3)={0,2,3},故障f3对应的PCS(f4)={1,2}.

3.2 算法描述

本节给出基于极小碰集算法MHS-DMECV的MCTPS求解算法MCTPSR的伪代码并对其进行说明.

算法2. MCTPSR算法.

输入:电路网表文件;

输出:电路对应的MCTPS.

mkdir();

source_gen();

③ If需要添加扫描链

run_dc();

⑤ EndIf

T,F=run_tmax();

pats=pat_split(T);

⑧ For i, patpats

F′=run_tmax_single(pats);

v=vector_gen(F′,F,T);

add v to PFM

EndFor

PCSs=get_pcs(PFM);

results=get_hitting_set(PCSs);

For resultresults

get_coverage(result);

EndFor

行①mkdir()用于生成电路目录及子目录,行②中source_gen()用于生成电路所需的脚本文件;如果当前电路是时序逻辑电路文件,则需要添加扫描链以生成综合网表文件与协议文件(其中规定了扫描链与时钟等约束信息)(行③~⑤);行⑥~⑦首先通过运行TMAX 2018生成TPS T以及故障序列F,并且将T中的测试向量分离为单独的测试向量pat;之后,每一个测试向量pat作为外部测试向量读入TMAX 2018可以得到单个测试向量pat对应的故障列表F′并与FT一起作为vector_gen()的输入,从而得到PFM中的1行向量v,同时更新PFM(行⑧~);行表示根据PFM生成向量覆盖集PCS组成的集合PCSs,作为极小碰集求解算法的输入;行调用MHS-DMECV算法,产生对应的极小碰集,即电路的MCTPS results;行get_coverage()实际上是结果检验的过程,对results中的所有结果,形成新的TPS,载入TMAX 2018检测TPS的故障覆盖率是否保持不变.

4 实 验

本节对MCTPSR算法的性能进行实验分析,在实验对比部分,选取TMAX 2018产生的TPS作为比较对象.同时在初始潜在解的覆盖率最高的情况下对PSO-Td算法进行了重现,并与其实验结果进行对比.实验环境为:Ubuntu 14.04,CPU Intel Core i7-4700HQ 2.40 GHz,8 GB RAM,python.使用Design Compiler完成添加扫描链的工作,TMAX 2018生成TPS以及新的MCTPS的覆盖率检验.

4.1 故障模型

利用TMAX 2018产生测试集时,所使用的故障模型是固定型故障(stuck-at fault, SAF),SAF的优点有:

1) 易于生成故障列表,且故障总数随着电路中的逻辑门的个数线性增长,故障列表的规模可以控制;

2) 可以覆盖所有SAF的测试集,对于芯片中的其他类型的故障也有很高的覆盖率;

3) 很多故障模型都可以用不同的SAF的组合表示.

SAF针对芯片中的单个故障,而实际芯片一般包含多个故障,已有实验表明,可以覆盖所有单故障的测试集在检测多故障时同样拥有很高的覆盖率[15].因此,本文实验选择SAF作为ATPG过程的故障模型.

4.2 实验结果

本文使用了国际测试界ATPG研发经常使用的基准电路ISCAS85[16]、全扫描版本的ISCAS89[17]电路和ITC99[18]电路,其电路规模如表2所示.

表3~5分别描述了对ISCAS85,ISCAS89,ITC99中的部分电路对应的TPS的约简效果.表格中的列1(Circuit)是各电路的名字;列2(TMAX)表示电路对应的TMAX 2018生成的TPS中的测试向量数量;列3(MCTPSR)表示通过MCTPSR算法得到的MCTPS中极小TPS中包含的测试向量的数量;列4(Reduce)表示MCTPSR算法约简掉的测试向量的个数;列5(Reduced Ratio)表示约简的部分在TPS中所占的比例.

Table 2 Basic Information of Test Circuits
表2 测试电路基本信息

CircuitFault NumberCircuitFault Numberc1714s820723c43286s832742c499146s838994c880165s11961327c1355146s12381374c1908116s14232081c2670589s14881423c3540144s14941429c5315596s53784283c6288128s92343650c7552613s132075930s2764s158502643s208221s3593234600s298396b01177s344464b02129s349448b03778s382538b042346s386352b051848s400535b06275s420502b071617s444517b08628s510604b09664s526587b10672s526n581b111991s641565b124324s713573b131299

Table 3 Comparison in TPS of ISCAS85
表3 ISCAS85电路TPS对比

CircuitTMAXMCTPSRReduceReduced Ratioc177610.14c4322615110.42c4992010100.50c8802414100.42c1355151050.33c190818990.50c26704632140.30c35403014160.53c53153917220.56c62887520.29c75525832260.41

Table 4 Comparison in TPS of ISCAS89
表4 ISCAS89电路TPS对比

CircuitTMAXMCTPSRReduceReduced Ratios2711740.36s208322750.16s2984230120.29s3443725120.32s349332580.24s3824733140.30s3866452120.19s4004434100.23s4208669170.20s444393180.21s5108372110.13s5265342110.21s526n5237150.29s6415428260.48s7135643130.23s82010379240.23s83211589260.23s838187157300.16s1196221163580.26s1238224180440.20s142312382410.33s1488138108300.22s1494140112280.20s5378285222630.22s9234193135580.30s13207218165530.24s1585011893250.21s359325847110.19

Table 5 Comparison in TPS of ITC99
表5 ITC99电路TPS对比

CircuitTMAXMCTPSRReduceReduced Ratiob01211470.33b02161240.25b034631150.33b049977220.22b0512092280.23b06201730.15b079370230.25b086750170.25b094432120.27b106346170.27b11181143380.21b12218170480.22b136744230.34

由表3~5可以看出,针对规模不同、类型不同(ISCAS85是组合逻辑电路,ISCAS89和ITC99是时序逻辑电路)的电路对应的TPS,MCTPSR算法都起到了很好的约简效果.对所有电路的TPS约简比例都在10%以上,针对电路c3540和c5315甚至产生了高于50%的约简效果.

表6中对本文提出的MCTPSR算法与PSO-Td算法结果进行对比,表6中Circuit列表示电路名称,MCTPSR列表示本文所提算法的约简结果中的最小解,PSO-Td列表示PSO-Td中提出算法的约简结果(由于PSO-Td算法的实验结果具有随机性,实验中取近5次实验结果中的最小值进行比较).PSO-Td算法应用于规模较大的电路时,不能在可接受的范围内求出解,表6中用空白表示.可以看出MCTPSR算法明显优于PSO-Td算法.

Table 6 Compare Reduced Results Produced by MCTPSRwith Results of PSO-Td

表6 MCTPSR与PSO-Td结果约简对比

CircuitMCTPSRPSO-TdCircuitMCTPSRPSO-Tdc1766c4321517c4991012c8801415c13551010c1908911c26703232c35401415c53151722c628855c75523237s2778s2082728s2983033s3442528s3492530s3823338s3865256s4003438s4206971s4443135s5107264s5264246s526n3742s6412844s7134348s8207983s8328989s838157163s1196163173s1238180194s14238299s1488108114s1494112121s5378222242s9234135160s13207165182s1585093100s3593247

表7表示约简的比例在10%以上的电路个数,其中列1(Reduced Ratio)的0.10-0.20,0.20-0.30,0.30-0.40,0.40-0.50,>0.50分别表示约简比10%~20%,20%~30%,30%~40%,40%~50%,50%以上.可以看出,对于纯组合逻辑ISCAS85中的电路来说,约简比例大于40%的电路数占该组11个电路的一半以上,其中约简比例在50%以上的电路个数达到4个;对于时序逻辑ISCAS89中的28个电路,约简比例在20%~30%的比例最大,有16个,其次是约简比例在10%~20%的电路,有7个;对于时序逻辑电路ITC99中的13个电路,约简比例集中在20%~40%.可以看出,MCTPSR算法对不同规模、不同类型的电路都有很好的约简效果.

Table 7 Circuit Number with Different Reduced Ratio Range

表7 不同约简范围的电路数量统计

Reduced RatioNumberISCAS85ISCAS89ITC990.10-0.201710.20-0.3011690.30-0.402430.40-0.5031>0.504

Table 8 Number of MCTPS Generated by MCTPSR
表8 MCTPSR算法的MCTPS个数

CircuitPattern NumberCircuitPattern Number b012b1332b024c172b0354c4323b0412c4992b0548c8804b064c13556b0796c190817b0848c26703b099c3540128b104c53151312b111728c62881b12512c755224s271s7138s2082s8204s29812s8324s3446s8386s3492s1196128s3824s123824s3861s142324s4007s14882s4201s149432s4442s5378960s5102s92343456s5268s132078s526n12s158502s6412s3593236

表8中给出由MCTPSR算法得出的MCTPS的个数.可以看出,对于不同的电路,往往有多个MCTPS,MCTPSR算法可以得到所有MCTPS,这为实际的芯片测试过程提供了很强的可选择性,可以通过计算不同测试集的测试开销,选择成本合适的测试集,可以很大程度地降低芯片的测试成本.

实验结果表明:MCTPSR算法对TMAX 2018产生的TPS有很好的约简效果,而且可以得到不止1个MCTPS,为芯片测试提供了多种选择.在实际应用中,可以极大地降低芯片测试成本,加快芯片的生产过程.

5 总 结

本文通过对MCTPS约简问题进行重新建模,将复杂的约简问题转化为极小碰集的求解问题,结合基于动态极大元素覆盖值求取所有极小碰集的MHS-DMECV算法提出MCTPSR算法,对商用工具TMAX 2018产生的TPS进行约简,缩减了工具生成的TPS规模,计算效率较高,约简产生的开销比较小;其次,该算法的模型简单,只需要测试向量与故障的对应关系矩阵就可以进行求解,且过程中不需要其他参数,不需要进行多次迭代就可以得到解;该算法对于1个TPS,往往可以得到不止1个极小解,可以根据实际的测试开销选择合适的解;同时,TPS的约简不会降低故障覆盖率.MCTPSR可以在保证故障覆盖率的前提下提供更小的TPS,对降低芯片生产过程中的测试开销有着重要的现实意义.

参考文献

[1]Wang Laung-Temg, Wu Chengwen, Wen Xiaoqing. VLSI Test Principles and Architectures: Design for Testability[M]. San Francisco: Morgan Kaufmann, 2006: 58-192

[2]Higami Y, Kaijihara S, Ichihara H, et al. Test cost reduction for logic circuits: Reduction of test data volume and test application time[J]. Systems and Computers, 2005, 36(6): 69-83

[3]Lü Xiaofeng, Zhou Deyun, Tang Yongchuan, et al. An improved test selection optimization model based on fault ambiguity group isolation and chaotic discrete PSO[J]. Complexity, 2018, 2018(4): 1-10

[4]Deng Sen, Jing Bo, Zhou Hongliang. Heuristic particle swarm optimization approach for test point selection with imperfect test[J]. Intelligent Manufacturing, 2017, 28(1): 37-50

[5]Yu Longjiang, Peng Xiyuan, Peng Yu. A test set optimization method based on ant algorithm[J]. Acta Electronica Sinica, 2003, 31(8): 1178-1181 (in Chinese)

(俞龙江, 彭喜源, 彭宇. 基于蚁群算法的测试集优化[J]. 电子学报, 2003, 31(8): 1178-1181)

[6]Qiao Jiaqing, Fu Ping, Yin Hongtao. Test set optimization based on genetic reordering[J]. Acta Electronica Sinica, 2007, 35(12): 2335-2338 (in Chinese)

(乔家庆, 付平, 尹洪涛. 基于遗传排序的测试集优化[J]. 电子学报, 2007, 35(12): 2335-2338)

[7]Hou Yanli, Zhao Chunhui, Hu Jiawei. Fault test set optimization based on particle swarm optimization algorithm[J]. Chinese Journal of Electronic Measurement and Instrument, 2008, 22(4): 21-25 (in Chinese)

(侯艳丽, 赵春晖, 胡佳伟. 基于粒子群算法的故障测试集优化[J]. 电子测量与仪器学报, 2008, 22(4): 21-25)

[8]Cao Yiqin, Wei Jiaolong, Chen Liang. A test set optimization approach based on rough set[J]. Experimental Technology and Management, 2009, 26(6): 45-48 (in Chinese)

(曹义亲, 魏蛟龙, 陈亮. 基于粗糙集的测试集优化[J]. 实验技术与管理, 2009, 26(6): 45-48)

[9]Jiang Wei, Wang Hongli, Zhang Zhongquan, et al. Application of DPSO algorithm in optimizing the test set for fault diagnosis[J]. Process Automation Instrumentation, 2013, 34(4): 14-17 (in Chinese)

(姜伟, 王宏力, 张忠泉, 等. DPSO算法在故障诊断测试集优化中的应用[J]. 自动化仪表, 2013, 34(4): 14-17)

[10]Wu Haifeng, Zhan Wenfa, Cheng Yifei. Test data compression scheme for fast search best rational approximate fraction[J]. Journal of System Simulation, 2018, 30(6): 2384-2389 (in Chinese)

(吴海峰, 詹文法, 程一飞. 快速查找最佳有理渐近分数的测试数据压缩方法[J]. 系统仿真学报, 2018, 30(6): 2384-2389)

[11]Yuan Haiying, Guo Kun, Sun Xun, et al. A power efficient test data compression method for SoC using alternating statistical run-length coding[J]. Electronic Testing, 2016, 32(1): 59-68

[12]Deng Zhaoyong, Ouyang Dantong, Geng Xuena, et al. Algorithm of computing minimal hitting set based on the structural feature of SE-Tree[J]. Journal of Computer Research and Development, 2018, 55(4): 791-801 (in Chinese)

(邓召勇, 欧阳丹彤, 耿雪娜, 等. 基于动态极大元素覆盖值的极小碰集求解算法[J]. 计算机研究与发展, 2018, 55(4): 791-801)

[13]Liu Siguang, Ouyang Dantong, Wang Yiyuan, et al. Algorithm of computing minimal hitting set based on the structural feature of SE-Tree[J]. Journal of Computer Research and Development, 2016, 53(11): 2556-2566 (in Chinese)

(刘思光, 欧阳丹彤, 王艺源, 等. 结合SE-Tree结构特征的极小碰集求解算法[J]. 计算机研究与发展, 2016, 53(11): 2556-2566)

[14]Reiter R. A theory of diagnosis from first principles[J]. Artificial Intelligence, 1987, 32(1): 57-96

[15]Bushnell M, Agrawal V. Essentials of Electronic Testing for Digital, Memory and Mixed-signal VLSI Circuits[M]. Berlin: Springer, 2013

[16]Brglez F, Fujiwara H. A neutral netlist of 10 combinational benchmark circuits and a target translator in Fortran[C] Proc of IEEE Int Symp on Circuits and Systems. Piscataway, NJ: IEEE, 1985: 695-698

[17]Brglez F, Bryan D, Kozminski K. Combinational profiles of sequential benchmark circuits[C] Proc of IEEE Int Symp on Circuits and Systems. Piscataway, NJ: IEEE, 1989: 1929-1934

[18]Corno F, Reorda M, Squillero G. RT-level ITC’99 benchmarks and first ATPG results[J]. IEEE Design and Test of Computers, 2000, 17(3): 44-53

Test Pattern Set Reduction Based on the Method of Computing MinimalHitting Set

Ouyang Dantong1,3, Chen Xiaoyan1, Ye Jing2,4, Deng Zhaoyong1, and Zhang Liming1,3

1(College of Computer Science and Technology, Jilin University, Changchun 130012) 2(State Key Laboratory of Computer Architecture (Institute of Computing Technology, Chinese Academy of Sciences), Beijing 100190) 3(Key Laboratory of Symbol Computation and Knowledge Engineering (Jilin University), Ministry of Education, Changchun 130012) 4(Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190)

Abstract The purpose of automatic test pattern generation (ATPG) is to determine a high-quality set of test patterns for a particular fault model. Automatic test pattern generation is a very important part in chip testing. Through using the test set, generated by the automatic test pattern generation process, we can detect most of the faults in the circuit so that the fault coverage of the chip (design) can reach the desired value. Nowadays, there are many commercial tools available to generate the set of test patterns. Among these tools, TetraMAX ATPG 2018 is the most powerful and easy-to-use automatic test pattern generation tool. It can generate the highest quality test pattern set with the highest fault coverage in the shortest amount of time. In this paper, a method for computing minimal complete test pattern set based on the minimal hitting set method is proposed. By re-modeling the test pattern set reduction problem, the test set generated by TetraMAX ATPG 2018 is reduced with the method of computing minimal hitting set. This method can effectively reduce the scale of the test pattern set and ensure that the fault coverage of the test set does not change. It has important practical significance to reduce the test cost of the chip. In the experimental part of the paper, we use stuck-at fault as the fault model. The experimental results show that the proposed method can effectively reduce the size of the test set. At the same time, the method we proposed can guarantee that the obtained test pattern set does not contain redundant test pattern.

Key words circuit test; automatic test pattern generation (ATPG); test pattern set; reduction; fault coverage; minimal hitting set; stuck-at fault

(ouyangdantong@163.com)

收稿日期20181108;

修回日期:20190508

基金项目国家自然科学基金项目(61672261,61502199,61402196,61872159,61704174)

This work was supported by the National Natural Science Foundation of China (61672261, 61502199, 61402196, 61872159, 61704174).

通信作者张立明(limingzhang@jlu.edu.cn)

中图法分类号 TN407; TP306

Ouyang Dantong, born in 1968. Professor and PhD supervisor of Jilin University. Senior member of CCF. Her main research interests include model-based diagnosis, model checking and automated reasoning.

Chen Xiaoyan, born in 1995. Master candidate at Jilin University. Her main research interest is model-based diagnosis.

Ye Jing, born in 1988. PhD. Associate professor at University of Chinese Academy of Sciences. His main research interests include hardware security, AI security, VLSI test and diagnosis.

Deng Zhaoyong, born in 1994. Master candidate at Jilin University, His main research interest is model-based diagnosis.

Zhang Liming, born in 1980. PhD. Senior engineer of Jilin University. His main research interests include model-based diagnosis, model checking and Boolean satisfiability.