For challenging designs, it can take multiple iterations of Vivado implementation using multiple different strategies
to achieve timing closure. This topic shows you how to launch multiple implementation
strategies at the same time in the hardware build (-t
hw
), and how to identify and use successful runs to generate the device binary
and complete the build.
As explained in --vivado Options the --vivado.impl.strategies
command enables you to specify
multiple strategies to run in a single build pass. The command line would look as
follows:
v++ --link -s -g -t hw --platform xilinx_zcu102_base_202010_1 -I . \
--vivado.impl.strategies "Performance_Explore,Area_Explore" -o kernel.xclbin hello.xo
In the example above, the Performance_Explore
and Area_Explore
strategies are run simultaneously in
the Vivado build to see which returns the best
results. You can specify the ALL
to have all available
strategies run within the tool.
You can also determine this option in a configuration file in the following form:
#Vivado Implementation Strategies
[vivado]
impl.strategies=Performance_Explore,Area_Explore
The Vitis compiler automatically picks the
first completed run results that meets timing to proceed with the build process and
generate the device binary. However, you can also direct the tool to wait for all runs
to complete and pick the best results from the completed runs before proceeding. This
would require the use of the --advanced.compiler
directive as shown:
[advanced]
param=compiler.multiStrategiesWaitOnAllRuns=1
You can also manually review the results of all implementation strategies after
they have completed. Then, use the results of any of the implementation runs by using
the --reuse_impl
option as described in Using -to_step and Launching Vivado Interactively.