SEM IP在MPSoC器件上的使用指南

1. SEM IP的功能概述

SEM(Soft Error Mitigation)技术通过目标式ECC奇偶校验位注入实现可观测的软错误模拟。该机制在配置存储器帧(CRAM Frame)内精确选择校验位进行可控翻转,确保注入错误位于冗余校验区域而非功能逻辑位,从而避免对设计功能完整性造成干扰。主要应用于要求苛刻的场景(如航天、工业控制等)中,SEM控制器可以确保更高的可靠性水平。至于决定是否要在设计中使用SEM IP,需要了解可能性和系统级考虑因素。

图1. 软错误决策树示例.png

图1. 软错误决策树示例

2. SEM IP接口及配置

图2. SEM的参考设计的模块设计.png

图2. SEM的参考设计的模块设计

系统级示例设计封装了SEM控制器和用于控制器与其他设备接口的通道。值得注意的是,SEM控制器没有复位信号。这是由于SEM控制器的任务是监视和维护原始配置状态,而不是从一些临时(可能错误的)状态重新启动,故不设置复位。它自动初始化自身与内部同步复位派生自全局复位信号的解除。下表展示各个接口的详细描述。

表1. 各个接口的功能描述.png

表1. 各个接口的功能描述

SEM IP配置介绍

图3. SEM IP配置界面.png

图3. SEM IP配置界面

◾ 控制器的模式

从模式上划分:

SEM IP可以分成六个模式:

• 缓解和测试

• 仅缓解

• 检测和测试

• 仅检测

• 仿真

• 监控

按照IP内对各个模式的特性对比,“缓解和测试”是最适合用于测试仿真的模式。该模式与其他模式最核心的差异在于可同时支持错误注入和纠错能力。

图4. SEM IP高级配置界面.png

图4. SEM IP高级配置界面

错误分类功能仅在纠错模式(缓解和测试/仅缓解)下可用,用于判断已纠正的软错误是否影响设计功能。顺带一提的是,IP默认针对开发板将错误分类的功能禁用,是因为评估板默认不包括外部SPI内存。

◾ 控制器的时钟

控制器的时钟周期通过“Clock period”字段设定,其值越小,频率值越高,错误缓解时间越短。但是设计时需要确保目标器件支持设定的周期,否则会触发警告。下表提供了ICAP FMax的总结。当评估板为目标时,默认的控制器时钟周期自动选择到基于示例设计中提供的特定时钟频率的引脚。

表2. ICAP支持的最大频率.png

表2. ICAP支持的最大频率

◾ 控制器的结构选项

SEM IP配置中原语(ICAP/FRAME_ECC)的包含方式分为两种,核心差异是原语的可见性与连接控制权:

1. 包含在核心中:

  • 适用场景:无其他逻辑需访问ICAP/FRAME_ECC原语时。

  • 特点:原语自动嵌入核心,连接对用户透明(不暴露为端口)。

  • 限制:不适用于UltraScale SSI器件。

2. 包含在示例设计中:

适用场景:其他逻辑需访问ICAP/FRAME_ECC原语时。

特点:原语在示例设计层级显式实例化,需用户手动连接端口。

3. 上板实测

测试环境搭建

工程的搭建基于xapp1298

硬件平台:MPSoC(ZCU102)

软件版本:Vivado2019.1、SDK2019.1

图5. 工程设计示意框图.png

图5. 工程设计示意框图

在本工程设计中,PS通过专用PL时钟接口(pl_clk0)给SEM控制器提供ICAP时钟信号(icap_clk),ICAP仲裁控制及状态LED信号通过PS扩展EMIO接口集中管控。

SEM IP调试

本文在“缓解和测试”模式下进行,旨在观察错误注入以及IP的纠错功能。其中关于SEM在运行过程中涉及的关键步骤包括:PCAP权限移交ICAP,时钟使能,ICAP仲裁切换行为以及调试方式。下面围绕这些详细介绍。

◾ PCAP权限移交ICAP

由于缺乏FPGA的启动独立性,MPSoC在调试过程中必须要在PS启动后,主动释放PCAP权限,并将配置控制权移交给ICAP。这是因为PCAP和ICAP的功能类似,都是PS访问配置控制端接口,无法同时运行。因此,像MPSoC器件在使用SEM时,必须修改寄存器pcap_ctrl(地址0XFFCA3008)的bit0位,将其清零以切换至ICAP控制。否则将会初始化失败,导致SEM卡在“Initialization”状态,无法启动纠错功能。

图6. MPSoC pcap_ctrl寄存器.png

图6. MPSoC pcap_ctrl寄存器

可采用下面的两种方式实现寄存器配置:

1. PS侧添加如下代码

PS侧添加如下代码.png

2. XSCT下配置寄存器

XSCT下配置寄存器.png

◾ BUFGCE使能

观察图5会发现,时钟路径中集成BUFGCE模块。该模块的使能端口CE默认为低,是因为系统级的要求下,经过MMCM/PLL的时钟需要等到稳定后才能提供给SEM。比如,在一些用到MIG的场景下,由于MIG做BIST阶段需要极高的时序精度,这个阶段使用SEM会有概率导致MIG校验错误,使能开关的作用可以规避这一问题。

◾ ICAP仲裁切换行为

ICAP仲裁接口按照下面流程图的逻辑实现多个功能共享ICAP的机制。其中,需要注意的是,由于IP不知道在停止访问ICAP时是否操纵了配置内存,会导致再次被访问后会重新引导和重新初始化。

图6. ICAP仲裁切换行为流程图.png

图6. ICAP仲裁切换行为流程图

◾ 调试的方式

主要可以通过下面两种方式观察注入错误实验,两者各有优势,按需选择。

  1. 通过VIO的方式,在硬件调试窗口界面修改错误注入地址,再执行注入触发。

  2. 通过串口敲击命令,通常建议使用更简易的串口指令方式进行调试。

执行“I”,可进入IDLE状态

执行“O”,可进入Observation状态

注入命令输入“N”+“inject_address”;

执行“S”,获取当前状态,包括获取MF(Maximum Frame)的值,确保注入错误不会越界。对于不同类型、Virtex-6,7 series和 Zynq-7000、Ultrascale)的器件,MF的大小也不一样。

当SEM发生状态切换,会输出对应的打印信息,信息以“SC”开头。错误类型信息以“FC”开头,从可纠错与不可纠错、必要错误和非必要错误排列可以组合分成4种。

表3. 状态报告.png

表3. 状态报告

表4. 错误标记报告.png

表4. 错误标记报告

◾ 扫描和纠错

图7. 串口指令控制SEM扫描和纠错.png

图7. 串口指令控制SEM扫描和纠错

如上图,通过串口指令,分别调试注入单bit错误和多bit错误后,SEM扫描和纠错的情况。并通过VIO监测对应实验下观测确认两边的结果一致,由此证明SEM工作正常。

图7. VIO指令监控SEM扫描和纠错.JPG

图7. VIO指令监控SEM扫描和纠错

4. SEM注入错误的补充说明

  • 错误注入命令只有在配置IP时,勾选了“错误注入使能”才能工作。

  • 注入前,需要确认为IDLE状态,注入后,必须显示过渡到observation才能让IP尝试检测或纠正。

  • 一次注入超过4个bit位,超出限制(ECC algorithm-based correction that supports correction of configuration memoryframes with up to 4-bit errors.见pg187),注入命令会丢失。

  • 此外,如果配置帧,没有显示变化,可能是不存在该地址。

文章来源:安富利