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.
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
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
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.
create_waiver -scopeforces the wildcards for pins and cells to be scoped to the current instance where the waiver is created. When creating scoped waivers,
-scopeensures 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.