3. 单点故障度量指标:SPFM 的计算公式与含义

好,咱们进入正题。SPFM,全称 Single Point Fault Metric,中文叫单点故障度量。这个指标是 ISO 26262 功能安全里最基础、也最容易被误解的一个。我见过不少工程师,一上来就盯着数字算,却搞不清它到底在度量什么。

说白了,SPFM 衡量的是:你的安全机制,到底能挡住多少单点故障。它不是一个抽象的分数,而是实打实的“覆盖率”。

3.1 什么是单点故障?

先明确概念。单点故障,指的是一个硬件故障,它本身就能直接违反安全目标。没有其他故障帮忙,没有冗余保护,一个点坏了,系统就出事了。

举个例子。你想想看,一个刹车踏板的位移传感器。如果它内部短路了,输出一直显示“未踩下”,那刹车系统就不会响应。这就是典型的单点故障。它自己就能导致危险。

核心定义:单点故障 = 单个故障点 + 直接违反安全目标 + 无冗余保护

3.2 SPFM 的计算公式

公式不长,但每个参数都有讲究。我直接写出来:

SPFM = 1 - ( Σλ_SPF + Σλ_RF ) / Σλ_total

拆开看:

  • λ_SPF:单点故障的失效率。就是那些没有被任何安全机制覆盖的故障。
  • λ_RF:残余故障的失效率。安全机制覆盖了,但没完全挡住,漏掉的那部分。
  • λ_total:所有相关硬件故障的总失效率。

嗯,这里要注意。分母是总失效率,分子是“没被安全机制处理掉”的失效率。所以 SPFM 越高,说明安全机制越有效。

3.3 公式的物理含义

我习惯用一个比喻来解释。你有一个筛子,用来筛沙子。总共有 100 粒沙子(λ_total)。筛子(安全机制)能筛掉 95 粒,剩下 5 粒漏下去(λ_SPF + λ_RF)。那你的 SPFM 就是 95%。

这个指标,本质上就是安全机制的“过滤效率”。

参数 含义 典型来源
λ_SPF 单点故障失效率 无安全机制覆盖的故障
λ_RF 残余故障失效率 安全机制覆盖但未检测到的故障
λ_total 总失效率 所有相关硬件故障
SPFM 单点故障度量 安全机制的覆盖率

3.4 安全目标等级与 SPFM 要求

ISO 26262 对不同 ASIL 等级有明确要求。我直接列个表,你对照着看:

ASIL 等级 SPFM 目标值 说明
ASIL A 无要求 通常不做定量分析
ASIL B ≥ 90% 基础安全机制即可满足
ASIL C ≥ 97% 需要较强的诊断覆盖
ASIL D ≥ 99% 几乎要覆盖所有单点故障

你看,ASIL D 要求 99% 以上。这意味着,1000 个故障里,最多只能有 10 个漏网。这个要求非常苛刻。

3.5 计算示例:一个简单的传感器模块

咱们来算一个实际的例子。假设有一个温度传感器模块,总失效率 λ_total = 100 FIT(Failures In Time,每 10^9 小时故障次数)。

安全机制是一个比较器,能检测出传感器短路和开路。但比较器本身也有残余故障。

λ_total = 100 FIT
λ_SPF = 5 FIT   (传感器漂移故障,比较器无法检测)
λ_RF  = 3 FIT   (比较器自身故障,导致检测失效)

SPFM = 1 - (5 + 3) / 100 = 1 - 0.08 = 0.92 = 92%

92% 的 SPFM,刚好满足 ASIL B(≥90%),但离 ASIL C(≥97%)还差一截。我在项目中遇到过类似的情况,客户要求 ASIL C,结果我们不得不加一个额外的看门狗定时器来覆盖残余故障。

我的经验:别只看最终数字。SPFM 计算过程中,λ_SPF 和 λ_RF 的分配才是关键。很多团队在 λ_RF 上估算不足,导致实际覆盖率远低于理论值。

3.6 SPFM 与安全机制的关系

SPFM 不是凭空算出来的。它依赖于你设计的安全机制。常见的安全机制包括:

  • 自检(Self-Test):比如 CPU 的 LBIST,上电时跑一遍。
  • 比较器(Comparator):两个通道比较,不一致就报错。
  • 看门狗(Watchdog):监控程序是否跑飞。
  • 冗余(Redundancy):双路或三路表决。

每种安全机制都有自己的诊断覆盖率(DC)。DC 越高,λ_RF 就越低,SPFM 就越高。

3.7 常见误区与避坑指南

我见过不少团队在 SPFM 上栽跟头。这里列几个典型问题:

  • 误区一:把所有故障都算成单点故障。 实际上,有些故障是潜伏故障,属于 LFM 的范畴。别混在一起算。
  • 误区二:忽略安全机制自身的故障。 安全机制也会坏。它的残余故障必须算进 λ_RF。
  • 误区三:用理想化的 DC 值。 我曾经看到一个项目,用了 99% 的 DC 值,结果实际测试只有 80%。数据来源要可靠。

避坑指南:我曾经在一个 ASIL D 项目中,团队把 SPFM 算到了 99.5%,但审核时发现他们把安全机制的失效率全忽略了。结果重新计算后,SPFM 掉到了 97%。嗯,那段时间加班改设计,记忆犹新。

3.8 SPFM 的局限性

SPFM 不是万能的。它只关注单点故障,不关注潜伏故障。一个系统 SPFM 很高,但 LFM 很低,依然可能因为多个潜伏故障的累积而失效。

所以,SPFM 必须和 LFM(潜伏故障度量)一起看。两者互补,才能全面评估硬件安全。

SPFM 计算逻辑与安全机制关系 总失效率 λ_total 安全机制覆盖(诊断覆盖率 DC) 被覆盖的故障(安全) 残余故障 λ_RF 单点故障 λ_SPF SPFM = 1 - (λ_SPF+λ_RF)/λ_total 安全机制覆盖率越高,λ_RF 越低;无覆盖的故障直接计入 λ_SPF

3.9 小结

SPFM 是功能安全的第一道防线。它告诉你,你的安全机制对单点故障的“屏蔽能力”有多强。计算不难,难在准确估算 λ_SPF 和 λ_RF。我建议你在项目初期就建立故障库,把每个故障的分类和覆盖率都记录下来。这样后期审核时,心里有底。