如何利用FIFO+ILA/VIO抓取SEM IP的串口log

关注、星标公众号,精彩内容每日送达
来源:网络素材

作者:Ivy Guo,AMD开发者;来源:AMD开发者社区

SEM IP 在上板调试过程中有时会出现一些错误,需要访问 log 文件以便调试。本篇博文涵盖了如何利用 FIFO+ILA/VIO 抓取 SEM IP Monitor Interface 的 log 文件。

SEM IP在上板调试过程中有时会出现一些错误, 比如无法执行IP的插错纠错功能; 或者自身的初始化无法完成等等, 需要对SEM IP本身进行调试定位. 我们最推荐客户去查看IP从上电开始打印出来的串口信息. 这里面的log不仅包含了IP从初始化开始经历的一系列状态, 还能清楚地显示出一些事件的时间戳:

但是很多客户反应, 实际调试的硬件板上没有连接串口,没办法查看log, 只能靠抓取SEM IP Status Interface的 status_*信号, 通过其可以查看 IP有无心跳, 或者IP是否进入了正确的状态等. 困难的是, 很多问题需要同时查看所有的status_*信号组合, 并且综合分析status_*的历史状态以及当前状态, 复杂且需要较多的调试经验。

解决方法其实很简单, 我们只要在设计里面添加一个FIFO, 将SEM IP Monitor Interface输出的ASCII字符 log全部存入FIFO. 需要定位的时候, 用ILA+VIO控制读出来并直接显示就行了。

这里以 (VU9P) 开发板为例说明;   步骤如下:

1. 生成适配VCU118开发板的SEM IP example design.

2. 按照开发板的构造, 按需修改icap_clk的频率及管脚位置. 也可以添加其他想要查看的信号. 比如,可以绑定6个status_*信号到LED管脚上方便查看.

3. 顶层引入FIFO读写时钟clk300p/n (300MHz)。

XDC里面做好相应的约束:

4. 生成并添加用于存储log的FIFO, 读取显示FIFO字符的ILA和用于控制的VIO.

至于FIFO的大小, SEM IP 正常情况下除了最开始会打印出初始化过程和基本信息, 进入工作状态Observation后就基本没有输出了. 只有发生了SEU事件或者其他异常, 才会在串口推送出对应的报告. 由于SEU事件是极为偶发的罕见事件, 报告字符也不会多. 所以这里设定500 bytes已经能满足绝大多数应用需求:

5. 保存设计并生成配置文件, 下载到板卡上.

6. 通过example自带的ILA和VIO, 可以看到IP正确初始化后已进入Observation工作状态, status_observation信号置1:

7. 使FIFO read ILA进入捕获信号状态, 等待读FIFO读指令发出:

8. 通过VIO, 发出FIFO读取指令fifo_read:

9. 可以看到FIFO已经捕捉到了log, 展开即可直接查看ASCII码格式的内容:

10. 同样, 尝试一下插错纠错动作, log也可用同样方法捕捉:

在实验室调试阶段, 这是一个很常用的定位SEM IP错误的方法. 即使产品阶段, 我们也推荐保留此FIFO, 对于分析现场SEU事件非常有帮助。

(全文完)

声明:我们尊重原创,也注重分享;文字、图片版权归原作者所有。转载目的在于分享更多信息,不代表本号立场,如有侵犯您的权益请及时联系,我们将第一时间删除,谢谢!

图片

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值