بنقرة واحدة
functional-safety-analysis
功能安全分析技能 - FMEDA 分析、安全机制设计、ISO 26262 符合
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
功能安全分析技能 - FMEDA 分析、安全机制设计、ISO 26262 符合
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
物理设计全流程技能 - 从floorplan到GDSII,完整数字芯片物理设计指导
芯片架构设计技能 - 从需求定义到模块划分,完整指导芯片架构开发
EDA工具脚本开发技能 - TCL/Python/Makefile 自动化流程最佳实践
静态时序分析技能 - 时序诊断、收敛优化、签收标准
UVM 验证方法论技能 - 从验证计划到功能覆盖率,完整 UVM 验证平台开发
功耗分析和优化技能 - 功耗计算、IR降分析、电迁移分析、低功耗优化
| name | functional-safety-analysis |
| description | 功能安全分析技能 - FMEDA 分析、安全机制设计、ISO 26262 符合 |
| description.zh | 功能安全分析技能 - FMEDA 分析、安全机制设计、ISO 26262 符合 |
| origin | ICER |
| categories | functional-safety |
当用户需要进行功能安全分析和安全机制设计时,启用此技能。符合 ISO 26262 标准,支持 ASIL A-D 各个等级。
| ASIL | SPFM | LFM | PMHF | 系统能力 | 硬件指标要求 |
|---|---|---|---|---|---|
| QM | - | - | - | 无要求 | 无 |
| ASIL-A | ≥90% | ≥60% | <1000 FIT | 低 | 单点故障诊断 |
| ASIL-B | ≥90% | ≥60% | <100 FIT | 中 | 诊断+冗余 |
| ASIL-C | ≥97% | ≥80% | <100 FIT | 高 | 诊断+冗余+监控 |
| ASIL-D | ≥99% | ≥90% | <10 FIT | 最高 | 全面安全机制 |
| 组件 | 典型 FIT | 说明 |
|---|---|---|
| CPU 核心 | 50-200 FIT | 取决于工艺和复杂度 |
| SRAM (per Mb) | 10-50 FIT | 带 ECC 可降低 |
| Flash (per Mb) | 20-100 FIT | 取决于工艺 |
| CAN 控制器 | 5-20 FIT | 相对可靠 |
| ADC | 5-15 FIT | 取决于精度 |
| 时钟 PLL | 10-30 FIT | 关键组件 |
| 电源管理 | 20-50 FIT | 需要监控 |
| 安全机制 | 单点故障覆盖率 | 潜伏故障覆盖率 | 适用场景 |
|---|---|---|---|
| ECC | 90-99% | 90-95% | 存储器 |
| 奇偶校验 | 50-90% | 不适用 | 简单存储器 |
| CRC | 90-99% | 不适用 | 数据传输 |
| 双核锁步 | 90-99% | 90-99% | CPU |
| 看门狗 | 60-90% | 60-90% | 程序流 |
| 时钟监控 | 90-99% | 90-99% | 时钟 |
| 电源监控 | 90-99% | 90-99% | 电源 |
| 安全状态机 | 90-99% | 90-99% | 控制逻辑 |
| 系统类型 | 典型 FTTI | 说明 |
|---|---|---|
| 刹车系统 | 10-50ms | 安全关键 |
| 转向系统 | 50-100ms | 安全关键 |
| 动力系统 | 100-200ms | 重要 |
| 车身控制 | 100-500ms | 一般 |
| 娱乐系统 | >1s | 非安全 |
诊断步骤:
1. 计算 SPFM = 1 - Σ(单点故障率) / Σ(总故障率)
2. 识别贡献最大的单点故障
3. 检查安全机制覆盖率
判断标准:
| SPFM 值 | ASIL-A | ASIL-B | ASIL-C | ASIL-D |
|---|---|---|---|---|
| < 80% | 不满足 | 不满足 | 不满足 | 不满足 |
| 80-90% | 满足 | 不满足 | 不满足 | 不满足 |
| 90-97% | 满足 | 满足 | 不满足 | 不满足 |
| 97-99% | 满足 | 满足 | 满足 | 不满足 |
| > 99% | 满足 | 满足 | 满足 | 满足 |
根本原因定位:
| 根本原因 | 诊断特征 | 解决方案 |
|---|---|---|
| 安全机制不足 | 单点故障 FIT 高 | 增加安全机制 |
| 覆盖率低 | 诊断覆盖率 < 90% | 改进诊断方法 |
| 高风险组件 | 特定组件 FIT 高 | 增加冗余或改进设计 |
诊断步骤:
1. 计算 LFM = 1 - Σ(潜伏故障率) / Σ(总故障率)
2. 识别潜伏故障来源
3. 检查周期性测试覆盖率
根本原因定位:
| 根本原因 | 诊断特征 | 解决方案 |
|---|---|---|
| 无周期性测试 | 潜伏故障多 | 增加自检程序 |
| 测试覆盖率低 | 潜伏故障 FIT 高 | 扩展测试范围 |
| 测试周期长 | 潜伏故障检测延迟 | 缩短测试间隔 |
诊断步骤:
1. 计算 PMHF = 残余故障率 + 安全故障率 × 诊断周期
2. 识别高 FIT 组件
3. 评估残余风险
判断标准:
| ASIL | PMHF 要求 | 说明 |
|---|---|---|
| ASIL-A | < 1000 FIT | 10^-6/h |
| ASIL-B | < 100 FIT | 10^-7/h |
| ASIL-C | < 100 FIT | 10^-7/h |
| ASIL-D | < 10 FIT | 10^-8/h |
| 类型 | 方法 | 适用场景 | 诊断覆盖率验证 |
|---|---|---|---|
| 硬件故障注入 | 激光、电磁、电压 | 硬件验证 | 高 |
| 软件故障注入 | 代码插入、断言 | 软件验证 | 中 |
| 仿真故障注入 | RTL 注入 | 设计验证 | 高 |
| 形式化验证 | 形式化证明 | 设计验证 | 最高 |
// 故障注入模块
module fault_injection #(
parameter FAULT_TYPE = "STUCK_AT_0", // STUCK_AT_0, STUCK_AT_1, BIT_FLIP
parameter INJECT_PROBABILITY = 0.001 // 故障注入概率
)(
input wire clk,
input wire rst_n,
input wire [31:0] data_in,
output reg [31:0] data_out,
input wire inject_enable, // 故障注入使能
output reg fault_detected // 故障检测标志
);
reg [31:0] fault_mask;
real rand_val;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
data_out <= 32'b0;
fault_mask <= 32'b0;
fault_detected <= 1'b0;
end else begin
if (inject_enable) begin
// 生成随机故障掩码
rand_val = $random / 2147483647.0; // 归一化到 [0,1]
if (rand_val < INJECT_PROBABILITY) begin
case (FAULT_TYPE)
"STUCK_AT_0": begin
fault_mask <= 32'hFFFFFFFF;
fault_detected <= 1'b1;
end
"STUCK_AT_1": begin
fault_mask <= 32'hFFFFFFFF;
fault_detected <= 1'b1;
end
"BIT_FLIP": begin
fault_mask <= $random;
fault_detected <= 1'b1;
end
endcase
end else begin
fault_mask <= 32'b0;
fault_detected <= 1'b0;
end
end else begin
fault_mask <= 32'b0;
fault_detected <= 1'b0;
end
// 应用故障
case (FAULT_TYPE)
"STUCK_AT_0": data_out <= data_in & ~fault_mask;
"STUCK_AT_1": data_out <= data_in | fault_mask;
"BIT_FLIP": data_out <= data_in ^ fault_mask;
default: data_out <= data_in;
endcase
end
end
endmodule
故障注入测试流程:
1. 定义故障模型
- 单点故障:stuck-at-0, stuck-at-1, bit-flip
- 潜伏故障:间歇故障、老化故障
2. 选择注入点
- 关键信号:时钟、复位、使能
- 数据通路:地址、数据、控制
- 存储器:SRAM、寄存器
3. 注入故障
- 仿真时间点:随机或特定
- 注入持续时间:瞬时或永久
- 注入位置:逐位或多位
4. 观察响应
- 安全机制是否触发
- 系统是否进入安全状态
- 故障是否被检测
5. 计算覆盖率
- 故障检测覆盖率 = 检测到的故障数 / 注入的故障数
- 目标:覆盖率 ≥ 90%
ASIL (Automotive Safety Integrity Level) 是 ISO 26262 定义的功能安全等级。
| ASIL 等级 | 安全要求 | SPFM 最低 | LFM 最低 | 典型应用 |
|---|---|---|---|---|
| QM | 无安全要求 | - | - | 娱乐系统 |
| ASIL-A | 基本 | ≥ 90% | ≥ 60% | 后视摄像头 |
| ASIL-B | 标准 | ≥ 90% | ≥ 60% | 仪表盘 |
| ASIL-C | 较高 | ≥ 97% | ≥ 80% | 转向辅助 |
| ASIL-D | 最高 | ≥ 99% | ≥ 90% | 刹车系统 |
做什么: 识别潜在危害,确定 ASIL 等级。
步骤:
输出: 危害分析表
| 危害 ID | 危害描述 | 严重度 | 暴露率 | 可控性 | ASIL |
|---|---|---|---|---|---|
| H001 | 刹车信号丢失 | S3 | E4 | C3 | ASIL-D |
| H002 | 转向信号错误 | S3 | E3 | C3 | ASIL-C |
| H003 | 仪表盘显示错误 | S2 | E3 | C2 | ASIL-A |
做什么: 为每个危害定义安全目标。
| 危害 ID | 安全目标 | 故障容错时间 |
|---|---|---|
| H001 | 刹车信号必须正确 | 100ms |
| H002 | 转向信号必须正确 | 50ms |
做什么: 列出设计中所有硬件模块。
| 模块 ID | 模块名称 | 描述 |
|---|---|---|
| M001 | CPU | 处理器内核 |
| M002 | SRAM | 数据存储器 |
| M003 | Flash | 程序存储器 |
| M004 | CAN 控制器 | 通信接口 |
| M005 | ADC | 模数转换器 |
常见失效模式:
| 失效模式 | 描述 |
|---|---|
| stuck-at-0 | 信号固定为 0 |
| stuck-at-1 | 信号固定为 1 |
| bit flip | 比特翻转(瞬态) |
| 数据损坏 | 数据错误 |
| 时序错误 | 建立保持失败 |
| 开路 | 连接断开 |
| 短路 | 连接短路 |
输出: 失效模式表
| 模块 | 失效模式 | 失效率 (FIT) |
|---|---|---|
| CPU | 永久故障 | 100 FIT |
| CPU | 瞬态故障 | 500 FIT |
| SRAM | 单比特翻转 | 1000 FIT |
| SRAM | 多比特翻转 | 10 FIT |
| Flash | 数据损坏 | 50 FIT |
FMEA 是一种自下而上的分析方法,从组件失效模式开始分析其对系统的影响。
1. 列出所有组件
2. 识别每个组件的失效模式
3. 分析每个失效模式的局部影响
4. 分析每个失效模式的最终影响
5. 评估严重度、发生度、检测度
6. 计算风险优先级数(RPN)
7. 制定改进措施
| 项目 | 组件 | 失效模式 | 局部影响 | 最终影响 | 严重度(S) | 发生度(O) | 检测度(D) | RPN | 改进措施 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | CPU | 永久故障 | 计算错误 | 系统死机 | 10 | 2 | 3 | 60 | 双核锁步 |
| 2 | SRAM | 单比特翻转 | 数据错误 | 可能错误结果 | 7 | 5 | 2 | 70 | ECC |
| 3 | Flash | 数据损坏 | 程序错误 | 系统异常 | 9 | 2 | 4 | 72 | CRC校验 |
严重度(S)评分:
| 分数 | 影响 | 描述 |
|---|---|---|
| 1-2 | 无影响 | 对系统无影响 |
| 3-4 | 轻微影响 | 对非安全功能有影响 |
| 5-6 | 中等影响 | 对性能有影响 |
| 7-8 | 严重影响 | 对安全功能有影响 |
| 9-10 | 危险影响 | 违反安全目标 |
发生度(O)评分:
| 分数 | 发生频率 | 描述 |
|---|---|---|
| 1-2 | 极低 | < 1 次/年 |
| 3-4 | 低 | 1 次/年 - 1 次/月 |
| 5-6 | 中等 | 1 次/月 - 1 次/周 |
| 7-8 | 高 | 1 次/周 - 1 次/天 |
| 9-10 | 极高 | > 1 次/天 |
检测度(D)评分:
| 分数 | 检测能力 | 描述 |
|---|---|---|
| 1-2 | 肯定检测 | 100% 检测 |
| 3-4 | 高概率检测 | > 90% 检测 |
| 5-6 | 中等概率检测 | 50-90% 检测 |
| 7-8 | 低概率检测 | 10-50% 检测 |
| 9-10 | 几乎无法检测 | < 10% 检测 |
RPN 计算:
RPN = 严重度(S) × 发生度(O) × 检测度(D)
RPN 范围:1-1000
RPN 处理标准:
| RPN 范围 | 风险等级 | 行动 |
|---|---|---|
| 1-100 | 低风险 | 可接受,无需改进 |
| 101-200 | 中风险 | 建议改进 |
| 201-500 | 高风险 | 必须改进 |
| > 500 | 极高风险 | 立即改进或重新设计 |
FTA 是一种自上而下的分析方法,从顶事件开始分析可能的故障原因。
1. 确定顶事件(不希望发生的事件)
2. 分析导致顶事件的直接原因
3. 使用逻辑门连接原因
4. 逐层分解,直到基本事件
5. 计算顶事件发生概率
6. 识别关键路径
7. 制定改进措施
| 逻辑门 | 符号 | 含义 | 计算公式 |
|---|---|---|---|
| 与门 | AND | 所有输入都发生才输出 | P = P1 × P2 × ... × Pn |
| 或门 | OR | 任一输入发生就输出 | P = 1 - (1-P1) × (1-P2) × ... |
| 非门 | NOT | 输入取反 | P = 1 - P1 |
| 表决门 | K/N | N 个输入中至少 K 个发生 | 组合计算 |
顶事件: 刹车系统失效
刹车系统失效(顶事件)
│
┌──────┴──────┐
│ OR │
└──────┬──────┘
┌───────────────┼───────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ 控制器故障 │ │ 传感器故障 │ │ 执行器故障 │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌─────┴─────┐ │ ┌─────┴─────┐
│ OR │ │ │ OR │
└─────┬─────┘ │ └─────┬─────┘
┌─────┼─────┐ │ ┌─────┼─────┐
│ │ │ │ │ │ │
CPU故障 电源故障 传感器断路 执行器断路 执行器短路
基本事件概率:
| 基本事件 | 发生概率 | FIT |
|---|---|---|
| CPU 故障 | 1e-6/h | 1000 |
| 电源故障 | 1e-7/h | 100 |
| 传感器断路 | 1e-7/h | 100 |
| 执行器断路 | 1e-7/h | 100 |
| 执行器短路 | 1e-7/h | 100 |
计算顶事件概率:
P(控制器故障) = P(CPU故障) + P(电源故障) - P(CPU故障) × P(电源故障)
= 1e-6 + 1e-7 - 1e-6 × 1e-7
≈ 1.1e-6/h
P(执行器故障) = P(执行器断路) + P(执行器短路) - P(执行器断路) × P(执行器短路)
= 1e-7 + 1e-7 - 1e-7 × 1e-7
≈ 2e-7/h
P(刹车系统失效) = P(控制器故障) + P(传感器故障) + P(执行器故障)
≈ 1.1e-6 + 1e-7 + 2e-7
≈ 1.4e-6/h = 1400 FIT
最小割集定义: 导致顶事件发生的最小基本事件集合。
计算方法:
最小割集示例:
| 最小割集 | 包含事件 | 概率 | 重要性 |
|---|---|---|---|
| {CPU故障} | CPU故障 | 1e-6/h | 最高 |
| {电源故障} | 电源故障 | 1e-7/h | 中 |
| {传感器断路} | 传感器断路 | 1e-7/h | 中 |
| {执行器断路} | 执行器断路 | 1e-7/h | 中 |
| {执行器短路} | 执行器短路 | 1e-7/h | 中 |
关键事件识别:
| 方法 | 方向 | 适用场景 | 优势 |
|---|---|---|---|
| FMEA | 自下而上 | 组件分析、制造问题 | 全面、系统 |
| FTA | 自上而下 | 安全分析、设计问题 | 聚焦、可视化 |
| 配合 | 双向分析 | 安全关键系统 | 互补验证 |
配合使用流程:
做什么: 分析每个失效模式是否违反安全目标。
| 模块 | 失效模式 | 影响 | 是否违反安全目标 |
|---|---|---|---|
| CPU | 永久故障 | 系统死机 | 是(SG_1) |
| SRAM | 单比特翻转 | 数据错误 | 可能(SG_2) |
| Flash | 数据损坏 | 程序错误 | 是(SG_1) |
| 分级 | 描述 |
|---|---|
| 无影响 | 不影响功能,不影响安全 |
| 轻微影响 | 影响非安全功能 |
| 严重影响 | 影响安全功能 |
| 危险影响 | 违反安全目标 |
做什么: 为每个违反安全目标的失效模式分配安全机制。
| 模块 | 失效模式 | 安全机制 | 诊断覆盖率 |
|---|---|---|---|
| CPU | 永久故障 | 双核锁步 + 看门狗 | 99% |
| CPU | 瞬态故障 | ECC | 99% |
| SRAM | 单比特翻转 | ECC (SECDED) | 99% |
| SRAM | 多比特翻转 | 双拷贝比较 | 90% |
| Flash | 数据损坏 | ECC + CRC | 99% |
| 安全机制 | 针对失效 | 诊断覆盖率 | 实现复杂度 |
|---|---|---|---|
| 双核锁步 | 永久/瞬态 | 99% | 高 |
| 看门狗 | 永久 | 90% | 低 |
| 内存保护 | 软件错误 | 60% | 中 |
| 奇偶校验 | 瞬态 | 90% | 低 |
| 安全机制 | 针对失效 | 诊断覆盖率 | 纠正能力 |
|---|---|---|---|
| ECC (SECDED) | 单比特错误 | 99% | 可纠正 |
| 双拷贝 | 多比特错误 | 90% | 可检测 |
| CRC | 数据完整性 | 99% | 可检测 |
| BIST | 固定故障 | 90% | 可检测 |
公式:
SPFM = 1 - (单点故障失效率 / 总故障失效率)
计算示例:
| 失效模式 | 失效率 (FIT) | 安全机制 | DC | 残留失效率 |
|---|---|---|---|---|
| CPU 永久 | 100 | 锁步 | 99% | 1 |
| CPU 瞬态 | 500 | ECC | 99% | 5 |
| SRAM 单比特 | 1000 | ECC | 99% | 10 |
| 总计 | 1600 | 16 |
SPFM = 1 - (16 / 1600) = 99%
公式:
LFM = 1 - (潜伏故障失效率 / 总故障失效率)
| ASIL | SPFM 要求 | LFM 要求 | 实际 SPFM | 实际 LFM | 是否满足 |
|---|---|---|---|---|---|
| ASIL-D | ≥ 99% | ≥ 90% | 99% | 92% | 满足 |
| 来源 | 风险 |
|---|---|
| 共用电源 | 电源故障同时影响冗余模块 |
| 共用时钟 | 时钟故障同时影响冗余模块 |
| 共用软件 | 软件 bug 同时影响冗余模块 |
| 环境因素 | 温度、辐射同时影响 |
| 共因因素 | 避免措施 |
|---|---|
| 共用电源 | 独立电源域 |
| 共用时钟 | 独立时钟源 |
| 共用软件 | 多样化软件实现 |
| 温度 | 温度监控 |
| 辐射 | 屏蔽、ECC |
做什么: 注入故障,验证安全机制是否正确检测和响应。
测试步骤:
检查清单:
检查清单:
| 安全目标 | 安全需求 | 实现模块 | 验证测试 | 结论 |
|---|---|---|---|---|
| SG_1 | SR_1.1 | CPU_Lockstep | test_001 | PASS |
| SG_1 | SR_1.2 | Watchdog | test_002 | PASS |
| SG_2 | SR_2.1 | SRAM_ECC | test_003 | PASS |
功能安全完成前检查:
❌ 安全机制设计不足:SPFM/LFM 不满足 ASIL 要求
❌ 忽视共因故障:冗余系统同时失效
❌ 安全状态设计不当:故障后无法进入安全状态
❌ 测试不充分:没有故障注入测试
❌ 可追踪性不全:某个安全需求找不到实现或验证
❌ 安全机制被功能故障屏蔽:功能和安全机制同时失效
| 工具 | 公司 | 用途 |
|---|---|---|
| VC Functional Safety | Synopsys | 功能安全分析 |
| Medini Analyze | IKV | 功能安全分析 |
| Excel | - | FMEDA 表格 |
functional-safety-engineer 代理进行功能安全设计