作者Darren H. Chen方向汽车芯片功能安全分析与故障注入实践DemoD09_sm_selection标签汽车芯片功能安全Safety MechanismParityECCLockstepDCDemo 说明D09_sm_selection的目标是基于结构贡献度和 DC 计算结果给出安全机制选择的工程化方法。对应的通用工具名称为safeic-smselect这个 Demo 不追求自动替代安全架构师而是实现一个可解释的推荐器输入 endpoint contribution、failure mode、ASIL target、SM library 输出候选 safety mechanism 和推荐理由本篇重点讨论三类常见机制Parity ECC Lockstep并扩展到 duplication、range check、protocol monitor、timeout monitor 等机制。1. 为什么安全机制不是越多越好功能安全设计中一个常见误区是加的 safety mechanism 越多越安全这句话只对了一半。安全机制确实可以提高诊断覆盖率但它也带来新的问题面积增加 功耗增加 时序变差 设计复杂度增加 验证工作量增加 可能引入新的故障点 可能导致误报或系统可用性下降例如 lockstep 能提供很强的覆盖能力但成本极高ECC 对 memory 非常有效但对控制状态机并不是最自然的选择parity 成本低但覆盖范围有限。所以正确的问题不是能不能多加几个安全机制而是针对某个 failure mode 和某个高贡献结构点哪个 safety mechanism 最合适2. 安全机制选择的三个输入工程上选择 safety mechanism至少需要三个输入。结构贡献度 失效模式 安全目标 / ASIL 目标2.1 结构贡献度来自D07_ep_contribution哪个 endpoint 贡献最高 哪个 cone 影响范围最大 哪个模块的风险集中2.2 失效模式例如错误数据输出 错误状态跳转 非法控制信号 memory bit flip bus response 错误 超时未响应2.3 安全目标例如ASIL-B允许适度覆盖和较低成本 ASIL-D需要更强诊断覆盖和更严格证据链如果缺少这三个输入安全机制选择就容易变成经验驱动而不是证据驱动。3. Parity低成本但覆盖有限Parity 是最常见、最低成本的一类安全机制。适合场景控制寄存器 状态机编码 小规模数据寄存器 配置寄存器 简单接口状态优点面积小 实现简单 时序压力相对较低 适合快速发现单 bit 错误局限对偶数 bit 错误覆盖不足 对复杂组合逻辑内部错误覆盖有限 不能自动纠错 需要配合 alarm 或 error handling适合的 failure mode状态寄存器错误 控制位翻转 配置值错误不太适合大容量 memory 数据保护 复杂计算路径完整保护 系统级执行流一致性保护4. ECCMemory 保护的核心机制ECC 主要用于 memory 或数据存储结构。适合场景SRAM register file cache buffer FIFO message RAM优点可以检测并纠正单 bit 错误 可检测部分多 bit 错误 适合大容量存储阵列 容易形成清晰的 fault injection demo局限编码/解码逻辑有面积和时序成本 需要考虑 syndrome、scrubbing、错误上报策略 对非 memory 控制逻辑不适合典型组合ECC error flag ECC interrupt ECC memory scrubbing ECC fault counter如果 endpoint contribution 显示 memory bit 或 memory output endpoint 贡献较高ECC 往往是优先候选。5. Lockstep高覆盖但高成本Lockstep 通常用于高安全等级 CPU、控制器或关键执行单元。基本思想两个相同或多样化实现的通道并行执行 比较关键状态或输出 发现不一致时触发 alarm适合场景CPU core safety controller 关键控制算法 高 ASIL 目标模块优点覆盖范围大 对控制流和数据路径都有较强保护 适合系统级安全目标局限面积和功耗成本高 时钟/复位/同步复杂 common cause failure 需要额外考虑 比较点选择影响覆盖效果 验证工作量大Lockstep 不应随意使用。它适合高风险、高价值、高 ASIL 目标的模块。6. 从结构特征到安全机制推荐可以建立一张规则表结构/失效特征推荐机制小型控制状态机parity、illegal state checker高贡献控制 endpointparity control-flow monitor大容量 SRAMECC、scrubbingFIFO / bufferparity、ECC、counter consistency check数据路径 cone 大duplication compare、range checkCPU 执行流lockstep、control-flow monitorbus fabricprotocol checker、timeout monitorsensor 输入路径plausibility check、range check、end-to-end protectionsafety outputredundant output compare、output monitor这个规则表可以作为safeic-smselect的第一版知识库。7. 推荐器的数据模型safeic-smselect的输入可以设计为ep_contribution.csv failure_modes.yaml sm_library.yaml target_asil.yaml selection_rules.yamltarget_asil.yaml示例project:target_asil:Doptimize_for:-diagnostic_coverage-explainabilityconstraints:max_area_overhead:mediummax_timing_risk:mediumselection_rules.yaml示例rules:-when:ep_type:reg_dfailure_mode:wrong_control_statecontribution:highrecommend:-EP_PARITY-ILLEGAL_STATE_CHECKER-when:ep_type:memory_outputfailure_mode:wrong_datacontribution:highrecommend:-ECC-SCRUBBING-when:module_type:cpu_coretarget_asil:Dcontribution:highrecommend:-LOCKSTEP-CONTROL_FLOW_MONITOR8. 工具架构设计safeic-smselect可以设计为规则引擎Read EP ContributionRead Failure ModesRead SM LibraryRead ASIL TargetApply Selection RulesRank Candidate SMsGenerate Recommendation Report推荐结果不应该只输出机制名称还应该输出理由。示例sm_recommend.csvep_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,mediumwhy_this_sm.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 lockstep9. 推荐不是最终答案还需要 fault campaign 验证Safety mechanism selection 只是探索阶段的结果。推荐器输出之后还需要修改 RTL 或安全机制配置 更新 EP-to-SM map 重新计算 DC 生成 fault list 执行 fault campaign 查看 detected/safe/unsafe/unresolved 结果完整闭环如下EP ContributionSM SelectionUpdate SM MapDC RecalculationFault ListFault CampaignFinal Metric如果推荐的机制在 fault campaign 中实际检测效果不好就需要回到结构和失效模式重新分析。10. D09 Demo 的目录建议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运行命令示例python3 scripts/safeic_smselect.py\--ep-cont inputs/ep_contribution.csv\--failure-modes inputs/failure_modes.yaml\--sm-lib inputs/sm_library.yaml\--asilinputs/target_asil.yaml\--rulesinputs/selection_rules.yaml\--outoutputs11. 方法论总结Safety Mechanism 选择的核心不是“多”而是“合适”。合理的选择流程应该是先看结构贡献度 再看 failure mode 再看 ASIL 目标和成本约束 最后选择 safety mechanismParity、ECC、Lockstep 不是互相替代关系而是适用于不同结构和风险场景Parity低成本状态/控制保护 ECCmemory 数据保护 Lockstep高安全等级执行通道保护D09_sm_selection的目标是把经验选择变成可解释的工程规则为后续 EP-to-SM Map、DC 计算和 fault campaign 提供输入。