基于单粒子效应仿真的多点故障注入方法
文献发布时间:2024-01-17 01:27:33
技术领域
本发明涉及单粒子效应,尤其涉及一种基于单粒子效应仿真的多点故障注入方法。
背景技术
随着集成电路技术的不断发展,单粒子效应越来越成为影响宇航工程成功与否的关键因素。目前主流的抗单粒子性能分析方法包括卫星搭载实验、地面加速器实验和计算机仿真模拟。卫星搭载实验和地面加速器实验虽然可以体现宇航处理器对宇航环境的最真实反映,但存在时间周期长、成本高等问题。计算机仿真技术由于分析周期短、成本低的优点,可以作为前两种实验的有效补充手段。
基于计算机仿真技术的抗单粒子性能分析方法按照抽象层次划分主要包括器件级仿真方法、电路级仿真方法和系统级仿真方法。但目前的单粒子效应仿真分析存在速度和精度的取舍问题,器件级和电路级单粒子效应仿真方法虽然仿真精度高,但是难以满足大规模集成电路仿真速度的需求,系统级仿真方法虽然仿真速度快,但是无法反映底层器件的物理机制,同时仿真精度下降。
中国专利CN112329374B提出了一种针对大规模电路的单粒子效应快速仿真方法,其为一种混合仿真分析方法,即故障注入模块采用电路级仿真方法,非故障注入模块采用系统级仿真方法,该方法兼顾了电路级仿真方法的准确性和系统级仿真方法的速度,可以同时满足速度和精度要求。但其在应对大规模集成电路时,故障注入集合的规模过于庞大,为了满足统计学的要求,至少需要验证上万个故障,而传统的单粒子效应仿真方法在一次仿真中仅注入一个故障,需要进行上万次仿真,时间成本高。
随着集成电路设计技术的进步,单个故障导致电路错误的概率已经降低到很低的值,绝大部分故障不会产生错误。因此,传统的单点故障注入方法效率低下。在一次仿真中添加多个故障的方法可以减小需要的仿真次数,降低时间成本。但单粒子效应造成的错误会继续向后传播,无法确定后续注入的故障是否导致错误。因此,这种多点故障注入方法也无法反映电路的抗单粒子性能。目前,如何删减故障注入集合、减少仿真次数成为了主流研究方向。
2018年,Dietrich等人提出大部分单粒子效应导致的错误会被逻辑门掩蔽掉,并基于此提出了一种基于逻辑掩蔽效应删减故障注入集合的方法。文章以寄存器为出发点,记录信号通过的逻辑门以及逻辑门输入输出信号的波形,通过波形判断通过的逻辑门在某些时刻是否会一定掩蔽单粒子效应,从而删减了故障注入集合。但随着集成电路规模的不断增大,此方法需要保存大量的数据去判断逻辑门是否会掩蔽单粒子效应,其存储成本越来越高。
2021年Dun-An Yang等人通过判断寄存器读写时间的方法删减了故障注入集合,文章认为寄存器在读取之后写入数据之前的这一段时间内即使单粒子效应造成错误,也没有其他寄存器读取这个错误的值,因此在这一段时间内单粒子效应不会对电路结果产生影响。文章通过查找寄存器读写的时间点,查找单粒子效应不会导致错误的时间段,删减了故障注入集合。但此方法只能应用在存在读写端口的电路,不能应用在不存在读写端口电路。
2016年Mojtaba Ebrahimi等人采用了一种多点故障注入方法,减小了仿真次数。文章的多点故障注入数量根据错误概率进行选择,并通过不断分组查找的方式进行查找,直至找出所有导致仿真错误的故障。但此方法进行分组查找时,需要保证每一组的故障数量均相同。
发明内容
本发明的目的在于解决传统的单点故障注入方法无法在有效时间内获得足够仿真数据,以及多点故障注入方法需要保证每一组的故障数量均相同的技术问题,从而提供一种基于单粒子效应仿真的多点故障注入方法。
为了实现上述目的,本发明的技术解决方案如下:
一种基于单粒子效应仿真的多点故障注入方法,其特殊之处在于,包括以下步骤:
1】确定需要验证的总故障注入数量;
2】给第一次多点故障注入流程中的故障注入数量赋初值M,并确定其对应的分组方法,M为大于等于2小于等于10的正整数;
3】根据故障注入数量将故障注入到仿真系统中进行仿真,再根据仿真结果判断是否对当前注入故障进行分组;若仿真没有出错,则不分组,执行步骤4】;若仿真出错,且故障注入数量大于1,则通过相应的分组方法对当前注入故障进行分组以获得多个故障组,对获得的多个故障组中的每个故障组进行一次仿真;再根据每个故障组的仿真结果判断是否继续对该故障组进行分组,直至各故障组中包含的注入故障数量均为1,则完成该次多点故障注入流程,并获得错误概率;
4】判断已经验证的故障注入数量是否满足要求;若满足,则结束整个单粒子效应仿真流程;若不满足,则根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法,返回步骤3】,执行下一次多点故障注入流程,获得迭代的错误概率,直至已经验证的故障注入数量满足要求,完成一种基于单粒子效应仿真的多点故障注入。
进一步地,所述仿真采用混合仿真,即故障注入模块采用电路级仿真,非故障注入模块采用系统级仿真。
进一步地,步骤4】中,根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法具体为:
若错误概率为0,则下一次多点故障注入流程中的故障注入数量为上一次多点故障注入流程中的故障注入数量的2倍,分组方法采用三分法或四分法;
若错误概率不为0,则根据当前错误概率确定故障注入数量的上限值,再结合其下限值获得上限值与下限值范围内的多组故障注入数量;对多组故障注入数量分别通过二分法、三分法、四分法以及五分法进行分组,获得多组故障注入数量分别在四种分组方法下的期望仿真次数,进而获得相应的加速比,并将各加速比中的最大值对应的故障注入数量和分组方法作为下一次多点故障注入流程中的故障注入数量和分组方法。
进一步地,步骤4】中,所述故障注入数量的上限值max通过下式确定:
max=1/p
其中,p表示错误概率;
所述故障注入数量的下限值为2或3。
进一步地,步骤2】中,第一次多点故障注入流程中对应的分组方法为三分法或四分法。
本发明还提供了另外一种基于单粒子效应仿真的多点故障注入方法,其特殊之处在于,包括以下步骤:
1】确定需要验证的总故障注入数量;
2】给第一次多点故障注入流程中的故障注入数量赋初值M,并确定其对应的分组方法,M为大于等于2小于等于10的正整数;
3】根据故障注入数量将故障注入到仿真系统中进行仿真,并在仿真过程中加入多个时间检查点,其中添加检查点的时刻根据处理器执行一个完整从读到写的流程需要的时间确定;若仿真没有出错,则执行步骤4】;若仿真出错,且故障注入数量大于1,则找出最早出错时对应的时间检查点,并将其记为检查点1;同时将故障注入时间在检查点1之前和之后的故障分别记为第一故障单元和第二故障单元;
将第二故障单元中的故障注入到仿真系统中进行仿真,并在仿真过程中加入多个时间检查点,若仿真没有出错,则只对第一故障单元进行验证;若仿真出错,且故障注入数量大于1,则找出最早出错时对应的时间检查点,并将其记为检查点2;同时将故障注入时间在检查点1之后检查点2之前和之后的故障分别记为第三故障单元和第四故障单元;
根据故障注入时间分别确定第一故障单元、第三故障单元以及第四故障单元包含的故障数量,再通过相应的分组方法分别对第一故障单元、第三故障单元以及第四故障单元中的故障进行分组,并对相应故障单元中的每个故障组进行一次仿真,再根据相应仿真结果判断是否继续对该故障组进行分组,直至各故障组中包含的注入故障数量均为1,则完成该次多点故障注入流程,并获得错误概率;
4】判断已经验证的故障注入数量是否满足要求;若满足,则结束整个单粒子效应仿真流程;若不满足,则根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法,返回步骤3】,执行下一次多点故障注入流程,获得迭代的错误概率,直至已经验证的故障注入数量满足要求,完成一种基于单粒子效应仿真的多点故障注入。
进一步地,步骤2】中,第一次多点故障注入流程中对应的分组方法为三分法或四分法;
步骤4】中,根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法具体为:
若错误概率为0,则下一次多点故障注入流程中的故障注入数量为上一次多点故障注入流程中的故障注入数量的2倍,分组方法采用三分法或四分法;
若错误概率不为0,则根据当前错误概率确定故障注入数量的上限值,再结合其下限值获得上限值与下限值范围内的多组故障注入数量;对多组故障注入数量分别通过二分法、三分法、四分法以及五分法进行分组,获得多组故障注入数量分别在四种分组方法下的期望仿真次数,进而获得相应的加速比,并将各加速比中的最大值对应的故障注入数量和分组方法作为下一次多点故障注入流程中的故障注入数量和分组方法。
进一步地,步骤3】中,第一故障单元、第三故障单元以及第四故障单元的故障分组方法具体为:
通过加入时间检查点的方法获得多组故障注入数量分别对应的第一故障单元、第三故障单元以及第四故障单元,并通过二分法、三分法、四分法以及五分法分别对相应的多个第一故障单元、第三故障单元以及第四故障单元进行分组,获得多个第一故障单元、第三故障单元以及第四故障单元分别在四种分组方法下的期望仿真次数,进而获得相应的加速比,将多个第一故障单元、第三故障单元以及第四故障单元获得的加速比中的最大值分别对应的分组方法分别作为第一故障单元、第三故障单元以及第四故障单元的分组方法。
进一步地,所述仿真采用混合仿真,即故障注入模块采用电路级仿真,非故障注入模块采用系统级仿真。
进一步地,步骤4】中,所述故障注入数量的上限值max通过下式确定:
Max=1/p
其中,p表示错误概率;
所述故障注入数量的下限值为2或3。
本发明相比于现有技术的有益效果如下:
1、相比于现有的多点故障注入方法,本发明提供的一种基于单粒子效应仿真的多点故障注入方法,在基于故障概率选择故障注入数量的同时,还优化了分组方法,通过特定的分组查找方式确定单个故障是否导致错误,解决了不能判断单个故障是否导致错误的问题,在保证准确率的前提下,减小了仿真次数,节约了时间成本;同时优化的分组方法考虑了故障注入数量无法被均分的情况,在选择故障注入数量时,不需要保证每组的故障数量均相同,使用简单方便,适用性强,可以广泛应用在各种规模的宇航处理器中。
2、相比于现有的删减故障注入集合的方法,本发明提供的一种基于单粒子效应仿真的多点故障注入方法,不需要存储大量的数据,且可以适用于宇航处理器中不同类型的电路。
3、本发明提供的一种基于单粒子效应仿真的多点故障注入方法,在仿真中加入检查点,将第一层故障分成第一故障单元、第三故障单元以及第四故障单元,并确定每一个故障单元的第一层故障注入数量,再通过加速比就可以确定第一故障单元、第三故障单元以及第四故障单元的分组方法,从而查找错误故障,直至每个故障单元的查找流程都结束,本发明通过加入检查点的方法可以减小第一层故障注入数量,从而进一步减少仿真次数,大大降低了时间成本。
4、本发明提供的一种基于单粒子效应仿真的多点故障注入方法,仿真方法使用了混合仿真,故障注入模块采用电路级仿真,非故障注入模块采用系统级仿真,兼顾了电路级仿真方法的准确性和系统级仿真方法的速度,在减少仿真次数的同时满足了速度和精度要求。
附图说明
图1为本发明一种基于单粒子效应仿真的多点故障注入方法中单粒子效应混合仿真的故障注入方法示意图;
图2为本发明一种基于单粒子效应仿真的多点故障注入方法实施例一的流程示意图;
图3为本发明实施例一步骤3】一次多点故障注入流程中每一层的执行流程图;
图4为本发明实施例一在第一层故障注入数量为9、错误故障数量为1时采用三分法对应的层次结构图;
图5为本发明实施例一在第一层故障注入数量为9、错误故障数量为2时采用三分法对应的一种层次结构图;
图6为本发明实施例一在第一层故障注入数量为9、错误故障数量为2时采用三分法对应的另一种层次结构图;
图7为本发明一种基于单粒子效应仿真的多点故障注入方法实施例二的流程示意图;
图8为本发明实施例二步骤4】中确定下一次多点故障注入流程中的故障注入数量和分组方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
本发明的发明构思为:通过器件级仿真结果得到瞬态电流源模拟单粒子效应的影响,利用分段线性描述的方法将瞬态电流源添加到电路节点中。如图1所示,本发明中的仿真优选采用混合仿真,即故障注入模块采用电路级仿真,非故障注入模块采用系统级仿真,这种仿真方法兼顾了电路级仿真方法的准确性和系统级仿真方法的速度,可以同时满足速度和精度要求。在一次仿真中添加多个故障,故障注入的数量根据错误概率进行选择。如果仿真没有出错,则证明该次仿真注入的故障均不会导致仿真出错,从而减小了仿真次数;如果仿真出错则对故障进行分组查找,直至找出所有导致仿真错误的故障。
一种基于单粒子效应仿真的多点故障注入方法,如图2所示,具体包括以下步骤:
1】确定需要验证的总故障注入数量;一般仿真中需要验证的总故障注入数量的给定值为10
2】给第一次多点故障注入流程中的故障注入数量赋初值M,即选择第一次多点故障注入流程中的故障注入数量,同时确定第一次多点故障注入流程中对应的分组方法,本发明中可以使用二分法或三分法或四分法或五分法,即将故障尽可能的平均分成2或3或4或5组,本实施例中优选三分法或四分法。由于需要通过第一次多点故障注入的错误率作为初始的错误概率,因此,需要尽可能地保证第一次多点故障注入流程中的故障注入数量不包含错误故障,可以保守地选择一个较小的值,本发明中通常选择大于等于2小于等于10的正整数作为第一次多点故障注入流程中的故障注入数量。
3】根据故障注入数量将故障注入到仿真系统中进行仿真,将此次仿真结果与无故障注入的仿真结果进行对比,并根据对比结果判断是否对当前注入故障进行分组。
若此次仿真结果没有出错,则证明注入的故障均不会导致仿真出错,则不分组,执行步骤4】;若此次仿真结果出错,且故障注入数量大于1,则通过相应的分组方法对当前注入故障进行分组,将分成的每一组都称为故障组,即获得多个故障组。本发明中将每次多点故障注入流程中初次注入的故障称为第一层故障,将第一层故障分组后的故障组放入下一层,称为第二层故障,以此类推。如图3所示,第一层故障仿真结束后,再对第二层故障中的所有故障组进行仿真,并根据每个故障组的仿真结果判断是否继续对该故障组进行分组;具体的,如果故障组中的故障数量为1,就可以通过仿真结果判断该故障是否会导致仿真出错,不需要对该故障组进行分组,如果故障组中的故障数量大于1,则继续通过相应的分组方法对当前故障组中的故障进行分组,直至各故障组中包含的注入故障数量均为1,表明一次多点故障注入流程结束,则执行下一次多点故障注入流程,并获得错误概率。
4】判断已经验证的故障注入数量是否满足要求,若满足,则结束整个单粒子效应仿真流程,若不满足,则根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法,返回步骤3】,执行下一次多点故障注入流程,获得迭代的错误概率,直至已经验证的故障注入数量满足要求,完成一种基于单粒子效应仿真的多点故障注入。
当错误故障数量为0时,故障注入数量越多一次仿真可以验证的故障数量就越多,可以减小更多的仿真次数。由此可以看出,第一层故障中包含的错误故障数量越多,完成一次多点故障注入流程需要的仿真次数就越多,因此要控制错误故障的数量,这与错误概率相关。
经过上述分析,根据当前错误概率可以选择下一次多点故障注入流程中最优的故障注入数量和分组方法。具体的,根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法具体为:
若错误概率为0时,表明没有错误故障,此时需要的仿真次数最少,为了保证仿真速度可以达到最快,需要将本次多点故障注入流程中的故障注入数量翻倍作为下一次多点故障注入流程中的故障注入数量。因此本实施例中下一次多点故障注入流程中的故障注入数量为上一次多点故障注入流程中的故障注入数量的2倍,具体的,第二次多点故障注入流程中的故障注入数量为2M,第三次多点故障注入流程中的故障注入数量为4M,以此类推;第二次多点故障注入流程中的故障注入数量为2M,第三次多点故障注入流程中的故障注入数量为4M,在本发明的其他实施例中也可以根据情况选择翻倍倍数为3倍。错误概率为0时,下一次多点故障注入流程中相应的分组方法采用三分法或四分法。而
若错误概率不为0,则根据当前错误概率可以确定第一层故障数量选择的上限,错误概率和最优的第一层故障数量乘积应该小于1。具体故障注入数量的上限值max通过下式确定:
max=1/p
其中,p表示错误概率。
例如,错误概率为0.01时,用1除以错误概率0.01,即获得故障注入数量的上限值为100;第一层故障数量的下限值一般通过经验选择2或3,再结合其下限值获得上限值与下限值范围内的多组故障注入数量,例如,当上限值为100,下限值为2时,对故障注入数量为2,3,4…100的99组故障注入数量分别通过二分法、三分法、四分法以及五分法进行分组,获得99组故障注入数量分别在四种分组方法下的期望仿真次数,进而获得99组故障注入数量分别在四种分组方法下的加速比,并将各加速比中的最大值对应的故障注入数量和分组方法作为下一次多点故障注入流程中的故障注入数量和分组方法。上述故障注入数量表示相应多点故障注入流程中的第一层故障注入数量。
基于上述原理介绍,除第一次多点故障注入流程外的每次多点故障注入流程中,均需要通过各故障注入数量分别在四种分组方法下的加速比确定第一层故障注入数量和分组方法,以下内容具体介绍如何计算加速比。
将导致仿真出错的故障称为错误故障,每次多点故障注入流程中的第一层故障注入数量和分组方法均与故障注入数量中的错误故障数量有关。
假设一次多点故障注入流程中的第一层故障注入数量为k,故障导致的错误概率,即故障概率为p,通过公式(1)得到错误故障数量为i时的概率为:
P(i)=c(k,i)*p
公式(1)为二项式定理,c(k,i)表示错误故障数量为i时二项式定理对应的系数。
理论上错误故障的数量可以从0到k,因此一次多点故障注入流程需要的仿真次数sum为:
其中,R(k,i)表示第一层故障数量为k,错误故障数量为i时需要的仿真次数。如果错误故障数量为0,则需要的仿真次数一定为1。
在已知第一层故障注入数量和错误故障数量的情况下,只需要确定分组方法便可以计算R(k,i)。确定分组方法需要得到本次多点故障注入流程的完整层次结构,层次结构指本次多点故障注入流程执行的层数、每一层包含的故障组数量和每一个故障组包含的故障数量。与步骤3】中流程有所不同的是,为了得到完整的层次结构,需要假设每次仿真都会出现错误,因此只要故障数量大于1便会进行分组,直至某一层中所有故障组的故障数量均为1。
本发明在计算加速比过程中一共采用了四种分组方法,即二分法、三分法、四分法、五分法。分组方法不同,分成的故障组的数量和故障组包含的故障数量也不相同,因此分组方法不同得到的层次结构也不相同,对于相同数量的第一层故障,使用不同的分组方法可以得到四种层次结构。值得说明的是,故障数量可能不会被整分,分组时需要保证每一个故障组的故障数量尽可能相同,比如,若故障数量为7,同时采用三分法分组,那么分组后每个故障组中的故障数量分别为3、2、2,若故障数量为3,同时采用四分法分组,那么分组后每个故障组中的故障数量分别为1、1、1,没有第四个故障组。为了更清楚的说明本发明的分组方法,以下以第一层故障注入数量为9为例进行说明:当错误故障数量为0时,不用进行分组,只需要一次仿真便可以验证9个注入故障,提高了一次仿真的效率;当错误故障数量为1且分组方法为三分法时,如图4所示,为对应的一次多点故障注入流程得到的层次结构图,其中第一层仿真结果错误,需要对第一层故障进行分组,由于采用三分法,第二层为三个故障组,每个故障组的故障数量为3,同时由于三个故障组中只有一个故障组包含错误故障,既第二层的三次仿真只有一次仿真结果错误,所以第三层有三个故障组,剩下的流程同理,一共需要的仿真次数为7次;当错误故障数量为2、分组方法为三分法且2个错误故障位于同一个故障组中时,时,如图5所示,为对应的一次多点故障注入流程得到的层次结构图,其一共需要的仿真次数为7次;当错误故障数量为2、分组方法为三分法且2个错误故障分别位于不同的故障组中时,如图6所示,为对应的一次多点故障注入流程得到的层次结构图,其一共需要的仿真次数为10次;上图4-图6中的椭圆形表示错误故障,方形表示不会导致出错的故障。
接下来再通过以下推导确定哪个分组方法需要的仿真次数最少,进而选择最优的分组方法。
一个故障组包含错误故障的概率如公式3所示:
其中,m
一旦一个故障组包含错误故障,便需要对该故障组进行分组,分组则需要额外的仿真。额外仿真的次数取决于分组方法,如果采用二分法则为两次,三分法则为三次。故障数量为1时不会进行额外仿真。如果故障数量为3同时采用四分法分组,额外仿真数量为3。
将所有的故障组需要的额外仿真次数进行相加,就得到了错误故障数量为i时需要的仿真次数,如公式4所示:
其中,H表示总的层数,M
再通过公式6计算加速比speedup:
基于加速比便可以选择最优的第一层故障注入数量和分组方法。
相比于现有的多点故障注入方法,本发明基于故障概率选择故障注入数量时,优化了分组方法,在减少了仿真次数的基础上,考虑了故障数量无法被均分的情况,在选择故障注入数量时,不需要保证每组的故障数量均相同。
基于上述分析,第一层故障注入数量中错误故障数量越多,需要的仿真次数就越多,而第一层故障注入数量是基于错误概率进行选择的,通过计算可以得到第一层故障中错误故障数量小于等于3的概率为99%以上,具体见表1。
表1
因此本发明还提供了另一种基于单粒子效应仿真的多点故障注入方法,其与实施例一的不同之处在于步骤3】和步骤4】:
3】如图7、图8所示,根据故障注入数量将故障注入到到仿真系统中进行仿真,并在仿真过程中加入多个时间检查点,本发明中根据宇航处理器执行一个完整从读到写的流程需要的时间确定添加检查点的时刻。若仿真没有出错,则执行步骤4】;若仿真出错,且故障注入数量大于1,则找出最早出错时对应的时间检查点,并将其记为检查点1;同时将故障注入时间在检查点1之前和之后的故障分别记为第一故障单元和第二故障单元。
将第二故障单元中的故障注入到仿真系统中进行仿真,并在仿真过程中加入多个时间检查点,若仿真没有出错,则证明第二故障单元不包含导致仿真出错的故障,只需要对第一故障单元进行验证;若仿真出错,且故障注入数量大于1,则找出最早出错时对应的时间检查点,并将其记为检查点2;同时将故障注入时间在检查点1之后检查点2之前和之后的故障分别记为第三故障单元和第四故障单元。
根据故障注入时间分别确定第一故障单元、第三故障单元以及第四故障单元包含的故障数量,再通过相应的分组方法分别对第一故障单元、第三故障单元以及第四故障单元进行分组,并对相应故障单元中的每个故障组进行一次仿真,再根据相应仿真结果判断是否继续对该故障组进行分组,直至各故障组中包含的注入故障数量均为1,则完成该次多点故障注入流程,并获得错误概率。
其中,第一故障单元、第三故障单元以及第四故障单元的故障分组方法具体为:
通过加入时间检查点的方法获得对应的第一故障单元、第三故障单元以及第四故障单元及第一故障单元、第三故障单元以及第四故障单元中分别包含的故障数量;通过二分法、三分法、四分法以及五分法分别对第一故障单元、第三故障单元以及第四故障单元进行分组,获得第一故障单元、第三故障单元以及第四故障单元分别在四种分组方法下的期望仿真次数,进而获得相应的加速比,即第一故障单元、第三故障单元以及第四故障单元分别对应四个加速比。
将第一故障单元获得的四个加速比中的最大值对应的分组方法作为第一故障单元的分组方法,将第三故障单元获得的四个加速比中的最大值对应的分组方法作为第三故障单元的分组方法,将第四故障单元获得的四个加速比中的最大值对应的分组方法作为第四故障单元的分组方法。
4】判断已经验证的故障注入数量是否满足要求;若满足,则结束整个单粒子效应仿真流程;若不满足,则根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法,返回步骤3】,执行下一次多点故障注入流程,获得迭代的错误概率,直至已经验证的故障注入数量满足要求,完成一种基于单粒子效应仿真的多点故障注入。其中,根据当前错误概率确定下一次多点故障注入流程中的故障注入数量和分组方法与实施例一相同。
本发明中由于第一层故障数量是根据错误概率得到的,错误故障数量不会出现特别大的值,而每查找一次检查点便需要一次额外的仿真,查找次数过多可能会使仿真次数增加,因此本方案查找了两次检查点,即检查点1和检查点2,不考虑查找多次检查点。而检查点1和检查点2存在与否,取决于错误故障数量,检查点1的存在要求错误故障数量大于等于1,检查点2的存在要求错误故障数量大于等于2,即第一故障单元、第三故障单元以及第四故障单元存在与否,取决于第一层故障中导致仿真出错的故障数量,第一故障单元的存在必须保证导致仿真出错的故障数量大于等于1,第一故障单元、第三故障单元、第四故障单元的存在必须保证导致仿真出错的故障数量至少大于等于2。如果错误故障数量为0,只需要一次仿真便可以判断,不需要查找检查点。假设一次多点故障注入流程中第一层故障注入数量为27个,通过加入检查点将故障分成第一故障单元和第二故障单元,考虑到大部分情况下错误故障的数量为0和1,在此以错误故障数量为1举例,此时只存在检查点1和第一故障单元,第二故障单元通过仿真结果可以判断不包含错误故障。这样第一故障单元的数量一定小于27,假设数量为15,这样只需要从15个故障中去查找错误故障,而不是从27个故障中查找错误故障,可以减小仿真次数,提高仿真效率。
本实施例通过加入检查点的方法代替实施例一的分组方法,可以将第一层故障分成第一故障单元、第三故障单元以及第四故障单元,并且可以确定每一个故障单元中包含的故障注入数量,即每个故障单元的第一层故障注入数量。再通过加速比就可以确定第一故障单元、第三故障单元以及第四故障单元的分组方法,从而查找错误故障,直至每个故障单元的查找流程都结束。本实施例中通过加入检查点的方法可以减小第一层故障注入数量,从而进一步减少仿真次数,大大降低了时间成本。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 针对寄存器注错单粒子效应仿真的等效遍历故障注入方法
- 一种基于单粒子效应的故障注入方法