1.扇出太多引起的時序問題。
信號驅動非常大,扇出很大,需要增加驅動能力,如果單純考慮驅動能力可以嘗試增加buffer來解決驅動能力,但在插入buffer的同時增加了route的延時,容易出現時序報告評分問題。
解決該問題常用方法為進行驅動信號邏輯復制,即對扇出很大的信號產生邏輯進行多次復制,生成多路同頻同相的信號去驅動下級邏輯電路。保證了時延同時也增大了驅動能力。但是該方法在使用過程中可以和buffer一起使用,平衡資源利用率和時延,防止資源分配不均或者時序考慮不周。
解決該問題常用方法為進行驅動信號邏輯復制,即對扇出很大的信號產生邏輯進行多次復制,生成多路同頻同相的信號去驅動下級邏輯電路。保證了時延同時也增大了驅動能力。但是該方法在使用過程中可以和buffer一起使用,平衡資源利用率和時延,防止資源分配不均或者時序考慮不周。
2.對于時鐘頻率要求較高導致的上升沿下降沿對不同的寄存器操作的問題。
首先分析該問題產生原因,如果上升沿下降沿都使用,就相當于是電平觸發,電平觸發比時鐘沿觸發更容易受到干擾,所以一般不同時對一個時鐘的上升沿和下降沿分別對不同的寄存器操作。
1)將時鐘通過MMC或者PLL產生180相移產生新的時鐘,新的始終的上升沿就是原時鐘的下降沿,從而實現都為上升沿觸發。
2)使用全局時鐘資源中的INV實現對原時鐘信號取反,然后新的時鐘信號的上升沿就是原時鐘的下降沿。
另外對于其他方法要思考,比如對原時鐘信號進行倍頻實現上升沿下降沿均為上升沿,這個方法直接提升系統時鐘速率一倍,如果不是時鐘速度太高這個上升沿下降沿問題也不會出現了,故,該方法暫不考慮。還有就是對于時鐘的使用一定要使用PLL或者MMC這些專門的時鐘內核生成。
另外對于其他方法要思考,比如對原時鐘信號進行倍頻實現上升沿下降沿均為上升沿,這個方法直接提升系統時鐘速率一倍,如果不是時鐘速度太高這個上升沿下降沿問題也不會出現了,故,該方法暫不考慮。還有就是對于時鐘的使用一定要使用PLL或者MMC這些專門的時鐘內核生成。
3.布局太差導致的布線延遲太高問題
布線延遲太高問題一般有兩種情況:
1)一種是布線扇出太多導致的問題,另外再對扇出太多補充一點,扇出太多而增加buffer提高驅動能力,而普通I/O信號或片內信號進入BUFG到從BUFG輸出,有大約10ns的固定時延,但是BUFG到片內所有單元的延時可以忽略為0ns。這個問題在上篇中已經給出了解決方案,也就是通過邏輯復制的方法解決。
2)就是今天要說的問題,就是本身各種信號扇出并不多,邏輯時間也不是很大,但是布線延遲很大,這種問題就是布局太差的問題。
相應的解決方案有:通過ISE布局工具中調整布局的努力程度(effort level),特別努力程度(extra effort),MPPR選項,實在不行的話就嘗試使用Flootplanner相對區域約束重新對設計進行布局規劃。
4.就是出現邏輯級數過多情況
也就是邏輯計算時間比較大,這種情況一般不屬于時序問題,而屬于程序編寫問題,盡量不要嵌套IF ELSE語句或者CASE語句嵌套,能用CASE語句盡量不用IF ELSE語句,還有就是在使用IF 語句和CASE語句時注意防止產生不必要的鎖存器。
責任編輯:haq
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603019 -
驅動
+關注
關注
12文章
1838瀏覽量
85263 -
時鐘
+關注
關注
10文章
1733瀏覽量
131452
原文標題:FPGA時序問題與解決方法
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論