Design performance and timing closure can vary when moving across Vitis releases or target platform(s), especially when one of the following conditions is true:
- Floorplan constraints were needed to close timing.
- Device or SLR resource usage was higher than the typical guideline:
- LUT usage was higher than 70%
- DSP, RAMB, and UltraRAM usage was higher than 80%
- FD usage was higher than 50%
- High effort compilation strategies were needed to close timing.
v++ --config
option, as described
in Mapping Kernel Ports to Memory, while verifying that any floorplan
constraint ensures the following: - The usage of each SLR is below the recommended guidelines.
- The usage is balanced across SLRs if one type of hardware resource needs to be higher than the guideline.
For designs with overall high usage, increasing the amount of pipelining in the kernels, at the cost of higher latency, can greatly help timing closure and achieving higher performance.
For quickly reviewing all aspects listed above, use the fail-fast reports
generated throughout the Vitis application
acceleration development flow using the -R
option as
described below (refer to Controlling Report Generation for more information):
-
v++ –R 1
-
report_failfast
is run at the end of each kernel synthesis step -
report_failfast
is run afteropt_design
on the entire design -
opt_design
DCP is saved
-
-
v++ –R 2
- Same reports as with
-R 1
, plus: -
report_failfast
is post-placement for each SLR - Additional reports and intermediate DCPs are generated
- Same reports as with
All reports and DCPs can be found in the implementation directory, including kernel synthesis reports:
<runDir>/_x/link/vivado/prj/prj.runs/impl_1
For more information about timing closure and the fail-fast report, see the UltraFast Design Methodology Guide for FPGAs and SoCs (UG949).