The Vitis tools let you create designs using the default clocks defined in a platform, or software scalable clocks, or fixed-frequency clocks generated from MMCMs in the hardware design. This solution is engineered to meet broad design requirements for multi-clocking of and between PL kernels, AI Engine graphs, and platform IP like GTs.
As described in Identifying Platform Clocks, platforms include scalable clocks that can be used at the default frequency, or that XRT can scale to a different specified frequency, or that can also be scaled to meet timing if needed. Platforms also include fixed clocks, that can be used at the default frequency, or that can have additional frequencies generated using MMCMs to divide or multiply the default frequency.
Clock frequencies can be specified using the --freqhz
option for AI Engines, for PL kernels, or for linking the System project. When
you specify the --freqhz
option, the v++
linker examines the frequency relative to the
predefined platform clocks, and chooses a clock to use. If the frequency matches one
of the predefined clocks, the tool uses that clock. If the frequency is close to a
platform clock frequency, the platform clock will be selected, but if there is no
clock close to the desired frequency, a clock will be generated by inserting a clock
wizard into the design.
During the system linking process you
can connect multiple kernels to the platform using different clock frequencies
specifying multiple --freqhz
options. Each
kernel, or unique instance (CU) of the kernel can connect to a specified clock
frequency as shown for the --freqhz
option syntax
in v++ General Options.
v++ -l -t hw –platform <pfm_name> --freqhz=200000000:mm2s \
--freqhz=200000000:s2mm –config system.cfg
v++ --link
command to verify the clock assignments
for AI Engine kernels,
and PL kernels in the system, as shown in the following figure.In some cases,
the clock frequency can only be achieved in some approximation to the specified
--freqhz
. In these cases you can specify the
--clock.default_tolerance
to indicate an
acceptable range for the frequency. If the specified clock frequency can not be met
within the acceptable tolerance, a warning is issued and the closest default clock
is used.
You can refer to the automation_summary_pre_synthesis.txt report to identify the clock frequency used for compilation and linking. This report is generated at pre-synthesis step during linking, so you do not have to wait for the process to finish. In compilation, the specified clock frequency is used, but for linking the clock frequency is determined by the specified value, the clock tolerance, and the available clocks.
Platform clocks also have clock indexes
which identify a specific clock ID, rather than simply the clock frequency. A clock
ID defines a network path, including startpoints and endpoints in the platform
design. To specify clocks in your designs you should generally use the --freqhz
option, instead of clock ID. Specify the
clock ID (--clock.ID
) only when you want a common
clock network for all IPs inserted by v++
along
the path to this kernel.