芯片dft覆盖率
ATPG+DC-SCAN
- 覆盖率分类体系
- DC-Scan 的覆盖率指标
- ATPG 的覆盖率指标
- 核心关系:DC-Scan 是 ATPG 的前提
- 完整覆盖率计算流程
- Step 1: DC-Scan 阶段(结构验证):
- Step 2:ATPG 阶段(TetraMAX)
- Step 3: 综合覆盖率报告
- 提高覆盖率的建议
- 快速检查清单
覆盖率分类体系
┌─────────────────────────────────────────┐
│ 芯片级测试覆盖率 │
├─────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ DC-Scan │ │ ATPG │ │
│ │ (结构测试) │ │ (向量生成) │ │
│ │ │ │ │ │
│ │ • Scan cell │ │ • Stuck-at │ │
│ │ 插入率 │ │ • Transition │ │
│ │ • Chain │ │ • Path Delay │ │
│ │ 完整性 │ │ • IDDQ │ │
│ └─────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ BIST / MBIST / LBIST │ │
│ │ (Memory / Logic 自测试) │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 功能测试 / 模拟测试 │ │
│ │ (Analog / IO / 边界扫描) │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
DC-Scan 的覆盖率指标
DC-Scan 阶段关注的是结构覆盖率,不是故障覆盖率:
| 指标 | 含义 | 计算方式 |
|---|---|---|
| Scan Cell Insertion Rate | 时序单元被替换为 scan cell 的比例 | scan_cells / total_sequential_cells × 100% |
| Scan Chain Coverage | 设计中有多少逻辑在 scan chain 可达范围内 | 基于可控制性/可观测性分析 |
| Controllability | 通过 scan 端口控制内部节点的能力 | SCOAP 算法 / 概率分析 |
| Observability | 通过 scan 端口观测内部节点的能力 | SCOAP 算法 / 概率分析 |
ATPG 的覆盖率指标
ATPG(Automatic Test Pattern Generation)关注的是故障覆盖率:
| 故障模型 | 说明 | 覆盖率计算 |
|---|---|---|
| Stuck-at | 节点固定 stuck-at-0 或 stuck-at-1 | detected_faults / total_faults × 100% |
| Transition (at-speed) | 慢速-to-快速或快速-to-慢速转换延迟故障 | 同上 |
| Path Delay | 特定路径的延迟故障 | 基于关键路径覆盖 |
| IDDQ | 静态电流故障 | 基于 quiescent 电流测量 |
| Bridge | 相邻线短路故障 | 基于物理邻近性分析 |
核心关系:DC-Scan 是 ATPG 的前提
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ DC-Scan 插入 │ → │ ATPG 向量生成 │ → │ 故障覆盖率报告 │
│ │ │ │ │ │
│ • Scan cell │ │ • 基于 scan │ │ • Stuck-at: 98% │
│ • Scan chain │ │ chain 结构 │ │ • Transition: 95%│
│ • Test pin │ │ • 自动生成测试 │ │ • Total: 97% │
│ 连接 │ │ 向量 │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
↑ ↑
结构覆盖率 故障覆盖率
(90-100%) (目标 >95%)
| 问题 | 答案 |
|---|---|
| DC-Scan 覆盖率 + ATPG 覆盖率? | ❌不是相加关系 |
| DC-Scan 是 ATPG 的什么? | ✅前提条件和基础设施 |
| 没有 DC-Scan 能做 ATPG 吗? | ⚠️ 很难,除非是全功能测试 |
| ATPG 覆盖率依赖什么? | 依赖 scan chain 的完整性和可访问性 |
完整覆盖率计算流程
Step 1: DC-Scan 阶段(结构验证):
# DC/ICC2 中报告 scan 结构覆盖report_scan_configuration report_scan_chain-all## 计算 scan cell insertion ratesettotal_seq[sizeof_collection[get_cells-hier-filter"is_sequential==true"]]setscan_cells[sizeof_collection[get_cells-hier-filter"scan==true"]]setinsertion_rate[expr double($scan_cells) / $total_seq * 100]echo"Scan cell insertion rate: ${insertion_rate}%"Step 2:ATPG 阶段(TetraMAX)
# TetraMAX 中运行 ATPG 并报告故障覆盖率run_atpg-auto report_summaries# 或详细报告report_faults-summary report_faults-level{undetected detected}report_faults-class{DS DI PU PT UD UU}Step 3: 综合覆盖率报告
| 层级 | 指标 | 目标值 |
|---|---|---|
| 结构层 | Scan cell insertion rate | > 95% |
| Scan chain integrity | 100% (无断链) | |
| 故障层 | Stuck-at fault coverage | > 98% |
| Transition fault coverage | > 90% (at-speed) | |
| Total fault coverage | > 95% | |
| 系统层 | Test Escape Rate (DPM) | < 100-500 DPM |
提高覆盖率的建议
| 瓶颈 | 解决方案 | 工具 |
|---|---|---|
| 2 个 intentional non-scan cell | 加 observation point | set_dft_configuration -observability enable |
| 70 个 shift-register | 强制替换为 scan cell | set_scan_configuration -replace true |
| ICG 相关 fault | 确保 test pin 连接 + 加 observation point | report_clock_gating -test_pin |
| 组合逻辑 undetected fault | 增加 ATPG effort / 加 test point | TetraMAXset_atpg -effort high |
| 延迟故障 | 加 transition fault ATPG + at-speed 测试 | TetraMAXcreate_patterns -type transition |
快速检查清单
# ============================================# DC 阶段:确认 scan 结构# ============================================report_scan_configuration report_scan_chain-all report_clock_gating-test_pin-verbose report_dft_drc-summary# ============================================# TetraMAX 阶段:确认故障覆盖# ============================================# 读入 design + scan protocolread_netlist design.v run_build_model top run_drc scan.spf# 运行 ATPGadd_faults-all run_atpg-auto# 报告覆盖率report_summaries report_faults-summary report_faults-level undetected# 如果 coverage 不足,加 test point 或提高 effortset_atpg-effort high run_atpg-auto总结:DC-Scan 覆盖率和 ATPG 覆盖率不是相加关系,而是层次递进关系**——DC-Scan 提供结构基础,ATPG 在此基础上生成向量并计算故障覆盖率。最终 sign-off 看的是 ATPG 故障覆盖率。
