The handling of clocks in accelerator cards has evolved to support
multiple platform clocks and clock frequencies. Improved clock handling is dependent on
a fixed-status platform clock that is available to drive additional kernel frequencies.
You can determine if the target platform shell has fixed clocks by using the
platforminfo -v
command. For example, the following
command returns verbose information related to a newer shell for the U200 platform:
platforminfo -v -p xilinx_u200_gen3x16_xdma_1_202110_1 -o pfmClocks.txt
The information reported in the output file includes the following clock
details:
=================
Clock Information
=================
...
...
Clock Index: 2
Frequency: 50.000000
Name: ii_level0_wire_ulp_m_aclk_ctrl_00
Pretty Name: PL 2
Inst Ref: ii_level0_wire
Comp Ref: ii_level0_wire
Period: 20.000000
Normalized Period: .020000
Status: fixed
...
In the example above you can see that Clock
Index: 2 is a fixed
status clock. In
fact, although not shown here, this platform shell provides three fixed status clocks
which can be used to drive multiple clock frequencies in linked kernels. You can use the
--clock.xxx
options to drive kernel clocks as
explained above.
However, on older platform shells, such as the
xilinx_u200_xdma_201830_2
, there are no fixed platform clocks to drive
clock frequencies in linked kernels. This can be determined by reviewing the Clock Information reported by the following command:
platforminfo -v -p xilinx_u200_xdma_201830_2 -o pfmClocks.txt
On legacy platforms, without fixed-status clocks, you can use the
v++ --kernel frequency
option to specify the clock
frequency as described in Vitis Compiler General Options.