DFT 扫描插入与 ATPG:让出厂测试能「够得着」芯片内部(C4)
DFT 概念与设计决策(为什么要可测、scan 原理、JTAG/BIST)见 DFT 可测性设计、ATPG/扫描链、JTAG/边界扫描;本篇讲工具操作与覆盖率口径:Siemens Tessent(含 TestKompress)/Synopsys TetraMax 怎么插链、生成 pattern、报覆盖率。综合期 DFT 准备见 C1,pattern 数据交接见 F9 test patterns。
一、为什么功能测试不够,需要 scan
芯片出厂后只能通过有限的外部引脚激励、观测。内部几百万个触发器,靠功能向量既难把它们置成特定状态,也难把内部故障效应「搬」到引脚上。扫描设计把普通触发器替换成可串接的扫描触发器(scan FF / mux-DFF),在测试模式下连成一条或多条移位寄存器(扫描链):
- 移位(shift):经扫描引脚把测试位串行「移」进所有触发器,等于给全芯片置初态;
- 施加(capture):切回功能模式跑 1~2 拍,让组合逻辑对加载的值响应;
- 移出(unload):再切扫描模式,把捕获的结果串行移出,与期望比对。
这样每个组合逻辑锥都变成「一拍可控、一拍可观测」,ATPG 才可能自动生成高覆盖率向量。

二、扫描插入的工程要点
| 项 | 内容 | 坑 |
|---|---|---|
| DFT-ready 综合 | 用 scan 触发器映射、set_dft_signal 描述 scan_en/scan_clk/test_mode | 综合没准备好,后插链会改时序、LEC 麻烦 |
| 扫描链划分 | 按物理位置/时钟域/电源域平衡链长 | 跨时钟/电源域混链会在 shift 出错(与 CDC/UPF 相关) |
| 链平衡 | 多链等长以压缩移位周期 | 链长差太多浪费测试时间 |
| 时钟/复位 | 测试模式时钟可控(常接外部 ATE 时钟或 PLL 分频) | 内部生成时钟需可控旁路 |
| 特殊单元 | 锁存器、门控时钟、存储器要单独处理 | 时钟门控在 shift 时需强制打开(scan-aware) |
插链是一次网表变换,插后必须跑 LEC:功能模式下扫描逻辑(mux 的系统端)必须与原设计等价,扫描端只在 test_mode=1 才接入。这也是 C5 交付前的固定关卡。
三、故障模型:ATPG 在找什么缺陷
ATPG 不直接建模物理缺陷(太多种),而用抽象的逻辑故障模型逼近制造缺陷:
| 故障模型 | 抽象 | 覆盖的物理缺陷 |
|---|---|---|
| stuck-at(固定故障) | 某节点永久卡在 0/1 | 短路、开路、制程缺陷的直流表现 |
| transition(时延故障) | 节点跳变慢,在规定拍数到不了 | 延迟缺陷、电阻性开路 |
| path delay | 整条路径传播太慢 | 关键路径时序缺陷(配 STA) |
| bridging/IDDQ(高级) | 两节点短接/静态电流异常 | 桥接、部分泄漏缺陷 |
- stuck-at 是基础,慢速测、要求覆盖率最高(先进数字芯片常 >98%~99%);
- transition 常以 at-speed(实速)launch-capture(LOCS)或 launch-shift(LOS) 施加,对时钟通路要求高,覆盖率通常略低于 stuck-at;
- 存储器不走扫描,由 MBIST/BISR 自测自修(见 MBIST/BISR),宏/IP 常带自带测试结构。
四、故障覆盖率与不可测(AU/AO/UD)
工具对每个故障分类:检测到(DT)、可能检测(PT)、不可控或不可观测的 AU(ATPG uncontrol/unobserve)、冗余(UD,逻辑上不可激活)。覆盖率口径要分清:
- test coverage = 可测故障中被覆盖比例,比 fault coverage(分母含不可测)更能反映 DFT 质量;
- AU 高意味着 DFT 结构有盲区(时钟/复位/配置不可控、生成时钟不可控、写死的测试不可见点),要回设计加 test_mode/控制点,而不是硬刷向量;
- 冗余故障经 LEC/分析确认为真冗余才可排除,不能把「测不到」都算冗余充覆盖率。
五、测试压缩:TestKompress 与测试时间
长扫描链每 pattern 要移位几千拍,几百万 pattern 的测试时间(=ATE 机时=钱)不可接受。**测试压缩(EDT/TestKompress、Adaptive Scan)**在芯片内加:
- 解压器(decompressor):少量外部 scan-in 通道扩展喂给大量内部短链;
- 压缩器(compactor/X-mask):大量内部链输出经异或压缩到少量 scan-out,并用 X-mask 屏蔽未知态(X,如未初始化/RAM 输出);
- 于是用很少的 ATE 通道驱动很多条短链,压缩比可达几十到上百倍,pattern 数和测试时间大降,代价是少量面积与对 X 处理的约束。
这也是 F9 pattern 文件 要在「压缩前的内部链」和「ATE 看到的压缩通道」两种格式间转换、并与最终网表严格同源的原因。
六、DFT 的代价与协同
- 面积:扫描 mux、压缩/解压、测试点(test point)通常带来几个百分点面积;
- 时序:scan mux 在功能路径上增加一点延迟,扫描链布线、test_mode setup/hold 要单独签(见 STA),transition at-speed 还要测真实频率;
- 协同:DFT 需求(测试时钟、test_mode、控制点、BIST 接口)必须在 S0/S1 早期提出,综合期 DFT-ready,插链后 LEC + 门级仿真验证 shift/capture,最终 pattern 在门级+SDF 上验证(门仿/X 传播)才能交 ATE。
相关与延伸
- 同线:C1 综合、C5 网表交付/门仿、B4 LEC、E5 签核收口。
- 数据:F9 test patterns。
- 设计侧:DFT、ATPG 扫描链、JTAG、MBIST。
总结
扫描 DFT 用可串接的 scan FF 在测试模式下把百万触发器变成可移位置初态、可捕获、可移出观测的移位寄存器,让 ATPG 能对每个组合锥自动生成向量;插链必须在综合期就 DFT-ready、按时钟电源域平衡链长、scan-aware 处理门控时钟并在插后跑 LEC 证明功能模式等价,ATPG 按 stuck-at 与实速 transition/path-delay 等故障模型生成,报覆盖率要看 test coverage 并把 AU 盲区回设计加控制点而不是用冗余充数,存储器交给 MBIST;TestKompress 类片内解压缩把少量 ATE 通道扩成大量短链、把测试时间压缩几十上百倍,代价是面积与 X 处理,而所有 test_mode、测试时钟和控制点都必须在设计早期提出、pattern 与最终网表同源并经门级 SDF 验证后才能上 ATE。