半导体百科:可测试性设计(DFT)完全指南

【摘要】
本文系统梳理电性测试与 Bin 分析领域的核心问题与落地路径。我第一次真正理解DFT的重要性,是在2018年参与一款28nm移动SoC的NPI阶段。全文围绕「问题背景:为什么需要DFT?、技术原理:DFT的核心技术体系、DFT覆盖率与测试时间优化、实战案例:DFT方案评估与测试成本分析、芯片有120个时钟域,传统的全速测试很难做」逐层展开,给出原理说明、实操步骤与验证方法。核心结论:半导体智能制造 | MES工程师实战笔记 -- 关注我,查看更多FAB实战经验。
【核心要点】
- 问题背景:为什么需要DFT?:我第一次真正理解DFT的重要性,是在2018年参与一款28nm移动SoC的NPI阶段。那时候芯片回来,功能测试fail了将近40%的die。
- 技术原理:DFT的核心技术体系:DFT的技术体系非常庞大,但核心可以归结为三大支柱:扫描链(Scan Chain)、内建自测试(BIST)、边界扫描(Boundary Scan)。
- DFT覆盖率与测试时间优化:DFT设计的核心矛盾,就是覆盖率和测试时间之间的权衡。
- 实战案例:DFT方案评估与测试成本分析:让我分享一个真实的案例。2021年,我参与了一颗5nm AI训练芯片的DFT方案评估。这颗芯片有500亿个晶体管,集成度非常高。
【适用场景】
- 良率异常的 WAT 与 CP 数据联合分析。
- Bin Map 形态异常的工艺归因。
- 测试程序覆盖率评估与更新。
- 参数分布形态异常(双峰/长尾)的原因分析。
这个方向的工具共 53 款,完整清单与选型建议见 MES与生产管理工具包。全部 351 款见 工具资源包下载页。
一、问题背景:为什么需要DFT?
我第一次真正理解DFT的重要性,是在2018年参与一款28nm移动SoC的NPI阶段。那时候芯片回来,功能测试fail了将近40%的die。没有DFT的话,你根本不知道是哪里出了问题。团队花了整整三周用手动pattern在ATE上调试,最后发现是一个扫描链的触发器短路了。如果当时有完整的DFT架构,可能两天就能定位问题。
说到这里,你可能会问:为什么芯片需要专门的测试设计?答案要从几个维度来看。
首先是芯片复杂度爆炸。2000年的时候,一颗ASIC大概几万门,手工写测试向量还能应付。到了2020年,移动SoC已经到了几十亿晶体管的级别。10亿个晶体管,测试空间是2^(10^9),这是个天文数字。没有系统性的测试方法,你根本覆盖不了1%的故障。
其次是制造成本压力。一颗先进工艺的芯片,晶圆成本可能要几千美元。如果测试时间太长,测试成本会吃掉所有利润。我见过一些老工艺的芯片,测试成本占到总成本的30%以上。DFT的核心目标之一,就是在可接受的时间内达到足够的故障覆盖率。
再者是质量要求的提升。汽车电子要求零缺陷(Zero Defect),这意味着DPPM要控制在个位数。消费电子虽然没那么严格,但返修成本也很高。没有DFT,你根本无法达到这些质量指标。
最后是Time-to-Market的压力。传统的功能测试,验证团队要写好几个月的测试程序。有了DFT,ATPG工具可以在几天内生成数百万个测试向量,大大缩短了产品上市时间。
所以,DFT不是可选项,是必选项。它是连接设计世界和制造世界的桥梁。
二、技术原理:DFT的核心技术体系
DFT的技术体系非常庞大,但核心可以归结为三大支柱:扫描链(Scan Chain)、内建自测试(BIST)、边界扫描(Boundary Scan)。这三者配合使用,构成了现代芯片的完整可测试性解决方案。
2.1 扫描链(Scan Chain)设计
扫描链是DFT最基础也是最重要的技术。它的核心思想是把芯片内部所有的触发器(Flip-Flop)连接起来,形成一个或多个移位寄存器链。
在正常工作模式下,这些触发器作为普通的寄存器使用。但在测试模式下(Scan Mode),它们被连接起来,可以从芯片外部直接控制和观察每个触发器的状态。
扫描链的工作分为三个阶段:
- Shift-in阶段:通过扫描输入(SI, Scan Input)把测试向量串行移入扫描链。假设扫描链长度是1000级,那就要经过1000个时钟周期才能把所有值都移进去。
- Capture阶段:在最后一个移位时钟之后,给一个Capture时钟,让组合逻辑的输出被捕获到下一阶段触发器的扫描单元中。这个阶段只用一个时钟周期。
- Shift-out阶段:再把捕获到的值通过扫描输出(SO, Scan Output)串行移出来,跟预期值比较。
这样,原本不可控也不可观测的内部节点,现在可以通过扫描链完全控制和观察。
扫描链设计有几个关键参数:
- 扫描链长度:越长,测试时间越长,但面积开销越小
- 扫描链数量:越多,测试时间越短,但IO占用越多
- 扫描压缩比:现代芯片用扫描压缩技术(如XOR压缩),可实现100:1压缩
我在实际项目中,通常把扫描链控制在50-200级之间(压缩后),这样在ATE上测试时间比较合理。
图1: DFT覆盖率与测试时间/成本权衡
2.2 内建自测试(BIST)
BIST技术的出现,是因为有些电路用扫描链测试效率太低。最典型的就是存储器(Memory)。
一块芯片上可能有几十MB的SRAM,如果每个bit都用扫描链来测试,那向量数量会爆炸。而且存储器的缺陷模型和逻辑电路完全不同,这些用普通扫描测试覆盖不了。
BIST分为两大类:
- Memory BIST(MBIST):专门针对片上存储器的测试。它在芯片内部集成一个测试控制器,自动产生测试图案,对存储器进行读写操作。MBIST可以在芯片内部完成整个测试过程,只需要从外部触发一下就行。
- Logic BIST(LBIST):针对逻辑电路的BIST。它用伪随机向量生成器产生测试输入,用特征分析器压缩输出响应。LBIST的优点是不需要昂贵的ATE设备。
在实际设计中,MBIST几乎是标配了。LBIST用得少一些,主要用于高可靠性场景(如航天、汽车)。
2.3 边界扫描(Boundary Scan / JTAG)
边界扫描技术,也就是大家熟知的JTAG(IEEE 1149.1标准),它的初衷是解决PCB板级测试的问题。
在早期,PCB上的芯片引脚都是直接焊接在板子上的。如果板子上的某个芯片坏了,你怎么知道是哪个?用物理探针去测每个引脚?不现实。
边界扫描的思路很巧妙:在芯片的每个IO引脚附近加一个边界扫描单元。这个单元可以捕获输入信号,也可以控制输出信号。所有边界扫描单元连接成一条扫描链,通过JTAG接口来访问。
这样,即使芯片已经焊到板子上了,你仍然可以通过JTAG接口来控制它的每个IO。这对于板级调试来说,是革命性的工具。
除了测试,JTAG还有一个重要用途:芯片调试。几乎所有现代处理器都支持JTAG调试接口,通过它可以设置断点、单步执行、读写内存。
在实际项目中,我通常用JTAG来做几件事:1. 芯片回来后的初测;2. 软件调试;3. 生产测试;4. 现场返修。
图2: 扫描链架构示意图
三、DFT覆盖率与测试时间优化
DFT设计的核心矛盾,就是覆盖率和测试时间之间的权衡。
覆盖率(Fault Coverage)指的是ATPG工具生成的测试向量能检测到多少比例的潜在故障。一般来说,扫描链的覆盖率能做到95%-99%。
但是,覆盖率不是越高越好。从95%提升到99%,可能测试时间要增加3倍。从99%提升到99.5%,测试时间可能增加10倍。这就是边际效应。
我在实际项目中的经验是:
- 消费电子:覆盖率目标97%-98%,测试时间控制在30秒以内
- 汽车电子:覆盖率目标99.5%以上,测试时间可以放宽到几分钟
- 军工/航天:覆盖率目标99.9%+,测试时间不是主要考虑因素
测试时间优化的几个关键手段:
- 扫描压缩(Scan Compression):用压缩逻辑把长的扫描链压缩成短的,减少移位时间。现代工具可以实现100:1的压缩比。
- 测试点插入(Test Point Insertion):在关键节点插入额外的可控性和可观测性点,用很小的面积开销换取覆盖率的提升。
- 时钟分组(Clock Grouping):把不同时钟域的扫描链分开测试,可以并行测试,缩短总时间。
- X-source管理:未知值会阻塞故障传播。用X-blocking电路把未知值屏蔽掉,可以显著提高压缩效率。
我曾经优化过一个项目的测试时间,从最初的180秒降到了45秒,主要就是靠扫描压缩和时钟分组。光这一项,每年节省的测试成本就有几百万美元。
不同应用领域的DFT要求对比:
四、实战案例:DFT方案评估与测试成本分析
让我分享一个真实的案例。2021年,我参与了一颗5nm AI训练芯片的DFT方案评估。这颗芯片有500亿个晶体管,集成度非常高。
项目背景:客户要求这颗芯片的DPPM低于50,这意味着我们的故障覆盖率必须达到99.7%以上。同时,客户对成本非常敏感,测试时间不能超过60秒。
我们面临的主要挑战:
1. 芯片有120个时钟域,传统的全速测试很难做
2. 存储器容量达到2GB,MBIST时间会很长
3. 电源管理非常复杂,需要测试电源相关的故障
我们的DFT方案:
扫描链设计:采用分层扫描架构,顶层扫描链压缩到500级,分成50条子链并行测试。使用TestMAX的OCC技术做全速测试。插入了约2000个测试点,把覆盖率从96.5%提升到了99.2%。
MBIST设计:采用分块测试的MBIST架构,把2GB的SRAM分成256个块,每个块用独立的MBIST控制器,可以并行测试。测试时间从串行测试的20秒降到了并行测试的1.2秒。
LBIST设计:对关键的安全电路做了LBIST,用32级的LFSR产生伪随机向量。覆盖率达到95%。
边界扫描:实现了完整的IEEE 1149.1和1149.6,所有的IO都纳入了边界扫描链。
最终的结果是:整体故障覆盖率99.73%,ATE测试时间52秒,DFT面积开销约8.5%,DPPM实测约35。
成本分析:DFT本身的开销约占芯片总成本的8.5%。但由于测试时间从预估的90秒降到了52秒,每年的测试成本节省了约1200万美元。
这个案例让我深刻体会到:DFT不是成本中心,而是利润中心。好的DFT设计,能在短时间内收回投资。
五、代码实现:测试覆盖率计算模拟
下面这段代码模拟了DFT测试覆盖率的计算过程。它考虑了故障列表、测试向量、故障仿真等核心概念。
import random
from typing import List, Dict
class Fault:
"""故障模型"""
def __init__(self, nid: str, ftype: str):
self.nid = nid
self.ftype = ftype
self.detected = False
self.possible = True
class DFTSim:
"""DFT覆盖率模拟器"""
def __init__(self, num_nodes: int):
self.faults = []
for i in range(num_nodes):
self.faults.append(Fault(f"N{i}", "SA0"))
self.faults.append(Fault(f"N{i}", "SA1"))
for f in self.faults:
if random.random() float:
"""计算故障覆盖率"""
det = [f for f in self.faults if f.possible]
if not det:
return 0.0
return len([f for f in det if f.detected]) / len(det) * 100
if __name__ == "__main__":
for cnt in [50, 100, 200, 500, 1000]:
sim = DFTSim(5000)
for i in range(cnt):
sim.run(i)
print(f"向量:{cnt:4d} 覆盖率:{sim.coverage():.2f}%")
为什么这样写?
- Fault类:简化为固定故障模型,但结构上是可扩展的。
- DFTSim类:展示故障仿真的核心流程——生成故障列表、施加测试向量、检测故障、统计覆盖率。
- run方法:用概率模型模拟检测。早期向量检测效率高,后期边际效应明显。
- coverage方法:分母是"可测故障",不可测故障从分母去掉。
运行结果会显示覆盖率提升的边际效应,和图1趋势一致。
六、实施建议:DFT设计的最佳实践
基于我这些年的DFT设计经验,总结了一些最佳实践:
- 早规划,早介入:在架构设计阶段就让DFT工程师参与。评估测试要求、工艺挑战、时钟域划分等。
- 分层设计策略:对于大型SoC,推荐分层DFT策略。每个模块有自己的DFT插入,然后顶层集成。
- 测试压缩要适度:压缩比控制在50:1到100:1之间比较合理。
- 留出足够的DFT调试接口:芯片上预留调试寄存器,便于问题定位。
- 做DFT成本分析:评估面积开销、测试时间、ATE要求等。
- 不要忽视功耗:DFT模式下功耗可能更高,需要设置功耗约束。
- 文档很重要:DFT设计规格书、测试程序、调试指南等都要完备。
七、进阶方向:DFT技术的未来
DFT技术也在不断演进。以下方向值得关注:
- 机器学习辅助的ATPG:用ML预测哪些向量更可能检测到未覆盖故障,加速ATPG。
- 3D IC的DFT:TSV测试、多die扫描链连接等,目前还在制定标准。
- 安全DFT:通过扫描链可能提取密钥信息,需要在测试后关闭DFT接口。
- 在线测试(Online Test):在芯片工作时检测故障,用于安全关键应用。
- AI芯片的特殊DFT需求:大规模乘法器阵列、高带宽存储器接口的测试方法。
总的来说,DFT是一个不断发展的领域。保持学习非常重要。
八、互动与资源
好了,关于DFT的内容就分享到这里。如果你有任何疑问,欢迎在评论区留言。
【你们在项目中遇到过哪些DFT的坑?是怎么解决的?】
【对于先进工艺(5nm以下),你们觉得DFT最大的挑战是什么?】
【有人用过AI辅助的ATPG工具吗?效果如何?】
如果你觉得这篇文章对你有帮助,欢迎关注我的专栏。
【福利】我整理了一份《DFT设计Checklist v3.0》,在知识星球可以下载。
━━━━━━━━━━━━━━━━━━━━━━━━━━
[提示] 觉得有用就点个关注!每天分享半导体FAB实战经验,从PE到PIE的完整成长路径都在这里。
━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━
[图标] 讨论时间:你在FAB遇到过类似问题吗?是怎么解决的?欢迎在评论区分享你的经验!
━━━━━━━━━━━━━━━━━━━━━━━━━━
博客主页:https://blog.csdn.net/yeflashzhihui
半导体智能制造 | MES(制造执行系统,Manufacturing Execution System)工程师实战笔记 -- 关注我,查看更多FAB实战经验
---
【常见坑】
- 1. 早规划,早介入:在架构设计阶段就让DFT工程师参与。评估测试要求、工艺挑战、时钟域划分等。
- 只看 CP 良率不看 WAT 参数分布。良率数字达标但参数分布尾部变长的批次,后续可靠性风险往往更高。
- Bin Map 只看总体良率不看图形特征,丢掉了最直接的归因线索。
- 测试程序长期不更新,覆盖不到新出现的失效模式。
常见问题(FAQ)
Q:WAT 参数全部合格,为什么 CP 良率偏低?
A:常见原因有三类:一是测试键的结构与密度不能代表实际产品图形,密度相关效应未被覆盖;二是测试键位置固定,落在片内较优区域;三是缺陷问题属于随机分布,测试键未必命中。此时应结合 Bin Map 的空间分布重新判断。
Q:Bin Map 出现明显的扇区分布说明什么?
A:扇区分布通常与设备或腔体的空间位置相关,例如多腔体设备中某个腔体的工艺结果与其余不同,或者传输机械手在特定位置造成的影响。下一步应把 Bin Map 与设备腔体映射对齐做比对。
Q:参数分布出现双峰说明什么?
A:通常说明样本中混入了两个不同来源的群体,例如来自两台设备、两种工艺条件或两个材料批次的产品。此时应先做数据分层再统计,否则均值与标准差都失去意义,后续能力分析也会得出错误结论。
Q:测试数据能否直接用于工艺监控?
A:可以,但需注意测试条件的稳定性与测试程序的一致性。测试机台差异、探针接触状态、温度控制都会影响电性结果,因此把测试数据用于监控前应先评估测试系统自身的不确定度,并建立机台间的比对机制。
Q:CP 良率和 FT 良率的差距多大算正常?
A:一般以产品自身的历史基线为参照:建立基线后,若差值稳定在合理区间即属正常;某批次差值突然放大时,应优先排查封装工艺与测试条件,而不是直接判定晶圆工艺异常。
【总结】
电性测试与 Bin 分析的难点往往不在单点技术,而在于把原理、数据与现场验证串成闭环。半导体智能制造 | MES工程师实战笔记 -- 关注我,查看更多FAB实战经验。Bin Map 的形态分析是良率归因的快捷入口:径向分布反映均匀性问题,边缘集中反映传输或边缘工艺,扇区分布反映设备或腔体的空间差异,随机散点反映污染类缺陷。建议先用小范围试点验证有效性,再逐步扩大适用范围,并保留完整的数据与判断记录以便复盘。
相关阅读
- CP/FT测试数据散落各处?我用Python+SQLite搭了个轻量TDMS
- 半导体测试全流程详解:从CP到FT再到SLT,芯片出厂的最后一道关
- 半导体测试全流程:从晶圆测试(CP)到成品测试(FT)一网打尽
- WAT晶圆允收测试数据分析Python工具免费下载|批次z值+3σ拦截
[图标] 本文配套VIP资源:半导体AI工具包(SPC异常检测+FDC规则模板+AI良率预测模型),已在CSDN资源区上架。
📚 同栏目延伸阅读:半导体百科 | 湿法清洗与干法清洗详解:金属污染去除实战、半导体百科:设备维护从被动抢修到智能预测、FAB工程师5年薪资翻3倍:从PE到PIE路线图、半导体百科_CVD成膜原理与工艺调优:从原理到工业化应用





