3、存储器测试基础:测试原理、故障模型分类、测试覆盖率定义、ATPG与BIST对比

存储器测试是ASIC设计中确保芯片可靠性的关键环节。随着工艺节点不断微缩,存储器在SoC中所占面积比例已超过60%,其良率直接影响整体芯片的良率。本章从测试的基本原理出发,系统阐述存储器故障模型的分类方法、测试覆盖率的量化定义,并深入对比ATPG(自动测试向量生成)与BIST(内建自测试)两种主流测试策略的工程适用性,为后续BIST算法设计与诊断修复逻辑设计奠定理论基础。

存储器测试基础 — 知识架构与测试策略对比 故障模型分类 固定故障 (SAF) 转换故障 (TF) 耦合故障 (CF) 地址译码故障 (AF) 数据保持故障 读破坏故障 (RDF) 测试覆盖率定义 故障覆盖率 FC = (检测故障数 / 总故障数) × 100% 缺陷覆盖率 / 故障覆盖率 / 测试效率 DPPM = (1 - Y) × 10⁶ 百万分之缺陷率与覆盖率关系 ATPG vs BIST 对比 ATPG 外部ATE测试 向量存储需求大 BIST 片上自测试 无需外部向量 存储器测试流程 故障建模 算法选择 向量生成 故障仿真 覆盖率评估 测试覆盖率是连接故障模型与测试算法的桥梁,直接决定DPPM水平 ATPG适合小容量存储器,BIST适合大容量嵌入式存储器

3.1 存储器测试的核心原理

存储器测试的本质是通过施加特定的读写序列(测试算法),激发存储器内部可能存在的物理缺陷,使其表现为可观测的逻辑错误。与逻辑电路测试不同,存储器具有高度规则的结构——存储单元阵列按行和列排列,地址译码器、读写驱动电路、灵敏放大器等外围电路环绕四周。这种规则性使得存储器测试可以采用结构化的算法化方法,而非随机向量。

测试的基本流程包括:故障建模(将物理缺陷抽象为逻辑故障)→ 算法选择(根据故障模型选择测试序列)→ 向量生成(将算法映射为具体的地址和数据序列)→ 故障仿真(验证算法对故障模型的检测能力)→ 覆盖率评估(量化测试质量)。这一流程贯穿存储器测试的全生命周期,无论是采用ATPG还是BIST,其底层逻辑完全一致。

核心原理要点:存储器测试的三大支柱——可控性(能够将存储单元置于任意期望状态)、可观测性(能够读取存储单元的实际状态)、可区分性(能够区分不同故障类型)。任何测试算法都必须同时满足这三个条件,否则将产生测试盲区。

3.2 存储器故障模型分类

故障模型是物理缺陷的逻辑抽象。在存储器测试领域,业界已经形成了标准化的故障模型体系,每个模型对应一类特定的物理缺陷机制。理解故障模型是选择测试算法的基础,也是计算测试覆盖率的依据。

故障模型 英文缩写 物理缺陷机制 检测要求
固定故障 SAF 存储节点短路到VDD或GND,或开路 对每个单元写0和写1并读回
转换故障 TF 单元无法完成0→1或1→0的跳变 需要上升沿和下降沿转换序列
耦合故障 CF 一个单元的跳变影响相邻单元 需要特定地址遍历顺序(升序/降序)
地址译码故障 AF 地址译码器无法正确选择目标单元 需要全地址遍历和读写验证
数据保持故障 DRF 存储节点漏电导致数据丢失 需要延时等待后读回验证
读破坏故障 RDF 读操作本身破坏存储数据 需要连续多次读同一单元

在实际工程中,March算法是检测上述故障模型最有效的测试序列。March算法由一系列March元素组成,每个March元素包含一个地址遍历顺序(升序↑、降序↓或任意⇑)和一组读写操作(写0、写1、读0、读1)。例如,March C-算法可以检测SAF、TF、CF、AF等绝大多数故障模型,其时间复杂度为O(10N),其中N为存储单元总数。

工程经验:在65nm及以下工艺节点,耦合故障(CF)和读破坏故障(RDF)的发生概率显著上升。建议在BIST算法中优先考虑March C-或March SS算法,它们对这两类故障的覆盖率可达99%以上。对于先进工艺(28nm以下),还需考虑多单元耦合故障(如CFst)和复杂保持故障。

3.3 测试覆盖率定义与计算方法

测试覆盖率是衡量测试质量的核心指标,直接关系到芯片的缺陷水平(DPPM)。在存储器测试中,覆盖率通常指故障覆盖率(Fault Coverage, FC),定义为被测试算法检测到的故障数占故障总数的百分比。

故障覆盖率的计算需要经过故障注入与仿真流程:首先在存储器RTL或网表级别注入特定故障模型(如将某个存储单元的节点强制为0),然后运行测试算法,观察是否能够检测到该故障。对所有可能的故障位置重复此过程,最终统计检测到的故障比例。

// 故障覆盖率计算伪代码
fault_list = generate_faults(memory_model, fault_model);  // 生成故障列表
detected_count = 0;
for each fault in fault_list:
    inject_fault(fault);           // 注入故障
    run_test_algorithm();          // 运行测试算法
    if (test_result == FAIL):      // 检测到故障
        detected_count++;
    remove_fault(fault);           // 清除故障
fault_coverage = detected_count / fault_list.size() * 100;

除了故障覆盖率,业界还使用缺陷覆盖率(Defect Coverage)和测试效率(Test Efficiency)两个指标。缺陷覆盖率考虑了故障等价关系(多个故障可能被同一测试向量检测),测试效率则考虑了不可检测故障(如冗余故障)的影响。在工程实践中,通常要求存储器BIST的故障覆盖率≥99%,对应DPPM目标值需根据芯片应用场景确定。

风险提示:覆盖率100%并不等于零缺陷。故障覆盖率仅反映对已建模故障的检测能力,未建模的物理缺陷(如时序相关故障、参数漂移故障)可能完全逃逸。因此,在制定测试策略时,应结合工艺成熟度、产品应用场景和成本约束,合理设定覆盖率目标,而非盲目追求100%。

3.4 ATPG与BIST对比分析

ATPG(自动测试向量生成)和BIST(内建自测试)是存储器测试的两种主流实现方式。两者在测试原理上相同,但在工程实现、成本、覆盖率和可诊断性方面存在显著差异。

对比维度 ATPG BIST 优选场景
测试设备 依赖外部ATE(自动测试设备) 片上自测试,无需ATE BIST
向量存储 需要ATE存储大量测试向量 片上生成,无存储需求 BIST
测试时间 受ATE频率限制,通常较慢 可运行在系统时钟频率,速度快 BIST
故障诊断 可通过ATE日志精确定位故障 需要额外诊断逻辑,分辨率较低 ATPG
面积开销 无额外面积开销 约5%-10%存储器面积 ATPG
可扩展性 容量增大时向量指数增长 算法复杂度线性增长 BIST
现场测试 无法支持 支持上电自检和在线测试 BIST

从工程实践角度,混合策略正成为主流:在芯片量产测试阶段,使用BIST进行快速筛选,同时利用ATPG对BIST诊断出的故障进行精确定位和良率分析。这种策略兼顾了测试效率和可诊断性,尤其适用于大容量嵌入式存储器(如SoC中的Cache、Buffer等)。

3.5 案例拆解:某AI芯片SRAM测试策略设计

以一个实际的AI加速芯片设计为例,该芯片包含32个SRAM宏单元,总容量约8MB,采用28nm工艺。设计约束包括:芯片面积预算紧张(BIST面积开销需控制在5%以内)、量产测试时间要求严格(每颗芯片测试时间≤2秒)、需要支持现场诊断(用于客户返修分析)。

初始方案:全部采用ATPG测试。经评估,8MB SRAM的ATPG向量约需120万条,在ATE频率200MHz下测试时间约6秒,远超2秒的预算。且ATE向量存储深度不足,需要分多次加载,进一步增加测试成本。

优化方案:采用BIST+ATPG混合策略。对32个SRAM宏单元统一配置BIST控制器,采用March C-算法(10N复杂度),在500MHz系统时钟下测试时间仅需约16ms(8MB×10/500MHz≈0.16秒)。同时保留ATPG接口,仅对BIST诊断出的故障单元进行定向ATPG测试,用于精确定位。

实施结果:BIST面积开销约4.2%(满足预算),量产测试时间降至0.8秒(含ATPG定向测试),故障覆盖率99.3%(满足≥99%要求)。在客户返修分析中,通过BIST诊断寄存器定位到具体宏单元和行地址,结合ATPG进一步定位到具体列和位线,修复效率提升60%。

案例复盘:该案例的关键决策点在于——根据测试目标分层选择策略。量产筛选追求速度和覆盖率,选择BIST;故障定位追求精度,选择ATPG。两者互补而非替代,这是当前业界最成熟的存储器测试架构。

3.6 常见误区与总结

在存储器测试基础设计中,工程师常陷入以下误区:

  • 误区一:认为故障覆盖率越高越好,忽视测试时间和成本约束。实际上,覆盖率从99%提升到99.9%可能需要增加3-5倍的测试向量,而DPPM改善有限。
  • 误区二:只关注单一故障模型,忽视多故障同时存在的场景。实际缺陷往往同时引发多种故障行为,测试算法应具备对复合故障的检测能力。
  • 误区三:BIST设计完成后不进行故障仿真验证。BIST逻辑本身也可能存在缺陷,必须通过故障注入验证BIST电路自身的正确性。
  • 误区四:忽视测试覆盖率与DPPM的定量关系。在汽车电子等安全关键领域,需要根据ISO 26262标准明确故障覆盖率目标,并形成完整的测试报告。