3. 故障注入技术全景与验证目标
在星载FPGA的容错验证中,故障注入不是单一手段,而是一组按“抽象层次”排列的技术族。理解它们的差异,关键不是记住四种名称,而是看清一个共同问题:我们究竟在系统的哪一层、以什么粒度、向哪个对象施加一个“错误”,并观察它如何传播到输出。物理注入作用于器件与辐照环境,仿真注入作用于RTL或网表模型,硬件注入作用于真实FPGA内部的可配置资源,软件注入则作用于处理器指令流或存储器内容。四者并非互相替代,而是覆盖不同验证阶段与不同故障模型。
四种注入方式的作用位置与故障模型
物理注入最接近真实失效机理。典型手段包括重离子/质子加速器辐照、脉冲激光注入、电源毛刺与温度应力。它直接作用于硅片,能触发单粒子翻转(SEU)、单粒子瞬态(SET)、单粒子锁定(SEL)等效应,故障位置和时刻具有随机性。其优势是“真实性最高”,缺点是成本高、可重复性差、定位困难,通常用于器件选型与最终鉴定,而非日常回归。
仿真注入在RTL或门级网表上进行。常见做法是修改寄存器初值、强制翻转某个触发器、在组合逻辑输出插入瞬态脉冲,或使用故障注入工具在网表中逐位翻转。它可精确控制注入位置、时刻和持续时间,便于观察内部信号传播,适合早期设计验证和覆盖率统计。局限是仿真模型未必完全反映时序、毛刺和物理效应,且大规模网表仿真速度受限。
硬件注入在真实FPGA上完成,但通过配置存储器回写、内部信号强制或部分重配置实现。例如利用Xilinx的SEM IP或JTAG回写CRAM,翻转某一配置帧中的一位,从而改变LUT真值表或布线连接;也可通过插入的故障注入控制器在运行时翻转用户寄存器。它兼顾真实性与可控性,是星载FPGA验证的核心手段,但需要设计可观测性与可控制性接口。
软件注入面向处理器或存储器系统,通过修改指令、寄存器或内存数据模拟软件级故障。例如在指令流中插入跳转错误、翻转数据区某一位、篡改校验和。它实现简单、可脚本化,适合验证EDAC、看门狗、三模冗余表决等容错机制,但无法直接反映FPGA内部逻辑的物理翻转。
验证指标:从“注入了多少”到“证明了什么”
注入本身不是目的,验证目标必须用可度量的指标表达。最基础的是故障注入覆盖率,定义为已注入的故障位置数占可注入位置总数的比例。例如某设计共有12,800个可翻转寄存器,若本轮注入覆盖了10,240个,则寄存器级覆盖率为80%。但覆盖率必须分类统计:寄存器、LUT、BRAM、布线资源各自的敏感度不同,笼统的“80%”可能掩盖关键路径未被覆盖的事实。
更关键的是故障传播覆盖率,即注入的错误中有多少比例真正传播到了可观测输出。一个翻转若被后续逻辑屏蔽或未影响输出,称为静默故障;若导致输出错误,则称为可观测故障。星载设计中,静默故障比例往往很高,因此必须区分“注入覆盖”与“传播覆盖”,否则会高估验证充分性。
容错有效性指标包括检出率、纠正率与漏检率。以三模冗余表决为例,注入单模块错误后,若表决器输出仍正确,则纠正成功;若两个模块同时出错导致表决失败,则漏检。恢复时间也是重要指标,例如看门狗从检测到异常到系统复位完成的时钟周期数,直接决定在轨可用性。
错误率指标面向物理层,常用SEU率(错误/位/天)、SEL率、MTBF(平均无故障时间)以及截面σ与LET阈值曲线。这些指标通常由辐照试验获得,用于评估器件在特定轨道环境下的预期失效频次。
覆盖度定义:结构、功能、故障模型与时序
覆盖度不能只理解为“节点是否被注入过”。完整的覆盖度至少包含四个维度:结构覆盖关注寄存器、LUT、BRAM、布线等物理资源是否被遍历;功能覆盖关注设计的关键功能模式是否在故障下被激活,例如状态机是否进入所有状态、总线是否发生所有事务类型;故障模型覆盖关注SEU、SET、固定0/1、桥接等模型是否被覆盖;时序覆盖关注故障发生在时钟边沿附近、复位期间、配置加载期间等敏感窗口时系统是否仍安全。
实操示例:一次硬件注入的指标计算
假设某星载FPGA设计含8,192个用户寄存器,采用三模冗余加固。使用内部注入控制器逐位翻转寄存器,每轮注入后采集表决器输出与EDAC纠错标志。示例参数如下(属教学假设,非实测):
可注入寄存器总数 N_total = 8192
本轮实际注入数 N_inj = 7373
其中传播到输出的故障 N_prop = 2949
被TMR纠正的故障 N_corr = 2654
导致输出错误的故障 N_err = 295
未传播的静默故障 N_silent = 4424
结构覆盖率 = 7373 / 8192 = 90.0%
传播覆盖率 = 2949 / 7373 = 40.0%
纠正率 = 2654 / 2949 = 90.0%
漏检率 = 295 / 2949 = 10.0%
这组数据说明:结构覆盖率看似达到90%,但传播覆盖率只有40%,意味着大量注入并未真正考验容错逻辑;而在真正传播的故障中,仍有10%导致输出错误,说明TMR表决或EDAC存在未覆盖的失效路径。后续应优先针对这295个错误故障定位其所在模块,检查是否为共因失效或表决器自身翻转。
四种方式的选择策略
实际项目中,四种注入方式通常按阶段组合使用:设计早期用仿真注入快速遍历敏感节点,定位逻辑薄弱点;中期用硬件注入在真实FPGA上验证容错机制与恢复流程;后期用物理注入进行器件级鉴定,获取截面与错误率数据;软件注入则贯穿始终,用于验证处理器级容错与系统级恢复策略。选择依据不是“哪种更先进”,而是当前验证目标需要多高的真实性、多细的定位能力以及多大的可重复性。
综上,故障注入技术全景的核心不是四种方法的并列罗列,而是“作用层次—故障模型—验证指标—覆盖度”四者之间的对应关系。只有把注入位置、传播路径和容错响应串成一条可观测、可度量的链条,验证结论才具备工程可信度。