一种sram型fpga用户寄存器单粒子翻转故障注入方法

文档序号:1923583 发布日期:2021-12-03 浏览:12次 >En<

阅读说明:本技术 一种sram型fpga用户寄存器单粒子翻转故障注入方法 (SRAM (static random Access memory) type FPGA (field programmable Gate array) user register single event upset fault injection method ) 是由 周东 汪路元 王翠莲 冯国平 刘崇华 曾连连 翟君武 吴伟 张溢 李珂 庞波 于 2021-07-27 设计创作,主要内容包括:本发明公开一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法,能够对SRAM型FPGA用户寄存器中的暂存值进行直接的修改,实现SRAM型FPGA用户寄存器的单粒子翻转故障的模拟。包括:分析用户寄存器控制参数的真值表,获得将用户寄存器直接设置为“0”或“1”的控制参数的真值表项。通过FPGA Editor工具修改网表文件中控制参数设置值,对比修改前后的配置码流,获得FPGA寄存器控制参数在配置位流中的准确偏移量。结合XDL文件中的寄存器X、Y坐标信息,得到FPGA代码中感兴趣寄存器的准确偏移量。从而可以通过SelcetMap或JTAG接口对感兴趣寄存器进行快速故障注入。大幅度提高SRAM型FPGA单粒子翻转故障注入效率和准确度,更有效地识别FPGA中用户寄存器单粒子翻转防护中的隐患。(The invention discloses a single event upset fault injection method for an SRAM (static random access memory) type FPGA (field programmable gate array) user register, which can directly modify a temporary storage value in the SRAM type FPGA user register and realize the simulation of the single event upset fault of the SRAM type FPGA user register. The method comprises the following steps: and analyzing the truth table of the control parameters of the user register to obtain a truth table entry of the control parameters for directly setting the user register to be 0 or 1. And modifying the set value of the control parameter in the netlist file through an FPGA Editor tool, and comparing the modified configuration code stream to obtain the accurate offset of the control parameter of the FPGA register in the configuration bit stream. And combining the coordinate information of the register X, Y in the XDL file to obtain the accurate offset of the interested register in the FPGA code. So that fast fault injection can be performed on the register of interest through the SelcetMap or JTAG interface. The single event upset fault injection efficiency and accuracy of the SRAM type FPGA are greatly improved, and hidden dangers in single event upset protection of a user register in the FPGA are effectively identified.)

一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法

技术领域

本发明属于卫星电子系统技术领域,涉及一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法。

背景技术

为了满足大容量、高速、复杂信息处理、在轨可重构等要求,现有卫星电子系统中大量采用了SRAM型FPGA。SRAM型FPGA属于单粒子敏感器件,必须采取单粒子效应防护措施。

目前在卫星电子系统中,所采取的SRAM型FPGA的典型防护措施为定时刷新和三模冗余。在工程实施过程中,时常出现防护措施不到位的情况,例如:(1)刷新功能设计存在隐患,造成不刷新、刷新不完整、或误刷新的情况;(2)三模冗余设计存在缺陷,导致重要寄存器三模冗余设计不完整;(3)FPGA功能要求越来越复杂,但FPGA资源有限,只能选取部分重要寄存器进行三模冗余设计。而人为评估得到的重要寄存器可能存在偏差,导致重要寄存器遗漏,造成一定程度的单粒子翻转隐患。

开展SRAM型FPGA单粒子故障注入试验,可以识别上述设计隐患。现有技术中的单粒子故障注入系统,主要借助SelectMap或JTAG接口向SRAM型FPGA顺序或随机地注入配置数据故障码流。配置数据主要对应的是FPGA中的逻辑电路、连通状态等信息,通过配置数据顺序或随机的注入方式并不能准确快速地改变用户寄存器的暂存值。目前公开文献中均没有直接针对SRAM型FPGA用户寄存器进行故障注入的相关信息。

发明内容

本发明公开一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法,能够对SRAM型FPGA用户寄存器中的暂存值进行直接的修改,实现SRAM型FPGA用户寄存器的单粒子翻转故障的模拟。

本发明通过以下技术方案实现。

一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法,包括:

分析FPGA用户寄存器中复位初值参数和复位极性参数的真值表,获得可将用户寄存器暂存值直接设置为“0”或“1”的真值表项;

获取所述用户寄存器复位初值参数、复位极性参数在配置位流数据中的偏移量;

通过感兴趣用户寄存器的X、Y坐标信息和用户寄存器复位初值参数、复位极性参数的位流偏移量关系,获得感兴趣寄存器故障位流偏移量;

根据所述感兴趣寄存器故障位流偏移量进行用户寄存器单粒子翻转故障注入。

本发明的有益效果:

本发明可获得将用户寄存器直接设置为“0”或“1”的控制参数真值表项。可获得FPGA寄存器控制参数在配置位流中的准确偏移量。结合XDL文件中的寄存器X、Y坐标信息,得到FPGA代码中感兴趣寄存器的准确偏移量。从而可以通过SelcetMap或JTAG接口对感兴趣寄存器进行快速故障注入。大幅度提高SRAM型FPGA单粒子翻转故障注入效率和准确度,更有效地识别FPGA中用户寄存器单粒子翻转防护中的隐患。

附图说明

图1为本发明SRAM型FPGA用户寄存器单粒子翻转故障注入方法流程图;

图2为本发明

具体实施方式

中用户寄存器的基本结构图;

图3为本发明具体实施方式中用户寄存器单粒子翻转故障注入流程图。

具体实施方式

下面结合附图对本发明做进一步说明。

如图1所示,本具体实施方式的一种SRAM型FPGA用户寄存器单粒子翻转故障注入方法,包括:

步骤一、分析FPGA用户寄存器中复位初值参数和复位极性参数的真值表,获得可将用户寄存器暂存值直接设置为“0”或“1”的真值表项;

在具体实施时,SRAM型FPGA中的用户寄存器分布于FPGA中的Slice、IOB等部件中。用户寄存器的基本结构如图2所示。用户寄存器有一个复位信号控制端SR,SR控制端的上游有个复位信号极性控制元件,用于控制SR信号的极性,即决定是高电平复位还是低电平复位,该极性控制元件的控制参数可选设置值为:SR、SR_B,该参数可命名为复位极性参数。用户寄存器中包含一个复位初值参数,用于设置复位期间用户寄存器的默认值,该控制参数可选设置值为:SRHIGH、SRLOW。

当用户寄存器正常运行时,复位信号控制端SR处于非复位状态,此时将复位极性参数取反:(1)原来设置值为SR时,修改为SR_B,(2)原来设置值为SR_B时,修改为SR,则可将用户寄存器的复位控制端SR设置为复位状态。再通过修改复位初值参数,选择SRLOW或SRHIGH。可将用户寄存器设置为所期望的‘0’或‘1’。

下表1所示为用户寄存器关于复位初值参数、复位极性参数的真值表。通过表中第3、4项可将用户寄存器暂存值设置为“0”,通过表中第7、8项可将用户寄存器暂存值设置为“1”。

表1用户寄存器真值表

步骤二、获取用户寄存器复位初值参数、复位极性参数在配置位流数据中的偏移量;

本实施例中,所述复位初值参数在配置位流中的偏移量采用下述步骤进行获取:

(a)在FPGA开发环境ISE中编译原始用例,并使用BitGen工具生成原始配置位流数据,标记为配置数据1;

(b)在FPGA开发环境ISE中,打开FPGA Editor工具,浏览并找到目标寄存器,打开目标寄存器内部结构图;

(c)设置FPGA Editor属性为可编辑状态;

(d)修改复位初值参数,设置为与原有状态相反的状态;即原为SRHIGH时,修改为SRLOW。原为SRLOW时,修改为SRHIGH;

(e)保存设置状态,并通过ISE BitGen工具生成配置位流数据,标记为配置数据2;

(f)逐位比较配置数据1、配置数据2的数据,获得复位初值参数在配置位流数据中的偏移量,标记为SR_offset;

(g)在FPGA Editor中找到相邻行列的用户寄存器,并重复上述步骤(a)~(f),获得相邻行列寄存器复位初值参数在配置位流中的偏移量。

在具体实施时,相邻的上下左右四个方向的寄存器偏移量标记为SR_offset_Up、SR_offset_Down、SR_offset_Left、SR_offset_Right,根据所述SR_offset、SR_offset_Up、SR_offset_Down、SR_offset_Left、SR_offset_Right获得相邻行列控制参数的偏移量的增量,继而推算出所有用户寄存器中复位初值参数在配置位流数据中的偏移量。

本实施例中,所述复位极性参数在配置位流数据中的偏移量采用下述步骤进行获取:

(a)在FPGA开发环境ISE中编译原始用例,并使用BitGen工具生成原始配置位流数据,标记为配置数据3;

(b)在FPGA开发环境ISE中,打开FPGA Editor工具,浏览并找到目标寄存器,打开其目标寄存器内部结构图;

(c)设置FPGA Editor属性为可编辑状态;

(d)修改复位极性参数,设置为与原有状态相反的状态;即原来设置值为SR时,修改为SR_B,原来设置值为SR_B时,修改为SR;

(e)保存设置状态,并通过ISE BitGen工具生成配置位流数据,标记为配置数据4;

(f)逐位比较所述配置数据3、配置数据4的数据,可获得复位极性参数在配置位流数据中的偏移量,标记为POL_offset。

(g)在FPGA Editor中找到相邻行列的用户寄存器,并重复上述步骤(a)~(f),获得相邻寄存器复位极性参数在配置位流中的偏移量。

在具体实施时,相邻的上下左右四个方向的寄存器偏移量标记为POL_offset_Up、POL_offset_Down、POL_offset_Left、POL_offset_Right。根据POL_offset、POL_offset_Up、POL_offset_Down、POL_offset_Left、POL_offset_Right获得相邻行列控制参数的偏移量的增量,继而推算出所有用户寄存器中复位极性参数在配置位流数据中的偏移量。

步骤三、通过感兴趣用户寄存器的X、Y坐标信息和用户寄存器复位初值参数、复位极性参数的位流偏移量关系,获得感兴趣寄存器故障位流偏移量。

本实施例中,具体包括以下步骤:

(a)从FPGA源代码中获取感兴趣用户寄存器的名称;

(b)通过ISE自带的xdl.exe工具,将FPGA工程网表ngc文件,转换为XDL文件格式;转换命令示例为:xdl-ncd2xdlfilename.ncdfilename.xdl;

(c)在FPGA编译环境的工程文件夹找到XDL文件,通过文本表编辑器打开所述XDL文件,查询所述XDL文件中感兴趣用户寄存器中的布局信息,获得感兴趣用户寄存器的X、Y坐标信息;XDL文件中寄存器坐标信息示例:inst"reg""SLICE",placed R20C36 SLICE_X71Y88,表示寄存器reg坐标信息为横坐标X:71、纵坐标Y:88;

(d)通过所述感兴趣用户寄存器的X、Y坐标信息和用户寄存器复位初值参数、复位极性参数的位流偏移量关系,获得FPGA代码中感兴趣用户寄存器故障注入所需的故障位流偏移量。

步骤四、根据所述感兴趣寄存器故障位流偏移量进行用户寄存器单粒子翻转故障注入。

如图3所示,本实施例中,所述故障注入采用故障注入器通过注入接口向SRAM型FPGA注入配置数据。

所述注入配置数据包括原始配置数据和故障配置数据,用于对比正常情况和异常情况下FPGA的工作状态;所述注入接口包括SelectMap和JTAG接口。

在具体实施时,步骤一、二仅进行一次,步骤三、四可以重复进行。

综上所述,以上仅为本发明的典型实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:锁存电路和包括其的半导体存储器件

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!