FPGA中的速度優化
一、邏輯設計中的速度概念
邏輯設計速度相關的概念有三個:設計吞吐量、設計延時和設計時序。速度優化策略而言,吞吐量需要提高,延時應該降低,時序應該收斂(時序余量slave越大,收斂越強,移植性越好)。吞吐量提高的方法一般是采用大的並行設計,延時降低的方法則是采用緩存結構或者並行結構,時序收斂則需要綜合考慮。
二、時序收斂的早期考慮
問題發現的越早,解決的成本越低。時序收斂考慮地越早,后面可能的問題就會越少。
先看一下標准FPGA設計流程:
(1)制定設計指導文件
(2)設計功能代碼
(3)進行功能仿真
(4)編譯設計
(5)時序分析
(6)時序調整直至時序收斂
在設計之初,大部分考慮都集中在如何實現功能上,而容易忽略時序問題。在制定指導文件時,應該建立時序收斂的概念,最好能提前對某些信號轉換區給出時序約束圖,通過設計提前消除隱患。
三、時序收斂的設計考慮
設計中,也就是得到時序分析報告后所需要的措施。時序分析報告會給出最大時鍾頻率的報告,這個參數直接決定了電路的時序收斂等級(頻率越高,收斂越好)。整個設計中的考慮也是依靠對這個參數的優化來展開的。最大時鍾頻率相關參數有五個:
Tclk-q:時鍾到達啟動觸發器時鍾端,數據到達Q端(也就是觸發器輸出端)的延時,。
Tlogic:啟動觸發器和鎖存觸發器之間的延時
Trouting:布線延時,這個是EDA工具調整時序收斂常改變的參數。
Tsetup:建立時間,數據到達鎖存觸發器D端,時鍾最快到達時間。
Tsekw:時鍾偏斜,時鍾到達啟動觸發器和鎖存觸發器之間的延時。
這五個參數中只有最后一個是正相關,其他都是負相關。所有在某些設計中,會人為制造Tskew來滿足高速時序收斂。
四、時序收斂的總體考慮
總體考慮的基本原則:
①提前規划,有備無患②實時對應門級層次③預先計算資源用量,選擇合適器件④並行原則,同步原則
具體優化方法則是需要在設計中一一驗證。
(1)在關鍵路徑上減少組合邏輯
關鍵路徑,就是時序收斂最差的路徑。這里是典型的水桶效應,將別的長木板鋸下來補足短板,可以有效提高某些關鍵短板導致的收斂問題。減少組合邏輯,也就是減少Tlogic。至於如何減少,就根據邏輯表達式增加並行結構了,調整位置有時也可以做到。
(2)適當加入邏輯復制
邏輯復制,就是將一個信號作為多個輸入改為若干個復制信號作為多個輸入,從而減低扇出。扇出對邏輯延時的影響就好像工人工作時間對工作量的影響,要求工人必須同時開始同時結束,必然導致整體效率下降,增加工作時間的靈活性可以緩解工作壓力。當然,邏輯復制也會增加資源消耗。寄存器邏輯復制不能解決內部寄存器的時序,但可以優化寄存器之間的時序。組合邏輯復制同樣可以優化這邏輯之間的時序關系。而且,邏輯復制可以在布局布線層次上實現更好地效果,緩解面積緊張。
(3)在組合邏輯中加入寄存器
組合邏輯延時過大,會直接降低最大時鍾頻率,這時候在組合邏輯中間插入寄存器暫存,可以讓數據歇一會,從而緩解時序緊張。也是降低邏輯延時的一種方法。
(4)寄存器平衡優化
常見的平衡優化有操作符平衡,就是使用括號將操作符盡量實現對稱來保證硬件結構上的對稱,進而減少關鍵路徑的長度。
寄存器平衡,在Altera中被定義為寄存器重定時,通過移動關鍵路徑和相鄰路徑上的組合邏輯來實現時序性能的提高
(5)並行結構優化
就是盡可能將輸入應用起來。
(6)消除優先級
優先級,在if語句中體現尤為明顯,對於選擇結構,可以不考慮優先級,就可以使用case來編寫,消除優先級,進而提高時序收斂性。
五、小結
時序收斂是時序是否符合要求的體現,掌握代碼設計時的時序收斂方法是重要的。