xc7vx690t使用中发现的BUG分析和测试过程

电子说

1.2w人已加入

描述

大神召唤

vivado2017.2一个工程下,两个互不相干的模块会相互影响,只有屏蔽其中一个另一个才能正常工作。使用此芯片第一次发现如此诡异现象,现在依然没有找到根本原因,只找到了规避方法,各路大神如果有相关经验或者建议请小窗告知,感激不尽!

问题现象

工程中有一个串口通信模块,多个Aurora模块。其中一个Aurora模块和串口模块有冲突,不能同时出现,否则串口可以正常使用,但是Aurora不能正常工作,表现为channel up始终为低,输入时钟锁不定,locked信号一直为低。

当没有串口模块的时候所有Aurora模块都正常,硬件上也查看了时钟,完全正常,所以排除外部时钟问题。   

时序报告里面没有任何告警,时序裕量大于0,而且串口是低速,高速接口 是时钟锁不定,和时序也不应该有关系。 

分析和测试过程

首先屏蔽了串口模块后可以正常,可以说明是串口模块里面某个部分影响到了Aurora。可以采用如下策略,先屏蔽一半代码,如果没有复现问题说明,影响因素在屏蔽的代码里面,反之亦然。

通过这种类似二分法的方法,最终发现主要是串口里面的VIO的影响,屏蔽VIO后串口和Aurora都正常。

由于VIO控制的信号和Aurora根本没有任何联系,所以打开了布局布线图查看了二者的分布情况,示意图如下:

红色底是Aurora的分布范围,白色的是串口模块,被Aurora包围了。尝试了一下手动布局让串口模块和Aurora不产生交叉,变成了下图所示:

布局变成上图所示后,除了布局外,没有任何其他改动,VIO也依然存在于串口中,但是串口和Aurora都可以正常工作了,也就是时钟锁定,channel up拉高,通信数据check完全正常。目前找到这里,只有在硬件上再查一查有什么漏掉的点可能出问题的。想从FPGA上下手找更加根本的原因目前还没想到更好的方法,欢迎各位和我讨论。

总结

1.规避问题的方法就是通过手动布局让两个模块不产生相互交叉。

2.初步怀疑vivado是否有bug,导致某些问题并没有报告出来,从而误导了开发人员

3.芯片来源可能不是正规渠道,本身有bug

4.根本原因尚未找到,查找和确定问题比较困难

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

全部0条评论

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

×
20
完善资料,
赚取积分