3. 硬件架构设计:从层级划分到度量指标
大家好,我是老周。做了十几年功能安全硬件,今天咱们聊聊硬件架构设计这块硬骨头。说实话,很多工程师一上来就盯着代码和电路图,忽略了架构层面的思考。结果呢?评审的时候被安全专家问得哑口无言。嗯,咱们今天就把这事掰扯清楚。
3.1 硬件架构层级划分
我个人习惯把硬件架构分成三个层级来看。这样分层,思路会清晰很多。
| 层级 | 范围 | 典型对象 | 我关注什么 |
|---|---|---|---|
| 系统级 | ECU/控制器整体 | 域控制器、BMS、EPS | 功能分区、通信拓扑、电源分配 |
| 子系统级 | 功能模块/芯片组 | MCU、PMIC、SBC、传感器 | 冗余结构、诊断覆盖、独立性 |
| 元件级 | 单个IC/分立器件 | ADC、运放、MOSFET | 失效率λ、故障模式、安全机制 |
你想想看,如果系统级架构没搭好,后面子系统做得再漂亮,也可能白费功夫。我在一个EPS项目中就吃过这个亏——系统级没考虑独立供电域,结果诊断覆盖率怎么算都差一点。
核心原则:层级划分要跟ASIL分解、安全目标分配对齐。每个层级都要明确:谁负责什么安全机制?故障怎么检测?检测到了怎么反应?
3.2 冗余设计原则:1oo1、1oo2、2oo2
冗余设计,说白了就是用多个通道来兜底。但怎么兜,差别很大。我给大家拆开讲。
3.2.1 1oo1(1 out of 1)
单通道架构。一个通道干活,没有冗余。故障直接导致安全目标违背。适用于QM或ASIL A/B的低风险场景。
- 优点:成本低、设计简单
- 缺点:单点故障覆盖率要求极高
- 我的经验:很多工程师觉得1oo1简单,但SPFM要达标,诊断覆盖率得做到99%以上。我见过一个项目,1oo1架构下漏了一个共因失效,PMHF直接超标。
3.2.2 1oo2(1 out of 2)
双通道并联。两个通道独立执行相同功能,只要一个通道正常,系统就能工作。故障时另一个通道继续运行。
- 优点:高可用性、高安全性
- 缺点:成本翻倍、需要比较器/表决器
- 注意:两个通道必须独立——独立电源、独立时钟、独立布局。否则共因失效会让你前功尽弃。
3.2.3 2oo2(2 out of 2)
双通道串联。两个通道必须同时输出一致结果,系统才动作。任何一个通道故障,系统就进入安全状态。
- 优点:安全性极高,单点故障不会导致危险
- 缺点:可用性低——一个通道故障,系统就停了
- 适用场景:安全关键且允许停机维护的系统,比如安全气囊控制器
| 架构 | 安全性 | 可用性 | 成本 | 典型ASIL |
|---|---|---|---|---|
| 1oo1 | 中 | 高 | 低 | ASIL A/B |
| 1oo2 | 高 | 高 | 高 | ASIL C/D |
| 2oo2 | 极高 | 低 | 高 | ASIL D |
避坑指南:我曾经在一个ADAS项目中选了2oo2架构,结果客户抱怨系统频繁进入安全状态,影响用户体验。后来改成了1oo2加快速诊断,才平衡了安全和可用性。选型时一定要跟客户确认:安全优先还是可用优先?
3.3 诊断覆盖率概念
诊断覆盖率,英文叫Diagnostic Coverage,简称DC。它衡量的是:当故障发生时,你的安全机制能检测到它的概率。
公式很简单:
DC = λ_detected / λ_total
其中λ_detected是能被检测到的故障失效率,λ_total是该元件所有故障的总失效率。
ISO 26262把DC分成了几个等级:
- 低(Low):DC < 60%
- 中(Medium):60% ≤ DC < 90%
- 高(High):90% ≤ DC < 99%
- 极高(Very High):DC ≥ 99%
嗯,这里要注意:DC不是拍脑袋定的。你得基于故障模式分析(FMEA/FMEDA)来算。我习惯把每个元件的每个故障模式列出来,然后逐个评估安全机制能不能覆盖它。
小技巧:对于复杂芯片(比如MCU),别自己从头算。直接用芯片厂商提供的Safety Manual里的DC数据。但一定要确认:这些数据是基于什么假设?有没有共因失效的考量?
3.4 硬件架构度量指标:SPFM、LFM、PMHF
这三个指标,是功能安全硬件设计的“成绩单”。评审的时候,安全专家第一个看的就是它们。
3.4.1 SPFM(Single-Point Fault Metric)
单点故障度量。衡量的是:系统对单点故障的鲁棒性。说白了,就是看有多少单点故障被你覆盖了。
SPFM = 1 - (λ_SPF + λ_RF) / λ_total
其中λ_SPF是单点故障失效率,λ_RF是残余故障失效率。
| ASIL等级 | SPFM目标值 |
|---|---|
| ASIL B | ≥ 90% |
| ASIL C | ≥ 97% |
| ASIL D | ≥ 99% |
3.4.2 LFM(Latent Fault Metric)
潜伏故障度量。衡量的是:系统对潜伏故障的检测能力。潜伏故障就是那种“坏了但没被发现,直到另一个故障来了才出事”的情况。
LFM = 1 - λ_LF / λ_total
其中λ_LF是潜伏故障失效率。
| ASIL等级 | LFM目标值 |
|---|---|
| ASIL B | ≥ 60% |
| ASIL C | ≥ 80% |
| ASIL D | ≥ 90% |
3.4.3 PMHF(Probabilistic Metric for Random Hardware Failures)
随机硬件失效概率度量。这是唯一一个跟时间挂钩的指标,单位是FIT(Failures In Time,每10^9小时失效次数)。
PMHF = λ_total × (1 - DC) × 安全机制覆盖率 × 暴露时间
ISO 26262对PMHF的要求:
- ASIL B:< 100 FIT
- ASIL C:< 100 FIT
- ASIL D:< 10 FIT
关键提醒:PMHF是概率值,不是绝对值。你算出来9.5 FIT,不代表实际产品就一定低于10 FIT。它只是告诉你:在统计意义上,这个设计有95%的概率满足要求。评审时专家会关注你的计算假设是否合理。
3.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。我建议你保存下来,做架构设计时对照着看。
3.6 实战建议
最后,给大家几个实战建议:
- 先定架构,再定指标。别反过来。指标是验证架构是否达标的工具,不是设计目标。
- 冗余不是越多越好。1oo2成本高、面积大,2oo2可用性低。选型时要权衡。
- 诊断覆盖率要留余量。我一般会在目标值上加2-3%的余量,防止计算偏差。
- PMHF计算要保守。用最坏情况的失效率,别用典型值。评审时专家会质疑你的乐观假设。
我的习惯:每次做完架构设计,我都会画一张类似上面的体系图,然后问自己三个问题:层级清楚吗?冗余够吗?指标达标吗?三个问题都回答“是”,再往下走。