2. 测试策略制定:基于风险的测试策略、测试覆盖度分析

好,咱们进入第二章。上一章我们聊了为什么要做电源网络可靠性验证,这一章我重点讲讲怎么测的问题。

说实话,我刚入行那会儿,做PI测试就是“把所有能测的都测一遍”。结果呢?项目周期拖得很长,该发现的问题反而没发现。后来我慢慢悟出一个道理——测试不是越多越好,而是越精准越好。

那怎么做到精准?核心就两件事:基于风险的测试策略和测试覆盖度分析。

2.1 为什么要基于风险来制定策略?

你想想看,一颗复杂的SoC芯片,电源网络可能有几十个域、上千个节点。如果每个节点都做全参数测试,时间和成本根本扛不住。我见过一个团队,为了追求“100%覆盖”,测试项列了300多条,结果流片后最关键的VDD_CORE域出了问题,反而没测到。

所以,我的习惯是:先评估风险,再决定测什么、测多深。

核心原则: 把有限的测试资源,投入到风险最高的区域。

那风险怎么评估?我一般从三个维度看:

  • 功能关键性:这个电源域挂了,芯片还能不能用?比如CPU核心供电、PLL模拟供电,这些是“一票否决”的。
  • 设计复杂度:走线细、层数多、电流密度大的区域,风险天然就高。
  • 历史经验:之前类似项目出过问题的拓扑,这次要重点盯防。

2.2 风险矩阵:把模糊的感觉变成可量化的表格

光靠感觉不行,得有个工具。我个人喜欢用风险矩阵来量化。下面这个表是我在项目中常用的模板:

风险等级 功能关键性 设计复杂度 历史失效概率 测试优先级
高 (H) 核心逻辑、PLL、高速IO 走线宽度 < 3um,层数 > 6 同类设计曾失效 必须全覆盖
中 (M) 普通数字逻辑、低速IO 走线宽度 3-10um,层数 4-6 偶有失效 抽样测试
低 (L) 辅助电路、测试模式 走线宽度 > 10um,层数 < 4 极少失效 目检或免测

有了这个矩阵,你就能快速把芯片上的电源节点分门别类。高风险的,投入70%的测试资源;中风险的,投入25%;低风险的,5%就够了。

我的经验: 别把低风险项完全忽略。我曾经在一个“低风险”的辅助供电网络上栽过跟头——因为走线太细,大电流时压降超标,导致芯片在高温下重启。所以低风险不是不测,而是用低成本的方式验证,比如目检或者简单的DC测量。

2.3 测试覆盖度分析:你到底测了多少?

策略定好了,接下来要回答一个问题:我们的测试到底覆盖了多少?

覆盖度分析,说白了就是算一笔账。我常用的覆盖度指标有这几个:

  • 节点覆盖度:实际测试的电源节点数 / 总节点数 × 100%
  • 参数覆盖度:实际测试的参数项数 / 应测参数项数 × 100%
  • 工况覆盖度:实际测试的工况组合 / 设计规格中的工况组合 × 100%
  • 缺陷检测率:测试发现的缺陷数 / 总缺陷数(含未测出的)

嗯,这里要注意:覆盖度不是越高越好。我见过有人追求节点覆盖度100%,结果测了一堆冗余节点,真正关键的动态响应测试反而没时间做。我个人习惯,把覆盖度目标定在80%-90%之间,剩下的10%-20%留给风险分析和工程判断。

2.4 基于风险的测试流程

下面这张图是我在项目中常用的测试策略制定流程,你可以参考:

基于风险的测试策略制定流程 设计输入 风险识别 风险分级 制定测试方案 覆盖度分析 执行与反馈 反馈迭代 关键输入 设计文档、IR Drop报告 EM规则、历史失效数据 关键输出 测试优先级矩阵 覆盖度报告

这个流程看起来是线性的,但实际上执行与反馈这一步会不断往回迭代。比如你测完发现某个高风险区域覆盖度不够,那就得回到“制定测试方案”那一步,补充测试项。

2.5 实战中的覆盖度计算

光说不练假把式。我拿一个实际项目举例:

假设芯片有5个电源域,总共200个测试节点。按照风险矩阵,我们识别出:

  • 高风险节点:50个(CPU核心、PLL)
  • 中风险节点:100个(普通逻辑)
  • 低风险节点:50个(辅助电路)

测试方案定的是:高风险全测,中风险抽30%,低风险抽10%。那实际测试节点数就是:

高风险:50 × 100% = 50个
中风险:100 × 30% = 30个
低风险:50 × 10% = 5个
总计:50 + 30 + 5 = 85个

节点覆盖度 = 85 / 200 = 42.5%

你看,节点覆盖度只有42.5%,但高风险区域是100%覆盖的。这就是基于风险的策略——用42.5%的测试量,覆盖了90%以上的失效风险。

注意: 覆盖度计算不能只看节点数。我遇到过一种情况:节点覆盖度很高,但所有测试都是在常温、低频下做的,高温、高频的工况一个都没测。结果芯片在高温下IR Drop超标,直接挂掉。所以工况覆盖度和参数覆盖度同样重要,甚至更重要。

2.6 避坑指南:我踩过的几个坑

最后,分享几个我亲身经历过的教训:

  • 坑一:过度依赖仿真数据。仿真说某个节点压降只有1%,我就没把它列为高风险。结果实测出来是3.5%,因为仿真模型没考虑封装寄生。后来我学乖了:仿真结果只能作为参考,不能替代实测。
  • 坑二:忽略动态测试。静态DC测试只能测稳态压降,但芯片工作时电流是动态变化的。我有个项目,静态测试全过,结果芯片在负载跳变时电压跌了15%,直接复位。从那以后,动态响应测试成了我必测的项目。
  • 坑三:覆盖度报告造假。这个说起来有点尴尬。有次项目赶进度,测试团队为了凑覆盖度,把一些没测的节点也写进了报告。结果流片后出了问题,追责时才发现覆盖度是假的。所以我的原则是:宁可覆盖度低,也不能造假。低覆盖度可以补测,造假会毁掉整个团队的信任。