Creating DRC and Methodology Waivers - 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 number and type of additional arguments you need for the create_waiver command depend on the specific DRC or Methodology violation. Some violations, such as TIMING-9, are generic and do not reference any specific strings or objects. These have no additional arguments. Other violations include one or more strings and design objects. You must specify these elements in the waiver.

Note: Do not waive violations like TIMING-9 or TIMING-10 that contain no strings or objects.
  1. Define the waiver elements.
    1. Use -string to specify the string values found in the violation.
    2. Use -objects to specify design elements such as pins, cells, nets, Pblocks, and sites.
    3. Repeat each of these options for every element the violation references.
  2. Create the waiver.
    • Creating a waiver via the GUI or a specific violation object includes all relevant strings and objects, restricting the waiver to that specific violation.
    • When creating waivers manually, you can broaden the waiver to apply to multiple similar violations.
  3. Expand the waiver coverage manually. Use these tips to create a broader waiver that covers multiple violations:
    • Use patterns with get_* commands instead of specific object names.
    • Use wildcards in place of strings or objects. For example:
      • * matches any string.
      • *PIN matches any pin.
    • Use a list of objects instead of a single object. If any object of the same type in the list matches the element found inside the violation for the same position, the match succeeds.
    A violation is waived only when all elements in the waiver match the corresponding elements in the violation.

Use the following wildcard keywords to match design objects by type when creating waivers:

Table 1. Wildcard Keywords
Object Type Wildcard
Cell *CELL
Net *NET
Pin *PIN
Port *PORT
Site *SITE
Tile *TILE
BEL *BEL
Package Bank *PKGBANK
Clock Region *CLKREGION
Clock *CLOCK
Pblock *PBLOCK
String *

Examples

  • Waive a single TIMING-14 violation that references the cell mux2_inst/mux_out_INST_0:
    create_waiver -id "TIMING-14" -description "Reviewed by the team" \
                      -objects [get_cells mux2_inst/mux_out_INST_0 ]
  • Waive multiple similar violations:
    create_waiver -id "TIMING-14" -description "Reviewed by the team" \
                       -objects [get_cells mux2_inst/mux_out_INST_* ]
Note: create_waiver -scope forces wildcards for pins and cells to stay within the current instance. This prevents wildcards from matching higher-level objects and unintentionally waiving other violations.