芯片dft覆盖率

📅 2026/7/8 13:37:21 👁️ 阅读次数 📝 编程学习
芯片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-1detected_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 integrity100% (无断链)
故障层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 pointset_dft_configuration -observability enable
70 个 shift-register强制替换为 scan cellset_scan_configuration -replace true
ICG 相关 fault确保 test pin 连接 + 加 observation pointreport_clock_gating -test_pin
组合逻辑 undetected fault增加 ATPG effort / 加 test pointTetraMAXset_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 故障覆盖率。