IP are validated with the constraints that are delivered with them. In some cases though an IP delivered constraint might need to be changed, such as a physical constraint like a LOC
or PACKAGE_PIN
property, to meet design goals.
You can edit the IP XDC using the method described in Editing IP Sources. Alternatively, you can override the IP XDC command by providing a top-level user XDC or a Tcl file with the desired commands.
Depending on what kind of constraint you want override, you can use either a XDC file or a Tcl file (see the About XDC Constraints section in the Vivado Design Suite User Guide: Using Constraints (UG903)).
You are strongly recommended to not modify any IP timing constraints with the possible exception of the _ooc.xdc to set a target frequency for synthesizing the IP out-of-context.
Because the IP is synthesized out-of-context by default, overriding a physical constraint should be done during the implementation stage only. Physical constraints are ignored during synthesis of the IP standalone; consequently make the Tcl or XDC file be for implementation use only.
Follow the procedure outlined in the Editing IP Sources when it is required to override an IP timing constraint. This ensures that the changes are used during synthesis of the IP out-of-context and being used during implementation at the top-level.
XDC commands are processed in order, where the last command takes precedence.
With timing constraints, this is not always successful; If an IP sets a path to have a
false path exception and you later apply a max_delay
constraint on the same path, the false path remains because it has higher precedence
(see the XDC Precedence section in the
Vivado Design Suite User Guide: Using
Constraints (UG903), for more details). To make these levels of changes you must
modify the XDC delivered by the IP.
Some actions and commands are not allowed in an XDC, necessitating use of a Tcl
file. An example of this is the changing of a LOC
property on a BUFG_GT
cell. The placer is not able to
place an instance on a site which is already occupied. You must first clear the current
setting and then set the new LOC
. Do this with the
reset_property
command, which is not an XDC
command, and must be placed in a Tcl file. After resetting the LOC
property, set the new value.