Using Synthesis Attributes in XDC files - 2024.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
UG901
Release Date
2024-05-30
Version
2024.1 English

Some synthesis attributes can also be set from an XDC file as well as the original RTL file. In general, attributes that are used in the end stages of synthesis and describe how synthesis- created logic is allowed in the XDC file. Attributes that are used towards the beginning of synthesis and affect the compiler are not allowed in the XDC.

For example, the KEEP and DONT_TOUCH attributes are not allowed in the XDC.

This is because, at the time the attribute is read from the XDC file, components that have the KEEP or DONT_TOUCH attribute might have already been optimized and would therefore not exist at the time the attribute is read. For that reason, those attributes must always be set in the RTL code. For more information on where to set specific attributes, see the individual attribute descriptions in this chapter.

Note: At the time the XDC file is read, multi-bit signals exist as single nodes in Synthesis. Because of this, putting attributes on individual bits of a vector signal puts that attribute on all bits of the signal.

To specify synthesis attributes in XDC, type the following in the Tcl Console:

set_property <attribute> <value> <target>

For example:

set_property MAX_FANOUT 15 [get_cells in1_int_reg]

In addition, you can set these attributes in the elaborated design, as follows:

  1. Open the elaborated design, shown in the following figure, and select the item on which to place an attribute, using either of the following methods:
    • Click the item in the schematic.
    • Select the item in the RTL Netlist view, as shown in the following figure.
  2. In the Cell Properties window, click the Properties tab, and do one of the following:
    • Modify the property.
    • If the property does not exist, right-click, select Add Properties, and select the property from the window that appears, or click the + sign.

This saves the attributes to your current constraint file or creates a new constraint file if one does not exist.

Note: If the same attribute is put on the same object in both the XDC and in RTL, but the values of the attributes are different, the XDC attribute is accepted, and the RTL attribute is ignored.