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
, andreport_methodology
commands only report the violations that are not waived. - Use
-waived
to forcereport_cdc
,report_drc
, andreport_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 forcereport_cdc
,report_drc
, andreport_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.
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_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.
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, 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