Creating DRC and Methodology Waivers - 2023.2 English

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

Document ID
Release Date
2023.2 English

The number and types of additional arguments for create_waiver depends on the DRC and Methodology violation that needs to be waived. Few DRC and Methodology violations, such as TIMING-9, have no other arguments because the message is generic and non-specific. Other DRC and Methodology violations can include multiple strings and different types of objects.

Note: It is not recommended to waive violations that do not reference any string or object such as TIMING-9 and TIMING-10.

The strings inside the violation are specified with -string inside the waiver. The device or design objects (pins, cells, nets, Pblocks, and sites) are specified with the -objects option. Each of these command line options should be specified as many times as the violation contains those elements.

When a waiver is created from the GUI or from a violation object, the waiver is defined to only waive that exact violation as it specifies all the strings and objects that make that violation unique. When the waiver is manually created, it is possible to widen the coverage of the waiver so that multiple violations can be waived from a single waiver. To expand a waiver to cover multiple violations:

  • Use patterns for the get_* commands in place of a specific name
  • Use a wildcard in place of a string or an object. Wildcards are special keywords such as '*' for 'any string' or '*PIN' for 'any pin' (refer to the following table). As long as an object of the same type matches the element found inside the violation for the same position, it is a match. When all the elements from the waiver match the violation, then the violation is waived.
  • Specify a list of objects instead of a single object. As long as the object inside the violation matches one of the objects inside the list of objects at the same position inside the waiver, it is a match. When all the elements from the waiver match the violation, then the violation is waived.

For example: the command below waives 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 ]

Suppose that the design has multiple cells mux2_inst/mux_out_INST_*, the above waiver could be modified to waive the TIMING-14 violations related to all those cells by using a pattern for the get_cells command:

create_waiver -id "TIMING-14" -description "Reviewed by the team" \
                   -objects [get_cells mux2_inst/mux_out_INST_* ]

The following table summarizes the keywords used as wildcards based on the object type.

Table 1. Wildcard Keywords
Object Wildcard
Cell *CELL
Net *NET
Pin *PIN
Port *PORT
Site *SITE
Tile *TILE
Package Bank *PKGBANK
Clock Region *CLKREGION
Clock *CLOCK
Pblock *PBLOCK
String *
Note: create_waiver -scope forces the wildcards for pins and cells to be scoped to the current instance where the waiver is created. When creating scoped waivers, -scope ensures that wildcards for pins and cells do not match objects located at a higher level than the scope, which could result in waiving violations that must not be waived.