★北京广利核系统工程有限公司高玉斌,武方杰
关键词:单粒子翻转;FPGA;ICAP;故障注入;仿真
1 引言
目前应用于核电厂的FPGA器件日益增多,而随着FPGA工艺技术的不断发展,小尺寸、高密度及低电压的FPGA芯片越来越多地应用于核电厂数字化仪控系统。根据不同工艺,FPGA芯片可分为SRAM型FPGA、Flash型FPGA和反熔丝FPGA。由于具有密度高、可配置性好、成本低等优势,SRAM型FPGA被广泛应用到核电厂、航天、通信等领域。
在不同应用场景,尤其是核电厂应用场景下,SRAM型FPGA不可避免地会在高能粒子辐射环境下工作,高能量粒子会渗透到FPGA内部[1]。当高能粒子与存储器PN节进行碰撞时,其运动路径上形成瞬态电流,当电流值达到一定程度后会改变PN节的导通和截止状态,引起逻辑状态翻转,产生单粒子翻转,如图1所示。
图1 单粒子翻转示意图
SRAM型FPGA内部包含配置存储区、查找表存储区、块存储区和触发器,如图2所示。
(1)配置存储区(Configuration memory):用于配置FPGA芯片内部电路功能;
(2)块存储区(Block memory):FPGA内部自带的用于存储数据的RAM块;
(3)分布式存储区(Distributed memory):存在于配置逻辑块(Configuration Logic Blocks,CLB)的LUT中,用于存储LUT运行时的数据;
(4)触发器(Flip-Flop):存在于CLB的触发器中。
图2 FPGA内部存储区结构示意图
在四种存储区类型中,配置存储区通常占整个存储区资源的90%以上,美国LosAlamos试验室和Xilinx公司对FPGA的SEU事件中所占比重[2]。如表1所示,从比例上看四种存储区对SEU最敏感的为配置存储区。因而从SEU敏感性的角度考虑,对SEU的防范主要针对配置存储区进行防范,SEU的故障注入也主要针对配置存储区,对其进行SEU测试。
表1 FPGA各个类型存储器在SEU截面比重

本文分析了4种行业内常用的SEU故障注入方法,提出了一种通过XILINX公司提供的SEM核进行SEU故障软注入的方法。该方法较其他方法具有成本低、可控性强、易观测的特点,是一种适合核电厂SRAM型FPGA的经济且有效的SEU故障注入方法。
2 SEU故障注入方法分析
模拟单粒子翻转的故障,一般采用以下四种方式,如表2所示:
(1)现场运行试验:将产品放置到现场运行环境,在真实的环境中进行测试。该方法可真实全面体现SEU环境,能够实现故障注入,覆盖SEU故障检测和处理功能。测试方法不会改变设计,对产品和系统功能没有影响,但需要在现场进行长期的试验,现场很难提供试验条件,试验成本很高,也无法控制一定出现SEU失效,不可执行。
(2)模拟试验:在专门的试验室或试验机构中模拟高能粒子轰击试验。该方法能够覆盖SEU故障检测和处理功能,不会改变被测对象的设计,对产品和系统功能没有影响,但需要获取现场高能粒子数据,制定试验指标,并且需要寻找具有资质和能力的试验室,支付较高的试验费用。因此,该方案技术指标难度大、成本高。
(3)基于故障注入硬件平台方法[3]:自开发一个硬件试验平台,将集成FPGA芯片放置到硬件平台上的被测FPGA位置,用于控制整个故障注入过程的FPGA或MCU通过select-MAP接口将有单bit翻转故障的下装文件下载到被测FPGA内,模拟SEU故障。该方法能够覆盖SEU故障检测和处理功能,但会改变FPGA芯片周边的运行电路,需要设计模拟SEU故障的硬件平台,并且通过select-MAP接口注入单bit翻转故障的逻辑程序,因此较为复杂,成本高、难度大。故障注入硬件平台示意图如图3所示。
图3 故障注入硬件平台示意图
(4)基于IP核的故障注入仿真法:XILINX公司的SEM(Soft Error Mitigation)IP核,除了提供SEU故障检测功能外,为便于测试,也提供了SEU故障注入接口,以保证当发生SEU故障时故障检测和故障处理功能的合理性。该方法能够实现SEU故障注入,覆盖SEU故障检测和处理功能的测试,并且成本低,可操作性强,但需要使能故障注入功能,同时需要增加测试代码(电路)进行IP核的状态转换和故障注入。该方法虽然改变了被测对象的设计,但可以通过将测试电路固化到未使用的空白电路处,实现与被测对象的独立。同时,测试电路仅增加了对正常运行时IP核不使用的故障注入接口,可保证对正常运行逻辑的功能和时序不产生影响。
表2 SEU故障注入方法比较分析表
通过对四种方法的比较分析可以看出,虽然基于IP核的故障注入仿真法是在仿真环境下进行测试,但由于SEU的失效机理明确,失效表现确定,故仿真环境与实际无差别。同时考虑到该方法易于观测,可控性强,成本低,难度低,故本研究采用基于XILINX公司提供的SEM核的故障注入仿真法进行SEU的故障注入,执行SEU故障检测和处理功能的测试。
2 SEU故障注入仿真方法
本文提出的SEU故障注入仿真方法,基于XILINX公司的SEM核实现如图4所示。SEM核是针对配置存储区发生SEU故障时进行故障检测、故障注入、故障纠正和故障分类。四个功能除故障检测外,其他三个功能均可选。SEM核通过ICAP接口不间断地周期扫描FPGA的配置存储区,检测配置存储单元内容和初始值是否一致,如果不一致进行SEU故障报警;如果使能故障注入功能,则会提供故障注入接口;如果使能故障纠错,会针对单个bit的SEU故障进行修正;如果使能分类功能,会将在被用户使用的电路发生SEU还是未被使用的空白电路发生SEU故障进行分类报警。本方法通过SEM核的故障注入接口,注入SEU故障,并通过故障检测标志位显示故障注入成功。
图4 故障注入仿真示意图
2.1 SEU故障注入设计架构
基于SEM核的SEU故障注入方法主要包括:SEM控制内核模块、ICAP配置接口模块、RS232串口控制模块、SEU故障注入控制模块和状态输出模块,如图5所示。
图5 故障注入设计架构图
(1)SEM控制内核模块:检测和纠正因电离辐射导致FPGA内部配置存储区的非预期状态翻转,共有六组接口:
·故障注入接口:通过该接口注入要翻转FPGA内部的配置存储区的任意配置位的地址信息。
·ICAP接口:通过该接口访问FPGA内部的配置存储区,修改配置存储区相应的配置位,也通过该接口扫描配置存储区,以使SEM控制内核进行是否翻转的判定。
·FRAME_ECC接口:当SEM控制内核使能故障纠正功能时,作为接收故障纠正原语模块FRAME_ECCE2输出的故障状态信息,本方法只使能SEM控制内核的SEU故障检测和故障注入功能,故不使用该接口。
·fetch配置帧接口:主要是为SEM控制内核提供一个外部接口,在故障纠错或故障分类时获取外部FLASH或其他设备存储的配置帧。本方法只使能SEM控制内核的SEU故障检测和故障注入功能,故不使用该接口。
·监视接口:主要是提供监视和修改SEM控制内核状态的接口,本方法使用该接口,在SEU故障注入过程中进行内核状态的转变。
·状态显示接口:主要是将SEM控制内核监测SEU故障的必要状态信息通过该接口输出,供用户使用。
(2)SEU故障注入控制模块:将需要翻转的配置存储区的位置数据转化为故障注入接口时序,实现SEU故障数据的注入。
(3)ICAP配置接口模块:读取FPGA内部配置存储区的配置数据,并转化为ICAP接口传递给SEM控制内核,实现配置存储区的扫描。
(4)RS232串口控制模块:实现RS232接口数据转化为SEM控制内核的监视接口数据,对SEM控制内核的状态转化进行控制和监视。
(5)SEU故障状态显示模块:采集SEM控制内核产生的SEU故障状态信息。
通过RS232串口控制整个SEU故障注入的命令顺序,以及SEU故障注入,实现故障注入和故障检测的自动测试。
2.2 SEM控制内核模块设计
SEM控制内核的设计通过调用XILINX提供的IP核实现,在VIVADO工具的PROJECT_MANAGER中的IPCatalog,选择SoftError Mitigation的IP核进行配置。为了能够控制注入SEU故障,需使能故障注入功能,这样生成的SEM控制内核才会提供SEU故障注入接口。该IP核使用的时钟频率在8~100MHz之间,频率越快完成SEU故障检测的时间越短[4]。SEM控制内核配置示意图如图6所示。
图6 SEM控制内核配置示意图
2.3 ICAP配置接口模块设计
SEM控制内核无法直接扫描和监视FPGA内部配置存储区。为了监视配置存储区的配置位是否发生跳变,以及将需要注入的SEU故障数据设置到正确的配置位上,通过调用可访问配置存储区的ICAPE2原语实现对FPGA内部配置存储区的访问。
ICAPE2#(
.DEVICE_ID(32'hFFFFFFFF),
.SIM_CFG_FILE_NAME("NONE"),
.ICAP_WIDTH("X32")
)
example_icap(
.O(icap_o),
.CLK(icap_clk),
.CSIB(icap_csib),
.I(icap_i),
.RDWRB(icap_rdwrb)
);
2.4 SEU故障状态显示模块设计
该模块采集SEM控制内核监测出的故障信息进行显示,包括:
(1)心跳信号(status_heartbeat):表明SEM控制内核处在运行中还是停止运行。在SEU故障发生在SEM控制内核或时钟资源上导致SEM控制内核无法工作的场景下,可通过该信号进行表征。
(2)初始化状态信号(status_initialization):表征SEM控制内核处在初始化状态。
(3)观测状态信号(status_observation):表征SEM控制内核处在观察状态(正常工作状态)。
(4)纠错状态信号(status_correction):表征SEM控制内核在故障纠正状态。
(5)故障分类信号(status_classification):表征SEM控制内核对识别的故障进行分类。
(6)故障注入信号(status_injection):表征SEM控制内核在故障注入过程中。
(7)基本位标志信号(status_essential):表征翻转的配置位为基本位。
(8)不可纠错信号(status_uncorrectable):表征SEM控制内核不能纠错成功的标志。
2.5 SEU故障注入模块设计
故障注入接口包括一个选通使能信号inject_strobe和输入数据总线inject_address[39:0],实现一个简单的并行接口。该接口接收四种类型的命令:
(1)进入空闲状态命令;
(2)进入观察状态命令;
(3)在物理帧地址注入故障;
(4)在线性地址帧注入故障。SEM核为了获得所需的命令和故障地址,按图7所示时序实现故障注入。
图7 故障注入接口时序图
SEU故障注入地址分为两种:一种是物理帧地址,一种是线性地址。通过注入地址可翻转相应位置的配置存储区的配置数据,实现模拟SEU故障。两种地址类型的格式如图8和图9所示。
物理地址格式:
图8 物理地址格式
其中:
SS:FPGA内部的SS码。
TT:块类型:00为分布式存储区、01为块存储区、10为配置存储区。
H:半地址。
RRRRR:行地址。
CCCCCCCCCC:列地址。
MMMMMMM:镜像地址,列内帧地址。
WWWWWWW:字地址。
BBBBB:bit地址。
线性地址格式如图9所示。
图9 线性地址格式
其中:
SS:FPGA内部的SS码。
LLLLLLLLLLLLLLLLL:线性帧地址。
WWWWWWW:字地址。
BBBBB:bit地址。
2.6 RS232串口控制模块设计
SEM核可通过监视接口进行内部状态的转化。为便于控制,本研究使用简单的RS232接口实现SEM核内部状态的跳转,需要将RS232串行接口时序转化为SEM核的监视接口时序,如图10所示。
图10 RS232串口控制模块功能模块框图
3 SEU故障自动测试实现
本研究通过在FPGA内部增加测试代码,实现RS232串口控制整个SEU故障注入的命令顺序,以及SEU故障注入,完成SEU故障注入和SEM核故障检测的自动测试。测试代码流程如图11所示。
图11 SEU故障自动注入流程
(1)注入I指令:在进行SEU故障注入前,SEM核需要进入IDLE状态:通过RS232串口控制模块,在需要注入SEU故障的时刻,在并行数据命令接口上写入“I”指令对应的73数据,完成SEM核进入IDLE状态的操作。
(2)延时:为保证指令注入成功,在写入指令后适当等待一段时间,比如6000个clk时钟周期,以保证指令生效,SEM核进入相应状态。
(3)注入SEU故障:根据图7时序,通过有效inject_strobe信号,启动SEU故障注入模块。inject_strobe模块建议持续3个clk时钟,基于物理帧地址格式写入需翻转的配置存储区单个配置bit位,实现模拟单个配置位发生SEU故障;如果需要测试多个配置位翻转的情况,则判定是否完成所有配置位的翻转;如果完成,进入下一步流程,如果未完成,则循环执行其他bit的SEU故障注入。
(4)注入O指令:为了验证在注入SEU故障后,SEM核是否能检测出该故障,需要在故障注入完成后,让SEM核进入Observation观察状态:通过RS232串口控制模块,在并行数据命令接口上写入“O”指令对应的79数据,完成SEM核进入Observation观察的操作。
(5)状态采集:SEM核通过ICAP配置接口模块周期性扫描配置存储区,一旦SEU故障注入成功,通过状态显示接口,将检测到单粒子翻转的结果通过有效基本位标志信号(status_essential)表征,并传递到SEU故障状态显示模块进行检测结果的采集;如果有效,表明SEM核检测出配置存储区发生了单粒子翻转,否则该状态信号无效。
该方法通过上述过程自动实现某核安全级仪控系统FPGA设计的SEU故障注入和SEM核故障检测功能的测试,识别出产品无法检测部分功能SEU失效,经过分析发现对配置存储区扫描的ICAP接口模块时序错误。在正确修改接口时序后,该方法可检测所有配置存储区的SEU故障,保证了产品对SEU故障检测设计的正确性,提升了产品可靠性。
4 结论
本文通过分析FPGA中的SEU失效机理和比较四种SEU故障注入方法,设计了一种基于SEM控制内核的自动注入SEU故障的测试方法,为核电厂SRAM型FPGA防范SEU故障的设计提供了一种简单且可控性较强的测试方法。该方法可应用于核电厂SRAM型FPGA的SEU测试中,具有较高的参考价值。
作者简介:
高玉斌(1977-),男,高级工程师,硕士,现就职于北京广利核系统工程有限公司,主要从事核电厂数字化仪控系统FPGA测试与验证技术研究工作。
参考文献:
[1] 邱金娟, 徐宏杰, 潘雄, 等. SRAM型FPGA单粒子翻转测试及加固技术研究[J]. 电光与控制, 2011, 18 (8) : 84 - 88.
[2] GAFFREY P, CAFFREY M, ZIMMERMAN J. Consequences and Categories of SRAM FPGA Configuration SEUs[C]//Proceedings of Military and Aerospace Programmable Logic Devices International Conference. Washington DC, USA, 2003.
[3] 王月玲, 薛海卫, 郭刚, 等. 一种用于评估抗辐射DSP单粒子翻转的试验方法[J]. 微电子学与计算机, 2018, 35 (10) : 53 - 57.
[4] XILINX. Soft Error Mitigation Controller V4.1 logiCORE IP Product Guide[Z]. 2022.
摘自《自动化博览》2025年12月刊







案例频道