【汽车芯片功能安全分析与故障注入实践 03】从 Base FIT Rate 开始:为什么安全分析要先做 BFR?

作者: Darren H. Chen
方向: 汽车芯片功能安全分析与故障注入实践
Demo: D03_base_fit_rate
标签: 汽车芯片 功能安全 FIT BFR 随机硬件故障 可靠性建模


Demo 说明

D03_base_fit_rate 用来实现一个简化的 Base FIT Rate 计算 Demo。

对应的通用工具名称为:

text 复制代码
safeic-bfr

这个 Demo 的作用是:在还没有引入复杂安全机制、故障注入和 FMEDA roll-up 之前,先建立一个基线指标。

text 复制代码
design statistics
+ reliability model inputs
= base FIT report

BFR 的目的不是一开始就追求签核级精度,而是回答一个基础问题:

这个设计在没有安全机制保护前,随机硬件故障风险大概集中在哪里?


1. 什么是 FIT

FIT 是 Failure In Time 的缩写,通常表示:

text 复制代码
1 FIT = 每 10^9 小时发生 1 次失效

在汽车芯片功能安全中,FIT 用于描述硬件随机故障的失效率。

它关注的不是 RTL 是否写错,而是芯片在生命周期中由于物理原因发生随机失效的概率。

例如:

text 复制代码
触发器软错误
SRAM bit flip
组合逻辑瞬态扰动
永久 stuck-at 故障
封装或工艺相关失效

FIT 是后续 SPFM、LFM、PMHF、DC 等指标的基础。

如果没有 FIT,FMEDA 只是结构表格;如果没有 DC,FIT 只是原始风险;如果没有故障注入,DC 可能缺少验证证据。


2. 为什么要先做 Base FIT Rate

Base FIT Rate 可以理解为:

text 复制代码
在没有考虑或尚未完成安全机制验证之前,设计本身的基础随机硬件失效率。

它的意义有三点。

2.1 建立风险基线

如果不知道原始风险,就无法判断安全机制到底改善了多少。

例如:

text 复制代码
模块 A 的 Base FIT = 0.5
模块 B 的 Base FIT = 20.0

显然,模块 B 更值得优先投入安全机制。

2.2 指导安全机制选择

Base FIT 可以告诉我们:

text 复制代码
风险主要来自寄存器?
风险主要来自 SRAM?
风险主要来自大组合逻辑 cone?
风险是否集中在某个子模块?

这会直接影响选择 parity、ECC、lockstep、duplication 还是 protocol checker。

2.3 支持后续指标对比

后续加入安全机制后,可以比较:

text 复制代码
Base FIT
-> Estimated FIT after SM
-> Validated FIT after fault campaign

这条链路可以形成安全分析证据。


3. BFR 在完整流程中的位置

BFR 位于功能安全流程的早期。

完整流程可以简化为:
Design Input
Design Statistics
Base FIT Rate
Safety Mechanism Planning
Diagnostic Coverage Estimation
Fault List Generation
Fault Campaign
Final Metric Validation

BFR 不解决所有问题,但它决定了后续工作的方向。

如果一个模块本身 FIT 贡献极低,可能不需要复杂安全机制。反过来,如果一个模块贡献很大,而又缺少有效检测路径,就需要重点处理。


4. Permanent FIT 与 Transient FIT

功能安全分析通常要区分两类故障风险:

text 复制代码
Permanent fault
Transient fault

4.1 Permanent fault

Permanent fault 是相对持续的硬件失效,例如:

text 复制代码
stuck-at 0
stuck-at 1
永久开路/短路抽象
长期失效的存储单元

它通常和工艺、老化、制造缺陷、封装应力等因素相关。

4.2 Transient fault

Transient fault 是短暂的扰动,例如:

text 复制代码
单粒子翻转
瞬态电压扰动
临时 bit flip
短时间组合逻辑毛刺

它可能只持续一个或几个周期,但如果发生在安全关键路径上,仍然可能造成错误输出。

BFR Demo 中可以先采用简化模型:

text 复制代码
permanent_fit = nval * lambda_permanent
transient_fit = sequential_count * lambda_ff_transient
              + memory_bits * lambda_mem_transient
              + gate_count * lambda_gate_transient

这里的目标是让模型可解释,而不是一开始就覆盖所有工业细节。


5. BFR 需要哪些输入

safeic-bfr 可以从两个文件读取输入。

5.1 design_stats.json

设计规模统计:

json 复制代码
{
  "top": "toy_counter_top",
  "stage": "rtl",
  "stdcell_gate_count": 1200,
  "sequential_count": 96,
  "memory_bits": 0,
  "blackbox_count": 0
}

5.2 fit_inputs.yaml

可靠性模型配置:

yaml 复制代码
fit_standard: simplified_iec62380
mission_profile: passenger_compartment
temperature_ja: 65
manufacturing_year: 2026
default_process: MOS.ASIC.STDCELL
lambda:
  permanent_per_gate: 1.0e-6
  transient_per_gate: 1.0e-6
  transient_per_ff: 1.0e-3
  transient_per_mem_bit: 1.0e-6

这两个输入要分开,因为设计规模会随 RTL/netlist 变化,而可靠性模型配置属于项目假设。


6. BFR 计算的工具架构

safeic-bfr 的架构可以保持非常清晰:
design_stats.json
safeic-bfr
fit_inputs.yaml
base_fit_report.csv
base_fit_summary.md
fit_breakdown.json

内部模块可以分为:

模块 作用
Input Loader 读取 design_stats 和 fit_inputs
Model Resolver 选择 simplified IEC/SN 模型
FIT Calculator 计算 permanent/transient FIT
Breakdown Generator 按类型输出贡献比例
Report Writer 生成 CSV/Markdown/JSON

输出示例:

csv 复制代码
category,count,lambda_per_unit,fit
stdcell_gate,1200,1.0e-6,0.0012
sequential,96,1.0e-3,0.096
memory_bit,0,1.0e-6,0.0

7. BFR 的关键不是公式,而是可追溯性

在工程实践中,BFR 最重要的不是某个具体公式,而是所有输入和假设都可追溯。

必须能回答:

text 复制代码
这个 FIT 值来自哪个 design_stats?
使用了哪个 fit_standard?
lambda 参数从哪里来?
温度和 mission profile 是什么?
统计对象是 RTL 估算还是 gate-level netlist?

因此,报告中应该包含:

text 复制代码
tool version
input file hash
design stage
top module
fit model name
lambda source
calculation timestamp

这也是后续做商用工具对比时非常重要的一点。


8. BFR 如何指导后续 Demo

BFR 输出的结果会被后续模块继续使用。
Base FIT Report
EP Contribution
Safety Mechanism Selection
DC Estimation
Fault List Priority
Fault Campaign

例如:

text 复制代码
如果 sequential FIT 贡献高:优先考虑 parity、lockstep、control-flow monitor。
如果 memory FIT 贡献高:优先考虑 ECC、scrubbing、memory BIST。
如果 cone 贡献高:优先考虑 duplication、checker、end-to-end protection。

BFR 不直接告诉你答案,但它告诉你应该优先看哪里。


9. D03 Demo 的目录建议

text 复制代码
D03_base_fit_rate/
  README.md
  run_demo.csh
  run_demo.sh
  inputs/
    design_stats.json
    fit_inputs.yaml
  outputs/
    base_fit_report.csv
    base_fit_summary.md
    fit_breakdown.json
  scripts/
    safeic_bfr.py

运行命令示例:

bash 复制代码
python3 scripts/safeic_bfr.py \
  --design-stats inputs/design_stats.json \
  --fit-inputs inputs/fit_inputs.yaml \
  --out outputs

或者在 csh 中:

csh 复制代码
python3 scripts/safeic_bfr.py \
  --design-stats inputs/design_stats.json \
  --fit-inputs inputs/fit_inputs.yaml \
  --out outputs

10. 方法论总结

Base FIT Rate 是功能安全分析的起点。

它的作用不是直接完成安全签核,而是建立风险基线:

text 复制代码
没有安全机制前,风险在哪里?
哪些模块贡献最大?
哪些结构类型最值得关注?
后续安全机制是否真的降低了风险?

D03_base_fit_rate 的核心目标是让 FIT 计算工程化、可解释、可复现。

后续文章会继续在这个基础上展开:

text 复制代码
D04:FIT 标准模型工程化
D05:Architecture / RTL / Netlist 阶段差异
D06:SP/EP/Cone 结构提取
D07:Endpoint FIT Contribution
D08:Diagnostic Coverage Engine

当 BFR、结构分析和 DC 计算连起来之后,功能安全分析就不再是抽象表格,而会变成一套可运行的工程方法。

相关推荐
DarrenHChen_EDA3 小时前
【汽车芯片功能安全分析与故障注入实践 04】IEC 62380 与 SN29500:FIT 模型如何工程化落地?
功能安全·sn29500·汽车芯片·fit模型·iec62380
DarrenHChen_EDA4 小时前
【汽车芯片功能安全分析与故障注入实践 01】汽车芯片功能安全验证到底验证什么?
功能安全·故障注入·汽车芯片·safeic·fit/dc·fmeda·vcd
Electron-er3 个月前
汽车ECU重编程中的Bootloader设计原理:如何实现安全回滚?
autosar·uds·汽车电子·bootloader·功能安全·ecu刷写
坏孩子的诺亚方舟5 个月前
FPGA系统架构设计实践12_FPGA系统ECM0
fpga开发·系统架构·ecm·功能安全
谈思汽车5 个月前
索尼撬动SerDes市场,汽车芯片进入“集成化”赛段!
汽车·serdes·传感器·汽车芯片
NewCarRen5 个月前
车载雷达的模块化多Chiplet eWLB封装方案
汽车芯片
NewCarRen5 个月前
汽车SoC软件安全设计:基于AUTOSAR架构的漏洞映射与防御优化
汽车芯片
流烟默6 个月前
机器学习中的 fit()、transform() 与 fit_transform():原理、用法与最佳实践
人工智能·机器学习·transform·fit
三块石头1016 个月前
关于SN29500学习笔记---如何根据该标准计算实际FIT
功能安全·fit·iso26262·失效率计算·sn29500