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

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

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

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

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

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

評(píng)論