Fault Classes
除了上文提到的UT外,Fault还有另一大类也是我们更加关心的一类TE,即可以检测到的fault。工具在计算test coverage时并不会将UT计算进去,而是计算detect到的fault的数量以及可能detect到的fault占所有fault中除去不可测试的fault的比值,所以提高coverage主要从AU、UD入手。全部Fault的关系如下图所示:
TE(testable)
DT(detected)
所有ATPG可以检测到的fault都被归为DT,主要包括以下两类:
- DI(detect implication)
使用write_pattern产生的pattern就可以将这些点cover到,不需要专门针对这些点产生test pattern,工具在执行scan chain分析时就发现的fault,通常是扫描链中的fault。 - DS(detect simulation)
当工具进行fault simulation时检测到的fault归为DS,此时对产生的pattern去看fault simulation的结果,对比good circuit和actual circuit的simulation的结果,如果不同则说明这个fault可以被detect到。
Scan chain能cover到的都是DI类型的fault,推的pattern能cover到的是DS类型的,DT=DI+DS。
另外针对path delay的测试还会有以下两类:
- DR(robust detected faults)
鲁棒性检测,来检测电路容忍噪声的能力。 - DF(functionally detected faults)
功能性检测,放宽了对路径门控的要求,既不需要像鲁棒性测试那样稳定,也不需要像非鲁棒性测试那样在capture阶段敏感,只要求门控输入不阻碍沿路径传输的转换。
PD(possible detected)
在fault simulation中可能被检测到又不一定被检测到的fault,比如multi-driven的情况,一个点有两个输入,一个输入是0/1不确定的,另一个是1,那么这个点可能是1/X,可能能测到fault也可能测不到。
默认情况下会设定50%的概率用来计算,如果想要更改可以通过set_possible_credit命令来修改。
- PT(possible detect testable)
潜在的可检测到的fault。 - PU(possible detect untestable)
ATPG untestable和难以检测的fault。
AU(ATPG untestable)
ATPG无法产生检测到这部分fault的pattern,但又不能证明这部分fault是冗余的,会将这种test point归为AU。引起这部分情况的原因有很多,通常是约束引起的,约束阻止ATPG去产生pattern检测到这部分fault,或者是针对non-scan cell设定的clock sequential depth不足等等。
UD(undetected)
- UC(uncontrolled)
在test pattern生成之前,所有的testable fault都被定义为UC,无法将特定fault设置为需要状态的点也会被设为UC。 - UO(unobserved)
如果在fault point不能被propagate到一个可观测的点会被归为UO,如果一个点既不可控又不可观测会被归为UC。