论SRAM型FPGA软核Microblaze抗单粒子加固的方法

microblaze是32位/64位 risc软核处理器,可以用作微处理器、实时处理器和应用处理器(linux+mmu)。microblaze作为fpga的软核,搭建硬件系统时有丰富的ip资源,软件开发则有配套的sdk软件。 目前microblaze在工业、医疗、汽车、消费以及通信市场有着广泛的应用。
microblaze有这么多优点,是否可以用在宇航市场上呢?空间环境中,fpga会受到单粒子效应影响,microblaze是使用fpga内部的资源来实现的,可能会发生功能中断或程序跑飞等情况,因此需要对microblaze进行软件层面的加固来降低see的影响。
microblaze最小系统的组成包括clock wizard,processor system reset,microblaze ip,data local memory bus, instruction local memory bus,data lmb bram controller, instruction lmb bram controller和block memory。 今天贫道以microblaze最小系统为例,简单介绍一下pg268 xilinx方案(fault torelant和fail safe),然后着重介绍高可靠加固方案、方案在tmr工具的实现和故障注入验证结果,如图1所示:
图1 microblaze最小系统
01
xilinx 加固方案
fault-tolerant type是对原系统整体复制两份,并在关键的data lmb controller和instruction lmb controller增加判决器,并对io接口增加判决器。假如单路mb由于see发生软错误,那么通过判决器能够把软错误屏蔽掉。fault-tolerant type优点是实现简单,只需要利用好tmr manager的run block automation功能,就能一键实现加固。fault-tolerant type属于粗粒度加固,因此缺点是可靠性提升有限。
图2 fault-tolerant默认框图
图3 tmr voter插入位置 值得一提的是fault-tolerant type默认的方案是对bram做tmr,如果bram资源受限,那么可以更改设计对bram做ecc。
图4 fault-tolerant type ecc实现
fail-safe type加入了tmr comparator,实时对三个sub block进行比较。当某一个sub block发生异常的时候,另外两路正常的sub block进入到lock step模式。lock step模式下,一旦发现两路sub block数据不一致,那么就会进入到fatal stop模式。
fail-safe type的优点是可以在lock step模式下,通过app尝试进行恢复,恢复成功后重新返回到fault torelant模式。fail-safe type的优点也是缺点,app需要用户自行开发,设计比较复杂。此外如果软错误比较严重,会进入到fatal stop模式,该模式没法完成恢复,只能重新加载来解决软错误。
图5 fail-safe type框图
图6 fail-safe type故障模式转换流程
02
高可靠加固方案
高可靠加固方案是把microblaze当做一般的ip,在网表层面采用tmr工具进行细粒度加固。同时考虑microblaze的特点,对存储器bram进行tmr加固或者ecc加固。考虑到tmr或者ecc只能屏蔽错误,无法消除错误。因此为了更进一步提高可靠性,对储存器采用ecc+回写刷新,这样可以消除错误。本文只讨论local memory应用场景的加固方案和实现,下面将对实现部分做简要的介绍。
 1.1   存储器bram ecc实现
microblaze默认的local memory结构如下图所示,需要做的是展开microblaze_0_local_memory。
图7 microblazelocal memory
展开microblaze_0_local_memory,可以看到local_memory是由lmb bus、lmb bram controller和block memory组成。
图8 localmemory结构
需要做的是打开lbm bram controller,勾选error correction code。
图9 lmb bram controller设置
工具自动实现更改block memory属性,使用soft方式来实现bram的ecch32-7编解码。
图10 block memroy ecc参数设置
 2.1   存储器bram ecc+自刷新逻辑
默认的local memroy结构里面,bram的两个端口都被占用住,要想实现自刷新就得更改local memroy结构。microblaze支持复用dlmb和ilmb的控制器,这样两个控制器就共用一个bram端口,另一个端口用于自刷新,如下图所示:
图11 共享memory结构
开发的自刷新模块连接到freeport上,对bram全地址循环遍历,读出数据(32bit)和校验位(7bit)进行1bit错误纠错。如果解码过程出现1bit错误,把纠错后的数据回写到bram中。
图12 自刷新结构
 2.2   microblaze system tmr实现
tmr工具可以对任意资源设置属性,block memroy采样ecc方案,因此属性设置为converge。
图13 tmr工具custom模式下参数自定义设置 tmr工具可以统计出加固前的资源消耗,以及预估加固后的资源消耗,便于设计师进行评估和迭代设计。
图14tmr工具加固前资源统计和加固后资源预估
加固完成后,tmr工具可以统计出准确的资源使用情况。
图15tmr工具加固后资源统计
tmr工具自动创建加固后工程并自动添加约束文件。
图16 tmr psot工程
执行implementation和generate bitstream。
图17 post工程完成impl和bitgen
 2.3   故障注入验证
microblaze system采用tmr进行加固可靠性得到提升,tmr加固推荐采用dtmr/gtmr加固方式。microblaze system中存储器部分选择的是ecc加固,需要针对block memroy进行故障注入验证。
图18 bram故障注入测试 故障注入验证结果如下:
1)存储区不加固,随机注入70~100bit错,系统异常
2)存储区ecc纠错,随机注入700~800bit错,系统异常
3)存储区ecc纠错+回写,随机注入10000bit错,系统仍正常工作 microblaze采样高可靠方案进行加固后可靠性得到提升,采用ecc纠错+自刷新措施可靠性最高。软核除了在fpga内部进行软加固外,还应该采用外部scrubber来消除cram的累积错误,这样经过多种加固措施后的软核应该能满足大部分的空间应用需求。


食品药品检测仪器的检测项目有哪些
英伟达官黄仁勋有望成为半导体行业最具话语权的人
科学家研制出在人体内运送药物的微型机器人
在太阳穴上测量体温的红外传感智能温度计
内置SolarMagic电源优化器芯片组的太阳能光伏组件
论SRAM型FPGA软核Microblaze抗单粒子加固的方法
三星Note 10.1对比iPad 3 综合实力苹果占优
又一国家重大科研仪器设备研制专项通过中期检查
用ADS7846设计嵌入系统的触摸屏
莱普科技超16亿元全国总部暨集成电路装备研发制造基地签约成都
VSS/虚拟演播室系统,如何构建iSCSI磁盘阵列
常见的激光雷达SLAM算法有哪些?
ADI推出战术级10自由度MEMS IMU-ADIS16488
3D打印机OEM厂商WAS推出全新生产型FDM系统
学会Linux添加自定义系统调用
物联网思维怎样去看待灾情
LTE牌照发放难题猜想:一团标准迷局?
选择和设计LED驱动电源应该考虑的问题
4G工业路由器与常见的路由器有什么区别
取消动能回收调节设置 变成了“自适应动能回收力度调整”