CN110413468A - 基于代码突变的fpga在线故障注入方法 - Google Patents

基于代码突变的fpga在线故障注入方法 Download PDF

Info

Publication number
CN110413468A
CN110413468A CN201910722052.2A CN201910722052A CN110413468A CN 110413468 A CN110413468 A CN 110413468A CN 201910722052 A CN201910722052 A CN 201910722052A CN 110413468 A CN110413468 A CN 110413468A
Authority
CN
China
Prior art keywords
code
fault location
signal
direct fault
file
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
CN201910722052.2A
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.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
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 Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201910722052.2A priority Critical patent/CN110413468A/zh
Publication of CN110413468A publication Critical patent/CN110413468A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

基于代码突变的FPG在线故障注入方法,涉及计算机应用技术领域,为解决现有技术中用户不能够自由选择自己关注的故障进行注入,以衡量目标系统的可靠性的问题,包括以下步骤:步骤一:首先扫描代码,对VHDL系统进行数学建模;步骤二:根据用户选择的故障注入位置,注入文件配置,对信号进行修改,生成注入单元;步骤三:根据用户的选择生成故障注入参数;步骤四:对步骤三中生成的故障注入参数进行解析,并写入参数寄存器中;步骤五:通过宿主机的控制,在FPGA目标系统运行时完成故障注入单元的激活。本发明通过故障注入推荐功能,有效的缩小了故障注入位置的集合,可以有效的提高故障注入的效率。

Description

基于代码突变的FPGA在线故障注入方法
技术领域
本发明涉及计算机应用技术领域,具体为一种基于代码突变的FPGA在线故障注入方法。
背景技术
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是建立于PAL、GAL、CPLD等可编程逻辑器件的发展,产生的一种在专用集成电路的领域中的一种半定制电路。
随着计算机系统和工业制造,服务的关系日益密切,对于FPGA系统的真实可靠度衡量和测评越来越重要,而系统可信性的测评方法,主要有:解析模型法,测量法,基准程序法,而在这些方法中,可信性基准程序法因为灵活方便,廉价有效的特点而受到欢迎,采用合适的故障注入技术,正是可信性基准程序法的关键。
故障注入按照选定的故障模式,采用注入策略将故障引入目标系统当中,通过观察和分析系统在被注入故障情况下的行为,提供所需的评价结果。在故障注入技术中,基于模拟实现的故障注入,利用对FPGA进行抽象建模的形式化语言,采用程序或脚本,在系统仿真工程中控制故障注入的全过程,避免额外的硬件花费,具有更大的灵活性。因此近年来受到越来越多的研究人员的青睐。
近些年,为了更好地模拟故障发生的真实情况,故障注入工具开始支持更丰富的故障模式和缩小故障注入引起对于目标系统的改变。而且为了能更加有效的观察系统在故障注入期间的行为,使模拟故障注入工具可以在系统运行时在线注入。实验中选择的故障模型如果能够近似或尽可能覆盖目标系统在实际运行的过程中所可能产生的故障,将大大提高故障注入试验的结果精确度。早期的故障注入实验一般采用简单的随机抽样,但是其结果可能与真实情况偏差过大,无法得出很好的故障注入结果。也有多级抽样,分层抽样等抽样技术被引入故障注入的模式选择中。然而在一般情况下,目标系统的故障集十分庞大,采用抽样故障注入的方式将消耗大量的空间资源和时间资源。
发明内容
本发明的目的是:针对现有技术中用户不能够自由选择自己关注的故障进行注入,以衡量目标系统的可靠性的问题,提出一种基于代码突变的FPGA在线故障注入方法。
本发明为了解决上述技术问题采取的技术方案是:基于代码突变的FPGA在线故障注入方法,包括以下步骤:
步骤一:首先扫描代码,对VHDL系统进行数学建模;
步骤二:根据用户选择的故障注入位置,注入文件配置,对信号进行修改,生成注入单元;
步骤三:根据用户的选择生成故障注入参数;
步骤四:对步骤三中生成的故障注入参数进行解析,并写入参数寄存器中;
步骤五:通过宿主机的控制,在FPGA目标系统运行时完成故障注入单元的激活。
进一步的,所述步骤二中故障注入位置通过目标系统的语法树实现。
进一步的,所述步骤一的详细步骤为:
步骤一一:对VHDL代码文件进行代码规范;
步骤一二:读取VHDL代码中的关键字列表,使用基础关键字进行代码分段;
步骤一三:判定是否扫描完所有关键字,若是,结束,如否,则执行步骤一四;
步骤一四:读取关键字在相关段进行代码匹配,然后将信息和匹配的位置写入数据结构,执行步骤一三。
进一步的,所述步骤一四的具体步骤为:首先从上至下根据相关关键字将代码分为输入输出定义段,器件定义段和行为描述段,然后在输入输出定义段和行为描述段前进行代码匹配,得到所有的信号名称,之后在行为描述段进行匹配时,先匹配相关信号名称,然后根据此行匹配到的是赋值符号还是映射,确定本信号的赋值类型,最后将信息和匹配的位置写入数据结构。
进一步的,在所述步骤二前还包括故障注入位置推荐,所述故障注入位置推荐基于故障传播网络结构实现。
进一步的,所述故障传播网络结构包括单一文件内的信号连接和多文件之间的信号连接。
进一步的,所述单一文件内的信号连接的具体步骤如下:首先定位当前文件的注入信号位置,然后通过查找数据结构,在数据结构存储信号位置的数据上遍历注入单元,之后返回源代码文件,在相关的故障注入位置上,匹配赋值信号的名称,在赋值信号和被赋值信号之间建立联系。
进一步的,所述多文件之间的信号连接的具体步骤如下:对于多文件控制依赖,首先遍历代码文件,根据在代码文件中匹配的关键字区分进程位置,之后遍历信号列表,在每个进程之内匹配可注入信号的名称,并与驱动信号相关联,对于多文件数据依赖,首先查找数据结构,然后查找器件表,使用文件之间的实体-器件依赖图,在器件表的端口映射声明中匹配本文件的注入信号名称和器件文件的注入信号名称。
进一步的,所述进程位置包括开始位置和结束位置。
本发明的有益效果是:本发明通过修改目标系统代码,实现在线的目标系统故障注入,并且通过对目标系统的数据流图进行分析,形成故障注入位置推荐,辅助用户进行故障注入实验。并且实现了FPGA系统的在线故障注入,设计了用户友好的人机交互界面,用户可以通过自己的选择,灵活的修改故障注入实验的参数,使目标系统的可靠性得到更好的衡量。通过故障注入推荐功能,有效的缩小了故障注入位置的集合,可以有效的提高故障注入的效率。
附图说明
图1为本发明的故障注入整体设计图。
图2为本发明代码关键字匹配流程图。
图3为本发明直接数据传递在故障传播网络图中的建边流程图。
图4为本发明进程驱动信号与赋值信号在故障传播图中建边流程图。
具体实施方式
具体实施方式一:参照图1具体说明本实施方式,本实施方式所述的基于代码突变的FPGA在线故障注入方法,包括以下步骤:
步骤一:首先扫描代码,对VHDL系统进行数学建模;
步骤二:根据用户选择的故障注入位置,注入文件配置,对信号进行修改,生成注入单元;
步骤三:根据用户的选择生成故障注入参数;
步骤四:对步骤三中生成的故障注入参数进行解析,并写入参数寄存器中;
步骤五:通过宿主机的控制,在FPGA目标系统运行时完成故障注入单元的激活。
安装阶段的第一步是进行代码分析,通过扫描代码对VHDL系统进行数学建模,得到系统可注入位置。提供给用户进行选择,也可以进行注入位置推荐,提供对系统可靠性影响较大的故障注入位置。用户在界面进行注入位置选择后,对信号进行修改,注入文件配置。最后生成注入单元,与原系统组合在一起形成新的系统代码。新的VHDL代码可以通过编译综合下载到具体的FPGA中。
在注入阶段。注入阶段的第一步是用户在界面选择注入故障的具体类型和持续时间,软件根据用户界面的选择生成故障注入参数。在注入管理模块中对这些参数进行解析,向参数寄存器中写入,并发送故障注入启动信号。完成故障注入的执行。用户通过在系统进行故障注入之后的输出行为来鉴别故障注入是否有效。
故障注入的流程中,代码的扫描和故障注入位置的生成通过生成目标系统的语法树和关键字扫描实现,通过扫描目标系统的VHDL代码,建立系统语法树,从而找出目标系统的故障注入位置和提供注入的相关信息。首先进行代码规范化,去除多余空格和制表符,在使用关键字进行代码分段时,从上至下根据相关关键字将代码分为输入输出定义段,器件定义段和行为描述段。之后在输入输出定义段和行为描述段的前面匹配,即可扫描出所有的信号名称。之后在行为描述段进行匹配时,先匹配相关信号名称,之后根据此行匹配到的是赋值符号还是映射,决定本信号的赋值类型,然后将这些信息和匹配的位置写入相关数据结构即可。
在本实施方式中,所述步骤二中生成注入单元,根据用户选择生成的故障注入参数,形成步骤五中的故障注入单元。
具体实施方式二:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是所述步骤二中故障注入位置通过目标系统的语法树实现。
具体实施方式三:本实施方式是对具体实施方式二的进一步说明,本实施方式与具体实施方式二的区别是所述步骤一的详细步骤为:
步骤一一:对VHDL代码文件进行代码规范;
步骤一二:读取VHDL代码中的关键字列表,使用基础关键字进行代码分段;
步骤一三:判定是否扫描完所有关键字,若是,结束,如否,则执行步骤一四;
步骤一四:读取关键字在相关段进行代码匹配,然后将信息和匹配的位置写入数据结构,执行步骤一三。
故障注入的推荐功能通过组建系统的故障传播网络,在故障传播网络中,分析系统的可靠性瓶颈。故障传播网络的构建分为单一文件内的信号连接和多文件之间的信号连接。单一文件的直接数据传递关系通过定位当前文件的注入信号位置,在代码相关行去精确匹配其他注入信号的信号名称。通关查找数据结构,在数据结构存储信号位置的数据上遍历注入单元,之后返回源代码文件,在相关的故障注入位置上,匹配赋值信号的名称,即可完成单一文件的数据信号依赖关系的构建。
具体实施方式四:本实施方式是对具体实施方式三的进一步说明,本实施方式与具体实施方式三的区别是所述步骤一四的具体步骤为:首先从上至下根据相关关键字将代码分为输入输出定义段,器件定义段和行为描述段,然后在输入输出定义段和行为描述段前进行代码匹配,得到所有的信号名称,之后在行为描述段进行匹配时,先匹配相关信号名称,然后根据此行匹配到的是赋值符号还是映射,确定本信号的赋值类型,最后将信息和匹配的位置写入数据结构。
文件之间的数据依赖关系通过存储数据结构,查找器件表,在器件表的端口映射声明中匹配本文件的注入信号名称和器件文件的注入信号名称,要使用文件之间的实体-器件依赖图。首先遍历代码文件,根据在代码文件中匹配的关键字区分进程位置,包括每个进程的开始位置和结束位置。之后遍历信号列表,然后在每个进程之内匹配可注入信号的名称,与驱动信号相关联。文件之间的数据依赖关系较为简单,通过TABLE数据结构,查找器件表,在器件表的端口映射声明中匹配本文件的注入信号名称和器件文件的注入信号名称,要使用文件之间的实体-器件依赖图。由于可以建立这种联系的文件都有器件声明,首先查找数据结构中的器件信息内容,找到器件声明和器件实例部分,在器件实例的部分代码中匹配映射的信号对,在匹配的信号对之间建立数据依赖即可。
经过故障注入单元生成和故障位置筛选之后,在宿主机软件端的功能根据用户在界面上的选择生成需要传送到故障注入参数寄存器的内容,和与通信模块进行通信。注入管理功能分为两个部分,一个部分是串口通信的配置,另一部分是根据用户的界面输入,对通信模块发送串口数据。串口通信的配置包括串口选择,波特率,数据位数,校验位数和停止位逻辑值。之后向串口输入端口发送软复位信号。等待故障注入。
用户的界面输入完成后,根据选择,将故障注入参数组织成串行数据,向串口总线发送。连接系统的软件部分和硬件部分采用RS232串行总线实现。
具体实施方式五:本实施方式是对具体实施方式一的进一步说明,本实施方式与具体实施方式一的区别是在所述步骤二前还包括故障注入位置推荐,所述故障注入位置推荐基于故障传播网络结构实现。
具体实施方式六:本实施方式是对具体实施方式五的进一步说明,本实施方式与具体实施方式五的区别是所述故障传播网络结构包括单一文件内的信号连接和多文件之间的信号连接。
具体实施方式七:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是具体实施方式六:本实施方式是对具体实施方式五的进一步说明,本实施方式与具体实施方式五的区别是
具体实施方式八:本实施方式是对具体实施方式六的进一步说明,本实施方式与具体实施方式六的区别是所述多文件之间的信号连接的具体步骤如下:对于多文件控制依赖,首先遍历代码文件,根据在代码文件中匹配的关键字区分进程位置,之后遍历信号列表,在每个进程之内匹配可注入信号的名称,并与驱动信号相关联,对于多文件数据依赖,首先查找数据结构,然后查找器件表,使用文件之间的实体-器件依赖图,在器件表的端口映射声明中匹配本文件的注入信号名称和器件文件的注入信号名称。
具体实施方式九:本实施方式是对具体实施方式八的进一步说明,本实施方式与具体实施方式八的区别是所述进程位置包括开始位置和结束位置。
需要注意的是,具体实施方式仅仅是对本发明技术方案的解释和说明,不能以此限定权利保护范围。凡根据本发明权利要求书和说明书所做的仅仅是局部改变的,仍应落入本发明的保护范围内。

Claims (9)

1.基于代码突变的FPGA在线故障注入方法,其特征在于包括以下步骤:
步骤一:首先扫描代码,对VHDL系统进行数学建模;
步骤二:根据用户选择的故障注入位置,注入文件配置,对信号进行修改,生成注入单元;
步骤三:根据用户的选择生成故障注入参数;
步骤四:对步骤三中生成的故障注入参数进行解析,并写入参数寄存器中;
步骤五:通过宿主机的控制,在FPGA目标系统运行时完成故障注入单元的激活。
2.根据权利要求1所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述步骤二中故障注入位置通过目标系统的语法树实现。
3.根据权利要求2所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述步骤一的详细步骤为:
步骤一一:对VHDL代码文件进行代码规范;
步骤一二:读取VHDL代码中的关键字列表,使用基础关键字进行代码分段;
步骤一三:判定是否扫描完所有关键字,若是,结束,如否,则执行步骤一四;
步骤一四:读取关键字在相关段进行代码匹配,然后将信息和匹配的位置写入数据结构,执行步骤一三。
4.根据权利要求3所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述步骤一四的具体步骤为:首先从上至下根据相关关键字将代码分为输入输出定义段,器件定义段和行为描述段,然后在输入输出定义段和行为描述段前进行代码匹配,得到所有的信号名称,之后在行为描述段进行匹配时,先匹配相关信号名称,然后根据此行匹配到的是赋值符号还是映射,确定本信号的赋值类型,最后将信息和匹配的位置写入数据结构。
5.根据权利要求1所述的基于代码突变的FPGA在线故障注入方法,其特征在于:在所述步骤二前还包括故障注入位置推荐,所述故障注入位置推荐基于故障传播网络结构实现。
6.根据权利要求5所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述故障传播网络结构包括单一文件内的信号连接和多文件之间的信号连接。
7.根据权利要求6所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述单一文件内的信号连接的具体步骤如下:首先定位当前文件的注入信号位置,然后通过查找数据结构,在数据结构存储信号位置的数据上遍历注入单元,之后返回源代码文件,在相关的故障注入位置上,匹配赋值信号的名称,在赋值信号和被赋值信号之间建立联系。
8.根据权利要求6所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述多文件之间的信号连接的具体步骤如下:对于多文件控制依赖,首先遍历代码文件,根据在代码文件中匹配的关键字区分进程位置,之后遍历信号列表,在每个进程之内匹配可注入信号的名称,并与驱动信号相关联,对于多文件数据依赖,首先查找数据结构,然后查找器件表,使用文件之间的实体-器件依赖图,在器件表的端口映射声明中匹配本文件的注入信号名称和器件文件的注入信号名称。
9.根据权利要求8所述的基于代码突变的FPGA在线故障注入方法,其特征在于:所述进程位置包括开始位置和结束位置。
CN201910722052.2A 2019-08-06 2019-08-06 基于代码突变的fpga在线故障注入方法 Pending CN110413468A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910722052.2A CN110413468A (zh) 2019-08-06 2019-08-06 基于代码突变的fpga在线故障注入方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910722052.2A CN110413468A (zh) 2019-08-06 2019-08-06 基于代码突变的fpga在线故障注入方法

Publications (1)

Publication Number Publication Date
CN110413468A true CN110413468A (zh) 2019-11-05

Family

ID=68366147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910722052.2A Pending CN110413468A (zh) 2019-08-06 2019-08-06 基于代码突变的fpga在线故障注入方法

Country Status (1)

Country Link
CN (1) CN110413468A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064782A (zh) * 2021-03-22 2021-07-02 山东英信计算机技术有限公司 一种内存注错自动化系统、使用方法及介质
CN114741993A (zh) * 2022-04-18 2022-07-12 山东浪潮科学研究院有限公司 一种基于脚本的数据流图生成方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103472385A (zh) * 2013-09-29 2013-12-25 哈尔滨工业大学 一种带故障注入功能的通用型电路故障仿真系统
CN105302547A (zh) * 2015-09-19 2016-02-03 大连理工大学 一种面向Verilog HDL设计的故障注入方法
WO2018153131A1 (zh) * 2017-02-24 2018-08-30 北京时代民芯科技有限公司 一种基于配置码流的fpga故障注入复合模型及故障注入系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103472385A (zh) * 2013-09-29 2013-12-25 哈尔滨工业大学 一种带故障注入功能的通用型电路故障仿真系统
CN105302547A (zh) * 2015-09-19 2016-02-03 大连理工大学 一种面向Verilog HDL设计的故障注入方法
WO2018153131A1 (zh) * 2017-02-24 2018-08-30 北京时代民芯科技有限公司 一种基于配置码流的fpga故障注入复合模型及故障注入系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
仲广沛等: "基于FPGA的故障注入技术的研究", 《中国优秀硕士学位论文全文数据库 信息科技》 *
王艳军等: "面向FPGA的故障注入测试技术研究", 《湘潭大学自然科学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064782A (zh) * 2021-03-22 2021-07-02 山东英信计算机技术有限公司 一种内存注错自动化系统、使用方法及介质
CN113064782B (zh) * 2021-03-22 2023-03-24 山东英信计算机技术有限公司 一种内存注错自动化系统、使用方法及介质
CN114741993A (zh) * 2022-04-18 2022-07-12 山东浪潮科学研究院有限公司 一种基于脚本的数据流图生成方法及装置
CN114741993B (zh) * 2022-04-18 2023-06-16 山东浪潮科学研究院有限公司 一种基于脚本的数据流图生成方法及装置

Similar Documents

Publication Publication Date Title
US6385765B1 (en) Specification and verification for concurrent systems with graphical and textual editors
US6721724B1 (en) Validating multiple execution plans for database queries
CN108897687B (zh) 一种基于数据驱动的api自动化测试方法和系统
US5390320A (en) Automatically converting structured analysis tool database outputs into an integrated simulation model via transportable standardized metafile
US5953519A (en) Method and system for generating electronic hardware simulation models
CN102164050B (zh) 日志解析方法及日志解析节点设备
Dovier et al. A fast bisimulation algorithm
US20140173350A1 (en) On-the-fly technical support
US20070061641A1 (en) Apparatus and method for generating test driver
CN101866315B (zh) 软件开发工具的测试方法及系统
CN105138601A (zh) 一种支持模糊约束关系的图模式匹配方法
CN111290954B (zh) 一种基于uvm的fpga构件可视化测试框架和方法
CN110413468A (zh) 基于代码突变的fpga在线故障注入方法
CN109656950B (zh) 递归查询方法、装置、服务器及存储介质
Lei et al. A combinatorial testing strategy for concurrent programs
CN111078555A (zh) 一种测试文件的生成方法、系统、服务器和存储介质
CN111723087A (zh) 数据血缘关系的挖掘方法、装置、存储介质和电子设备
CN105302547A (zh) 一种面向Verilog HDL设计的故障注入方法
CN102855278B (zh) 一种仿真方法和系统
CN111259619A (zh) 配置对象的控制方法、装置、存储介质及验证平台
Cooper et al. Performance modeling and analysis of software architectures: An aspect-oriented UML based approach
CN116050312A (zh) 基于链表树的硬件逻辑设计层次结构信息提取方法及系统
CN107315801B (zh) 并行离散事件仿真系统初始化数据存储方法
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
Myers et al. POSET timing and its application to the synthesis and verification of gate-level timed circuits

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191105

WD01 Invention patent application deemed withdrawn after publication