If timing cannot be met with the predefined strategies, you can manually explore a custom combination of directives. In the placer, you can also explore different subdirectives. Because placement typically has a large impact on achievable design clock frequency, it can be beneficial to try various placer directives with only the I/O location constraints and with no other placement constraints. By reviewing both WNS and TNS of each placer run (these values can be found in the placer log), you can select two or three directives that provide the best timing results as a basis for the downstream implementation flow.
-help
option (for example, place_design -help
). For information on strategies, see this link in the
Vivado Design Suite User Guide:
Implementation (UG904).To further fine-tune the implementation flow, you can apply individual
directives from opt_design
and also update the
subdirectives of the different stages within the placer. The placer stages in order
are Floorplan, Global Place (GPlace), and Detailed Place (DPlace).
AMD recommends taking the best result from
the Default, Performance Explore, and Aggressive Explore strategies as the base
strategy and then applying the opt_design
directive
and placer subdirectives on top of this strategy.
Trying all the subdirectives leads to an increase in the number of the implementation runs. To better focus and reduce the total number of runs, remove runs with subdirectives that consistently lead to performance loss or no gain over the existing base strategy. Having more compute power allows you to run more experimentation faster and can help you better evaluate the different strategies.
Following are the recommended initial subdirectives to explore:
- WLDrivenBlockPlacement
- BalancedSLR
- EarlyBlockPlacement
- NetDelay (via
-net_delay_weight
switch)
After determining the best options, you can further explore with the following subdirectives:
- ForceSpreading
- ReduceCongestion
- ReducePinDensity
For each of the place design checkpoints, several directives for phys_opt_design
and route_design
can be tried and again only the runs with the best estimated
or final WNS/TNS should be kept. In Non-Project Mode, you must explicitly specify the
flow with a Tcl script and save the best checkpoints. In Project Mode, you can create
individual implementation runs for each placer directive, and launch the runs up to the
placement step. You would continue implementation for the runs that have the best
results after the placer step (as determined by the Tcl-post script).
Physical constraints (Pblocks and DSP and RAM macro constraints) can prevent the placer from finding the most optimal solution. AMD therefore recommends that you run the placer directives without any Pblock constraints. The following Tcl command can be used to delete any Pblocks before placement with directives commences:
delete_pblock [get_pblocks *]
Running place_design -directive
<directive>
and analyzing placement of the best results can also
provide a template for floorplanning the design or reusing the placement of block RAM
macros or DSP macros, which can stabilize the flow from run to run.