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