When your design is very close to timing closure (typically the WNS is less than
-250ps), enable the incremental flow with RQS suggestions. This allows you to achieve
timing closure and save iteration time by taking advantage of both the incremental flow
and RQS suggestions. report_qor_assessment
indicates
when to use this flow in the Flow Guidance section.
In the run, the suggestions generated from the reference routed DCP are read in before running the incremental flow commands. The rest of the flow is applied automatically for you. Vivado understands which suggestions to apply at what stage in the flow by differentiating which suggestions are newly GENERATED and which ones were APPLIED in the reference run. This is shown in the following figure:
In the case where the incremental flow is run, the suggestions that have been applied in the reference are read from the reference DCP and applied regardless of whether they are enabled or not. The ENABLED property is ignored because it is important to replicate the reference checkpoint as closely as possible.
Next, incremental friendly suggestions from the RQS file are applied.
These must be enabled, which is done automatically during read_qor_suggestions
. The suggestions are applied during read_checkpoint -incremental
and not at the APPLICABLE_FOR
stages. Therefore, suggestions should not be read or enabled after this stage because
they will be ignored. Any new non-incremental friendly suggestions in the RQS file will
be ignored (existing non-incremental friendly suggestions applied in the reference will
be applied).
Special care should be taken when applying suggestions that are
applicable for opt_design
. Because this is before the
flow is aware it is in incremental mode, it is not possible to manage these suggestions
automatically. You must ensure that the existing suggestions that are applied in the
reference are also applied in the incremental run and that no new suggestions are
applied. If it is desirable to apply these suggestions, the reference should be
updated.
In the case where the incremental flow reverts to the default flow, usually due to a negative change, all suggestions will be executed from the RQS file. For this reason, before launching the next incremental run, you must export all suggestions to the RQS file and not only the incremental friendly ones.
Before adopting this flow, note the following prerequisites:
- The device part for the reference run and the incremental run should match.
- The reference checkpoint should be a post-route checkpoint.
- The same directive should be used for
opt_design
in the reference and incremental runs. - The design should not have major design issues such as high congestion, unbalanced clocking, or an RQA score of less than 4.
- The suggestions should be regenerated from the reference checkpoint.
- Newly generated suggestions will only be applied if they are incremental friendly. If suggestions are not incremental friendly, they will only be executed if the flow reverts back to the default flow. If this does not happen they will be ignored.
- Newly generated suggestions must be generated from the reference
checkpoint. This check ensures suggestions do not impact paths that have their
timing resolved (for example, at post-route
phys_opt_design
).
An example of the commands required to run the flow is shown here:
- Reference
-
# Generate RQS suggestions from the reference DCP open_checkpoint reference_routed.dcp report_qor_suggestions -file postroute_rqs.rpt write_qor_suggestions -force ./post_route.rqs
- Incremental
-
# RQS-Incremental Run: open_checkpoint <pre_opt.dcp> read_qor_suggestions ./post_route.rqs # opt_design directive must be same as the reference run opt_design -directive {same directive as reference run} read_checkpoint -incremental reference_routed.dcp # place_design is running in TimingClosure mode place_design # phys_opt_design is optimized for incremental phys_opt_design # route_design is running in TimingClosure mode route_design write_checkpoint postroute.dcp