1. DFT 概述:可测性设计到底是什么?

大家好,我是你们的 DFT 讲师。在芯片行业摸爬滚打了十几年,我见过太多「流片回来没法测」的惨案。今天咱们就从最基础的问题聊起——可测性设计,简称 DFT。

说白了,DFT 就是在设计阶段就给芯片装上「测试接口」。你想想看,一颗芯片几亿个晶体管,封装之后只有几十个引脚露在外面。你怎么知道里面每个管子都工作正常?靠的就是 DFT 加进去的那些额外电路。

核心定义:DFT 是芯片设计过程中,通过添加专用测试结构,使得制造完成后能够高效、低成本地检测芯片内部缺陷的一系列技术手段。

1.1 为什么需要可测性设计?

我刚开始做设计时,总觉得 DFT 是「额外负担」。直到有一次,一颗 28nm 的芯片流片回来,功能仿真全过,但量产测试良率只有 30%。查了三个月,最后发现是某个扫描链的时钟门控逻辑有 bug——如果当初没加 DFT,这颗芯片就彻底废了。

没有 DFT 的芯片,就像一本没有目录的书。你只能从头翻到尾,而且翻到中间发现缺页了,你都不知道缺在哪里。

  • 制造缺陷不可避免:晶圆上的颗粒污染、光刻对准偏差、金属桥接,这些物理缺陷在纳米工艺下是常态
  • 测试成本占比越来越高:一颗 7nm 芯片的测试成本可能占到总成本的 30%-40%
  • 功能测试不够用:跑一遍完整的应用软件可能需要几小时,而 DFT 测试只需几秒钟

我的经验:一个设计良好的 DFT 方案,能让测试时间缩短 100 倍以上。我在一个 AI 芯片项目中,通过优化扫描链压缩,把测试时间从 45 分钟降到了 20 秒——这直接省掉了三台 ATE 测试机,折合人民币 2000 万。

1.2 DFT 在芯片开发流程中的位置

很多新人会问:DFT 是前端还是后端?我的回答是:DFT 贯穿整个流程。它既不是前端也不是后端,它是「夹在中间但哪都离不开」的角色。

DFT 在芯片开发流程中的位置 规格定义 DFT 需求分析 RTL 设计 插入 DFT 逻辑 综合 DFT 约束传递 布局布线 时钟树/物理 DFT 验证 仿真/形式验证 ATPG 生成测试向量 测试向量仿真 时序/功耗检查 流片 GDS 交付 晶圆测试 CP 测试 封装测试 FT 测试 良率分析 失效定位 量产 出货 良率反馈 → 设计迭代 💡 关键点: DFT 不是某个阶段的「附加任务」,而是从规格定义到量产测试全程参与的「嵌入式」工作。越早介入,后期返工越少。

从这张图你能看到,DFT 工程师在每个关键节点都要介入。我个人习惯把 DFT 工作分成三个阶段:

  1. 设计阶段(规格→综合):确定测试策略,插入扫描链、BIST、边界扫描等结构
  2. 验证阶段(综合后→流片前):跑 ATPG 生成测试向量,做仿真验证,检查覆盖率
  3. 量产阶段(流片后→量产):配合测试工程师调试 ATE 程序,分析良率,定位失效

⚠️ 避坑指南:我曾经在一个项目中,RTL 设计阶段完全没考虑 DFT,等到综合后才开始插扫描链。结果发现关键路径时序全崩了——因为扫描链插入改变了布线负载。最后不得不重新综合,项目延期了两个月。记住:DFT 一定要从 RTL 阶段就开始规划。

1.3 DFT 工程师的核心职责

很多人以为 DFT 工程师就是「跑跑 ATPG 工具」。其实远不止这些。我列一下日常工作中最核心的几块:

职责领域 具体工作内容 常用工具/方法
测试策略制定 根据芯片规模、功耗、成本目标,选择扫描/BIST/MBIST 等方案 DFT Compiler, Tessent
DFT 逻辑实现 插入扫描链、时钟门控、测试模式控制逻辑 Synopsys DFT Compiler, Cadence Genus
ATPG 与仿真 生成测试向量,做故障仿真,分析覆盖率 TetraMAX, FastScan, TestKompress
DFT 验证 形式验证、时序检查、功耗分析 Formality, PrimeTime, RedHawk
ATE 支持 生成测试程序,配合测试工程师调试 STIL, WGL, ATE 平台
良率分析 分析测试失效数据,定位物理缺陷 Yield Explorer, 扫描链诊断

嗯,这里要注意一点:DFT 工程师是「翻译官」。你要把设计工程师的 RTL 语言,翻译成测试工程师能用的 ATE 程序。同时还要把测试发现的失效,翻译回设计工程师能理解的电路位置。

我的建议:刚入行的 DFT 工程师,别只盯着工具。花时间理解芯片的时钟结构和电源域——这两个东西搞不明白,DFT 做出来大概率是废的。我见过太多新人把扫描链插好了,结果测试模式下时钟树出问题,整个芯片在测试时直接死机。

1.4 一个典型的 DFT 工作流

最后,我给大家画一个更具体的 DFT 工作流。这个流程我在多个项目中验证过,基本覆盖了 90% 的场景:

DFT 工程师典型工作流 需求分析 测试覆盖率目标 方案设计 扫描/BIST 选择 逻辑实现 插入 DFT 电路 ATPG 生成测试向量 验证 仿真检查 覆盖率检查 > 95% 通过 时序签核 测试模式 STA ATE 调试 测试程序生成 量产支持 良率监控 交付 文档/数据 覆盖率不达标 → 返回修改 📌 关键指标: • 故障覆盖率(Fault Coverage):通常要求 > 95%,汽车级芯片要求 > 98% • 测试时间:单颗芯片测试时间通常控制在 5-30 秒,取决于芯片复杂度

这个流程看起来简单,但每个环节都有坑。举个例子,覆盖率检查——你以为跑到 98% 就万事大吉了?我曾经遇到过一个案例,覆盖率 99.2%,但量产良率只有 60%。后来发现是时序相关的故障没被覆盖到。所以 DFT 工程师不能只看数字,要理解每个故障模型背后的物理意义。

一句话总结:DFT 不是「锦上添花」,而是「雪中送炭」。没有可测性设计的芯片,就像没有安全带的赛车——跑得快,但一旦出事就是灾难。作为 DFT 工程师,你的工作就是给芯片系上安全带,装好安全气囊,再配一个故障诊断系统。