在Vivado Implementation階段,有時(shí)是有必要分析一下什么原因?qū)е逻\(yùn)行時(shí)間(runtime)過(guò)長(zhǎng),從而找到一些方法來(lái)縮短運(yùn)行時(shí)間。
首先,要明確到底哪個(gè)階段耗時(shí)過(guò)長(zhǎng)。Vivado Implementation主要有三個(gè)子步驟:opt_design、place_design和route_design。Implementation結(jié)束后,會(huì)在"
可采用如下一些方法縮短運(yùn)行時(shí)間。
Implementation Strategy
如果只是評(píng)估資源利用率,可使用Flow_Quick策略。該策略不是時(shí)序驅(qū)動(dòng)的策略,因此可以快速執(zhí)行Implementation。策略Flow_RuntimeOptimized是時(shí)序驅(qū)動(dòng)的策略,可以快速完成Implementation,它是設(shè)計(jì)性能和運(yùn)行時(shí)間之間一種折中。
檢查約束
對(duì)于時(shí)序約束,我們要求“干凈且合理”。所謂“干凈”,是指約束完備,不會(huì)出現(xiàn)漏約或者約束被覆蓋的情形。例如,由于set_clock_groups的優(yōu)先級(jí)高于set_max_delay,這就有可能造成后者的約束被覆蓋。所謂“合理”,是指約束的數(shù)值是正確的。這在多周期路徑約束以及跨時(shí)鐘域路徑約束中會(huì)經(jīng)常碰到,對(duì)于這類路徑要格外注意。例如,如果多周期路徑的hold requirement不是0,那么有可能就是約束不合理;如果跨時(shí)鐘域路徑的path requirement為1ns,這也是不合理的。
此外,在用Tcl命令時(shí),盡可能地去緩存被復(fù)用的對(duì)象。例如,如果通過(guò)get_nets獲得的一組nets在后續(xù)約束中被反復(fù)使用,那么可將get_nets的返回結(jié)果賦給一個(gè)變量,后續(xù)使用時(shí)只需調(diào)用該變量即可。同時(shí),通過(guò)選項(xiàng)-filter找到更準(zhǔn)確的對(duì)象,例如:對(duì)于時(shí)序路徑,通過(guò)屬性IS_SEQUENTIAL找到時(shí)序單元,從而避免了獲得其他一些不期望的結(jié)果。
約束路徑越具體越節(jié)省運(yùn)行時(shí)間,例如:如果set_false_path只使用了-from選項(xiàng),那么Vivado在搜索這些路徑時(shí)就會(huì)比較耗時(shí)。
管理生成報(bào)告
生成報(bào)告也會(huì)消耗一些時(shí)間。Vivado提供了Report strategy,如下圖所示。根據(jù)設(shè)計(jì)分析的需求選擇生成報(bào)告可節(jié)省一定的運(yùn)行時(shí)間。
布線
擁塞對(duì)運(yùn)行時(shí)間有很大的影響。因此,如果設(shè)計(jì)出現(xiàn)了擁塞問(wèn)題,就要把其作為首要問(wèn)題去解決。同時(shí),在route_design階段,使用選項(xiàng)-ultrathreads也可縮短運(yùn)行時(shí)間。
增量編譯
如果設(shè)計(jì)只是有一小部分改動(dòng),那么可嘗試增量Implementation。這在一定程度上也會(huì)縮短運(yùn)行時(shí)間。
設(shè)置多線程
Vivado 2018.x的版本,無(wú)論是Synthesis還是Implementation,都可以支持多線程。只需要通過(guò)如下命令即可設(shè)置線程個(gè)數(shù)。對(duì)于Synthesis,最大線程數(shù)為4,對(duì)于Implementation,最大線程數(shù)為8。
ECO流程
對(duì)于微小的改動(dòng),例如修改ILA的Debug probes或者把內(nèi)部net鏈接到某個(gè)Package Pin,都可以采用ECO流程,可以極大地縮短運(yùn)行時(shí)間。ECO具體流程可看這里(替換Debug Probes其實(shí)很簡(jiǎn)單),文檔ug904中也有詳細(xì)介紹。
-
Vivado
+關(guān)注
關(guān)注
19文章
815瀏覽量
66889 -
時(shí)序驅(qū)動(dòng)
+關(guān)注
關(guān)注
0文章
4瀏覽量
1517
原文標(biāo)題:如何縮短Vivado運(yùn)行時(shí)間
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何檢查L(zhǎng)inux服務(wù)器的運(yùn)行時(shí)間
![如何檢查L(zhǎng)inux服務(wù)器的<b class='flag-5'>運(yùn)行時(shí)間</b>](https://file.elecfans.com/web2/M00/7D/AF/poYBAGOAbC2AFa3XAABWLqOp3eI136.png)
運(yùn)行時(shí)錯(cuò)誤Vivado 2016.2
雙電池電源管理器使運(yùn)行時(shí)間延長(zhǎng)12%,并將充電時(shí)間縮短一半
freertos的任務(wù)運(yùn)行時(shí)間怎么設(shè)置
C語(yǔ)言教程之顯示程序運(yùn)行時(shí)間
如何用SysTick實(shí)現(xiàn)測(cè)量程序運(yùn)行時(shí)間
![如何用SysTick實(shí)現(xiàn)測(cè)量程序<b class='flag-5'>運(yùn)行時(shí)間</b>](https://file.elecfans.com/web1/M00/50/62/pIYBAFrykXeAQcU0AAMDRBP-0o0211.png)
電機(jī)運(yùn)行時(shí)間進(jìn)行排列 是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的
![電機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>進(jìn)行排列 是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的](https://file.elecfans.com/web1/M00/9D/0F/o4YBAF0xFcKAEN4-AAAo2bQgq_4613.png)
最大化延長(zhǎng)即使具有老化電池的汽車電池組運(yùn)行時(shí)間
![最大化延長(zhǎng)即使具有老化電池的汽車電池組<b class='flag-5'>運(yùn)行時(shí)間</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DN277-雙電池電源管理器將運(yùn)行時(shí)間提高12%,并將充電時(shí)間縮短一半
![DN277-雙電池電源管理器將<b class='flag-5'>運(yùn)行時(shí)間</b>提高12%,并將充電<b class='flag-5'>時(shí)間</b><b class='flag-5'>縮短</b>一半](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何高效測(cè)量ECU的運(yùn)行時(shí)間
淺析STM32代碼運(yùn)行時(shí)間的技巧
![淺析STM32代碼<b class='flag-5'>運(yùn)行時(shí)間</b>的技巧](https://file.elecfans.com/web2/M00/1C/03/pYYBAGGJ1TqAPAOcAAAl1aur50g531.png)
單片雙電池電源管理器可延長(zhǎng)運(yùn)行時(shí)間并縮短充電時(shí)間
![單片雙電池電源管理器可延長(zhǎng)<b class='flag-5'>運(yùn)行時(shí)間</b>并<b class='flag-5'>縮短</b>充電<b class='flag-5'>時(shí)間</b>](https://file.elecfans.com/web2/M00/96/C6/poYBAGQJoXKAOmjfAAERQYRU8EQ821.png)
ch32v307記錄程序運(yùn)行時(shí)間
西門子SCL編程50臺(tái)電機(jī)運(yùn)行時(shí)間累計(jì)方法
![西門子SCL編程50臺(tái)電機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>累計(jì)方法](https://file1.elecfans.com/web2/M00/B3/14/wKgZomVj-KGAHw4uAAAdcQDx_Pk799.png)
評(píng)論