DFT扫描链前期检查清单:插链之前先自查这 16 项
更新时间:2026-10-29。本文是「集成电路大类 · 芯片设计」入门层(beginner)的一篇清单文。可测性设计(DFT):扫描链、BIST、ATPG 与 JTAG 把扫描链的原理讲透了——扫描触发器怎么替换、ATPG 怎么算向量;DFT 入门:为什么芯片设计要为测试留后门 讲了 DFT 在设计流程里的位置。这两篇回答「扫描链是什么、为什么要有」。本篇换一个更实务的角度:在把设计交给 DFT 工具做扫描链插入之前,RTL 设计工程师应该先自查什么。业界一个公认的经验是:scan insertion 阶段报出来的问题,一大半根子不在 DFT 工具,而在 RTL 里早就存在的不可扫描结构——那时再回头改 RTL,布局布线可能已经做了一半。
本文要回答的问题
- 扫描链插入工具(DFT Compiler、Genus DFT 等)在插链前会做 DRC(Design Rule Check),它到底在查什么?
- 门控时钟、内部生成时钟、异步复位这些常见写法,哪些必须在 test mode 下特殊处理?
- latch、组合环、双沿触发器为什么会让 ATPG 覆盖率直接跳水?
- 扫描使能(scan_en)、测试模式(test_mode)引脚怎么规划?链长怎么估?ATPG 覆盖率目标定多少算合格?
- 存储器和模拟模块(PLL、ADC)不在扫描链上,它们的测试接口要提前留什么?
先把 16 项检查的整体分组放在一张流程卡里,后文按这四组逐项展开:
读这张卡抓住顺序语义:前两组是「电路能不能被扫描」的硬门槛(红与蓝),任何一项不过,工具直接 DRC 报错、链插不进去;后两组是「扫描之后测不测得好」的规划项(橙与紫),不卡插入但决定最终故障覆盖率。实践中按这个顺序自查,能在最靠前的环节拦住最贵的返工。
一、时钟与复位可控性(第 1–5 项)
扫描测试的本质是把全芯片的触发器串成一条移位寄存器,用一个外部灌进来的慢速时钟逐拍移位。这条规则推出一个硬要求:test mode 下,所有时钟和复位必须能被外部引脚直接控制。
| # | 检查点 | 判定方法 | 不合格后果 |
|---|---|---|---|
| 1 | 门控时钟(clock gating)单元是否带 test 使能端 | 检查 ICG 单元是否为带 TE(test enable)引脚的库单元,且 TE 接到 scan_en | 移位时门控关断、时钟出不来,整段链移不动,DRC 直接报 clock-not-controllable |
| 2 | 内部生成时钟(分频器、时钟 mux)是否有 test 旁路 | 网表里找 clk_div、时钟选择 mux,确认 test mode 下有 mux 把外部扫描时钟直送触发器 | 内部时钟源不可控,该时钟域全部触发器进不了链 |
| 3 | 异步复位/置位是否可被 test_mode 释放 | 检查所有触发器的 async reset/set 端,test mode 下应由引脚可控信号驱动而非内部逻辑 | ATPG 无法控制复位,复位线上故障不可测,覆盖率损失并可能 DRC 违例 |
| 4 | PLL 输出时钟是否有 bypass mux | 确认 test mode 下用旁路 mux 选外部低速时钟替代 PLL 输出 | ATE 机台跟不上 PLL 频率,移位失败 |
| 5 | 时钟域交叉(CDC)路径是否打拍隔离 | 检查跨时钟域路径是否有同步器,且扫描时各域共用同一扫描时钟 | 移位时跨域毛刺导致数据错乱,链完整性测试就挂 |
第 1 项是新手设计里命中率最高的一条:手写 assign gclk = clk & en; 这种与门门控,DFT 工具完全无法接管,必须换成工艺库提供的 ICG(Integrated Clock Gating)单元,综合时用 set_clock_gating_style 之类约束让工具自动替换。
二、触发器可扫描性(第 6–10 项)
这一组检查「电路本体里有没有扫描进不去的结构」,对应 DRC 里最常见的一批违例。
| # | 检查点 | 判定方法 | 不合格后果 |
|---|---|---|---|
| 6 | 是否存在 latch | 综合报告 / lint 查 inferred latch,目标数量为零 | latch 电平敏感、无法安全串入移位链,其控制与观测都要靠额外逻辑,覆盖率受损 |
| 7 | 是否存在组合逻辑环 | 用 lint 的 UNOPTFLAT 类告警或综合工具的 loop 报告 | ATPG 无法对环建模,环上故障全部不可测,部分工具直接拒绝插链 |
| 8 | 双沿触发器(both-edge FF) | 网表搜索双边沿敏感单元 | 多数 ATPG 工具按单沿建模,双沿触发器成为测试黑洞 |
| 9 | 不可扫描宏/硬核周围的触发器是否串链 | 列出所有黑盒模块,确认其外围触发器仍可入链 | 黑洞边界故障不可测 |
| 10 | 三态总线是否有总线保持或唯一使能 | 检查 test mode 下三态驱动不会冲突 | 移位期间总线打架产生 X,污染整个链 |
第 6 项和第 7 项完全可以在 RTL 阶段用 lint 拦掉——Verilog lint 高频告警矩阵实测 里的 LATCH 和 UNOPTFLAT 两节就是这两条的造错示范,写完 RTL 先过一遍 -Wall,比在 DFT 阶段被 DRC 打回便宜得多。
三、测试接口规划(第 11–14 项)
前两组过了,设计「能插链」;这一组决定插出来的链「好不好测」。
| # | 检查点 | 判定方法 | 不合格后果 |
|---|---|---|---|
| 11 | scan_en / test_mode 引脚是否预留 | 核对接口表:至少 1 个 test_mode + 1 个 scan_en,且功能模式下有确定的默认电平 | 后期加引脚要动顶层与封装规划,代价极大 |
| 12 | 扫描链长度估算与链数规划 | 触发器总数 ÷ 目标链数 = 单链长度;ATE 通道数决定链数上限 | 单链过长直接拉长测试时间,测试成本超标 |
| 13 | 扫描 IO 复用方案 | 确认扫描数据口复用功能引脚时的 mux 位置与 test_mode 隔离 | 功能模式下扫描路径误动作,或测试时引脚不够 |
| 14 | ATPG 覆盖率目标量化 | 与测试工程师对齐:stuck-at 一般 ≥99%,transition ≥90%(按产品线定) | 没有目标就无法验收,ATPG 跑多少算完全靠拍脑袋 |
第 12 项给一个量级直觉:10 万个触发器只做 8 条链,单链就是 1.25 万拍——每个向量仅移位就要 1.25 万个时钟周期,上万个向量乘起来,单颗芯片的测试时间可能突破秒级,在测试机台按时计费的世界里这是真金白银。链数翻倍、测试时间减半,但占用的 ATE 通道也翻倍,这是一个要在插链前就和测试工程师对齐的权衡。
四、存储器与模拟模块(第 15–16 项)
扫描链只覆盖标准单元触发器;RAM 和模拟硬核各有各的测试通路,接口必须在插链前就留好。
| # | 检查点 | 判定方法 | 不合格后果 |
|---|---|---|---|
| 15 | 嵌入式 SRAM 的测试通路 | 确认每块 RAM 配 MBIST(内建自测)控制器接口,或至少提供 bypass mux 让扫描链穿透 | RAM 本身不可测,且 RAM 阴影下的组合逻辑观测不到,覆盖率大坑 |
| 16 | 模拟模块(PLL、ADC、LDO)的旁路与观测 | 确认 test mode 下模拟块可被旁路,关键内部节点有观测引脚或寄存器 | 数模边界故障完全不可测,量产筛不掉边界缺陷 |
第 15 项的 bypass 特别容易被忽略:即使 RAM 有 MBIST,如果不给 RAM 的输入输出加扫描可控的旁路 mux,RAM 就像链路上的一堵墙——墙前触发器的输出穿不过去、墙后触发器的输入控制不了,墙两侧的组合逻辑覆盖率会平白掉几个百分点。
这一篇在知识体系里的位置
- 原理上游:可测性设计(DFT):扫描链、BIST、ATPG 与 JTAG(扫描链与 ATPG 的机制原理,本篇是它的实务前置清单);
- 流程上游:DFT 入门:为什么芯片设计要为测试留后门(DFT 在芯片设计流程里的位置);
- RTL 质量纪律:Verilog lint 高频告警矩阵实测(latch、组合环这类不可扫描结构,lint 阶段就能拦住);
- 横向关联:逻辑综合(扫描触发器替换通常与综合/DFT 插入同轮完成)。
总结
DFT扫描链前期检查清单分四组 16 项:时钟与复位可控性(门控时钟带 TE、内部时钟有旁路、异步复位可接管、PLL 有 bypass、CDC 打拍)是插链的硬门槛;触发器可扫描性(零 latch、零组合环、无双沿触发)决定 DRC 能否通过;测试接口规划(引脚预留、链长估算、IO 复用、覆盖率目标量化)决定测试成本与验收标准;存储器与模拟模块(MBIST/bypass、模拟旁路)补上扫描链覆盖不到的最后一块。16 项全部在 RTL 冻结前自查完毕,scan insertion 就是一次顺利的纯工具流程。