本篇文章來(lái)自賽靈思高級(jí)工具產(chǎn)品應(yīng)用工程師 Hong Han.
本篇博文將繼續(xù)介紹在Vitis中把Settings信息傳遞到底層的Vivado.
對(duì)于Vivado實(shí)現(xiàn)階段策略的指定:
--vivado.impl.strategies
舉例設(shè)置需要嘗試的實(shí)現(xiàn)策略:
--vivado.impl.strategies “Performance_Explore,Area_Explore”
對(duì)應(yīng)configure文件的內(nèi)容:
#Vivado Implementation Strategies
[vivado]
impl.strategies=Performance_Explore,Area_Explore
在Vivado中可以建立多個(gè)基于相同的綜合結(jié)果不同策略的impl run來(lái)嘗試在單次運(yùn)行獲取更好的結(jié)果,而過去的Vitis一直以來(lái)只能支持單一的策略。這里我們可以看到Vitis 2020.2已經(jīng)可以支持同時(shí)在一個(gè)run中選擇多個(gè)策略進(jìn)行嘗試, 不同策略用逗號(hào)隔開,工具會(huì)自動(dòng)選擇先滿足時(shí)序的策略來(lái)直接后續(xù)的步驟并生成XCLBIN文件。
如需等待所有策略都跑完再挑最好的結(jié)果,可以設(shè)置 --advanced.compiler 參數(shù)
[advanced]
param=compiler.multiStrategiesWaitOnAllRuns=1
在Vivado工程中,可以看到有三個(gè)impl runs,一個(gè)default策略和另兩個(gè)用--vivado.impl.strategies 添加的 Performance_Explore和Area_Explore策略。
對(duì)于Vivado仿真階段選項(xiàng)的指定
舉例:意圖在仿真xelab階段覆蓋原有的timeunit, 在Vivado中需要執(zhí)行以下的命令: (關(guān)于仿真選項(xiàng)的具體含義,請(qǐng)參考UG900)
UG900 https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug900-vivado-logic-simulation.pdf
set_property -name {xsim.elaborate.xelab.more_options} -value {-override_timeunit -timescale 1ns/1ps} -objects [get_filesets sim_1]
相應(yīng)的v++ --link 的選項(xiàng):
--vivado.prop=fileset.sim_1.xsim.elaborate.xelab.more_options={-override_timeunit -timescale 1ns/1ps}
對(duì)于Vivado綜合階段選項(xiàng)的指定
Vitis加速kernel設(shè)計(jì)實(shí)際是一個(gè)DFX的設(shè)計(jì)(關(guān)于DFX的內(nèi)容可以參考UG909),平臺(tái)的邏輯屬于靜態(tài)邏輯,其布局布線事先就已經(jīng)完成且鎖定。 包含kernel的邏輯屬于動(dòng)態(tài)部分,需要單獨(dú)做out-of-context綜合并連接到平臺(tái)的既有網(wǎng)表中做in-context 實(shí)現(xiàn)。
UG909:https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug909-vivado-partial-reconfiguration.pdf
加入我們期望對(duì)于這部分邏輯綜合采用 AreaOptimized_medium Directive,需要執(zhí)行的Vivado命令如下:
synth_design -top ulp -part xcu200-fsgd2104-2-e -mode out_of_context -directive AreaOptimized_medium
對(duì)應(yīng)的V++ --link選項(xiàng)是:
vivado.prop=run.my_rm_synth_1.STEPS.synth_DESIGN.ARGS.DIRECTIVE=AreaOptimized_medium
注意:在這里synht run的的名字是my_rm_synth_1,可能隨著Vitis版本或者平臺(tái)有變化,使用的時(shí)候需要注意是否需要做相應(yīng)的修改。
在底層Vivado工程的synth run的log文件中可以看到綜合的Directive已經(jīng)成功改為之前設(shè)置的值A(chǔ)reaOptimized_medium
其他的Vivado屬性指定:
--export_script/--custom_script: 導(dǎo)出腳本/使用用戶腳本定制編譯和連接的過程
--remote_ip_cache: 指定遠(yuǎn)程IP Cache 目錄
--no_ip_cache: 關(guān)閉IP Cache
總結(jié):在這里介紹了通過Vitis選項(xiàng)將各類Vivado的設(shè)置傳遞到底層Vivado工程的方法并舉例說(shuō)明, 希望能幫助用戶在Vitis側(cè)能很精細(xì)地控制Vivado的各類屬性。
編輯:jq
-
編譯
+關(guān)注
關(guān)注
0文章
657瀏覽量
32852 -
DFx
+關(guān)注
關(guān)注
0文章
35瀏覽量
10539 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66472
原文標(biāo)題:開發(fā)者分享 | 如何在Vitis中把設(shè)置信息傳遞到底層的Vivado (下)
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論