作者:Ivy Guo,AMD工程师,来源:AMD Xilinx开发者社区
UltraScale / UlraScale+系列的SEM IP一共有6种工作模式,分别是:
• Mitigation and Testing
• Mitigation only
• Detect and Testing
• Detect only
• Emulation
• Monitoring only
实际中应该选择什么模式工作呢?我们先从字面的定义看:
Mitigation: 包含SEU错误的检测,纠正以及错误分类功能。这是SEM IP的最初被设计出来时定义的基本功能。
Testing: 指错误插入功能。
Detect: 错误的检测功能。
Emulation:没有检错,纠错以及错误分类功能。只支持插错和调试时需要的一些指令。
Monitoring:在Emulation的基础上进一步精简,去掉了插错。
在我们选择SEM IP配置生成的时候,可以看到有一个表格;这个表格非常直观地表明了各个模式的区别。(表格也出现在 https://docs.xilinx.com/r/en-US/pg187-ultrascale-sem,Table 2-1)
依据这个表格,我们再进一步详细看6个模式的特点。
这是最常见、最基本的模式,也是初学者入手的建议和默认模式。Mitigation实现了最基本的SEU事件检、纠、分类,Testing使能了插错。这个模式可以理解为‘正统‘ SEM IP的功能集合。
开启此模式的IP,在初始化完成以后就直接进入了工作模式OBSV (Observation),开始持续不断的进行SEU事件的检测,纠正和上报(按需开启错误分类)。
开启Testing功能后,正常工作的IP也可以通过指令进入到IDLE状态,通过插错指令开始一系列的测试,这是实验室观测调试IP的必要手段。插错指令可以模拟自然界的SEU事件,往CRAM内存注入一个错误。等IP回到正常工作状态OBSV后,就会在例行检查中探测到这个错误,纠正然后上报。分析这一阶段的Uart log,可以让你了解到FPGA实际探测到SEU事件后的种种信号行为和打印信息。
通过Fig 1,可以看到:
该模式初始化完成后即进入OBSV,同时开启了纠错功能和插错功能。
错误分类功能是可以选择的。根据系统是否有要求,是否有内存存储正确数据来自行开启。
该模式支持的主要调试指令有 (以Uart指令为例):
I: 进入IDLE状态
Q/P: 读取某一特定帧和寄存器的值
X: 读外部存储器的内容(这个主要是做错误分类时用的)
T: 转换物理地址和线性地址
当然其他的Uart指令和Command口指令也都支持。
这个模式是实际大多数普通产品开启的模式。同上述Mitigation and Testing相比,就是把多用于实验室调试的插错功能关闭了。
当然,也有客户会选择保留插错功能,即开启Mitigation and Testing。一个常见考虑是:现场的产品发生了疑似SEU事件,现场记录未保存或不足以分析事件始末。或者 IP本身也受到SEU攻击了(概率极低)。为了验证IP是否还在正常工作,可以插一个错误试试看是否还有纠错、分类、上报等动作,是否符合预期。当然发生此类事件时一定注意保护现场,在专家指导下再继续log读取,插错等后续分析工作。
IP在初始化完成以后直接进入Detect模式。Detect是SEM IP的一个特殊模式,即 ‘只检不纠 ‘。 检测直至有错误,上报错误状态后直接进入IDLE模式,可以理解为开始休眠。
为什么有这种模式呢?因为IP的纠错必然是有时延的(Table 2-9,https://docs.xilinx.com/r/en-US/pg187-ultrascale-sem )。这个时延对绝大多数设计是足够了,但是一些要求特别高的应用或产品,比如航空航天级,一旦检测到了SEU事件,不管这个事件是否真的对系统功能有影响,一律按照最高影响处理:即停掉工作的FPGA,启动备用芯片。此时纠错功能就不需要了。
根据表格可以看到,IP的纠错、分类功能都被禁掉了。只能接收用于调式的一些指令。
Testing,即在这种模式下加入调试插错功能。可以根据需要选择是否开启。
这是根据客户应用所设计的一种特殊状态,它并不使能最基本的错误检、纠、分类等功能。IP初始化完成后直接进入IDLE状态,但是可以接收一些指令。主要是查看错误发生在不同位置后特定设计的状态。
从Fig1还可以看到独立于模式的两种错误检测方式:
Detect Only (D):
重点是:检到即停。通过在IDLE状态下的命令启动, SEM IP开始持续扫描直到检测到了ECC或者CRC错误。不纠正。汇报状态并停在IDLE模式。
Diagnostic Scan (U):
重点是:只检一轮。命令启动后,IP会把整个CRAM扫描一遍且只扫描一遍,并且只检测ECC错误。然后不管错误是0个还是多个,均会汇报上去。随后停止在IDLE模式。
两种错误检测方式一般也是用于实验室调试研究的。
总结,Mitigation and Testing和Mitigation Only模式是SEM IP的常规用法。其他的模式或者检测方式,多用于实验室调试验证,一般不适用于正式产品。当然,在清楚了解其他各模式和扫描方式的性能和特点后,也可以根据自己系统设计的具体要求来选用。