一种基于标准输入输出验证的实时fpga错误检测方法

文档序号:648722 发布日期:2021-05-14 浏览:6次 >En<

阅读说明:本技术 一种基于标准输入输出验证的实时fpga错误检测方法 (Real-time FPGA error detection method based on standard input and output verification ) 是由 闫允一 程首豪 高翔 宫江雷 于 2021-01-16 设计创作,主要内容包括:本发明公开了一种基于标准输入输出验证的实时FPGA错误检测方法,其包括以下步骤:一、获取FPGA端各个检测对象模块A中交织伴随电路A`的关键数据信息;二、根据步骤一获取的数据信息计算得到交织伴随电路的处理时间信息、输入数据以及输出数据;步骤三、将步骤一和步骤二得到的数据信息分别导入协处理器端,并对FPGA端各个交织伴随电路状态进行实时监测;四、监测到错误后,依据错误检测方法统计各个交织伴随电路的错误信息并指示检测对象电路中的错误模块。本方法通过协处理器端实时监测硬件平台信息,经实验验证后,可准确检测待测模块电路中是否发生SEU效应,完全适用于FPGA设备中SEU效应的实际探测需求。(The invention discloses a real-time FPGA error detection method based on standard input and output verification, which comprises the following steps: acquiring key data information of an interleaved companion circuit A&#39; in each detection object module A at an FPGA end; secondly, calculating to obtain processing time information, input data and output data of the interweaving companion circuit according to the data information obtained in the first step; step three, respectively importing the data information obtained in the step one and the step two into a coprocessor end, and monitoring the state of each interweaving accompanying circuit of the FPGA end in real time; and fourthly, counting error information of each interweaving companion circuit and indicating an error module in a circuit to be detected according to an error detection method after the error is monitored. The method monitors the hardware platform information in real time through the coprocessor, can accurately detect whether the SEU effect occurs in the module circuit to be detected after experimental verification, and is completely suitable for the actual detection requirement of the SEU effect in FPGA equipment.)

一种基于标准输入输出验证的实时FPGA错误检测方法

技术领域

本发明属于片上系统检测技术领域,具体涉及一种基于标准输入输出验证的实时FPGA错误检测方法,用于对FPGA系统的单粒子效应进行故障检测分析。

背景技术

大规模现场可编程逻辑门阵列(FPGA)因其设计性灵活、开发周期短、成本低等特点,被广泛的应用在航天工程领域,但随着集成电路工艺的不断发展,集成度的不断提高,纳米尺度的集成电路受到高能粒子碰撞引起的逻辑状态翻转或电路失效等系统故障,严重影响了电子设备的可靠性和安全性。因此,针对愈发严重的单粒子效应问题,通过对航空航天等辐射环境FPGA的SEU效应发生的软错误进行检测,以提高FPGA设备运行的可靠性至关重要。

对于高密度的FPGA的各种类型的单粒子效应故障,不少学者提出了相应的检测方法。如郭强等在《SRAM-FPGA抗单粒子翻转方法和预估》中将可编程门阵列作为检测芯片,可编程只读存储器芯片存储屏蔽位文件,通过回读FPGA配置文件并进行校验的方法,检测单粒子效应对电路造成的故障影响;Reviriego等在《Design of SEU-Tolerant TurboDecoders Implemented on SRAM-FPGAs》中提出一种DWC(Duplication With Comparison)的方案来保护turbo解码器;Pavan等在《FPGA Implementation of CRC Error DetectionCode》中提出了一种CRC循环冗余校验错误检测代码,用于检测数据传输和存储过程中的突发错误;Lorena等在《Evaluation of a soft error tolerance technique based ontime and/or space redundancy》中利用多个冗余功能模块的输出信息,通过表决器的多数表决,对不同类型的加法器和乘法器电路进行了TMR、DMR设计,并分析了这些电路所带来的影响;Suchai等在《An SFS Berger check prediction ALU and its application toself-checking processor designs》中提出了Berger校验法,通过运算输入数据和输出结果的检验标志,将运算结果与预期结果对比后对模块是否错误进行判定。

但是对于信号处理功能的FPGA功能模块,回读法、DWC、EDC等方法的检测范围有限,并且无法实时监测信号处理模块运算单元的故障;而TMR、DMR、Berger/余数联合校验方法在检测关键运算单元时的资源开销大,检测密度小,且检测电路容易发生错误被掩盖现象。

有鉴于此,本发明人提出了一种基于标准输入输出验证的实时FPGA错误检测方法,以解决上述技术问题。

发明内容

本发明的目的是针对上述现有技术的不足,提出一种基于标准输入输出验证的实时FPGA错误检测方法,通过协处理器端在线实时监测硬件平台信息,用于解决现有技术中存在的检测内容不完备和自身检测电路存在故障被掩盖概率的技术问题。

本发明要解决的技术问题通过以下技术方案实现:一种基于标准输入输出验证的实时FPGA错误检测方法,包括以下步骤:

步骤一:获取FPGA端各个检测对象模块A中交织伴随电路A`的模块编号α、检测输入地址线ψ、输出地址线和算法功能信息γ数据,并将获取的数据信息记录保存;

步骤二:根据步骤一中获取的算法功能信息γ计算得到交织伴随电路的处理时间信息τ、标准输入数据Ι以及输出数据Ο,并将计算得到的数据信息记录保存;

步骤三:将步骤一获取的数据信息和步骤二计算得到的数据信息分别导入协处理器端,并对FPGA端各个交织伴随电路状态进行实时监测;

步骤四:当步骤三中监测到错误后,依据错误检测方法统计各个交织伴随电路的错误信息,并指示检测对象电路中的错误模块;

其中,所述步骤三中交织伴随电路状态实时监测具体步骤为:

步骤3.1:协处理器端初始化平台信息,将标准输入输出数据帧格式的数组Ι、Ο存入DDR中;

步骤3.2:开始执行第k次检测,k=1,2,3…NUM,NUM为测试数组的全部组数;

步骤3.3:通过指针指向的基地址加上(K-1)倍的偏移量取出第K次检测所需的测试数组;

步骤3.4:确定检测模块α;

步骤3.5:向该模块的ψ输入位宽为ω的测试数组Ι;

步骤3.6:读取的处理结果Ο`,与测试数组Ο进行异或;

步骤3.7:若结果为零,继续监测;若结果不为零,则执行步骤四。

进一步地,所述步骤一中交织伴随电路A`通过布局布线,布设到FPGA端硬件设备检测对象电路模块A中;

获取交织伴随电路A`内容的具体方法为:在交织伴随电路开发的文本信息中统计模块所在单元格,并依次编号,根据开发后的硬件架构描述文件提取与交织伴随电路对应的检测地址线;通过文本信息中各个交织伴随电路的算法实现描述,确定算法功能,并记录下来。

进一步地,所述的模块编号α、检测输入地址线ψ、输出地址线的保存形式如下:

α=Moudle_i,{i=1,2,3…N}:该变量代表工程中的第i个交织伴随电路编号,N为整个工程中的交织伴随电路数量;

ψ=Data_addr_in_i,{i=1,2,3…N}:该变量表示第i个交织伴随电路的输入数据地址线,N为整个工程中的交织伴随电路数量;

{i=1,2,3…N}:该变量表示第i个交织伴随电路的输出数据地址线,N为整个工程中的交织伴随电路数量;

所述的交织伴随电路算法功能,分为两种Function_a、Function_b,Function_a通过以{Unit_a1,Unit_a2,…Unit_an}为基本单元,流水线形式组合实现的算法功能,扩展LUT、FF以及布局布线、开关矩、配置存储器的资源用量,Function_b通过以{Unit_b1,Unit_b2,…Unit_bm}为基本单元,流水线形式组合实现的算法功能,扩展BRAM的资源用量;两种算法功能均可独立集成于交织伴随电路中;

所述的各个交织伴随电路模块算法功能信息γ的保存形式如下:

ω=Data_i_width,{i=1,2,3…N}:表示第i个交织伴随电路的输入输出数据位宽,N为整个工程中的交织伴随电路数量;

τ=Moudle_i_time,{i=1,2,3…N}:表示第i个交织伴随电路的处理时间,N为整个工程中的交织伴随电路数量;

δ=Function_a_i[],{i=1,2,3…N}:表示第i个交织伴随电路Function_a功能描述,N为整个工程中的交织伴随电路数量;

ζ=Function_b_i[],{i=1,2,3…N}:表示第i个交织伴随电路Function_b功能描述,N为整个工程中的交织伴随电路数量;

Ι=Data_in_i_{}={in_1,in_2,…in_N},{i=1,2,3…N}:表示输入第i个交织伴随电路位宽为ω的数据集合,N为整个工程中的交织伴随电路数量;

Ο`=Data_out_i_{}={Data_out_1,Data_out_2,…Data_outN}:表示处理输出第i个交织伴随电路位宽为ω的数据集合,N为整个工程中的交织伴随电路数量。

进一步地,所述步骤二中交织伴随电路的处理时间信息τ以及标准输入数据Ι、输出数据Ο具体实现形式为:

Ι=Test_in_i_{}={in_1,in_2,…in_N}:表示输入第i个交织伴随电路位宽为ω的标准数据集合,Ο=Test_out_i_{}={Test_out_1,Test_out_2,…Test_outN}:表示输出第i个交织伴随电路位宽为ω的标准数据集合;N为整个工程中的交织伴随电路数量;通过对α中功能电路δ和功能电路ζ的测试数据以及处理时间的计算,将α测试输入数据Ι、标准测试输出数据Ο以及模块单次处理时间τ记录下来;

所述的标准输入输出数据帧格式为:交互数据位宽ω为32位共4个字节,其中两个字节为检测功能电路δ的测试数据Test_data_a,两个字节为检测功能电路ζ的测试数据Test_data_b。

进一步地,所述步骤三中协处理器为ARM硬件设备,与FPGA检测对象电路模块集成在SOC片上系统,同步部署在工作环境中;

进一步地,所述步骤四错误检测方法具体步骤为:

步骤4.1:ERROR_CHECK写1,开始检测;

步骤4.2:统计模块编号α,并记录错误模块编号α`;

步骤4.3:统计错误数据出现在字节中的位置μ,并记录;

步骤4.4:计算测试数据与处理数据的汉明距离,记录下该模块出现的错误数据的数量λ;

步骤4.5:计数模块单次处理时间,记录模块处理是否超时ν;

步骤4.6:ERROR_CHECK写0,返回步骤三继续监测;

所述步骤四中错误信息记录形式如下:

α`表示检测对象电路错误模块编号;

λ表示检测对象电路错误模块内处理数据的错误数量;

μ=Test_k_Moudule_i_Byte_c_Bit_d[k,I,c,d]表示第k次检测中,第i个检测对象电路模块的第c个字节第d位出现错误;

ν=Test_k_Moudule_i_time_ν[ν]表示第k次检测中,第i个交织伴随电路处理是否超时。

与现有技术相比,本发明具有如下有益效果:

本发明通过电路模块监测方法和错误检测方法对FPGA设备中功能模块发生单粒子效应的错误检测,相比TMR、DMR方法减少了检测电路在FPGA设备中具备软错误被掩盖的可能性;由于本发明中FPGA设备功能电路的资源量可扩展,因而相比于CRC循环冗余校验检测方法,能够更全面的检测到FPGA设备中功能模块电路所在物理地址上发生的单粒子翻转效应。本发明方法可实现在线实时检测模块电路中是否发生SEU效应,能够适用于FPGA设备中SEU效应的实际探测需求,以保证FPGA设备运行的可靠性。

附图说明

图1为本发明基于标准输入输出验证的实时FPGA错误检测方法流程图;

图2为本发明用于测试交织伴随电路的标准输入输出数据帧格式图;

图3为本发明交织伴随电路状态监测流程图;

图4为本发明错误检测方法流程图。

具体实施方式

为使本发明所解决的技术问题、技术方案及有益效果更加清晰,以下结合附图及实施例,对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不限定本发明,详细说明如下。

本发明提出一种基于标准输入输出验证的实时FPGA错误检测方法,本方法通过获取在检测对象电路模块中布设的交织伴随电路的开发文本信息;计算得到测试交织伴随电路所需的标准输入输出数据;在工作环境中,标准输入数据经过交织伴随电路处理后得到处理输出数据;协处理器端通过将处理数据与标准输出数据做比对,实时监测交织伴随电路出现的错误;当监测到错误出现后,依据错误检测方法统计各个交织伴随电路的错误信息,从而实现对FPGA端各个检测对象模块的错误检测。

如附图1所示,一种基于标准输入输出验证的实时FPGA错误检测方法,其包括以下步骤:

步骤一:获取FPGA端各个检测对象模块A中交织伴随电路A`的模块编号α、检测输入地址线ψ、输出地址线和算法功能信息γ数据,并将获取的这些数据信息记录保存。

其中,交织伴随电路A`通过布局布线,布设到FPGA端硬件设备检测对象电路模块A中;获取交织伴随电路A`内容的具体方法为:在交织伴随电路开发的文本信息中统计模块所在单元格,并依次编号,根据开发后的硬件架构描述文件提取与交织伴随电路对应的检测地址线;通过文本信息中各个交织伴随电路的算法实现描述,确定算法功能,并记录下来。

具体过程为:首先,在交织伴随电路开发的文本信息中统计模块所在单元格,并依次编号,其中:

α=Moudle_i,{i=1,2,3…N}:该变量代表工程中的第i个交织伴随电路编号,N为整个工程中的交织伴随电路数量;

其次,根据开发后的硬件架构描述文件提取与交织伴随电路对应的检测地址线;其中:

ψ=Data_addr_in_i,{i=1,2,3…N}:该变量表示第i个交织伴随电路的输入数据地址线,N为整个工程中的交织伴随电路数量;

{i=1,2,3…N}:该变量表示第i个交织伴随电路的输出数据地址线,N为整个工程中的交织伴随电路数量;

最后,通过文本信息中各个交织伴随电路的算法实现描述,确定算法功能,并记录下来,其中:

所述的交织伴随电路算法功能,分为两种Function_a、Function_b,Function_a通过以{Unit_a1,Unit_a2,…Unit_an}为基本单元,流水线形式组合实现的算法功能,扩展LUT、FF以及布局布线、开关矩、配置存储器的资源用量,Function_b通过以{Unit_b1,Unit_b2,…Unit_bm}为基本单元,流水线形式组合实现的算法功能,扩展BRAM的资源用量;两种算法功能均可独立集成于交织伴随电路中。

所述的各个交织伴随电路模块算法功能信息γ的保存形式如下:

ω=Data_i_width,{i=1,2,3…N}:表示第i个交织伴随电路的输入输出数据位宽,N为整个工程中的交织伴随电路数量;

τ=Moudle_i_time,{i=1,2,3…N}:表示第i个交织伴随电路的处理时间,N为整个工程中的交织伴随电路数量;

δ=Function_a_i[],{i=1,2,3…N}:表示第i个交织伴随电路Function_a功能描述,N为整个工程中的交织伴随电路数量;

ζ=Function_b_i[],{i=1,2,3…N}:表示第i个交织伴随电路Function_b功能描述,N为整个工程中的交织伴随电路数量;

Ι=Data_in_i_{}={in_1,in_2,…in_N},{i=1,2,3…N}:表示输入第i个交织伴随电路位宽为ω的数据集合,N为整个工程中的交织伴随电路数量;

Ο`=Data_out_i_{}={Data_out_1,Data_out_2,…Data_outN}:表示处理输出第i个交织伴随电路位宽为ω的数据集合,N为整个工程中的交织伴随电路数量。

步骤二:根据步骤一中获取的算法功能信息γ计算得到交织伴随电路的处理时间信息τ、标准输入数据Ι以及输出数据Ο,并将计算得到的数据信息记录保存;其中:

交织伴随电路的处理时间信息τ以及标准输入数据Ι、输出数据Ο具体实现形式为:

通过modelsim建立测试文件,文件包括激励各个交织伴随电路模块的时钟CLK和输入数据I,通过仿真验证得出标准输出数据O;Ι=Test_in_i_{}={in_1,in_2,…in_N}:表示输入第i个交织伴随电路位宽为ω的标准数据集合,Ο=Test_out_i_{}={Test_out_1,Test_out_2,…Test_outN}:表示输出第i个交织伴随电路位宽为ω的标准数据集合;N为整个工程中的交织伴随电路数量;对α中功能电路δ和功能电路ζ的测试数据以及处理时间的计算,将α测试输入数据Ι、标准测试输出数据Ο以及模块单次处理时间τ记录下来;

如图2所示,所述的标准输入输出数据帧格式为:交互数据位宽ω为32位共4个字节,其中两个字节为检测功能电路δ的测试数据Test_data_a,两个字节为检测功能电路ζ的测试数据Test_data_b。

步骤三:将步骤一获取的数据信息和步骤二计算得到的数据信息分别导入协处理器端,并对FPGA端各个交织伴随电路状态进行实时监测;

其中,步骤三中协处理器为ARM硬件设备,优选的与FPGA检测对象电路模块集成在SOC片上系统,同步部署在工作环境中,其优点是有利于提高整机的可靠性,并大大简化电路的设计、调试,更为方便的进行片上开发;当然也可选择不集成,从而使系统在设计上灵活多变,降低成本;

协处理器端导入FPGA交织伴随电路的状态信息,包括各个交织伴随电路的标准输入、输出数据线和标准输入输出数据。

协处理器端通过向输入数据线上写标准输入数据,并读出输出数据线上的输出数据,与标准输出数据进行异或,判断计算出的结果是否为零,来实现监测FPGA交织伴随电路模块的实时状态。

如图3所示,所述步骤三中交织伴随电路状态实时监测具体步骤为:

步骤3.1:初始化平台信息,将标准输入输出数据帧格式的数组Ι、Ο存入DDR中;

步骤3.2:开始执行第k次检测,k=1,2,3…NUM,NUM为测试数组的全部组数;

步骤3.3:通过指针指向的基地址加上(K-1)倍的偏移量取出第K次检测所需的测试数组;

步骤3.4:确定检测模块α;

步骤3.5:向该模块的ψ输入位宽为ω的测试数组Ι;

步骤3.6:读取的处理结果Ο`,与测试数组Ο进行异或;

步骤3.7:若结果为零,继续监测;若结果不为零,则执行步骤四。

步骤四:当步骤三中监测到错误后,依据错误检测方法统计各个交织伴随电路的错误信息,并指示检测对象电路中的错误模块,其中错误信息包括错误模块编号α`、错误数量λ、错误位置μ以及处理时间延迟、超时信息ν等。

其中,当监测到错误后,将错误检测标志拉高,通过协处理器端对异或结果的比特位操作,依据错误数据的地址线指示错误模块编号α`;统计错误数据中不为零的个数指示错误数量λ;记录错误数据中不为零的数据所在地址线的字节和比特位指示错误位置μ。

如图4所示,其中所述步骤四错误检测方法具体步骤为:

步骤4.1:ERROR_CHECK写1,开始检测;

步骤4.2:统计模块编号α,并记录错误模块编号α`;

步骤4.3:统计错误数据出现在字节中的位置μ,并记录;

步骤4.4:计算测试数据与处理数据的汉明距离,记录下该模块出现的错误数据的数量λ;

步骤4.5:计数模块单次处理时间,记录模块处理是否超时ν;

步骤4.6:ERROR_CHECK写0,返回步骤三继续监测;

所述步骤四中错误信息记录形式如下:

α`表示检测对象电路错误模块编号;

λ表示检测对象电路错误模块内处理数据的错误数量;

μ=Test_k_Moudule_i_Byte_c_Bit_d[k,I,c,d]表示第k次检测中,第i个检测对象电路模块的第c个字节第d位出现错误;

ν=Test_k_Moudule_i_time_ν[ν]表示第k次检测中,第i个交织伴随电路处理是否超时。

以下是按照上述方法对第2次检测中,第3个检测对象电路模块测试结果:

标准输出Ο 00111000011010010011011100101010
测试输出Ο` 00110000101010110011010010101000
检测结果 00001000110000100000001110000010

错误信息如下:

错误模块α`=3;

错误数量λ=8;

错误位置μ=

[2,3,1,1],[2,3,1,7],[2,3,2,0],[2,3,2,1],[2,3,3,1],[2,3,3,6],[2,3,3,7],[2,3,4,3];

处理时间延迟、超时信息ν=0(无)。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于在线实时数据的FPGA硬件错误归因分析方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类