ABB 2608
关注中国自动化产业发展的先行者!
2026具身智能·边缘计算赋能新质智造峰会
人工智能+制造融合创新研讨会
2026中国自动化产业年会
2025工业安全大会
OICT公益讲堂
当前位置:首页 >> 案例 >> 案例首页

案例频道

核电厂SRAM型FPGA单粒子翻转仿真测试方法研究
SRAM型FPGA在核级DCS系统中的应用日益广泛,而核电厂环境中的高能粒子辐射会对FPGA产生单粒子翻转(SEU)的负面影响。根据IEC62566标准要求,需要对SEU防范设计进行测试,而如何进行SEU故障注入成为测试的难点。本文提出了一种应用于核电厂FPGA器件的SEU测试方法,并基于ICAP(InternalConfigurationAccessPort)技术实现了一种SEU故障注入方法。相较于其他故障注入方法,该方法不需要增加额外设备,成本低,并具有高可控性和可观测性,是一种经济有效的故障注入仿真测试技术。

★北京广利核系统工程有限公司高玉斌,武方杰

关键词:单粒子翻转;FPGA;ICAP;故障注入;仿真

1 引言

目前应用于核电厂的FPGA器件日益增多,而随着FPGA工艺技术的不断发展,小尺寸、高密度及低电压的FPGA芯片越来越多地应用于核电厂数字化仪控系统。根据不同工艺,FPGA芯片可分为SRAM型FPGA、Flash型FPGA和反熔丝FPGA。由于具有密度高、可配置性好、成本低等优势,SRAM型FPGA被广泛应用到核电厂、航天、通信等领域。

在不同应用场景,尤其是核电厂应用场景下,SRAM型FPGA不可避免地会在高能粒子辐射环境下工作,高能量粒子会渗透到FPGA内部[1]。当高能粒子与存储器PN节进行碰撞时,其运动路径上形成瞬态电流,当电流值达到一定程度后会改变PN节的导通和截止状态,引起逻辑状态翻转,产生单粒子翻转,如图1所示。

image.png 

图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的触发器中。

image.png 

图2 FPGA内部存储区结构示意图

在四种存储区类型中,配置存储区通常占整个存储区资源的90%以上,美国LosAlamos试验室和Xilinx公司对FPGA的SEU事件中所占比重[2]。如表1所示,从比例上看四种存储区对SEU最敏感的为配置存储区。因而从SEU敏感性的角度考虑,对SEU的防范主要针对配置存储区进行防范,SEU的故障注入也主要针对配置存储区,对其进行SEU测试。

表1 FPGA各个类型存储器在SEU截面比重

image.png

本文分析了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所示。

image.png 

图3 故障注入硬件平台示意图

(4)基于IP核的故障注入仿真法:XILINX公司的SEM(Soft Error Mitigation)IP核,除了提供SEU故障检测功能外,为便于测试,也提供了SEU故障注入接口,以保证当发生SEU故障时故障检测和故障处理功能的合理性。该方法能够实现SEU故障注入,覆盖SEU故障检测和处理功能的测试,并且成本低,可操作性强,但需要使能故障注入功能,同时需要增加测试代码(电路)进行IP核的状态转换和故障注入。该方法虽然改变了被测对象的设计,但可以通过将测试电路固化到未使用的空白电路处,实现与被测对象的独立。同时,测试电路仅增加了对正常运行时IP核不使用的故障注入接口,可保证对正常运行逻辑的功能和时序不产生影响。

表2 SEU故障注入方法比较分析表

image.png 

通过对四种方法的比较分析可以看出,虽然基于IP核的故障注入仿真法是在仿真环境下进行测试,但由于SEU的失效机理明确,失效表现确定,故仿真环境与实际无差别。同时考虑到该方法易于观测,可控性强,成本低,难度低,故本研究采用基于XILINX公司提供的SEM核的故障注入仿真法进行SEU的故障注入,执行SEU故障检测和处理功能的测试。

2 SEU故障注入仿真方法

本文提出的SEU故障注入仿真方法,基于XILINX公司的SEM核实现如图4所示。SEM核是针对配置存储区发生SEU故障时进行故障检测、故障注入、故障纠正和故障分类。四个功能除故障检测外,其他三个功能均可选。SEM核通过ICAP接口不间断地周期扫描FPGA的配置存储区,检测配置存储单元内容和初始值是否一致,如果不一致进行SEU故障报警;如果使能故障注入功能,则会提供故障注入接口;如果使能故障纠错,会针对单个bit的SEU故障进行修正;如果使能分类功能,会将在被用户使用的电路发生SEU还是未被使用的空白电路发生SEU故障进行分类报警。本方法通过SEM核的故障注入接口,注入SEU故障,并通过故障检测标志位显示故障注入成功。

image.png 

图4 故障注入仿真示意图

2.1 SEU故障注入设计架构

基于SEM核的SEU故障注入方法主要包括:SEM控制内核模块、ICAP配置接口模块、RS232串口控制模块、SEU故障注入控制模块和状态输出模块,如图5所示。

image.png 

图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所示。

image.png 

图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所示时序实现故障注入。

image.png 

图7 故障注入接口时序图

SEU故障注入地址分为两种:一种是物理帧地址,一种是线性地址。通过注入地址可翻转相应位置的配置存储区的配置数据,实现模拟SEU故障。两种地址类型的格式如图8和图9所示。

物理地址格式:

image.png 

图8 物理地址格式

其中:

SS:FPGA内部的SS码。

TT:块类型:00为分布式存储区、01为块存储区、10为配置存储区。

H:半地址。

RRRRR:行地址。

CCCCCCCCCC:列地址。

MMMMMMM:镜像地址,列内帧地址。

WWWWWWW:字地址。

BBBBB:bit地址。

线性地址格式如图9所示。

image.png 

图9 线性地址格式

其中:

SS:FPGA内部的SS码。

LLLLLLLLLLLLLLLLL:线性帧地址。

WWWWWWW:字地址。

BBBBB:bit地址。

2.6 RS232串口控制模块设计

SEM核可通过监视接口进行内部状态的转化。为便于控制,本研究使用简单的RS232接口实现SEM核内部状态的跳转,需要将RS232串行接口时序转化为SEM核的监视接口时序,如图10所示。

image.png 

图10 RS232串口控制模块功能模块框图

3 SEU故障自动测试实现

本研究通过在FPGA内部增加测试代码,实现RS232串口控制整个SEU故障注入的命令顺序,以及SEU故障注入,完成SEU故障注入和SEM核故障检测的自动测试。测试代码流程如图11所示。

image.png 

图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月刊

热点新闻

推荐产品

x
  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: