3. ASIL分解原理:动机、规则与约束
好,我们进入第三章。ASIL分解,说白了就是“风险分摊”。
你想想看,一个系统要满足ASIL D,那意味着所有开发流程、硬件指标、软件架构都得按最高安全等级来。成本高、周期长、技术难度大。我早年做过一个线控制动项目,客户上来就说“整个系统ASIL D”。我当时心里就咯噔一下——不是做不到,是没必要,而且代价太大。
ASIL分解就是解决这个问题的。它允许你把一个高ASIL等级的安全目标,拆成几个低等级的子要求,分配给不同的独立要素。只要这些要素合起来,仍然能满足原来的安全等级就行。
3.1 为什么需要ASIL分解?
动机其实很直接:降低开发难度和成本。
- 硬件层面:ASIL D的硬件要99%以上的单点故障覆盖率,ASIL B可能只要90%。差9个百分点,电路设计和诊断方案的成本差好几倍。
- 软件层面:ASIL D要求无干扰、免于干涉,ASIL C或B的软件可以复用更多现有模块。
- 供应链层面:很多供应商只做到ASIL B或C,你非要ASIL D,人家不卖给你。
我记得有个项目,客户要求转向柱锁的“防止意外上锁”达到ASIL D。我们一分析,其实可以拆成“锁止机构控制”和“车速信号监测”两个独立通道,各做到ASIL C,合起来就是ASIL D。供应商那边直接松了口气——他们本来只能做ASIL C的MCU。
3.2 ASIL分解的规则
分解不是随便拆的。ISO 26262-9第5章给出了明确的规则。我直接给你看最常用的那张表:
| 原始ASIL | 分解后组合(示例) | 说明 |
|---|---|---|
| ASIL D | ASIL C(D) + ASIL B(D) | 两个要素,一个C一个B,合起来覆盖D |
| ASIL D | ASIL D(D) + ASIL A(D) + QM(D) | 三个要素,主通道D,辅助通道A,另一个QM |
| ASIL C | ASIL B(C) + ASIL A(C) | 两个要素,一个B一个A,合起来覆盖C |
| ASIL B | ASIL A(B) + ASIL A(B) | 两个要素都是A,合起来覆盖B |
| ASIL A | ASIL A(A) + QM(A) | 一个A一个QM,合起来覆盖A |
注意括号里的标记。比如ASIL C(D),意思是这个要素本身按ASIL C开发,但它承担的是ASIL D分解下来的责任。这个标记在安全档案里必须写清楚,不然审核员会问:“你这个C到底是原始C还是分解C?”
分解规则还有一条铁律:分解后的每个要素必须独立。什么叫独立?就是它们之间不能有共因失效,不能有级联失效。你想想看,如果两个通道共用同一个电源芯片,那电源一挂,两个通道全完蛋——这种分解就是无效的。
3.3 分解的约束条件
规则讲完了,但实际落地时有很多坑。我列几个最常见的约束:
- 独立性约束:这是最硬的。两个要素不能有共因失效。我曾经遇到一个项目,两个通道用了同一批次的MOSFET,结果批次缺陷导致两个通道同时失效。后来我们改成了不同批次、不同封装的器件。
- 安全目标不变:分解只能改变ASIL等级,不能改变安全目标本身。比如“防止非预期加速”这个目标,你不能因为分解了就改成“防止非预期加速到50%以上”。
- 分解深度限制:ISO 26262不允许无限分解。一般来说,分解不超过两级。你从ASIL D拆成C+B,再从C拆成B+A,可以。但再往下拆,审核员会质疑你的独立性论证是否充分。
- 冗余架构要求:分解通常需要冗余架构来支撑。两个要素必须都能独立检测并响应危险事件。如果一个要素只负责监测,另一个只负责执行,那监测要素失效时,执行要素不会自己停下来——这不算有效分解。
3.4 ASIL分解的图形化理解
我画了一张图,帮你把分解逻辑串起来。你看这个结构:
这张图你看懂了吗?顶层是安全目标ASIL D,中间是分解规则,底层是两个独立要素。最下面那行约束条件,是审核员最关注的地方。你交安全档案时,如果独立性论证写不清楚,大概率会被打回来。
3.5 实际项目中的分解策略
我个人的经验是,分解策略要尽早定。一般在概念阶段就要想清楚:
- 这个安全目标能不能分解?
- 如果能,分解成几个要素?
- 每个要素的ASIL等级是多少?
- 要素之间的独立性怎么保证?
我建议你在安全计划里就写清楚分解方案,而不是等到功能安全概念阶段再临时想。因为分解会影响系统架构、硬件选型、软件分区,越早定越主动。
举个例子,我之前做ADAS的自动紧急制动(AEB)。安全目标是“避免非预期制动”,ASIL D。我们分解成:
- 感知通道(摄像头+雷达融合):ASIL C(D)
- 执行通道(制动控制器+液压单元):ASIL B(D)
两个通道独立供电、独立通信、独立诊断。感知通道检测到危险就请求制动,执行通道收到请求后执行。如果感知通道误报,执行通道有超时监控;如果执行通道失效,感知通道有回退策略。你看,这就是典型的分解落地。