4.10 ATPG FOR NON-STUCK-AT FAULTS
4.10.1 Designing an ATPG That Captures Delay Defects
现在的集成电路是时钟频率越来越快,但是尺寸却越来越小,导致电路在低频下能正常工作,一旦进入高频就无法正常工作,这种缺陷就是delay defect,即便stuck-at fault model可以检测出一些delay defect,但还是不够,所以人们又开发了一些别的故障模型,比如:
- transition fault
- the path-delay fault
- segment delay fault
这一节集中讨论path-delay fault,在这个故障中,有几个设定:
- path P:给定的延迟路径
- on-input:信号是这个,说明是路径P的输入信号
- off-input:信号是这个,说明不是路径P的输入信号,而是路径中的门的输入
故障类型有两种:
- rising fault:用上箭头表示(比如↑ g1 g4 g7是途经门g1 g4 g7的rising path)
- falling fault:用下箭头表示
这个dalay测试有三种方式:
- launch-on-capture (也叫broadside or double-capture):第一个n-bit的向量被scan进入电路中的n个scan flip-flops,这是在低速下完成的;然后用另一个时钟实现过渡;最后用全速时钟实现capture。第二个向量随后进入即可
- launch-on-shift(也叫skewed-load):还是一个n-bit的向量,它的前n-1比特向量先以低速shift进入电路,第n比特向量作为一个过渡,最后用全速时钟实现capture。第二个向量随后进入即可
- enhanced-scan:有一个向量对(V1, V2)被存储在tester memory里面,V1被load进入scan chain后立即被用于初始化电路,随后V2被scan in,然后立即用于capture。(这里用到了一个hold-scan design)
enhanced-scan这种方法比另外两种方法的故障覆盖率更高,但是它的代价是hold-scan cells的成本,因为它会增加芯片的面积,但是它的优点大于缺点,比如:
- 它可以防止组合逻辑引用正在shift的数值
- 增强了对失效芯片的诊断能力
- 需要的存储空间更小,也就是需要用到的向量更少
4.10.1.1 Classification of Path-Delay Faults
path-delay faults可以被分类成几种:
- statically sensitizable path:如果路径P的所有off-inputs,对于某些向量,都能和他们对应的noncontrolling values对应上
- statically unsensitizable path:如果路径P的所有off-inputs,都不能和他们对应的noncontrolling values对应上
- false path:传输无法从path的起始传到末端。false path通常都是statically unsensitizable的
下图展示了statically unsensitizable ↓ abce,因为在第二个向量上d不能是noncontrolling value,但是这个路径不是false的,因为传输可以由multi-path实现从a到e:

single-path sensitizable:这种情况要求路径P的off-inputs在两个向量种都被置为noncontrolling values,这是最严格的要求,所以符合这样要求的路径很少。可以在single-path sensitizability的基础上放松一些限制的条件,例如不必把所有的off-inputs都设置成noncontrolling values,用下图的例子来说明:

下降沿传递路径↓ bdfg是目标路径,在第一个向量中(下降沿的向量,第一个是1,第二个是0,很好理解吧),a和e可以放松条件,b的跳变沿还是可以传递到g,这是因为在第一个向量中(向量为1),b到d的传播不受a的影响,同样的f到g的传播也不受另一个信号影响。另一方面,需要c始终是保持1,因为要保证d到f的向量可传递。
robustly testable :以上这个路径就是robustly testable path,也就是说,上述路径的测试不受其他延迟故障影响。还用上面这个例子说明,图中a的两个向量是X和0,X也就是"don't care",如果这个X换成1,b的状态转换仍然会传递给d,因为d的状态转换取决于a和b两个转换中的更晚的一个,简单来说就是a的跳变延迟并不会影响到目标路径被探测到。(这里如果a真的晚于b的跳变,不就影响了目标路径的延迟了吗???)
由上面的例子,对于robustly testable path P,off-input的标准可以总结出两条规律:
- 如果P的on-input从controlling变化为noncontrolling,那么off-input的第一个向量就可以是"don't care"
- 如果P的on-input从noncontrolling变化为controlling,那么off-input的两个向量都得是稳定的一个noncontrolling value
robustly testable因为不用考虑其他路径的延迟,是一种很理想的情况,但是对于大多数的电路,这样的路径很少,因此,对于其他robustly untestable paths,要寻求有更少限制的测试。
再看一个下图的例子:

一个与门,假设a是on-input,b是off-input,按照上述robust sensitization的规则,如果a从noncontrolling变为controlling值,那么b就得是一个steady noncontrolling value,这样a就不受电路中other delay faults影响。但是如果这样的要求不能满足,就要适当考虑放宽条件,如果b的跳变不发生延迟,那么它就不必非得是一个固定值,也就是b可以是X1而不必须是固定的1,这种条件叫做nonrobust sensitization condition。
下图又展示了一个例子:

目标路径为↑ bcdf,它是robustly untestable但是nonrobustly testable(它显然是无法验证的,但是又非完全无法验证),在nonrobustly testable路径中,有些跳变可能会被丢失,比如跳变在f处就被丢失了。
那么对于nonrobustly testable path P中的off-input又可以总结出一条规律:
- off-input如果在第二个向量处是noncontrolling值,那么它的第一个向量就可以是X
还有更多关于path-delay faults的分类呢:
- validatable nonrobustly testable path-delay faults
- functional sensitizable path-delay faults
- multi-path-delay faults
- etc.
已经讲的这些都已经很多了(((φ(◎ロ◎;)φ))),竟然还有这么多分类🙄
4.10.1.2 ATPG for Path-Delay Faults
和stuck-at test generation相比,path-delay fault test generation有些不同:
- stuck-at test generation只需要一个向量,path-delay fault test generation需要两个向量,即一对向量
- path-delay fault test generation需要跳变在path的一开始就被launched
- path-delay fault test generation需要off-inputs的值满足要求
path-delay fault test generation的向量是一对,每一个都可以是0或1或X,所以有一个向量值系统,代表如下:
- S0---Initial and final values are both logic 0.
- S1---Initial and final values are both logic 1.
- U0---Initial logic can be either 0 or 1, but final value is logic 0.
- U1---Initial logic can be either 0 or 1, but final value is logic 1.
- XX---Both initial and final values are "don't cares."
这个系统中的这些值可以用布尔运算,运算法则如下面三个表,除了这三种运算外别的运算也同样适用:

有了这个5-valued system,ATPG算法就可以用来生成path-delay的测试了。
4.10.2 ATPG for Transition Faults
如果电路中所有的path都能robust tests,那么就不用做额外的工作,但是现实是很少的path是robust tests,很多小的延迟都藏在robustly untestable path或者less critical path中,这样这些延迟就会被漏掉。
transition faults有两种:
- slow-to-rise
- slow-to-fall
需要用到的一对向量是{V1,V2}:
- V1 (called the initial vector)
- V2 (called the test vector)
讲了两条引理和案例证明,但很晦涩。但是总结起来就是path-delay fault model丢失的故障只能通过transition fault model实现。
和delay fault models一样,transition tests也可以通过三种不同的方式实现:
- launch-on-capture
- launch-on-shift
- enhanced-scan