二、可测试性设计基础:扫描链设计、ATPG基本流程、故障模型与测试覆盖率概念

可测试性设计(Design for Testability, DFT)是ASIC设计流程中连接功能实现与量产质量的关键桥梁。随着芯片集成度不断提高,测试向量生成与故障诊断的复杂度呈指数级增长。本章将系统阐述DFT的三大核心支柱:扫描链设计的物理实现与约束、ATPG(自动测试向量生成)的标准流程,以及故障模型与测试覆盖率之间的量化关系。理解这些基础概念,是后续掌握测试模式压缩与X容忍逻辑设计的必要前提。

DFT基础架构与测试覆盖率形成链路 扫描链设计 • 扫描触发器替换(SCAN FF) • 扫描使能(SE)与时钟控制 • 扫描输入/输出(SI/SO) • 链平衡与布线约束 • 压缩逻辑插入点 ATPG基本流程 ① 网表与库文件读入 ② DRC规则检查 ③ 故障列表建立 ④ 向量生成与压缩 ⑤ 覆盖率统计与输出 故障模型与覆盖率 • Stuck-At 0/1 故障 • 转换延迟故障(TDF) • 路径延迟故障 • 测试覆盖率 = 检测故障/总故障 • 故障分级(FC/DC/TC) 测试覆盖率(Fault Coverage) = 检测到的故障数 / 可检测故障总数 × 100% 目标:≥98%(Stuck-At),≥95%(TDF),≥90%(Path Delay) DFT实现流程 RTL设计 → DFT插入 → 扫描链验证 → ATPG → 覆盖率分析 注:扫描链是ATPG的物理基础,故障模型是覆盖率计算的数学抽象

2.1 扫描链设计:从普通触发器到可观测/可控单元

扫描链设计的本质是将芯片内部不可直接访问的时序单元(触发器)转化为可串行移位访问的测试端口。其核心原理是在每个触发器前增加一个多路选择器(MUX),在测试模式(Scan Enable, SE=1)下,触发器首尾相连形成移位寄存器链,从而实现对内部状态的直接写入(扫描输入SI)与读出(扫描输出SO)。

2.1.1 核心原理:扫描触发器的结构

标准扫描触发器(Scan Flip-Flop)在功能触发器的D输入端前插入一个2选1MUX。当SE为低电平时,电路正常工作,数据来自功能逻辑(D);当SE为高电平时,数据来自前一级扫描输出(Q),形成移位路径。这种设计的代价是约5%-10%的面积开销和额外的布线资源,但换来了对内部节点100%的可控性与可观测性。

关键设计参数:扫描链长度(即链上触发器数量)直接影响测试时间。假设链长为L,测试向量数为N,则移位时间为N×(L+1)个时钟周期。因此,链长通常控制在500-2000个触发器之间,以平衡测试时间与I/O引脚开销。

2.1.2 判断方法:扫描链设计质量检查清单

  • 时钟域检查:同一扫描链内的触发器必须属于同一时钟域,或使用锁存器(Lockup Latch)隔离不同时钟沿。
  • 异步复位/置位处理:扫描触发器必须使用同步复位或异步复位可屏蔽设计,否则在移位过程中可能被复位信号干扰。
  • 三态总线与高阻态:扫描链中不允许出现三态门直接驱动触发器,需增加隔离逻辑。
  • 组合回路:必须通过Lint检查确保无组合逻辑环路,否则ATPG无法生成确定向量。

2.1.3 案例拆解:多时钟域扫描链平衡设计

某AI加速芯片设计包含3个时钟域(CPU域1.2GHz、NPU域800MHz、IO域200MHz)。初始DFT方案将全部触发器串联为一条长链,导致跨时钟域路径出现setup违例。分析发现,CPU域触发器在1.2GHz下移位,而IO域触发器在200MHz下移位,数据在跨域边界无法满足时序要求。

解决方案:将扫描链拆分为3条独立链,每条链对应一个时钟域,并在跨域边界插入锁存器(Lockup Latch)以吸收时钟偏斜。同时,为每条链分配独立的扫描使能信号,允许不同时钟域以不同频率进行移位测试。最终,测试覆盖率从92%提升至98.5%,测试时间仅增加12%。

风险提示:扫描链拆分过多会增加测试引脚需求。若芯片封装引脚受限,可采用压缩技术(见后续章节)减少扫描输出端口数量。

2.1.4 常见误区与总结

  • 误区一:认为扫描链越长越好。实际上,长链导致测试时间线性增长,且单点故障可能影响整条链的移位功能。
  • 误区二:忽略扫描使能信号的时钟树综合。SE信号必须在时钟沿之前稳定,否则会导致移位数据错误。
  • 误区三:未处理好存储器(SRAM)与扫描链的接口。存储器通常使用BIST(内建自测试)而非扫描链,两者需要独立设计。

2.2 ATPG基本流程:从网表到测试向量的自动化路径

ATPG(Automatic Test Pattern Generation)是DFT流程中的核心计算环节,其目标是在给定网表和故障模型下,自动生成能够区分“好电路”与“故障电路”的输入向量序列。现代ATPG工具(如Tessent、Modus、DFTMAX)基于结构化算法(如D算法、PODEM、FAN)实现。

2.2.1 核心原理:ATPG的五个标准阶段

  1. 设计规则检查(DRC):验证网表是否符合可测试性规则,如无未初始化触发器、无不可控时钟等。
  2. 故障列表建立:根据工艺库和网表生成所有可能的物理缺陷对应的逻辑故障。
  3. 故障压缩(Fault Collapsing):通过等价故障和支配故障合并,减少需要处理的故障数量(通常可减少50%-70%)。
  4. 向量生成:对每个目标故障,使用路径敏化法生成测试向量。算法尝试将故障效应传播到可观测输出。
  5. 向量压缩与输出:合并兼容向量,生成最终测试集,格式为WGL/STIL/VCD等标准文件。

2.2.2 操作流程:ATPG运行的关键参数设置

// 典型ATPG运行脚本(Tessent环境示例)
read_netlist ./top_netlist.v
read_library ./tsmc28hpc.lib
add_scan_chain -name chain0 -clock CLK -si SI0 -so SO0
add_scan_chain -name chain1 -clock CLK -si SI1 -so SO1
set_fault_model stuck_at
set_coverage_goal 98.5
run_atpg -auto_compress
report_fault_coverage
write_patterns ./test_patterns.stil -format stil

上述脚本展示了ATPG运行的核心步骤。其中set_coverage_goal定义了目标覆盖率,工具会迭代生成向量直到达到目标或无法再提高。运行时间与设计规模、故障数量、约束复杂度直接相关,通常一个百万门级设计需要数小时至数天。

2.2.3 案例拆解:覆盖率不达标时的调试过程

某通信基带芯片在ATPG后报告Stuck-At覆盖率为96.3%,未达到98%的签核标准。初步分析发现,未检测故障集中在两个区域:一是时钟门控单元(ICG)内部的锁存器,二是异步FIFO的读写指针逻辑。

调试步骤:

  • 使用report_untestable_faults命令导出未检测故障列表,按层次化模块分组。
  • 发现ICG锁存器因时钟关闭时无法移位,导致故障不可测。解决方案:在ICG输出端增加测试点(Test Point),强制在测试模式下开启时钟。
  • 异步FIFO指针逻辑因跨时钟域路径无法在单时钟ATPG中建模。解决方案:将FIFO设置为透明模式(Bypass),或使用专门的异步测试协议。

经过上述修改后,覆盖率提升至98.7%,但测试向量数增加了15%。通过向量压缩(Static Compaction)最终将向量数控制在可接受范围内。

经验总结:覆盖率不达标时,优先检查不可测故障的根因分类。通常分为:ATPG限制(如时钟门控)、设计限制(如异步逻辑)、库限制(如未建模单元)。针对不同根因采取不同修复策略。

2.2.4 常见误区与总结

  • 误区一:认为ATPG覆盖率越高越好。实际上,超过99%后,每提升0.1%可能需要增加数倍向量数,导致测试成本急剧上升。
  • 误区二:忽略ATPG运行时间与内存消耗。对于大规模SoC,建议采用层次化ATPG(Hierarchical ATPG),先对子模块生成向量,再在顶层进行拼接。
  • 误区三:未在ATPG前进行完整的时序约束。若SDC约束不完整,工具可能生成违反时序的向量,导致测试失败。

2.3 故障模型与测试覆盖率:量化测试质量的数学基础

故障模型是对物理缺陷的抽象描述,它将制造过程中可能出现的短路、断路、参数漂移等物理现象映射为逻辑级行为变化。测试覆盖率则是衡量测试集有效性的核心指标,直接关系到芯片的缺陷水平(DPPM, Defective Parts Per Million)。

2.3.1 核心原理:三大主流故障模型

故障模型物理缺陷对应检测方法典型覆盖率目标
Stuck-At(固定故障)信号线短路到VDD/GND逻辑值0/1敏化≥98%
Transition Delay(转换延迟)晶体管开关速度变慢双向量(慢-快沿)≥95%
Path Delay(路径延迟)关键路径累积延迟超限时序敏感双向量≥90%

Stuck-At模型是最基础的故障模型,假设节点永久固定为逻辑0或1。转换延迟模型则关注节点在时钟沿到来时能否正确翻转,需要两个连续向量(初始化向量+启动向量)。路径延迟模型进一步考虑最长路径的时序裕量,对高速设计尤为重要。

2.3.2 判断方法:覆盖率计算与分级

测试覆盖率(Fault Coverage, FC)的计算公式为:

FC = (检测到的故障数) / (总故障数 - 未检测故障中的冗余故障数) × 100%

其中“冗余故障”指不影响电路功能的故障(如与门输入短接到0),这类故障在逻辑上不可检测,应从分母中剔除。实际工程中,还常使用以下分级指标:

  • DC(Detected Coverage):明确检测到的故障比例。
  • TC(Test Coverage):包含可能检测到的故障(如通过观察窗口间接检测)。
  • UD(Undetected):未检测故障,需进一步分析。

2.3.3 案例拆解:DPPM与覆盖率的关系量化

假设某芯片制造缺陷密度为0.5 defects/cm²,芯片面积为100mm²,则平均每颗芯片有0.5个缺陷。若测试覆盖率为98%,则漏检缺陷率为2%,对应DPPM约为10,000(即每百万颗芯片中有10,000颗可能存在缺陷)。若将覆盖率提升至99.5%,DPPM降至5,000,但测试向量数可能增加3倍。

工程决策:对于消费电子芯片,DPPM在500-1000可接受;对于汽车电子(AEC-Q100 Grade 1),DPPM需低于100。因此,汽车芯片通常要求Stuck-At覆盖率≥99.5%,并额外增加TDF测试。这解释了为何DFT工程师需要在覆盖率与测试成本之间进行精细权衡。

关键公式:缺陷水平(DPPM) ≈ (1 - 测试覆盖率) × 缺陷密度 × 芯片面积 × 10⁶。该公式帮助量化覆盖率提升对质量的实际影响。

2.3.4 常见误区与总结

  • 误区一:混淆故障覆盖率与缺陷覆盖率。故障覆盖率基于逻辑模型,缺陷覆盖率基于物理缺陷统计,两者存在差异。
  • 误区二:忽略X态(未知态)对覆盖率的影响。仿真中X态传播可能导致故障被误判为“未检测”,需使用X态抑制技术(后续章节详述)。
  • 误区三:认为所有未检测故障都需要修复。部分故障属于“冗余故障”或“ATPG不可控故障”,可通过设计修改或接受风险处理。

2.4 本章总结与工程实践要点

可测试性设计基础是ASIC后端设计与测试工程师的必备技能。扫描链设计提供了物理访问通道,ATPG流程实现了自动化向量生成,故障模型与覆盖率指标则建立了质量度量体系。三者环环相扣:扫描链质量决定ATPG效率,故障模型选择影响覆盖率真实性,覆盖率目标又反过来约束扫描链设计策略。

工程实践清单:
  • 在RTL阶段即规划扫描链结构,避免后端布线阶段的大规模改动。
  • ATPG运行前,务必完成DRC检查并解决所有violation。
  • 建立覆盖率回归基线,每次网表修改后重新运行ATPG并对比覆盖率变化。
  • 对于多时钟域设计,优先采用分域扫描链+锁存器隔离方案。
  • 在测试向量交付前,使用门级仿真验证向量的有效性(Simulation vs. ATPG一致性检查)。