QoR Suggestions - 2024.1 English

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

Document ID
Release Date
2024.1 English

QoR suggestions are used to improve the ability of a design to meet timing through the following tactics:

  • Adding switches to commands such as opt_design
  • Adding properties to design objects such as cells and nets
  • Full implementation strategies

The report_qor_suggestions command generates a report in either the AMD Vivado™ IDE or a text-based report. It can be used for the following purposes:

  • Generating and viewing new suggestions on the current design in memory
  • Viewing existing suggestions that have been read in using the read_qor_suggestions command

The report_qor_suggestions command can be run on a design loaded in memory at any time after synthesis. The suggestion objects generated consider many design characteristics and generate suggestions in the following categories:

  • Clocking
  • XDC
  • Netlist
  • Utilization
  • Congestion
  • Timing
  • Strategies

The generated suggestions must then be fed back into the flow to take effect. Design stages are typically required to be rerun, as is shown in the following figure:

Figure 1. Suggestion Flow

Prior to generating new suggestions, a design must be loaded into memory. report_qor_suggestions can be run at any stage of the flow after synthesis. The returned suggestions are ordered based on importance, with the most important listed at the top of the report.

It only reports suggestions required to improve the QoR of the design. Sometimes placement or routing information is required before a suggestion can be issued. In addition, there are restrictions to ensure only suggestions that contain necessary design changes are generated.

  • Netlist suggestions are generated based on analysis of the netlist. They identify common netlist structures that lead to timing failures later in the flow but they do not directly look at timing paths so can be generated on timing closed designs.
  • Clocking suggestions generally need to be generated after placement, but there are some exceptions to this when accurate information is available before placement. With a few exceptions, they require a failing timing path.
  • Timing suggestions are generated by examining the top 100 failing timing paths per clock group.
  • Utilization suggestions are generated when it judges that the resource targeted by the suggestion is overused and does not result in an increase of a critical resource. These can be reported at any design stage.
  • Congestion is only reported after placement. If a design is routed and timing is met, it does not report congestion suggestions as it is proven these are not having an impact on timing closure.
  • Strategies, the final category, contains implementation strategies. These are generated using machine learning algorithms that analyze many design characteristics. The flow when using these objects is slightly different to that described above and is outlined in more detail later in this chapter.