注意:本博文介绍了利用post_crc试错的方法,但总体而言,赛灵思推荐在所有架构上使用soft error mitigation (sem)ip。
sem ip 提供了一种可用于测试 seu 检测与纠正能力的机制并提供了更强大的调试能力。
本博文中讨论的功能仅受 7 系列器件的支持。
功能
7系列
kintex® ultrascale™ 和 virtex® ultrascale™
kintex ultrascale+™ 和 virtex ultrascale+™
readback crc/post_crc
是
否,使用 sem ip 替代
否,使用 sem ip 替代
赛灵思 fpga 中循环冗余校验 (crc) 的不同类型:
1) 一般 crc 校验在一般比特流加载过程中,crc 校验利用 crc 寄存器进行。该“crc 寄存器”的描述详见《7 系列 fpga 配置用户指南》(ug470)。
fpga 在比特流被加载时计算 crc 值,然后该值与在比特流加载结束时预期的 crc 值进行比较。如果两个值匹配,则 fpga 成功加载。
一般情况下默认启用 crc 校验。比特流属性为 bitstream.general.crc,其中有效选项包括“enable”(启用)或“disable”(禁用)。
2) 回读 crc/post crc 校验
post_crc 校验在配置 fpga 之后,设计运行过程进行。
一般情况下,比特流 crc 校验是一种独立功能,具有其自己的 crc 校验寄存器。
post_ crc 校验具有用于存储校验值的不同以上比特流 crc 的寄存器。
启用 post_crc 校验的目的是什么?
启用 post_crc 校验的目的是检测单粒子翻转(seu)。seu 导致配置存储器中的数位翻转。
post_crc 可与 frame_ecce2 原语配合使用,以便提供针对此等错误的额外功能和更好的可见性。
可利用 frame_ecce2 的输出监控错误检查和纠正(ecc)和回读 crc 电路的状态。
如需了解更多有关 frame_ecce2 原语的详细信息,请参阅《vivado design suite 7 系列 fpga 和 zynq-7000 soc 库指南》(ug953)。
用户通常想要测试这种崩溃发生时的实例,以便确保此等错误被成功检测到。
测试插入错误的一种方法是编辑 pre_computed crc 值。
测试插入错误的步骤:
将以下设置放置在设计 xdc 中:
set_property post_crc enable [current_design]#enables the post crc checkingset_property post_crc_source pre_computed [current_design]#determines an expected crc value from the bitstreamset_property post_crc_action continue [current_design]#even if a crc error is detected, continue crc checking.#other options include halt, correct_and_continue and correct_and_haltset_property post_crc_init_flag enable [current_design]#leaves the init_b pin enabled as a source of the crc error signal. useful especially if frame_ecc is not used
如需了解更多有关这些设置的详细信息,请参阅《vivado design suite 属性参考指南》(ug912)。
运行设计流程并生成比特流。
在生成了比特流之后,pre_computed crc 的值可在 .bit 文件中校验。
该值会是非零值。
若要确定 pre_computed crc 值在比特流中的哪个位置,可查阅《7 系列 fpga 配置用户指南》(ug470)中的示例 7 系列比特流。
若要测试插入错误,您就要禁用一般 crc 校验,以便让比特流成功载入。
切记,如果对位于正常 crc 覆盖范围内的比特流进行了任何编辑,即会标注 crc 错误并阻止比特流加载。
若要禁用一般 crc 校验,您应使用以下设置:
set_property bitstream.general.crc disable [current_design]#disables the general crc checkingset_property post_crc enable [current_design]#enables the post crc checkingset_property post_crc_source pre_computed [current_design]#determines an expected crc value from the bitstreamset_property post_crc_action continue [current_design]#even if a crc error is detected, continue crc checking.#other options include halt, correct_and_continue and correct_and_haltset_property post_crc_init_flag enable [current_design]#leaves the init_b pin enabled as a source of the crc error signal.useful especially if frame_ecc is not used
再次运行设计流程并生成比特流。
在生成比特流之后,您应观察 pre_computed crc 的值是否为零。这是禁用 general.crc 的结果,以便进行错误测试。
由于预计有前面的非零值,要配置器件并观察其行为。
init_b 引脚的监控应显示 crc 错误。
frame_ecce2 也可被用于接收连接到 ila 上的 frame_ecce2 发出的输出信号。然后它将有可能观察到 crcerror。
下文的例化可被用于 frame_ecce2 原语的连接:
然后输出可被传输给 ila。
当器件被编程后,通过校验 ila 上的信号,它应有可能查看类似于以下示例的输出。
例如,由于未找到预期的非零 pre_computed 值,标注了 crcerror 错误。
可以理解的是,大部分用户都想要测试错误检测,以确定在此等错误被检测到时,将会以某种形式予以报告。该测试可让用户坚信,在真实的情景中,错误会被正确检测并报告。
如上文所述,由于 sem ip 所提供的能力,赛灵思推荐使用 sem ip,而不是 post_crc。post_crc 的功能在较新的架构中不受支持。
新晋企业六氟磷酸锂扩建项目投产率不足15%
小米Max2什么时候上市最新消息:6.44寸+松果S+6G内存+6000电池的小米Max2马上就来!
53%的回应组织正在将区块链列为未来两年的最高战略重点
车载以太网测试方案
ARM逆袭称王 英特尔移动芯片失败根源分析
FPGA中循环冗余校验的不同类型
数控机床的种类
人脸识别技术应用到汽车场景 提升了驾驶员的用车体验
传声器的选用
iPhone8什么时候上市?iPhone8最新消息:iPhone8或在9月如期上市,iPhone7Plus降价1000元!买旧还是等新
Redmi Note7 Pro/魅族Note9详细测评,对比荣耀V20、小米9
5G+机器人加速多领域智能化的发展
带有VisualQuery Builder的浏览器内SQL客户端
2020年的iPhone将全部支持5G,iPhone SE2出货量至少为2000万部
旗芯微半导体与伊世智能建立战略合作关系
如何用直流电桥测量电阻?
单片机开发零基础可不行,还需掌握这些知识点
国产特斯拉开启预售,留给蔚来们的时间还有多少?
人防维稳应急通信,宽带无线指挥调度方案
雷达与激光雷达在“技术对决”中各自的优势