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
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 this link 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 as well as 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 this link to the Vivado Design Suite: 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.