构造具有低测试功耗的两级扫描测试结构的方法

文档序号:6436141阅读:355来源:国知局
专利名称:构造具有低测试功耗的两级扫描测试结构的方法
技术领域
本发明属于集成电路可测试性设计技术领域背景技术首先,介绍背景知识和相关定义组合门门的输出信号线的值与时钟信号无关,这样的门称为组合门,组合门的类型包括非门、与门、或门、与非门、或非门、异或门、异或非门等。
时序门门的输出信号线的值与时钟信号有关,这样的门称为时序门,也称为时序单元。时序门的输入有逻辑输入和时钟输入,输出为逻辑输出。通常在时钟输入信号的上升沿或者下降沿到来时,读入逻辑输入信号的值,从而产生相应逻辑输出信号的值。
组合后继在电路结构中,组合门的输出信号线是该组合门的输入信号线的组合后继。组合后继的关系可以迭代。例如图1中,d是a的组合后继,e是d的组合后继,而e也是a的组合后继。
直接组合后继相邻的组合后继称为直接组合后继。例如图1中,d是a的直接组合后继,但e不是a的直接组合后继。
共同组合后继例如图1中,e是a的组合后继,e也是c的组合后继,则a和c有共同组合后继e。
测试在芯片封装以后对芯片质量进行检测的方法。由于芯片封装以后对芯片的内部电路无法直接访问,因此对芯片的测试采用的方法为在芯片的输入端置入测试向量,并在芯片输出端收集测试响应。将实际所得测试响应与无故障电路所应得测试响应进行比较,从而判断芯片电路有无故障。
测试生成问题对于电路中可能存在的故障,寻找可以检测到该故障的测试向量,这一问题称为测试生成问题。
扫描测试扫描测试是为降低时序电路测试生成问题的复杂性,对电路进行可测试性设计的一种方法。该方法将时序电路划分为时序单元和组合逻辑两个部分,如图2所示,然后加入多路选择器将时序单元改造为扫描时序单元,多个扫描时序单元首尾连接成为扫描链,由一个扫描输入scan-in来驱动,最后连接到一个扫描输出scan-out,如图3所示。当信号test为0时,多路选择器选通组合逻辑,为正常工作状态;当信号test为1时,多路选择器选通扫描链,电路进入扫描测试状态。
扫描时序单元利用扫描测试的方法改造所得的时序单元,比如图3中的多路选择器与时序单元共同组成的结构。
扫描链(scan chain)由多个扫描时序单元首尾连接而成的扫描测试结构(图4)。扫描链的长度为扫描链中所包含扫描时序单元的个数。
测试功耗对电路进行测试时产生的测试功耗主要产生于电路内部信号线发生逻辑值的翻转(逻辑1->逻辑0,逻辑0->逻辑1)。在扫描测试结构中,测试功耗主要产生于测试向量的置入和测试响应的移出过程中,电路的时序单元以及其后继的组合单元发生逻辑值的翻转。
以往降低扫描测试功耗的办法主要有(1)对测试向量进行排序;(2)对时序单元进行排序;(3)在时序单元的后面加入控制逻辑,使得测试向量置入过程中,逻辑值的翻转只发生在时序单元,不会传播到后继的组合逻辑中;(4)对测试向量进行编解码;(5)引入附加逻辑结构,使得测试向量置入时逻辑翻转只发生在部分时序单元中。
方法(1)(2)(5)只是降低了测试功耗,测试时间没有降低,方法(3)(5)引入的附加逻辑带来一定面积开销,并且使电路性能有所下降,方法(4)则主要针对的是数据量的问题,在数据压缩的同时可以使得功耗有所降低。

发明内容
本发明采用两级扫描测试结构,将扫描时序单元划分到不同的时钟域。第一级的扫描时序单元构成传统的扫描链结构,其时钟输入信号为clk1。第二级的扫描时序单元分为多个小组,其时钟输入信号为clk2,每个扫描时序单元小组的逻辑输入连接到第一级中的一个扫描时序单元的逻辑输出。
设第二级中的扫描时序单元小组Gi包含扫描时序单元g1’g2’…gn’,Gi中各扫描时序单元的逻辑输入连接到第一级中的扫描时序单元fi’的逻辑输出,则扫描时序单元g1’g2’…gn’fi’所对应的时序单元g1g2…gnfi应满足以下条件其中任意两个时序单元在电路结构中均没有相同的组合后继。
在置入测试向量时,首先通过扫描输入端将相应的测试向量置入到扫描链中,设扫描链长度为l,则将一个测试向量置入到第一级的扫描链中需要l个clk1时钟周期,由于第一级与第二级的扫描时序单元由不同的时钟输入信号控制,此过程第二级的扫描时序单元不发生翻转。接下来,将第一级中各扫描时序单元的逻辑输出值置入到相应第二级的扫描时序单元小组中,需要一个clk2时钟周期,此过程中第一级的扫描时序单元不发生翻转。
根据电路结构的信息,对时序单元进行分组以后,可以将大部分时序单元划分到第二级。在测试向量置入扫描链的过程中,只有第一级扫描链中的扫描时序单元发生翻转,翻转次数得到很大程度减小;而测试向量置入第二级中的扫描时序单元只需要一个时钟周期,翻转次数也得到很大程度减小,从而减小了扫描测试功耗。
本发明的特征在于它依次含有以下步骤第1步初始化,向计算机输入电路网单文件,采用N*N表格conv[N][N]来记录时序单元在电路结构上的相互关系,其中N为时序单元的总数;若对于i≠j,i∈[1,N],j∈[1,N]的时序单元i与时序单元j,i与j在电路结构上有共同组合后继,则conv[i][j]=conv[j][i]=1,否则conv[i][j]=conv[j][i]=0;第1.1步建立conv[N][N]表格;第1.1.1步对于电路中所有时序单元,设时序单元i的输出信号线在电路中对应的标识为iOut,将时序单元i的组合后继依次存入数组successor_of_iOut[]中,方法如下首先将时序单元i的直接组合后继i1i2…iN存入数组中,然后依次将i1i2…in的直接组合后继也存入数组中,直到存入数组的单元已经是一个时序单元或者是原始输出为止;第1.1.2步对于任意两个时序单元i和j,若successor_of_iOut[]和successor_of_jOut[]中有相同单元,则conv[i][j]=conv[j][i]=1;否则conv[i][j]=conv[j][i]=0;第2步根据N*N表格conv[N][N]对时序单元进行分组;第2.1步设时序单元的集合为F,各组分别为G1G2…Gn;第2.2步若F非空,则执行第2.3步,否则执行第2.4步;第2.3步建立新组Gm,m∈[1,n],任取F中的一个时序单元g放入Gm,遍历F中剩余的时序单元,若某时序单元f满足g∈Gm,conv[f][g]=0,则将f放入Gm,更新F和Gm,继续遍历F中剩余的时序单元;遍历结束后转第2.2步;第2.4步分组结束第3步为使分组均匀,对第2步所得分组结果进行调整;第3.1步从G1G2…Gn中选出最大组Gmax和最小组Gmin,Gmax是所含时序单元数量最多的组,Gmin是所含时序单元数量最少的组;第3.2步从Gmax中选出满足条件g∈Gmin,conv[f][g]=0的时序单元f,将f放入Gmin,更新Gmax和Gmin;第3.3步反复执行第3.1步和第3.2步,直到Gmax与Gmin的大小相差为1或者Gmax中已经找不到满足条件g∈Gmin,conv[f][g]=0的时序单元f为止;第4步根据调整以后的分组结果G1G2…Gn来构造低测试功耗的两级扫描测试结构第4.1步在各时序单元之前分别加入多路选择器MUX,改造为扫描时序单元;第4.2步从G1G2…Gn中各选出一个扫描时序单元g1’g2’…gn’,构成一条扫描链,扫描时序单元g1’g2’…gn’的时钟输入连接到时钟信号clk1;第4.3步G1G2…Gn中剩余的扫描时序单元的时钟输入连接到时钟信号clk2;第4.4步将G1中剩余的扫描时序单元的逻辑输入连接到扫描时序单元g1’的逻辑输出,将G2中剩余的扫描时序单元的逻辑输入连接到扫描时序单元g2’的逻辑输出,以此类推,将Gn中剩余的扫描时序单元的逻辑输入连接到扫描时序单元gn’的逻辑输出;第4.5步将时钟信号clk分别连接到两输入与门AND1和AND2的输入端,控制信号C1和C2分别连接到AND1和AND2的另一个输入端,clk1和clk2分别为AND1和AND2的输出;当C1=1且C2=0时,clk1有效且clk2无效;当C1=0且C2=1时,clk1无效且clk2有效。(如图5)使用证明实验平台为SUN BLADE2000工作站,实验中采用的测试码产生器为ATALANTA,故障模拟器为HOPE。表1中给出了将本发明应用到一部分ISCAS89以及ITC99电路的实验结果,表中Full Scan为单链完全扫描的实验结果,Two Stage Scan为本发明的实验结果,FC(Fault Coverage)表示故障覆盖率,#HF(Hard Fault)表示难测故障数,#VEC(Vector)表示测试向量数,TP(Test Power)和PTP(Peak Test Power)分别表示本发明的测试平均功耗和测试峰值功耗与单链完全扫描测试结构的测试平均功耗和测试峰值功耗相比所占的百分比。
由表1中可以看出,采用本发明的两级扫描测试结构,可以在保证原有故障覆盖率与测试向量数基本不变且难测故障数没有增长的同时,使得测试平均功耗和测试峰值功耗都得到很大程度的减小。
表1将本发明应用到ISCAS89以及ITC99电路的实验结果



图1组合后继示意图。
图2时序电路示意图。
图3对时序电路进行扫描测试示意图。
图4扫描链示意图。
图5时钟信号clk1和clk2示意6电路示意图。
图7表格conv[12][12]。
图8两级扫描测试结构示意图。
图9构造具有低测试功耗的两级扫描测试结构的程序流程框图。
具体实施例方式
下面分别通过具体例子来说明上述方法的具体实施方式

例1如图6所示电路,其中的时序单元总数为3,时序单元1的输出信号线在电路中的标识为1Out=5,时序单元2的输出信号线在电路中的标识为2Out=6,时序单元3的输出信号线在电路中的标识为3Out=7,采用数组successor_of_5[]、successor_of_6[]和successor_of_7[]来分别存储时序单元1、2和3的组合后继。
建立表格conv[3][3]的过程如下1)对于电路中的时序单元1,1Out=5,5只有一个直接组合后继15,将15存入数组successor_of_5[]。
信号线15有三个分支,第一条分支为时序单元2的输入,因此不必再往下搜索;第二条分支的直接组合后继为17,将17存入数组;第三条分支的直接组合后继为16,将16存入数组。
17为时序单元1的输入,因此不必再往下搜索;16已经到达原始输出,因此不必再往下搜索。结束。
这样,数组successor_of_5[]中存储的内容为15,17,16;同理,数组successor_of_6[]中存储的内容为10,13,12,14,15,17,16;数组successor_of_7[]中存储的内容为9,11,12,14,15,17,16。
2)时序单元1和2有共同组合后继15,因此conv[1][2]=conv[2][1]=1;时序单元1和3有共同组合后继15,因此conv[1][3]=conv[3][1]=1;时序单元2和3有共同组合后继12,因此conv[2][3]=conv[3][2]=1。
例2某电路中时序单元的总数为12,集合为F,图7中给出了表示这些时序单元在电路结构上的相互关系的表格conv[12][12]。
根据表格conv[12][12]对时序单元进行分组的情况如下建立新组G1,将时序单元1放入G1,G1={1};遍历F中剩下的时序单元,发现时序单元2满足条件conv[2][1]=0,也即满足条件g∈G1,conv[2][g]=0,因此将时序单元2放入G1,G1={1,2};遍历F中剩下的时序单元,发现时序单元4满足条件conv[4][1]=0且conv[4][2]=0,也即满足条件g∈G1,conv[4][g]=0,因此将时序单元4放入G1,G1={1,2,4};遍历F中剩下的时序单元,发现时序单元7满足条件conv[7][1]=0且conv[7][2]=0且conv[7][4]=0,也即满足条件g∈G1,conv[7][g]=0,因此将时序单元7放入G1,G1={1,2,4,7};遍历F中剩下的时序单元,发现时序单元10满足条件conv[10][1]=0且conv[10][2]=0且conv[10][4]=0且conv[10][7]=0,也即满足条件g∈G1,conv[10][g]=0,因此将时序单元10放入G1,G1={1,2,4,7,10}。以此类推,得到G2={3,11,12},G3={5,6,8,9}。分组结束。
根据表格conv[12][12]对以上分组结果进行调整的情况如下选出最大组Gmax=G1,最小组Gmin=G2,从Gmax中选出时序单元2满足条件conv[2][3]=0且conv[2][11]=0且conv[2][12]=0,也即满足条件g∈Gmin,conv[2][g]=0,因此将时序单元2放入G2,于是G1={1,4,7,10},G2={2,3,11,12},G3={5,6,8,9}。此时已满足分组均匀的条件,调整结束。
根据调整后的分组结果构造具有低测试功耗的两级扫描结构的情况如下在各时序单元之前分别加入多路选择器MUX,改造为扫描时序单元;根据调整后的分组结果,从各组G1、G2、G3中分别选出一个扫描时序单元1’、2’、5’构成一条扫描链,扫描时序单元1’、2’、5’的时钟输入连接到时钟信号clk1;各组剩余时序单元的时钟输入连接到时钟信号clk2G1中剩余时序单元的逻辑输入连接到扫描时序单元1’的逻辑输出,G2中剩余时序单元的逻辑输入连接到扫描时序单元2’的逻辑输出,G3中剩余时序单元的逻辑输入连接到扫描时序单元5’的逻辑输出;时钟信号clk1和clk2由同一个时钟信号clk加上两个控制信号通过两个与门来产生,如图5所示;结束。
权利要求
1.构造具有低测试功耗的两级扫描测试结构的方法,其特征在于它依次含有以下步骤第1步初始化,向计算机输入电路网单文件,采用N*N表格conv[N][N]来记录时序单元在电路结构上的相互关系,其中N为时序单元的总数;若对于i≠j,i∈[1, N],j∈[1,N]的时序单元i与时序单元j,i与j在电路结构上有共同组合后继,则conv[i][j]=conv[j][i]=1,否则conv[i][j]=conv[j][i]=0;第1.1步建立conv[N][N]表格;第1.1.1步对于电路中所有时序单元,设时序单元i的输出信号线在电路中对应的标识为iOut,将时序单元i的组合后继依次存入数组successor_of_iOut[]中,方法如下首先将时序单元i的直接组合后继i1i2…in存入数组中,然后依次将i1i2…in的直接组合后继也存入数组中,直到存入数组的单元已经是一个时序单元或者是原始输出为止;第1.1.2步对于任意两个时序单元i和j,若successor_of_iOut[]和successor_of_jOut[]中有相同单元,则conv[i][j]=conv[j][i]=1;否则conv[i][j]=conv[j][i]=0;第2步根据N*N表格conv[N][N]对时序单元进行分组;第2.1步设时序单元的集合为F,各组分别为G1G2…Gn;第2.2步若F非空,则执行第2.3步,否则执行第2.4步;第2.3步建立新组Gm,m∈[1,n],任取F中的一个时序单元g放入Gm,遍历F中剩余的时序单元,若某时序单元f满足g∈Gm,conv[f][g]=0,则将f放入Gm,更新F和Gm,继续遍历F中剩余的时序单元;遍历结束后转第2.2步;第2.4步分组结束第3步为使分组均匀,对第2步所得分组结果进行调整;第3.1步从G1G2…Gn中选出最大组Gmax和最小组Gmin,Gmax是所含时序单元数量最多的组,Gmin是所含时序单元数量最少的组;第3.2步从Gmax中选出满足条件g∈Gmin,conv[f][g]=0的时序单元f,将f放入Gmin,更新Gmax和Gmin;第3.3步反复执行第3.1步和第3.2步,直到Gmax与Gmin的大小相差为1或者Gmax中已经找不到满足条件g∈Gmin,conv[f][g]=0的时序单元f为止;第4步根据调整以后的分组结果G1G2…Gn来构造低测试功耗的两级扫描测试结构第4.1步在各时序单元之前分别加入多路选择器MUX,改造为扫描时序单元;第4.2步从G1G2…Gn中各选出一个扫描时序单元g1’g2’…gn’,构成一条扫描链,扫描时序单元g1’g2’…gn’的时钟输入连接到时钟信号clk1;第4.3步G1G2…Gn中剩余的扫描时序单元的时钟输入连接到时钟信号clk2;第4.4步将G1中剩余的扫描时序单元的逻辑输入连接到扫描时序单元g1’的逻辑输出,将G2中剩余的扫描时序单元的逻辑输入连接到扫描时序单元g2’的逻辑输出,以此类推,将Gn中剩余的扫描时序单元的逻辑输入连接到扫描时序单元gn’的逻辑输出;第4.5步将时钟信号clk分别连接到两输入与门AND1和AND2的输入端,控制信号C1和C2分别连接到AND1和AND2的另一个输入端,clk1和clk2分别为AND1和AND2的输出;当C1=1且C2=0时,clk1有效且clk2无效;当C1=0且C2=1时,clk1无效且clk2有效。
全文摘要
构造具有低测试功耗的两级扫描测试结构的方法,属于集成电路测试技术领域,其特征在于它先由电路网单文件得到判别两两时序单元之间有无共同组合后继的表格;根据此表格来对时序单元进行分组,并对组的大小进行调整使分组均匀;通过在时序单元之前加入多路选择器的方法将所有的时序单元改造为扫描时序单元;从每组中各选出一个扫描时序单元,构成一条扫描链,连接到时钟信号clk
文档编号G06F11/22GK1603853SQ20041008888
公开日2005年4月6日 申请日期2004年11月8日 优先权日2004年11月8日
发明者向东, 孙家广, 李开伟 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1