--clock
选项用于在编译 AI 引擎、HLS 内核以及链接设计期间分配时钟频率。--part
选项和 --platform
选项均支持该选项。如不提供选项,Vitis 会根据所选相应模式(如下表所示)分配默认时钟。
V++ | -c --mode aie | -c --mode hls | -c -k | -l |
---|---|---|---|---|
--part | AIE PLL 频率的 ¼ | 默认 HLS (100 MHz) | 不适用 | 针对 Versal 器件分配 300 MHz |
--platform | 默认平台时钟频率 | 默认平台时钟频率 | 默认平台时钟频率 | 默认平台时钟频率 |
不同 v++ -c
模式和 v++ -l
有不同时钟指令。--freqhz
是 2023.2 中引入的全新时钟指令,可在所有 v++ -c
模式和 v++ -l
下使用,以帮助您在所有不同模式下都能使用单一时钟指令。旧指令仍受支持。
有两种方法可搭配使用 --clock
选项来将内核连接到指定频率:
-
--clock.freqhz
或--freqhz
:该选项用于将指定时钟频率从平台连接至内核。如果平台有一个或多个时钟处于指定的频率,则将选中其中之一。如果平台不含指定频率,则可使用平台参考时钟生成指定频率。 -
--clock.id
该选项也可用于将指定时钟频率连接到内核;但在该选项中,时钟被视为时钟源。该选项可用于在同一时钟源上连接单个或多个内核。请参阅以下示例以获取详细信息。
要确定 xilinx_vck190_base_bdc_202320_1.xpfm
平台中可用的固定时钟,请执行以下操作:
Plaftorminfo ../ xilinx_vck190_base_bdc_202320_1.xpfm
请参阅报告中的“Clock Information”(时钟信息):
=================
Clock Information
=================
Default Clock Index: 2
Clock Index: 0
Frequency: 104.166666
Clock Index: 1
Frequency: 156.250000
Clock Index: 2
Frequency: 312.500000
Clock Index: 3
Frequency: 78.125000
Clock Index: 4
Frequency: 208.333333
Clock Index: 5
Frequency: 416.666666
Clock Index: 6
Frequency: 625.000000
假设您要将内核 X 连接到 312.5 MHz 并将内核 Y 连接到 625.00 MHz,并且这两个频率均在平台内生成。建议在编译和链接阶段,使用 --freqhz
选项将特定时钟分配给内核 X 和 Y。
在编译模式(v++ -c --mode aie
或 v++ -c --mode hls
)下,可按如下所示在 CLI 内使用 --clock
选项 --freqhz
:
v++ -c --mode hls --platform <xx.xpfm> --freqhz=312500000 --config ./X.cfg
v++ -c --mode hls --platform <xx.xpfm> --freqhz=625000000 --config ./Y.cfg
在配置文件中可按如下方式提供该项。
针对 X.cfg 文件:
[clock]
freqhz=312500000
针对 Y.cfg 文件:
[clock]
freqhz=625000000
在链接模式 (v++ -l
) 下,语法为 <cu>.<clk_pin_name>
。
在 CLI 中,此命令可用作为:
v++ -l -t hw --platform ./<.xpfm> ./libadf.a ./Y.xo --freqhz=312500000:X.clk
--freqhz=625000000:Y.clk -s --config ./system.cfg -o fixed.xsa
--freqhz=312500000:X.clk
--freqhz=625000000:Y.clk
。在配置文件中可按如下方式提供该项:
[clock]
freqhz=312500000: X.clk
freqhz=625000000 : Y.clk
此处,clk
是内核的管脚名称。
clock
指令可在 CLI 中或在配置文件中使用。--clock.tolerance
--clock.tolerance <arg>
指定时钟容限,可采用值的形式或者时钟频率的百分比的形式。指定 --clock.freqhz
时,您还可指定容限(值或百分比)。这样即可更新时序约束以反映接受的容限。<arg> 指定为 <tolerance>:<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]
-
<tolerance>
-
- 可指定为整数(表示
clock.freqhz
± 指定容限值);或者指定时钟频率(指定为十进制值)的百分比。 -
<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]
:将定义的时钟容限应用于指定 CU 和(可选)CU 上的指定时钟管脚。
- 可指定为整数(表示
-
<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]
- 将定义的时钟容限应用于指定 CU 和(可选)CU 上的指定时钟管脚。
例如:
v++ --link --clock.tolerance 0.10:vadd_1,vadd_3
[clock]
节头下可使用如下格式指定该选项:[clock]
tolerance=0.10:vadd_1,vadd_3