作者: Darren H. Chen
方向: 汽车芯片功能安全分析与故障注入实践
Demo: D09_sm_selection
标签: 汽车芯片 功能安全 Safety Mechanism Parity ECC Lockstep DC
Demo 说明
D09_sm_selection 的目标是基于结构贡献度和 DC 计算结果,给出安全机制选择的工程化方法。
对应的通用工具名称为:
text
safeic-smselect
这个 Demo 不追求自动替代安全架构师,而是实现一个可解释的推荐器:
text
输入 endpoint contribution、failure mode、ASIL target、SM library
输出候选 safety mechanism 和推荐理由
本篇重点讨论三类常见机制:
text
Parity
ECC
Lockstep
并扩展到 duplication、range check、protocol monitor、timeout monitor 等机制。
1. 为什么安全机制不是越多越好
功能安全设计中,一个常见误区是:
text
加的 safety mechanism 越多越安全
这句话只对了一半。
安全机制确实可以提高诊断覆盖率,但它也带来新的问题:
text
面积增加
功耗增加
时序变差
设计复杂度增加
验证工作量增加
可能引入新的故障点
可能导致误报或系统可用性下降
例如 lockstep 能提供很强的覆盖能力,但成本极高;ECC 对 memory 非常有效,但对控制状态机并不是最自然的选择;parity 成本低,但覆盖范围有限。
所以正确的问题不是:
text
能不能多加几个安全机制?
而是:
text
针对某个 failure mode 和某个高贡献结构点,哪个 safety mechanism 最合适?
2. 安全机制选择的三个输入
工程上选择 safety mechanism,至少需要三个输入。
text
结构贡献度
失效模式
安全目标 / ASIL 目标
2.1 结构贡献度
来自 D07_ep_contribution:
text
哪个 endpoint 贡献最高?
哪个 cone 影响范围最大?
哪个模块的风险集中?
2.2 失效模式
例如:
text
错误数据输出
错误状态跳转
非法控制信号
memory bit flip
bus response 错误
超时未响应
2.3 安全目标
例如:
text
ASIL-B:允许适度覆盖和较低成本
ASIL-D:需要更强诊断覆盖和更严格证据链
如果缺少这三个输入,安全机制选择就容易变成经验驱动,而不是证据驱动。
3. Parity:低成本但覆盖有限
Parity 是最常见、最低成本的一类安全机制。
适合场景:
text
控制寄存器
状态机编码
小规模数据寄存器
配置寄存器
简单接口状态
优点:
text
面积小
实现简单
时序压力相对较低
适合快速发现单 bit 错误
局限:
text
对偶数 bit 错误覆盖不足
对复杂组合逻辑内部错误覆盖有限
不能自动纠错
需要配合 alarm 或 error handling
适合的 failure mode:
text
状态寄存器错误
控制位翻转
配置值错误
不太适合:
text
大容量 memory 数据保护
复杂计算路径完整保护
系统级执行流一致性保护
4. ECC:Memory 保护的核心机制
ECC 主要用于 memory 或数据存储结构。
适合场景:
text
SRAM
register file
cache
buffer
FIFO
message RAM
优点:
text
可以检测并纠正单 bit 错误
可检测部分多 bit 错误
适合大容量存储阵列
容易形成清晰的 fault injection demo
局限:
text
编码/解码逻辑有面积和时序成本
需要考虑 syndrome、scrubbing、错误上报策略
对非 memory 控制逻辑不适合
典型组合:
text
ECC + error flag
ECC + interrupt
ECC + memory scrubbing
ECC + fault counter
如果 endpoint contribution 显示 memory bit 或 memory output endpoint 贡献较高,ECC 往往是优先候选。
5. Lockstep:高覆盖但高成本
Lockstep 通常用于高安全等级 CPU、控制器或关键执行单元。
基本思想:
text
两个相同或多样化实现的通道并行执行
比较关键状态或输出
发现不一致时触发 alarm
适合场景:
text
CPU core
safety controller
关键控制算法
高 ASIL 目标模块
优点:
text
覆盖范围大
对控制流和数据路径都有较强保护
适合系统级安全目标
局限:
text
面积和功耗成本高
时钟/复位/同步复杂
common cause failure 需要额外考虑
比较点选择影响覆盖效果
验证工作量大
Lockstep 不应随意使用。它适合高风险、高价值、高 ASIL 目标的模块。
6. 从结构特征到安全机制推荐
可以建立一张规则表:
| 结构/失效特征 | 推荐机制 |
|---|---|
| 小型控制状态机 | parity、illegal state checker |
| 高贡献控制 endpoint | parity + control-flow monitor |
| 大容量 SRAM | ECC、scrubbing |
| FIFO / buffer | parity、ECC、counter consistency check |
| 数据路径 cone 大 | duplication compare、range check |
| CPU 执行流 | lockstep、control-flow monitor |
| bus fabric | protocol checker、timeout monitor |
| sensor 输入路径 | plausibility check、range check、end-to-end protection |
| safety output | redundant output compare、output monitor |
这个规则表可以作为 safeic-smselect 的第一版知识库。
7. 推荐器的数据模型
safeic-smselect 的输入可以设计为:
text
ep_contribution.csv
failure_modes.yaml
sm_library.yaml
target_asil.yaml
selection_rules.yaml
target_asil.yaml 示例:
yaml
project:
target_asil: D
optimize_for:
- diagnostic_coverage
- explainability
constraints:
max_area_overhead: medium
max_timing_risk: medium
selection_rules.yaml 示例:
yaml
rules:
- when:
ep_type: reg_d
failure_mode: wrong_control_state
contribution: high
recommend:
- EP_PARITY
- ILLEGAL_STATE_CHECKER
- when:
ep_type: memory_output
failure_mode: wrong_data
contribution: high
recommend:
- ECC
- SCRUBBING
- when:
module_type: cpu_core
target_asil: D
contribution: high
recommend:
- LOCKSTEP
- CONTROL_FLOW_MONITOR
8. 工具架构设计
safeic-smselect 可以设计为规则引擎:
Read EP Contribution
Read Failure Modes
Read SM Library
Read ASIL Target
Apply Selection Rules
Rank Candidate SMs
Generate Recommendation Report
推荐结果不应该只输出机制名称,还应该输出理由。
示例 sm_recommend.csv:
csv
ep_id,node,rank,recommended_sm,reason,expected_effect,cost_level
EP_0001,top.u_bus.arb_state.D,1,DUP_COMPARE,high cone contribution and bus arbitration failure mode,high,medium
EP_0001,top.u_bus.arb_state.D,2,PROTOCOL_MONITOR,bus protocol inconsistency can be observed by monitor,medium,low
EP_0002,top.u_mem.rdata,1,ECC,memory output data corruption,high,medium
why_this_sm.md 示例:
md
# Recommendation Explanation
Endpoint: top.u_bus.arb_state.D
Recommended: DUP_COMPARE
Reason:
- Endpoint contribution rank: 1
- Cone gate count is high
- Failure mode is wrong bus arbitration decision
- Duplication can cover endpoint and cone-level faults
- Cost is lower than full lockstep
9. 推荐不是最终答案,还需要 fault campaign 验证
Safety mechanism selection 只是探索阶段的结果。
推荐器输出之后,还需要:
text
修改 RTL 或安全机制配置
更新 EP-to-SM map
重新计算 DC
生成 fault list
执行 fault campaign
查看 detected/safe/unsafe/unresolved 结果
完整闭环如下:
EP Contribution
SM Selection
Update SM Map
DC Recalculation
Fault List
Fault Campaign
Final Metric
如果推荐的机制在 fault campaign 中实际检测效果不好,就需要回到结构和失效模式重新分析。
10. D09 Demo 的目录建议
text
D09_sm_selection/
README.md
run_demo.csh
run_demo.sh
inputs/
ep_contribution.csv
failure_modes.yaml
sm_library.yaml
target_asil.yaml
selection_rules.yaml
outputs/
sm_recommend.csv
why_this_sm.md
updated_ep_to_sm_map.csv
scripts/
safeic_smselect.py
运行命令示例:
bash
python3 scripts/safeic_smselect.py \
--ep-cont inputs/ep_contribution.csv \
--failure-modes inputs/failure_modes.yaml \
--sm-lib inputs/sm_library.yaml \
--asil inputs/target_asil.yaml \
--rules inputs/selection_rules.yaml \
--out outputs
11. 方法论总结
Safety Mechanism 选择的核心不是"多",而是"合适"。
合理的选择流程应该是:
text
先看结构贡献度
再看 failure mode
再看 ASIL 目标和成本约束
最后选择 safety mechanism
Parity、ECC、Lockstep 不是互相替代关系,而是适用于不同结构和风险场景:
text
Parity:低成本状态/控制保护
ECC:memory 数据保护
Lockstep:高安全等级执行通道保护
D09_sm_selection 的目标是把经验选择变成可解释的工程规则,为后续 EP-to-SM Map、DC 计算和 fault campaign 提供输入。