RQS in the Incremental Flow - 2021.1 English

Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906)

Document ID
UG906
Release Date
2021-06-30
Version
2021.1 English

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:

Figure 1. Incremental Flow

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