一、DFT基础概念:什么是DFT、DFT在芯片设计中的位置、DFT与功能测试的区别

大家好,我是老李。做芯片验证这行十几年了,今天咱们聊聊DFT——这个让不少新人头疼、却又绕不开的话题。

说实话,我刚入行那会儿,也觉得DFT就是个「附加题」。功能验证都忙不过来,谁有空管测试?直到有一次,我负责的一个芯片流片回来,功能仿真全过,结果ATE测试死活跑不通……嗯,从那以后,我再也不敢小看DFT了。

1.1 什么是DFT?

DFT,全称Design for Test,中文叫「可测试性设计」。说白了,就是在设计阶段就给芯片装上「体检设备」。

你想想看,一颗芯片几亿个晶体管,封装好了就一个小黑盒子。你怎么知道里面哪个管子坏了?DFT就是干这个的——在芯片内部加一些专用电路,让测试设备能「看」进去。

核心思想: 不是等芯片做出来再想怎么测,而是在设计阶段就把测试能力「焊」进去。

我个人习惯把DFT分成三大块:

  • 扫描链(Scan Chain):把普通寄存器串成链,测试时像「串糖葫芦」一样把数据灌进去、读出来
  • 内建自测试(BIST):芯片自己给自己做体检,比如Memory BIST、Logic BIST
  • 边界扫描(JTAG/Boundary Scan):通过IEEE 1149.1标准接口,测试芯片管脚之间的连接

我在项目中遇到过最典型的场景:一个SoC芯片,功能验证跑了三个月,零bug。结果ATE测试时发现有一片SRAM的某几个bit死活写不进去。幸亏提前加了Memory BIST,五分钟就定位到是地址译码器的物理缺陷。要是没有DFT,这芯片就得一颗颗用显微镜去查——想想都头大。

1.2 DFT在芯片设计中的位置

很多新人会问:DFT到底属于前端还是后端?

我的答案是:DFT是个「跨界选手」。它既需要懂RTL设计,又要了解物理实现,还得熟悉ATE测试流程。

来看一张我画的流程图,帮你理清DFT在整个芯片设计流程中的位置:

芯片设计流程中的DFT位置 需求定义 & 架构设计 RTL编码 & 功能验证 DFT设计插入 (扫描链/BIST/JTAG) 综合 & 形式验证 后端物理设计 ATE测试 & 良率分析 (DFT验证的最终战场) 各阶段DFT相关活动 • 确定测试策略:扫描链数量、BIST覆盖率目标 • 规划测试接口:JTAG/TAP控制器、测试时钟方案 • 在RTL中例化DFT专用IP(如BIST控制器) • 功能验证时排除DFT逻辑(用`ifdef隔离) ★ 核心阶段: • 插入扫描链,替换普通寄存器为扫描寄存器 • 生成测试协议(STIL/WGL)和测试向量 • 运行DFT DRC检查(时钟域、复位域、三态冲突) • 综合时保持扫描链结构不被优化掉 • 形式验证确认DFT插入前后功能等价 • 布局布线时满足扫描链时序约束 • 生成ATE测试用的pattern和波形文件

从这张图你能看到,DFT不是某个时间点「插一杠子」就完事了。它贯穿了整个设计流程:

  • 架构阶段:就要定好测试策略——用几条扫描链?要不要加Logic BIST?
  • RTL阶段:把DFT的IP(比如BIST控制器)例化进去,同时用`ifdef把DFT逻辑和功能逻辑隔离开
  • 综合阶段:插入扫描链,把普通寄存器换成带扫描功能的寄存器
  • 后端阶段:保证扫描链的时序收敛,别让测试路径成为关键路径
  • ATE测试:最终用DFT生成的pattern去筛芯片

我的经验: 很多团队把DFT放到综合阶段才介入,结果发现RTL里有些三态总线、异步复位逻辑根本没法做扫描测试,回头改RTL代价巨大。我建议在RTL freeze之前,DFT工程师就要做一轮「可测试性检查」——这能省下至少两周的迭代时间。

1.3 DFT与功能测试的区别

这个问题我经常被问到。咱们用一个比喻来理解:

对比维度 功能测试 DFT测试
测试对象 芯片的功能行为(能不能跑程序?) 芯片的物理缺陷(有没有短路/断路?)
测试方法 跑真实应用场景的testcase 用扫描链灌入特定pattern,检查响应
覆盖率 功能覆盖率(代码覆盖、断言覆盖) 故障覆盖率(stuck-at、transition delay)
测试时间 通常较长(跑一个操作系统启动可能几秒) 极短(扫描测试通常毫秒级)
测试设备 仿真器、FPGA原型、ATE(跑功能pattern) ATE(跑扫描pattern)
目的 验证设计正确性 筛选制造缺陷

说白了,功能测试是问「芯片能不能干活?」,DFT测试是问「芯片有没有坏掉?」。

你想想看,一颗芯片有上亿个晶体管,制造过程中难免有杂质、光刻偏差、金属桥接。功能测试跑一万个case,可能都覆盖不到某个内部节点的stuck-at-0故障。但DFT的一条扫描链pattern,就能在几十个时钟周期内把几万个节点的状态全部检查一遍。

注意: DFT不能替代功能验证!我曾经见过一个团队,DFT覆盖率做到99%,结果芯片流片回来功能跑不通——因为DFT只测物理缺陷,不测逻辑功能。功能验证和DFT是「两条腿走路」,缺一不可。

还有一个常见的误区:很多人觉得DFT就是ATE测试用的。其实DFT在芯片调试阶段也很有用。我记得有一次芯片在系统级测试中偶尔死机,功能仿真怎么都复现不了。后来通过JTAG边界扫描,发现是某个管脚在特定温度下出现了信号完整性问题——这个bug要是没有DFT,光靠逻辑分析仪去抓,估计得折腾一个月。

小结

这一章咱们聊了DFT的三个核心问题:

  • DFT是什么——给芯片装「体检设备」,让制造缺陷无处遁形
  • DFT在流程中的位置——从架构到ATE,贯穿始终的「跨界选手」
  • DFT与功能测试的区别——一个查「坏没坏」,一个查「会不会干活」

嗯,基础概念就这些。下一章咱们会深入扫描链的具体实现,包括怎么选扫描寄存器、怎么处理时钟域交叉——到时候我会拿一个实际项目中的踩坑案例来讲,保证让你印象深刻。


可可精品资料库