CN114675624A - 一种fpga电路故障注入方法及其ip核 - Google Patents

一种fpga电路故障注入方法及其ip核 Download PDF

Info

Publication number
CN114675624A
CN114675624A CN202210247238.9A CN202210247238A CN114675624A CN 114675624 A CN114675624 A CN 114675624A CN 202210247238 A CN202210247238 A CN 202210247238A CN 114675624 A CN114675624 A CN 114675624A
Authority
CN
China
Prior art keywords
fault
control module
interface control
fpga
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210247238.9A
Other languages
English (en)
Inventor
李悦
朱翔
赵旭
韩建伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Space Science Center of CAS
Original Assignee
National Space Science Center of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Space Science Center of CAS filed Critical National Space Science Center of CAS
Priority to CN202210247238.9A priority Critical patent/CN114675624A/zh
Publication of CN114675624A publication Critical patent/CN114675624A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0218Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
    • G05B23/0256Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults injecting test signals and analyzing monitored process response, e.g. injecting the test signal while interrupting the normal operation of the monitored system; superimposing the test signal onto a control signal during normal operation of the monitored system

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明涉及航天技术及FPGA电路单粒子效应评估技术领域,特别涉及一种FPGA电路故障注入方法及其IP核;所述IP核包括:串行数据收发模块和数据协议解析模块、寄存器模块、故障集存储模块、单帧重构指令存储模块、负载集存储模块、读回集存储模块、FLASH接口控制模块、JTAG接口控制模块和DUT接口控制模块。本发明提供的FPGA电路故障注入方法及其IP核兼容型强,适用于多种类型的FPGA芯片的故障注入,支持逐位注入模式和累积注入模式,支持多种故障类型,并且DUT接口灵活,使用方便。

Description

一种FPGA电路故障注入方法及其IP核
技术领域
本发明涉及航天技术及FPGA电路单粒子效应评估技术领域,特别涉及一种FPGA电路故障注入方法及其IP核。
背景技术
FPGA(Field Programmable Gate Array,现场可编程门阵列)是宇航电子系统的核心信号处理器件,被广泛应用在航天器中的各种载荷和平台单机上。由于FPGA含有大量信息存储单元,FPGA极易受空间辐射环境影响,发生单粒子翻转,是卫星出现系统故障的主要原因之一。目前,单一依赖地面重离子加速器进行单粒子辐照试验,受限于辐照试验时间的严重不足,导致FPGA电路可靠性评估周期长、成本高等“瓶颈”问题。因此需要研究FPGA电路系统空间单粒子翻转效应的模拟评估试验方法与装置,提供快速有效分析其空间可靠性的手段。
故障注入是模拟单粒子效应的一种手段,在不破坏器件的前提下,可快速模拟不同辐射试验环境对FPGA电路系统可靠性的影响,替代地面单粒子辐照试验。基于故障注入的单粒子效应模拟评估方法适用于设计阶段的可靠性分析,可用于在设计现场评估电路加固效应的有效性,预估系统的在轨功能中断率。该评估方法对系统硬件没有损伤,且能够降低辐照试验成本,提高系统设计效率。
现有的故障注入技术方案大致如下:由PC机完成注入模式选择、故障类型选择,并生成与之对应的故障码流文件,通过通讯接口向主控FPGA下载配置文件、注入命令以及采集主控FPGA返回的命令和数据,即PC机控制整个故障注入过程,是整个故障注入系统的控制核心。
目前,已有故障注入算法模块存在三个主要缺点:一是故障注入算法模块不具备通用性,不能兼容不同系列的FPGA芯片,二是故障注入算法模块的注入模式和故障类型单一,不能满足不同辐射环境和评估需求下的快速评估,三是故障注入算法模块针对特定DUT设计,不能兼容复杂多变的DUT接口协议。
发明内容
本发明的目的在于,克服现有FPGA电路故障注入方法不具备通用性、注入模式和故障类型单一和不能兼容复杂多变的DUT接口协议的缺点,从而提出一种FPGA电路故障注入方法及其IP核;本发明通过改进的故障注入算法,并选用合适的硬件结构,只需进行参数化配置,可实现兼容不同系列的FPGA芯片、支持多种注入模式和故障类型、兼容复杂多变的DUT接口协议,是面向航天载荷工程应用的FPGA电路故障注入IP核。
为解决上述技术问题,本发明技术方案所提供的FPGA电路故障注入方法,包括以下步骤:
步骤1)通过JTAG接口控制模块判断故障集存储模块储存的故障注入模式,如果所述故障注入模式是逐位注入模式,则执行步骤2),如果所述故障注入模式是累积注入模式,则执行步骤3);其中,所述逐位注入模式表示需修复的故障,所述累积注入模式表示无需修复的故障;
步骤2)通过所述JTAG接口控制模块,采用FPGA重配置方式对待测FPGA的故障进行修复,以保障故障注入效果的真实性,之后执行步骤3);
步骤3)通过所述JTAG接口控制模块,采用单帧重构方式向待测FPGA注入故障,之后进入步骤4);
步骤4)通过所述JTAG接口控制模块判断当前故障点信息中的故障分组是否为非同组故障,如果当前所述故障点信息中的故障分组为非同组故障,则执行步骤5),否则,执行步骤3),其中,所述非同组故障为当前故障点与下一故障点不为同组故障;
步骤5)通过所述JTAG接口控制模块,控制DUT接口控制模块从负载集存储模块中读取M个数据,作为DUT输入激励;依次为DUT加载DUT输入激励,并开启计数,当计数值到达N时,DUT接口控制模块自动存储并上传X个所述DUT的监测输出数据至读回集存储模块,进行储存;其中,M为所述寄存器模块的DUT运行周期寄存器中的值,N为所述寄存器模块的DUT监测开始寄存器中的值,X为所述寄存器模块的DUT监测周期寄存器中的值;
步骤6)通过所述JTAG接口控制模块判断当前所述故障点信息中的故障点是否为已知故障集合中的最后一个故障点,如果是,则执行步骤7),否则,执行步骤1);
步骤7)故障注入结束。
作为上述方法的一种改进,所述步骤2)具体包括:
步骤2-1)通过JTAG接口控制模块控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤2-2)通过所述JTAG接口控制模块依次加载JPROG_B和CFG_IN指令,使所述TAP控制器进入Shift-DR状态;
步骤2-3)通过所述JTAG接口控制模块控制FLASH接口控制模块,使FLASH接口控制模块从外部FLASH器件中读取出配置码流数据,并在Shift-DR状态下将所述配置码流数据写入FPGA,进行FPGA重配置;
步骤2-4)通过所述JTAG接口控制模块加载JSTART指令,启动FPGA功能运行;
步骤2-5)通过所述JTAG接口控制模块控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
作为上述方法的一种改进,所述步骤3)具体包括:
步骤3-1)通过所述JTAG接口控制模块从所述故障集存储模块中读取一个故障点信息;其中,所述故障点信息包括:故障帧地址、故障字、故障位、故障分组和Flash读地址;
步骤3-2)通过所述JTAG接口控制模块控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤3-3)通过所述JTAG接口控制模块加载CFG_IN指令,使所述TAP控制器进入Shift-DR状态;
步骤3-4)通过所述JTAG接口控制模块从单帧重构指令存储模块中读取出单帧重构数据包中的包头命令;并利用所述故障点信息中的故障帧地址替换所述包头命令中的帧地址;所述JTAG接口控制模块在Shift-DR状态下将替换后的所述包头命令写入FPGA;
步骤3-5)通过所述JTAG接口控制模块控制FLASH接口控制模块,以所述故障点信息中的Flash读地址为起始地址,从外部FLASH器件中读取出故障帧数据,其中,所述故障帧数据包括G个字节,每个字节的故障帧数据用FLASH[i]表示;i表示第i个字节,取值范围为0到G-1;
如果第i个字节的故障帧数据FLASH[i]为所述故障点信息中的故障字,则利用JTAG接口控制模块将所述第i个字节的故障帧数据FLASH[i]与故障点信息中的故障位进行异或操作后,写入FPGA;
否则,将所述第i个字节的故障帧数据FLASH[i]直接写入FPGA;
步骤3-6)通过所述JTAG接口控制模块从所述单帧重构指令存储模块中读取出所述单帧重构数据包中的包尾命令,并通过JTAG接口控制模块在Shift-DR状态下将其写入FPGA,进行FPGA单帧故障注入;
步骤3-7)通过所述JTAG接口控制模块控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
为实现本发明的再一目的,本发明提供一种用于FPGA电路故障注入的IP核,执行上述方法,所述IP核包括:串行数据收发模块、数据协议解析模块、寄存器模块、单帧重构指令存储模块、故障集存储模块、负载集存储模块、读回集存储模块、FLASH接口控制模块、JTAG接口控制模块和DUT接口控制模块;其中,
所述寄存器模块,用于存储寄存器信息;
所述单帧重构指令存储模块,用于存储单帧重构数据包;
所述故障集存储模块,用于存储故障点信息;其中,所述故障点信息包括:故障帧地址、故障字、故障位、故障分组和Flash读地址;
所述负载集存储模块,用于存储DUT输入激励;
所述读回集存储模块,用于存储DUT监测输出数据;
所述FLASH接口控制模块,基于所述JTAG接口控制模块的控制,用于对FLASH存储器进行写入和读取操作;
所述JTAG接口控制模块,用于判断所述故障集存储模块储存的故障注入模式;用于采用FPGA重配置方式对待测FPGA的故障进行修复;用于采用单帧重构方式向待测FPGA注入故障;用于判断当前故障点信息中的故障分组是否为非同组故障;用于判断当前所述故障点信息中的故障点是否为已知故障集合中的最后一个故障点;
所述DUT接口控制模块,基于所述JTAG接口控制模块的控制,用于从负载集存储模块中读取数据,作为DUT输入激励;依次为DUT加载DUT输入激励,用于自动存储并上传DUT监测输出数据至读回集存储模块,进行储存。
作为上述系统的一种改进,所述寄存器模块包括:所述JTAG接口控制模块和DUT接口控制模块共用的配置码流长度寄存器、配置阵列长度寄存器、配置帧长度寄存器、回读命令包头长度寄存器、回读命令包尾长度寄存器、回读数据延迟周期寄存器、回读起始位置寄存器、单帧重构命令包头长度寄存器、单帧重构命令包尾长度寄存器、注入模式寄存器、故障点信息长度寄存器、JTAG扫描指令位数寄存器、CFG_IN指令寄存器、CFG_OUT指令寄存器、JPROG_B指令寄存器、JSTART指令寄存器、DUT运行周期寄存器、DUT监测开始寄存器和DUT监测周期寄存器。
作为上述系统的一种改进,所述DUT接口控制模块,基于所述JTAG接口控制模块的控制,用于从负载集存储模块中读取M个数据,作为DUT输入激励;依次为DUT加载DUT输入激励,并开启计数;当所述计数的值到达N时,所述DUT接口控制模块,用于自动存储并上传X个所述DUT监测输出数据至读回集存储模块,进行储存;其中,M为所述寄存器模块的DUT运行周期寄存器中的值,N为所述寄存器模块的DUT监测开始寄存器中的值,X为所述寄存器模块的DUT监测周期寄存器中的值;所述DUT接口控制模块,还用于为所述DUT提供时钟输入和复位信号。
作为上述系统的一种改进,所述故障点信息中的故障帧地址为所述待测FPGA的FAR帧地址寄存器储存的地址;
所述故障点信息的故障位表示在所述故障字中,注入故障或不注入进行故障的比特位,其中,故障位为1代表进行注入故障,0代表不进行注入故障,;
所述故障点信息的故障分组中,利用00表示非同组故障,利用FF表示同组故障;
所述故障点信息的Flash读地址为故障帧数据在外部FLASH器件中的起始地址。
作为上述系统的一种改进,所述单帧重构指令存储模块采用512*8位的简单双口RAM;
所述负载集存储模块采用64K*8位的简单双口RAM;
所述读回集存储模块采用1K*8位的标准FIFO;
所述FLASH接口控制模块采用64M*16位的通用并行接口FLASH;
所述寄存器模块采用不同长度的寄存器组。
作为上述系统的一种改进,所述JTAG接口控制模块,用于采用FPGA重配置方式对逐位注入模式的待测FPGA的故障进行修复,具体包括:
所述JTAG接口控制模块,用于控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;用于依次加载JPROG_B和CFG_IN指令,使所述TAP控制器进入Shift-DR状态;用于控制FLASH接口控制模块,使FLASH接口控制模块从外部FLASH器件中读取出配置码流数据,并在Shift-DR状态下将所述配置码流数据写入FPGA,进行FPGA重配置;用于加载JSTART指令,启动FPGA功能运行;用于控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
作为上述系统的一种改进,所述JTAG接口控制模块,用于采用单帧重构方式向待测FPGA注入故障,具体包括:
所述JTAG接口控制模块,用于从所述故障集存储模块中读取一个故障点信息;用于控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;用于加载CFG_IN指令,使所述TAP控制器进入Shift-DR状态;用于从单帧重构指令存储模块中读取出单帧重构数据包中的包头命令;利用所述故障点信息中的故障帧地址替换所述包头命令中的帧地址;用于在Shift-DR状态下将替换后的所述包头命令写入FPGA;用于控制FLASH接口控制模块,以所述故障点信息中的Flash读地址为起始地址,从外部FLASH器件中读取出故障帧数据,其中,所述故障帧数据包括G个字节,每个字节的故障帧数据用FLASH[i]表示;i表示第i个字节,取值范围为0到G-1;
如果第i个字节的故障帧数据FLASH[i]为所述故障点信息中的故障字,所述JTAG接口控制模块,用于将所述第i个字节的故障帧数据FLASH[i]与故障点信息中的故障位进行异或操作后,写入FPGA;否则,所述JTAG接口控制模块,用于将所述第i个字节的故障帧数据FLASH[i]直接写入FPGA;
所述JTAG接口控制模块,还用于从所述单帧重构指令存储模块中读取出所述单帧重构数据包中的包尾命令,并在Shift-DR状态下将其写入FPGA,进行FPGA单帧故障注入;用于控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
本发明的一种FPGA电路故障注入方法及其IP核,包括以下优点:
1、本发明将用于对待测FPGA进行故障注入用的单帧重构指令进行单独存储,并通过传输不同的重构指令,可实现对不用系列FPGA芯片故障注入的兼容。兼容型强,可实现对Xilinx公司V2、V4、V5、V6、V7、K7和A7系列的SRAM型FPGA芯片的故障注入;
2、本发明FPGA重配置方式对待测FPGA的故障进行修复,可支持两种注入模式,包括:逐位注入模式和累积注入模式;
3、本发明采用单帧重构方式向待测FPGA注入故障,可支持多种故障类型;例如,单比特和多比特(同一帧、物理相邻帧、任意物理不相邻帧)故障类型;
4、本发明中的DUT接口控制模块时序由IP以计数的方式呈现,与DUT接口是否连接无关,因此,DUT接口灵活,在实际使用时该IP核的DUT接口可悬空,亦可将其与待监测的FPGA电路输入/输出进行连接,使用方便,灵活监测;
5、只要IP核的对外接口具有串口和CFI接口FLASH,就可由Verilog实现移植,因此,本发明提供的IP核具备可移植性强的特点,可移植到任意有串口和CFI接口FLASH的FPGA开发板中。
附图说明
图1为本发明的FPGA电路故障注入IP核的结构图;
图2为本发明的FPGA电路故障注入IP核中数据协议解析模块的状态转移图;
图3为本发明的FPGA电路故障注入IP核中JTAG接口控制模块状态转移图;
图4为本发明的FPGA电路故障注入IP核中DUT接口控制模块时序图;
图5为本发明的FPGA电路故障注入IP核移植到至开发板中的示意图。
具体实施方式
以下结合实施例进一步说明本发明所提供的技术方案。
本发明公开一种FPGA电路故障注入方法及其IP核,涉及SRAM型FPGA电路单粒子效应评估技术领域;所要解决的是FPGA电路故障注入方法和IP核不能兼容不同系列的FPGA器件、不支持多种故障注入模式和故障类型以及不能应对复杂多变的DUT接口协议等技术问题;运行所述FPGA电路故障注入方法的IP核,包括串行数据收发模块、数据协议解析模块、寄存器模块、故障集存储模块、单帧重构指令存储模块、负载集存储模块、读回集存储模块、FLASH接口控制模块、JTAG接口控制模块和DUT接口控制模块;
其中,所述串行数据收发模块与所述数据协议解析模块和读回集存储模块连接;所述数据协议解析模块与所述寄存器模块、单帧重构指令存储模块、故障集存储模块、负载集存储模块、FLASH接口控制模块和JTAG接口控制模块连接;所述JTAG接口控制模块还与所述FLASH接口控制模块、寄存器模块、单帧重构指令存储模块、故障集存储模块和DUT接口控制模块连接;所述DUT接口控制模块还与所述寄存器模块、负载集存储模块和读回集存储模块连接;;本发明IP核具有参数化配置功能,可实现对Xilinx公司不同系列FPGA芯片的故障注入;通过改进的故障注入算法,并选用合适的硬件结构,可实现对FPGA电路不同故障注入模式和故障类型的注入与功能监测;通过Verilog HDL语言设计的IP核可实现不同FPGA的移植。
以下结合附图说明对本发明的实施例作进一步详细描述,但本实施例并不用于限制本发明,凡是采用本发明的相似结构、方法及其相似变化,均应列入本发明的保护范围。
本实施例提供了一种面向航天载荷工程应用的FPGA电路故障注入IP核,可兼容不同系列的FPGA器件、支持多种注入模式和故障类型、兼容复杂多变的DUT接口协议,实现对FPGA电路的故障注入与监测。
如图1所示,该IP核包括:串行数据收发模块、数据协议解析模块、寄存器模块、单帧重构指令存储模块、故障集存储模块、负载集存储模块、读回集存储模块、FLASH接口控制模块、JTAG接口控制模块和DUT接口控制模块;其中,串行数据收发模块分别连接数据协议解析模块和读回集存储模块;数据协议解析模块分别连接寄存器模块、单帧重构指令存储模块、故障集存储模块、负载集存储模块、FLASH接口控制模块和JTAG接口控制模块;JTAG接口控制模块分别连接FLASH接口控制模块、寄存器模块、单帧重构指令存储模块、故障集存储模块和DUT接口控制模块;DUT接口控制模块分别连接寄存器模块、负载集存储模块和读回集存储模块;
下面对本发明中的各个功能模块做进一步的说明。
串行数据收发模块用于将本发明的FPGA电路故障注入IP核连接到外部串口收发器上,使得本发明的FPGA电路故障注入IP核具备通过通用串行数据总线和PC机通信的功能。串行数据收发模块用来与PC进行通信,可实现全双工数据传输和接收,包括数据、命令和控制信息等。在本实施例中,串行数据收发模块的波特率为115200bps/s,数据字符格式为:1个起始位、8个数据位和1个停止位,在8个数据位中,低位在前高位在后排列。
数据协议解析模块用于解析串行数据收发模块接收到的通信协议数据包,如表一所示:
Figure BDA0003545256610000081
Figure BDA0003545256610000091
该串行通信协议数据包格式由包头、指令类型、数据长度、数据内容、校验码、包尾六项组成。其中包头为16位数据EB90;指令类型为8位数据,可以执行255种功能操作,而在实施列中,仅定义了9种指令类型,分别为FLASH擦除、FLASH编程、FPGA参数设置、FPGA配置、FPGA回读、DUT参数设置、DUT运行、故障生成、故障注入;数据长度为24位数据,因此该数据包中数据长度不大于16M字节;数据内容为具体的数据信息;校验码为数据内容字段的校验和(按照单字节累加,结果为双字节);包尾为16位数据09D7。图2为数据协议解析模块接收通信协议数据包的状态转移图。
寄存器模块用于存储本发明IP核的可配置寄存器信息,该模块共包含19个可配置寄存器,分别用于FPGA配置、FPGA回读以及FPGA故障注入等操作中,如表二所示:
Figure BDA0003545256610000092
Figure BDA0003545256610000101
例如,配置码流长度寄存器的功能用于指示在进行FPGA重配置时,从CFI FLASH中读取出“配置码流长度”个数据;回读起始位置寄存器的功能用于指示在进行FPGA回读时,从CFI FLASH的第“回读起始位置”个数据开始读取出数据;注入模式寄存器的功能为在进行FPGA故障注入时控制FPGA的故障注入流程。
单帧重构指令存储模块采用512*8位的简单双口RAM实现,其主要用于存储单帧重构包头和单帧重构包尾指令。表三为XC2V1000型FPGA的单帧重构指令在单帧重构指令存储模块中的存储分布示意图:
Figure BDA0003545256610000102
Figure BDA0003545256610000111
故障集存储模块采用64K*8位的简单双口RAM实现,其主要用于存储由PC机产生的故障点信息。单个故障点信息由故障帧地址(4Bytes)、故障字(2Bytes)、故障位(1Bytes)、故障分组(1Bytes)和Flash读地址(3Bytes)组成。单个故障点由11个Bytes组成,故单次故障注入需从故障集存储模块中读取出11Bytes数据。故障点信息中的故障帧为寄存器模块待测FPGA的FAR帧地址寄存器储存的地址,用于在进行故障注入时替换图5中单帧重构指令存储模块0x40--0x43地址中的数据。故障点信息中的故障字为配置帧中需进行故障注入的字,其范围为0~(配置帧长-1),如0x1表示对配置帧中的第1个字进行故障注入。故障点信息中的故障位表示对该故障字中的哪些比特位进行故障注入,1代表注入故障,0代表不注入故障,如0h05表示对该字中的第0位和第2位进行故障注入。故障点信息中的故障分组表示当前故障点与下一故障点是否为同组故障,00表示非同组故障,FF表示同组故障,非同组故障时进行DUT运行操作,否则,继续进行下一故障点故障注入操作。故障点信息中的Flash读地址表示配置帧数据在FLASH中的起始地址。
负载集存储模块采用64K*8位的简单双口RAM实现,其主要用于存储由PC机产生的DUT输入激励。
读回集存储模块采用1K*8位的标准FIFO实现,其主要用于存储DUT监测输出数据。
FLASH接口控制模块用于将本实施例提供的FPGA电路故障注入IP核连接到外部通用并行FLASH芯片上。外部通用并行FLASH芯片用于存储待测FPGA的掩码数据(.msk)和配码数据(.bit)。在本实施例中,每个FLASH地址中的高8位存储掩码数据(.msk),低8位存储配码数据(.bit)。FLASH接口控制模块可识别三种指令:FLASH擦除、FLASH编程(将待测FPGA的掩码数据和配码数据写入FLASH)和FLASH回读(FPGA配置、FPGA回读和故障注入)。
JTAG接口控制模块用于将本实施例的FPGA电路故障注入IP核连接到外部待测FPGA的JTAG接口上。JTAG接口控制模块实现对待测FPGA芯片的重配置和故障注入操作。图3为JTAG接口控制模块的状态转移图,其状态跳转可划分为4个主要进程:FPGA配置、FPGA回读、FPGA单帧重构和DUT运行。根据PC机发送的指令,可实现对应状态跳转,完成对应功能操作。以IP核收到PC机发送的“故障注入(逐位注入)”指令为例进行详细说明:首先,注入模式判断,判断当前指令为逐位注入,则进入FPGA配置进程(依次加载JPROG_B指令、CFG_IN指令、Flash配置码流数据和JSTART指令,完成FPGA重配置);然后,从故障集存储模块中读取一个故障点信息(故障帧、故障字、故障位、故障分组和Flash读地址),进入FPGA单帧重构进行(依次加载CFG_IN指令、重构命令包头、单帧配置码流数据和重构命令包尾,完成FPGA故障注入);其次,故障分组判断,判断当前故障点是否与下一故障点为同组故障,若为同组故障,则继续进行下一故障点的注入进程,否则,进入DUT运行进程(依次执行DUT复位、DUT运行和DUT停止);最后,DUT停止后,判断当前故障点是否为最后一个故障点,如果是,则结束当前故障注入进程,否则,进行故障注入模式判断,如果是逐位注入模式,则进入FPGA配置进程(即重复上述操作步骤),如果是累积注入模式,则不进行FPGA重复进行,而是继续进行下一故障点的注入进程。
DUT接口控制模块用于将本发明的FPGA电路故障注入IP核连接到外部待测FPGA电路(DUT,Design Under Test)的接口上。DUT接口控制模块实现对待测FPGA电路输入激励的加载与输出数据的监测。图4为DUT接口控制模块的时序图。它可以分为三个阶段:1)DUT复位:为DUT提供时钟输入,并提供5个时钟周期的复位信号;2)DUT运行(监测):从负载集存储模块中读取“DUT运行周期”个数据,为DUT加载输入激励,并在“DUT监测开始”到达时,自动存储“DUT监测周期”个DUT输出数据;3)DUT运行结束:停止为DUT提供时钟输入。
本发明的FPGA电路故障注入IP核可以移植到任意有串口和CFI接口FLASH的FPGA开发板中,如图5所示,将本实施例提供的FPGA电路故障注入IP核直接移植到开发板中的主控FPGA中,代码不需要任何改变,即可通过上位机发送对应指令实现对待测FPGA的重配置和故障注入的功能。
本发明所提供的一种FPGA电路故障注入算法,包括以下步骤:
步骤1)故障注入模式判断:如果是逐位注入模式(需修复故障),则执行步骤2),如果是累积注入模式(无需修复故障),执行步骤3);
步骤2)故障修复:采用FPGA重配置的方式修复故障,因为在有些不可预测的情况下,修改单个配置帧数据也会影响其它配置帧数据,FPGA重配置可避免故障无法修改而造成的故障累积,保障故障注入效果真实性;
步骤3)故障注入:采用单帧重构的方式注入故障,将故障点信息(故障帧、故障字、故障位、故障分组和Flash读地址)中的“故障帧”嵌入单帧重构数据包(包头指令、单帧配置数据和包尾指令),实现单帧故障注入,解决基于重配置故障注入的耗时问题,提高故障注入效率;
步骤4)故障分组判断:如果当前故障点信息中“故障分组”为非同组故障(00表示非同组故障,即当前故障点与下一故障点不为同组故障),则执行步骤5),否则,执行步骤3),该故障分组判断巧妙的解决了不同帧故障类型的注入问题;
步骤5)监测DUT运行:从负载集存储模块中读取“DUT运行周期”个数据为DUT加载输入激励,在“DUT监测开始”到达时,自动存储并上传“DUT监测周期”个DUT输出数据,该基于计数的DUT运行监测方法可有效解决因DUT功能异常导致的DUT运行监测跳入死循环的问题;
步骤6)故障点判断:如果当前故障点已是故障集合中的最后一个,则执行步骤7),否则,执行步骤1);
步骤7)故障注入结束。
所述步骤2)具体包括:
步骤2-1)控制JTAG接口时序,使得TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤2-2)依次加载JPROG_B和CFG_IN指令,使得TAP控制器进入Shift-DR状态;
步骤2-3)控制FLASH接口控制模块,从中读取出配置码流数据,在Shift-DR状态下将配置码流数据写入FPGA,进行FPGA重配置;
步骤2-4)加载JSTART指令,启动FPGA功能运行;
步骤2-5)控制JTAG接口时序,使得TAP控制器进入Test-Logic-Reset状态。
所述步骤3)具体包括:
步骤3-1)读取故障点信息:从故障集存储模块中读取一个故障点信息(故障帧地址、故障字、故障位、故障分组和Flash读地址);
步骤3-2)控制JTAG接口时序,使得TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤3-3)加载CFG_IN指令,使得TAP控制器进入Shift-DR状态;
步骤3-4)从单帧重构指令存储模块中读取出单帧重构包头命令,用故障点信息中的“故障帧”替换包头命令中的帧地址,在Shift-DR状态下将其写入FPGA;
步骤3-5)控制FLASH接口控制模块,以“Flash读地址”为起始地址,从中读取出故障帧数据,在Shift-DR状态下将其写入FPGA;
令N为故障帧数据字节数,FLASH[i]为从FLASH中读出的第i个数据
对i从0到N-1,执行如下循环操作:
如果i=“故障字”,将FLASH[i]与“故障位”进行异或操作后写入FPGA;
否则,将FLASH[i]直接写入FPGA;
步骤3-6)从单帧重构指令存储模块中读取出单帧重构包尾命令,在Shift-DR状态下将其写入FPGA,进行FPGA单帧故障注入;
步骤3-7)控制JTAG接口时序,使得TAP控制器进入Test-Logic-Reset状态。
从上述对本发明的具体描述可以看出,本发明提供的FPGA电路故障注入方法及其IP核,兼容型强,可实现对Xilinx公司V2、V4、V5、V6、V7、K7和A7系列的SRAM型FPGA芯片的故障注入;支持两种注入模式:逐位注入模式和累积注入模式;支持多种故障类型:单比特、多比特(同一帧、物理相邻帧、任意物理不相邻帧);DUT接口灵活,在实际使用时该IP核的DUT接口可悬空,亦可将其与待监测的FPGA电路输入/输出进行连接,使用方便,灵活监测;可移植性强,可移植到任意有串口和CFI接口FLASH的FPGA开发板中。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种FPGA电路故障注入方法,其特征在于,所述方法包括以下步骤:
步骤1)通过JTAG接口控制模块判断故障集存储模块储存的故障注入模式,如果所述故障注入模式是逐位注入模式,则执行步骤2),如果所述故障注入模式是累积注入模式,则执行步骤3);其中,所述逐位注入模式表示需修复的故障,所述累积注入模式表示无需修复的故障;
步骤2)通过所述JTAG接口控制模块,采用FPGA重配置方式对待测FPGA的故障进行修复,以保障故障注入效果的真实性,之后执行步骤3);
步骤3)通过所述JTAG接口控制模块,采用单帧重构方式向待测FPGA注入故障,之后进入步骤4);
步骤4)通过所述JTAG接口控制模块判断当前故障点信息中的故障分组是否为非同组故障,如果当前所述故障点信息中的故障分组为非同组故障,则执行步骤5),否则,执行步骤3),其中,所述非同组故障为当前故障点与下一故障点不为同组故障;
步骤5)通过所述JTAG接口控制模块,控制DUT接口控制模块从负载集存储模块中读取M个数据,作为DUT输入激励;依次为DUT加载DUT输入激励,并开启计数,当计数值到达N时,DUT接口控制模块自动存储并上传X个所述DUT的监测输出数据至读回集存储模块,进行储存;其中,M为所述寄存器模块的DUT运行周期寄存器中的值,N为所述寄存器模块的DUT监测开始寄存器中的值,X为所述寄存器模块的DUT监测周期寄存器中的值;
步骤6)通过所述JTAG接口控制模块判断当前所述故障点信息中的故障点是否为已知故障集合中的最后一个故障点,如果是,则执行步骤7),否则,执行步骤1);
步骤7)故障注入结束。
2.根据权利要求1所述的FPGA电路故障注入方法,其特征在于,所述步骤2)具体包括:
步骤2-1)通过JTAG接口控制模块控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤2-2)通过所述JTAG接口控制模块依次加载JPROG_B和CFG_IN指令,使所述TAP控制器进入Shift-DR状态;
步骤2-3)通过所述JTAG接口控制模块控制FLASH接口控制模块,使FLASH接口控制模块从外部FLASH器件中读取出配置码流数据,并在Shift-DR状态下将所述配置码流数据写入FPGA,进行FPGA重配置;
步骤2-4)通过所述JTAG接口控制模块加载JSTART指令,启动FPGA功能运行;
步骤2-5)通过所述JTAG接口控制模块控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
3.根据权利要求1所述的FPGA电路故障注入方法,其特征在于,所述步骤3)具体包括:
步骤3-1)通过所述JTAG接口控制模块从所述故障集存储模块中读取一个故障点信息;其中,所述故障点信息包括:故障帧地址、故障字、故障位、故障分组和Flash读地址;
步骤3-2)通过所述JTAG接口控制模块控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;
步骤3-3)通过所述JTAG接口控制模块加载CFG_IN指令,使所述TAP控制器进入Shift-DR状态;
步骤3-4)通过所述JTAG接口控制模块从单帧重构指令存储模块中读取出单帧重构数据包中的包头命令;并利用所述故障点信息中的故障帧地址替换所述包头命令中的帧地址;所述JTAG接口控制模块在Shift-DR状态下将替换后的所述包头命令写入FPGA;
步骤3-5)通过所述JTAG接口控制模块控制FLASH接口控制模块,以所述故障点信息中的Flash读地址为起始地址,从外部FLASH器件中读取出故障帧数据,其中,所述故障帧数据包括G个字节,每个字节的故障帧数据用FLASH[i]表示;i表示第i个字节,取值范围为0到G-1;
如果第i个字节的故障帧数据FLASH[i]为所述故障点信息中的故障字,则利用JTAG接口控制模块将所述第i个字节的故障帧数据FLASH[i]与故障点信息中的故障位进行异或操作后,写入FPGA;
否则,将所述第i个字节的故障帧数据FLASH[i]直接写入FPGA;
步骤3-6)通过所述JTAG接口控制模块从所述单帧重构指令存储模块中读取出所述单帧重构数据包中的包尾命令,并通过JTAG接口控制模块在Shift-DR状态下将其写入FPGA,进行FPGA单帧故障注入;
步骤3-7)通过所述JTAG接口控制模块控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
4.一种用于FPGA电路故障注入的IP核,执行权利要求1-3任一所述方法,所述IP核包括:串行数据收发模块和数据协议解析模块,其特征在于,所述IP核还包括:寄存器模块、单帧重构指令存储模块、故障集存储模块、负载集存储模块、读回集存储模块、FLASH接口控制模块、JTAG接口控制模块和DUT接口控制模块;其中,
所述寄存器模块,用于存储寄存器信息;
所述单帧重构指令存储模块,用于存储单帧重构数据包;
所述故障集存储模块,用于存储故障点信息;其中,所述故障点信息包括:故障帧地址、故障字、故障位、故障分组和Flash读地址;
所述负载集存储模块,用于存储DUT输入激励;
所述读回集存储模块,用于存储DUT监测输出数据;
所述FLASH接口控制模块,基于所述JTAG接口控制模块的控制,用于对FLASH存储器进行写入和读取操作;
所述JTAG接口控制模块,用于判断所述故障集存储模块储存的故障注入模式;用于采用FPGA重配置方式对待测FPGA的故障进行修复;用于采用单帧重构方式向待测FPGA注入故障;用于判断当前故障点信息中的故障分组是否为非同组故障;用于判断当前所述故障点信息中的故障点是否为已知故障集合中的最后一个故障点;
所述DUT接口控制模块,基于所述JTAG接口控制模块的控制,用于从负载集存储模块中读取数据,作为DUT输入激励;依次为DUT加载DUT输入激励,用于自动存储并上传DUT监测输出数据至读回集存储模块,进行储存。
5.根据权利要求4所述的用于FPGA电路故障注入的IP核,其特征在于,所述寄存器模块包括:所述JTAG接口控制模块和DUT接口控制模块共用的配置码流长度寄存器、配置阵列长度寄存器、配置帧长度寄存器、回读命令包头长度寄存器、回读命令包尾长度寄存器、回读数据延迟周期寄存器、回读起始位置寄存器、单帧重构命令包头长度寄存器、单帧重构命令包尾长度寄存器、注入模式寄存器、故障点信息长度寄存器、JTAG扫描指令位数寄存器、CFG_IN指令寄存器、CFG_OUT指令寄存器、JPROG_B指令寄存器、JSTART指令寄存器、DUT运行周期寄存器、DUT监测开始寄存器和DUT监测周期寄存器。
6.根据权利要求4或5所述的用于FPGA电路故障注入的IP核,其特征在于,所述DUT接口控制模块,基于所述JTAG接口控制模块的控制,用于从负载集存储模块中读取M个数据,作为DUT输入激励;依次为DUT加载DUT输入激励,并开启计数;当所述计数的值到达N时,所述DUT接口控制模块,用于自动存储并上传X个所述DUT监测输出数据至读回集存储模块,进行储存;其中,M为所述寄存器模块的DUT运行周期寄存器中的值,N为所述寄存器模块的DUT监测开始寄存器中的值,X为所述寄存器模块的DUT监测周期寄存器中的值;所述DUT接口控制模块,还用于为所述DUT提供时钟输入和复位信号。
7.根据权利要求4所述的用于FPGA电路故障注入的IP核,其特征在于,所述故障点信息中的故障帧地址为所述待测FPGA的FAR帧地址寄存器储存的地址;
所述故障点信息的故障位表示在所述故障字中,注入故障或不注入进行故障的比特位,其中,故障位为1代表进行注入故障,0代表不进行注入故障,;
所述故障点信息的故障分组中,利用00表示非同组故障,利用FF表示同组故障;
所述故障点信息的Flash读地址为故障帧数据在外部FLASH器件中的起始地址。
8.根据权利要求4所述的用于FPGA电路故障注入的IP核,其特征在于,所述单帧重构指令存储模块采用512*8位的简单双口RAM;
所述负载集存储模块采用64K*8位的简单双口RAM;
所述读回集存储模块采用1K*8位的标准FIFO;
所述FLASH接口控制模块采用64M*16位的通用并行接口FLASH;
所述寄存器模块采用不同长度的寄存器组。
9.根据权利要求4所述的用于FPGA电路故障注入的IP核,其特征在于,所述JTAG接口控制模块,用于采用FPGA重配置方式对逐位注入模式的待测FPGA的故障进行修复,具体包括:
所述JTAG接口控制模块,用于控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;用于依次加载JPROG_B和CFG_IN指令,使所述TAP控制器进入Shift-DR状态;用于控制FLASH接口控制模块,使FLASH接口控制模块从外部FLASH器件中读取出配置码流数据,并在Shift-DR状态下将所述配置码流数据写入FPGA,进行FPGA重配置;用于加载JSTART指令,启动FPGA功能运行;用于控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
10.根据权利要求4所述的用于FPGA电路故障注入的IP核,其特征在于,所述JTAG接口控制模块,用于采用单帧重构方式向待测FPGA注入故障,具体包括:
所述JTAG接口控制模块,用于从所述故障集存储模块中读取一个故障点信息;用于控制JTAG接口时序,使TAP控制器从Test-Logic-Reset状态进入Shift-IR状态;用于加载CFG_IN指令,使所述TAP控制器进入Shift-DR状态;用于从单帧重构指令存储模块中读取出单帧重构数据包中的包头命令;利用所述故障点信息中的故障帧地址替换所述包头命令中的帧地址;用于在Shift-DR状态下将替换后的所述包头命令写入FPGA;用于控制FLASH接口控制模块,以所述故障点信息中的Flash读地址为起始地址,从外部FLASH器件中读取出故障帧数据,其中,所述故障帧数据包括G个字节,每个字节的故障帧数据用FLASH[i]表示;i表示第i个字节,取值范围为0到G-1;
如果第i个字节的故障帧数据FLASH[i]为所述故障点信息中的故障字,所述JTAG接口控制模块,用于将所述第i个字节的故障帧数据FLASH[i]与故障点信息中的故障位进行异或操作后,写入FPGA;否则,所述JTAG接口控制模块,用于将所述第i个字节的故障帧数据FLASH[i]直接写入FPGA;
所述JTAG接口控制模块,还用于从所述单帧重构指令存储模块中读取出所述单帧重构数据包中的包尾命令,并在Shift-DR状态下将其写入FPGA,进行FPGA单帧故障注入;用于控制所述JTAG接口时序,使所述TAP控制器进入Test-Logic-Reset状态。
CN202210247238.9A 2022-03-14 2022-03-14 一种fpga电路故障注入方法及其ip核 Pending CN114675624A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210247238.9A CN114675624A (zh) 2022-03-14 2022-03-14 一种fpga电路故障注入方法及其ip核

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210247238.9A CN114675624A (zh) 2022-03-14 2022-03-14 一种fpga电路故障注入方法及其ip核

Publications (1)

Publication Number Publication Date
CN114675624A true CN114675624A (zh) 2022-06-28

Family

ID=82073320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210247238.9A Pending CN114675624A (zh) 2022-03-14 2022-03-14 一种fpga电路故障注入方法及其ip核

Country Status (1)

Country Link
CN (1) CN114675624A (zh)

Similar Documents

Publication Publication Date Title
JP7058759B2 (ja) 1または複数の被テストデバイスをテストするための自動試験装置、1または複数の被テストデバイスの自動試験のための方法、および、コマンドエラーを処理するためのコンピュータプログラム
CN109858195B (zh) 一种sram型fpga上必要位单粒子翻转故障的在线仿真系统
CN102541707B (zh) 复用jtag接口的fpga片内逻辑分析仪系统和方法
US7080283B1 (en) Simultaneous real-time trace and debug for multiple processing core systems on a chip
US7610528B2 (en) Configuring flash memory
US20030229864A1 (en) Pre-silicon verification path coverage
US7900106B2 (en) Accessing sequential data in a microcontroller
US6961872B2 (en) Microcomputer and debugging system
US7756695B2 (en) Accelerated simulation and verification of a system under test (SUT) using cache and replacement management tables
CN1339128A (zh) 芯片内调试系统
CN101865977A (zh) 基于查找表结构的fpga可编程逻辑单元的遍历测试方法
CN109444716B (zh) 一种具有定位功能的扫描测试结构及方法
US8898051B2 (en) System and method for implementing a trace interface
GB2422030A (en) Automated hardware test script generation
CN107451025B (zh) 控制存储芯片的测试方法及系统
US20080098269A1 (en) Mechanism for concurrent testing of multiple embedded arrays
CN113270137B (zh) 一种基于fpga嵌入式软核的ddr2测试方法
CN112698994A (zh) 一种用于fpga内部资源测试的部分位流回读技术
CN104461796B (zh) 用于嵌入式8051cpu的jtag调试模块及调试方法
CN102855338B (zh) 现场可编程门阵列原型验证装置及验证方法
CN114675624A (zh) 一种fpga电路故障注入方法及其ip核
US11176018B1 (en) Inline hardware compression subsystem for emulation trace data
CN1932774A (zh) 一种基于多串口资源的嵌入式系统软件快速测试系统和方法
CN109753394B (zh) 一种实时调试固件配置信息的电路及方法
Daoud et al. Embedded debug architecture for bypassing blocking bugs during post-silicon validation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination