SRAM型FPGA SEU缓解与验证技术分析
2019-09-17胡胜旺崔红军
郑 丹,胡胜旺,封 亮,崔红军
(中国电子科技集团公司第三十二研究所测评中心,上海 201808)
0 引言
现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)由于其灵活性和高计算能力,在嵌入式、网络、信息系统等领域中得到了广泛的应用。在航空航天应用中,传统上人们更倾向于使用对辐射高耐受性的反熔丝型FPGA。近年来,由于低成本、高性能和飞行中的可重构性,基于静态随机存取存储器(Static Random-Access Memory,SRAM)的FPGA在空间嵌入式系统中的应用越来越受到关注。然而,SRAM型FPGA由于其定义用户电路的配置存储区易受单粒子翻转效应(Single Event Upset,SEU)的影响,对辐射特别敏感,易引起系统失效。根据对商用飞机的问题统计,有20%的“不可重现”问题来源于SEU导致的软错误。2011年,美国联邦航空局DO-254认证文档第6节,明确要求在验证和确认阶段,能够验证目标系统SEU缓解对策的有效性[1]。2014 年,波音等航电设备厂商,专门发布了针对SEU的航电设备安全性认证报告。美国联邦航空局(Federal Aviation Administration,FAA)、欧洲航空安全局(European Aviation Safety Agency,EASA)等监管机构也已经开始将单粒子防护设计和评价要求纳入工程化标准或适航要求。国内针对抗SEU设计需求分析和验证要求写入了国标、国军标规范:2017年5月31日发布的GB/T33781《可编程逻辑器件软件开发通用要求》,2018年8月1日发布的GJB9432《军用可编程逻辑器件软件开发通用要求》在需求分析阶段指出需针对抗状态翻转开展必要和可行性分析,并明确抗状态翻转技术方法。同期发布的GB/T33783《可编程逻辑器件软件测试指南》、GJB9433《军用可编程逻辑器件软件测试要求》在安全性测试中也明确要求“测试抗状态翻转措施的有效性”。本文基于SRAM型FPGA对三模冗余技术、纠错编码技术、配置刷新技术三类SEU缓解技术进行深入研究和分析,并从仿真验证与故障注入两种验证方法展开探讨。
1 三模冗余技术
三模冗余防护方法(Triple Modular Redundancy,TMR)由于有工具支持、使用方便,因此是较常用的SEU缓解技术。TMR建立硬件冗余结构,对关键电路复制三份,通过对三路输出结果表决来屏蔽任何一路的SEU故障。FPGA厂商Xilinx推出RTL级的TMR设计工具TMR Tool帮助实现基于综合后网表的三模冗余加固。目前国内可购买的TMR Tool最高版本为9.2i,支持Xilinx V1~V5系列,适配ISE 9.2及其之前的版本。此外,更简单经济的方式是使用带TMR功能的第三方综合工具。例如Mentor Graphics的综合工具Precision Hi-Rel提供三模冗余功能,支持用户电路TMR插入,需做抗SEU加固设计的FPGA设计可通过关联第三方综合器实现TMR。Libero开发环境中适配Synopsys公司的Synplify/Synplify Pro综合器支持在模块或寄存器声明后添加三模冗余属性设置“/*synthesis syn_radhardlevel="tmr"*/”,完成模块级或寄存器级的三模冗余电路设计。考虑到资源开销,目前常用的三模冗余方式只对时序电路复制三份,三模前后对比如图1所示,图(b)中PS0_1、PS0_1_tmr2、PS0_1_tmr3为在图(a)基础上复制的三份电路,PS0_1_maj为表决电路。
图1 基于时序逻辑TMR三模前后对比
TMR对SEU引起的功能错误缓解效果较好,但逻辑资源开销较大,且三模冗余的引入对时序会造成一定影响,一般对关键寄存器或者关键模块进行三模冗余。对于空间应用领域使用较多的Xilinx器件,可通过厂商提供的TMRTool进行基于综合后网表的TMR,结合刷新技术可防止SEU错误累积;对于Actel器件,可在RTL源码中添加TMR属性设定,实现综合后网表的三模冗余,后者在灵活性上更胜一筹。文献[2]分别基于Xilinx和Actel器件的TMR实现效果进行分析比较。
2 纠错编码技术
通过TMR加固的FPGA系统发生SEU后,关键电路的错误状态可能暂时不会传入下一级,但在系统长时间运行条件下,错误状态可能进行累积从而导致系统失效。引入纠错编码技术(Error Detecting And Correcting,EDAC)可对各模块关键信号实时监测,并将检测到的错误信号及时纠正,防止了空间辐照对系统的影响。具有单比特错误纠正、双比特错误检测(Single Error Correction - Double Error Detection,SEC-DED)功能的汉明码EDAC技术已被证明是保护内部配置存储器和其他外部易失性存储器的有效方法。目前,用于加固的EDAC电路多通过线性分组码实现,在编码过程中生成待编码信息数据的校验位,校验位与数据一同存储,利用译码过程与编码过程中产生校验位的异或结果对错误进行纠正。从资源占用和性能考虑,相比于TMR,EDAC更适合防护RAM器件,纠错编码技术与TMR均属于用户电路加固技术[3]。文献[4]提出了TMR与EDAC相结合的技术,可纠正双比特错误。
3 配置刷新技术
针对SEU的SRAM型FPGA故障模式如图2所示:BRAM翻转故障将改变用户数据,可通过EDAC校验检测;组合逻辑故障、时序逻辑故障、互连关系故障将改变电路逻辑结果,可通过TMR方式缓解用户数据故障。但由于组合/时序逻辑及其内连关系由配置编程点决定,一旦配置区受SEU影响,直到原始配置位流重新载入到FPGA中用户数据才能恢复。且配置存储容量占FPGA存储资源的85%以上,因此需要结合配置刷新技术防止配置存储区的SEU效应。
图2 SRAM型FPGA故障模式
配置刷新是指系统配置成功后,按预定时间间隔或帧校验结果,将配置区数据重写入FPGA,以消除已有SEU错误积累的方法,刷新的对象为FPGA内部CLB配置。配置刷新的基本流程为:回读数据帧->与原始帧数据比对->校正帧中的错误位->写回数据帧至FPGA,如图3所示。
图3 配置刷新流程
配置刷新依赖于外部刷新或内部刷新电路。以Xilinx器件为例,JTAG接口、SelectMAP接口为外部刷新,需要外部刷新电路通过FPGA外部引脚进行读写[5]。(1)使用JTAG接口占用外部引脚少,且具有其他配置接口中的最高优先级,甚至可以中断正在运行的重新配置过程。该接口以串行模式传输,最大速率为24 Mb/s,相对读取配置数据时间长。(2)SelectMAP为并行接口,读取配置数据时间短,占用FPGA外部引脚较多,对于高输出引脚利用率的应用是个缺点。(3)ICAP接口为内部刷新接口,使用内部刷新方式无需占用FPGA外部接口,读写配置寄存器时间短,配置速率可达3.2 Gb/s。目前,空间应用系统中常用的Xilinx V2~V5系列器件多采用SelectMAP方式,V7系列器件采用ICAP方式进行配置刷新。根据刷新方式不同,可分为全局复位刷新、盲刷新、配置回读刷新,其刷新过程和优缺点分析如表1所示。
表1 配置刷新方式及优缺点
4 验证技术
验证SRAM型FPGA设计抗翻转措施有效性的手段通常包括辐射实验和故障注入。辐射实验成本高,实验周期长,目前国内能做模拟单粒子轰击的实验室不多,且辐射实验对发现问题难以定位故障点。故障注入方式具有周期短、成本低、可测试性高等优点,是评估SEU缓解措施有效性的一种重要手段。
4.1 仿真环境下故障注入
针对加固设计(如TMR)的仿真验证手段可通过门级仿真实现,门级仿真能够发现三模冗余失效、异常情况下状态机死锁、特殊用途寄存器被优化等问题。在针对综合后网表的门级仿真环境下模拟单比特或多比特翻转,能验证冗余设计的有效性。例如模拟关键模块的状态机寄存器出现单粒子翻转故障,通过仿真命令(如force)修改某一时刻的状态寄存器进入无效状态,查看仿真波形确定状态机是否能回到有效的状态,之后的状态机迁移是否正确,没有出现死锁。
针对配置刷新的SEU缓解设计通常包括一个外部存储器存放原始配置位流,可参照图4的仿真测试验证框架对其进行验证,对加载控制、回读判定、刷新功能进行验证,仿真测试还能测试接口时序、重载时间、回读周期和刷新周期等。图中PROM仿真模型能模拟外部存储器(存放原始配置位流)的接口时序。配置区仿真模型存储配置数据,模拟selectMAP接口时序与被测件(Device Under Test,DUT)交互。上电复位后,DUT应能从PROM中读出配置数据实现加载过程;拉低PROG信号,DUT应能从PROM中读出配置数据实现配置重载。
图4 仿真测试验证框架
FPGA特有的配置电路加载过程包括上电过程(设备上电、清配置区等)、配置位流加载过程(同步、设备ID检测、加载配置数据、CRC检测等)、启动过程。针对配置回读检测刷新设计的验证流程包括去除同步位、写回读指令、读取配置区位流和外部存储区原始配置位流、数据比较[6]。测试人员应关注回读配置数据与PROM数据一致时,DUT是否不会重载;设置配置数据出现SEU错误,查看被测设计是否能检测到单比特或者多比特翻转,并在检测失败后能够控制接口时序进行PROM原始配置数据重载。
4.2 配置存储器故障注入
NASA专门研发了面向大容量FPGA系统的测试验证工具XRTC Fault Injector,这也是当前业界使用的功能最齐全、最具代表性的FPGA故障注入测试系统,每分钟能自动测试1 000+配置编程点。欧空局支持开发的FLIPPER工具能评估基于Xilinx SRAM型FPGA的SEU和MBU(Multi Bits Upset)效应。此外,通过FLIPPER工具收集导致功能故障所需的配置存储器中随机注入故障概率分布,有助于定义配置刷新率。文献[7]中对FLIPPER与静态分析工具STAR进行实验对比,并提出可通过STAR工具产生用于故障注入的点,结合FLIPPER进行故障注入,评估加载用户应用的SRAM型FPGA设计SEU缓解措施是否有效。配置存储器故障注入已被广泛用于空间应用系统的失效率统计,以及加固设计的有效性评估上[8]。这类故障注入系统通常由三部分组成:用于控制故障注入过程的控制板(基于FPGA)、测试板(DUT)、用于在线调试的PC。配置存储器故障注入流程如图5所示。
图5 故障注入流程图
配置存储器故障注入系统具有测试速度快、统计效率高等特点,但由于需要搭建额外电路结构,更适合于研制单位测试产品抗SEU特性。
5 结论
本文对针对易受软错误影响的SRAM型FPGA进行深入研究分析,阐述了三模冗余、纠错编码、配置刷新三种主流软错误缓解措施的原理和方法,以及基于故障注入的验证手段。随着FPGA在空间系统的广泛应用,FPGA软件针对软错误缓解措施的技术和验证方法亟需加强。参考国内外研究现状,结合FPGA软件研制工作的实际特点,选择合理的加固或刷新手段,对于切实提高空间应用FPGA软件研制质量具有重要意义。