3.4.3 Deductive Fault Simulation(演绎故障仿真)
演绎故障仿真是一种非常不同于前面两种的仿真方法,它是基于逻辑归因,而不是仿真。
演绎故障仿真非常快,因为它只需要仿真fault-free的电路即可。
下图是个例子,具体的推导过程需要的时候看原文,很好理解:

deductive fault simulation的优点是:用一个test pattern在一次fault list propagation pass中就可以检测到所有故障。
虽然这个例子里面没有提到故障坍塌,但是实际操作中需要先进行故障坍塌再去用这个方法仿真。
用test pattern P2和P3仿真,在输出K能检测到的故障如下面两图,和P1各有不同:

下图是deductive fault simulation的流程图,和前面两个类似:

在上面的例子里面涉及到的gate只是两输入的,但同样的方法也可以用在多输入gate上,有相关公式,作为拓展阅读再看吧。
deductive fault simulation的优缺点:
- 优点:可以同时处理所有故障
- 缺点:
- 未知的值不好处理,在文献中有详细讨论
- 只适合用在zero-delay的时序模型中,仿真过程中是不考虑时间信息的
- 存储管理问题,fault list的大小是不可预测的,可能在算法执行过程中占用大量空间
3.4.4 Concurrent Fault Simulation(同时性的故障仿真)
Concurrent fault simulation:good电路和faulty电路其实不一样的地方只局限在一小个区域内,所以这个仿真只仿真这些区域。他是一种fault-free和faulty电路一起仿真的基于事件的仿真方法。
几个概念:
- concurrent fault list:每个门都有这么一个list
- bad gates:里面包括了bad gates,就是bad门的名称和值,和演绎仿真相似
- local faults:是指当前这个门的值,输入输出值都被标记上
下面还是用电路N举的例子,用到pattern P1,假设A stuck-at one, C stuck-at zero, and J stuck-at zero,但只能检测到A stuck-at one(具体过程需要时候看原文):

下面紧接着用pattern P2,如下图,在P1的基础上叠加,这次P2能检测出C stuck-at zero:

继续,叠加pattern P3,如下图(不能被检测到的bad gate会被对应门的concurrent fault list删掉,就是画叉的),这次能检测到J stuck-at zero:

concurrent fault simulation的测试流程也是类似,如下图:

直到所有的pattern都被测试过或者所有fault都被检测过。