隨著FPGA規(guī)模的增大,設(shè)計(jì)復(fù)雜度的增加,Vivado編譯時(shí)間成為一個(gè)不可回避的話題。尤其是一些基于SSI芯片的設(shè)計(jì),如VU9P/VU13P/VU19P等,布局布線時(shí)間更是顯著增加。當(dāng)然,對(duì)于一些設(shè)計(jì)而言,十幾個(gè)小時(shí)是合理的。但我們依然試圖分析設(shè)計(jì)存在的問(wèn)題以期縮短編譯時(shí)間。
通常,綜合(Synthesis)所消耗的時(shí)間比布局布線要短,但從代碼風(fēng)格角度而言,我們也能找到一些端倪來(lái)縮短綜合所用的時(shí)間。如下圖所示代碼,左右兩側(cè)功能是一致的,區(qū)別在于左側(cè)采用了for generate語(yǔ)句,for循環(huán)里嵌套了always模塊;右側(cè)實(shí)際上不需要generate語(yǔ)句,always里直接使用了for循環(huán)(注意:實(shí)際上,這里不需要for循環(huán),只是為了說(shuō)明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í)間,這需要通過(guò)如下的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,如下圖所示??梢钥吹給pt_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)告。這可通過(guò)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à)來(lái)縮短編譯時(shí)間的。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601231 -
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420826 -
編譯時(shí)間
+關(guān)注
關(guān)注
0文章
4瀏覽量
5483 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66221
原文標(biāo)題:再談Vivado編譯時(shí)間
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論