Fault Injection Testing — 安全机制有效性的唯一硬证据

功能安全L2别名 fault injection testing · FIT 故障注入 · HW fault injection · SW fault injection · 故障注入仿真 · mutation testing · SBFI saboteur · 安全机制有效性验证 · 更新

本质与导读

本质 FMEDA 分析给出的 DC(Diagnostic Coverage)是理论上界,不是实测值。唯一把上界变成可向 OEM 和第三方评估机构出示的硬证据的方法是 fault injection test(FI):故意注入已知故障,看安全机制(SM)在规定的容错时间(FTTI)内能否检出并正确反应。ISO 26262-5 §11 对数字 IC ASIL D 强制执行此测试,没有它 FMEDA 算出的 SPFM 99% 在评审会就是空话。

主线坐标:横轨 · 功能安全(跨站) · ↑ 全景主线

1. 为什么必须做 Fault Injection

FMEDA 以"诊断机制能检出这类故障"为前提对每个失效模式赋 DC 值。但这个前提是分析假设,不是工程事实:SM 实现细节、时序、交互条件都可能让实际 DC 低于分析假设值。ISO 26262 把这个差距定义为需要用实测来闭合的风险。

1.1 分析 vs 实证的差距

DC 的计算基础是:

ISO 26262 Part 5 Annex D 提供的 generic DC(60 % / 90 % / 99 %)是典型上界,针对的是"该类 SM 在理想实现下的覆盖率"。真实项目里同一类 SM 的 specific DC 可能低 2–5 个百分点——SM 实现细节、timing、边界 case 都会吃掉裕度。例如:一个 watchdog 在 Annex D 表里被赋值 90 %(Medium),但如果 WD 喂狗窗口设置得太宽(1 s),则针对 CPU 死锁在 FTTI = 100 ms 内的有效检出率实际上是 0,specific DC 应降为 Low 或 None。只有 fault injection test 能暴露这类分析盲区

下面这张方法分类全景把后续各节的 HWFI 三层、SWFI 三法、4 类 fault model 与 campaign 五步收拢到一张图,便于先建立整体心智模型再逐节深入:

故障注入方法分类 — HWFI 3 层(pre-silicon/silicon/system)与 SWFI 3 法(saboteur/mutation/instrumentation),4 类 fault model 与 campaign 5 步,核心是实证 SM 反应而非覆盖率

1.2 ISO 26262 强制要求

ISO 26262 对 fault injection 的强制程度因层级不同有差异,但 ASIL D 路径上没有豁免。Part 5 Annex D 要求用 FI 评估 hardware SM 的 DC;Part 11 Annex C 对数字 IC(包括 MCU)进一步强制:structural DC 必须由 RTL 级 fault injection simulation 证实。第三方评估机构(TÜV / Bureau Veritas)在 ASIL D 确认审查时会直接问"FI 报告在哪里",没有就让补。

  • Part 5 Annex D:推荐用 fault injection 评估 hardware SM 的 DC
  • Part 11 Annex C:数字 IC 的 DC 评估强制用 fault injection simulation(structural coverage)
  • ASIL D Confirmation Review:审计员会索取 FI 报告作为 SPFM 合规证据

1.3 三个不替代关系

Fault injection 与其他 verification 是互补关系,但在"证明 SM 对指定故障在 FTTI 内有效"这一点上无可替代。代码 review 发现规范和风格问题,但不知道 SM 在真实故障激励下是否反应;单元测试验证 SM 自身代码逻辑,但不验它对硬件故障的响应;静态分析找 null 解引用和死代码,与故障反应时序无关。三者合力只能覆盖 SM 的"设计正确性",fault injection 覆盖的是"运行时有效性"——ASIL D 两者都要做。

2. Fault Models — 4 类经典模型

在开始注入之前,必须先定义"注入什么故障"。ISO 26262 不规定具体 fault model,但工业实践收敛到以下 4 类,各自对应的物理失效机理不同:

2.1 4 类经典 fault model

4 类 fault model 对应的物理失效不同,选择时要根据元件类型和失效模式目录(Annex B / D)决定:

Model物理对应模拟方式
Stuck-at-0 / Stuck-at-1信号永远卡在 0 或 1强制 wire 值不变
Transition fault0→1 或 1→0 跳变失败跳变时 hold 旧值
Bridging fault两根线短路强制两 wire 同值
SEU(Single Event Upset)宇宙射线翻转 1 bit在 RAM / flip-flop 翻一 bit

2.2 对应物理失效与车规覆盖要求

4 类模型的物理对应决定了在车规 ASIL D 项目中必须覆盖的最小集合。Stuck-at 对应开路 / Latchup / 老化;Transition 对应边沿速度退化 / clock skew;Bridging 对应 Layout 短路 / 焊点桥接;SEU 对应辐射(车规器件标 0.5–2 FIT/Mb DRAM)。车规 ASIL D 通常至少覆盖 stuck-at + SEU 两类;高完整性项目加 transition + bridging 凑齐 4 类。

3. Hardware Fault Injection — 3 个层次

Hardware FI 在时间线上分三个层次,越往后成本越高、但越接近真实物理失效。三者不是选一个,而是每一层针对不同问题,ASIL D 量产项目通常三层都要做。

3.1 Pre-silicon — RTL 仿真

Pre-silicon FI 在 VHDL / Verilog RTL 仿真中强制 wire/reg 值,是成本最低的一层。主流工具链是 Synopsys VC FI、Cadence Xcelium FI、Mentor Questa FI。可以跑几百万到几亿 fault scenario,覆盖数字逻辑的 structural DC。ASIL D 数字 IC 量产前必跑,典型 1–3 个月完成。缺点是仿真速度慢(实时 1 ms 仿真要几小时),只能验数字逻辑,不覆盖模拟电路和真实芯片制造差异。

3.2 Silicon Level — 实芯片测试

芯片做出来后需要在真实硅片上补充 FI,覆盖 RTL 仿真无法仿真的制造差异和模拟行为。内置自测(MBIST / LBIST)是最主要的 silicon-level FI 手段:MBIST 用 MarchC 等算法全覆盖 SRAM,LBIST 向逻辑注入随机测试向量后比对 signature。外部测试设备(Teradyne / Advantest)做 production test;聚焦离子束(FIB)可以物理切断 wire 模拟开路,主要用于研究性失效分析。

3.3 System Level — HIL / 实车

System-level FI 在整车或 HIL(Hardware-in-the-Loop)平台上注入故障,是最接近真实量产工况的一层。dSPACE SCALEXIO 是行业事实标准的 HIL 平台,配 ConfigurationDesk 编排 FI scenario。典型注入手段包括:dSPACE / Vector / NI 的 FI 模块在 ECU 输入端注短路 / 开路 / 信号偏移;Vector CANoe 注入伪造 / 漏发 / 延迟 CAN 报文;EMC 和温度腔体注入环境应力。EV 主驱 ASIL D 项目 100+ scenario 是常态,全部在 HIL 平台自动跑并记录 FTTI。

4. Software Fault Injection — 3 种方式

Software FI 通过代码或调试接口在 MCU 运行时注入故障,主要针对 SW SM 的有效性验证。三种方式各有适用层和覆盖范围。

4.1 Saboteur(SBFI)

Saboteur 在代码里插入故障注入模块,运行时按 trigger 注入目标值。这种方式对应用级 SM(如 plausibility check、range check)最有效,因为可以精确控制故障在应用数据流中的位置和时序:

result = compute_torque(input);
#ifdef FI_ENABLED
if (FI_active && FI_target == TORQUE_SM) {
    result = FI_inject(result, FI_pattern);  /* flip bits or clamp */
}
#endif

适合验证 SM 对特定数据 corruption 的反应,典型用于 HARA 驱动场景中每条 SG 故障路径的软件段。

4.2 Mutation Testing

Mutation testing 把生产代码"改坏"成多个 mutants,用测试套件看能否检出。改动模式包括把 < 改为 <=(off-by-one)、删除 if 条件、把 +- 等。

ISO 26262-6 并未在其方法表中规定具体的 mutation score 数值门槛(软件单元/集成测试方法表用 ++/+/o 定性推荐等级,非量化阈值);MS ≥ 90–95% 是工程实践中常见的内部质量目标,而非标准强制值。工具链:MicroFocus/Parasoft C++Test FI 模块、Frama-C Mutations、Bullseye。

4.3 Instrumentation(代码插桩)

插桩通过编译器 pass(LLVM / GCC plugin)在编译时注入 fault hook,运行时按规则触发,适合大规模自动化。Mathworks PolySpace、Cantata、VectorCAST FI 模块都支持此模式。插桩允许在一晚上跑几千个 fault scenario,比手工 saboteur 高效几个量级,是 ASIL D 项目在 SIL/HIL 层验证 DC 的主力工具。

5. Fault Injection Campaign 设计

Campaign 设计的核心是回答三个问题:注入什么故障、往哪里注、跑多少。这三个决策直接决定 specific DC 的置信度。

5.1 Campaign 五步

Campaign 按以下顺序执行,每步缺一不可:故障目标 SM 从 FMEDA workbook 直接抽取,保证 FI 与 FMEDA 对应的完整性。

  1. 定义目标 SM:从 FMEDA workbook 取每条赋值 DC ≥ Medium 的 SM
  2. 定义 fault model 集:按 SM 保护的物理信号类型选(逻辑/存储/通讯)
  3. 定义注入点:列出每个 wire / register / variable 的注入位置表
  4. 跑 campaign:穷举(小元件)或统计采样(大元件)
  5. 算 DC + 报告:specific DC 回写 FMEDA workbook 更新 SPFM/LFM

5.2 穷举 vs 随机采样

穷举对小元件(几千个 fault point)可行,大元件必须统计采样。采样量由置信度目标决定:

策略适用采样量
穷举(Exhaustive)元件 < 5 K fault pointsO(N)
导向性(Targeted)已知关键路径工程师手工选
随机采样大元件(MCU cache、SRAM)95 % 置信度 + 5 % 误差 → ~1000 scenarios

ASIL D MCU 的 cache 有几千万个 bit,不可能穷举。实践上用统计采样:95 % 置信度 + 5 % 误差需要约 1000 scenarios,加上 critical path 的导向注入覆盖已知高风险路径。

5.3 FTTI 测量:t0→t4 全链

FI 验证的最终目标不只是"SM 检出",还要证明整链响应时间 ≤ FTTI。FTTI 是由整车物理决定的时间预算(非测量量),EV 主驱 SG-扭矩典型 5–100 ms。测量点定义如下:

时刻事件测量手段
t0故障注入FI tool 时间戳
t1SM 检测到 faultFAULT pin 示波器
t2SSM 决策 safe stateCAN trace
t3栅极 STO / ASC 触发gate signal probe
t4电机扭矩 → 0扭矩传感器 / FOC 估算

实测故障处理时间 = t4 - t0 = FDTI + FRTI,须 ≤ FTTI 并留 margin。示波器 4 通道同步记 t0/t1/t2/t3,每个 SM 跑 10–100 次取均值 + 3σ 上限。

6. 端到端 Worked Design — TC397 EV 主驱 ASIL D FI Campaign

这一节展示一个完整的 ASIL D 项目级 FI campaign 真实工程流程,器件选 Infineon AURIX TC397(EV 主驱最主流的 ASIL D MCU),目标安全目标 SG-01:防止非预期电磁扭矩 > ±10 % 指令值(HARA 定级 ASIL D)。

6.1 项目参数

EV 主驱 ASIL D 项目的基本约束由 HARA 和 FMEDA 分析给出,FI campaign 以这些约束为边界:

  • 安全目标(SG-01):非预期扭矩 > ±10 % 指令值;ASIL D
  • FTTI:20 ms(由整车动力学模型推导:10 % 扭矩过冲在此时间内导致驾驶员失控)
  • 目标 DC:SM1(相电流过流) ≥ 99 %(High);SM2(Lockstep) ≥ 99 %(High);SM3(BIST 潜伏) ≥ 90 %(Medium,用于 LFM)

TC397 内置的核心 safety hardware 直接决定了 FI 分层结构:CPU0/CPU1 lockstep(2 个时钟周期延迟比对)、PFLASH 6-bit SEC-DED ECC、MBIST(MarchC 全覆盖 SRAM)、LBIST(向组合逻辑注测试向量比对 signature)。

6.2 Phase 1 — Pre-silicon RTL FI(Infineon 完成)

Infineon 在 TC397 tape-out 前完成 RTL 级 FI simulation,数据在 Safety Manual v1.1 中公开:LBIST 覆盖 97.1 % 触发器 + 组合路径(structural DC);MBIST 覆盖 100 % SRAM 阵列。这是 Tier-1 应用 AURIX TC397 时可以直接引用的 pre-silicon 证据,不需要重跑 RTL FI——但 Tier-1 自己的应用层软件和 PCB 级互联不在 Infineon 报告里,需要补充 Phase 3/4。

6.3 Phase 2 — Silicon BIST(TC397 出厂 + 上电)

TC397 的 LBIST 在每次上电诊断阶段自动执行,运行时间约 60–200 ms(取决于器件版本)。MBIST 在上电后逐块测试所有 SRAM。这两项构成 SM3(潜伏故障 latent SM)的实测 DC 基础:每次上电本质上是对制造缺陷和老化引起的 stuck-at / transition fault 的一次 FI 实测。BIST 结果通过 SMU(Safety Management Unit)上报,Tier-1 的 SSM 必须监听 SMU 并在 BIST fail 时进入 safe state。

6.4 Phase 3 — HIL 软件 FI(Lauterbach TRACE32 + Vector vTESTstudio)

Tier-1 的 HIL 软件 FI 针对应用软件层的 SM。下表为典型 EV 主驱项目的 scenario 分配:

SM注入类型Scenarios检出DC_specific
SM1 相电流 OCADC 读值 stuck / SEU / 范围外24023899.2 %
SM2 LockstepCPU1 寄存器写后比对 mismatch32031999.7 %
SM3 BIST latent模拟 LBIST skip(禁用诊断任务)28027698.6 %

SM1 的 2 个未检出 scenario 是"ADC saturation 时 SW comparator 判断错误":ADC 返回 0xFFF(满量程上限)被误判为"传感器开路"而非"过流",触发了不同的 safe state 路径(进入 "sensor loss" 而非 "OC shutdown"),虽然最终也 safe 但路径不对。这类"wrong safe state path"需要在 FMEDA 备注并判定为 DC 证伪条目。

6.5 Phase 4 — HIL 硬件 FI(自研 FI shield + dSPACE SCALEXIO)

120 个 HW FI scenario 覆盖 PCB 和传感器层面的真实故障:

  • 相电流 shunt 偏置 +10 %:验 SM1 阈值裕度足够(检出 40 ms 内,< FTTI 20 ms? → 重算)
  • DESAT pin 拉高:验栅极驱动 IC 在 2 μs 内硬关断 + Fault 上报
  • NTC 短路 / 开路:验 SSM 判温度故障 → derate 或 STO
  • CAN 报文丢失 3 帧:验 SSM 超时 → 进入 ASC(Active Short Circuit)

全部 120 scenario 通过。FTTI 实测:FDTI(从 t0 到 SM1 检出)最大值 3.8 ms(软件路径,4 ms 任务周期采样);FRTI(从 SSM 决策到扭矩归零 t4)最大值 11.2 ms(三相 ASC 下电气衰减)。合计最大 15.0 ms < 20 ms FTTI,margin 5 ms(25 %)。

6.6 DC 回写 FMEDA 与 SPFM 影响

FI 完成后把 specific DC 回写 FMEDA workbook:SM1 从分析时的 99 % generic 更新为 99.2 % specific(差距微小,SPFM 不变);SM3 BIST latent 从分析 99 % 下调为 98.6 %(轻微降低 LFM 分子),重算 PMHF 增加约 0.4 FIT/path,仍满足 ASIL D 100 FIT/path 目标。2 个 SM1 wrong-path scenario 在 FMEDA 注明为"detected but wrong response type",按 Part 5 §8 判定不算有效 DC 检出,降低了 SM1 specific DC 至 99.2 %(仍 High)。

7. Gotcha — 5 个反复出现的工程陷阱

FI campaign 的失败原因很少来自工具选错或预算不足,更多是以下几类系统性判断错误:

7.1 直接套用 Annex D generic DC,不做 specific FI

这是最常见也最严重的陷阱。Annex D 的 generic DC 表格(99 % / 90 % / 60 %)是"典型上界",意思是在理想实现下这类 SM 能达到的最大值。实际项目中如果 watchdog 喂狗窗口设计得太宽、ADC 采样率不够、ECC 只覆盖 SRAM 不覆盖 cache line,specific DC 可能低 5–20 个百分点。第三方评估员看到"DC = 99 % per Annex D,无 FI 证据"几乎必然发 Finding。修复:对每条赋值 DC ≥ 90 % 的 SM 跑 specific FI,把实测值回写 workbook。

7.2 FTTI 只测 SM 检出时间(t1),不测全链(t4)

SM 在 2 μs 内检出故障,但 SSM 要花 4 ms 决策、栅极驱动要花 500 μs 关断、电机扭矩还需 10 ms 衰减——FDTI 后面有长达 14 ms 的 FRTI。如果 FTTI = 15 ms,只测 t1 会给人"通过"的假象。修复:t0 → t4 全链用示波器同步测,上报"故障处理时间"而非"检出时间"。

7.3 HW FI 只在空载(0 A)工况下跑

电流 SM 的响应时间和准确度在满载(峰值 400 A、三相)与空载下差异显著:ADC 量化误差在满量程高电流时更大,comparator 基于采样值的阈值判断在不同负载下有不同 timing。Part 5 §11 要求"representative operational conditions",空载 FI 不满足。修复:至少跑 10 % / 50 % / 90 % 三个负载点,以最坏 FTTI 实测值报告。

7.4 CCF FI 遗漏,ASIL 分解证据不全

项目做了 500 个 single-fault FI scenario,但 DFA 发现的 6 类 CCF 失效(电源 / EMC / 时钟 / 温度 / 振动 / 共软件)一个都没测。ASIL D = B(D) + B(D) 分解的合规核心就是"两通道不同时失效",没有 CCF FI 数据就无法证明独立性。修复:对每项 DFA CCF 覆盖项(参考 topic-asil-decomposition-deep §3)各跑至少 1 个 FI scenario,双示波器记两通道失效时刻 + Δt。

7.5 FI 工具未按 Part 8 Tool Qualification 评估

FI 工具本身如果有 bug(注入点选错 / trigger timing 错 / 与 DUT 串扰),会导致"应被检出的故障没被注入 → DC 虚高"。FI 工具按 ISO 26262 Part 8 §11 要求评估 Tool Confidence Level(TCL);商业工具通常 TCL2,需要 validation report 证明在目标平台上的正确性。修复:索取工具厂商的 TCL report;若厂商没有,按 Part 8 §11.4 步骤自做 tool qualification 测试,文档化到 FI 报告里。

8. Corner — 边界与难例

以下几类场景在标准 campaign 里容易遗漏,但在 ASIL D 第三方审查中会被重点盘问:

8.1 Lockstep 比对窗口内的"死区"

TC397 lockstep 使用 2 个时钟周期延迟错开 CPU0/CPU1 执行,比对时不可能同时注入两核——这正是 lockstep 的设计意图。但如果故障持续时间短于 2 周期(典型 < 15 ns @ 300 MHz),两核看到的状态相同,lockstep 不触发。这类极短脉冲故障(lightning / ESD)不会被 lockstep 检出。应对:补充 ESD/EFT 类 EMC FI scenario(ISO 10605 / IEC 61000-4-4),独立测量 ESD 事件后 CPU 寄存器状态;若存在盲区则在 FMEDA 标注 residual risk 并给 systematic safety measure(layout 滤波 / TVS)。

8.2 温度对 FTTI margin 的影响

FI 通常在 25℃ 室温下跑。车规 ASIL D 产品工作范围 -40℃ 至 +125℃,而 FDTI 受温度影响明显:低温下 ADC 转换速度慢(TC397 ADC 转换时间典型 +10 % @ -40℃)、SBC watchdog 时钟振荡器频率偏移 ±3 %(MCU 外置 WD 依赖石英晶振)。这些偏差可能把原本 5 ms margin 的 FTTI 吃掉 1–2 ms。应对:在极端温度点(-40℃ / +125℃)各补跑一组关键 SM 的 FTTI 测量,报告最坏温度点的实测值作为 margin 基准。

8.3 SEU 在 ASIL D 系统级的 FIT 预算

单个 SRAM bit-flip 的 FIT 率对车规器件是已知量(AURIX TC39x Safety Manual 给出 CPU 区域 ~1.2 FIT,RAM 区域 ~0.015 FIT/Mb),但这些是"组件级"数值。系统级 PMHF 要对全部 on-chip 存储区域求和,算出每个 fault mode 的残余 FIT 贡献并加进 FMEDA。很多项目只做 RAM 级 FI,忘记 cache、register file、flash shadow register 的 SEU contribution。应对:从 MCU Safety Manual 取各内存区域 FIT 表,逐行进 FMEDA workbook;对 FIT 贡献排名前 3 的区域各设专项 FI scenario 实测 DC。

核心要点

Fault injection test 是把 FMEDA 分析上界转化为实测证据的唯一手段,没有它 SPFM 99 % 只是假设。4 类 fault model(stuck-at / transition / bridging / SEU)车规 ASIL D 至少覆盖 stuck-at + SEU,高完整性项目覆盖全 4 类。Hardware FI 分三层:pre-silicon RTL / silicon BIST / system HIL,ASIL D 量产三层都要做;software FI 三种方式(saboteur / mutation / instrumentation)各有擅长层面。Campaign 关键设计决策是穷举 vs 统计采样(大元件 ~1000 scenarios 达 95 % 置信度)。FTTI 验证必须测 t0→t4 全链而非仅检出时刻。典型 EV 主驱 ASIL D 项目(TC397)经过 4 个 FI 阶段:Infineon 出厂 LBIST/MBIST 覆盖 97.1 %/100 % structural DC;Tier-1 HIL SW FI 840 scenarios 得到 SM1/SM2/SM3 specific DC 99.2/99.7/98.6 %;HIL HW FI 120 scenarios 实测 FTTI 最大 15.0 ms < 20 ms 目标。五个高频陷阱:直接套 generic DC / FTTI 只测 t1 / 空载 FI / CCF FI 遗漏 / FI 工具无 TCL report。

缩写表

本页仅列页面用到的工业标准缩写。通用英语、单位、月份及 层/Lx tag 不列。

缩写全称中文 / 备注
FIFault Injection故障注入
SMSafety Mechanism安全机制
DCDiagnostic Coverage诊断覆盖率
FTTIFault Tolerant Time Interval容错时间间隔
FDTIFault Detection Time Interval故障检出时间间隔
FRTIFault Reaction Time Interval故障反应时间间隔
FMEDAFailure Modes, Effects and Diagnostic Analysis含诊断覆盖的 FMEA
SPFMSingle-Point Fault Metric单点失效度量
LFMLatent Fault Metric潜伏故障度量
PMHFProbabilistic Metric for Hardware Failures硬件随机失效概率指标
ASILAutomotive Safety Integrity LevelISO 26262 安全完整性等级
CCFCommon Cause Failure共因失效
SEUSingle Event Upset单粒子翻转
LBISTLogic Built-In Self-Test逻辑内置自测
MBISTMemory Built-In Self-Test存储内置自测
EMCElectromagnetic Compatibility电磁兼容
STOSafe Torque Off安全断矩
ASCActive Short Circuit主动短路(电机三相短路安全状态)
SSMSafety State Manager安全状态管理器
HILHardware in the Loop硬件在环仿真
TCLTool Confidence Level工具置信度等级(ISO 26262 Part 8)
ESDElectrostatic Discharge静电放电
SBFISaboteur-based Fault Injection基于 saboteur 模块的故障注入

Cross-references