DFT - 从Scan Chain到故障覆盖率的实战解析

张开发
2026/4/18 10:22:37 15 分钟阅读

分享文章

DFT - 从Scan Chain到故障覆盖率的实战解析
1. 什么是DFT及其在芯片测试中的重要性DFT全称Design for Testability中文叫可测试性设计。简单来说就是在芯片设计阶段就考虑如何让芯片更容易被测试。这就像盖房子时提前预留检修口一样重要。想象一下如果芯片生产出来才发现有问题但内部电路像黑盒子一样无法检测那损失就太大了。我在实际项目中见过太多因为忽视DFT而吃大亏的案例。有一次流片回来后发现功能异常但由于缺乏DFT设计花了三个月才定位到问题直接导致项目延期。从那以后我就深刻理解了DFT的价值。DFT的核心目标有三个提高故障覆盖率Fault Coverage降低测试成本Test Cost提升产品质量DPPM其中最关键的就是故障覆盖率它直接决定了芯片出厂时的质量水平。一般来说商业芯片要求故障覆盖率至少要达到95%以上汽车电子芯片更是要求99%以上。2. Scan Chain的工作原理与实现2.1 从普通DFF到Scan-FF的转变Scan Chain是DFT最基础也最重要的技术。它的核心思想是把芯片中的触发器DFF改造成具有扫描功能的Scan-FF然后把它们串成一条链。我刚开始接触时总有个疑问为什么不直接新增测试电路而要改造原有的DFF后来才明白如果新增电路芯片面积会大幅增加。而改造现有DFF只需要在每个DFF前加一个二选一的多路器MUX面积代价很小。具体实现是这样的// 普通DFF always (posedge clk) begin Q D; end // Scan-FF always (posedge clk) begin Q SE ? SI : D; // SE1选择扫描输入SE0选择功能输入 end这个简单的改造让每个DFF具备了三种工作模式功能模式Function ModeSE0DFF正常工作移位模式Shift ModeSE1所有DFF串联成移位寄存器捕获模式Capture Mode在特定时钟沿捕获组合逻辑输出2.2 Scan Chain的实际工作流程在实际测试时ATE自动测试设备会按照以下步骤操作初始化将SE置1进入移位模式加载测试向量通过SI引脚串行输入测试数据切换功能模式SE置0运行一个时钟周期让组合逻辑运算捕获结果再切回移位模式将结果串行输出这个过程就像用串口调试设备一样只不过是在硬件层面实现的。我常用一个比喻Scan Chain就像给芯片装上了X光机让我们能透视内部每个触发器的状态。3. 故障覆盖率分析与提升策略3.1 理解故障模型与覆盖率计算在DFT领域最常用的故障模型是固定型故障Stuck-at Fault包括Stuck-at-0信号固定为0Stuck-at-1信号固定为1故障覆盖率的计算公式很简单覆盖率 检测到的故障数 / 总故障数 × 100%但实际操作中会遇到很多挑战。比如有一次我发现覆盖率卡在92%上不去后来发现是因为工具默认忽略了某些不可测故障。通过调整分析参数最终把覆盖率提升到了95.7%。3.2 使用TMAX进行覆盖率分析业界常用的故障覆盖率分析工具是Synopsys的TMAX。它会生成详细的报告包含几个关键指标指标名称说明目标值Fault Coverage总故障覆盖率95%Test Coverage测试向量覆盖的故障比例99%ATPG Efficiency测试向量生成效率90%典型的TMAX报告会标注覆盖率低的模块比如Module A: 98.7% Module B: 91.2% (Low!) Module C: 95.4%这时就需要重点关注Module B分析为什么它的覆盖率偏低。4. 用户自定义测试点UDTP的插入技巧4.1 何时需要手动插入测试点工具自动插入的Scan Chain虽然能覆盖大部分DFF但对于深层的组合逻辑往往力不从心。主要表现在两种场景可控性差信号难以通过现有路径设置到所需值可观测性差内部信号状态无法传播到可观测点我遇到过一个典型案例一个复杂的算术逻辑单元ALU因为组合逻辑太深导致覆盖率只有85%。通过插入3个UDTP后提升到了96%。4.2 测试点插入的具体方法UDTP的插入不是随意而为需要遵循以下原则位置选择优先选择工具报告的覆盖率热点区域关键控制信号路径复杂组合逻辑的输出节点实现方式// UDTP示例代码 wire tp_signal comb_logic; // 待观测信号 reg tp_ff; always (posedge scan_clk or negedge scan_rstn) begin if (!scan_rstn) tp_ff 1b0; else if (tp_en) tp_ff tp_signal; end时序考虑必须进行STA静态时序分析验证注意保持时间hold time满足要求避免引入新的时序违例4.3 测试点插入的工程权衡插入UDTP不是免费的需要考虑以下trade-off面积开销每个测试点大约增加10-20个等效门性能影响可能引入额外的布线延迟测试时间会增加测试向量的长度在实际项目中我通常会先插入最关键的几个测试点然后评估效果。如果覆盖率提升不明显再考虑增加更多测试点。记住质量、成本和进度需要平衡。5. 实战经验与常见问题解决在多年的DFT工程实践中我总结了一些宝贵的经验Scan Chain连接问题时钟域交叉不同时钟域的DFF不能混接在同一条Scan Chain中复位一致性所有Scan-FF的复位信号必须同步链完整性必须确保Scan Chain没有断链或短路覆盖率提升技巧对于大型存储器考虑添加MBIST存储器内建自测试复杂状态机可以添加观察点模拟模块需要专门的测试策略调试技巧使用波形查看工具追踪Scan Chain信号对故障进行反向追踪Back-tracing建立故障字典Fault Dictionary加速诊断记得有一次遇到一个特别棘手的问题Scan Chain在仿真时工作正常但在实际测试时总是失败。后来发现是时钟树综合后引入了过大的时钟偏斜skew。通过在Scan Chain中插入缓冲器最终解决了这个问题。

更多文章