一种针对HDL系统进行仿真故障注入获取模块间耦合度的方法与流程

文档序号:14008194阅读:118来源:国知局
一种针对HDL系统进行仿真故障注入获取模块间耦合度的方法与流程

本发明涉及太空环境中的数据安全领域,具体涉及一种针对hdl(硬件描述语言:hardwaredescriptionlanguage)系统进行仿真故障注入获取模块间耦合度方法,该方法可以把任何由hdl语言描述的系统进行模块间耦合度计算。对系统进行单粒子软错误传播建模,对模块间的耦合度计算必不可少。利用该方法形成的软件可以作为单粒子软错误传播分析软件的自动化建模插件。



背景技术:

随着cmos工艺尺寸的缩小,工作在空间环境的集成电路受单粒子错误带来的失效问题影响愈来愈严重。未来数据中继卫星、宽带通讯卫星、遥感卫星、无线电侦察卫星、导航卫星、预警卫星等都需要性能强大的星载处理平台(opp,on-boardprocessingplatforms)以确保太空支援能力,这些星载处理平台主要由fpga、dsp、adc、dac等芯片为主要元器件搭建。而这些大规模集成电路器件,尤其是sram-fpga极易受空间单粒子效应的影响。空间单粒子效应的存在严重威胁着航天器的可靠性和工作寿命。

空间电子系统的抗辐射能力评估,具有非常重要的意义。一般的试验方法是重离子试验,这种试验方法耗时长、费用高,试验实施不便捷,而且对象都是已经完成设计流片的电路系统,即使因设计不合理或其他原因系统的单粒子敏感性过高,也难以再设计。因此设计者期望在系统设计阶段就开始对系统进行评估找出系统辐射薄弱点进行针对性的加固。单粒子软错误导致的系统功能失效表现为系统对外的输出并未实现系统正常的功能,可以理解为一种输出错误。可以为空间电子系统进行单粒子软错误多层次传播建模,模型建立需要经过系统模块划分、系统参数化、参数获取、模型演化分析,最终获得整个系统的功能失效率以及单粒子软错误薄弱模块和敏感路径。传播过程中一个重要的参数就是耦合度,它表征模块间错误传播的概率,耦合度wij表征模块i输出错误导致模块j输出错误的概率。模块间耦合度的计算是系统“单粒子软错误传播建模”中系统参数化描述后,需要重点获取的参数。

但是,空间电子系统单粒子软错误传播建模过程中模型参数化获取难度大,耦合度信息难以确定。

空间应用的电子系统一般都以hdl语言进行描述,尤其是常用sram-fpga;空间应用电子系统在设计阶段一般采用hdl(verilog或vhdl)语言描述,hdl语言定义了系统模块的功能和信号时序逻辑连接关系。

modelsim是业界最优秀的hdl语言仿真软件,编译速度快,编译的代码与平台无关。但是,目前,尚没有人采用该软件尝试进行模块间耦合度的获取。



技术实现要素:

针对现有技术中存在的上述问题以及空间电子系统单粒子软错误传播建模过程中模型参数化获取难问题,本发明提供了一种针对hdl(硬件描述语言)描述的系统进行仿真故障注入获取模块间耦合度方法。现有技术中不存在类似方法,利用该方法可以通过对hdl系统进行故障注入分析系统模块间的耦合度。本发明故障注入的结果通过modelsim软件进行对hdl系统进行仿真故障注入获得。

具体而言,本发明提供一种针对hdl系统进行仿真故障注入获取模块间耦合度的方法,其特征在于,所述获取模块间耦合度的方法包括:根据目标hdl系统的顶层文件,并利用该顶层文件进行模块划分和故障注入以获取模块间耦合度。

在一种优选实现方式中,所述方法包括如下步骤:

步骤s1:目标hdl系统的顶层描述文件采用hdl对系统中的各个模块进行了例化,并描述了模块间的连接关系,按模块的例化顺序进行模块划分;

步骤s2:对目标hdl系统的顶层文件进行修改,添加特定模块;

步骤s3:根据故障注入需求,生成系统仿真故障注入测试激励文件;

步骤s4:生成系统仿真故障注入modelsim的.do文件,并对.do文件进行优化;

步骤s5:用modelsim软件运行.do文件进行仿真,.do文件运行时调用测试激励文件,对系统进行故障注入,同时记录仿真的结果到.list文件;

步骤s6:分析modelsim仿真软件的输出.list文件,获得对模块总的故障注入数和模块输出错误数;

步骤s7:按照下式计算模块间的耦合度:

,i,j分别代表系统中的不同模块。

在另一种优选实现方式中,在步骤s2中,所添加的模块包括“影子模块”、“异或门”、“错误控制信号”、“故障注入统计模块”和“输出端错误统计模块”。

在另一种优选实现方式中,所述步骤s3包括在故障注入测试激励文件中设置故障注入参数。

在另一种优选实现方式中,步骤s4中对.do文件进行优化设置包括仅保留需要观测的信号。需要说明的是,本发明在文中所提到的一些术语其含义如下:

故障注入:一般意义上的故障注入是指通过受控实验向系统中刻意引入故障,并观察系统存在故障时的行为。本专利的故障注入:fpga等器件其功能是由对各个可配置位进行配置而实现其功能,故障注入通过对这些位进行修改,而扰动其功能,观察配置位修改后的行为。

耦合度:一个模块输出错误导致另一模块输出错误的概率,耦合度wij定义为模块i输出错误导致模块j的输出错误的概率。针对一个由n个模块构成、hdl描述的电子系统,模块与模块间的耦合度可以表示成一个n×n的矩阵,矩阵元素用wij表示。在本发明中,通过故障注入对模块i对模块j的输出信号进行故障注入,统计模块i注入错误数和模块j输出错误数获得耦合度。

对比模块和影子模块:为方便说明本专利而定义,仿真故障注入获取耦合度的方法通过添加“影子模块”方法对模块输入输出端进行监测。为了最大限度的还原模块发生软错误后对其他模块的影响,在仿真试验中,测试不同的模块时,需要在系统中设置一个用于故障注入的实验模块。如图2所示,此模块与其作对比的正常模块采用并联的方式接入原系统,且此模块与正常模块一致,称它为“影子模块”,而原有模块我们称“对比模块”。为了同时对系统的所有模块进行仿真故障注入,“影子模块”的输入来自上一个“对比模块”,而不是来自上一个“影子模块”。

错误控制信号:为方便说明本专利而定义,错误控制信号与对比模块信号进行异或产生的信号输入至影子模块,实现对影子模块的故障注入,当错误控制信号为1时,与对比模块信号异或后产生的信号与对比模块信号相反。

hdl语言中,所有的电路都是模块中定义,顶层文件是将所有模块连接在一起的主程序,相当于实现了电路功能。顶层文件相当于c、c++等语言的主程序。原本hdl语言描述的各个电路模块互不关联,但是通过顶层文件将各个模块连接到一起,完成了系统要实现的功能。“顶层文件”指的是将hdl语言所描述电路模块连接在一起形成完整功能电路的文件,因此顶层文件相当于把模块实例化到具体电路中去了。

具体而已,对于每个所划分出的模块,将其作为对比模块,为每个对比模块设置一个影子模块,故障注入时,正常的信号输入到对比模块,将正常信号与故障输入信号进行异或处理(正常信号和故障信号输入给异或门,异或门输出给影子模块),将异或结果输出给影子模块,对比模块的输出和影子模块的输出异或处理后输出给输出端错误统计模块。对于下一个模块而言,将对比模块的输出直接输出给下一个对比模块,将对比模块的输出与故障注入器的下一路输入通过另一异或门进行异或处理后输出给下一个影子模块。故障注入统计模块用于对故障注入器注入的故障数进行统计,输出端错误统计模块用于对输出端获得的错误信号进行统计。

另一方面,本发明提供一种基于模块间耦合度来评估系统单粒子功能失效率的传播分析方法,所述方法通过对电路系统进行模块划分,基于单粒子软错误在模块间的传播情况,分析单粒子软错误从产生到传播至输出端的概率,最终获得系统的单粒子功能失效率。

优选地,所述分析方法包括如下步骤:

(1)对单粒子效应敏感系统进行模块划分,划分为n个模块;

(2)确定各个模块间的耦合度wij,所述耦合度wij表示模块i对模块j的输入错误导致模块j的输出错误的概率,形成系统模块的耦合矩阵,大小为n×n,其中i和j为小于n的正整数;该耦合度关系的确定是基于上述hdl系统进行的;

(3)从所划分的模块中确定系统输出模块,所述系统输出模块的输出端发生错误即表示系统发生了功能失效,系统功能失效率为所述系统输出模块发生功能输出错误的概率;

(4)若模块i发生单粒子软错误导致的输出错误,其错误状态由0变为1;依据传播规则,每次传播即为模块错误状态的行向量与耦合矩阵相乘一次,总计传播n次,确保错误传播至输出端,计算其导致系统输出模块的输出错误率pi,即该模块导致的系统功能失效率;

(5)遍历每个模块发生输出错误后经过n步传播的错误传播导致的系统功能失效率p1~pn;

(6)上一步骤计算出了模块i导致的系统功能失效率pi,计算各个模块导致的系统功能失效率为:fi=σsi×avfi×pi,其中σsi为模块i的静态翻转截面,σsi×avfi表示获得模块因单粒子软错误导致的输出错误的概率;

(7)累加各个模块导致的系统功能失效率获得系统的单粒子功能失效率f。

本发明的方法具有以下优点:

故障注入方法简单、实用;采用异或门的轻松实现故障注入和模块输出错误次数统计。

用户方便控制故障注入过程、次数、持续时间等参数;

完成测试激励文件和do文件后启动自动故障注入流程,自动获得模块间耦合度;

只要模块间连接关系不变,获得的模块间耦合度就可以多个系统应用,而不需要重复计算。

附图说明

图1为本发明的仿真故障注入方法获取模块间耦合度方法的示意性流程;

图2为本发明的仿真故障注入方法原理示意图;

图3为一个示例性的仿真测试激励文件格式;

图4为仿真故障注入获取耦合度的步骤;

图5为“串口收发”模块电路;

图6为“串口收发”模块电路注入结构示意图。

具体实施方式

以下结合附图及其实施例对本发明进行详细说明,但并不因此将本发明的保护范围限制在实施例描述的范围之中。

图1示出了本发明方法的总体流程,图2则示出了本发明的故障注入时的总体架构,架构中上方的各个模块为对比模块,下方的各个模块为影子模块。为每个对比模块设置一个影子模块,故障注入时,正常的信号输入到对比模块,将正常信号与故障输入信号进行异或处理(正常信号和故障信号输入给异或门,异或门输出给影子模块),将异或结果输出给影子模块,对比模块的输出和影子模块的输出异或处理后输出给输出端错误统计模块。对于下一个模块而言,将对比模块的输出直接输出给下一个对比模块,将对比模块的输出与故障注入器的下一路输入通过另一异或门进行异或处理后输出给下一个影子模块。故障注入统计模块用于对故障注入器注入的故障数进行统计,输出端错误统计模块用于对输出端获得的错误信号进行统计。

下面结合图1的总体流程选用“串口收发”系统作为示例,来对本发明的针对hdl(硬件描述语言)系统进行仿真故障注入获取模块间耦合度方法的实施过程进行阐述。

“串口收发”系统是使用hdl语言描述的一个串口数据接收、数据处理、数据发送的一个简单系统。它的组成如图5所示。包括接收模块,条件fifo模块和发送模块。接收模块接收激励数据后,传递给条件fifo模块,条件fifo模块是一个三级fifo,接收到接收模块发来的数据后,将其压入fifo中,在fifo输出端判断该数能否被4整除,如果可以,发送模块将fifo输出的数据发送出来;如果不能被4整除,发送模块将发送0x01。系统输入的串口信号波特率为115200bps、系统外部输入工作时钟为40mhz。数据发送主要完成把经过处理后的数据按照“并”转“串”后以115200bps波特率从sdo端口发送出去。

下面,依据本发明的针对hdl(硬件描述语言)系统进行仿真故障注入获取模块间耦合度方法的流程,分析“串口收发”系统模块间的耦合度。

如图1所示,仿真故障注入获取耦合度步骤为:

(1)“串口收发”系统顶层文件采用hdl对各个模块进行了例化,并描述了模块间的连接关系,按模块的例化顺序进行模块划分。本实施例中,划分成(1)“接收模块”、(2)“条件fifo模块”、(3)“发送模块”,如图5所示。

(2)对系统顶层文件进行修改。在对顶层模块下的子模块进行耦合度计算时,需要在顶层文件中添加“影子模块”、“异或门”、“错误控制信号”、“模块故障注入统计模块”、“模块输出端错误统计模块”(如图2所示)。对于串口收发系统而言,修改系统的顶层描述文件top.v,为“接收模块”、“条件fifo”、“发送模块”添加各自的“影子模块”,“异或门”、“错误控制信号:inj_01、inj_12、inj_23”、“模块故障注入统计信号cnt_in_01、cnt_in_12、cnt_in_23”、“模块输出端错误统计信号cnt_out_01、cnt_out_12、cnt_out_23”,如图6所示;

(3)依据故障注入需求,生成系统仿真故障注入测试激励文件。

(4)系统仿真故障注入modelsim的.do文件mtop_tb.do生成。为了加快仿真注速度,在.do文件中需要对modelsim对系统仿真时进行优化设置,只保留需要观测的信号:输入端错误次数、输出端错误次数(cnt_out_01、cnt_out_12、cnt_out_23以及cnt_in_01、cnt_in_12、cnt_in_23),把统计错误的信号以addlist的方式添加到list列表。

(5)开始进行故障注入,用modelsim软件运行.do文件进行仿真,在控制台中运行vsim-domtop_tb.do指令,然后mtop_tb.do文件运行,.do文件运行时会调用测试激励文件,对系统进行故障注入,同时记录仿真的结果到.list文件。

(6)分析modelsim仿真软件的输出.list文件,获得对模块总的故障注入数cnt_inij和模块输出错误数cnt_outij。

(7)按照下式计算模块间的耦合度。

上述步骤(3)中,测试激励文件运行即故障注入过程,在故障注入获取模块间耦合度时,需要在测试激励文件中设置故障注入参数,模块电路仿真故障注入的注入参数需要根据不同的电路系统进行设置。设置主要包括“时钟周期”、“错误维持时间”、“系统错误监测时间”、“系统充分运行时间”、“modelsim软件仿真时间”5个参数。如图3所示。

“时钟周期”是指系统外部供给系统的时钟周期,单位为ns;“错误维持时间”是指单次故障注入中错误持续保持时间;“系统错误监测时间”是指在错误停止注入到“影子模块”的时刻开始,需要对输出端继续进行错误监测的时间;“系统充分运行时间”是指在系统复位后,系统进入到正常工作状态所需要的准备时间;“modelsim软件仿真时间”是指设置给modelsim软件仿真时间长度,仿真时间越长,系统仿真故障注入的次数越多,计算得到的耦合度越准确。因此一次故障注入周期=复位时间+系统正常充分时间+等待故障注入的随机时间+错误维持时间+系统错误监测时间。

实施例中,串口收发电路的工作时钟为40mhz,所以“时钟周期”设为25ns。在“串口收发”模块电路中电路串口波特率为115200bps,电路收发的工作周期为1110us。因此设置“系统错误监测时间”为110us,“系统充分运行时间”为50us,“错误维持时间”设置为1110us、“modelsim软件仿真时间”为10s。

步骤(3)中,激励文件负责对控制系统进行故障注入,如图4所示,其工作流程如下:

(1)对串口收发系统进行复位,让系统从上个注入周期退出并重新初始化系统;

(2)根据激励文件设置的“系统充分运行时间”,使系统工作时间达到“系统充分运行时间”,此时系统已进入正常运行状态;

(3)开始对第一个模块(接收模块)进行故障注入,并统计模块注入故障的次数和模块输出错误次数;

(4)第一个模块故障注入完成后,依次完成对剩下两个模块(条件fifo模块和发送模块)的故障注入,并记录每个模块的故障注入次数和模块输出错误次数,完成故障注入;

(5)故障注入完成后,停止仿真,测试者对故障注入所获数据进行分析。

4、故障注入的方法为:“错误控制信号”产生于仿真测试激励,故障注入时“错误控制信号”置1,“影子模块”的输入端的错误来自“错误控制信号”与“对比模块”输入信号的异或,当错误控制信号为1时,影子模块的输入与对比模块的输入相反,从而实现故障注入;当到达“错误维持时间”时,将错误控制信号置0,此时影子模块的输入与对比模块的输入相同,相当于故障注入停止。

5、输出错误监测方法为:通过“对比模块”输出与“影子模块”的输出进行异或实现。如果对比模块和影子模块输出不同,那么异或输出为1,输出错误次数”cnt_out”加1。

6、为了同时对系统的所有模块进行仿真故障注入,“影子模块”的输入来自上一个“对比模块”,而不是来自上一个“影子模块”。

modelsim软件仿真结束时获得一个top_mtop_tb.lst文件,里面包含了输入端错误统计、输出端错误统计,归纳如下表:

根据上式计算得到模块间的耦合度如下表所示:

以上所述仅为本发明的较佳实施例,并非对本发明做任何形式上的限制,凡在本发明的精神和原则之内,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明的保护范围之内。

虽然上面结合本发明的优选实施例对本发明的原理进行了详细的描述,本领域技术人员应该理解,上述实施例仅仅是对本发明的示意性实现方式的解释,并非对本发明包含范围的限定。实施例中的细节并不构成对本发明范围的限制,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案的等效变换、简单替换等显而易见的改变,均落在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1