User Guide的劣质翻译,仅供参考。
如果你在初次ATPG后,对于测试覆盖率不满意,或者测试pattern过大,你可以对几个系统默认值进行调整,重新ATPG。
低测试覆盖率的原因
例如,工具的约束或者退出条件会导致低测试覆盖率,过早的终止ATPG也是一个原因。
您可以在deterministic test generation阶段检查工具打印的消息。这些信息会提示你redundant(RE) fault、ATPG_untestable (AU) faults以及undetected (UD) faults出现的原因。只要你理解要从何处提高覆盖率,就不必等到ATPG完成,直接Ctrl-C掉即可。
report_statistics命令提供了ATPG完成后的按故障类划分的测试覆盖率。report_faults命令提供了设计中故障的详细列表,并根据您的spec进行了自定义过滤。
Fault Classes
工具对于fault的分类,取决于这些fault是如何被检测到,或者为什么无法被检测到。每种fault有唯一的名称和两个属性code。当report faults时,工具会使用二者之一识别fault的种类。
工具可能将一个fualt划分到不同类别,取决于选择的fault type。
Untestable(UT)
UT意味着pattern无法检测或检测概率很低。UT faults不会造成功能性错误,所以工具在计算覆盖率时不会考虑它们。
因为工具在ATPG之前就获取了一些fault的信息,并将它们分类为unused ,tied或者blocked faults。当ATPG开始时,它会立即将这些faults分到正确的类别。然而,冗余故障需要进一步的分析。
以下是每种UT故障的列表:
1. Unused(UU)
这种fault意味着没有连接到电路中的任何可观测点,或者faults在浮空的primary output上。

2. Tied(TI)
意味着故障点的被tie到了stuck fault的值上,这有可能由以下原因造成:
- Tied signals
- AND和OR门拥有互补的输入
- XOR门拥有相同的输入
- 使用add_input_constraints命令添加了CT0、CT1的pin constraint,不会将C0和C1的constraint用于tied fault,而是用于ATPG_untestable(AU),后文会介绍。
下图展示了典型的tied fault:

3. Blocked(BL)
Blocked fault类包括那些被tied logic 阻塞而无法传到观测点的fault。是由tied fault衍生的fault。

4. Redundant(RE)
冗余故障包含那些test generator认为undetectable的故障。在test pattern generator耗尽所有pattern时,它会进行一个特殊的分析,来验证这些fault是不是在任何情况下都undetectable。下图展示了一个例子:

在本电路中,无论A、B和C的值是多少,信号G的值始终为1,如果D发生stuck-at-1故障,则无法检测到此故障,因为G的值永远不会改变,无论D的值如何。
这里与tie类型故障很像,本例中如果E和F后面直接接reg(观测点),则D的s-a-1是tie类型故障。
Testable (TE)
TE故障的定义是所有不可被证明为untestable的故障,包含如下种类:
1.Deteced(DT)
包含所有ATPG过程中识别到的detected的fault,包含如下两组:
- det_simulation(DS)——在进行fault simulation是检测到的故障
- det_implication(DI)——在进行learning analysis时检测到的故障
det_implication通常包含scan path电路中的故障,以及传播到扫描单元的移位时钟输入的ungated故障。扫描链功能测试在观测点检测二进制差异,保证了这些故障的检测。工具还将SDFF的MUX的sel上的scan enable信号stack-in-system-mode故障分类为DI。
工具提供了update_implication_detections命令,可以为det_implication指定额外的类型。
对于 path delay testing,DT类型故障包含另外两组:
- det_robust(DR)——robust detected faults。
- det_functional(DF)——functional detected faults。
2. Posdet(PD)
Possible-detected fault类型包含fault simulation识别到的所有possible-detected但不是hard detected的fault。
Possible-detected fault:good-machine仿真观测到0或1但fualty machine 观测到X。
Hard-detected fualt:good和faulty machine观测到了不同的值(非X)。
posdet类型包含两组:
- posdet_testable(PT)——潜在detectable posdet fault。当工具不能证明0/X或1/X的差异是唯一可能的结果时,就会发生PT故障。较高的中止限制可以减少这些故障的数量。
- post_untestable (PU) ——在pattern generation时被证明是ATPG_untestable并且hard undetectable posdet faults。一般情况下,在ATPG时或使用
compress_patterns -reset_au命令时,故障可归为PU类。
默认情况下,计算结果会对posdet错误给予50%的credit。可以使用set_possible_credit命令调整credit。
3. ATPG_untestable(AU)
ATPG_untestable fault类包含所有test generator不能找到pattern创建test并且不能被证明是redundant的fault。可测试的fault变成了ATPG_untestable 的错误,是因为对ATPG工具施加了约束或限制(例如引脚约束或逻辑深度不足)。如果您在测试生成器上删除某些约束或更改某些限制(例如删除一个引脚约束或更改逻辑深度),这些故障可能是possible-detectable,或者是detectable。您无法通过放宽测试生成器中止限制来检测它们。
这些工具根据所使用的确定性测试生成方法的类型将故障放在AU类别中。也就是说,不同的测试方法创建不同的AU故障集。同样,即使使用相同的测试方法,该工具也可以创建不同的AU故障集。因此,如果切换测试方法(即更改故障类型)或工具,应使用reset_au_faults命令重置AU故障列表。
Note: 在mutiple detect ATPG中,AU fault的数量只在ATPG loop开始的时候改变,在loop运行时不再改变。
4. Undetected (UD)
UD fault包含UC和UO,它包含所有除了AU fault以外的undetected fault。
- uncontrolled(UC)—— undetected faults,在pattern simulation时,无法控制该点。
- unobserved(UO)—— fault无法传播到观测点
故障分类层次:
Full (FU)
1.1 TEstable (TE)
a. DETEcted (DT)
i. DET_Simulation (DS)
ii. DET_Implication (DI)
iii. DET_Robust (DR)—Path Delay Testing Only
iv. DET_Functional (DF)—Path Delay Testing Only
b. POSDET (PD)
i. POSDET_Untestable (PU)
ii. POSDET_Testable (PT)
c. Atpg_untestable (AU)
d. UNDetected (UD)
i. UNControlled (UC)
ii. UNObserved (UO)
1.2 UNTestable (UT)
a. UNUsed (UU)
b. TIed (TI)
c. Blocked (BL)
d. Redundant (RE)