第三章FSV 功能安全验证

概述

功能安全验证App 面向 ISO 26262 汽车功能安全标准,通过形式方法分析故障(fault)在设计中的传播,验证安全机制(Safety Mechanism)的有效性。

Key Concepts

标准分析技术

FSV 支持以下分析:

高级形式分析技术

Fault Relations Analysis

分析故障之间的关系:

Setup 和工作流程

FSV 支持两种前端:

FSV App 故障分析界面
FSV App 故障分析界面

添加 Faults 和 Strobes

手动添加 Fault

# 添加 stuck-at fault
add_fault -signal u_dut.reg_file[0] -type stuck_at_0
add_fault -signal u_dut.reg_file[1] -type stuck_at_1

# 批量添加 fault
add_fault -hierarchy u_dut.datapath -type stuck_at

手动添加 Strobe

Strobe 是观察点,用于检测故障是否被安全机制捕获:

# 添加观察点
add_strobe -signal safety_checker.error_flag -name fault_detected

从 Source Browser 添加

在 Source Browser 中右键信号可以直接添加 fault 或 strobe。

Structural Analysis

# 运行结构级故障分析(快速筛查)
analyze_fsv -structural

结构分析快速识别哪些故障在结构上无法到达安全输出,无需运行完整证明。

Formal Analysis

# 运行形式故障分析
analyze_fsv -formal
prove_fsv -all

形式分析数学证明每个故障是否:

FSV 功能安全分析界面

功能安全验证方法论

ISO 26262 对形式验证的要求

ISO 26262 汽车功能安全标准要求对硬件故障的影响进行分析。传统方法是故障仿真(在网表中注入故障然后跑仿真),但仿真只能覆盖有限的场景。形式化的 FSV 能穷尽分析所有故障在所有输入条件下的影响,是 ASIL D(最高安全等级)认证的推荐方法。

故障模型选择

故障类型模拟的物理故障适用场景
SA0/SA1(Stuck-At)信号线短路到 VDD/GND永久性制造缺陷
SEU(单粒子翻转)宇宙射线导致 flop 值翻转软错误(需要时间窗)
SET(单粒子瞬态)粒子轰击导致信号瞬态脉冲组合逻辑软错误(需要 set_hold_time)

A/P/D 三维分析

FSV 对每个故障按三个维度分类:

AActivability(可激活性)

故障能被激活吗?即存在输入条件使得故障效应被触发。不可激活→ 该故障永远不可能发生(如恒 0 信号的 SA1 故障),标记 safe。

PPropagatability(可传播性)

激活的故障能传播到输出吗?如果逻辑路径阻塞了传播(如 AND 门另一输入为 0),则故障不可传播,标记 safe。

DDetectability(可检测性)

传播到输出的故障能被安全机制检测到吗?如果有检测器/纠错码/冗余比较等机制捕捉到故障,则 安全(Detected);如果传到了功能输出且未检测,则 危险(Dangerous)

安全机制验证思路

验证安全机制有效性的最佳方法是对比实验

  1. 在没有安全机制的版本(unsafe)上跑 FSV → 记录 Dangerous 故障数量和类型
  2. 在加入安全机制的版本(safe)上跑 FSV → 对比 Dangerous 故障减少量
  3. 减少量就是安全机制的故障覆盖率(Diagnostic Coverage, DC),ISO 26262 要求 DC ≥ 90%(ASIL B)或 ≥ 99%(ASIL D)

来源文档

  • jaspergold_fsv_userguide.pdf
  • example_jaspergold_apps/FSV/