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