专利名称:构造无故障屏蔽奇偶测试的扫描链和扫描森林的方法
技术领域:
本发明属于集成电路可测试性设计技术领域背景技术首先,介绍背景知识和相关定义测试在芯片封装以后对芯片质量进行检测的方法。由于芯片封装以后对芯片的内部电路无法直接访问,因此对芯片的测试采用的方法为在芯片的输入端置入测试向量,并在芯片输出端收集测试响应。将实际所得测试响应与无故障电路所应得测试响应进行比较,从而判断芯片电路有无故障。
测试向量测试向量是指通过芯片输入端置入内部电路的一组逻辑值,该组逻辑值表示了测试时应加在芯片输入端的电平的高低。数字电路中用逻辑值“1”表示高电平,“0”表示低电平。比如芯片A有4个输入端,“1010”为一个测试向量,它表示测试时加在芯片A的4个输入端的电平值为“高低高低”。
测试响应当测试向量通过输入端置入到芯片内部电路以后,在芯片输出端所得到的一组逻辑值。比如芯片A有两个输出端,当置入测试向量以后,在输出端得到的电平值为“高低”,则测试响应为“10”。
故障模型为研究问题的需要,将实际芯片中的物理缺陷抽象为逻辑故障模型。常用的故障模型为单固定型故障,即在同一时刻电路中只有一条信号线的输出值固定为逻辑1或0,无论电路输入取何值,该信号线取值不变。单固定型故障记为stuck-at-1(s-a-1),stuck-at-0(s-a-0)。
故障激活故障激活是指通过置入测试向量使得故障所在的信号线处产生与故障值相反的逻辑值。比如图1所示电路中信号线d处有故障s-a-0,即d信号线处故障值为逻辑0,其相反的逻辑值为1,因此,需要在输入端a和b置入测试向量“11”。如果置入的测试向量使得故障所在的信号线处产生与故障值相同的逻辑值,比如图1中在输入端a和b置入测试向量“00”,则无法区分d信号线处的逻辑值0是由故障s-a-0产生还是由测试向量“00”产生,从而无法检测到d处是否存在故障s-a-0。
故障传播故障传播是指将激活后的故障效应传播到电路的输出端。比如图1所示电路,信号线d处有故障s-a-0,如果输入端c处置入测试向量“1”,则或门OR2的输出为逻辑1,无论d处的故障是否被激活,输出端e处的逻辑值均为1,从而无法检测到d处是否存在故障s-a-0。因此故障传播要求在输入端c置入测试向量“0”,这样故障效应才能传播到输出端e。
结合故障激活和故障传播的要求可知,图1所示电路中,信号线d处的故障s-a-0可以用测试向量“110”来检测,d处无故障时,输出端e的逻辑值为1,d处有故障s-a-0时,输出端e的逻辑值为0。
记号D和D对于电路中的信号线而言,若正常状态时的值为1,有故障时的值为0,则记作D;若正常状态时的值为0,有故障时的值为1,则记作D;这样,在故障点,D表示s-a-0,D表示s-a-1。引入记号D和D以后,可以模拟故障效应在电路中的传播情况。
比如一个两输入与门,其中一个输入置为逻辑1,另一个输入置为D,则输出的逻辑值应为D,记作1 AND D=D(图2);同理,有1 AND D=D,D AND D=D,D ANDD=D。以上四种情况均是输入端有D或者D,输出端同样有D或者D,表明故障效应通过两输入与门得到了传播。
然而如果一个输入端为0,另一个输入端为D或者D,则有0 AND D=0(图3),0AND D=0;如果两个输入端一个为D,另一个为D,则有D AND D=0。以上三种情况均是输入端有D或者D,输出端没有D或者D,表明故障效应没有通过两输入与门得到传播。
扫描测试对于时序电路而言,由于电路中时序单元的输出逻辑值不仅取决于当前的输入逻辑值,还与上一时钟周期的输出逻辑值有关,因此时序单元的可控制性较差,要通过电路的原始输入(Primary Input)把时序单元的输出置为所需的逻辑值往往需要多个时钟周期,这一特点使得时序电路的测试向量生成问题极为复杂。
扫描测试是为降低时序电路测试向量生成问题的复杂性,对电路进行可测试性设计的一种方法。该方法将时序电路划分为时序单元(FF)和组合逻辑(Combinational logic)两个部分,如图4(a)所示,然后利用多路选择器MUX将时序电路中的时序单元FF改造为扫描时序单元,多个扫描时序单元首尾连接成为扫描链,由一个扫描输入scan-in来驱动,最后连接到一个扫描输出scan-out,如图4(b)所示。当信号test为0时,多路选择器MUX选通组合逻辑(Combinational logic),为正常工作状态;当信号test为1时,多路选择器选通扫描链,电路进入扫描测试状态。
伪输入与伪输出由于扫描链中所有时序单元均可以通过扫描输入scan-in置入所需的逻辑值,因此时序单元可以等效地看作是电路的输入端,称为伪输入(Pseudo PrimaryInput)。同时由于时序单元可以存储逻辑值,测试响应可以在时序单元处收集,然后通过扫描输出scan-out传播到电路的输出进行观察,因此时序单元又可以等效的看作是电路的输出端,称为伪输出(Pseudo Primary Output)。
这样,通过扫描测试的方法,时序电路的测试向量生成问题便转化为了组合电路的测试向量生成问题。所得到的测试向量包括两部分,一部分为电路的原始输入(PrimaryInput)对应的测试向量,一部分为电路中时序单元也即伪输入(Pseudo Primary Input)对应的测试向量。比如图4(b)所示电路中,如果组合电路部分(Combinational Logic)有4个原始输入,另外扫描链由2个时序单元组成,则测试向量“1111 00”表示4个原始输入应该置入逻辑1,2个时序单元应该置入逻辑0。要将2个时序单元的输出置为所需的逻辑值“00”需要两个时钟周期。
测试向量的置入以及测试响应的收集过程当信号test为1时,多路选择器选通扫描链,电路进入扫描测试状态,此时电路中时序单元的逻辑值可通过扫描输入scan-in直接置入;当时序单元对应的测试向量全部置入以后,将原始输入对应的测试向量置入;然后将信号test置为0,多路选择器选通组合逻辑(Combinational logic),电路恢复到正常的工作状态,此时,测试响应传播到了电路的原始输出端或者时序单元的输入端;再经过一个时钟周期便可以将传播到时序单元输入端的测试响应传播到时序单元的输出端。
在置入下一个测试向量的同时,在时序单元输出端的测试响应便一级一级传播到了扫描输出scan-out,另外也可以采用奇偶测试的方法对传播到时序单元输出端的这些测试响应进行收集。
扫描时序单元利用扫描测试的方法改造所得的时序单元,比如图4(b)中的多路选择器MUX与时序单元FF共同组成的结构。
扫描链(scan chain)由多个扫描时序单元首尾连接而成的结构(图5)。
扫描树(scan tree)扫描链结构中,一个扫描输入(scan-in)只能驱动一条扫描链。如果一个扫描输入(scan-in)驱动了多条扫描链,这样的结构称为扫描树。扫描树中最后一层的结点称为叶结点(leaf node),中间的结点称为内部结点(internal node)(图6)。扫描树可以看作多条扫描链的组合,扫描树的深度定义为扫描树中最长的扫描链的长度。
在扫描树结构中,同一层上的结点(比如图6中的结点3、4、5和6)需满足以下条件它们两两之间均没有共同组合后继。
扫描森林(scan forest)多棵扫描树构成扫描森林。扫描森林的深度定义为扫描森林中最长的扫描链的长度。
异或树(xor tree)在奇偶测试中,由多级异或门组成的结构。用于对测试响应数据进行压缩。异或树可以看作是多输入的异或门(图7)。
组合门与时序门门的输出信号线的逻辑值与时钟信号无关,这样的门称为组合门,组合门的类型包括非门、与门、或门、与非门、或非门、异或门、异或非门等。门的输出信号线的逻辑值与时钟信号有关,这样的门称为时序门,时序门的类型包括D触发器等,时序门通常是在时钟信号的上升沿或者下降沿到来时,读入输入信号线的逻辑值,从而产生相应输出信号线的逻辑值。
组合前驱和组合后继在电路结构中,组合门的输入信号线是该组合门的输出信号线的组合前驱,反之,组合门的输出信号线是该组合门的输入信号线的组合后继。组合前驱与组合后继的关系可以迭代。例如图1中,a是d的组合前驱,d是e的组合前驱,而a也是e的组合前驱;反之,d是a的组合后继,e是d的组合后继,而e也是a的组合后继。
直接组合前驱和直接组合后继相邻的组合前驱称为直接组合前驱,相邻的组合后继称为直接组合后继。例如图1中,a是d的直接组合前驱,但a不是e的直接组合前驱;d是a的直接组合后继,但e不是a的直接组合后继。
共同组合前驱在电路结构中,门a是门b的组合前驱,门a也是门c的组合前驱,则b和c有共同组合前驱a。
共同组合后继在电路结构中,门a是门b的组合后继,门a也是门c的组合后继,则b和c有共同组合后继a。
时序前驱和时序后继在扫描链或扫描树结构中,某扫描时序单元之前的其他扫描时序单元称为它的时序前驱。反之某扫描时序单元之后的其它扫描时序单元称为它的时序后继。时序前驱和时序后继的关系也可以迭代。例如图5中,1是2的时序前驱,2是3的时序前驱,而1也是3的时序前驱;又例如图6中,1是3的时序前驱,3是7的时序前驱,而1也是7的时序前驱,另外1是4的时序前驱,4是9的时序前驱,而1也是9的时序前驱。
共同时序前驱在扫描链或扫描树结构中,扫描时序单元a是b的时序前驱,a也是c的时序前驱,则b和c有共同时序前驱a。例如图6中,扫描时序单元3和4有共同时序前驱1。
时序深度在扫描链、扫描树和扫描森林结构中,若扫描时序单元a的输出连接到扫描时序单元b的输入,且扫描时序单元b的输出连接到扫描时序单元c的输入,则b到a的时序深度为1,c到a的时序深度为2,以此类推。例如图6中,扫描时序单元3到扫描时序单元1的时序深度为1,扫描时序单元7到扫描时序单元1的时序深度为2。
奇偶测试奇偶测试是用于对测试响应数据进行压缩的一种方法,其基本技术是在电路的时序单元之后加入异或门(XOR gate),将多个时序单元的输出信号线连接到一起,传播到这些时序单元的测试响应通过共同的信号线传播到电路的输出端(图8)。
对2输入的异或门,若两个输入端的逻辑值相同,则输出为逻辑0;若两个输入端的逻辑值不同,则输出为逻辑1。这样的逻辑关系可以记为0 XOR 0=0,1 XOR 1=0,0 XOR1=1,1 XOR 0=1。
若其中一个输入端置为逻辑0,另一个输入端置为D。由于D表示正常状态时的值为1,有故障时的值为0,则由上面的逻辑关系可知,对输出端而言,正常状态时的值为1(因为0 XOR 1=1),有故障时的值为0(因为0 XOR 0=0),可记为D。
这样的逻辑关系可以记为0 XOR D=D(图9)。同理,有1 XOR D=D,0 XOR D=D,1 XOR D=D。以上四种情况均是输入端有D或者D,输出端同样有D或者D,表明故障通过2输入异或门得到了传播。
但是注意到D XOR D=0(图10),D XOR D=1,D XOR D=0,D XOR D=1。这四种情况下,输入端有D或者D,但输出端没有D或者D,表明故障未能通过2输入异或门得到传播。传播到异或门输入端的偶数个故障效应D或D被异或门屏蔽。
多级异或门组成的结构称为异或树(XOR tree)。如果时序单元u1,u2…un连接到了一棵异或树,共用一条信号线来传播故障效应,而同时有偶数个故障效应D或D传播到这些时序单元u1,u2…un,则故障效应将被异或树屏蔽。故障效应传播不到异或树的输出端,这种现象称为故障屏蔽。
为了对奇偶测试方法的效果进行评价,定义奇偶可测试性PT如下假设#P0表示故障信息传播到原始输出的故障数目,#odd表示故障信息传播到奇数个时序单元且不传播到原始输出的故障数目,#even表示故障信息传播到偶数个时序单元且不传播到原始输出的故障数目,则奇偶可测试性PT可定义为PT=#po+#odd#po+#odd+#even·100%]]>上式中,#po+#odd+#even表示能被检测到的故障效应的总数,#po+#odd表示能被奇偶测试的方法检测到的故障效应的数目。
由于#even的存在,使得传统的奇偶测试方法的PT<100%。
传统的奇偶测试在引入异或树时没有任何的引导策略,只是随机地用异或门将时序单元的输出连在一起,导致偶数个故障效应同时传播到同一棵异或树时,故障效应被异或树屏蔽。本发明则在引入异或树结构时采用了一种引导策略,保证了不会有偶数个故障效应同时传播到同一棵异或树,也即#even=0,从而使被屏蔽故障数为0,奇偶可测试性PT=100%。
发明内容
本发明的目的在于通过构造无故障屏蔽奇偶测试的扫描链或扫描森林来提供一种消除奇偶测试中被屏蔽故障的方法。
本发明首先分析电路结构信息,得出电路中所有时序单元在电路结构上的相互关系。
对时序单元而言,若两个时序单元(u1,u2)在电路结构中没有共同的组合前驱,则同一个故障效应不可能同时传播到时序单元u1和u2中,将时序单元u1、u2的输出用异或门连接在一起进行奇偶测试,不会产生故障屏蔽。若时序单元u1u2…un两两之间均没有共同的组合前驱,则将u1u2…un连接到一棵异或树进行奇偶测试,不会产生故障屏蔽。
对两条扫描链(u1u2…un)(v1v2…vn)而言,考虑对应的时序单元对(u1,v1)(u2,v2)…(un,vn),若每组时序单元对(ui,vi),i∈[1,n]在电路结构中均没有相同的组合前驱,则将un,vn的输出用异或门连接在一起,对这两条扫描链进行奇偶测试,不会产生故障屏蔽(图11)。
如果要将多条扫描链(i1i2…in)(j1j2…jn)(k1k2…kn)连接到同一个异或树共用一条信号线来传播故障效应,则(i1,j1,k1)两两之间不能有共同的组合前驱,有pred[i1][j1]=pred[j1][k1]=pred[k1][i1]=0;同样,有pred[i2][j2]=pred[j2][k2]=pred[k2][i2]=0;……pred[in][jn]=pred[jn][kn]=pred[kn][in]=0。
对扫描树而言,情况有所不同1、首先扫描树可以看作多条扫描链的组合,对扫描树中的扫描链(u1u2…un)(v1v2…vn)进行奇偶测试,同样需要满足时序单元对(ui,vi),i∈[1,n]没有共同的组合前驱。
如图12所示,对扫描链(1,4,9)(2,6,11)进行奇偶测试。若时序单元9和11在电路结构中没有共同组合前驱,但4和6有共同组合前驱v,则v处的故障效应会同时传播到4和6,从而同时传播到9和11,经过异或门b以后,故障效应被屏蔽,在b的输出无法检测到v处的该故障。
2、由于扫描树结构中一个时序单元可以有多个时序后继,而在故障效应传播到时序单元以后,是通过其时序后继一级一级往下传播,最后在扫描输出处进行观察。对扫描树的结构进行奇偶测试时,如果连接到同一棵异或树的时序单元中有偶数个时序单元具有共同的时序前驱,且这偶数个时序单元到该共同时序前驱的时序深度相同,则传播到这一共同时序前驱的故障效应将被异或树屏蔽。
如图12所示,时序单元7和8在电路结构中没有共同组合前驱,但是7和8在扫描链结构中有共同的时序前驱3,且7和8到3的时序深度均为1,这样传播到时序单元3的故障效应必然同时传播到7和8,在异或门a的输出无法检测到传播到时序单元3的故障效应。
因此在对扫描树结构进行奇偶测试时,除了满足没有共同组合前驱的条件以外,还需满足没有共同的时序前驱这一条件。
3、若扫描链(u1u2…un)(v1v2…vn)满足条件1,每组时序单元对(ui,vi),i∈[1,n]在电路结构中均没有相同的组合前驱,已采用异或门xor1进行奇偶测试,则对u1u2…un,v1v2…vn加上标记。在判断剩下的扫描链可否用异或门xor2进行奇偶测试时,若时序单元对中含有已加标记的时序单元,则可不必满足条件1,同样不会产生被屏蔽故障,因为此时被xor2屏蔽的故障效应已经可以在xor1的输出处进行观察。
如图13所示,时序单元对(1,2)(3,5)(7,10)在电路结构上没有共同组合前驱,将扫描链(1,3,7)(2,5,10)接至异或门a进行奇偶测试不会产生故障屏蔽。对(1,3,7)(2,5,10)加上标记“*”,在考虑对扫描链(1,4,9)(2,6)进行奇偶测试时,则只需要时序单元对(9,6)没有共同组合前驱,便可利用异或门c进行奇偶测试且不会产生被屏蔽故障。这是因为即使时序单元对(4,2)有共同组合前驱v,v处的故障同时传播到4和2,该故障效应无法在c的输出进行观察,但是该故障效应传播到2处以后可以在a处观察,因此也没有产生被屏蔽故障。
本发明的特征在于它依次含有以下步骤第1步初始化向计算机输入电路网单文件,采用N*N表格conv[N][N]和pred[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;若对于i≠j,i∈[1,N],j∈[1,N]的时序单元i与时序单元j,i与j在电路结构上有共同组合前驱,则pred[i][j]=pred[j][i]=1,否则pred[i][j]=pred[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;第1.2步建立pred[N][N]表格,它依次含有以下步骤第1.2.1步对于电路中所有时序单元,设时序单元i的输入信号线在电路中对应的标识为iIn,将时序单元i的组合前驱依次存入数组predecessor_of_iIn[]中,方法如下首先将时序单元i的直接组合前驱i1i2…in存入数组中,然后依次将i1i2…in的直接组合前驱也存入数组中,直到存入数组的单元已经是一个时序单元或者是原始输入为止;第1.2.2步对于任意两个时序单元i和j,若predecessor_of_iIn[]和predecessor_of_jIn[]中有相同单元,则pred[i][j]=pred[j][i]=1;否则pred[i][j]=pred[j][i]=0;第2步构造无故障屏蔽奇偶测试的扫描链第2.1步设时序单元的集合为F,总数为N,扫描链的长度为n,n≤N;第2.2步若F中剩余的时序单元的数量≤n,则执行第2.6步,否则执行第2.3步;第2.3步从F中选出n个时序单元i1i2…in,分别放入集合G1G2…Gn;在i1i2…in前面分别加入多路选择器MUX,改造为扫描时序单元i1’i2’…in’,扫描时序单元i1’i2’…in’构成一条扫描链;第2.4步对m从1到n,作根据表格pred[N][N]从F中选出时序单元jm,jm满足如下条件g∈Gm,pred[g][jm]=0;第2.5步若步骤第2.4步找到了n个满足条件的时序单元j1j2…jn,则,将j1j2…jn分别放入集合G1G2…Gn;在j1j2…jn前分别加入多路选择器MUX,改造为扫描时序单元j1’j2’…jn’;扫描时序单元j1’j2’…jn’构成一条扫描链;转第2.4步;否则,将第2.4步中找出的不足n个的时序单元j1j2…jm放回到集合F中;将集合G1G2…Gn中的多条扫描链连接到同一棵异或树进行奇偶测试;清空集合G1G2…Gn;转第2.2步;第2.6步在F中剩余的时序单元前面分别加入多路选择器MUX,改造为扫描时序单元,构成一条扫描链;第2.7步结束;第3步构造无故障屏蔽奇偶测试的扫描森林第3.1步设时序单元的集合为F,总数为N,扫描森林的深度为n,n≤N;第3.2步若F中剩余的时序单元的数量≤n,则执行第3.6步,否则执行第3.3步;第3.3步新建一棵扫描树;从F中选出n个时序单元i1i2…in,分别放入集合G1G2…Gn;在i1i2…in前面分别加入多路选择器MUX,改造为扫描时序单元i1’i2’…in’,扫描时序单元i1’i2’…in’构成新建扫描树中的一条扫描链;第3.4步对m从1到n,作根据表格pred[N][N]和conv[N][N]从F中选出时序单元jm,jm满足如下条件g∈Gm,pred[g][jm]=0且conv[g][jm]=0;第3.5步若步骤第3.4步找到了n个满足条件的时序单元j1j2…jn,则,将j1j2…jn分别放入集合G1G2…Gn;在j1j2…jn前分别加入多路选择器MUX,改造为扫描时序单元j1’j2’…jn’,扫描时序单元j1’j2’…jn’构成新建扫描树中的另一条扫描链;转第3.4步;否则,将第3.4步中找出的不足n个的时序单元j1j2…jm放回到集合F中;将集合G1G2…Gn中的多条扫描链连接到同一棵异或树进行奇偶测试;清空集合G1G2…Gn;转第3.2步;第3.6步新建一棵扫描树,在F中剩余的时序单元前面分别加入多路选择器MUX,改造为扫描时序单元,构成新建扫描树中的一条扫描链,这样最后这棵扫描树中只有一条扫描链;第3.7步结束。
使用证明实验平台为SUN BLADE2000工作站,实验中采用的测试码产生器为ATALANTA,故障模拟器为HOPE。表1中给出了将本发明应用于ISCAS89的电路以及两个ITC99电路B17和B18的实验结果,表中Full Scan为完全扫描方法的实验结果,Original Scan forest为原始扫描森林的实验结果,Proposed Scheme为本发明的实验结果,#HF表示难测故障数,#even表示被屏蔽故障的数量,#vec表示测试向量数。从实验结果可以看出,本发明在测试向量数基本没有增加的情况下,保证了被屏蔽故障的数量为0,奇偶可测试性PT=100%。通过实验,证明本发明达到了预期目的。
表1将本发明应用到ISCAS89以及B17、B18电路的实验结果
图1故障激活与传播示意图。
图2故障效应通过AND2得到传播。
图3故障效应未能通过AND2传播。
图44(a)时序电路示意图。
4(b)对时序电路进行扫描测试示意图。
图5扫描链示意图。
图6扫描树示意图,图中○表示内部结点(internal node),●表示叶结点(leaf node)。
图7异或树示意图。
图8采用异或门进行奇偶测试示意图。
图9故障通过异或门得到传播。
图10故障未能通过异或门传播。
图11对扫描链进行奇偶测试示意图。
图12扫描树中的奇偶测试之一,图中○表示内部结点(internal node),●表示叶结点(leaf node),表示异或门(xor gate)。
图13扫描树中的奇偶测试之二,图中○表示内部结点(internal node),●表示叶结点(leaf node),表示异或门(xor gate)。
图14电路示意图。
图15表格pred[9][9]和conv[9][9]。
图16构造无故障屏蔽奇偶测试扫描链的程序流程框图。
图17构造无故障屏蔽奇偶测试扫描森林的程序流程框图。
具体实施例方式
建立表格pred[N][N]和conv[N][N],利用表格pred[N][N]构造无故障屏蔽的扫描链,利用表格pred[N][N]和conv[N][N]构造无故障屏蔽的扫描森林的方法请参见权利要求的部分。
下面分别通过具体例子来说明上述方法的具体实施方式
。
例1如图14所示电路,其中的时序单元总数为3,时序单元1的输出信号线在电路中的标识为1Out=5,时序单元2的输出信号线在电路中的标识为2Out=6,时序单元3的输出信号线在电路中的标识为3Out=7。
建立表格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(这表示时序单元1的组合后继为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。
建立表格pred[3][3]的过程如下1)对于电路中的时序单元1,1In=17,将17的直接组合前驱8和15存入数组predecessor_of_17[]。
将8的直接组合前驱1存入数组;将15的直接组合前驱14和5存入数组。
1已经到达原始输入,故不必再往前搜索;将14的直接组合前驱12和13存入数组;5已经到达时序单元1,故不必再往前搜索。
将12的直接组合前驱10和9存入数组;将13的直接组合前驱10和3存入数组,由于10已经在数组中,故不必再次存入。
将10的直接组合前驱8和6存入数组,由于10的直接组合前驱8已经在数组之中,故不必再次存入;将9的直接组合前驱2和7存入数组;3已经到达原始输入,不必再往前搜索。
6已经到达时序单元2,故不必再往前搜索;2已经到达原始输入,故不必再往前搜索;7已经到达时序单元3,故不必再往前搜索。
结束。
这样,数组predecessor_of_17[]中存储的内容为8,15,1,14,5,12,13,10,9,3,6,2,7;同理,数组predecessor_of_15[]中存储的内容为14,5,12,13,10,9,3,8,6,2,7,1;数组predecessor_of_11[]中存储的内容为9,4,2,7。
2)时序单元1和2有共同组合前驱14,因此pred[1][2]=pred[2][1]=1;时序单元2和3有共同组合前驱9,因此pred[2][3]=pred[3][2]=1;时序单元1和3有共同组合前驱9,因此pred[1][3]=pred[3][1]=1。
例2某电路中时序单元的总数为9,图15中给出了表示这些时序单元在电路结构上的相互关系的表格conv[9][9]和pred[9][9]。
利用表格pred[9][9]构造无故障屏蔽的扫描链的过程如下设时序单元集合为F,总数为9,扫描链长度为3。
从F中选出3个时序单元,不妨为时序单元1、2、3,分别放入集合G1、G2、G3;将1、2、3改造为扫描时序单元1’、2’、3’,构成一条扫描链。
利用表格pred[9][9],在F中剩下的时序单元中选出4、6和7,满足pred[1][4]=0,pred[2][6]=0,pred[3][7]=0。
将时序单元4、6、7分别放入集合G1、G2、G3;将4、6、7改造为扫描时序单元4’、6’、7’,构成一条扫描链。
利用表格pred[9][9],在F中剩下的时序单元中选出8、9和5,满足pred[1][8]=pred[4][8]=0,pred[2][9]=pred[6][9]=0,pred[3][5]=pred[7][5]=0。
将时序单元8、9、5分别放入集合G1、G2、G3;将8、9、5改造为扫描时序单元8’、9’、5’,构成一条扫描链。
将扫描链(1’2’3’)(4’6’7’)(8’9’5’)连接到同一棵异或树进行奇偶测试。
结束。
利用表格pred[9][9]和conv[9][9]构造无故障屏蔽的扫描森林的过程如下设时序单元集合为F,总数为9,扫描森林的深度为3。
新建一棵扫描树,从F中选出3个时序单元,不妨为时序单元1、2、3,分别放入集合G1、G2、G3;将1、2、3改造为扫描时序单元1’、2’、3’,构成新建扫描树中的一条扫描链。
利用表格pred[9][9],在F中剩下的时序单元中选出5、8、4,满足pred[1][5]=0且conv[1][5]=0,pred[2][8]=0且conv[2][8]=0,pred[3][4]=0且conv[3][4]=0。
将时序单元5、8、4分别放入集合G1、G2、G3;将5、8、4改造为扫描时序单元5’、8’、4’,构成新建扫描树中的一条扫描链。
由于在F剩下的时序单元中已找不出满足条件g∈G1,pred[g][j1]=0且conv[g][j1]=0的时序单元j1,因此,将扫描链(1’2’3’)(5’8’4’)连接到同一棵异或树进行奇偶测试。这样,扫描森林中的第一棵扫描树由两条扫描链(1’2’3’)(5’8’4’)组成,且这两条扫描链连接到了同一棵异或树进行奇偶测试。
新建一棵扫描树,将F中剩下的时序单元6,7,9改造为扫描时序单元6’、7’、9’,构成新建扫描树中的一条扫描链。
结束。
权利要求
1.构造无故障屏蔽奇偶测试的扫描链和扫描森林的方法,其特征在于它依次含有以下步骤第1步初始化向计算机输入电路网单文件,采用N*N表格conv[N][N]和pred[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;若对于i≠j,i∈[1,N],j∈[1,N]的时序单元i与时序单元j,i与j在电路结构上有共同组合前驱,则pred[i][j]=pred[j][i]=1,否则pred[i][j]=pred[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;第1.2步建立pred[N][N]表格,它依次含有以下步骤第1.2.1步对于电路中所有时序单元,设时序单元i的输入信号线在电路中对应的标识为iIn,将时序单元i的组合前驱依次存入数组predecessor_of_iIn[]中,方法如下首先将时序单元i的直接组合前驱i1i2…in存入数组中,然后依次将i1i2…in的直接组合前驱也存入数组中,直到存入数组的单元已经是一个时序单元或者是原始输入为止;第1.2.2步对于任意两个时序单元i和j,若predecessor_of_iIn[]和predecessor_of_jIn[]中有相同单元,则pred[i][j]=pred[j][i]=1;否则pred[i][j]=pred[j][i]=0;第2步构造无故障屏蔽奇偶测试的扫描链第2.1步设时序单元的集合为F,总数为N,扫描链的长度为n,n≤N;第2.2步若F中剩余的时序单元的数量≤n,则执行第2.6步,否则执行第2.3步;第2.3步从F中选出n个时序单元i1i2…in,分别放入集合G1G2…Gn;在i1i2…in前面分别加入多路选择器MUX,改造为扫描时序单元i1’i2’…in’,扫描时序单元i1’i2’…in’构成一条扫描链;第2.4步对m从1到n,作根据表格pred[N][N]从F中选出时序单元jm,jm满足如下条件g∈Gm,pred[g][jm]=0;第2.5步若步骤第2.4步找到了n个满足条件的时序单元j1j2…jn,则,将j1j2…jn分别放入集合G1G2…Gn;在j1j2…jn前分别加入多路选择器MUX,改造为扫描时序单元j1’j2’…jn’;扫描时序单元j1’j2’…jn’构成一条扫描链;转第2.4步;否则,将第2.4步中找出的不足n个的时序单元j1j2…jm放回到集合F中;将集合G1G2…Gn中的多条扫描链连接到同一棵异或树进行奇偶测试;清空集合G1G2…Gn;转第2.2步;第2.6步在F中剩余的时序单元前面分别加入多路选择器MUX,改造为扫描时序单元,构成一条扫描链;第2.7步结束;第3步构造无故障屏蔽奇偶测试的扫描森林第3.1步设时序单元的集合为F,总数为N,扫描森林的深度为n,n≤N;第3.2步若F中剩余的时序单元的数量≤n,则执行第3.6步,否则执行第3.3步;第3.3步新建一棵扫描树;从F中选出n个时序单元i1i2…in,分别放入集合G1G2…Gm;在i1i2…in前面分别加入多路选择器MUX,改造为扫描时序单元i1’i2’…in’,扫描时序单元i1’i2’…in’构成新建扫描树中的一条扫描链;第3.4步对m从1到n,作根据表格pred[N][N]和conv[N][N]从F中选出时序单元jm,jm满足如下条件g∈Gm,pred[g][jm]=0且conv[g][jm]=0;第3.5步若步骤第3.4步找到了n个满足条件的时序单元j1j2…jn,则,将j1j2…jn分别放入集合G1G2…Gn;在j1j2…jn前分别加入多路选择器MUX,改造为扫描时序单元j1’j2’…jn’,扫描时序单元j1’j2’…jn’构成新建扫描树中的另一条扫描链;转第3.4步;否则,将第3.4步中找出的不足n个的时序单元j1j2…jm放回到集合F中;将集合G1G2…Gn中的多条扫描链连接到同一棵异或树进行奇偶测试;清空集合G1G2…Gn;转第3.2步;第3.6步新建一棵扫描树,在F中剩余的时序单元前面分别加入多路选择器MUX,改造为扫描时序单元,构成新建扫描树中的一条扫描链,这样最后这棵扫描树中只有一条扫描链;第3.7步结束。
全文摘要
构造无故障屏蔽奇偶测试的扫描链或扫描森林的方法,属于集成电路可测试性设计技术领域,其特征在于它先由电路网单文件分析电路中时序单元在电路结构上的相互关系,得到用于判别两两时序单元之间有无共同的组合前驱和共同的组合后继的判别表;利用两两时序单元之间没有共同组合前驱的条件来构造无故障屏蔽奇偶测试的扫描链;利用两两时序单元之间没有共同组合前驱且没有共同组合后继的条件来构造无故障屏蔽奇偶测试的扫描森林。通过在时序单元之前加入多路选择器的方法将其改造为扫描时序单元,并采用异或树进行奇偶测试。该方法可在测试向量基本没有增加的情况下,保证被屏蔽故障数为0,奇偶可测试性PT=100%。
文档编号G01R31/3181GK1601293SQ200410009678
公开日2005年3月30日 申请日期2004年10月15日 优先权日2004年10月15日
发明者向东, 孙家广, 李开伟 申请人:清华大学