--clock
options described here are only supported by
platform shells with fixed status clocks as described in Identifying Platform Clocks. On older platform shells without fixed clocks, kernels operate at the default
operating frequency of the platform. Generally, in embedded processor platforms, and also in newer Data Center accelerator cards, the device binary can connect multiple kernels to the platform with different clock frequencies. Each kernel, or unique instance of the kernel can connect to a specified clock frequency, or multiple clocks, and different kernels can use different clock frequencies generated by the platform.
During the compilation process (v++
-c
), you can specify a kernel frequency using the
--hls.clock
command. This lets you compile the kernel targeting the specified frequency, and lets
the Vitis HLS tool perform validation of the kernel
logic at the specified frequency. However, this is just an implementation target for
compilation, but does provide optimization and feedback.
During the linking process, when the kernels are connected to the
platform to build the device binary, you can specify the clock frequency for the kernels
using the --clock Options of the v++
command. Therefore the process for managing clock
frequencies is as follows:
- Compile the HLS code at a specified frequency using the Vitis
compiler:
v++ -c -k <krnl_name> --hls.clock freqHz:<krnl_name>
Tip:freqHz
must be in Hz (for example,250000000Hz
is 250 MHz). - During linking, specify the clock frequency or clock ID for each
clock signal in a kernel with the following command:
v++ -l ... --clock.freqHz <freqHz>:kernelName.clk_name
You can specify the --clock
option
using either a clock ID from the platform shell, or by specifying a frequency for the
kernel clock. When specifying the clock ID, the kernel frequency is defined by the
frequency of that clock ID on the platform. When specifying the kernel frequency, the
platform attempts to create the specified frequency by scaling one of the available
fixed
platform clocks. In some cases, the clock
frequency can only be achieved in some approximation, and you can specify the --clock.tolerance
or --clock.default_tolerance
to indicate an acceptable range. If the
available fixed clock cannot be scaled within the acceptable tolerance, a warning is
issued and the kernel is connected to the default clock.