隨著FPGA規(guī)模的增大,設(shè)計復(fù)雜度的增加,Vivado編譯時間成為一個不可回避的話題。尤其是一些基于SSI芯片的設(shè)計,如VU9P/VU13P/VU19P等,布局布線時間更是顯著增加。當(dāng)然,對于一些設(shè)計而言,十幾個小時是合理的。但我們依然試圖分析設(shè)計存在的問題以期縮短編譯時間。
通常,綜合(Synthesis)所消耗的時間比布局布線要短,但從代碼風(fēng)格角度而言,我們也能找到一些端倪來縮短綜合所用的時間。如下圖所示代碼,左右兩側(cè)功能是一致的,區(qū)別在于左側(cè)采用了for generate語句,for循環(huán)里嵌套了always模塊;右側(cè)實(shí)際上不需要generate語句,always里直接使用了for循環(huán)(注意:實(shí)際上,這里不需要for循環(huán),只是為了說明for循環(huán)對編譯時間的影響)。單獨(dú)對左側(cè)模塊采用OOC綜合,耗時2分鐘;而右側(cè)耗時1分鐘。因此,我們在用for循環(huán)時要謹(jǐn)慎一些。
Vivado還支持多線程可進(jìn)一步縮短編譯時間,這需要通過如下的Tcl腳本進(jìn)行設(shè)置。綜合階段,Vivado可支持的最大線程數(shù)為4。布局布線階段,可支持的最大線程數(shù)為8(Windows系統(tǒng)默認(rèn)值為2,Linux系統(tǒng)默認(rèn)值為8)。實(shí)際上,DRC檢查、靜態(tài)時序分析和物理優(yōu)化也支持多線程,最大線程數(shù)為8。我們可以在log文件中查看到當(dāng)前使用的線程數(shù)。
set_param general.maxThreads 4
在Vivado Design Run窗口,我們可以查看到整個設(shè)計綜合和實(shí)現(xiàn)的耗時,如下圖所示。對于實(shí)現(xiàn)各個子階段的耗時就需要在log文件中查看。只需要搜索關(guān)鍵字Ending,如下圖所示。可以看到opt_design耗時3分鐘,place_design耗時1小時45分鐘,phys_opt_design耗時20分鐘,route_design耗時3小時27分鐘。
Vivado還提供了報告策略,如下圖所示。本身生成報告也是需要時間的,因此可根據(jù)設(shè)計需要選擇報告策略,去除不必要的報告以節(jié)省時間。同時,對于已確定的報告策略仍然可以進(jìn)一步編輯,增加期望的報告或者刪除不需要的報告。這可通過Report窗口中的Add Report或Remove Report/Disable Report完成。
通常,布線是耗時最長的部分,為此Vivado對route_design提供了選項(xiàng)-ultrathreads,其目的是使布線器更快的運(yùn)行,但是以犧牲結(jié)果的一致性為代價的。
從策略角度看,如果僅僅是為了評估資源利用率,那么Implementation Strategy可以選擇Flow_Quick。如果時序裕量比較大,那么也可以選擇Flow_RuntimeOptimized,該策略是以犧牲性能為代價來縮短編譯時間的。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21949瀏覽量
613711 -
芯片
+關(guān)注
關(guān)注
459文章
52112瀏覽量
435543 -
編譯時間
+關(guān)注
關(guān)注
0文章
4瀏覽量
5557 -
Vivado
+關(guān)注
關(guān)注
19文章
828瀏覽量
68166
原文標(biāo)題:再談Vivado編譯時間
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何縮短Vivado的運(yùn)行時間

淺析可提升Vivado編譯效率的增量編譯方法
誰能縮短大容量FPGA的編譯時間?增量式編譯QIC!
Vivado中的Incremental Compile增量編譯技術(shù)詳解
Vivado Design Suite 2015.3新增量編譯功能介紹
Vivado 2015.3中的新增量編譯功能介紹
Vivado 2015.3的新增量編譯功能
講述增量編譯方法,提高Vivado編譯效率

賽靈思Vivado ML版優(yōu)化應(yīng)用設(shè)計

Vivado里如何手動調(diào)整編譯順序
Vivado增量編譯的基本概念、優(yōu)點(diǎn)、使用方法以及注意事項(xiàng)

Vivado那些事兒:節(jié)省編譯時間系列文章

Vivado編譯常見錯誤與關(guān)鍵警告梳理與解析
每次Vivado編譯的結(jié)果都一樣嗎

評論