如何推迟XilSEM扫描功能的开始?(二)

描述

上篇文章开发者分享|延迟开始 SEM 功能的扫描 (一)介绍了如何推迟 SEM IP 的扫描。在 AMD Versal 器件中, SEM 功能的实现发生了很大变化,整个解决方案基于 library 实现。下面我们一起看一下如何推迟 XilSEM 扫描功能的开始。

我们建立一个使能了 XilSEM 功能的设计。观察 CIPS 中 XilSEM 对应的选项:

GPIO

本次测试以 CRAM 的扫描为例 (NPI 扫描方法相同):

Enable Configuration RAM soft error mitigation 选项下面有两个小选项:Error correction capability,根据设计需求可以选择为 Detect & Correct,或者 Detect Only。本次我们需要关注的是“Scan Strategy” 这个选项,默认是“Immediate Start”, 还有一个是“Deferred Start” 。这个选项是问是否在配置完成后立即开始 CRAM 扫描工作, 还是推迟扫描的开始直至收到指令。

GPIO

接下来:

GPIO

是问选择使用硬件第一轮扫描结果作为 ECC golden 校验值,还是使用软件生成配置文件时计算出来的 golden 校验值。这个选项对本次测试无影响,可以任意选择。

高级选项“Enable PMC_PL_GPO for status signals into PL”,是把 XilSEM 的错误状态输出到 PL 里面,可以通过 PL 的 GPIO 或者逻辑监测 XilSEM 的运行情况。该选项对本次测试结果亦无影响,可以按需选择。

GPIO

综上,我们测试以下两种配置:

1. Immediate Scan

GPIO

2. Deferred Scan

GPIO

由于Deferred Start 必须由用户发起请求,XilSEM 的工作才能开始。查看 XilSEM Example Design 的 source 文件发现如下定义:

GPIO

检测是否完成 CRAM 扫描对应的初始化工作,没有则调用 XSem_CfrApiInitCram 来完成。

后续在插错测试中,调用:

GPIO

启动扫描工作。

基于 VCK190 开发板, 分别生成 xsa 文件以及对应的 pdi 和 elf 文件。为便于查看 XilSEM 扫描的状态,我们需要用到以下寄存器:

GPIOGPIOGPIO

测试结果:

下载执行 Immediate Scan 的 pdi 文件:

GPIO

看低四位寄存器, OBSERVATION_STATE以及 CRAM_IN_DESIGN 已经被置为1, 说明 CRAM 的扫描工作已经初始化完毕,并且正常进入了监测状态.

接下来下载 Cram Scan 的 elf 文件:

GPIO

由于 elf 文件里面默认有插错测试,所以

CORRECTABLE_ERR 以及 ECC_CORRECTION_DONE

对应置位,表明有检测到 ECC error,并且已经纠正。

对比测试 Deferred Scan 的效果。先下载 pdi 文件:

GPIO

下载结束后, 对应寄存器的位全为0。说明 XilSEM 的工作没有开始。

紧接着执行一次 elf 文件:

GPIO

发现寄存器的返回值和 Immediate Scan 执行 elf 后的状态一样了。说明 XilSEM 的扫描功能已经被启动,并且依次执行了插错测试等。

通过这种设置,我们可以根据需要“无限”延迟 XilSEM 的扫描开始,需要时再启动。


 

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分