如何發(fā)現(xiàn)并解決FPGA設計中的時序問題
耗費數月精力做出的設計卻無法滿足時序要求,這確實非常令人傷心。然而,試圖正確地對設計進行約束以保證滿足時序要求的過程幾乎同樣令人費神。找到并確定時序約束本身通常也是非常令人頭痛的問題。
本文引用地址:http://cafeforensic.com/article/192151.htm時序問題的惱人之處在于沒有哪種方法能夠解決所有類型的問題。由于客戶對于和現(xiàn)場應用工程師共享源代碼通常非常敏感,因此我們通常都是通過將工具的潛力發(fā)揮到極致來幫助客戶解決其時序問題。當然好消息就是通過這種方法以及優(yōu)化RTL代碼,可以解決大多數時序問題。
但在深入探討之前,我們首先需要對時序問題進行一點基本分析。這里的目標是首先排除明顯的問題,如將時鐘引腳置于器件的上部、在器件下部驅動數字時鐘管理器(DCM),然后再在器件上部驅動全局緩沖(BUFG)。
有時,此類引腳布局會導致根本沒有辦法滿足時序要求。通過察看時序報告中的延遲,通??梢?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/發(fā)現(xiàn)">發(fā)現(xiàn)這些明顯的時序問題。在這些情況下,為了解決這些明顯的問題,都需要利用底層規(guī)劃工具“floorplanner”將造成問題的部分鎖定在適當的位置。底層布局規(guī)劃工具還可以幫助以可視的方式來理解時序問題。
用最新工具進行時序分析
假設問題并非這么明顯,那么為了鎖定問題所在,需要了解所使用的器件系列以及軟件版本。通常,每種器件系列對應一種最優(yōu)的軟件版本。如Xilinx Virtex-4器件對應的最佳軟件是ISE軟件9.2i版,而對Virtex-5 FPGA則是ISE軟件10.1版。
綜合工具的版本也很重要,因此當采用最新的器件架構時,下載并使用最新版軟件非常重要。軟件開發(fā)幾乎總是滯后于硬件功能,因此我不提倡使用舊版軟件進行基于新器件的設計。
然而,有些客戶由于擔心新的和未知的軟件缺陷而不愿意升級軟件。但是,在使用最新的器件時,如果希望更好地處理時序挑戰(zhàn),強烈建議下載最新版軟件。
擁有了最適用于目標器件系列的軟件,還需要確定最佳的實現(xiàn)選項??上?,并沒有適用于所有情況的超級選項組合。對于設計實現(xiàn)工具來說,有成千上萬種不同的實現(xiàn)選項組合。根據所使用的實現(xiàn)選項不同,時序分數(即所有存在錯誤的時序路徑與時序要求的差異總和,以皮秒表示)也會有很大不同。
賽靈思的幾款工具可幫助確定適用于特定設計的最佳實現(xiàn)選項。ISE軟件現(xiàn)在包括兩個工具:Xplorer以及最近發(fā)布的SmartXplorer。SmartXplorer可充分發(fā)揮多處理器優(yōu)點,能夠以不同選項組合運行多個實施實例。
SmartXplorer需要Linux支持,但使用非常容易。其命令行很簡單:smartxplorer designname.edn -p xc5vlx110t-1ff1136.
只要用戶約束文件(UCF)和網表約束文件(NCF)文件名相同,SmartXplorer會自動使用正確的選項。唯一需要做的是編輯主機列表文件。
SmartXplorer可以通過SSH/rsh安全shell登錄到其他機器。只需要在名為smartxplorer.hostlist的文件中將每臺機器一行將機器名字添加進去就可以了。如果機器有兩個處理器,請將機器列出兩次。表1給出了SmartXplorer的一組結果。
表1:對基于Virtex-5 FPGA的設計SmartXplorer 10.1的一個例子。
PlanAhead軟件也包括了與SmartXplorer類似的稱為ExploreAhead的功能。ExploreAhead支持同時在多臺Linux機器上分布式運行布局布線任務。所有這些工具的目的都是類似的:確定實現(xiàn)工具的最佳選項組合,以獲得最好的時序得分。
請注意選項的不同組合對于時序得分和運行時間的巨大影響。仔細調整綜合選項也非常重要。例如,在綜合選項中關閉結構層次(hierarchy)通常會大大提高性能。綜合過程中的約束條件好壞在滿足時序方面的作用也很突出。
評論