1. DFT 基础概念:可测试性设计的定义、重要性及在芯片设计流程中的位置
1.1 可测试性设计 (DFT) 的定义
可测试性设计(Design for Testability, DFT)是一系列在芯片前端逻辑设计阶段就预先植入的硬件结构和方法论的总称。其核心目标是在芯片制造完成后,能够以较低的成本、较高的效率,通过自动测试设备(ATE)对芯片内部的物理缺陷和逻辑故障进行检测、定位与隔离。
DFT 并非一种“事后补救”的测试手段,而是将“可测试性”作为与“功能”、“性能”、“功耗”并列的设计约束,提前融入芯片的寄存器传输级(RTL)代码或网表中。
DFT 的本质: 通过增加少量硬件开销(通常为 5%~15%),换取对芯片内部数百万乃至数十亿个晶体管的可控性(Controllability)与可观性(Observability)。
1.2 DFT 的重要性:为什么需要它?
随着半导体工艺进入纳米级(如 7nm、5nm),芯片集成度呈指数级增长。一颗 SoC 可能包含数十亿个逻辑门,传统的“功能测试”已无法覆盖所有潜在缺陷。DFT 的重要性体现在以下三个维度:
| 维度 | 挑战 | DFT 解决方案 |
|---|---|---|
| 测试质量 | 功能测试向量难以达到高故障覆盖率(>95%),漏检率上升 | 通过扫描链(Scan Chain)和内建自测试(BIST)实现结构化测试,故障覆盖率可达 99% 以上 |
| 测试成本 | ATE 测试时间与向量深度成正比,高端 ATE 每小时成本高达数百美元 | 压缩 DFT 结构(如 EDT)可减少 10~100 倍测试数据量,显著降低测试时间 |
| 良率分析 | 芯片失效后难以定位是设计 Bug 还是制造缺陷 | 故障诊断(Diagnosis)可精确到具体标准单元或金属层,加速良率爬坡 |
工程警示: 没有 DFT 的芯片在量产阶段几乎等同于“盲测”。一颗 100 万门的 ASIC,若仅靠功能测试,其测试向量长度可能超过 10GB,而通过扫描链测试,向量可压缩至 100MB 以内。
1.3 DFT 在芯片设计流程中的位置
DFT 并非独立于前端设计或后端实现的孤立环节,它贯穿于整个芯片开发流程。下图展示了 DFT 在典型 ASIC/SoC 设计流程中的关键插入点与交互关系:
1.4 DFT 设计的关键活动清单
在芯片设计流程中,DFT 工程师需要执行以下核心任务。这些活动通常与前端设计、后端实现和测试部门并行开展:
- DFT 架构规划: 确定扫描链数量、BIST 策略、测试端口(JTAG/IEEE 1149.1)及测试压缩方案。
- RTL 级 DFT 插入: 将普通触发器替换为可扫描触发器(Scan Flip-Flop),并连接成扫描链。
- ATPG 向量生成: 使用自动测试向量生成工具(如 TetraMAX、FastScan)产生测试向量。
- DFT 规则检查: 验证扫描链是否满足 DFT 设计规则(如无时钟门控冲突、无异步置位/复位冲突)。
- 测试向量仿真: 在门级网表上仿真测试向量,确保时序正确且无 X 态传播问题。
- ATE 测试程序开发: 将 ATPG 向量转换为 ATE 可执行的测试程序(如 STIL、WGL 格式)。
- 故障诊断与良率分析: 对失效芯片进行逻辑诊断,定位缺陷坐标并反馈给工艺团队。
工程经验: 在 28nm 及以下工艺节点,建议在 RTL 冻结前完成 DFT 架构评审。一个常见的教训是:后端阶段才发现扫描链时序不满足,导致需要重新综合,项目周期因此延误 2~4 周。
1.5 可测试性设计的量化指标
DFT 设计的优劣通常通过以下三个量化指标来评估:
| 指标 | 定义 | 典型目标值 | 测量工具 |
|---|---|---|---|
| 故障覆盖率 | 检测到的故障数 / 总故障数(基于 stuck-at 模型) | > 98% | ATPG 工具 |
| 测试数据量 | ATE 加载到芯片的测试向量总比特数 | < 500 Mb(取决于芯片规模) | ATPG 工具 + 压缩分析 |
| 测试时间 | ATE 执行全部测试向量所需的时间 | < 5 秒(消费类芯片) | ATE 仿真 + 向量周期计算 |
上述指标之间通常存在 trade-off。例如,提高故障覆盖率往往需要增加测试向量,进而导致测试时间延长。DFT 工程师的核心能力之一,就是在这些约束之间找到最优平衡点。