Creating Waivers from the Command Line - 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

Each DRC, Methodology, or CDC violation is unique. It includes one or more of the following elements: strings and design or device objects such as pins, cells, nets, Pblocks, sites, and tiles.

  1. Preserve the order of elements. The order and content of all strings and objects in a violation are critical. Providing arguments in the wrong order when creating a waiver can fail to match the violation or mistakenly waive the wrong one.
  2. Before creating a manual waiver for a specific violation (such as TIMING-14#1) or a class of violations (such as all TIMING-14), follow these steps:
    1. Create an example waiver using the GUI or a violation object.
    2. Export the waiver using the write_waiver or write_xdc command.
    3. Review the exported content to understand the correct order of strings and objects.
    4. Use this format as a reference for other waivers with the same check ID.
  3. Include the following for every CDC, DRC, or Methodology waiver:
    -id
    Specifies the violation or check ID (for example, CDC-1, TIMING-14, PDRC-1569). Only one ID can be specified per waiver.
    -description
    A multi-line string that provides enough information for team review.
  4. Use the recommended arguments:
    -type
    Forces the waiver type (CDC, DRC, or Methodology). A waiver with the wrong type does not match any violation. For example, to waive a CDC violation, set the type to CDC. When the type is not specified, the system infers the type from the check id specified with -id.
    -user
    Overrides the default user name, which is the user ID running Vivado Design Suite.
  5. When you use scoped waivers, use the -scope command to ensure wildcards are scoped. The waivers support the XDC scoping mechanism and the current instance can be changed before creating a waiver. In this case, the current instance information is saved along with the waiver and restored when the waivers are exported as XDC.
  6. Avoid duplicate waivers. Vivado treats a waiver as a duplicate if another waiver exists with the same arguments. To reduce the memory footprint and runtime, duplicate waivers are not saved and result in a message similar to the following:
    WARNING: [Vivado_Tcl 4-935] Waiver ID 'CDC-13' is a duplicate and will not be added 
    again.
  7. Identify read-only checks. Some checks, such as those starting with RTSTAT-*, are read-only and cannot be waived. To filter out read-only checks, use the IS_READ_ONLY property:
    set allWaivableChecks [get_drc_checks -filter {!IS_READ_ONLY}]
    set allWaivableChecks [get_methodology_checks -filter {!IS_READ_ONLY}]
    If you try to waive a read-only check such as DRC RTSTAT-1, Vivado returns an error:
    ERROR: [Vivado_Tcl 4-934] Waiver ID 'RTSTAT-12' is READONLY and may not be waived.