基于SRAM型FPGA的软错误修复SEM加固技术

1 SEM加固技术简介

对配置RAM 的加固主要通过使用外部器件(通常为反熔丝FPGA)从配置RAM中回读配置位流文件,通过与外部存储中的原始位流文件进行比对,识别发生翻转的配置帧,再将正确的配置帧写回配置RAM中,实现单粒子翻转软错误的修复。这种加固方法被称为外部刷新。

近几年来,针对SRAM型FPGA配置RAM的单粒子防护问题,Xilinx公司在旗下的高性能FPGA上设计了专用的片内纠检错电路,从而使得内部刷新加固技术变为可能。

配置RAM刷新技术示意图如下图所示。

对单粒子翻转软错误的检测和修复,这项被称为SEM的加固技术主要基于在配置帧层面加入32bit的纠错码(ECC)和在整个位流文件上增加32bit的循环冗余码(CRC)校验来实现。

在片内专用电路的支持下,配置帧ECC可识别单帧内任意2bit的翻转错误,并纠正任意1bit的翻转错误。

仅使用ECC计算电路时,SEM工作在修复模式。位流文件CRC可进一步增强FPGA的纠检错能力,当CRC与配置帧ECC结合后,SEM工作在增强修复模式,可检测绝大多数的翻转错误,并纠正单帧内任意1bit或相邻2bit的翻转错误。

SEM同时支持通过外部存储器中读取原始位流文件进行比对的方法来识别和修复配置RAM翻转软错误,即使用替换模式,此时SEM可识别和修复任意的翻转软错误。

3种模式需要占用的资源略有不同,检错和纠错所需的时间也有所不同,可根据具体的设计需求进行选择。

2 SEM的应用优势

与传统的外部刷新技术相比,SEM最大的优势在于对软错误的纠检错效率。其中检错占用的时间与FPGA配置RAM的大小呈正比,而纠错占用的时间则主要受纠错模式的影响。

SEM检错延时列于下表。

不同纠错方式下,不同错误情况下的纠错延时列于下表。

以XC7K410T为例,在修复模式下,识别和修复1bit翻转错误的平均故障修复延时约为15.2+0.610 =15.810ms。

与之相对应,外部刷新通常采用32bit的SelectMap接口,受限于印制板走线和反熔丝FPGA时序性能,接口速率通常为10MHz左右。

当采用回读刷新时,回读全配置区需要用时303ms平均故障检测时间为152ms,刷新一帧错误的时间约为10μs,平均故障修复延时为152+0.01= 152.01 ms。

当采用盲刷新时,虽然没有了故障识别时间,但故障修复时间等同于刷新整个配置区的时间,此时平均故障修复延时为152ms,且刷新期间FPGA本身处于功能中断,所以刷新的频率不能太高,平均故障延时还会由于刷新频率下降而进一步增大。

平均故障修复延时直接决定了FPGA的软错误故障修复率。

在单粒子翻转率保持不变的情况下,提升故障修复率可有效增大平均故障时间,从而降低FPGA的故障(功能中断)率。

SEM技术在提升FPGA配置RAM的抗单粒子翻转加固效能方面,相比传统的外部刷新技术有着较大的优势。

3 SEM存在的问题

由于SEM IP核自身需要调用FPGA逻辑,包括配置RAM来实现其功能,这意味着其本身也存在发生单粒子翻转软错误的可能。

尽管相比FPGA本身的设计,SEM核调用的资源占比非常少,所以其发生单粒子翻转的概率也要低得多,但仍有必要在FPGA外部配备1套监控电路,在SEM自身发生单粒子功能中断时进行故障恢复,这点在可靠性要求较高的系统中尤为重要。

SEM核资源占用情况列于下表。

相关推荐
嘿,二极管6 小时前
硬件工程师面试常见问题(1)
硬件工程
szxinmai主板定制专家7 小时前
基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台
arm开发·fpga开发
总结所学10 小时前
arm_math.h、arm_const_structs.h 和 arm_common_tables.h
arm开发·单片机·嵌入式硬件
傻智智爱吃糖11 小时前
Xilinx 7系列fpga在线升级和跳转
fpga开发
Yesheldon12 小时前
高速电路中的电感、磁珠的选型及应用
单片机·嵌入式硬件·硬件架构·硬件工程·智能硬件
hahaha601617 小时前
ARINC818协议(二)
网络·fpga开发
Tianyanxiao17 小时前
【探商宝】跨境关税博弈下的技术破局:从头部平台现象看数字贸易体系重构
金融·重构
weixin_4672092817 小时前
ZYNQ系列SOC或FPGA常用核心电源方案选型
fpga开发
x-cmd18 小时前
[250416] GitHub Action 新升级,支持 Windows on Arm
arm开发·windows·github·github action
q1204489991 天前
zigbee和wifi都是无线通信,最大区别是低功耗,远距离!
arm开发