Creating Waivers from a Violation Object - 2025.2 English - UG906

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

Document ID
UG906
Release Date
2025-12-10
Version
2025.2 English

The second way to create waivers is by using DRC, Methodology, or CDC violation objects. This is the method Vivado uses in the GUI when it sends create_waiver commands to the Tcl Console.

Use the following syntax to create a waiver from one or more violation objects:

create_waiver -of_objects <ViolationObject(s)> -description <string> [-user <name>]
  • -description is required.
  • If you omit the -user option, Vivado uses the user ID of the person running the tools.
Note: When you specify multiple violation objects, Vivado creates one waiver for each violation. These waivers do not directly reference the original violation objects. Instead, they capture the list of strings and objects included in each violation.

Use the following commands to get violation objects:

  • get_cdc_violations
  • get_drc_violations
  • get_methodology_violations

    These commands only return results if you have already run report_cdc, report_drc, or report_methodology.

To retrieve violations from a specific named report, use the -name option.

Example: Waiving CDC-1 Violations in a Specific Module

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}
    }
}

This code creates a waiver for each CDC-1 violation that has a startpoint in the module top/sync_1.

Customizing Waivers to Cover Multiple Violations

Vivado builds waivers from the objects and strings in each violation, making each waiver unique. To apply a waiver to multiple violations, follow these steps:

  1. Export the waiver to an external file.
  2. Edit the create_waiver command manually.
  3. Use patterns and wildcards to generalize the single objects and strings.

For guidance on using patterns and wildcards, see Creating DRC and Methodology Waivers.

Special Handling for Some Checks

Vivado automatically converts certain strings to wildcards for specific checks, including the following:

  • UCIO-1
  • NSTD-1
  • TIMING-15
  • TIMING-16

For TIMING-15 and TIMING-16, Vivado ignores the setup and hold slack amount. The create_waiver command replaces the string representing slack with a wildcard. This allows the waiver to apply to the specific object regardless of the reported slack value. Similar wildcard behavior applies to UCIO-1 and NSTD-1.