大神召喚
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.根本原因尚未找到,查找和確定問題比較困難
-
芯片
+關注
關注
456文章
50927瀏覽量
424594 -
串口通信
+關注
關注
34文章
1627瀏覽量
55569
原文標題:xc7vx690t使用中發現的一個不明BUG及規避
文章出處:【微信號:HaveFunFPGA,微信公眾號:玩兒轉FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論