DFT 是什么?扫描链怎么用来测芯片?
更新时间:2026-09-21。问题驱动短答页。入门见 DFT 入门,扫描链/ATPG 见 ATPG 与扫描链,总览见 DFT 可测性,边界扫描见 JTAG。
一句话回答
DFT(Design For Test,可测性设计)是在芯片设计阶段就特意加入一些「方便测试」的硬件结构——最典型的是把普通触发器换成可串接的扫描触发器、连成扫描链(scan chain),流片后在 ATE 测试机上通过这条链把测试向量「移位灌进去」、跑一拍、再把结果「移位读出来」比对,从而快速判断每片芯片有没有制造缺陷(坏片)。 它解决的是「造得好不好」,不是「设计对不对」。
扫描链怎么工作
- 普通 D 触发器换成 scan flop(多一个扫描输入和选择开关 mux)。
- 测试模式(scan_en=1)下,所有触发器首尾串成一条或多条移位寄存器链:
- shift(移位):用扫描时钟把一组已知状态逐拍移入所有 FF(同时移出上轮结果)。
- capture(捕获):切回正常模式跑 1~2 个功能时钟,让组合逻辑的响应被 FF 捕获。
- 再 shift 把捕获值移出,与期望向量比对,见 ATPG/扫描链。
- 这样内部任意节点都「可控、可观测」,否则深层节点在黑盒里根本测不到。
配套概念
- ATPG(自动测试向量生成):工具按故障模型自动算出能激活并传播故障的扫描向量。
- 故障模型:stuck-at-0/1(固定为 0/1)、transition delay(跳变延迟)、桥接等;用故障覆盖率衡量测得多全。
- BIST(内建自测):给 RAM/逻辑塞片上自测电路(如 MBIST),自己产生激励、自己比对,见 MBIST/BISR。
- JTAG / boundary scan(IEEE 1149.1):用 TAP 接口做板级互连测试和调试,见 JTAG 边界扫描。
DFT vs 功能验证
- 功能验证(仿真/UVM):流片前找设计 bug,回答「设计对吗」,见 芯片验证在做什么。
- DFT/制造测试:设计已正确,流片后在 ATE 上筛制造缺陷(工艺随机坏点),回答「这片造好了吗」。
- 插入扫描链会让时序、面积、功耗多一份约束,扫描模式本身也要在 STA 里单独签核(MMMC 的 test mode),见 多模多角。
常见坑
- 扫描链没串全/复位把链卡死:shift 不通,整片无法测试。
- 时钟/复位在测试模式不可控:capture 拍无法正常进行。
- 只追求故障覆盖率忽视 X 态、多周期路径、片上时钟门控(测试时要能强制打开,见 门控时钟)。
- 把 DFT 当验证:它不证明功能正确,只筛制造坏片。
- 测试时间直接影响成本:向量过长使每片 ATE 机时费用升高。
总结
DFT 在设计期植入扫描链、BIST、JTAG 等结构,让流片后能在 ATE 上把深部门控节点变成可控可观测:扫描触发器串成链,先 shift 灌入向量、再 capture 一拍、再 shift 读出比对,用 ATPG 按 stuck-at/transition 模型追求高故障覆盖率来筛制造坏片;它与查设计 bug 的功能验证是两回事,并要在 STA 中为扫描测试模式单独签核。