1. DFT概述

1.1 什么是DFT(可测试性设计)

DFT(Design for Testability,可测试性设计) 是指在芯片前端逻辑设计阶段,就预先植入专门用于测试的硬件结构,使得芯片在制造完成后能够高效、低成本地检测出物理缺陷。DFT 不是“事后补测”,而是与 RTL 设计同步进行的可测试性架构设计。

核心思想: 通过增加少量硬件开销(通常为 5%~15%),将芯片内部的逻辑节点变得“可控”和“可观”,从而用有限的测试向量覆盖数亿个晶体管的潜在故障。

DFT 设计通常包含以下三大基础技术:

DFT 技术 英文缩写 核心作用 典型硬件开销
扫描链 SCAN 将普通寄存器替换为扫描寄存器,串行移入/移出测试数据 5%~10%
内建自测试 BIST 芯片内部自动生成测试向量并压缩响应,常用于存储器 2%~8%
边界扫描 JTAG/IEEE 1149.1 在芯片 I/O 边界插入测试单元,支持板级互连测试 1%~3%
DFT 三大基础技术架构 DFT 可测试性设计 扫描链 (SCAN) 串行移位测试 内建自测试 (BIST) 片上向量生成与响应压缩 边界扫描 (JTAG) I/O 互连测试 三种技术可独立或组合使用,覆盖逻辑、存储器和 I/O 三类测试域 现代 SoC 通常同时采用 SCAN + BIST + JTAG 实现全芯片可测试性

1.2 DFT 在芯片设计中的重要性

随着工艺节点进入 7nm/5nm/3nm,单颗芯片集成的晶体管数量已超过 500 亿个。没有 DFT,制造缺陷的检测将完全依赖功能测试,而功能测试的覆盖率通常不足 60%。DFT 的重要性体现在以下四个维度:

  1. 降低测试成本: 自动测试设备(ATE)按测试时间收费。DFT 通过扫描链并行加载,将测试时间从小时级压缩到分钟级。
  2. 提升缺陷覆盖率: 结构测试(SCAN + ATPG)可达到 95%~99% 的 stuck-at 故障覆盖率,远高于功能测试。
  3. 支持良率分析: DFT 输出的 fail log 可直接用于定位失效物理位置,帮助工艺良率快速爬坡。
  4. 满足车规/航空可靠性: ISO 26262(汽车功能安全)和 DO-254(航空电子)强制要求芯片内建测试结构。
⚠ 工程警示: 某 28nm 通信芯片项目因 DFT 插入过晚(RTL freeze 后才开始),导致扫描链时序收敛失败,最终被迫删除 30% 的测试点,覆盖率从 98% 降至 82%,流片后因测试逃逸导致 200 万美元的召回损失。

1.3 DFT 与测试覆盖率的关系

测试覆盖率 是衡量 DFT 设计有效性的核心指标,通常定义为:

测试覆盖率 = (检测到的故障数 / 总可测故障数) × 100%

DFT 与测试覆盖率之间存在直接的因果链:

DFT 设计质量 典型覆盖率范围 测试逃逸风险 工程代价
无 DFT(纯功能测试) 40%~60% 极高 测试向量开发周期长,ATE 时间成本高
基础 SCAN + ATPG 90%~95% 中等 面积增加 5%~8%,时序需额外收敛
SCAN + 压缩 + BIST 95%~98% 低 面积增加 8%~12%,需额外 DFT 验证
全 DFT(含 at-speed、X-tolerant) 98%~99.5% 极低 面积增加 10%~15%,设计周期延长 2~4 周
DFT 设计质量与测试覆盖率关系图 无 DFT 40%~60% 基础 SCAN + ATPG 90%~95% SCAN + 压缩 + BIST 95%~98% 全 DFT (at-speed + X-tolerant) 98%~99.5% 0% 50% 100% DFT 投入越高,测试覆盖率越接近 100%,但面积和设计周期代价也同步增长

1.4 测试覆盖率的关键指标

在 DFT 工程实践中,需要同时关注以下三类覆盖率指标:

  • Stuck-at 故障覆盖率: 检测固定为 0 或固定为 1 故障的能力,是 DFT 验收的基本门槛(通常要求 >95%)。
  • Transition 延迟故障覆盖率: 检测信号跳变速度是否满足时序要求,at-speed 测试的核心指标(通常要求 >85%)。
  • 桥接故障覆盖率: 检测相邻金属线短路导致的逻辑错误,在先进工艺中越来越重要。
💡 工程经验: 在 7nm 以下节点,Transition 故障覆盖率的重要性已超过 Stuck-at。建议 DFT 团队在项目初期就将 at-speed 测试结构(如 OCC、PLL 分频)纳入设计计划,避免后期因时序问题被迫降频测试。

1.5 DFT 设计流程概览

一个完整的 DFT 设计流程通常包含以下 6 个阶段:

  1. DFT 规划: 确定扫描链数量、压缩比、BIST 实例数,制定测试策略文档。
  2. RTL 插入: 在 RTL 代码中例化 DFT 控制器(如 JTAG TAP)、扫描链使能信号。
  3. 综合与扫描链插入: 使用 DFT 编译器将普通寄存器替换为扫描寄存器,并连接成链。
  4. ATPG 向量生成: 自动测试向量生成工具根据网表产生测试向量。
  5. DFT 仿真验证: 在门级仿真中验证扫描链移位和捕获功能正确。
  6. ATE 测试与覆盖率签收: 将向量加载到自动测试设备,收集 fail log 并计算最终覆盖率。
DFT 设计流程六阶段 ① DFT 规划 策略文档 ② RTL 插入 TAP/扫描使能 ③ 综合+扫描链 寄存器替换 ④ ATPG 生成 测试向量 ⑤ DFT 仿真 门级验证 ⑥ ATE 测试 覆盖率签收 阶段 ③~⑤ 通常需要迭代 2~3 轮:覆盖率不达标 → 增加测试点 → 重新综合 → 重新 ATPG 迭代收敛后,最终覆盖率数据作为芯片良率分析的输入

1.6 本章小结