Reporting the Waivers - 2024.1 English

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

Document ID
UG906
Release Date
2024-06-05
Version
2024.1 English

It is recommended to verify that only the expected violations have been waived. This must be done after the waivers are defined and before the final bitstream.

Report CDC, Report DRC, and Report Methodology commands support multiple reporting modes:

  • By default, the report_cdc, report_drc, and report_methodology commands only report the violations that are not waived.
  • Use -waived to force report_cdc, report_drc, and report_methodology commands to only report the violations that have been waived. The report must be reviewed to confirm that all the waived violations are expected.
  • Use -no_waiver to force report_cdc, report_drc, and report_methodology commands to run without applying the waivers. In this mode, all violations are reported whether they are waived or not.

The three reporting modes are available from the command line and from the GUI Report dialog windows. The image below from Report DRC illustrates the selection of the reporting modes under the Waivers section. The same Waivers section is also available for Report CDC and Report Methodology widgets.

Figure 1. Reporting Modes for Waivers

In the CDC, DRC, and Methodology GUI result windows, there are some visual differences when a result window contains waived violations, icons in front of each violations are different and the name of the result window includes the number of waived violations.

Note: Waivers cannot be created from the result window of waived CDC, DRC, and Methodology violations.

The example below illustrates a result window of waived DRCs with only two waived violations.

Figure 2. Waived DRC Violations

To get a summary report of all the waivers and the waived violations, use the report_waivers command. The report is only available from the Tcl Console.

report_waivers only reports statistics that are extracted by report_cdc, report_drc, and report_methodology commands. To get accurate statistics, it is necessary to run report_cdc, report_drc, and report_methodology before report_waivers and any time the waivers have been modified (added or deleted). The statistics are updated regardless of whether the reports are run from the command line or GUI. Failure to have updated statistics, report_waivers issues one or more of the following messages, depending on which of the CDC, DRC, or Methodology information is outdated:

WARNING: [Vivado_Tcl 4-972] Waiver counts for 'CDC' will be invalid because 
report_cdc has not been run since waivers were changed; please run the report_cdc 
command.
WARNING: [Vivado_Tcl 4-972] Waiver counts for 'DRC' will be invalid because 
report_drc has not been run since waivers were changed; please run the report_drc 
command.
WARNING: [Vivado_Tcl 4-972] Waiver counts for 'METHODOLOGY' will be invalid because 
report_methodology has not been run since waivers were changed; please run the 
report_methodology command.

The report from report_waivers includes a summary table and a detailed table for each of the CDC, DRC, and Methodology waivers. The table columns are:

  • Total Vios: Total number of violations before the waivers apply. That is the number of violations that would be reported without waivers. Multi-bit rules are accounted for by the number of endpoints.
  • Remaining Vios: Number of violations after the waivers apply. When no violation is waived, this number matches Total Vios. Multi-bit rules are accounted for by the number of endpoints.
  • Waived Vios: Number of violations that are waived. When no violation is waived, this number is 0. Multi-bit rules are accounted for by the number of endpoints.
  • Used Waivers: Number of waivers that have waived some violation(s). One waiver can waive multiple violations if it includes some patterns or wildcards.
  • Set Waivers: Number of waivers that have been applied to the design. Ideally, the number of Used Waivers and Set Waivers should match. The numbers do not match when some waivers have been defined but they do not match any violation.

By default, only the rules that have some waivers defined are reported in the detailed tables. However, the first Summary table reports all the violations in the design.

Figure 3. report_waivers Default Report

With the command line option -show_msgs_with_no_waivers, the detailed tables report all the checks that have some violations, regardless of whether a waiver exists or not for that particular rule.

Figure 4. report_waivers -show_msgs_with_no_waivers

In addition to the above reports, report_waivers can export the list of waivers that have matched a CDC, DRC, or Methodology violation and those that did not match any violation. Use the options -write_valid_waivers to export waivers that have matched a violation and -write_ignore_waivers to export the waivers that did not match any violation. It is recommended to review the list of waivers that did not match any violation. When waivers that did not match are not expected, make sure that the waivers are correctly defined.

The options -write_valid_waivers and -write_ignore_waivers filter the waivers based on the information reported by the latest execution of report_cdc, report_drc, and report_methodology commands. When report_drc or report_methodology are run with a rule deck or a subset of checks, some waivers are ignored for the checks that have not been run. It is recommended to run all the DRC/Methodology checks before using -write_valid_waivers and -write_ignore_waivers. For example:

report_cdc -all_checks_per_endpoint
report_drc -checks [get_drc_checks]
report_methodology -checks [get_methodology_checks]
report_waivers -write_valid_waivers -file waivers_valid.xdc
report_waivers -write_ignored_waivers -file waivers_ignored.xdc