add_drc_checks - 2024.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2024.1 English

Add DRC rule check objects to a rule deck


add_drc_checks [‑of_objects <args>] [‑regexp] [‑nocase] [‑filter <arg>]
    ‑ruledeck <arg> [‑quiet] [‑verbose] [<patterns>]




Name Description
[-of_objects] Get 'rule_check' objects of these types: 'drc_ruledeck'.
[-regexp] Patterns are full regular expressions
[-nocase] Perform case-insensitive matching. (valid only when -regexp specified)
[-filter] Filter list with expression
-ruledeck DRC rule deck to modify
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
[<patterns>] Match the 'rule_check' objects against patterns. Default: *


DRC, Object


Add design rule checks to the specified drc_ruledeck object.

A rule deck is a collection of design rule checks grouped for convenience, to be run with the report_drc command at different stages of the design flow, such as during I/O planning or placement. The tool comes with a set of factory defined rule decks, but you can also create new user-defined rule decks with the create_drc_ruledeck command.

Use the get_drc_ruledecks command to return a list of the currently defined rule decks available for use in the report_drc command.

You can add standard factory defined rule checks to the rule deck, or add user-defined rule checks that were created using the create_drc_check command. Use the get_drc_checks command to get a list of checks that can be added to a rule deck.

Checks can also be removed from a rule deck using the remove_drc_checks command.

Note: To temporarily disable a specific DRC rule, use the set_property command to set the IS_ENABLED property for the rule to false. This will disable the rule from being run in report_drc, without having to remove the rule from the rule deck. Use reset_drc_check to restore the rule to its default setting.

This command returns the list of design rule checks that were added to the rule deck.


-of_objects <arg> - (Optional) Add the rule checks of the specified drc_ruledeck object to the specified rule deck. This has the effect of copying the rules from one rule deck into another.

Note: The -of_objects option requires objects to be specified using the get_* commands, such as get_cells or get_pins, rather than specifying objects by name. In addition, -of_objects cannot be used with a search <pattern>.
-regexp - (Optional) Specifies that the search <patterns> are written as regular expressions. Both search <patterns> and -filter expressions must be written as regular expressions when this argument is used. Xilinx® regular expression Tcl commands are always anchored to the start of the search string. You can add ".*" to the beginning or end of a search string to widen the search to include a substring. See for help with regular expression syntax.
Note: The Tcl built-in command regexp is not anchored, and works as a standard Tcl command. For more information refer to

-nocase - (Optional) Perform case-insensitive matching when a pattern has been specified. This argument applies to the use of -regexp only.

-filter <args> - (Optional) Filter the results list with the specified expression. The -filter argument filters the list of objects returned by the search pattern, based on specified property values. You can find the properties on an object with the report_property or list_property commands.

The filter search pattern should be quoted to avoid having to escape special characters. String matching is case-sensitive and is always anchored to the start and to the end of the search string. The wildcard “*” character can be used at the beginning or at the end of a search string to widen the search to include a substring of the property value.
Note: The filter returns an object if a specified property exists on the object, and the specified pattern matches the property value on the object. In the case of the "*" wildcard character, this will match a property with a defined value of "".
For string comparison, the specific operators that can be used in filter expressions are "equal" (==), "not-equal" (!=), "match" (=~), and "not-match" (!~). Numeric comparison operators <, >, <=, and >= can also be used. Multiple filter expressions can be joined by AND and OR (&& and ||). The following gets input pins that do NOT contain the “RESET” substring within their name:
get_pins * -filter {DIRECTION == IN && NAME !~ "*RESET*"}
Boolean (bool) type properties can be directly evaluated in filter expressions as true or not true:

-ruledeck <arg> - (Required) The name of the rule deck to add the specified design rule checks to.

-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.

<patterns> - (Optional) Add the design rule checks that match the specified patterns to the rule deck. The default pattern is the wildcard '*' which adds all rule checks to the specified rule deck. More than one pattern can be specified to find multiple rule checks based on different search criteria.

Note: You must enclose multiple search patterns in braces, {}, or quotes, "", to present the list as a single element.


The following example adds the rule checks matching the specified search pattern to the project_rules rule deck:

add_drc_checks -ruledeck project_rules {*DCI* *BUF*}

The following example creates a new rule deck called placer+, copies all of the rule checks from the placer_checks rule deck into the placer+ rule deck, then adds some additional checks:

create_drc_ruledeck placer+
add_drc_checks -of_objects [get_drc_ruledecks placer_checks] \
   -ruledeck placer+
add_drc_checks -ruledeck placer+ *IO*

The following example adds only the rule checks with a severity of Warning to the rule deck:

add_drc_checks -filter {SEVERITY == Warning} -ruledeck warn_only