The Design Optimization stage is split into five steps that are executed sequentially. These steps are shown in the following diagram.
Within any given step, multiple implementation commands such as opt_design
, place_design
,
and route_design
can be run and QoR suggestions can be
generated. For each step, there is a target suggestion list; if any of the generated
suggestions appear on the target suggestion list, the design is reset to the required
design stage for the suggestion to be successfully applied. If there are no suggestions
available on the target suggestion list for a given step, the step is skipped.
The details of the Design Optimization steps are as follows.
- Clean Up XDC
- The design is checked for any causes that generate an implementation error and timing that is impossible to fix. If an error is picked up, the flow will exit. No suggestions are generated or applied at this stage.
- Clean Up Utilization
- Suggestions that reduce utilization without timing penalty are sought. In addition, some other non-utilization-based suggestions might be applied if they can be detected and fixed early in the flow.
- Clean Up Clocking
- The design is run to
place_design
to generate accurate clock skew timing numbers. If suggestions exist, the flow is reset and run through toroute_design
and a timing picture is generated.
- Clean Up Congestion
- In this step, congestion suggestions are applied from post-route generated suggestions if they exist. If the design did not route, post-place generated suggestions are used.
- Clean Up Timing
- Individual timing paths are analyzed and suggestions applied.
At the end of stage 1 (Design Optimization), all post-route checkpoints are compared and the best run selector takes forward the best run to either stage 2 (Tool Option Exploration) or stage 3 (Last Mile Timing Closure).
To examine the modifications the IDR has made to the design, the QoR Suggestion Report shows which suggestions are GENERATED and APPLIED at each step. There are also multiple checkpoints generated which can be easily accessed from the design run directory.