具有非扫描设计测试代价的扫描设计及测试向量置入方法

文档序号:7195705阅读:220来源:国知局
专利名称:具有非扫描设计测试代价的扫描设计及测试向量置入方法
技术领域
具有非扫描设计测试代价的扫描设计及测试向量置入方法属于集成电路可测试性设计技术领域。
背景技术
扫描设计是一种针对时序电路的结构化可测试性设计。它将电路中的时序单元转化成为可控制和可观测的单元,并将这些时序单元连接成一个或多个移位寄存器,构造成一条或多条扫描链。在采用完全扫描方法后,时序电路的测试码生成就转化为组合电路的测试生成问题,因此可以大大降低测试码生成代价,同时获得很高的故障覆盖率。因此,扫描设计是工业界中最为普遍采用的可测试性设计方法。但是,在采用扫描设计后,测试序列的长度大大变长,从而使得测试码置入代价增加很大,测试时间,测试功耗等方面的代价也变得非常高。以往有一些方法用来改进扫描设计,以降低测试代价,但这些策略均难以达到令人满意的效果。这些方法有(1)将测试向量进行排序或将扫描触发器进行排序,如Fujiwara提出的奇偶扫描测试,利用动态规划的最优设计方法来构造多扫描链等等。这些方法在一定程度上降低了测试码置入代价,但其减少的代价最多不超过50%,而且随着集成电路的规模不断增大,测试时间变得非常长时,这些方法并不能从根本上解决问题。(2)并行扫描该方法降低了测试码置入的时间,但同时带来了管脚开销的问题。例如,当将扫描触发器划分为k个扫描链时,需要在电路中增加2k+1个额外管脚来置入扫描向量。这对于现今超大规模集成电路的设计来说,所带来的硬件开销是无法容忍的。(3)采用同一扫描输入信号控制多个扫描链可较大程度地降低片上系统(SOC)扫描测试的测试时间,但是该方法对测试时间及测试功耗的降低仍然大大高于非扫描测试。(4)采用同一扫描输入来驱动多个扫描链中的扫描段,可大大降低测试时间,但同时也带来了较为明显的故障覆盖率降低。(5)通过有效地利用测试码产生算法来产生电路在不同状态下的测试集。实验表明,上述方法对测试时间的降低是非常有限的。因此,大幅度降低扫描设计的测试代价,同时保证其较好的测试生成结果,已成为一个必须而且亟待解决的问题。

发明内容
本发明的目的在于提供一种既可大幅度降低扫描设计的测试代价又有较好测试生成结果的具有非扫描设计测试代价的扫描设计及测试向量置入方法。
本发明针对已有方法所存在的缺陷,在并行扫描概念的基础上,提出了“扫描森林”的扫描设计结构。如图1所示,其中F1,1,F1,2,……,Fk,c为触发器,SI1,……,SIk为电路的原始输入信号,同时作为扫描森林中各个扫描树的根结点,其作用为当电路处在测试状态时作为扫描输入scan-in,用来置入扫描向量。每个原始输入的后继连接了一组符合某一特征的扫描触发器,例如,原始输入SI1连接了一组触发器F1,1,F1,2,……,F1,a。从这一组中任选出的一个扫描触发器(如F1,2)将作为下一层的根结点,用来连接下一组符合某一特征的扫描触发器组,在图中即为F2,1,F2,2,……,F2,b。依此类推将所有触发器分组并连接到“森林”中的某个结点上,以构造成“扫描森林”。所有的叶结点(即没有后继的扫描触发器)将被两两异或,构成一个或多个异或树,最后连到MISR(多输入特征分析器)上作为扫描输出。相应的电路结构图如图2所示。在图2中,每个触发器的输入均连接了一个二选一多路选择器,这样将电路中原来的触发器构造成为扫描触发器。多路选择器的输出端连接触发器的输入端,多路选择器的0输入信号连接原始电路,即原始电路中触发器的输入端所连接的电路部分;多路选择器的1输入信号连接至构造好的扫描森林结构中对应的位置。以扫描触发器F1,1为例,F1,1的1选通信号应与PI1相连接。所有多路选择器的选通信号都连接至一个额外的输入信号test,作为转换电路正常工作与测试状态的开关。当test=0时,所有的多路选择器选通0信号,电路结构为原来的初始结构,电路处于正常工作状态;当test=1时,所有的多路选择器选通1信号,电路中的所有扫描触发器构造成为扫描森林的结构,电路进入测试状态。
本发明所提出的具有非扫描设计的测试代价的扫描设计,其特征在于它是基于“扫描森林”式扫描设计结构的一种具有非扫描设计测试代码的扫描设计方法,对于扫描触发器群F1,1,F1,2,……,Fk,c构成的时序单元而言,它把电路的原始输入端SI1,……,SIk同时作为“扫描森林”中各个扫描树的根结点,以便当电路处在测试状态时作为扫描输入Scan-in,用来置入扫描测试向量,它按照两个扫描触发器是否在电路结构上发生汇聚的原则,在每个原始输入端SIi的后继连接了一组不会在电路结构上汇聚的,即没有任何一个相同的后继单元的扫描触发器,接着在这一组扫描触发器F1,1,F1,2……,Fk,c中任选一个扫描触发器作为下一层的根结点,用于连接下一组符合上述特征的触发器组F1,1,F1,2,……,Fk,c,依此类推,把所有扫描触发器分组并连接到“扫描森林”中的某个结点上,以构造成“扫描森林”;具体而言,上述具有非扫描设计测试代价的扫描设计方法依次含有如下步骤(1)初始化设初始状态为电路中所有的扫描触发器均未被分组,它们构成一个集合F(F={f1,f2,……fn});(2)首先建立一个空的新组Gi,任取F中一个扫描触发器fi加入Gi,作为Gi的第一个成员,即Gi={fi}。并将fi从F中去除掉;(3)根据现有的判断是否会发生上述汇聚现象的技术判断F中所有的扫描触发器,逐个地选择出全部满足不会和Gi里的所有触发器在电路结构上汇聚的扫描触发器加入Gi,再把这些触发器从触发器群F中去除掉,以构成一个完整的组Gi;(4)再建立一个新组Gi+1,任取触发器群F中一个扫描触发器作为新组Gi+1的第一个成员,再按照步骤(3)中的判断方法构造出Gi+1;(5)依此类推,把所有扫描触发器归入各自的组,把触发器群即集合构造为组的集合;(6)按照宽度优先的方法构造“扫描森林”,即把上述构造的各组依次连接到原始输入即扫描输入上,从而构造出“扫描森林”结构,其步骤如下当电路原始输入端的数目k大于或等于扫描触发器组的组数g时,则从k个原始输入中任选g个,使每一个原始输入端连接一个扫描触发器组即可;当g>k时,从扫描触发器组g中任选k个组分别连接到每一个原始输入上,但每个原始输入只能连一个扫描触发器组,构成扫描森林的第一层;再从剩下的(g-k)个组中选出k个,再从第一层的每一个扫描触发器组中任选一个扫描触发器作为根结点,连接这k个组中的任意一个扫描触发器组,构造出扫描森林第二层;依次连接剩下所有的组。
(7)所有叶结点将被两两异或,构成一个或多个异或树,最后连接到MISR(多输入特征分析器)上作为扫描输出。
本发明所提出的具有非扫描设计测试代价的扫描设计,其特征还在于在构造“扫描森林”时只把电路中部分触发器转化为“扫描森林”内的扫描触发器结构以获得接近于完全扫描设计的故障覆盖率和测试效率,它依次含有以下步骤(1)先把任一扫描触发器恢复成非扫描状态,再遍历其直接后继单元,若其可测度(包括可控度和可观测度)发生了变化,则记录变化的值,同时记录这个单元的后继单元,一直搜索到不再有可测度变化的单元为止,把所有的值累加作为这个扫描触发器所影响的范围;(2)对于每一个扫描触发器都进行上述步骤(1),从中选择影响值最小的触发器作为非扫描时序单元,在电路中将其恢复为非扫描状态;(3)按步骤(1)、(2)选择出所需数目的非扫描时序单元,同时在每选出一个非扫描时序单元后更新电路的可测度;(4)把按上述步骤选出的非扫描时序单元恢复成非扫描状态,并从扫描触发器集合中去除,把余下的扫描触发器构造“扫描森林”;在构造“扫描森林”时当两个扫描触发器发生汇聚时,若经过的非扫描时序单元的数目有异时,它们在结构上是不汇聚的。
根据本发明所提出的具有非扫描设计的测试代价的扫描设计而提出的测试向量置入方法其特征在于它依次含有如下步骤(1)把原始时序电路中的触发器构造成“扫描森林”;(2)根据上述“扫描森林”修改原电路的结构,产生扫描设计电路的结构;(3)将产生的新电路用已知的测试生成工具进行测试生成,在算出电路必要参数的同时得到一组由原始输入端输入的扫描测试向量,每一个测试向量的长度为组的数目+原始输入的数目,对于“扫描森林”中的每一个组,在测试向量中有一个确定的值(0或1)与之对应,即该组中所有的扫描触发器都将被置为这个值;(4)把电路置为测试状态,对于每一个扫描测试向量按以下步骤置入电路(4.1)在第一个时钟节拍,从原始输入端置入“扫描森林”中最后一层内各个组的值;(4.2)在第二个时钟节拍,从原始输入端置入“扫描森林”中倒数第二层内各个组的值,同时正数第一层中所有内部触发器结点的值将送入与之连接的第二层中各个扫描触发器中;(4.3)依次类推,在最后一个时钟节拍,从原始输入端置入“扫描森林”中正数第一层内各个组的值,使得“扫描森林”中所有的扫描触发器已经按组被置为扫描测试向量中所提供的值。
测试证明它达到了预期效果。


图1、“扫描森林”的结构示意图,其中“●”代表叶结点扫描触发器,“○”代表内部结点扫描触发器。
图2、采用“扫描森林”结构的扫描设计电路。
图3、构造“扫描森林”的程序流程框图。
图4、计算电路可观测度时的冲突情况。
图5、“扫描森林”策略在具体电路上的应用(原始电路s27)。
图6、在图5所示电路上加入“完全扫描森林”结构后的电路。
图7、s38417的“完全扫描森林”结构示意图“●”代表叶结点扫描触发器,“○”代表内部结点扫描触发器。
图8、在图5所示电路上加入“部分扫描森林”结构后的电路。
具体实施例方式构造扫描森林的过程就是以所有的原始输入端为根结点,构造扫描树的过程。首先将所有的扫描触发器按照一定的规则进行分组。分组的原则是按照两个扫描触发器是否在电路结构上发生汇聚。结构上的汇聚是指,分别遍历两个触发器的所有后继单元(包括直接后继和所有后继的后继,直到原始输出为止),当发现这两个触发器有至少一个相同的后继单元时,则称这两个触发器在结构上发生汇聚;当两个触发器没有任何一个相同的后继单元时,则这两个触发器在结构上不汇聚。
设初始状态为电路中所有的扫描触发器均未被分组,这些未分组的扫描触发器构成一个集合F(F={f1,f2,……fn})。分组的方法如下(1)首先建立一个空的新组Gi,任取F中一个扫描触发器fi加入Gi,作为Gi的第一个成员,即Gi={fi}。并将fi从F中去除掉。
(2)判断F中所有的扫描触发器,如果存在这样一个扫描触发器fj,fj满足和Gi里现有的所有扫描触发器(当Gi为一个新建组时,Gi中只有一个成员)都不发生在电路结构上的汇聚时,则将触发器fj并入Gi中,作为Gi的又一个成员,同时将fj从F中去除掉;若F中的一个扫描触发器fj只要与Gi中任意一个扫描触发器在电路结构上发生汇聚,则触发器fj将不能加入Gi。按上述条件判断F中所有的触发器,选择出全部满足条件的触发器加入Gi,再将这些触发器从F中去除掉。这样就构成了一个完整的组Gi。
(3)再建立一个新组Gi+1,任取F中一个扫描触发器作为Gi+1中的第一个成员,按照2)中的判断方法构造出Gi+1。
依此类推,将所有扫描触发器归入各自的组。这样就将扫描触发器的集合构造为组的集合。相关的程序流程框图如图3所示。
接下来按照宽度优先的方法构造扫描森林。构造扫描森林的过程即是将上文中构造出的组依次连接至原始输入(即扫描输入)上,从而构造出扫描森林结构。
设电路有k个原始输入端,构造出的扫描触发器组有g个。若g≤k,则从k个原始输入中任选出g个,每一个原始输入连接一个组,扫描森林的构造即完成。当g>k时,任选k个组分别连接到每一个原始输入上,每个输入只连接一个组。这样构造出扫描森林的第一层。再从剩下的组中选择出k个,在第一层的每个组中任选一个扫描触发器作为根结点,连接这k个组中的任意一个组,从而构造出扫描森林的第二层。依次连接剩下所有的组。例如,当电路的原始输入数目为m个,电路中的扫描触发器个数为n个,扫描触发器分组后,组的数目为k个(k<=n),则构造出的扫描森林中,每一层有m个组,森林的层数为level=[k/m](向上取整),内部结点(即连接了下一个组的扫描触发器)的个数为nInt=(level-2)×m+[k-(level-1)×m]。该式中第一项(level-2)为森林结构中第一层到第level-1层中所有的内部结点数目,第二项[k-(level-1)×m]为森林结构中第level层的内部结点数目。叶结点(即没有后继的扫描触发器)的个数为nleave=n-nInt。
将原始的时序电路中的触发器按照上述算法构造成扫描森林,同时修改原电路的结构,产生如图2中所示的扫描设计电路的结构。将产生的新电路用测试生成工具进行测试生成。测试生成是对电路进行故障测试的模拟,其过程是按照一定的算法计算电路的故障覆盖率、测试效率等参数,同时得到一组由原始输入端输入的测试向量。当实际的电路在测试仪上进行测试时,输入这些测试向量,同时在输出端得到响应信号,将这些响应信号与模拟出来的正确信号进行比较,从而测试出实际电路的真实故障情况。每一个测试向量的长度为组的数目+原始输入的数目。对于扫描森林中的每一个组,在测试向量中有一个确定的值(0或1)与之对应,即该组中所有的扫描触发器都将被置为这个值。在测试过程中,对于每一个测试向量,按照如下方式置入电路将电路置为测试状态,即图2中的test信号为1。在第一个时钟节拍,需要从原始输入端置入扫描森林中最后一层中各个组的值。从测试向量中分离出这些值,按照最后一层中每一个组所对应的原始输入线号,分别将这些值赋给这些原始输入。当置入本次向量的时钟的第一拍到来时,这些值由原始输入端被送进与之相连的第一层的各个扫描触发器中。如果最后一层中组的个数小于原始输入的个数,则剩下的不需要赋值的原始输入端为任意取值,即保留原来的赋值不变。
在第二个时钟节拍,需要从原始输入端置入扫描森林中倒数第二层中各个组的值。从测试向量中分离出这些值,按照倒数第二层中每一个组所对应的原始输入线号,分别将这些值赋给这些原始输入。当置入本次向量的时钟的第二拍到来时,这些值由原始输入端被送进与之相连的第一层的各个扫描触发器中。同时,第一层中所有内部触发器结点的值将送入与之连接的第二层中各个扫描触发器中。
依次类推,在第level(level为扫描森林的层数)个时钟节拍,从原始输入端置入扫描森林中第一层(即与原始输入直接连接的一层)中各个组所需的值。从测试向量中分离出这些值,按照第一层中每一个组对应的原始输入线号,分别将这些值赋给这些原始输入。当置入本次向量的时钟的第level拍到来时,这些值由原始输入端被送进与之相连的第一层的各个扫描触发器中。同时,第二至level-1层中所有内部触发器结点的值将送入与之连接的下一层中各个扫描触发器中。
此时,扫描森林中所有的扫描触发器已经被置为测试向量中所提供的值。这一个过程需要level个时钟节拍。然后将电路转为正常工作状态,即图2中的test信号置为0,所有的扫描触发器都被赋为某个确定的值,同时将原始输入对应于该测试码的值置入到原始输入。这一过程主要为组合电路的工作,因此会在一个时钟节拍内完成。该测试码的测试响应在该测试周期结束时存于所有的扫描触发器内。此时扫描森林中各个扫描触发器均被置为组合电路工作后产生的新响应值。这时就完成了一个测试向量置入的过程,总共需要level+1个时钟节拍,其中level个时钟节拍为置入向量,一个时钟节拍为接收响应。再将电路置为测试状态,重复上述过程。在置入测试向量的同时,扫描触发器的测试响应被移出到异或树和对应扫描触发器的后继。对于下一个要置入的测试向量,每一个时钟节拍到来时,在移入新的测试向量的同时,将上一个测试向量所产生的响应逐次移出扫描森林,在扫描输出端接收这些响应。
完全扫描的设计方法是将电路中所有的触发器都转化为图2中所示的扫描触发器结构,这样电路中所有的时序单元都变成完全可控且可观测。原本的时序电路测试问题就转化为简单的组合电路的测试问题。但是,尽管完全扫描设计可以达到很高的故障覆盖率,它所带来的高额的面积开销、测试时间等问题往往也是无法忍受的。我们可以通过部分扫描设计的方法来解决这一问题。部分扫描设计只扫描所有触发器集合中的一部分,即将一部分触发器转化为扫描触发器。将扫描森林的结构应用于部分扫描设计上,可以获得接近于扫描设计的故障覆盖率和测试效率,同时又能降低测试时间、面积开销以及功耗,甚至可以将部分扫描设计的测试代价(测试时间、面积开销等)降至非扫描设计的水平。
部分扫描设计的过程分为以下几个步骤(1)计算电路在完全扫描设计下的可测度。
电路的可测度分为可控度和可观测度。我们所研究的电路均为逻辑级同步时序电路,电路中所有的信号线都有三种取值0、1和×(don’t care)。电路中的基本单元为非门,与非门,或非门,与门,或门和触发器。电路中的一个信号线赋值为(A,v),即节点A被赋值为v,这里v∈{1,0,×}。一个输出为y的门,其非控制值v定义为y的值只能当所有输入全部置为v时才能决定;而只要任意一个输入信号的值被置为控制值时,输出信号y的值就可以被确定。例如,与门的控制值和非控制值分别为0和1。
我们在计算电路的可测度时,考虑了电路中的信号线在满足赋值要求时可能产生的冲突情况。首先给出几个定义定义1信号线赋值时产生的冲突定义如下信号线l被置为值v,它还需要在同一时钟周期内置为另一值v’。如果v和v’的交集产生一个新的可取赋值,则l置为v∩v’;否则l处产生冲突。
通常,冲突发生在电路中的扇出源处。当所有的赋值都是必要时,冲突的发生表示该故障不可检测;否则,该故障可以通过回溯检测到。
定义2电路中一条路径的反向奇偶性定义为路径反向次数模2。两个节点之间的反向奇偶性invv(A,B)(v∈{0,1})定义为从A到B上最易满足信号要求(即测度值最小)的路径上的反向奇偶性信息。
从节点A到B的反向奇偶性invv(B,A)由一个两位二进制数来表示(1)00,(2)01,(3)10,(4)11,其含义分别为(1)从A到B不存在路径,或是为了满足信号赋值要求(B,v),不需要在节点A处有信号要求。(2)从A到B上最易实现赋值要求(B,v)只经过反向奇偶性为奇的路径。(3)从A到B上最易实现赋值要求(B,v)只经过反向奇偶性为偶的路径。(4)从A到B上最易实现赋值要求(B,v)至少分别经过反向奇偶性为奇和反向奇偶性为偶的路径。
定义3从扇出源s到信号线l的可测性时序深度seqv(l,s)(v∈{0,1})定义为为了满足从l到扇出源s的信号要求(l,v)所需最少的时钟周期数。
信号线l的i-可控性Cl(i)应当反映潜在冲突数目(或是引起冲突的可能性),或满足赋值要求(l,i)所需的时钟周期数,这里i∈{0,1}。一个故障的最易故障效果传播路径(EFEP)定义为将这个节点上的故障效应传播至原始输出最容易的路径。这里,最容易的路径指的是可观测度最小的路径。我们针对不同的故障效应D或D定义了不同的可观测度。其中信号线的赋值为D表示电路在无故障时信号线取值为1,有故障时取值为0;信号线的赋值为D表示电路在无故障时信号线取值为0,有故障时取值为1。信号线的EFEP路径可以按如下方法获得如果该节点只有一个后继,则将该后继加入EFEP路径;否则,将可观测度最小的扇出分支加入到EFEP路径上。上述过程一直持续到到达原始输入为止,这就构造出了该故障的EFEP路径。V-可观测度OA(v)(v∈{D,D})反映了沿着EFEP路径传播一个故障效应v所产生的冲突数目(或引起冲突的可能性),或是所需的时钟周期数。
在计算一个电路的可测度的同时,也要计算电路中信号线和路径的反向奇偶性和可测性时序深度。
算法(反向奇偶性和时序深度的计算)1)如果信号线l为扇出源s(或s’)的一个扇出分支,这里s’是s后继的一个扇出源。
2)如果信号线l为一个非门的输出,非门的输入信号是i,这里v∈{0,1}, seqv(l,s)=seqv‾(i,s)]]>3)如果信号线l为一触发器的输出,触发器的输入信号为i,这里v∈ {0,1}invv(l,s)=invv(i,s)seqv(l,s)=seqv(i,s)+14)如果信号线l为一个与门或者或门的输出,输入信号为i1,i2,...in,这里v1为所有的输入信号均置为非控制值时门的输出值,v2为其中一个输入信号置为控制值时的输出值。
invv1(l,s)=invv1(i1,s)∨...∨invv1(in,s)这里“∨”为按位或操作。
invv2(l,s)=invv2(i,s)seqv1(l,s)=max(seqv3(i1.s)...,seqv3(in,s))seqv2(l,s)=seqv4(i,s)这里i为最容易将门的输出l控制为v2的输入信号。
5)如果信号线l为与非门或是或非门的输出,其输入信号为i1,i2...in,v1,v2∈{0,1}定义同上,我们有
invv2(l,s)=invv2‾(i,s)]]>这里i为门l的输入中最容易控制为控制值的输入信号。seqv(l,s)的计算同4)。
我们按照如下方法计算电路的测度。首先计算电路的可控度。电路中信号线y的可控度分为0可控度Cy(0)和1可控度Cy(1)。考虑一个两输入的与门,输入信号为A,B,输出为y,Cy(0)=min(CA(0),CB(0))Cy(1)=CA(1)+CB(1)+p这里p=10*n,n为扇出源s满足inv1(A,s)!=inv1(B,s)且任一值均不为00,并有seq1(A,s)=seq1(B,s)的个数。当y为一个或门的输出,输入信号为A和B时,我们有,Cy(0)=CA(0)+CB(0)+pCy(1)=min(CA(1),CB(1)p的定义同上。当y为反相器的输出,输入信号为i时,我们有Cy(v)=Ci(v)‾]]>这里1=0,0=1,v∈{0,1}。考虑一个触发器,输入为i,输出为y,我们有Cy(v)=Ci(v)+10 (v∈{0,1})当触发器为扫描触发器时,触发器的输出端完全可控制,相当于一个原始输入端,则Cy(v)=0 (v∈{0,1})其他类型的门计算方法类似。
接下来计算电路的可观测度。可观测度的计算是假设故障效应沿着最易故障效应传播路径来传播的。我们仍然沿用反向奇偶性的概念来计算可观测度。我们考虑EFEP路径上两个扇出源之间敏化线的信号赋值依赖关系,反向奇偶性和时序深度是分析潜在冲突的两个重要因素。
可观测度的计算方法如下。l为电路的原始输出,则Ol(v)=0,v∈{D,D}。考虑沿着EFEP路径传播的故障效应。潜在的冲突发生在EFEP路径上两个相邻扇出源之间。注意由于可观测度是从输出到输入一步一步计算的,因此考虑了冲突的测度在计算中是可以得到的。如图4所示,考虑沿着路径c-e-g-i传播的信号线c处的固定0故障s-a-0,信号赋值要求(a,1),(d,1),(f,0)和(h,1)可能会在扇出源s处产生冲突。我们可以按如下的方法得到故障传播中产生的冲突数目。首先,我们来检验敏化路径的反向奇偶性,信号要求(a,1)是否会与任一赋值要求(d,1),(f,0)和(h,1)产生冲突。这一比较并不复杂,只需要利用曾经在计算可控度中计算过的反向奇偶性和时序深度的值即可。因此我们可以得到信号线c的可观测度,如下Oc(v)=Oi(v)+Cd(1)+Cf(0)+Ch(1)+p这里p=n*10,n为从c到i传播故障效应时所产生潜在冲突的数目。令l为触发器的输出端,输入为i,则Oi(v)=Ol(v)+10v∈{D,D}当触发器为扫描触发器时,触发器的输入端完全可观测,相当于一个原始输出端,则Oi(v)=0v∈{D,D}(2)部分扫描触发器的选择根据(1)中所计算的完全扫描设计电路的可控度和可观测来选择非扫描的触发器。对于任一扫描触发器,若将其恢复成非扫描状态,由于失去了原有的完全可控性和可观测性,会影响其后继单元的可控性和可观测性。若其影响的范围和程度很小,则可以作为非扫描的时序单元。选择的过程如下a)任取一个扫描触发器,其原本输出信号的0可控度和1可控度均为0,输入信号的可观测度也为0。将其恢复成非扫描状态,此时输出信号的v可控度(v∈{0,1})变成输入信号的v可控度加10;输入信号的可观测度变成输出信号的可观测度加10(参照(1)中触发器可控度和可观测度的计算方法)。由于触发器的可控度和可观测度变差,会影响其后继单元的可控度和前驱信号的可观测度变差。分别跟踪这两种取值的变化。对于触发器的每一个后继单元i,观察其可控度的变化情况,若可控度变差,则记录其可控度变化的值ΔTi,同时记录这个单元,以便观测该单元的后继单元可控度的变化情况;若某个后继单元的可控度不发生变化,则不再考查其后继单元。按照上述策略观测触发器的所有直接和间接的后继单元,直到到达原始输出端或者没有任何单元的可控度变化为止。将所有这些可控度的变化值ΔTi累加,作为这个触发器的可控度影响增益值GainC。同理可以计算触发器的可观测度影响增益值GainO,则触发器i的影响增益值Gain为Gain(i)=GainC(i)+GainO(i)b)按照a)中的策略对于每一个扫描触发器都计算出其影响增益值,然后从中选择出影响增益值最小的触发器,将其恢复成非扫描状态,即恢复为原电路中的时序单元,并从扫描触发器集合中去除。
c)按照(1)中的算法重新计算电路此时的可测度。重复步骤a),再次选择非扫描触发器,直到达到所需的非扫描触发器的数目为止。非扫描触发器的选择数目通常要考虑对于故障覆盖率的损失和面积开销的减小。
(3)选择完所需的非扫描触发器后,将余下的扫描触发器构造成“扫描森林”结构。与完全扫描不同的是,在构造扫描森林时,当两个扫描触发器发生汇聚时,还需要检验它们各自在汇聚的路径上经过的非扫描时序单元数目。若经过的非扫描时序单元数目不一致时,也认为它们在结构上是不汇聚的,从而可以归为同一个组。按照这种策略,可是使部分扫描的测试时间较完全扫描有所降低。
(4)测试向量的置入过程和完全扫描基本一致。
相对于完全扫描,部分扫描设计的主要优点是在基本保持故障覆盖率的同时,降低了硬件开销并且进一步降低了测试时间。
测试时间、面积开销和测试功耗的估算(1)测试时间测试时间分为测试码置入时间和接收测试响应的时间。对于扫描触发器数目为n,原始输入数目为m,组数为ngroup,扫描森林的层数为nlevel,测试向量总数为k的情况时,测试时间T为T=k×(nlevel+1)+nlevel由于扫描森林的结构使测试向量置入的时间较以往的扫描设计大大降低(只需nlevel+1个时钟节拍)。对于规模较大的电路,本发明的优势就更为明显。测试时间被降低到非扫描可测试性设计的级别。
(2)面积开销我们采用Synopsys的标准单元库class.lib来估算面积开销。面积开销分为两个部分将一个触发器改为扫描触发器需要在其输入端加入一个二选一的多路选择器,其面积开销为1×n(n为扫描触发器的个数);将所有的叶结点连到异或树上,每增加一个叶结点则需要增加一个两输入异或门,其面积开销为(n-m)×3(n为扫描触发器的个数,m为异或树的个数)。采用完全扫描时,面积开销大约在10~20%。采用部分扫描时,由于扫描触发器数量的减少,使得异或树的规模减小,从而使面积开销缩减为10%以下,接近于非扫描设计。
(3)测试功耗测试功耗为电路在进行测试时所产生的功耗,分为以下三个部分测试向量置入扫描触发器时,触发器的翻转所引起的功耗;扫描触发器由于置入新的值,导致其后继的组合电路翻转所引起的功耗;当置入一个测试向量后接受响应时,整个组合电路翻转所引起的功耗以及扫描触发器接收了新的响应后,发生翻转所引起的功耗。这里采用了以下技术来估算功耗。对于组合电路,结点翻转数目NTC为NTC=∑NG×Gloadfor all gates G其中NG为所有输出信号翻转(0→1或1→0)的门的个数,Cload为负载电容,这里等于组合单元门的扇出数目。对于触发器,当其输出信号翻转时(0→1或1→0),翻转功耗计为6,不翻转时(0→0或1→1)为2。功耗的降低和测试时间有很大的关系。由于扫描森林结构使得测试时间大大降低,相应的测试功耗也较以往有大幅降低。对于所有规模较大的电路,测试功耗均达到了非扫描测试的程度。
如图5所示,对于该电路进行完全扫描森林结构的扫描设计。扫描触发器5,6,7的后继单元集合分别为{15,16,17,18}、{9,11,12,14,15,16,17,18}以及{10,13,19}。由于触发器5和6有相同的后继单元15,即在或非门15处发生汇聚,因此不能归为一组。而触发器7与5和6都没有发生汇聚,因此可以把7和5划分为一组,6单独为一组。设计后的电路如图6所示。扫描触发器5和1由共同的信号原始输入1来进行扫描输入,扫描触发器6由原始输入2来进行扫描输入。电路中的3个扫描触发器被分成2组,由于组的数量小于原始输入的数目,因此构造出的扫描森林只有一层。扫描触发器5,6和7都属于叶结点,将其连接至异或树后由扫描输出(scan-out)端输出。
对图6所示的电路进行测试生成。此时的电路为完全扫描设计,因此测试生成也简化为组合电路的测试码产生。对于每一个测试向量,由于扫描森林的层数为1,因此只需一个时钟节拍就可将测试向量通过扫描输入置入扫描触发器中。相比之下,单链结构的完全扫描设计需要3个时钟节拍才能置入一个测试向量。因此,扫描森林的设计结构将测试时间缩短了2/3,同时避免了额外的硬件开销,即额外的扫描输入端。
对于规模较大的电路,扫描森林的设计对于降低测试时间、测试功耗以及管脚开销等方面的优势更为明显。图7为s38417进行完全扫描森林设计后的结构示意图。如图所示,每棵树的根结点处标明了组的编号,后面括号中的数字为这个组中的扫描触发器个数。在对扫描触发器进行分组后,s38417中的1636个扫描触发器共分成100组,由于s38417的原始输入为28个,则扫描森林的层数为[100/28]=4层,即只需要4个时钟节拍就可以将扫描向量置入扫描触发器内,比完全单链扫描的1636个时钟节拍下降了99%以上!同时测试功耗也有超过99%的降低。
对图5中的电路进行部分扫描设计,设计后的电路如图8所示。首先对该电路进行完全扫描设计,将所有的触发器改造为扫描触发器。将每个扫描触发器分别恢复为非扫描状态,考查每个扫描触发器由于恢复为非扫描状态而对电路可测性的影响,计算出各自的影响增益值。从计算中可以得到,当把扫描触发器5恢复为非扫描状态后,其影响增益值最小,即对于电路可测性的影响最小,因此将触发器5恢复为非扫描状态。触发器6和7保持扫描状态。将扫描触发器6和7按照构造扫描森林的规则进行判断,扫描触发器6和7在结构上不发生汇聚,因此可以并为一组。将触发器6和7都连接至原始输入端1,部分扫描森林的构造完毕。最后将叶结点触发器6和7连接至异或树,即将6和7异或,异或门的输出为扫描输出,如图8所示。对图8的电路进行测试生成,计算出的故障覆盖率和完全扫描森林的结果一样,均为100%。由于扫描森林的级数没有改变,因此测试时间也同完全扫描森林设计一致。然而由于扫描触发器的数目和异或门的数目减少,使得部分扫描森林设计的面积开销降低为完全扫描森林设计的60%左右,测试功耗的降低幅度也大致相同。
表一和表二分别给出了ISCAS89电路在进行了完全扫描森林和部分扫描森林设计后的测试生成结果。其中#FF表示触发器的个数,FC表示故障覆盖率(以百分比形式给出),#HF表示难测故障的数目,vec表示测试向量的数目,tm表示完全(部分)扫描森林结构的测试时间与完全(部分)单扫描链结构的测试时间之比(以百分比形式给出),po表示额外输出管脚数目,ao表示面积开销(以百分比形式给出),pw表示完全(部分)扫描森林结构的测试翻转功耗与完全(部分)单扫描链结构的测试翻转功耗之比(以百分比形式给出)。表二中的sff为部分扫描时扫描触发器的个数。
由表一中可以看出,运用完全扫描森林设计后的电路,和完全单扫描链设计相比较,在基本保持了原有的故障覆盖率的同时,测试时间、测试翻转功耗都有了大幅度的降低。特别是对规模较大的电路,其降低幅度均在95%以上。加入了异或树结构后,除了s35932和s38417,故障覆盖率基本保持了原有的水平。但是面积开销的问题没有得到解决。在运用适当的策略选择部分扫描触发器后,如表二所示,面积开销降低到了原电路的10%以下,同时故障覆盖率的降低程度均控制在2至3个百分点内。测试时间、测试翻转功耗也较单扫描链部分扫描设计有了大幅的降低。由此看来,扫描森林结构在保证高故障覆盖率的同时,使扫描设计的测试代价降低到了非扫描设计的水平。
表一运用完全扫描森林结构的ISCAS89电路的实验结果

表二运用部分扫描森林结构的ISCAS89电路的实验结果

权利要求
1.具有非扫描设计测试代价的扫描设计,含有把电路中的时序单元转化为可控制和可观测的单元,并将这些时序单元连接成一个或多个移位寄存器,构造成一条或多条扫描链,从而把时序电路的测试码生成转化为组合电路测试码生成问题的步骤,其特征在于它是基于“扫描森林”式扫描设计结构的一种具有非扫描设计测试代码的扫描设计方法,对于扫描触发器群F1,1,F1,2,……,Fk,c构成的时序单元而言,它把电路的原始输入端SI1,……,SIk同时作为“扫描森林”中各个扫描树的根结点,以便当电路处在测试状态时作为扫描输入Scan-in,用来置入扫描测试向量,它按照两个扫描触发器是否在电路结构上发生汇聚的原则,在每个原始输入端SIi的后继连接了一组不会在电路结构上汇聚的,即没有任何一个相同的后继单元的扫描触发器,接着在这一组扫描触发器F1,1,F1,2,……,Fk,c中任选一个扫描触发器作为下一层的根结点,用于连接下一组符合上述特征的触发器组F1,1,F1,2,……,Fk,c,依此类推,把所有扫描触发器分组并连接到“扫描森林”中的某个结点上,以构造成“扫描森林”;具体而言,上述具有非扫描设计测试代价的扫描设计方法依次含有如下步骤(1)初始化设初始状态为电路中所有的扫描触发器均未被分组,它们构成一个集合F(F={f1,f2,……fn});(2)首先建立一个空的新组Gi,任取F中一个扫描触发器fi加入Gi,作为Gi的第一个成员,即Gi={fi},并将fi从F中去除掉;(3)根据现有的判断是否会发生上述汇聚现象的技术判断F中所有的扫描触发器,逐个地选择出全部满足不会和Gi里的所有触发器在电路结构上汇聚的扫描触发器加入Gi,再把这些触发器从触发器群F中去除掉,以构成一个完整的组Gi;(4)再建立一个新组Gi+1,任取触发器群F中一个扫描触发器作为新组Gi+1的第一个成员,再按照步骤(3)中的判断方法构造出Gi+1;(5)依此类推,把所有扫描触发器归入各自的组,把触发器群即集合构造为组的集合;(6)按照宽度优先的方法构造“扫描森林”,即把上述构造的各组依次连接到原始输入即扫描输入上,从而构造出“扫描森林”结构,其步骤如下当电路原始输入端的数目k大于或等于扫描触发器组的组数g时,则从k个原始输入中任选g个,使每一个原始输入端连接一个扫描触发器组即可;当g>k时,从扫描触发器组g中任选k个组分别连接到每一个原始输入上,但每个原始输入只能连一个扫描触发器组,构成扫描森林的第一层;再从剩下的(g-k)个组中选出k个,再从第一层的每一个扫描触发器组中任选一个扫描触发器作为根结点,连接这k个组中的任意一个扫描触发器组,构造出扫描森林第二层;依次连接剩下所有的组;(7)所有叶结点将被两两异或,构成一个或多个异或树,最后连接到MISR(多输入特征分析器)上作为扫描输出。
2.根据权利要求1所述的具有非扫描设计测试代价的扫描设计而提出的测试向量置入法,其特征在于,它依次含有如下步骤(1)把原始时序电路中的触发器构造成“扫描森林”;(2)根据上述“扫描森林”修改原电路的结构,产生扫描设计电路的结构;(3)将产生的新电路用已知的测试生成工具进行测试生成,再算出电路必要参数的同时得到一组由原始输入端输入的扫描测试向量,每一个测试向量的长度为组的数目+原始输入的数目,对于“扫描森林”中的每一个组,在测试向量中有一个确定的值(0或1)与之对应,即该组中所有的扫描触发器都将被置为这个值;(4)电路置为测试状态,对于每一个扫描测试向量按以下步骤置入电路(4.1)在第一个时钟节拍,从原始输入端置入“扫描森林”中最后一层内各个组的值;(4.2)在第二个时钟节拍,从原始输入端置入“扫描森林”中倒数第二层内各个组的值,同时正数第一层中所有内部触发器结点的值将送入与之连接的第二层中各个扫描触发器中;(4.3)依次类推,在最后一个时钟节拍,从原始输入端置入“扫描森林”中正数第一层内各个组的值,使得“扫描森林”中所有的扫描触发器已经按组被置为扫描测试向量中所提供的值。
3.根据权利要求1所述的具有非扫描测试代价的部分扫描设计,其特征在于在构造“扫描森林”时只把电路中的一部分触发器转化为“扫描森林”内的扫描触发器结构以获得接近于完全扫描设计的故障覆盖率和测试效率,它依次含有以下步骤(1)先把任一扫描触发器恢复成非扫描状态,再遍历其直接后继单元,若其可测度(包括可控度和可观测度)发生了变化,则记录变化的值,同时记录这个单元的后继单元,一直搜索到不再有可测度变化的单元或者到达原始输出为止,把所有的值累加作为这个扫描触发器所影响的范围;(2)对于每一个扫描触发器都进行上述步骤(1),从中选择影响值最小的触发器作为非扫描时序单元,在电路中将其恢复为非扫描状态;(3)按步骤(1)、(2)选择出所需数目的非扫描时序单元,同时在每选出一个非扫描时序单元后更新电路的可测度;(4)把按上述步骤选出的非扫描时序单元恢复成非扫描状态,并从扫描触发器集合中去除,把余下的扫描触发器构造“扫描森林”;在构造“扫描森林”时当两个扫描触发器发生汇聚时,若经过的非扫描时序单元的数目有异时,它们在结构上是不汇聚的。
全文摘要
具有非扫描设计测试代价的扫描设计及测试向量置入方法属于集成电路可测试性设计技术领域,特征在于它是“扫描森林”式的,把原始输入端同时作为各扫描树的根结点,以便在测试时作为扫描输入置入测试向量,再在每个原始输入端的后继按照两个触发器没有任何一个相同的后继单元原则连接了一组触发器,再在其中任选一个触发器作为下一层的根结点,连接下一层符合以上原则的另一组触发器,依次类推,把它们连接到“扫描森林”中某个结点上形成“扫描森林”;同时把这种结构用在部分扫描设计上。它获得了很高的故障覆盖率和测试效率,同时部分扫描设计又能降低测试时间、面积开销及功耗,甚至可以把部分扫描设计的测试代价降低至非扫描设计的水平。
文档编号H01L21/82GK1512560SQ0215993
公开日2004年7月14日 申请日期2002年12月30日 优先权日2002年12月30日
发明者向东, 孙家广, 陈明静, 顾珊, 向 东 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1