Creating Waivers from a Violation Object - 2023.2 English

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

Document ID
Release Date
2023.2 English

The second method to create waivers is to use the DRC, Methodology, or CDC violation objects. This is the method the GUI uses when the create_waiver commands are sent to the Tcl Console.

The following syntax is used to create a waiver from one or more violation objects:

create_waiver -of_objects <ViolationObject(s)> -description <string> [-user <name>]

The description is mandatory. When the user is not specified, the system uses the user id running the Vivado tools.

Note: When multiple violation objects are specified, the system creates one waiver per violation. The waivers that are created do not reference the original violation objects. Instead, the waivers contain the list of strings and objects included in the violations.

The violation objects are returned through the get_cdc_violations, get_drc_violations, and get_methodology_violations commands. These commands only return objects when report_cdc, report_drc, and report_methodology have been run earlier. Use the command line option -name to get the list of violation objects from one of the GUI reports.

The following example code creates a waiver for all CDC-1 violations that have their startpoints inside the module top/sync_1:

report_cdc -name cdc_1
set vios [get_cdc_violations -name cdc_1 -filter {CHECK == CDC-1}]
foreach vio $vios {
    if {[regexp {^top/sync_1} [get_property STARTPOINT_PIN $vio]]} {
        create_waiver -of $vio -description {Safe by protocol}

A waiver created from a violation object is built from all the objects and strings referenced inside the violation. This makes the waiver unique to that violation. If you want the waiver to cover multiple violations, you must export the waiver to an external file and edit the create_waiver command to replace single objects and strings with, for example, patterns and wildcards. See Creating DRC and Methodology Waivers for more information on using patterns and wildcards.

Note: For a few DRC and Methodology checks some strings are automatically converted to wildcards, for example, UCIO-1, NSTD-1, TIMING-15, and TIMING-16. For TIMING-15 or TIMING-16, the Setup and Hold slack amount inside the violation is not relevant. When a waiver is created from a TIMING-15 or TIMING-16 violation object, the create_waiver command automatically replaces the string that represents the slack with a wildcard. This enables the waiver to waive the violation related to a specific object and regardless of the reported slack. Similar behavior applies to UCIO-1 and NSTD-1.