Creating Waivers from the Command Line - Creating Waivers from the Command Line - 2026.1 English - UG906

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

Document ID
UG906
Release Date
2026-06-23
Version
2026.1 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, such as CDC-1, TIMING-14, or PDRC-1569. Specify only one ID per waiver.
    -description
    Provides a multi-line string with enough information for team review.
  4. Use the recommended arguments for each waiver:
    -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. If you do not specify a type, the system infers the type from the check ID in -id.
    -user
    Overrides the default user name. By default, Vivado uses the user ID that runs Vivado Design Suite.
  5. When you use scoped waivers, use the -scope command.
    • The -scope command ensures that wildcards remain scoped.
    • Waivers support the XDC scoping mechanism.
    • You can change the current instance before you create a waiver.
    • Vivado saves the current instance information with the waiver.
    • Vivado restores that information when it exports waivers as XDC.
  6. Avoid duplicate waivers.
    • Vivado treats a waiver as a duplicate when another waiver uses the same arguments.
    • Vivado does not save duplicate waivers.
    • This behavior reduces memory use and runtime.
    • Vivado then reports a message like 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
    • You cannot waive read-only checks.
    • You can filter out read-only checks using the IS_READ_ONLY property.
    • For example, you can use the following commands:
      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.