摘要
由于航空航天活动越发复杂,深空通信和姿态控制等航空航天电子系统大量采用集成电路芯片以提高各方面性能。随着集成电路工艺节点的进一步缩小,电路受到单粒子效应而发生错误的概率越来越大。评估集成电路对单粒子翻转(Single event upset, SEU)的敏感性对航空航天的发展具有重要意义。电路规模的增加和系统功能集成度的提高给评估速度带来了严峻挑战。本文提出了一种能适用于超大规模集成电路(Very large scale integration, VLSI)的快速故障注入方法。该方法可通过脚本自动分析电路,并修改逻辑使电路具备故障注入功能。实验结果表明,该方法实现的故障注入速度可以达到纳秒级,可大幅缓解电路规模和评估时间之间的矛盾,从而满足VLSI的评估需求。
随着制造工艺的发展,集成电路特征尺寸减小,改变电路工作状态所需要的能量阈值呈几何级下降趋势,使得集成电路更容易受到辐射照射的影
通常采用故障注入技术来模拟宇宙空间环境中SEU对集成电路的影响,其中最经典的方法是将电路暴露在模拟的空间辐射环境中进行故障注
现在广泛采用基于FPGA的硬件模拟技术的故障注入方法。FPGA硬件模拟速度很快,能够满足VLSI电路的评估需求,此外FPGA还具有良好的可控性和可观察性。此类方法又分为重配置和旁路注入。重配置首先回读配置存储器的比特文件,然后修改部分配置内容以模拟单粒子翻转,再重新写回配置存储
本文提出了一种基于旁路注入技术的快速故障注入方法。该方法可通过脚本自动化分析基于硬件描述语言编写的寄存器传输级(Register transfer level, RTL)超大规模集成电路设计,并修改电路结构使之能够从旁路注入故障,结合仿真结果证明脚本可适用于任意规模电路。同时巧用时分复用机制保证脚本修改后的电路的原始功能不受影响。脚本实现电路修改的过程简单,耗时少,修改后电路增加的硬件资源开销相对其他技术方案也较低,适用于VLSI的评估。实验结果证明了其故障注入速度可以达到纳秒级别,具有优越的故障注入速度,在实际应用中具有不错的前景。
旁路注入原理是在原有的设计基础上,通过添加额外的组合逻辑,使待测电路具备故障注入功能。
原始触发器结构和旁路注入触发器结构分别如

图1 单触发器结构
Fig.1 Structure of flip‑flop
故障数据的类型由故障类型选通信号组决定,该信号组有3根信号线,分别是单比特翻转(Reverse)、单比特固定1(Stuck‑at‑1)和单比特固定0(Stuck‑at‑0),且在同一时间只有一根信号线有效。为了降低故障数据产生电路的资源开销,本文巧妙地利用了四输入查找表(LUT4)的内部结构,将正常数据和故障类型选通信号作为查找表的输入,并将对应故障类型数据作为输出,因此只需1个查找表即可完成故障数据的产生。
VLSI电路中触发器数目众多,需要逐个标识,以实现对指定的任意触发器进行故障注入操作。任意触发器故障注入流程如

图2 任意触发器故障注入流程
Fig.2 Fault injection process of arbitrary flip‑flop
由于触发器只在边沿采样数据,对时序有很高的要求,这给故障注入带来挑战。此外,故障注入时也不能影响处于正常工作状态的触发器。为了确保能够稳定可靠的注入故障,本设计采用时分复用机制。将时间划分为故障注入时间clk_div1和正常运作时间clk_div2。在clk_div1下执行故障注入;在clk_div2下执行电路的原始逻辑。

图3 时分复用机制
Fig.3 Time division multiplexing mechanism
本章介绍如何通过脚本编程,对 RTL级的设计代码进行再处理,实现旁路注入故障相关操作。所有工作均通过脚本自动化执行,电路分析时间开销小,且不受电路规模的限制。
提取触发器的脚本流程分析过程如

图4 提取触发器的脚本流程
Fig.4 Script flow of flip‑flop extraction
旁路注入逻辑的脚本伪代码如算法1所示。首先遍历所有的时序逻辑块,检索每个逻辑块中的触发器变量以及分配的ID范围,然后将
算法1 旁路注入逻辑伪代码
(1) if ID matched then
// 触发器ID匹配
(2) if reverse then // 单比特翻转
(3) D ← ~D
//触发器的数值翻转
(4) else if Stuck‑at‑0 then //单比特固定0
(5) D ← 0
//触发器数值变为0
(6) else D ← 1
//触发器数值变为1
(7) else D ← D //原始逻辑
单比特触发器加入旁路注入逻辑比较简单,可以直接通过if‑else的分支语句实现。但对多比特触发器而言,通过分支语句对多比特触发器某一位注入故障会导致该触发器的其他位也无法正常工作。为此,本文巧妙地设计时分复用机制,在时间上错开故障注入过程和电路正常工作过程。时分复用逻辑伪代码如算法2所示。
算法2 时分复用逻辑伪代码
(1) if (clk_div1 ==1)then //故障注入时间
(2) 故障注入
(3) else 执行正常逻辑 //正常运作时间
进一步设计电路来验证脚本功能的正确性,选择1位寄存器来实现产生方波信号的电路。将设计的HDL模型通过脚本处理,处理前后的逻辑如

图5 脚本插入故障逻辑前后对比
Fig.5 Comparison of the original logic and the modified logic
式中:Y表示2.3输出的故障数据;X表示当前触发器的数值;A、B、C分别代表3类故障(单比特固定0,单比特固定1和单比特翻转)。逻辑功能和门级电路的设计相吻合,在ID匹配时对目标触发器注入故障,且在任意时刻只能有一种故障类型有效。
为验证脚本功能的正确性,本文选取经过脚本处理后的4比特循环计数器作为待测电路进行测试,从低位到高位依次分配ID(1~4)。对ID为1的触发器cnt[0] 在某一时刻注入一次故障,以单比特翻转reverse为例,仿真波形结果如

图6 故障注入仿真
Fig.6 Fault injection simulation
从
为进一步验证本文提出的设计方案对于复杂电路系统的适用性,采用经典的MIPS 32位处理器的测试电路进行实

图7 系统框架
Fig.7 System framework
首先由PC配置故障参数给Zynq的PS端,参数主要包括ID和故障类型。然后PS端根据参数产生故障向量并下发给PL端的故障注入控制器,其中故障向量不仅包含了PC配置的基本参数,还包含了执行次数和故障注入时间等信息。实验时参考设计和待测设计同时执行一个运算程序,故障注入控制器在执行过程中对待测设计注入故障,随后由故障监控器比较二者的运算结果,如果结果不一致则判定错误发生,并将结果保存到存储器,最后由PS读取故障结果数据。
实验从资源开销和速度两方面来评估性能。在资源开销方面,处理器主要分为取指、译码、执行、存储和写回5个模块,故只需对这5个模块的原始资源和修改后的资源开销进行对比,具体如
可见修改后电路总共消耗的LUT增加了69.8%,触发器的开销几乎没有增加。写回模块不含有触发器,脚本处理前后没有变化。而文献[
考虑到工艺的发展以及电路规模的增大,以一定的面积开销来换取快速故障注入的实现是可以接受的。
在速度性能方面,实验设定为每个时钟周期都对选定的某个触发器注入故障,可计算系统的最快故障注入速度。测试覆盖全部1 712个触发器,参考设计工作频率为100 MHz,待测设计由于时分复用需将频率设置为200 MHz。测试结果如
进一步比较本文所提及的其他故障注入技术,对速度进行对比,结果如
由于各类方案的待测电路规模、执行时间和时钟频率各不相同,
本文提出了一种适用于VLSI电路的快速故障注入方法,通过脚本自动完成电路分析和旁路注入故障逻辑的修改。最后选取复杂的微处理器设计验证性能,实验结果表明,本方法故障注入速度可以达到1
参考文献
DIXIT A, WOOD A. The impact of new technology on soft error rates[C]//Proceedings of 2011 International Reliability Physics Symposium. [S.l.]: IEEE, 2011. DOI: 10.11 09/IRPS. 2011.5784522. [百度学术]
代海林, 袁伟峰, 贺云,等. 基于增量式 PID 算法和逆变调功的外层空间温度环境模拟系统设计[J]. 数据采集与处理, 2019, 34(4): 744‑752. [百度学术]
DAI Hailin, YUAN Weifeng, HE Yun, et al. Design of temperature environment simulation system for outer space based on PID control method and inverter power adjusting technology[J]. Journal of Data Acquisition and Processing, 2019, 34(4):744‑752. [百度学术]
张敏, 孟令军. 关于中子辐射的单粒子翻转效应测试与加固研究[J]. 电子器件, 2019, 42(6): 1365‑1370. [百度学术]
ZHANG Min, MENG Lingjun. Research on testing and reinforcement of single event upset effect of neutron radiation[J]. Electronic Device, 2019, 42(6): 1365‑1370. [百度学术]
DU B, STERPONE L, AZIMI S, et al. Ultrahigh energy heavy ion test beam on Xilinx Kintex‑7 SRAM‑based FPGA[J]. IEEE Transactions on Nuclear Science, 2019, 66(7): 1813‑1819. [百度学术]
NIDHIN T S, BHATTACHARYYA A, BEHERA R P, et al. Verification of fault tolerant techniques in finite state machines using simulation based fault injection targeted at FPGAs for SEU mitigation[C]//Proceedings of 2017 4th International Conference on Electronics and Communication Systems (ICECS). [S.l.]: IEEE, 2017: 153‑157. [百度学术]
潘雄, 邓威, 苑政国,等. SRAM型FPGA单粒子随机故障注入模拟与评估[J].微电子学计算机, 2018, 35(7): 23‑27. [百度学术]
PAN Xiong, DENG Wei, YUAN Zhengguo, et al. SRAM FPGA single event random fault injection simulation and evaluation[J]. Microelectronic Computer, 2018, 35(7): 23‑27. [百度学术]
朱启, 赖晓玲, 巨艇,等. 基于SRAM型FPGA可重构技术的故障注入系统设计[J]. 空间电子技术, 2017(5): 22‑26. [百度学术]
ZHU Qi, LAI Xiaoling, JU Ting, et al. Design of fault injection system based on reconfigurable technology of SRAM FPGA[J]. Space Electronic Technology, 2017(5): 22‑26. [百度学术]
芦浩.基于动态重配置的航空总线单粒子翻转效应测试系统研究[D].天津:中国民航大学, 2019. [百度学术]
LU Hao. Research on aero bus single event upset effect test system based on dynamic reconfiguration[D]. Tianjin: Civil Aviation University of China, 2019. [百度学术]
LOPEZ‑ONGIl C, GARCIA‑VALDERAS M, PORTELA‑GARCIA M, et al. Autonomous fault emulation: A new FPGA‑based acceleration system for hardness evaluation[J]. IEEE Transactions on Nuclear Science, 2007, 54(1): 252‑261. [百度学术]
徐松. 基于FPGA的集成电路故障注入攻击硬件模拟方法研究[D]. 天津:天津大学, 2016. [百度学术]
XU Song. Research on hardware simulation method of IC fault injection attack based on FPGA[D]. Tianjin: Tianjin University, 2016. [百度学术]
MANSOUR W, VELAZCO R. An automated SEU fault‑injection method and tool for HDL‑based designs[J]. IEEE Transactions on Nuclear Science, 2013, 60(4): 2728‑2733. [百度学术]
SERRANO F, CLEMENTE J A, MECHA H. A methodology to emulate single event upsets in flip‑flops using FPGAs through partial reconfiguration and instrumentation[J]. IEEE Transactions on Nuclear Science, 2015, 62(4): 1617‑1624. [百度学术]
Jifang Jin. Classic 5‑stage pipeline MIPS[EB/OL]. (2017‑02‑28). https://opencores.org/projects/mips32. [百度学术]