本篇博文將繼續(xù)介紹在Vitis中把Settings信息傳遞到底層的Vivado。
對于Vivado實現(xiàn)階段策略的指定:
--vivado.impl.strategies
舉例設(shè)置需要嘗試的實現(xiàn)策略:
--vivado.impl.strategies "Performance_Explore,Area_Explore"
對應(yīng)configure文件的內(nèi)容:
#Vivado Implementation Strategies [vivado] impl.strategies=Performance_Explore,Area_Explore
?
在Vivado中可以建立多個基于相同的綜合結(jié)果不同策略的impl run來嘗試在單次運行獲取更好的結(jié)果,而過去的Vitis一直以來只能支持單一的策略。這里我們可以看到Vitis 2020.2已經(jīng)可以支持同時在一個run中選擇多個策略進(jìn)行嘗試, 不同策略用逗號隔開,工具會自動選擇先滿足時序的策略來直接后續(xù)的步驟并生成XCLBIN文件。
如需等待所有策略都跑完再挑最好的結(jié)果,可以設(shè)置 --advanced.compiler 參數(shù)
[advanced] param=compiler.multiStrategiesWaitOnAllRuns=1
在Vivado工程中,可以看到有三個impl runs,一個default策略和另兩個用--vivado.impl.strategies 添加的 Performance_Explore和Area_Explore策略。
對于Vivado仿真階段選項的指定
舉例:意圖在仿真xelab階段覆蓋原有的timeunit, 在Vivado中需要執(zhí)行以下的命令: (關(guān)于仿真選項的具體含義,請參考UG900)
UG900 https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug9...
set_property -name {xsim.elaborate.xelab.more_options} -value {-override_timeunit -timescale 1ns/1ps} -objects [get_filesets sim_1]
相應(yīng)的v++ --link 的選項:
--vivado.prop=fileset.sim_1.xsim.elaborate.xelab.more_options={-override_timeunit -timescale 1ns/1ps}
對于Vivado綜合階段選項的指定
Vitis加速kernel設(shè)計實際是一個DFX的設(shè)計(關(guān)于DFX的內(nèi)容可以參考UG909),平臺的邏輯屬于靜態(tài)邏輯,其布局布線事先就已經(jīng)完成且鎖定. 包含kernel的邏輯屬于動態(tài)部分,需要單獨做out-of-context綜合并連接到平臺的既有網(wǎng)表中做in-context 實現(xiàn)。
UG909:https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug9...
加入我們期望對于這部分邏輯綜合采用 AreaOptimized_medium Directive,需要執(zhí)行的Vivado命令如下:
synth_design -top ulp -part xcu200-fsgd2104-2-e -mode out_of_context -directive AreaOptimized_medium
對應(yīng)的V++ --link選項是:
vivado.prop=run.my_rm_synth_1.STEPS.synth_DESIGN.ARGS.DIRECTIVE=AreaOptimized_medium
注意:在這里synht run的的名字是my_rm_synth_1,可能隨著Vitis版本或者平臺有變化,使用的時候需要注意是否需要做相應(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選項將各類Vivado的設(shè)置傳遞到底層Vivado工程的方法并舉例說明, 希望能幫助用戶在Vitis側(cè)能很精細(xì)地控制Vivado的各類屬性。
審核編輯:湯梓紅
評論
查看更多