Custom Strategies - 2024.2 English - UG1388

Versal Adaptive SoC System Integration and Validation Methodology Guide (UG1388)

Document ID
UG1388
Release Date
2024-12-18
Version
2024.2 English

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.

Tip: For a list of directives and a short description of their functions, enter the implementation command followed by the -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
Note: You can also further explore by adding extra timing optimizations.

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.