CN105302547A - 一种面向Verilog HDL设计的故障注入方法 - Google Patents
一种面向Verilog HDL设计的故障注入方法 Download PDFInfo
- Publication number
- CN105302547A CN105302547A CN201510599306.8A CN201510599306A CN105302547A CN 105302547 A CN105302547 A CN 105302547A CN 201510599306 A CN201510599306 A CN 201510599306A CN 105302547 A CN105302547 A CN 105302547A
- Authority
- CN
- China
- Prior art keywords
- fault location
- direct fault
- fault injection
- veriloghdl
- fault
- 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
Links
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种面向Verilog?HDL设计的故障注入方法,属于容错计算与可靠性理论研究领域。基于该方法设计了Verilog?HDL故障注入工具,采用Qt平台开发,包括交互工具、语法语义分析器和故障注入管理器三个模块。以Verilog?HDL正则表达式推导出的NFA为指导,实现代码扫描分析,支持IEEE1364-1995的Verilog?HDL语言标准,通过与用户的配置交互,完成故障注入功能。本发明属于一款容错计算与可靠性理论研究的辅助方法,采用基于模拟的故障注入技术。使用本发明可以方便、灵活地在模拟测试的计算机等硬件平台上进行故障注入的模拟仿真,通过改变逻辑值来达到故障注入的效果。
Description
技术领域
本发明属于容错计算与可靠性理论,设计了一种面向VerilogHDL设计的故障注入方法,实现了VerilogHDL故障注入工具。
背景技术
近年来,计算机的应用场所发生了很大的变化,不再仅仅局限于各种参数稳定的机房,而是延伸到了工厂、野外、海上、天空甚至宇宙等复杂的环境。这对计算机的稳定性和可靠性提出了更高层次的要求。随着对微处理器等硬件平台的可靠性研究逐渐深入,“故障注入”作为一种新型的分析评价方法,提出对于微处理器的容错机制的有效性进行可靠地分析和评价的过程。该研究方法具有比传统的基于测量或基于模型解析的方法更加灵活方便、便宜有效。对容错计算与可靠性理论的研究者而言,一个有效易用的故障注入自动化工具在节约人力物力时间等方面起着越来越重要的作用。
发明内容
本发明要解决的技术问题是提供一种面向VerilogHDL设计的故障注入方法,能够通过对VerilogHDL代码的语法语义分析,从而获得代码中全部的故障注入点,并实现对VerilogHDL代码的故障注入功能。
一种面向VerilogHDL设计的故障注入方法,步骤如下:
1)步骤一:首先获得需要进行故障注入试验的工程(符合IEEE1364-1995的VerilogHDL语言标准);
2)步骤二:将该工程导入后进行扫描,获得工程中全部模块信息,通过点选模块可以显示模块内的全部信息;
3)步骤三:使用故障注入管理器,可以对模块中的变量进行选择,用户设置好故障模型(stuck-at0/1或位翻转)后,将故障注入;
4)步骤四:通过仿真模拟,即可看到故障注入结果。
进一步地,步骤一中根据标准的VerilogHDL代码作为试验工程,为了使测试更加准确,工程采用规范语法语义,支持的VerilogHDL语言版本为:Verilog95,即IEEE1364-1995标准。
进一步地,步骤二中语法语义分析是故障注入工具最核心也是最复杂的模块。要实现故障注入,首先要对VerilogHDL源文件进行解析,理清各个module间的层次关系,生成模型的语法分析列表,存储相应的变量信息后,才能选择故障注入的位置。
进一步地,步骤三中用户可设置故障注入的参数有故障位,故障模型(置1,置0,翻转等),故障注入周期等。用户收到VerilogHDL语法语义分析器返回的数据,根据该数据选择故障需要注入的位置,同时设置故障注入的周期和所注入的故障模型。将该数据提交给故障注入管理器后,管理器会判断用户提供的参数是否合法,如不合法(数据位不存在,或缺少相关参数等)将提示用户重新提交参数,如图1所示。
进一步地,步骤四中通过对故障注入前后的ModelSimSE6.1f模拟波形的验证分析,从而验证了故障注入工具的有效性。
本发明的技术方案:
Verilog故障注入工具,采用Qt平台开发,包括用户交互工具,语法语义分析器和故障注入管理器三个模块。界面模块属于可视化部分,后两个模块属于后台核心代码部分。
用户交互工具主要实现了与用户的交互功能,包含工程导入、模块列表展示、模块代码展示、模块内变量列表属性展示和故障注入管理器入口五个子模块。工程导入模块用来选择进行故障注入试验的工程。模块列表展示功能将工程内全部模块名称列表展示。模块代码展示可以将模块内部代码全部读取并呈现,以便用户观察故障注入前后代码信息。模块内变量属性展示将全部变量的名称、类型、属性、长度以及定义的行数进行展示。最后通过故障注入管理器入口与故障注入管理器链接。
语法语义分析器包括代码扫描,保留字识别,标识符识别、添加和修改以及变量属性获取等四个子功能。为了保证对VerilogHDL灵活的语言规则的适配度,代码扫描功能采用按字符扫描方法,利用正则表达式、非确定性自动机(NFA)对VerilogHDL进行描述。根据分隔符和空白格对扫描到的单词进行判断(是否为关键字,标识符,数字等)。保留字和标识符的识别功能通过容器(vector)类进行实现,通过对两个容器的增删改查,实现对保留字和标识符进行添加、识别和修改。变量属性的获取主要通过对已定义的标识符进行识别后再进行对单个标识符的属性修改,对于新定义标识符,会有相应的默认属性。
故障注入管理器分故障注入和交互显示两部分。故障注入主要实现了获取故障注入的注入节点,同时将故障模型、故障周期、故障位置通过与用户交互记录下来传给底层函数,底层函数将该故障精准注入。交互显示主要负责与用户的交互,并且判断用户设置的故障模型是否合法,以便进行准确的故障注入试验。
本发明采用的是基于模拟的故障注入技术。使用本发明可以方便、灵活地在计算机等硬件平台上进行故障注入的模拟仿真,通过改变逻辑值来达到故障注入的效果,同时该故障注入工具耗时较短,能够满足工程和实验的要求。基于模拟的故障注入技术可以在微处理器等芯片设计和开发过程中,对容错技术的可靠性进验证和评价,大大地缩短了验证的周期,为硬件的开发过程带来极大方便。
附图说明
图1故障注入管理器工作原理。
图2是本发明的软件0层和1层数据流图。
图3是本发明的用户交互工具界面图。
图4是本发明扫描功能依照的几种典型的NFA举例。
图5是本发明的故障注入管理器界面图。
具体实施方式
以下结合发明内容和说明书附图详细说明本发明的具体实施。
(1)总体结构
面相VerilogHDL设计的故障注入工具,采用Qt平台开发,包括主程序界面,语法语义分析器和故障注入管理器三个模块,如图2所示。其中界面模块为可视化部分,主要完成与用户进行信息交互,后两个模块属于后台核心代码部分,负责实现语法语义分析和故障注入功能。
(2)用户交互工具
用户交互工具主要实现了与用户的交互功能,包含工程导入、模块列表展示、模块代码展示、模块内变量列表属性展示和故障注入管理器入口五个子模块,如图3所示。
工程导入模块用来选择进行故障注入试验的工程。模块列表展示功能将工程内全部模块名称列表展示。模块代码展示可以将模块内部代码全部读取并呈现,以便用户观察故障注入前后代码信息。模块内变量属性展示将全部变量的名称、类型、属性、长度以及定义的行数进行展示。最后通过故障注入管理器入口与故障注入管理器链接。
(3)语法语义分析器
语法语义分析器包括代码扫描,保留字识别,标识符识别、添加和修改以及变量属性获取等四个子功能。
代码扫描子功能主要根据由VerilogHDL正则表达式推导出的NFA进行编写。模块声明语法举例:
分析器扫描识别顺序:
1)module关键字;
2)module的名称;
3)左括号;
4)input或者output或者inout或者直接是端口名称;
5)逗号;
6)这样一直到识别出有括号以及紧接着的分号为止。
根据上面的模块声明的文法有如下的正则表达式:
有了这些正则表达式,可以推导出相应的NFA,根据NFA即可完成代码的编写。如图4所示。
保留字和标识符的识别功能通过C++的容器(vector)类实现。通过对两个容器KeyArr、IdentiferArr的增删改查完成对保留字和标识符的添加、修改和识别。
变量属性的获取主要通过对已定义的标识符进行识别后再对单个标识符的属性进行修改,对于新定义的标识符,会有相应的默认属性。
(4)故障注入管理器
故障注入管理器分为故障注入和交互显式两部分。
故障注入主要实现了获取故障注入的注入节点,同时将故障模型、故障周期、故障位置,通过与用户交互记录下来传给底层函数,底层函数将该故障精准注入。
交互显式主要负责与用户的交互,并且判断用户设置的故障模型是否合法,以便进行准确的故障注入试验。如图5所示。
Claims (1)
1.一种面向VerilogHDL设计的故障注入方法,能够通过对VerilogHDL代码的语法语义分析,从而获得代码中全部故障注入点,实现灵活的故障注入配置和仿真,其特征在于,包括以下步骤;
步骤一:用户交互工具实现故障注入的配置和显示功能,获得需要进行故障注入试验的工程,包含工程导入、模块列表展示、模块代码显示、模块内变量列表属性显示和故障注入管理器入口五个子模块;
步骤二:扫描VerilogHDL工程文件,采用正则表达式、非确定性自动机(NFA)对VerilogHDL进行描述,包括代码扫描、保留字识别、标识符识别和修改、变量属性获取四个功能,识别全部变量的名称、类型、属性、长度、定义位置;
步骤三:使用故障注入管理器,断用户设置的故障模型是否合法,获取故障注入节点,将故障模型、故障周期、故障位置通过用户交互记录传给底层函数以实现故障精准注入。
步骤四:通过仿真模拟,获得故障注入结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510599306.8A CN105302547A (zh) | 2015-09-19 | 2015-09-19 | 一种面向Verilog HDL设计的故障注入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510599306.8A CN105302547A (zh) | 2015-09-19 | 2015-09-19 | 一种面向Verilog HDL设计的故障注入方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105302547A true CN105302547A (zh) | 2016-02-03 |
Family
ID=55199845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510599306.8A Pending CN105302547A (zh) | 2015-09-19 | 2015-09-19 | 一种面向Verilog HDL设计的故障注入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302547A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885500A (zh) * | 2019-02-27 | 2019-06-14 | 苏州浪潮智能科技有限公司 | 一种提高软件测试覆盖率的方法和系统 |
CN110413468A (zh) * | 2019-08-06 | 2019-11-05 | 哈尔滨工业大学 | 基于代码突变的fpga在线故障注入方法 |
CN113381989A (zh) * | 2021-04-27 | 2021-09-10 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
CN115562645A (zh) * | 2022-09-29 | 2023-01-03 | 中国人民解放军国防科技大学 | 一种基于程序语义的配置故障预测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281555A (zh) * | 2008-05-28 | 2008-10-08 | 北京时代民芯科技有限公司 | 一种验证抗单粒子效应能力的故障注入系统及其方法 |
CN101436224A (zh) * | 2008-12-19 | 2009-05-20 | 北京时代民芯科技有限公司 | 单粒子故障注入模拟的蒙特卡罗随机信号产生装置 |
-
2015
- 2015-09-19 CN CN201510599306.8A patent/CN105302547A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281555A (zh) * | 2008-05-28 | 2008-10-08 | 北京时代民芯科技有限公司 | 一种验证抗单粒子效应能力的故障注入系统及其方法 |
CN101436224A (zh) * | 2008-12-19 | 2009-05-20 | 北京时代民芯科技有限公司 | 单粒子故障注入模拟的蒙特卡罗随机信号产生装置 |
Non-Patent Citations (1)
Title |
---|
路遥: ""基于HDL的故障注入工具的研究与实现"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885500A (zh) * | 2019-02-27 | 2019-06-14 | 苏州浪潮智能科技有限公司 | 一种提高软件测试覆盖率的方法和系统 |
CN110413468A (zh) * | 2019-08-06 | 2019-11-05 | 哈尔滨工业大学 | 基于代码突变的fpga在线故障注入方法 |
CN113381989A (zh) * | 2021-04-27 | 2021-09-10 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
CN113381989B (zh) * | 2021-04-27 | 2022-06-28 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
CN115562645A (zh) * | 2022-09-29 | 2023-01-03 | 中国人民解放军国防科技大学 | 一种基于程序语义的配置故障预测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Courcelle et al. | Graph structure and monadic second-order logic: a language-theoretic approach | |
CN104503816B (zh) | 一种硬件语言vhdl到msvl的自动转换系统 | |
CN109739766B (zh) | 一种快速搭建fpga数字仿真模型的系统及方法 | |
CN106970819B (zh) | 一种基于prdl规则描述语言的c程序代码规范检查装置 | |
CN101894058B (zh) | 针对自动测试系统的测试覆盖性自动分析方法及其装置 | |
CN102682118A (zh) | 一种多维数据模型访问方法及装置 | |
CN104216888A (zh) | 数据处理任务关系设置方法及系统 | |
CN106648587A (zh) | 一种基于注解的Web应用代码生成方法 | |
CN108694214A (zh) | 数据报表的生成方法、生成装置、可读介质及电子设备 | |
CN104699613B (zh) | 一种航天器测试需求自动生成系统及其方法 | |
CN107203468A (zh) | 一种基于ast的软件版本演化对比分析方法 | |
CN104598635A (zh) | 一种基于xml描述的复杂文档自动生成方法 | |
CN103473409A (zh) | 一种基于知识库的fpga故障自动诊断方法 | |
CN105302547A (zh) | 一种面向Verilog HDL设计的故障注入方法 | |
US10282501B1 (en) | Support for multiple user defined assertion checkers in a multi-FPGA prototyping system | |
CN106372044A (zh) | 一种基于报表生成类型化维度xbrl报告的方法 | |
CN102033990A (zh) | 组合逻辑电路逻辑参数提取激励波形的产生方法 | |
Furche et al. | Opal: automated form understanding for the deep web | |
CN106951575A (zh) | 一种基于cosim的多学科虚拟试验仿真方法 | |
CN103235757B (zh) | 基于自动化造数对输入域测试对象进行测试的装置和方法 | |
US20220222253A1 (en) | Sql statement generator | |
Bhargava et al. | On embedded languages for model management | |
Abid et al. | A Real-Time Specification Patterns Language | |
Tari et al. | Designing the reengineering service for the DOK federated database system | |
CN103885762A (zh) | 一种基于文件字典拼装的文件开发工具装置以及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160203 |
|
RJ01 | Rejection of invention patent application after publication |