【汽车芯片功能安全分析与故障注入实践 07】Endpoint FIT Contribution:如何找到最值得保护的节点?
作者:Darren H. Chen
方向:汽车芯片功能安全分析与故障注入实践
Demo:D07_ep_contribution
标签:汽车芯片功能安全FIT ContributionEndpoint安全机制选择风险排序
Demo 说明
D07_ep_contribution的目标是基于第 6 篇提取出的 SP/EP/Cone 结构,进一步计算每个 Endpoint 对整体 FIT/DC 风险的贡献度。
对应的通用工具名称为:
safeic-epcont这个 Demo 的作用是回答一个非常工程化的问题:
设计里有很多寄存器输入、输出端口和黑盒边界,应该优先保护哪些 endpoint?
如果没有贡献度排序,安全机制选择很容易变成平均用力:
所有寄存器都想保护 所有模块都想加 checker 所有 memory 都想加 ECC 所有路径都想做 duplication这会导致面积、功耗、时序和验证成本迅速失控。Endpoint FIT Contribution 的作用,就是先找到最值得保护的地方。
1. 为什么不能平均保护所有节点
汽车芯片中,安全机制不是免费的。
任何安全机制都会带来成本:
面积增加 功耗增加 时序压力增加 验证复杂度增加 故障注入 campaign 规模增加 软件诊断配合成本增加例如:
| 安全机制 | 成本特点 |
|---|---|
| parity | 成本较低,但覆盖范围有限 |
| ECC | 对 memory 有效,但编码/解码逻辑有代价 |
| duplication | 覆盖更强,但面积接近翻倍 |
| lockstep | 覆盖很强,但系统代价高 |
| end-to-end protection | 跨模块保护有效,但协议设计复杂 |
因此,功能安全设计的目标不是“把所有地方都保护起来”,而是:
用有限的安全机制覆盖最大风险贡献点这就需要 Endpoint Contribution。
2. Endpoint 为什么适合作为贡献度分析对象
在结构分析中,Endpoint 是故障传播的关键收敛点。
它可能是:
寄存器 D 端 latch 输入 memory 输入 blackbox 输入 顶层输出Endpoint 的重要性来自三个方面:
它可能捕获错误 它可能影响后续状态 它可能直接影响安全相关输出一个 endpoint 的贡献度通常与下面因素有关:
endpoint 自身结构规模 连接到它的 cone 规模 上游 startpoint 数量 fan-in/fan-out 关系 是否位于 safety-related path 是否连接 alarm/checker 或 safety output因此,Endpoint FIT Contribution 可以理解为:
某个 endpoint 对整体随机硬件失效风险的相对贡献。
3. 一个简单例子
假设有两个 endpoint:
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 的故障可能影响:
总线授权 访问顺序 数据返回路径 错误响应 多个外设访问这类 endpoint 的贡献度通常更高。
4. Contribution 的基本计算思路
第一版 Demo 不需要追求完整标准模型,可以先建立可解释的工程评分模型。
一种简化计算方式:
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 | 是否属于安全相关功能路径 |
实际工具中可以把它拆成可配置参数:
weights:ep_base:1.0cone_gate:0.02fanin_sp:0.5fanout_ep:0.5safety_related_bonus:2.0这样不同项目可以根据场景调整策略。
5. 从结构数据到贡献度报告
safeic-epcont的输入来自第 6 篇的结构分析输出:
sp.csv ep.csv cone.csv structure_graph.json工具内部流程可以设计为:
输出核心文件:
ep_contribution.csv top_ep.md contribution_summary.json6. 输出文件示例
ep_contribution.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,3top_ep.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 |
这背后的方法论是:
先找到高贡献 endpoint 再分析其结构类型和功能语义 最后选择合适的 safety mechanism而不是先随意选择一个安全机制,再去证明它有效。
8. Contribution 与 Fault List 的关系
Endpoint Contribution 还可以用来指导 fault list 生成。
完整芯片 fault 数量可能非常大,如果盲目生成所有 fault,会导致 fault campaign 过重。
更实际的方式是:
优先对 high-contribution endpoint 相关节点生成 fault 对低贡献节点采用抽样 对非安全相关节点做降权或排除例如:
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 的目录建议
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运行命令示例:
python3 scripts/safeic_epcont.py\--spinputs/sp.csv\--epinputs/ep.csv\--coneinputs/cone.csv\--weightsinputs/contribution_weights.yaml\--outoutputscsh 版本:
python3 scripts/safeic_epcont.py \ --sp inputs/sp.csv \ --ep inputs/ep.csv \ --cone inputs/cone.csv \ --weights inputs/contribution_weights.yaml \ --out outputs10. 方法论总结
Endpoint FIT Contribution 的核心价值是排序。
它帮助我们回答:
哪些 endpoint 最值得保护? 哪些模块贡献最大? 哪些 cone 可能造成风险集中? 哪些安全机制应该优先投入? 后续 fault campaign 应该优先覆盖哪些节点?功能安全工程不是单纯“多加保护”,而是“基于结构贡献度做保护优先级决策”。
D07_ep_contribution的意义就在于把这种决策过程数据化、报告化、可复现化。
