作者: Darren H. Chen
方向: 汽车芯片功能安全分析与故障注入实践
Demo: D07_ep_contribution
标签: 汽车芯片 功能安全 FIT Contribution Endpoint 安全机制选择 风险排序
Demo 说明
D07_ep_contribution 的目标是基于第 6 篇提取出的 SP/EP/Cone 结构,进一步计算每个 Endpoint 对整体 FIT/DC 风险的贡献度。
对应的通用工具名称为:
text
safeic-epcont
这个 Demo 的作用是回答一个非常工程化的问题:
设计里有很多寄存器输入、输出端口和黑盒边界,应该优先保护哪些 endpoint?
如果没有贡献度排序,安全机制选择很容易变成平均用力:
text
所有寄存器都想保护
所有模块都想加 checker
所有 memory 都想加 ECC
所有路径都想做 duplication
这会导致面积、功耗、时序和验证成本迅速失控。Endpoint FIT Contribution 的作用,就是先找到最值得保护的地方。
1. 为什么不能平均保护所有节点
汽车芯片中,安全机制不是免费的。
任何安全机制都会带来成本:
text
面积增加
功耗增加
时序压力增加
验证复杂度增加
故障注入 campaign 规模增加
软件诊断配合成本增加
例如:
| 安全机制 | 成本特点 |
|---|---|
| parity | 成本较低,但覆盖范围有限 |
| ECC | 对 memory 有效,但编码/解码逻辑有代价 |
| duplication | 覆盖更强,但面积接近翻倍 |
| lockstep | 覆盖很强,但系统代价高 |
| end-to-end protection | 跨模块保护有效,但协议设计复杂 |
因此,功能安全设计的目标不是"把所有地方都保护起来",而是:
text
用有限的安全机制覆盖最大风险贡献点
这就需要 Endpoint Contribution。
2. Endpoint 为什么适合作为贡献度分析对象
在结构分析中,Endpoint 是故障传播的关键收敛点。
它可能是:
text
寄存器 D 端
latch 输入
memory 输入
blackbox 输入
顶层输出
Endpoint 的重要性来自三个方面:
text
它可能捕获错误
它可能影响后续状态
它可能直接影响安全相关输出
一个 endpoint 的贡献度通常与下面因素有关:
text
endpoint 自身结构规模
连接到它的 cone 规模
上游 startpoint 数量
fan-in/fan-out 关系
是否位于 safety-related path
是否连接 alarm/checker 或 safety output
因此,Endpoint FIT Contribution 可以理解为:
某个 endpoint 对整体随机硬件失效风险的相对贡献。
3. 一个简单例子
假设有两个 endpoint:
text
EP_A:一个局部控制寄存器输入
EP_B:一个 bus fabric 仲裁状态寄存器输入
它们的基本信息如下:
| Endpoint | 上游 SP 数量 | Cone gate 数量 | 下游影响范围 | 安全相关 |
|---|---|---|---|---|
| EP_A | 1 | 8 | 单个局部状态 | 是 |
| EP_B | 6 | 120 | 多个 master/slave 通路 | 是 |
虽然 EP_A 和 EP_B 都是寄存器输入,但 EP_B 显然更值得优先分析。
因为 EP_B 的故障可能影响:
text
总线授权
访问顺序
数据返回路径
错误响应
多个外设访问
这类 endpoint 的贡献度通常更高。
4. Contribution 的基本计算思路
第一版 Demo 不需要追求完整标准模型,可以先建立可解释的工程评分模型。
一种简化计算方式:
text
EP_Contribution = EP_Weight + Cone_Weight + Fanin_Weight + Fanout_Weight + Safety_Weight
每个部分含义如下:
| 权重 | 含义 |
|---|---|
| EP_Weight | endpoint 自身寄存器、输出、memory bit 权重 |
| Cone_Weight | 上游组合逻辑规模 |
| Fanin_Weight | 影响该 EP 的 startpoint 数量 |
| Fanout_Weight | 该 EP 后续影响范围 |
| Safety_Weight | 是否属于安全相关功能路径 |
实际工具中可以把它拆成可配置参数:
yaml
weights:
ep_base: 1.0
cone_gate: 0.02
fanin_sp: 0.5
fanout_ep: 0.5
safety_related_bonus: 2.0
这样不同项目可以根据场景调整策略。
5. 从结构数据到贡献度报告
safeic-epcont 的输入来自第 6 篇的结构分析输出:
text
sp.csv
ep.csv
cone.csv
structure_graph.json
工具内部流程可以设计为:
Read SP/EP/Cone
Build Connectivity Index
Compute EP Base Weight
Compute Cone Weight
Compute Fanin/Fanout Weight
Merge Scores
Rank Endpoints
Generate Contribution Reports
输出核心文件:
text
ep_contribution.csv
top_ep.md
contribution_summary.json
6. 输出文件示例
ep_contribution.csv 可以设计为:
csv
ep_id,node,module,ep_type,cone_count,total_cone_gates,fanin_sp_count,fanout_count,safety_related,score,rank
EP_0001,top.u_bus.arb_state.D,top.u_bus,reg_d,4,120,6,8,true,18.40,1
EP_0002,top.u_cpu.ctrl_state.D,top.u_cpu,reg_d,2,70,3,5,true,11.90,2
EP_0003,top.u_timer.cnt_en.D,top.u_timer,reg_d,1,18,1,1,true,4.20,3
top_ep.md 可以输出人能读懂的解释:
md
# Top Endpoint Contribution
## Rank 1: top.u_bus.arb_state.D
Reason:
- Connected to 6 upstream startpoints
- Accumulates 120 cone gates
- Affects 8 downstream endpoints
- Marked as safety-related
Suggested safety mechanism candidates:
- arbitration state parity
- duplicated grant checker
- protocol consistency monitor
这样的报告比单纯的数字更有工程价值。
7. Contribution 与安全机制选择的关系
Endpoint Contribution 的直接用途是指导 Safety Mechanism Selection。
例如:
| Endpoint 特征 | 推荐安全机制方向 |
|---|---|
| 控制状态寄存器贡献高 | parity、control-flow monitor、illegal state checker |
| 数据路径 cone 贡献高 | duplication、data path checker、end-to-end protection |
| memory endpoint 贡献高 | ECC、parity、scrubbing |
| bus fabric endpoint 贡献高 | protocol checker、response monitor、timeout monitor |
| safety output endpoint 贡献高 | output compare、range check、redundant output |
这背后的方法论是:
text
先找到高贡献 endpoint
再分析其结构类型和功能语义
最后选择合适的 safety mechanism
而不是先随意选择一个安全机制,再去证明它有效。
8. Contribution 与 Fault List 的关系
Endpoint Contribution 还可以用来指导 fault list 生成。
完整芯片 fault 数量可能非常大,如果盲目生成所有 fault,会导致 fault campaign 过重。
更实际的方式是:
text
优先对 high-contribution endpoint 相关节点生成 fault
对低贡献节点采用抽样
对非安全相关节点做降权或排除
例如:
text
Top 10% endpoint:完整 stuck-at + transient fault
Middle 40% endpoint:stuck-at fault
Low contribution endpoint:sampling fault
Non-safety-related endpoint:可排除或单独统计
这能显著降低后续故障注入压力。
9. D07 Demo 的目录建议
text
D07_ep_contribution/
README.md
run_demo.csh
run_demo.sh
inputs/
sp.csv
ep.csv
cone.csv
structure_graph.json
contribution_weights.yaml
outputs/
ep_contribution.csv
top_ep.md
contribution_summary.json
scripts/
safeic_epcont.py
运行命令示例:
bash
python3 scripts/safeic_epcont.py \
--sp inputs/sp.csv \
--ep inputs/ep.csv \
--cone inputs/cone.csv \
--weights inputs/contribution_weights.yaml \
--out outputs
csh 版本:
csh
python3 scripts/safeic_epcont.py \
--sp inputs/sp.csv \
--ep inputs/ep.csv \
--cone inputs/cone.csv \
--weights inputs/contribution_weights.yaml \
--out outputs
10. 方法论总结
Endpoint FIT Contribution 的核心价值是排序。
它帮助我们回答:
text
哪些 endpoint 最值得保护?
哪些模块贡献最大?
哪些 cone 可能造成风险集中?
哪些安全机制应该优先投入?
后续 fault campaign 应该优先覆盖哪些节点?
功能安全工程不是单纯"多加保护",而是"基于结构贡献度做保护优先级决策"。
D07_ep_contribution 的意义就在于把这种决策过程数据化、报告化、可复现化。