一种基于SRAM型FPGA敏感因子的功能失效时间评估方法与流程

文档序号:13981890阅读:424来源:国知局
一种基于SRAM型FPGA敏感因子的功能失效时间评估方法与流程

本发明提供一种sram型fpga的功能失效时间评估方法,它涉及到fpga故障注入试验及加固容错措施,属于fpga防护容错技术领域。



背景技术:

fpga具有高性能、可重构的特点,广泛运用于航空机载电子设备中,而静态随机存取存储器(sram)对大气中子引发的单粒子效应天生敏感。带有复杂存储结构微电子器件的飞行器在自然环境中会遭遇大气中子,这些高能中子作用于核心指令控制单元和关键数据存储单元上,在存储单元上产生软错误或硬故障,最终引起系统故障。航电系统的安全性要求很高,辐射效应引发的故障会大幅的降低航电系统的安全等级。

随着工业技术迅速发展,sram型fpga在工艺方面也发生了改变,工作频率的上升、特征尺寸的减小都使得单粒子效应表现形式越来越复杂。在大气中子环境下,sram型fpga器件工作频率的上升、特征尺寸的减小使得大辐射效应潜在的危害越来越大,器件在抗辐射效应危害方面的能力不断下降。从上世纪80年代开始,sram存储器每一位的单粒子翻转截面变化都不大,但sram器件的集成度从以前的几十k发展到了如今的几个g,这样计算每个器件的翻转率将比原来大了几万倍。对于工作在地面附近和高纬度航空高度的集成度密集的航空器,大气中子辐射效应是诱发器件发生软错误最主要的原因,引起了人们的广泛关注。

研究器件在辐射效应环境下的工作状态,采用辐射效应故障测试方法是最有效的一种方法。目前主要的辐射效应测试研究方法有卫星搭载实验、高能粒子辐照实验、单粒子故障注入试验。单粒子故障注入试验是一种模拟实验,将单粒子效应产生的软故障注入到器件中,该方法要与器件在真实环境中的故障发生时空分布特性相一致,并且对动态注入的并发性有一定的要求。单粒子故障注入的主要研究内容主要是尽可能的模拟单粒子翻转发生的真实情况,以及故障注入配置所限制的动态并发注入技术问题和实验方法的推广应用。目前利用各种微处理器器件作为实验控制中枢的故障注入技术已经十分普遍了,这种实验系统通过故障注入软件可以很快地对被测件执行故障注入试验。美国很多大学已开发出一系列的故障注入工具,cmu大学开发的fiat,illinois大学开发的fine工具,msu大学的doctor、texas大学的ferrari,另外葡萄牙coimbra大学开发的xception等等都是一些成熟的故障注入工具软件。国内方面对故障注入工具软件的开发也开展了相关工作,哈尔滨工业大学的杨孝宗教授也进行故障注入技术研究,并将研究成果用于容错计算。

sram型fpga中单粒子辐射加固措施分为两大类,冗余设计技术和故障修复技术,而故障修复技术最有效的是定时刷新技术,冗余技术中最有效的方法是三模冗余(tmr)。作为一种容错技术,三模冗余能对单个模块进行冗余,屏蔽单个模块失效对整个系统功能造成的影响;定时刷新是一种纠错技术,刷新后可以消除受单粒子影响的故障,避免故障在器件中累积传播。但是实际上纠错是发生在出错以后,无法避免单粒子辐射效应引起的故障。防护与纠错相互互补,理论上在同时使用三模冗余及定时刷新时,可以基本消除单粒子辐射效应对fpga系统功能的影响。

本发明利用遍历式单粒子故障注入方法,对搭载有功能电路的fpga进行功能失效时间评估,提高了预测精度和运算效率,具有较好的可行性和推广价值。计算功能电路时间参数,为单粒子加固提供数据上的支持。



技术实现要素:

本发明的目的是提供一种基于sram型fpga敏感因子的功能失效时间评估方法,能够更加快捷、准确地进行搭载有具体功能电路的fpga功能失效时间进行评估,为fpga使用中的防护加固提供支持,验证三模冗余设计的效率,计算定时刷新技术中的刷新周期。

该方法的技术流程如附图1所示,具体步骤如下:

步骤一:对sram型fpga的配置网表文件进行解析,采用selectmap配置方法,利用可重构技术设计一套遍历式单粒子故障注入方法;

步骤二:对fpga进行功能电路配置,并对搭载有具体功能电路的fpga实施遍历式故障注入试验;

步骤三:收集敏感位数据,利用敏感位数据验证三模冗余设计的效率,并计算功能电路的敏感因子;

步骤四:利用敏感因子计算功能电路的功能失效时间。

其中,步骤一所述的“对sram型fpga的配置网表文件进行解析”,其具体实现过程如下:

在fpga配置过程中,通过布局布线会得到网表文件(.ncd),该文件包含了电路结构设计的相关配置信息。该文件有fpga的物理配置信息,对进一步分析fpga资源及其配置位与单粒子翻转失效的关系有很大帮助,因此对该网表文件进行解析是有必要的。

ncd文件是由0-1组成的二进制格式,需要通过xdl工具,将其转换为易于解读的文本格式,xdl格式与ncd格式的信息量是相同的,但是xdl格式简单,易于解析,不用对照相关文档就能通过名称直观的理解各符号的意义。

通过xdl工具转换后,得到xdl文件,xdl文件由两个语言模块构成,分别为instance与net。一个instance语言模块描述一个clb或iob中的slice的相关设置信息,一个instance语言由三部分组成,第一部分是instance“name”“type”,定义一个slice的状态,“name”为slice命名,“type”表明slice类型,例如iob时“type”处就是“iob”;第二部分是placed“tile”“site”,“tile”描述了该slice在fpga中排列坐标的位置,“site”指定了slice的具体位置;第三部分是cfg“string”,“string”描述slice内部控制资源配置位的使用情况。instance语言模块的应用例子如下:

inst"c0""iob",

placedriois_x35y1p107,

cfg"driveattrbox::12drive_0ma::#offgtsattrbox::#offibuf_delay_value::#off……";

该slice类型是iobslice,命名为c0;所处的位置在35行第1列,对应p107引脚;cfg字符串描述了该slice中内部控制位的使用情况,#off表示该控制位并没有被使用。

net描述了连线资源的使用情况,一个net语言模块至少要有一个input输入端、多个可编程开关及一个outpin输出端。net也可以分为三个部分,第一部分是net“name”“type”,“name”与“type”分别是名称与连线类型,“type”为”power”时表示电源线,“ground”表示地线,”wire”或者为空时,都是一般连接线;第二部分是outpin“name”“pin”,inpin“name”“pin”,该部分定义了输入输出的端口;第三部分是pip“tile”“wire0“”dir“”wire1“,描述了连线与连线之间之间通过pip互连的状态。net语言模块的应用例子如下:

net"c0_obuf",

outpin"s_obuf"y,

inpin"c0"o1,

pipclb_x34y1s2end5->e2beg3,

pipclb_x34y3y2->s2beg5,

pipriois_x35y1e2mid3->iois_g3_b1,

该net的名称为c0_obuf,输出端是s_obuf,输入端是c0,通过三个pip完成这部分的连线。

通过对网表文件语法的解析,对fpga的配置过程进行了深入的了解,也明确了fpga中各个配置位单元的功能。

其中,步骤一所述的“利用可重构技术设计一套遍历式单粒子故障注入方法”其具体实现过程如下:

通过修改配置文件中的单帧数据完成对配置位的位翻转,用selectmap配置模式将修改后的内容刷新到运行中的fpga上,完成动态部分重构,实现配置存储器的人为逻辑翻转。向两块fpga施加测试向量,并对比fpga的功能输出结果,以此来判断配置位的翻转是否引起了fpga系统功能失效。故障注入可以理解为一种人为的加速失效过程,用来检测sram型fpga执行某种功能的稳定性。

故障注入方案如附图2所示,需要使用到三块fpga,作为控制及对比的主控fpga,需要进行测试的待测fpga以及用于对比输出结果的对比fpga。主控fpga是控制实验流程的中枢,负责待测fpga与对比fpga的部分重构、测试向量输入、结果比较与上位机软件通信;对比fpga作为待测fpga的对比,提供正确的逻辑功能输出;待测fpga作为测试平台,负责运行故障注入后的电路设计,输出故障注入后的逻辑功能状态。

实验流程如附图3所示。首先由ise软件生成的配置文件分别下载至fpga对应prom中,上电后通过从串模式配置至相应的fpga中,主控fpga通过selectmap模式配置待测fpga。从第一帧第一位开始进行一次故障注入试验,之后以遍历式的思想,对后面的每一个存储位进行故障注入试验。配置文件涉及到的每一个配置位都可以在sram中定位,因此遍历的对配置位进行翻转,相当于将sram存储单元中的存储位都进行了翻转。主控fpga执行对两个fpga器件的部分重构,将修改后的配置文件以selectmap配置模式载入fpga,完成故障注入。注入完成后,主控fpga开始在两个器件上施加测试向量,一定时钟周期后读取两器件的输出结果,对比并判断是否发生了fpga系统功能失效,并统计次数发送到上位机。每次故障注入结束后,复位待测fpga和对比fpga的运行状态,防止运行状态对后续故障注入结果造成干扰。循环以上步骤,直至遍历完成所有配置存储器位,输出结果。

其中,步骤三所述的“计算功能电路的敏感因子”其具体实现过程如下:

一般在对fpga进行单粒子性能测试时,最直接的方法是采用高能粒子辐照,因此对fpga的抗单粒子翻转能力的定量可以从高能粒子辐照的相关测试参数分析。

在一般辐照试验中,定量评价是使用单粒子翻转截面来评价器件对单粒子效应的敏感程度:

式中,f为垂直入射时单位面积上入射粒子总数,单位是cm-2;n为单粒子翻转事件数;σs为器件单位面积受到单一粒子碰撞一系列连锁现象后,引发单粒子翻转的概率,是fpga固有的属性。

考虑具体配置电路,引入一个动态参量,称为动态翻转截面σd:

式中,e是高能粒子辐照实验中fpga发生系统功能失效的次数,f是入射粒子在单位面积上的通量。配置有功能电路的fpga在运行时,可以使用动态翻转截面来评估器件的失效率。相对的,将σs称为静态翻转截面。

回到失效链,该失效链是建立在已经发生位翻转的前提下,我们把这个前提事件称为事件a,将fpga发生功能失效称为事件b,前提事件a受fpga固有属性的影响,只有当a发生了,才会有可能发生事件b,事件b受到具体配置功能电路属性的影响。

引入一个敏感因子γ来描述单粒子翻转对fpga使用功能造成的影响,将动态翻转截面与静态翻转截面的比例来作为fpga具体使用中发生事件a后出现事件b的度量。

式中,nc为故障注入试验的总次数;ns为发生功能失效的次数,也就是敏感位。敏感因子γ的意义为引起功能失效的单粒子翻转数和总单粒子翻转数的比例。

其中,步骤四所述的“利用敏感因子计算功能电路的功能失效时间”,其具体实现过程如下:

在配置完fpga后的实际使用中,只有当功能电路发生了功能错误后,才能判断该fpga中发生了配置位单粒子翻转,然而这并不能反应出fpga中的真实单粒子翻转情况。为了解决这一情况,基于敏感位提出一种评估平均功能失效时间的方法。

配置完成后的fpga具有一定的功能,当电路功能无法正确执行时,认为fpga发生了功能失效。在只考虑单粒子翻转时,单粒子翻转失效链解释了sram存储单元逻辑翻转引发功能失效的具体过程。针对具体功能电路,fpga所表现出来的功能失效时间及类型是不同的,故障注入试验结果得到的敏感位可以将不同功能电路的功能失效时间相互转换。遍历式的故障注入可以排除非关键配置位的干扰,使得功能失效时间的转换更准确。

通过故障注入试验得到特定功能电路i在某a型号fpga的敏感位是λi,其中i=1,2,…,n,代表n个电路分别配置在同一个型号的fpga上。假设该fpga与电路配置相关的总配置位数量为λ,那么该fpga的单粒子翻转间隔时间ta可以表示为:

其中ti为功能电路i在实际使用中单粒子翻转的平均失效间隔时间,值得注意的是,该方法的基本假设是任意功能电路是配置在同一电路上。

得到fpga实际单粒子翻转情况后,可分析电路j,其中j≠i,也就是当fpga本身的单粒子翻转间隔时间已知时,可通过任意电路j的敏感位λj推算电路j的平均失效间隔时间fftj:

由此可以计算出任意电路配置完成后,fpga的功能失效时间,该时间参数对于定时刷新技术的参数设计有重要的参考价值。

附图说明

附图1为本发明所述方法流程图

附图2为故障注入方案功能框图

附图3为故障注入试验流程图

附图4为selectmap配置时序

附图5为iscas85电路资源占用及敏感位

附图6为iscas85电路tmr设计前后敏感位对比

具体实施方式

下面结合附图和实例1对本发明作进一步的详细说明。

本发明是一种基于sram型fpga敏感因子的功能失效时间评估方法,本实例选取xlinxxcv300系列作为硬件基础,iscas85基准电路作为研究对象,具体方法实施流程如附图1所示,通过以下步骤实现:

步骤一:对sram型fpga的配置网表文件进行解析,采用selectmap配置方法,利用可重构技术设计一套遍历式单粒子故障注入方法。

实现部分重构技术的关键与fpga的配置模式有关,对于xilinx的fpga,常用配置模式有5种,分别是主串模式,从串模式,主selectmap模式,从selectmap模式和边界扫描模式,一般来说,部分重构技术可以通过selectmap模式和边界扫描模式来实现,本文的故障注入使用selectmap模式。

selectmap配置模式是最快速的配置方法,每个时钟周期可读写8位数据,selectmap配置模式通过fpga芯片中一个8位双向数据总线结构执行回读及配置。实现部分重构技术的方法对于故障注入试验十分重要,是故障注入方案的核心技术,这里对selectmap配置相关的引脚做介绍。

与selectmap配置相关的引脚有cclk,rdwr_b,d[0:7],cs_b,busy,m[2:0],prog_b,init_b,done。

cclk为时钟信号,在主模式下cclk是输出信号,从内部产生时钟,在从模式下是输入信号,由外部信号驱动时钟。

rdwr_b控制selectmap配置的读写状态,低电平时写入数据总线,高电平读出到数据总线,cclk上升沿时有效。

d[0:7]是双向数据接口,由rdwr_b控制读写状态,当片选信号cs_b有效时,可以进行读写功能,当cs_b无效时,为高阻态信号。

cs_b是片选信号,决定双向数据接口的使能状态,低电平时使能数据总线,高电平时数据总线被异步中断,变为高阻态。

busy是一个三态输出信号,在配置器件表示总线状态,当busy为高电平时,数据总线当前值被忽略,只有在下一个cclk上升沿且busy为低电平,才能重新载入数据;同样在回读时,busy也表示回读是否有效。当cs_b为1时,busy为高阻态。

m[2:0]用来选定配置模式,主selectmap模式的m[2:0]是011。

prog_b是异步复位信号,低电平时复位整个芯片。

init_b在m[2:0]采样前设置为0可以延迟配置过程;m[2:0]采样后,init_b表示器件crc校验是否出现错误,是一个输出信号,当init_b为1时,无crc错误。

done表示配置完成状态,当信号为1时,配置完成。

selectmap配置时序如附图4所示。

首先prog_b信号设置为0进行复位,之后init_b变为1,表明crc无错误。当cs_b与rdwr_b设置为0时,第一个字节在cclk上升沿写入总线。当busy信号为1时表示总线忙,必须等到busy变为低电平切cclk上升时才能重新写入数据。selectmap配置模式的数据宽度为8位,每一个时钟周期写入一个字节。值得注意的是,rdwr_b与cs_b可在init_b变为1之前或之后任意设置,但是只有在init_b变为1时selectmap接口才有效。如果cs_b在设置时rdwr_b发生跳变,selectmap接口将被中断。通过selectmap配置可以实现fpga的部分重构,并对fpga进行故障注入试验

步骤二:对fpga进行功能电路配置,并对搭载有具体功能电路的fpga实施遍历式故障注入试验。

iscas85是门级网表电路,主要由逻辑门构成,在fpga上对10个组合电路进行配置和分析,并统计其在配置后的所用资源。

表1iscas85测试电路配置与资源信息

从表中可以看出,iscas电路的功能都不同,逻辑门数量由少至多,c2670、c5315、c7552占用的io口资源较多。

本发明采用bl-tmrtool进行三模冗余加固,由于ngc是封闭文件格式,这里需要使用eda软件提供的设计综合工具生成edf格式的网表文件,bl-tmrtool加固过程中所有步骤均使用默认选项。至此可以完成iscas85电路的三模冗余设计。

步骤三:收集敏感位数据,利用敏感位数据验证三模冗余设计的效率,并计算功能电路的敏感因子。

在xlinx的xcv300上配置iscas85电路,按步骤在上位机软件操作并进行故障注入,单次遍历注入故障1595328次,每个测试电路完成故障注入试验时间为9~12小时,结果如附图5所示。

该结果对于fpga配置电路的单粒子翻转影响有以下结论:

(1)fpga发生单粒子失效是由于配置存储器中sram关键单元发生单粒子翻转后,对应的配置电路的相关资源发生错误,映射到用户逻辑层引起逻辑错误,最终导致电路输出结果错误,即单粒子翻转失效链过程。

(2)fpga中配置存储器位中并非使用到了所有存储单元,用户操作功能电路设计值用到了很少的配置位,而其他没有被涉及的单元发生了逻辑翻转也不会引起fpga功能失效。

(3)在fpga配置存储器中,敏感位的数量与fpga内部的资源使用情况相关,资源使用得越多,敏感位越多。

(4)特定fpga功能电路的故障注入试验数据可以为功能电路的使用和加固提供支持,为定时刷新技术的时间参数设计提供参考。结果结合fpga在大气中子环境下的翻转时间,可得出fpga设计失效时间,例如,假设该fpga在某飞行任务中单粒子翻转时间为3小时,那么c6288电路在该环境下的设计失效平均周期为3/0.047512≈63.14小时。那么在此环境下配置有c6288电路的fpga在进行加固设计时,若需要涉及到定时刷新技术,可以以105.24小时作为定时刷新时间的参考。

对完成进行三模冗余设计的iscas85电路,配置并进行实验。得到结果如附图6所示。

该结果有以下结论:

(1)对原电路进行三模冗余设计后,所占用资源相比未进行三模冗余设计的电路资源占用率增加,占用率为原电路的三倍以上。

(2)进行三模冗余设计后,导致电路输出错误的配置位数量大大减少,平均减少了70%以上。

(3)敏感位的分布不只是与逻辑配置位相关,还有大量外围配置位与其他功能配置位会影响电路功能,这些配置位大部分都是在三模冗余设计的过程中带入的新敏感位,例如tmr中的表决器功能配置位。

遍历式故障注入将故障注入到了配置存储器的每一个可配置位,是一种从fpga底层sram单元进行故障注入的方法,这种方法的优点在于准确性高,能正确的反应出配置位逻辑翻转对系统功能的影响。将故障注入试验结果与元胞自动机模型仿真结果对比,对于c6288电路,模型仿真结果得到的敏感因子为9.9729%,故障注入试验结果敏感因子是4.7512%,也就是说模型仿真结果得到的敏感位要比故障注入得到的多,这些多出来的敏感位与电路配置相关,但是逻辑翻转并不会引起系统的功能失效。

从实验结果对比来看,可以将配置存储器的可配置位分为三种:第一种配置位是敏感位,只要配置位的逻辑发生翻转,会引起fpga的功能失效;第二种配置位是与电路配置相关的配置位,在物理上与电路配置有一定的联系,但是翻转时不会引起功能失效,例如lut中不会被查找到的存储单元;第三种配置位与电路配置没有关系,翻转时也不会引起电路功能失效。

故障注入试验验证了单粒子翻转失效链过程,将fpga大气中子辐射效应危害转换到具体功能电路的研究,当单粒子翻转发生在sram敏感单元时,引起电路模块错误,最终导致fpga功能失效。当fpga资源利用率高的时候,敏感位也会随着大幅增加,电路功能越复杂,敏感位就越多。

实验结果为单粒子效应加固措施提供的很大的参考。单粒子效应加固措施最主要的是三模冗余与定时刷新技术,故障注入试验可以直观的验证三模冗余设计后的效果,可以从实验结果中看出敏感位大幅的减小。另外,定时刷新技术的定时刷新时间参数也与fpga功能电路的评估功能失效时间紧密相关,基于敏感位将不同功能电路的时间参数相互转换,可以很大程度上提高定时刷新技术的效率。

步骤四:利用敏感因子计算功能电路的功能失效时间。

设本文故障实验中配置为c432电路的fpga在大气环境下实际使用中,168小时的使用过程中共检测出了λc432次故障翻转,那么可根据实验结果将数据代入式子得到xcv300型号fpga在该大气环境下单粒子翻转的间隔时间txcv300为:

txcv300=68796.0687λc432(6)

若此fpga由于任务需要重新配置为c6288电路,此时可根据故障注入试验结果直接计算配置该功能电路的fpga在该大气环境下运行时,受单粒子翻转影响平均fftc6288时间会发生一次功能故障:

fftc6288=3268.6388λc432(7)

为了减小c6288在实用过程的单粒子翻转的功能故障次数,对其进行了三模冗余设计,设计完成后进行故障注入试验,从实验结果可知敏感位为14520位,由此求出三模冗余后受单粒子翻转影响平均fftc6288_tmr时间会发生一次功能故障:

fftc6288_tmr=626.1527λc432(8)

将fftc6288与fftc6288_tmr对比发现,三模冗余设计后,c6288功能电路单粒子翻转的平均故障时间增加了5.22倍,单粒子防护能力大幅提升。

通过以上步骤获得的结果可对fpga的功能实际使用提供参考,这些信息对具有中断处理要求的fpga功能电路的设计与使用具有重要的参考作用,同时为功能电路的加固设计提供数据支撑,平均功能失效时间可以作为定时刷新技术的时间参数设计的参考,具有重要价值。

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