新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 如何發現并解決FPGA設計中的時序問題

        如何發現并解決FPGA設計中的時序問題

        作者: 時間:2009-03-02 來源:網絡 收藏

        耗費數月精力做出的設計卻無法滿足要求,這確實非常令人傷心。然而,試圖正確地對設計進行約束以保證滿足要求的過程幾乎同樣令人費神。找到并確定約束本身通常也是非常令人頭痛的問題。

        本文引用地址:http://www.104case.com/article/192151.htm

        時序問題的惱人之處在于沒有哪種方法能夠解決所有類型的問題。由于客戶對于和現場應用工程師共享源代碼通常非常敏感,因此我們通常都是通過將工具的潛力發揮到極致來幫助客戶解決其時序問題。當然好消息就是通過這種方法以及優化RTL代碼,可以解決大多數時序問題。


        但在深入探討之前,我們首先需要對時序問題進行一點基本分析。這里的目標是首先排除明顯的問題,如將時鐘引腳置于器件的上部、在器件下部驅動數字時鐘管理器(DCM),然后再在器件上部驅動全局緩沖(BUFG)。


        有時,此類引腳布局會導致根本沒有辦法滿足時序要求。通過察看時序報告中的延遲,通常可以這些明顯的時序問題。在這些情況下,為了解決這些明顯的問題,都需要利用底層規劃工具“floorplanner”將造成問題的部分鎖定在適當的位置。底層布局規劃工具還可以幫助以可視的方式來理解時序問題。


        用最新工具進行時序分析


        假設問題并非這么明顯,那么為了鎖定問題所在,需要了解所使用的器件系列以及軟件版本。通常,每種器件系列對應一種最優的軟件版本。如Xilinx Virtex-4器件對應的最佳軟件是ISE軟件9.2i版,而對Virtex-5 則是ISE軟件10.1版。


        綜合工具的版本也很重要,因此當采用最新的器件架構時,下載并使用最新版軟件非常重要。軟件開發幾乎總是滯后于硬件功能,因此我不提倡使用舊版軟件進行基于新器件的設計。


        然而,有些客戶由于擔心新的和未知的軟件缺陷而不愿意升級軟件。但是,在使用最新的器件時,如果希望更好地處理時序挑戰,強烈建議下載最新版軟件。


        擁有了最適用于目標器件系列的軟件,還需要確定最佳的實現選項。可惜,并沒有適用于所有情況的超級選項組合。對于設計實現工具來說,有成千上萬種不同的實現選項組合。根據所使用的實現選項不同,時序分數(即所有存在錯誤的時序路徑與時序要求的差異總和,以皮秒表示)也會有很大不同。


        賽靈思的幾款工具可幫助確定適用于特定設計的最佳實現選項。ISE軟件現在包括兩個工具:Xplorer以及最近發布的SmartXplorer。SmartXplorer可充分發揮多處理器優點,能夠以不同選項組合運行多個實施實例。


        SmartXplorer需要Linux支持,但使用非常容易。其命令行很簡單:smartxplorer designname.edn -p xc5vlx110t-1ff1136.


        只要用戶約束文件(UCF)和網表約束文件(NCF)文件名相同,SmartXplorer會自動使用正確的選項。唯一需要做的是編輯主機列表文件。


        SmartXplorer可以通過SSH/rsh安全shell登錄到其他機器。只需要在名為smartxplorer.hostlist的文件中將每臺機器一行將機器名字添加進去就可以了。如果機器有兩個處理器,請將機器列出兩次。表1給出了SmartXplorer的一組結果。

        表1:對基于Virtex-5 的設計SmartXplorer 10.1的一個例子。

        PlanAhead軟件也包括了與SmartXplorer類似的稱為ExploreAhead的功能。ExploreAhead支持同時在多臺Linux機器上分布式運行布局布線任務。所有這些工具的目的都是類似的:確定實現工具的最佳選項組合,以獲得最好的時序得分。


        請注意選項的不同組合對于時序得分和運行時間的巨大影響。仔細調整綜合選項也非常重要。例如,在綜合選項中關閉結構層次(hierarchy)通常會大大提高性能。綜合過程中的約束條件好壞在滿足時序方面的作用也很突出。


        上一頁 1 2 3 下一頁

        關鍵詞: FPGA 發現 時序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上高县| 通化市| 济南市| 隆昌县| 香港| 长兴县| 沈阳市| 咸宁市| 桦南县| 洛阳市| 汉中市| 布尔津县| 济源市| 安阳县| 肇庆市| 会昌县| 崇州市| 田阳县| 长沙市| 昌乐县| 淮安市| 深州市| 拉孜县| 红安县| 兰溪市| 任丘市| 凤冈县| 公安县| 栾城县| 陆川县| 太仆寺旗| 连平县| 务川| 宁海县| 绥阳县| 西乌| 仪征市| 中山市| 崇信县| 忻州市| 肇东市|