在Vivado Implementation階段,有時是有必要分析一下什么原因?qū)е逻\行時間(runtime)過長,從而找到一些方法來縮短運行時間。
首先,要明確到底哪個階段耗時過長。Vivado Implementation主要有三個子步驟:opt_design、place_design和route_design。Implementation結(jié)束后,會在"
可采用如下一些方法縮短運行時間。
Implementation Strategy
如果只是評估資源利用率,可使用Flow_Quick策略。該策略不是時序驅(qū)動的策略,因此可以快速執(zhí)行Implementation。策略Flow_RuntimeOptimized是時序驅(qū)動的策略,可以快速完成Implementation,它是設(shè)計性能和運行時間之間一種折中。
檢查約束
對于時序約束,我們要求“干凈且合理”。所謂“干凈”,是指約束完備,不會出現(xiàn)漏約或者約束被覆蓋的情形。例如,由于set_clock_groups的優(yōu)先級高于set_max_delay,這就有可能造成后者的約束被覆蓋。所謂“合理”,是指約束的數(shù)值是正確的。這在多周期路徑約束以及跨時鐘域路徑約束中會經(jīng)常碰到,對于這類路徑要格外注意。例如,如果多周期路徑的hold requirement不是0,那么有可能就是約束不合理;如果跨時鐘域路徑的path requirement為1ns,這也是不合理的。
此外,在用Tcl命令時,盡可能地去緩存被復用的對象。例如,如果通過get_nets獲得的一組nets在后續(xù)約束中被反復使用,那么可將get_nets的返回結(jié)果賦給一個變量,后續(xù)使用時只需調(diào)用該變量即可。同時,通過選項-filter找到更準確的對象,例如:對于時序路徑,通過屬性IS_SEQUENTIAL找到時序單元,從而避免了獲得其他一些不期望的結(jié)果。
約束路徑越具體越節(jié)省運行時間,例如:如果set_false_path只使用了-from選項,那么Vivado在搜索這些路徑時就會比較耗時。
管理生成報告
生成報告也會消耗一些時間。Vivado提供了Report strategy,如下圖所示。根據(jù)設(shè)計分析的需求選擇生成報告可節(jié)省一定的運行時間。
布線
擁塞對運行時間有很大的影響。因此,如果設(shè)計出現(xiàn)了擁塞問題,就要把其作為首要問題去解決。同時,在route_design階段,使用選項-ultrathreads也可縮短運行時間。
增量編譯
如果設(shè)計只是有一小部分改動,那么可嘗試增量Implementation。這在一定程度上也會縮短運行時間。
設(shè)置多線程
Vivado 2018.x的版本,無論是Synthesis還是Implementation,都可以支持多線程。只需要通過如下命令即可設(shè)置線程個數(shù)。對于Synthesis,最大線程數(shù)為4,對于Implementation,最大線程數(shù)為8。
ECO流程
對于微小的改動,例如修改ILA的Debug probes或者把內(nèi)部net鏈接到某個Package Pin,都可以采用ECO流程,可以極大地縮短運行時間。ECO具體流程可看這里(替換Debug Probes其實很簡單),文檔ug904中也有詳細介紹。
-
Vivado
+關(guān)注
關(guān)注
19文章
808瀏覽量
66321 -
時序驅(qū)動
+關(guān)注
關(guān)注
0文章
4瀏覽量
1497
原文標題:如何縮短Vivado運行時間
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論