SCAN设计是DFT设计中最常用的一种方法。它是指将电路中的普通触发器(flip-flops)替换为具有扫描能力的扫描触发器。扫描触发器最常用的结构是多路器扫描触发器,即它在普通触发器的输入端口加上一个多路器如图所示。当S=0 时,触发器为正常的功能输入,而当S=1 时,触发器为扫描输入。
基于SCAN设计分为两种:全扫描以及部分扫描。全扫描设计是指将电路中所有的触发器替换为扫描触发器并将它们连在一起构成扫描链,如图所示。图中,椭圆代表组合电路,长方形代表时序单元。左图为没有扫描链,右图为带有一条扫描链的全扫描设计。
部分扫描设计则是将电路中的部分触发器替换为扫描触发器并将它们连在一起构成扫描链。部分扫描一般不用在那些关键的数据通路上,因为这些数据通路速度快,对延时的要求很高,而扫描替换增加了延时,故这些路径上的时序单元不进行扫描替换。
一、Stuck-at故障模型
1. 固定故障模型(stuck-at faults)
固定故障模型主要反映的是电路中某个节点上的信号不可控性,也就是说在电路正常工作过程中该节点电平始终固定在某一个值。如果固定在高电平上就称之为固定1 故障(stuck-at-1),如果固定在低电平上就称之为固定0 故障(stuck-at-0)。
2. 固定故障测试(stuck-at testing)
基于固定故障模型的测试就是固定故障测试。固定故障测试有一个重要的假设,那就是单故障假设,即在分析、评估和诊断的任何时间都只存在一个故障;这一假定降低了分析的复杂性。固定故障测试的原理如图所示。
固定故障测试主要分两步:
敏化通路(sensitive path):在输入端口上加上适当的激励信号使得故障点的信号可以在没有阻碍地到达输出端口。
激活故障,并传送故障至输出端口。
这个过程如下图所示。
假定E 点有一个固定0 故障,要辨别E 点是否有固定0 故障,必须要使E 点电平为1,并将E 点为1 的电路操作传送到Z。
敏化通路:为了使E 点故障被传送, 必须 D 点为1,这样F=0,要使F=0 传送到Z,则G=0,要使G=0,则A=0,B=0,于是A=0,B=0,D=1 就是通路敏化的条件。
故障激活并传送:为了激活故障,则C=0。这样在E点无固定0故障时Z=1,如果有固定0故障时Z=0。
这样,测试E点的固定0故障的测试向量就为:ABCD=0001。
二、Transition故障模型
1. 跳变故障模型(transition fault)
跳变故障模型主要验证电路的时序关系,即电路中的门延时。也就是说在电路正常工作过程中该节点电平变化太缓慢以至于电路工作不正常。与固定故障模型相似,它也有两个故障模型即慢下降模型(slow-to-fall)对应于固定1 故障;慢上升模型(slow-to-rise)对应于固定0 故障。
2. 跳变测试(transition testing)
基于跳变故障模型的测试就是跳变测试。与固定故障测试类似,跳变测试也有所谓的单故障假设。
与固定故障测试不同的是跳变测试在测试一个故障时需要两个向量,一个是初始向量(initialization vector),一个是跳变向量(transition vector)即所谓的向量对(vector pairs):初始向量的作用是建立故障传送的通路(敏化通路),并设置故障点的初始值;跳变向量设置故障点期望的跳变值。对于上图的电路,初始向量为:ABCD=0011,跳变向量为:ABCD=0001。
为了检测故障,在施加跳变向量后的适当时间进行响应检测。相应的跳变测试需要以下四部:
施加初始向量
施加跳变向量,启动一次跳变
等待适当时间
在输出端口检测响应,抓取跳变的结果