上篇文章开发者分享|延迟开始 SEM 功能的扫描 (一)介绍了如何推迟 SEM IP 的扫描。在 AMD Versal 器件中, SEM 功能的实现发生了很大变化,整个解决方案基于 library 实现。下面我们一起看一下如何推迟 XilSEM 扫描功能的开始。
我们建立一个使能了 XilSEM 功能的设计。观察 CIPS 中 XilSEM 对应的选项:
本次测试以 CRAM 的扫描为例 (NPI 扫描方法相同):
Enable Configuration RAM soft error mitigation 选项下面有两个小选项:Error correction capability,根据设计需求可以选择为 Detect & Correct,或者 Detect Only。本次我们需要关注的是“Scan Strategy” 这个选项,默认是“Immediate Start”, 还有一个是“Deferred Start” 。这个选项是问是否在配置完成后立即开始 CRAM 扫描工作, 还是推迟扫描的开始直至收到指令。
接下来:
是问选择使用硬件第一轮扫描结果作为 ECC golden 校验值,还是使用软件生成配置文件时计算出来的 golden 校验值。这个选项对本次测试无影响,可以任意选择。
高级选项“Enable PMC_PL_GPO for status signals into PL”,是把 XilSEM 的错误状态输出到 PL 里面,可以通过 PL 的 GPIO 或者逻辑监测 XilSEM 的运行情况。该选项对本次测试结果亦无影响,可以按需选择。
综上,我们测试以下两种配置:
1. Immediate Scan
2. Deferred Scan
由于Deferred Start 必须由用户发起请求,XilSEM 的工作才能开始。查看 XilSEM Example Design 的 source 文件发现如下定义:
检测是否完成 CRAM 扫描对应的初始化工作,没有则调用 XSem_CfrApiInitCram 来完成。
后续在插错测试中,调用:
启动扫描工作。
基于 VCK190 开发板, 分别生成 xsa 文件以及对应的 pdi 和 elf 文件。为便于查看 XilSEM 扫描的状态,我们需要用到以下寄存器:
测试结果:
下载执行 Immediate Scan 的 pdi 文件:
看低四位寄存器, OBSERVATION_STATE以及 CRAM_IN_DESIGN 已经被置为1, 说明 CRAM 的扫描工作已经初始化完毕,并且正常进入了监测状态.
接下来下载 Cram Scan 的 elf 文件:
由于 elf 文件里面默认有插错测试,所以
CORRECTABLE_ERR 以及 ECC_CORRECTION_DONE
对应置位,表明有检测到 ECC error,并且已经纠正。
对比测试 Deferred Scan 的效果。先下载 pdi 文件:
下载结束后, 对应寄存器的位全为0。说明 XilSEM 的工作没有开始。
紧接着执行一次 elf 文件:
发现寄存器的返回值和 Immediate Scan 执行 elf 后的状态一样了。说明 XilSEM 的扫描功能已经被启动,并且依次执行了插错测试等。
通过这种设置,我们可以根据需要“无限”延迟 XilSEM 的扫描开始,需要时再启动。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !