4. 故障注入平台总体架构设计
星载FPGA故障注入验证平台不是一台仪器,而是一套由多个角色协同工作的闭环系统。它的核心任务可以概括为:让被测FPGA在受控条件下经历特定故障,同时精确记录它“受到了什么、做出了什么反应、是否被纠正”。围绕这一任务,平台通常划分为五个功能域:被测FPGA(DUT)、注入控制器、监测采集、激励生成和自动化测试框架。理解这五者的职责边界与集成关系,是后续搭建实物平台、编写测试脚本和判读结果的前提。
五个功能域的职责与接口
被测FPGA是验证对象,通常运行真实的星载逻辑,例如遥测采集、指令译码、总线接口或冗余表决逻辑。它对外暴露三类接口:激励输入(传感器数据、总线命令)、状态输出(关键寄存器、状态机编码、输出数据)以及配置/回读通道(用于部分重构或配置帧回读)。在故障注入语境下,DUT还必须预留“故障注入观测点”,例如关键寄存器的影子副本或可被外部读取的内部信号,否则注入后无法判断故障是否真正生效。
注入控制器负责在正确的时间、正确的位置施加故障。它需要三类能力:故障位置选择(目标寄存器、存储单元或信号节点)、故障类型生成(位翻转、固定0/1、桥接、延迟、瞬态脉冲)以及触发时机控制(周期精确触发、事件触发或随机触发)。注入控制器与被测FPGA之间的物理通道通常包括JTAG配置回读、SelectMAP部分重构接口、内部ICAP原语或外部辐照/电磁注入装置。不同通道的注入粒度、可重复性和对时序的干扰程度差异很大,架构设计时必须明确当前平台采用哪一条通道。
监测采集是平台的“眼睛”。它持续或按触发条件采集DUT的关键状态,包括输出数据比对、状态机编码、错误标志、看门狗计数、EDAC纠正计数以及电源电流等。监测采集的核心指标是采样深度、采样率和时间戳精度。对于瞬态故障,若采样率低于故障持续时间,就可能漏掉故障效应;对于累积型故障,则需要长时间连续记录。监测数据必须与注入事件共享同一时间基准,否则无法建立“注入—响应”的因果关系。
激励生成为DUT提供运行场景。星载FPGA的典型激励包括:模拟遥测帧、总线读写序列、指令流、时钟与复位时序,以及边界条件(如满缓存、非法指令、时钟切换)。激励生成器需要支持可重复的确定性激励和带随机扰动的压力激励两种模式。确定性激励用于故障复现和回归测试,随机激励用于暴露罕见组合。
自动化测试框架是平台的“大脑”和“调度员”。它把注入控制器、激励生成和监测采集组织成可重复执行的测试用例,管理测试序列、参数扫描、结果判定和报告生成。框架通常运行在上位机上,通过以太网、USB或PCIe与各硬件模块通信。
集成方案的关键设计决策
把五个功能域连成平台时,有三个决策直接影响验证结果的可信度。
第一,注入通道与监测通道的时序对齐。如果注入控制器通过JTAG回读修改配置帧,而监测采集通过另一条总线读取状态,两条通道的延迟不同,就会出现“注入已完成但监测还没看到”或“监测已采样但注入尚未生效”的错位。工程上的做法是引入统一的触发总线:注入控制器在施加故障的同时发出一个硬件触发脉冲,监测采集收到该脉冲后才开始记录,并在数据中打上同一时间戳。这样即使两条通道延迟不同,也能在后期对齐。
第二,激励生成与注入触发的耦合方式。故障注入不能脱离运行场景。例如要验证“遥测帧校验错误时EDAC能否纠正”,就必须让激励生成器先产生一帧带错误的遥测数据,再在数据进入EDAC模块的时钟周期上注入位翻转。因此激励生成器需要向注入控制器提供“场景同步信号”,例如帧起始标志、指令译码完成标志或状态机进入特定状态的编码。注入控制器据此选择触发时机,而不是简单地按固定周期注入。
第三,自动化测试框架的抽象层次。框架不应直接操作底层寄存器,而应提供测试用例描述语言。一个典型的测试用例包含:激励场景编号、注入目标(模块/寄存器/位偏移)、故障类型、触发条件、监测窗口长度、判定准则。框架解析用例后,依次调用激励生成、注入控制和监测采集,最后根据监测数据判定“通过/失败/异常”。这种分层设计使得新增测试用例只需编写描述,而不必修改底层驱动。
一个可参考的集成参数示例
以下参数属于教学示例,用于说明各模块之间需要协商的接口量级,并非某型设备的实测指标。
| 接口 | 方向 | 示例参数 | 说明 |
|---|---|---|---|
| 激励—DUT | 激励生成 → DUT | 帧长256字节,周期1ms | 模拟遥测帧输入 |
| 注入—DUT | 注入控制器 → DUT | 位翻转,目标寄存器偏移0x2A,位3 | 通过ICAP部分重构实现 |
| DUT—监测 | DUT → 监测采集 | 采样率100MS/s,深度64K样点 | 捕获瞬态故障响应 |
| 触发总线 | 注入控制器 → 监测采集 | 脉冲宽度10ns,时间戳精度1ns | 对齐注入与采集 |
| 框架—各模块 | 双向 | 以太网1000Mbps,命令响应<1ms | 测试用例调度与结果回传 |
从架构到可执行平台
完成架构设计后,下一步是把每个功能域落到具体硬件和软件上。注入控制器可以基于FPGA夹层板实现,通过SelectMAP或ICAP接口访问DUT配置空间;监测采集可以用高速逻辑分析仪或专用采集卡实现;激励生成可以运行在另一片FPGA或上位机软件中;自动化测试框架则通常用Python或LabVIEW编写,通过SCPI、TCP或自定义协议与硬件通信。无论具体选型如何,集成的核心始终是:让注入、激励、采集三者在同一时间基准下协同工作,并由测试框架统一调度和判定。只有做到这一点,故障注入结果才具备可重复性和可分析性,后续的容错验证才有可靠基础。