APP下载

抗SEU动态刷新FPGA的仿真验证技术研究

2018-05-14祝周荣姜丽梅刘国斌刘芳汝

数字技术与应用 2018年2期

祝周荣 姜丽梅 刘国斌 刘芳汝

摘要:SRAM型FPGA在航天领域有着广泛的应用,配置刷新能提高SRAM型FPGA抗单粒子翻转的能力,目前宇航SRAM型FPGA的抗SEU动态刷新电路设计技术已经较为成熟,但是如何验证其功能正确性,没有给出特殊方法。本文提出四种消除单粒子效应造成的软故障的抗SEU的FPGA設计方式,并重点针对周期性闭环配置刷新方式进行了仿真验证技术研究,找出验证该模式的关键验证要点,供验证人员作为指导。

关键词:FPGA;SEU;动态刷新;SRAM

中图分类号:TN791 文献标识码:A 文章编号:1007-9416(2018)02-0040-03

1 引言

基于SRAM的XilinxFPGA是由配置存储器和受其控制的可配置逻辑资源这两层叠加构成。配置存储器存储着FPGA配置程序,控制着FPGA可配置逻辑资源,包括布线资源、可编程逻辑器件、数字时钟管理单元等[1]。一旦配置存储器被单粒子打翻,就可能造成FPGA功能失效。目前航天设计师通常使用一次性可编程FPGA(Actel的反熔丝芯片)设计一种特殊可进行监控和重配置的抗SEU(单粒子翻转)装置,进行定期全局刷新和局部刷新XilinxFPGA的配置存储器,避免空间的单粒子翻转效应。本文对消除单粒子效应造成的软故障的方式进行介绍,并针对其中最常用的一种抗单粒子翻转装置提出仿真验证方案,验证其单粒子翻转的有效性,给出此类回读刷新设计的验证要点和验证技术方法。

2 消除单粒子效应造成的软故障的方式

基于SRAM的XilinxFPGA中的可重新配置逻辑,虽然给航天系统设计人员带来了灵活性和处理能力,但也是该器件的最大弱点,因此必须针对单粒子效应(SEE)进行妥善加固的话。三模冗余(TMR)的主要作用是存在单位翻转的情况下,确保系统层次的正确操作。正确实现TMR只能保证针对一个或若干配置翻转的设计层次的正确操作。为了预防翻转积累,刷新算法是需要的。强烈建议不要单独使用TMR或刷新。虽然必须考虑设计取舍,当二者同时部署时才能得到最有效的系统级加固。

表1列出了用来消除单粒子效应的常用的加固方法的优缺点。根据实际可靠性要求,对于Xilinx的FPGA可以采用下表所列的方式灵活组合来消除单粒子效应造成的软故障的影响,一般方式1和方式2或方式1和方式3应同时采用应对不同的故障模式,建议至少实现方式4[2]。

3 测试床组成

表1的方式3 由于其设计方法可行,既不中断FPGA 正常工作,对系统功能不影响,又可以及时纠正翻转故障,达到的抗单粒子效应最好,因此被最普遍用于航天产品设计中。该类电路通常是用另一片不易被单粒子翻转的反熔丝FPGA实现,设计的基本思想是对SRAM型FPGA的上电加载过程进行控制,然后通过回读验证技术回读FPGA配置区比特流,判定和定位配置区程序的翻转故障,通过内部SelectMap接口或者JTAG接口对配置区重载配置,从而修复故障[3]。

以一个抗SEU 反熔丝FPGA设计为实例,构建仿真测试床如图1所示,根据需求分析和实际应用场景构建仿真验证测试床,测试床应该与一个真正的PCB电路板一致,保证测试环境的正确性。

仿时钟和复位信号模型设计很简单,用于产生系统工作时钟和上电复位信号。

仿PROM模块仿真模型用于模拟FPGA外部放置SRAM型FPGA程序的PROM器件(通常为XQR17V16芯片),该模型不仅模拟和检测接口时序,内部还开辟了只读空间存放了SRAM型FPGA产品VirtexII系列fpga的配置bit文件。

仿SRAM型FPGA配置区模拟了配置区功能,除了完成接口的时序仿真以外,内部还开辟一块存储空间用于数据文件的存放。

4 验证要点和验证方法

本文针对目前航天主流SRAM型FPGA产品VirtexII系列fpga进行SelectMap接口回读刷新设计的ASIC电路或者FPGA设计,提出仿真验证要点及其验证方法。对FPGA设计先进行需求分析,得到设计的3个功能点:加载控制功能、回读判定功能、刷新重构功能。在该测试床中分别对这3个功能点进行验证,确保设计有效性。

4.1 加载控制功能

上电后,在SelectMap接口方式下,DUT与待刷新FPGA接口信号由DATA[0:7],CCLK,CS_B,RDWR_B等信号构成,接口时序如图2所示[2]。测试内容包括下面3点。

(1)上电复位后,Xilinx FPGA的读写控制信号nwr、片选控制信号ncs为低电平,产生配置时钟cclk,prog_b信号有低电平脉冲,当init_b信号由低电平变为高电平后,应从PROM中读出配置数据,对Xilinx FPGA进行加载。

(2)当done信号变为高电平,Xilinx FPGA加载成功后,如果done信号又变为低电平,prog_b信号会有低电平脉冲,对Xilinx FPGA进行重载。

(3)应有超时判定,超时后done信号还没有变为高电平,prog_b信号会有低电平脉冲,对Xilinx FPGA进行重载。

(4)PROM中存储的配置文件与Xilinx FPGA配置区的数据文件数据应一致。

4.2 回读判定功能

VirtexII系列一个完整的回读流程,包括三部分回读时序:第一部分读取CLB、IOI等,第二部分读取第一部分最后一帧,第三部分读取BRAM INT。以FPGA XC2V3000(XQR2V3000)的SelectMAP回读流程为例,具体回读流程如图3所示,简要的说就是5步:去同步->写回读指令->读Pad Frame->读FPGA配置数据和PROM配置数据->比较回读数据。

根据SelectMap回读时序在测试激励中接收输出的回读指令,并输入回读的FPGA配置数据。需要从以下几个方面进行重点测试:

(1)回读指令正确,针对不同型号的FPGA,使用对应的回读指令;

(2)回读的配置数据大小正确,针对不同型号的FPGA,有对应的配置数据帧长和帧数;

(3)一次完整的回读,Virtex、VirtexIV和VirtexV系列FPGA只发送一次回读指令来回读配置数据,VirtexII系列FPGA要发送3次回读指令来回读3部分不同的配置数据;

(4)回读的配置数据正常时,不会重载;

(5)将回读的配置数据设置成翻转错误,能检测到翻转,并且能够重载被回读的FPGA,需要重点关注每部分回读数据的第一个字节和最后一个字节均应正确被回读;

(6)如果被回读FPGA设计中有SRL16或LUTRAM,针对VirtexII系列FPGA,应该把SRL16或LUTRAM放在特定区域;针对VirtexIV和VirtexV系列FPGA,在回读指令中对控制寄存器中的GLUTMASK_B置为0,避免回读到该部分内容。

4.3 刷新重构功能

一个完整的刷新流程,包括两部分刷新时序:第一部分刷新CLB、IOI等,第二部分刷新BRAM INT,以FPGA XC2V3000(XQR2V3000)的SelectMAP刷新流程为例,流程如图4所示:

在测试床中以读PROM时得到的FPGA配置数据为准,根据SelectMap刷新时序在测试床中接收输出的刷新指令和刷新配置数据。需要从以下几个方面进行重点测试:

(1)刷新指令正确,针对不同型号的FPGA,使用对应的刷新指令;

(2)刷新的配置数据大小正确,针对不同型号的FPGA,有对应的配置数据帧长和帧数;

(3)一次完整的刷新,Virtex、VirtexIV和VirtexV系列FPGA只发送一次刷新指令来刷新配置数据,VirtexII系列FPGA要发送2次刷新指令来刷新2部分不同的配置数据;

(4)刷新的配置数据与从PROM中读取的配置数据应该一致,需要重点关注每部分配置数据的第一个字节和最后一个字节;

(5)如果被刷新FPGA设计中有SRL16或LUTRAM,针对VirtexIV和VirtexV系列FPGA,在刷新指令中同回读一样应对Control register进行设置,避免刷新到该部分内容。

5 结语

验证最求的是零验漏[5],除了上述的从功能结构分解的功能测试点外,还应该从性能、接口、安全和恢复性各方面对设计进行高效和全面的验证,如重载时间、回读周期和刷新周期等性能测试,所有接口时序测试,复位后FPGA的状态等恢复性测试等,在验证之初就应该对每个设计点有细节的认知,从而提前作出决策,提高验证的整体质量。

参考文献

[1]赵刚.基于配置比特流的FPGA容错技术的研究[D].北京化工大学,2013.

[2]王文炎,罗磊,张莹,于庆奎.宇航用SRAM型FPGA应用指南 中国航天科技集团公司标准Q/QJA 20057—2012.

[3]郑晓云,陶淑苹,冯汝鹏,王绍舉.SRAM型FPGA抗单粒子翻转技术研究[J].电子测量技术,2005(01);59-63.

[4]郝亚男,高欣,许仕龙.SRAM型FPGA的SEU容错技术[J].中国集成电路2015,(10):31-36.

[5]黄丽.百万门级专用集成电路的FPGA验证[D].西安电子科技大学,2009.