set_property - 2023.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2023.1 English

Set property on object(s)


set_property [‑dict <args>] [‑quiet] [‑verbose] <name> <value> <objects>...


Name Description
[-dict] list of name/value pairs of properties to set
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
<name> Name of property to set. Not valid with -dict option
<value> Value of property to set. Not valid with -dict option
<objects> Objects to set properties on


Assigns the defined property <name> and <value> to the specified <objects>.

This command can be used to define any property on an object in the design. Each object has a set of predefined properties that have expected values, or a range of values. The set_property command can be used to define the values for these properties. To determine the defined set of properties on an object, use report_property, list_property, or list_property_values.

You can also define custom properties for an object, by specifying a unique <name> and <value> pair for the object. If an object has custom properties, these will also be reported by the report_property and list_property commands.

This command returns nothing if successful, and an error if it fails.

Tip: You can use the get_property command to validate any properties that have been set on an object.


-dict - (Optional) Use this option to specify a dictionary of multiple properties (<name> <value> pairs) on an object with a single set_property command. Multiple <name> <value> pairs must be enclosed in quotes, "", or braces, {}.

-dict "name1 value1 name2 value2 ... nameN valueN"
Important: When writing the constraints for a design using either save_constraints, save_constraints_as, or write_xdc, the properties specified using the -dict option will be written as separate set_property commands for each name/value pair. If you don't want the XDC constraints to be expanded in this manner, you can either use the Tcl script driven approach in a non-project design, or use a Tcl script as a design source in your constraint set. Refer to Vivado Design Suite User Guide: Design Flows Overview (UG892) for more information on non-project based design, or refer to Vivado Design Suite User Guide: Using Constraints (UG903) for more information on using Tcl scripts in constraint sets.
-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.

<name> - (Required) Specifies the name of the property to be assigned to the object or objects. The <name> argument is case sensitive and should be specified appropriately.

<value> - (Required) Specifies the value to assign to the <name> on the specified object or objects. The value is checked against the property type to ensure that the value is valid. If the value is not appropriate for the property an error will be returned.

Important: In some cases the value of a property may include special characters, such as the dash character ('-'), which can cause the tool to interpret the value as a new argument to the command. In this case, you must use the explicit arguments (-name, -value, -objects) instead of the implied positional arguments (name, value, objects) as described here. This is shown in the Examples section below.

<objects> - (Required) One or more objects to assign the property to.


Create a user-defined boolean property, TRUTH, for cell objects, and set the property on a cell:

create_property -type bool truth cell
set_property truth false [lindex [get_cells] 1]

Use the -dict option to specify multiple properties at one time on the current design:

set_property -dict "POST_CRC enable POST_CRC_ACTION correct_and_continue" \

The following example sets the TOP property of the current fileset to define the top module of the project:

set_property top fftTop [current_fileset]
set_property top_file {C:/Data/sources/fftTop.v} [current_fileset]
Note: Defining the top module requires the TOP property to be set to the desired hierarchical block in the source fileset of the current project. In the preceding example TOP is the property name, fftTop is the value, and current_fileset is the object. In addition, the TOP_FILE property should be defined to point to the data source for the top module.

This example shows how to set a property value that includes the dash character, '-'. The dash can cause the tool to interpret the value as a new command argument, rather than part of the value being specified, and will cause an error as shown. In this case, you must use the explicit form of the positional arguments in the set_property command:

set_property {XELAB.MORE_OPTIONS} {-pulse_e_style ondetect} \
   [get_filesets sim_1]
ERROR: [Common 17-170] Unknown option '-pulse_e_style ondetect',
 please type 'set_property -help' for usage info.
set_property -name {XELAB.MORE_OPTIONS} -value {-pulse_e_style ondetect}\
   -objects [get_filesets sim_1]

The following example sets the internal VREF property value for the specified IO Bank:

set_property internal_vref {0.75} [get_iobanks 0]

The following example defines a DCI Cascade by setting the DCI_CASCADE property for the specified IO Bank:

set_property DCI_CASCADE {14} [get_iobanks 0 ]

The following example configures the synth_1 run, setting options for Vivado® Synthesis 2013, and then launches the synthesis run:

set_property flow {Vivado Synthesis 2016} \
   [get_runs synth_1]
   [get_runs synth_1]
   [get_runs synth_1]
launch_runs synth_1

This example is the same as the prior example, except that it uses the -dict option to set all the properties on the synthesis run in a single set_property command:

set_property -dict [ list flow {Vivado Synthesis 2016} \
   one_hot ] [get_runs synth_1]
launch_runs synth_1