大神召唤
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.根本原因尚未找到,查找和确定问题比较困难
-
芯片
+关注
关注
452文章
50117浏览量
420315 -
串口通信
+关注
关注
34文章
1605浏览量
55350
原文标题:xc7vx690t使用中发现的一个不明BUG及规避
文章出处:【微信号:HaveFunFPGA,微信公众号:玩儿转FPGA】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论