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_methodologycommands only report the violations that are not waived.
report_methodologycommands to only report the violations that have been waived. The report must be reviewed to confirm that all the waived violations are expected.
report_methodologycommands 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.
In the CDC, DRC, and Methodology GUI result windows, there are some visual differences when a result window contains waived violations, the icon in front of each violation is different and the name of the result window includes the number of waived violations.
The example below illustrates a result window of waived DRCs with only two waived 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_methodology commands. To get accurate statistics, it is necessary to run
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.
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.
In addition to the above reports,
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.
-write_ignore_waivers filter the waivers based on the
information reported by the latest execution of
report_methodology commands. When
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_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