在Vitis 統一軟件平臺中使用Alveo系列開發板設計加速Kernel時,系統會自動為Kernel的時鐘設置默認頻率.
以 xilinx_u200_qdma_201910_1 平臺為例,在Vitis中選擇平臺時可以看到默認的時鐘頻率是300Mhz和500Mhz.

在Vitis Application Acceleration Development Flow 中我們看到 --kernel_frequency 選項可以用于覆蓋默認的 Kernel 頻率
(https://www.xilinx.com/html_docs/xilinx2020_2/vitis_doc/buildtargets1.html#ldh1504034328524)

那么 --kernel_frequency設置在Compile階段或者Link階段有什么區別呢?
我們以經典 Example design“Vector Addition” 為例探索一下:
1. 打開Vitis 2020.2,創建新的 Application Project
File -> New -> Application project
2. 選擇 xilinx_u200_qdma_201910_1 平臺
3. 選擇打開 Example Design "Vector Addition"
4.對 Hardware Flow 在Compile階段設置“kernel_frequency” 為200MHz,然后編譯工程
注意:默認的Kernel頻率只允許改小,不允許改大.

在log看到執行的命令是:
v++ --target hw --compile --kernel_frequency 200 …
5. Compile Kernel 完成后可以在Compile Summary中看到“--kernel_frequency 200" 已經設置成功.

在Kernel Estimate報告中,可以看到,Target Clock已經按要求設置成200Mhz. 說明 Vitis_HLS是按照200Mhz的要求來綜合Kernel的代碼的.

在Link Summary中可以看到,在把Kernel合入平臺后的Implementation中,目標時鐘還是平臺默認的300Mhz,而不是在Compile 階段設置的200Mhz.

同時我們也可以翻看Implemented Design的時序報告(Timing Summary)查看Kernel實際的時鐘要求:
clk_out1_pfm_top_clkwiz_kernel_0_1 {0.000 1.667} 3.333 300.000
6. 在Link階段加上“--kernel_frequency 100" 選項

在log看到執行的命令是:
v++ --target hw --link -R2 --kernel_frequency 100 …
7. 完成Hardware Build之后,查看Summary,可以看到這時100Mhz Kernel 頻率的設置在整個Vitis Platform Link生效, 覆蓋默認的300Mhz

和之前一樣翻看Implemented Design的時序報告(Timing Summary)查看Kernel實際的時鐘要求,kernel的目標頻率已經被正確修改了.
clk_out1_pfm_top_clkwiz_kernel_0_1 {0.000 5.000} 10.000 100.000
總結:
選項“--kernel_frequency" 加在Compile階段,影響的是對Kernel做高級綜合的Vitis_HLS的目標頻率,不影響Kernel合入平臺后的Implementation的目標頻率;
選項“--kernel_frequency" 加在Link階段, 不會影響對Kernel做高級綜合的Vitis_HLS的默認目標時鐘頻率,但是可以設置Kernel合入平臺后的Implementation的目標頻率


