从自动测试向量生成原理到故障模型与 Tessent ATPG 流程
在芯片生产测试中,ATPG(Automatic Test Pattern Generation,自动测试向量生成)是确保芯片质量的核心环节。它通过自动生成测试向量,在 ATE(自动测试设备)上检测芯片是否存在制造缺陷。本章将从 ATPG 基本概念出发,系统讲解故障模型、故障分类体系、测试覆盖率指标,以及 Tessent ATPG 的完整工作流程。
一、ATPG 基本概念
1.1 什么是 ATPG
ATPG(Automatic Test Pattern Generation)的全称是自动测试向量生成,是指自动化地产生测试向量(Test Pattern)的技术。Test Pattern,有时也称为 Test Vector,是一系列的 0 和 1 值,用于通过芯片的输入端加载到芯片中,检测芯片输出是否符合预期,从而判断是否存在生产制造故障。
在芯片生产测试中,ATE(Automatic Test Equipment,自动测试设备)是核心测试仪器。ATE 可以存储 Pattern 并将其通过 Primary Input 加载到芯片中,同时检测芯片输出,判断是否存在生产制造故障。
1.2 ATPG 的目标与过程
ATPG 的核心目标是产生能够获得一定 Test Coverage 的测试向量。这里的 Test Coverage 是指 Pattern 能够测试到的 Faults 所占的比例。
ATPG 包含两个主要步骤:
• 产生测试向量:
工具根据电路结构和故障模型,自动生成能够检测特定故障的测试向量。
• 执行 Fault Simulation:
对已生成的 Pattern 执行 Fault Simulation,验证哪些 Faults 可以被 Pattern 测试到。
💡 Tip: ATPG 的执行需要已经完成 Scan Insertion 的工作。换言之,ATPG 是 DFT 流程中 Scan Insertion 之后的下一步。

图1:ATPG 的基本流程 ------ 从电路到测试向量的产生与验证
1.3 主流 ATPG 工具
当前主流的 ATPG 工具与各家 EDA 厂商一一对应:
|----------------------|---------------------------------|---------------|
| EDA 厂商 | ATPG 工具 | 压缩方案 |
| Synopsys | TetraMax | Adaptive Scan |
| Siemens EDA (Mentor) | Tessent FastScan / TestKompress | EDT |
| Cadence | Encounter Test / Modus | OPMISR |
重要原则:ATPG 工具的选择必须与插入的压缩电路所用的 EDA 厂商保持一致。例如,如果使用 Tessent 插入了 EDT 压缩电路,则必须使用 Tessent ATPG 工具进行测试向量生成。
二、故障模型与故障分类
2.1 Defect 与 Fault 的区别
在芯片测试领域,需要明确区分两个核心概念:
• Defect(缺陷):
在芯片生产制造过程中导致的电路缺陷,是物理层面的实际问题,例如短路、断路、氧化等。
• Fault(故障):
芯片生产制造过程中潜在的一种故障点,是对 Defect 在逻辑层面的抽象建模。ATPG 工具实际操作的对象是 Fault,而非 Defect。

图2:Defect 与 Fault 的关系 ------ 从物理缺陷到逻辑故障建模
2.2 常用故障模型
Stuck-at Fault(固定故障)
Stuck-at Fault 是最基本且最常用的故障模型。它假设电路中的某个节点固定为逻辑 0(Stuck-at-0,SA0)或逻辑 1(Stuck-at-1,SA1)。这种故障模型简单有效,是 ATPG 的基础故障模型。

图3:Stuck-at Fault 示意图 ------ 节点固定为 0 或 1
Transition Fault(转换故障)
Transition Fault 用于检测时序相关的故障。它分为两种类型:
• Slow-to-Rise(STR):
节点从 0 到 1 的跳变过慢,无法在规定时间内完成。
• Slow-to-Fall(STF):
节点从 1 到 0 的跳变过慢,无法在规定时间内完成。
Transition Fault 是 At-Speed 测试的基础,需要配合 OCC(On-Chip Clock Controller)在实际工作频率下进行测试。

图4:Transition Fault 示意图 ------ Slow-to-Rise 与 Slow-to-Fall

图5:Transition Fault 的 Launch-Capture 测试原理

图6:Stuck-at Fault 与 Transition Fault 的对比
2.3 故障分类体系
ATPG 工具会将所有 Fault 按照一定的层次结构进行分类。故障分类的层次如下图所示,从顶层开始逐步细分:

图7:故障分类层次图
Untestable Faults(不可测故障)
Untestable Faults 是指无论如何都无法被测试到的故障,包括以下几种:
• Unused(UU):
电路中没有连接的点,无法控制也无法观察。
• Tied(TI):
电路中被固定连接到 VDD 或 GND 的点。例如 Tied-to-VDD 的点对应 SA0 故障就是不可测的,因为它本身就是固定为 1 的。

图8:Unused(UU)和 Tied(TI)故障示例

图9:Tied 故障的具体电路示例
• Blocked(BL):
因为路径被阻塞而无法测试的故障,通常是因为控制或观察点不可达。
• Redundant(RE):
冗余故障,即故障的存在不会改变电路的功能行为。这是设计中的冗余逻辑导致的。

图10:Blocked(BL)故障示例

图11:Redundant(RE)故障示例
Testable Faults(可测故障)
Testable Faults 是理论上可以被测试到的故障,进一步细分为以下几类:
• Detected(DT)------ 已检测到的故障:
能够被 Pattern 检测到的故障,包括两种发现方式:
• Det_simulation(DS):
当工具执行 Fault Simulation 时能够检测到的故障。
• Det_implication(DI):
当工具执行 Learning Analysis 时能够检测到的故障。
• Possibly Detected(PD)------ 可能检测到的故障:
进一步分为:
• Posdet_testable(PT):
潜在能够被检测到的故障。
• Posdet_untestable(PU):
在 Pattern 产生过程中能够证明是 ATPG_untestable 的,并且很难被测到的 Posdet 故障。
ATPG Untestable Faults(AU)
ATPG_untestable 故障是指找不到相关 Pattern 能够检测到该故障,但也无法证明它们是 Redundant Fault。大部分原因是 Constraint 或 Limitation 导致的,常见分类包括:
|-----------|----------------------------|-----------------------------------------------------|
| AU 类型 | 全称 | 原因说明 |
| AU.SEQ | Sequential ATPG Untestable | 由于 non-scan 导致需要多个 capture 时钟 cycle 才能传递到 observe 点 |
| AU.PC | Pin Constraint | 由于 pin constraint 导致 fault 不可控或无法传递到 observe 点 |
| AU.TC | Tie Cell | 由于 capture 阶段 cell 是 TIE0/TIE1/TIEX 导致 fault 无法测试 |
| AU.BB | Black Box | 因为有 black-box 导致 fault 无法检测 |
Undetected Faults(UD)
Undetected Faults 是指无法检测到的故障,且无法证明它们是 Untestable 或 ATPG_untestable。工具会优先将其归类为 UO/UC 故障,然后通过推测 Pattern 将其分为具体的故障分类:
• Uncontrollable(UC):
Undetected Fault,因为无法控制造成的。
• Unobserved(UO):
Undetected Fault,因为无法传递到观察点的。
• UD.EAB:
与 EDT 压缩相关的故障。
• UD.AAB:
与 ATPG 工具的 Abort 相关的故障。
💡 Tip: 在实际项目中,ATPG_untestable(AU)和 Undetected(UD)是需要重点分析的故障类型。通过分析这些故障的来源,可以有针对性地优化设计或调整约束,提高覆盖率。
三、测试覆盖率指标
3.1 Test Coverage vs Fault Coverage
在芯片测试中,有两个经常被提到但容易混淆的概念:
• Test Coverage(测试覆盖率):
能够被测试到的 Fault 占"应该被测试的 Fault"的比例。分子中排除了所有 Untestable Fault(UU、TI、BL、RE)。这是更有意义的指标。
• Fault Coverage(故障覆盖率):
能够被测试到的 Fault 占整体 Fault 的比例。分子中包含了所有故障。由于分子包含了 Untestable Fault,数值通常低于 Test Coverage。

图12:Test Coverage 与 Fault Coverage 的计算公式对比

图13:Test Coverage 与 Fault Coverage 的关系图
3.2 ATPG Effectiveness
ATPG Effectiveness 是衡量 ATPG 工具效率的重要指标,它反映的是工具创建和分类 Fault 的能力。高的 ATPG Effectiveness 意味着工具能够更准确地分类故障,减少不确定的 UD 故障数量。

图14:ATPG Effectiveness 指标说明
💡 Tip: 在实际项目中,通常以 Test Coverage 作为主要考核指标。一般要求 Test Coverage 达到 95% 以上,对于关键设计甚至要求 99% 以上。
四、Tessent ATPG 工作流程
4.1 ATPG 工具基本流程
Tessent ATPG 的完整工作流程如下图所示,从工具调用到 Pattern 输出,可以分为几个主要阶段:

图15:Tessent ATPG 完整工作流程图
步骤一:调用工具与加载 Design
使用"tessent -shell"命令调用工具,并通过"set_context pattern -scan"命令进入 ATPG 模式。然后加载 post-scan 的 gate level design 及相关的 DFT library:
• read_verilog ------ 加载门级网表
• read_cell_library ------ 加载单元库
步骤二:Setup Mode
读入 library 及 netlist 后,工具自动进入 Setup Mode。在这个阶段可以执行多个任务,包括:
• 读入 SDC 约束文件
• 配置 DFT 相关信息
• 创建 setup 相关的配置信息
步骤三:退出 Setup Mode
当设置完相关的 Setup 信息后,工具退出 Setup Mode,并触发一系列自动执行活动:
• 创建 Flat Model:
将层次化的设计展平为单层模型,便于故障分析。
• Learning Analysis:
工具自动执行深入的电路行为分析,学习电路的逻辑关系,这对故障分类至关重要。
• Design Rule Checking(DRC):
检查设计是否满足各种 DFT 规则要求,如果 DRC 不通过则无法继续。
步骤四:Analysis Mode
DRC 检查通过后,工具自动进入 Analysis Mode。在这个阶段可以设置 Pattern 相关的信息,包括:
• Pattern 类型配置(Basic Scan / At-Speed 等)
• Pattern 数量限制
• 测试约束设置
步骤五:创建 Pattern 与验证
• Create Pattern:
执行"create_patterns"命令,工具自动推 Pattern。可以修改相关的 constraint 来获得更高的 coverage。
• 验证 Pattern:
Pattern 创建完成后,在交付 Pattern 之前需要通过仿真的方式验证 Pattern 的正确性。
💡 Tip: DRC 是 ATPG 流程中的关键检查点。如果 DRC 报告有违例,必须先解决违例后才能继续下一步,否则生成的 Pattern 可能无效。
4.2 ATPG 输入与输出
Tessent ATPG 工具的输入输出如下图所示:

图16:ATPG 工具的输入与输出概览
ATPG 输入文件

图17:ATPG 输入文件清单

图18:ATPG 输入文件详细说明
ATPG 输出文件
ATPG 的输出主要包括三类文件:
• Test Patterns:
包含测试向量的文件,工具可以生成多种仿真器和 ASIC 厂商格式。
• ATPG Information Files:
包含 ATPG Session 相关信息的一组文件,例如 log 文件。
• Fault List:
以 ASCII 格式存储的内部故障信息文件,采用标准的 Tessent Fault Format。
五、本章总结
本章系统讲解了 ATPG 的基本概念、故障分类体系以及 Tessent ATPG 的完整工作流程。
① ATPG 的目标是自动生成测试向量,通过 Fault Simulation 验证哪些故障可以被检测到。
② Defect 是物理层面的电路缺陷,Fault 是逻辑层面的故障建模,ATPG 操作的对象是 Fault。
③ 故障分类从顶层分为 Untestable(UU、TI、BL、RE)和 Testable(DT、PD、AU、UD)两大类。
④ Test Coverage 排除了 Untestable Fault,是更有意义的考核指标;Fault Coverage 包含所有故障。
⑤ Tessent ATPG 流程从工具调用、加载 Design、Setup Mode、Learning Analysis、DRC、Analysis Mode 到 Pattern 创建与验证,形成完整的闭环。
故障分类完整对照表
|-------------------|--------|---------------------|-------------------|
| 类别 | 缩写 | 子类型 | 说明 |
| Untestable | UT | UU / TI / BL / RE | 无论如何都无法测试的故障 |
| Detected | DT | DS / DI | 能被 Pattern 检测到的故障 |
| Possibly Detected | PD | PT / PU | 可能被检测到的故障 |
| ATPG Untestable | AU | SEQ / PC / TC / BB | 因约束/限制无法测试,但非冗余 |
| Undetected | UD | UC / UO / EAB / AAB | 无法归类为上述类型的故障 |
Tessent ATPG 流程阶段总览表
|--------|---------------|-------------------------------------|--------------------------------------------|
| 阶段 | 工作模式 | 主要任务 | 关键命令 |
| 1 | Shell | 调用工具,进入 ATPG 模式 | tessent -shell / set_context pattern -scan |
| 2 | Setup Mode | 加载 Design,配置 DFT 信息 | read_verilog / read_cell_library |
| 3 | 自动执行 | 创建 Flat Model,Learning Analysis,DRC | 自动触发 |
| 4 | Analysis Mode | 配置 Pattern 相关信息 | 设置 Pattern 类型、约束等 |
| 5 | Pattern 创建 | 生成测试向量 | create_patterns |
| 6 | 验证 | 仿真验证 Pattern 正确性 | 仿真工具 |