create_waiver - 2023.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
UG835
Release Date
2023-05-16
Version
2023.1 English

Create a DRC/METHODOLOGY/CDC/LINT message waiver

Syntax

create_waiver [‑type <arg>] [‑id <arg>] [‑objects <args>] [‑from <args>]
    [‑to <args>] [‑strings <args>] [‑rtl_name <args>]
    [‑rtl_hierarchy <args>] [‑rtl_file <args>] [‑of_objects <args>]
    [‑user <arg>] ‑description <arg> [‑tags <arg>] [‑timestamp <arg>]
    [‑scoped] [‑quiet] [‑verbose]

Returns

Waiver

Usage

Name Description
[-type] Type of waiver - DRC, METHODOLOGY, CDC, LINT
[-id] ID of the DRC/METHODOLOGY/CDC/LINT message being waived, not needed for -of_objects use
[-objects] List of inserted message objects for which a DRC/METHODOLOGY waiver will be set (i.e. %ELG, %SIG, etc. for cells or nets, etc., sites, etc., or '*CELL', '*NET', '*SITE', etc. as wildcards
[-from] List of source (driver) pins or ports (or '*PORT', '*PIN' as wildcard) for which a CDC waiver will be set
[-to] List of target (load) pins or ports (or '*PORT', '*PIN' as wildcard) for which a CDC waiver will be set
[-strings] List of inserted message string values for which a DRC/METHODOLOGY waiver will be set (i.e. %STR for strings, or '*' as wildcard)
[-rtl_name] List of rtl_name values for the LINT waiver ('*' as wildcard)
[-rtl_hierarchy] List of rtl_hierarchy values for the LINT waiver ('*' as wildcard)
[-rtl_file] List of rtl_file values for the LINT waiver ('*' as wildcard)
[-of_objects] List of DRC/METHODOLOGY/CDC violation objects for which waiver(s) will be set
[-user] Name of the user creating the waiver (required, but if not specified, the waivers will take the USER name from the environment if it is available)
-description Description string of the cause for the waiver
[-tags] Optional list of one or more tags to aid in subsequent waiver identification or categorization
[-timestamp] Timestamp of waiver - for restaining the original time of a waiver being (re)created after being written
[-scoped] Flag waiver to interpret object wildcards as scoped to the current_instance that is set
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution

Categories

Waiver, XDC, DRC, Methodology, CDC, Lint, Object

Description

After report_drc, report_methodology, or report_cdc commands are run, they return messages of specific violations or conditions found in the design. These violations can prevent the design from progressing until they have been resolved or addressed in some way. The create_waiver command lets you select individual violations or specific checks that can be waived for a design, letting you move forward in the design flow.

Important: Use caution when waiving violations. Waivers may let you proceed in the design flow, but also let you create a design that is fundamentally flawed.

The user creating the waiver is required to provide a user ID and description in the create_waiver command in order to provide some history of the waiver.

A waiver must be specified for an individual DRC or methodology violation, or for a specific DRC or methodology check, or for a CDC path. The waiver must be assigned to a specific object, or specific violation ID, or for paths using -from/-to arguments. The form of the create_waiver command varies depending on the check, violation, or object being waived, as shown in the examples below.

Tip: Although many of the arguments are described as optional, some form of identifier is required to associate the waiver with its target.

To save waivers from one design session to the next, you must use write_waivers to create an XDC file of the waiver commands, and read_xdc to read those waivers back into the design when it is reopened.

After creating a waiver, you will need to rerun the DRC, methodology, or CDC report to have the waiver considered in the analysis. To see what waivers are in place in the current design you can use the report_waivers command. In addition, the report_drc, report_methodology, and report_cdc commands have options to run the reports on waived violations or checks. Use the delete_waivers command to remove waivers from the design.

Arguments

-type <arg> - (Optional) Specifies the type of waiver to create. Currently supports DRC, METHODOLOGY, and CDC.

-id <arg> - (Optional) Specifies the ID of the check or violation being waived. This is not required when using the -of_objects option. The waiver associated with the ID can also be further limited by specifying the -objects, -from/-to, or the -strings arguments.

-objects <arg> - (Optional) For DRC and methodology checks and violations, this option specifies the object or list of objects that the waiver applies to. Objects are specified using the convention of the violation definition (e.g. %ELG, %SIG, etc. for cells or nets, etc., sites, etc., or '*CELL', '*NET', '*SITE', etc. as wildcards). Refer to the create_drc_check or create_drc_violation commands for more information.

-from <arg> - (Optional) For CDC checks or violations, this option lists source (driver) pins or ports (or '*PORT', '*PIN' as wildcard) that the waiver applies to.

-to <arg> - (Optional) For CDC checks or violations, this option lists target (load) pins or ports (or '*PORT', '*PIN' as wildcard) that the waiver applies to.

-strings - (Optional) For DRC and methodology checks and violations, this option specifies inserted message string values (i.e. %STR for strings, or '*' as wildcard) that the waiver applies to.

-of_objects <arg> - (Optional) Specifies a list of DRC violations as returned by get_drc_violations; or a list of methodology violations as returned by get_methodology_violations; or a list of CDC violations as returned by get_cdc_violations. The defined waiver applies to the specified list of violation objects.

-user <arg> - (Optional) Specifies the user ID of the person responsible for creating the waiver. When not specified, the user ID is obtained from the OS.

-description <arg> - (Required) Provides a brief description of the waiver, and why it is being applied.

-tags <arg> - (Optional) Specifies a list of user-defined strings to be associated with the waiver. Tags can be used to filter waivers when using the get_waivers command.

-timestamp <arg> - (Optional) Specifies the original time of the waiver as it is created. Timestamp must be specified in the form "SUN Aug 6 17:02:21 GMT 2017". If -timestamp is not specified, the current time is used.

Tip: The following Tcl command specifes the timestamp in local time: clock format [clock seconds] -gmt 0

-scoped - (Optional) Specify that waivers should be interpreted with object wildcards as scoped to the current_instance that is set.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

Examples

This example creates a waiver for a methodology check based on the specified ID:

create_waiver -id TIMING-18 -user samwise -description {waive rule check}

The following example creates a DRC check waiver for the indicated ID on the specified list of port objects, and provides the timestamp in local time:

create_waiver -type DRC -id UCIO-1 -user samwise -desc {waiving DRC violation} \
-objects [get_ports {src_in* dest_out*}] \
-timestamp [clock format [clock seconds] -gmt 0]

The following example creates a waiver for specific CDC paths in the design, defined by the -from/-to arguments:

create_waiver -type CDC -id CDC-6 -user samwise \
-description {Paths to be re-tested later}\
-from [list [get_pins {inst_xpm_grey/src_gray_ff_reg[3]/C \
inst_xpm_grey/src_gray_ff_reg[16]/C \
inst_xpm_grey/src_gray_ff_reg[22]/C \
inst_xpm_grey/src_gray_ff_reg[25]/C}]  ] \
-to [list [get_pins {inst_xpm_grey/dest_graysync_ff_reg[0][1]/D \
inst_xpm_grey/dest_graysync_ff_reg[0][6]/D \
inst_xpm_grey/dest_graysync_ff_reg[0][9]/D \
inst_xpm_grey/dest_graysync_ff_reg[0][24]/D}]  ]