1、DFT基础概念:什么是DFT、为什么需要DFT、DFT在芯片设计流程中的位置
大家好,我是你们的DFT讲师。今天咱们聊聊最基础的东西——DFT到底是什么。
说实话,我刚入行那会儿,对DFT的理解也很模糊。总觉得这是后端的事,跟我前端设计没关系。后来踩过坑才明白,DFT要是没做好,芯片流片回来就是一堆废硅。
1.1 什么是DFT?
DFT,全称是Design for Test,中文叫“可测试性设计”。
说白了,就是在芯片设计阶段,就提前把测试功能考虑进去。你想想看,芯片造出来以后,你怎么知道它能不能正常工作?总不能用万用表一个个引脚去量吧?
DFT就是干这个的——让芯片自己能“自检”,或者让测试设备能方便地检查芯片好坏。
核心思想:设计阶段就为测试铺好路,而不是等芯片造出来再想办法测。
我习惯把DFT比作给芯片装“体检系统”。就像人需要定期体检一样,芯片出厂前也得做全面检查。DFT就是这套体检系统的设计方法。
1.2 为什么需要DFT?
这个问题,我当年也问过。答案其实很直接——没有DFT,你根本测不了芯片。
具体来说,有这几个原因:
- 芯片越来越复杂——一个SoC里几亿个晶体管,靠外部探针一个个测?不现实。
- 内部节点看不见——芯片封装后,内部信号你根本接触不到。没有DFT,就像黑箱操作。
- 测试成本爆炸——测试时间每多一秒,成本就多一分。DFT能大幅压缩测试时间。
- 良率分析需要——芯片坏了,你得知道坏在哪。DFT能帮你定位故障。
我的经验:曾经有个项目,因为赶进度,DFT覆盖率只做到85%就流片了。结果回来一批芯片功能异常,排查了整整两周才发现是某个内部寄存器出了问题。要是DFT做全了,几分钟就能定位。嗯,从那以后,我再也不敢在DFT覆盖率上打折扣。
你可能会问:不做DFT行不行?
小规模芯片也许可以。但现在的芯片,动辄几千万门,不做DFT就等于闭着眼睛开车。流片一次几十万上百万,你敢赌吗?
1.3 DFT在芯片设计流程中的位置
这个问题很关键。很多新人搞不清DFT到底该在哪个阶段介入。
我直接说结论:DFT不是最后才加的,而是贯穿整个设计流程。
来看这张表,你就明白了:
| 设计阶段 | DFT要做的事 | 我的建议 |
|---|---|---|
| 架构设计 | 确定DFT策略、选择扫描链方案、规划测试接口 | 这时候就要定下来,后面改很麻烦 |
| RTL编码 | 插入测试点、添加扫描链控制逻辑、实现BIST | 边写边加,别等写完了再回头补 |
| 综合 | 扫描链插入、ATPG生成、时序分析 | 这里最容易出时序问题,要盯紧 |
| 布局布线 | 扫描链重排、时钟树平衡、物理验证 | 注意扫描链的物理走线,别绕太远 |
| 测试 | ATE测试、良率分析、故障诊断 | 前面做得好,这步就轻松 |
你看,从架构设计阶段,DFT就要开始介入了。我个人习惯是在RTL编码阶段就把扫描链控制逻辑写好,这样综合的时候就不会手忙脚乱。
注意:千万不要等到综合完了才想起来加DFT。我曾经见过一个团队,RTL写完了才发现没加测试点,结果不得不重新改代码,整个项目延期了两个月。这种坑,踩一次就够了。
1.4 DFT的核心技术有哪些?
简单列一下,后面章节会详细讲:
- 扫描链(Scan Chain)——最基础的DFT技术,把普通寄存器串成链,方便测试
- 边界扫描(Boundary Scan)——JTAG标准,用来测试芯片引脚和板级互联
- 内建自测试(BIST)——芯片自己测自己,常用于存储器测试
- ATPG——自动测试向量生成,根据电路结构自动生成测试激励
这些技术各有各的适用场景。比如存储器,我一般用BIST;逻辑电路,用扫描链加ATPG就够用了。
1.5 一个小例子
为了让你更直观地理解,我写个简单的扫描链插入示意代码:
// 原始寄存器
always @(posedge clk) begin
if (rst)
data_out <= 0;
else
data_out <= data_in;
end
// 加入扫描链后的寄存器
always @(posedge clk) begin
if (rst)
data_out <= 0;
else if (scan_enable)
data_out <= scan_in; // 扫描模式下,从扫描链输入
else
data_out <= data_in; // 正常模式下,从数据路径输入
end
你看,改动其实不大。就是在寄存器前面加了一个多路选择器,由scan_enable信号控制。正常工作时走数据路径,测试时走扫描路径。
这就是DFT的精髓——用很小的硬件开销,换来巨大的测试便利性。
小技巧:写RTL的时候,我习惯把scan_enable、scan_in、scan_out这些信号提前预留好。哪怕暂时不用,也留个接口。这样后面加DFT的时候,改起来就快多了。
1.6 本章小结
好了,这一章的内容就这些。总结一下:
- DFT是设计阶段就考虑测试的方法论
- 没有DFT,复杂芯片根本没法测
- DFT要贯穿整个设计流程,不是最后才加的
- 核心技术包括扫描链、边界扫描、BIST、ATPG等
下一章,我会详细讲扫描链的设计和优化。那是DFT里最基础也最重要的内容,咱们到时候见。
公众号:蓝海资料掘金营,微信deep3321