为了把故障传播到外部输出端,要有两个条件:
(1)输入测试向量应能够使得故障点g在正常情况下与故障情况下状态值不同。称为故障敏化。
(2)有至少一个外部输出端的正常值与有故障时的值不同。为了能做到这一点,要求从故障点出发能找到一条或几条路径到达输出端,使该路径上每个节点的正常值与有故障时的值不同。这条路径称为敏化路径(Sensitized
Path)。
ATPG的目的就是要找到一个测试向量或测试系列,使得故障点的故障至于正常值不同,同时使故障点到输出之间的路径上各点其有故障时的值与无故障时的值都不同。因为如果在该路径上某一点一旦值相同,就不能保证输出端的值也不同。本例因故障点g有故障值为'1',
要求其正常值为'0'。即要求输入向量使得g的状态值为'0'。同时,在给定的测试向量下,
通过寻找敏化路径来求测试集的方法称为敏化路径法。
敏化路径法的一种最简单的方法是单路径敏化法。
我们把正常情况下为'0',故障情况下为'1'的信号线状态值记为'0/1' ;同样把正常为'1',有故障时为'0',记为'1/0'。在图7.7中,因为g点的故障为gs-a-1,故该点的敏化值应为'0/1'。
当与门的一个输入端的值为'0/1'(或'1/0'),要想使它传播到其输出端,只要把该与门的其它输入端置为'1' 即可。类似地,各种门传播故障的条件为:
非门:均可传播;
与门、与非门:其它各端置'1';
或门、或非门:其它各端置'0';
异或门:另一端置'1'、置'0'均可。
读者可以思考:为什么会有这样的敏化条件?
这样,只要能满足这些条件,就可以依次对各个门进行敏化,直到到达外部输出端。从而形成了一条敏化路径。这个步骤称为正向操作。
由于在寻找敏化路径时给路径上各门其它端加了一些限制,需要根据这些值向输入端方向倒推,最后决定输入端的值。这个步骤称为反向计算。
在正向操作和反向计算过程中,都会遇到矛盾,这时要进行回溯,选其它路径再行计算。
在选择路径时,总是只选一条敏化路径,故这种方法称为单路径敏化法。
现在我们看图7.7的例子。首先敏化故障点g,其状态值为'0/1'。该信号有两个负载元件Y和Z。选Y作为敏化路径。因为Y是一个与门,应置另一输入端f为'1'。这样其输出端y的状态值为'0/1'。这是一个外部输出端,正向操作成功。
现在要求有一个测试输入,使得在正常情况下,g的值为'0',f的值为'1'。g为三与非门G的输出。g为'0'要求b、c、d的值均为'1'。但b为或非门F的输入端,b为'1',则F的输出端f的值只能为'0'。这与敏化Y所要求的f的值为'1'相矛盾。反向计算失败。
现在回溯到正向操作。不选Y而选Z 作为敏化路径。同样要求Z的另一输入端i的值为'1' ,z的输出状态值为'0/1'。i是或非门I的输出端,要求其输入端h和e同时为'0'。因d
为'1',使h必为'0',故只要选e为'0'即可。再看其余的信号端。b为'1'使f为'0',又使Y的输出y为'0'。而F的另一个输入端a的值无要求,记为'x'。这样所有的信号线上的值都已确定,且无矛盾,反向计算成功。
于是得到测试向量T = {(x, 1, 1, 1, 0); (0, 0)}, 其故障输出向量为(0, 1)。
当然,如果已开始就选择了Z而不选择Y,则本例不需要回溯。
|