作者: 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 计算连起来之后,功能安全分析就不再是抽象表格,而会变成一套可运行的工程方法。