https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Creating-Implementation-Constraints
Creating Implementation Constraints - Creating Implementation Constraints - 2023.2 English - UG903
After you have a synthesized netlist, you can load it into memory together with the XDC files or Tcl scripts enabled for implementation. You must review the...
creatingimplementationconstraintsenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/About-Generated-Clocks?contentId=_tF8LszmDSxlIHKc79yovw
About Generated Clocks - About Generated Clocks - 2025.2 English - UG903
Generated clocks are driven inside the design by special cells called Clock Modifying Blocks (for example, an MMCM), or by some user logic. Generated clocks...
generatedclocksenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Replacing-all_registers-Queries?contentId=BwFboEm3LUUn1EoXvYVP2Q
Replacing all_registers Queries - Replacing all_registers Queries - 2025.2 English - UG903
The following are some additional query recommendations: Avoid queries using all_registers whenever possible, as they tend to create large collections of...
replacingregistersqueriesenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Defining-Relatively-Placed-Macros
Defining Relatively Placed Macros - Defining Relatively Placed Macros - 2023.2 English - UG903
definingrelativelyplacedmacrosenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Constraining-Bus-Skew?contentId=DUnaYp0vNkTTX6dU7VJ14g
Constraining Bus Skew - Constraining Bus Skew - 2025.2 English - UG903
busskewenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Routing-Constraints?contentId=hrJRRMbkhwqNrDPObyr2Ng
Routing Constraints - Routing Constraints - 2023.2 English - UG903
Routing constraints are applied to net objects to control their routing resources.
routingconstraintsenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/XDC-File-Scoping-Properties?contentId=Ez1t~90IuUkc934XPnfqJw
XDC File Scoping Properties - XDC File Scoping Properties - 2025.2 English - UG903
The constraints scoping mechanism is activated by specifying the following properties on the XDC files: SCOPED_TO_REF This property takes the name of a module...
xdcfilescopingpropertiesenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Input-Delays
Input Delays - Input Delays - 2022.1 English - UG903
The Timing Constraints wizard analyzes all paths from input ports to identify their destination clock inside the design and their active edges. Based on this...
inputdelaysenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/update_macro
update_macro - update_macro - 2023.1 English - UG903
The update_macro command adds leaf cells and relative placements (RLOCs) to the macro. The RLOC has identical syntax and functionality as the RPM RLOC...
updatemacroenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/create_macro?contentId=s3X3I2Oz9HDTLQxInRRBpw
create_macro - create_macro - 2023.2 English - UG903
The create_macro command creates a new macro object. Macro names must be unique. Attempting to create a macro with the same name as an existing macro generates...
createmacroenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Advanced-XDC-Templates
Advanced XDC Templates - Advanced XDC Templates - 2022.1 English - UG903
Some advanced templates such as System Synchronous and Source Synchronous I/O delay constraints require you to set some Tcl variables to capture the design...
advancedxdctemplatesenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Please-Read-Important-Legal-Notices
Please Read: Important Legal Notices - Please Read: Important Legal Notices - 2023.1 English - UG903
The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The...
important legal noticesplease readenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Add-Delay-Input-Delay-Command-Option?contentId=McwuKa1apUe64xi0RP_TTg
Add Delay Input Delay Command Option - Add Delay Input Delay Command Option - 2025.2 English - UG903
The -add_delay option must be used if: A max (or min) input delay constraint exists, and You want to specify a second max (or min) input delay constraint on...
adddelayinputcommandoption
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Forwarded-Clocks
Forwarded Clocks - Forwarded Clocks - 2023.2 English - UG903
The Timing Constraints wizard recommends generated clock constraints on output ports that are driven by double data-rate registers with constant inputs. Based...
forwardedclocksenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Automatically-Derived-Clock-Example
Automatically Derived Clock Example - Automatically Derived Clock Example - 2023.1 English - UG903
The following automatically derived clock example is a clock generated by an MMCM. The master clock clkin drives the input CLKIN of the MMCME2 instance...
automaticallyderivedclockexampleenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/set_multicycle_path-Syntax?contentId=qFT7zYQcU1xvAMhlOKu5vg
set_multicycle_path Syntax - set_multicycle_path Syntax - 2023.2 English - UG903
setmulticyclepathsyntaxenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/About-Constraints-Methodology
About Constraints Methodology - About Constraints Methodology - 2025.2 English - UG903
Design constraints define the requirements that must be met by the compilation flow in order for the design to be functional on the board. Not all constraints...
constraintsmethodologyenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Managing-Macros
Managing Macros - Managing Macros - 2023.1 English - UG903
Macros are stored as XDC constraints. By definition, they are Tcl commands. This allows the macros to be used in both XDC constraint files and Tcl scripts, and...
managingmacrosenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Automatically-Derived-Clocks?contentId=~nsQW1MWpRke_6d3sd_bTw
Automatically Derived Clocks - Automatically Derived Clocks - 2023.1 English - UG903
Automatically derived clocks are also called auto-generated clocks. The Vivado IDE automatically creates the constraint for these on the output pins of the...
automaticallyderivedclocksenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Creating-Implementation-Constraints?contentId=RLSYIZLIOhqylbjlgap~5A
Creating Implementation Constraints - Creating Implementation Constraints - 2023.2 English - UG903
After you have a synthesized netlist, you can load it into memory together with the XDC files or Tcl scripts enabled for implementation. You must review the...
creatingimplementationconstraintsenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Generated-Clocks
Generated Clocks - Generated Clocks - 2023.2 English - UG903
This section discusses generated clocks and includes: About Generated Clocks User Defined Generated Clocks Automatically Derived Clocks Automatically Derived...
generatedclocksenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Relative-Slice-Based-Coordinates?contentId=5WlStXEnUCt1yKxTtVfheQ
Relative Slice-Based Coordinates - Relative Slice-Based Coordinates - 2023.1 English - UG903
The relative grid system: Is also known as the standard grid. Is sufficient for most RPMs. Is used for homogeneous RPMs in which all cells in an RPM belong to...
relativeslicebasedcoordinatesenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Preserving-RPM-through-opt_design?contentId=XT3TMUNNnVY793Udcx9mSg
Preserving RPM through opt_design - Preserving RPM through opt_design - 2023.1 English - UG903
opt_design is free to optimize and remove some LUTs that belong to an RPM despite the RLOC constraint. To prevent opt_design from optimizing the logic inside...
preservingrpmoptdesignenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Relative-Slice-Based-Coordinates
Relative Slice-Based Coordinates - Relative Slice-Based Coordinates - 2023.2 English - UG903
The relative grid system: Is also known as the standard grid. Is sufficient for most RPMs. Is used for homogeneous RPMs in which all cells in an RPM belong to...
relativeslicebasedcoordinatesenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Automatically-Derived-Clocks
Automatically Derived Clocks - Automatically Derived Clocks - 2025.2 English - UG903
Automatically derived clocks are also called auto-generated clocks. The Vivado IDE automatically creates the constraint for these on the output pins of the...
automaticallyderivedclocksenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Elaborated-Design-Constraints?contentId=e4vbjkX0e6fOUQGt8ZOtbw
Elaborated Design Constraints - Elaborated Design Constraints - 2023.2 English - UG903
Recommended: When you create the first version of your synthesis XDC, use simple timing constraints to describe the high-level design requirements. At this...
design constraintsenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Renaming-Auto-Derived-Clocks?contentId=G~jMz0WNB2Hw8L3uCrIMIA
Renaming Auto-Derived Clocks - Renaming Auto-Derived Clocks - 2023.1 English - UG903
It is possible to rename the generated clocks that are automatically created by the tool. The renaming process consists in calling the create_generated_clock...
renamingautoderivedclocksenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Creating-an-RPM?contentId=VhIUCb0zNiFILFM4Cku2hg
Creating an RPM - Creating an RPM - 2025.2 English - UG903
To create an RPM: Group cells into a set. Define relative locations for cells in the RPM set. Specify an RLOC_ORIGIN constraint or a LOC constraint on an RPM...
creatingrpmenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Propagated-Clocks?contentId=X9uslYPiCqueK_0doCXXUg
Propagated Clocks - Propagated Clocks - 2025.2 English - UG903
The period and waveform properties represent the ideal characteristics of a clock. When entering the FPGA and propagating through the clock tree, the clock...
clocksenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/User-Interface-Option?contentId=z069CPawNLHP6Z7yLQS3jw
User Interface Option - User Interface Option - 2025.2 English - UG903
Because the Vivado IDE manages your constraints, you do not edit your XDC files at the same time. When the Vivado IDE saves the memory content, the following...
user interfaceoptionenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/create_macro
create_macro - create_macro - 2023.2 English - UG903
The create_macro command creates a new macro object. Macro names must be unique. Attempting to create a macro with the same name as an existing macro generates...
createmacroenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Single-Bit-Register-Names
Single-Bit Register Names - Single-Bit Register Names - 2023.2 English - UG903
By default, the register name is based on the signal name in the RTL, plus the _reg suffix. For example, for a signal defined as follows in VHDL and Verilog,...
register namessinglebitenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Propagated-Clocks
Propagated Clocks - Propagated Clocks - 2022.1 English - UG903
The period and waveform properties represent the ideal characteristics of a clock. When entering the FPGA and propagating through the clock tree, the clock...
clocksenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Exclusive-Clock-Groups-Example?contentId=G_XzBU24rn6wCW4bcWdVZA
Exclusive Clock Groups Example - Exclusive Clock Groups Example - 2023.1 English - UG903
An MMCM instance generates clk0 and clk1 which are connected to the BUFGMUX instance clkmux. The output of clkmux drives the design clock tree. By default, the...
exclusiveclockgroupsexampleenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Valid-Commands-in-an-XDC-File?contentId=0KKbxgeIeIS2elyb7nbVLQ
Valid Commands in an XDC File - Valid Commands in an XDC File - 2023.1 English - UG903
Table 1. Valid Commands in an XDC File Timing Constraint Physical Constraint General Purpose create_clock create_generated_clock group_path set_clock_groups...
validcommandsxdcfileenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Syntax-of-the-set_bus_skew-Command?contentId=SPwXkGAIs4Jyp3Bbw3tXSQ
Syntax of the set_bus_skew Command - Syntax of the set_bus_skew Command - 2023.1 English - UG903
of thesyntaxsetbus
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Exceptions-Priority-Example?contentId=hq3vMUVTmSoKNzQgP~heGw
Exceptions Priority Example - Exceptions Priority Example - 2023.1 English - UG903
exceptionspriorityexampleenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Moving-the-Setup
Moving the Setup - Moving the Setup - 2023.1 English - UG903
The following examples show the results of moving the setup: Example One: Setup=5 / Hold Moved Accordingly Example Two: Setup=5 / Hold=4
the setupmovingenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Renaming-Auto-Derived-Clocks?contentId=MK4DmK164wtTKKDw6oQRpA
Renaming Auto-Derived Clocks - Renaming Auto-Derived Clocks - 2022.1 English - UG903
It is possible to rename the generated clocks that are automatically created by the tool. The renaming process consists in calling the create_generated_clock...
renamingautoderivedclocksenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Multicycle-Paths?contentId=OsXr6DIZMPx~Sp4hcv~sww
Multicycle Paths - Multicycle Paths - 2023.1 English - UG903
The Multicycle Path constraint allows you to modify the setup and hold relationships determined by the timer, based on the design clock waveforms. By default,...
multicyclepathsenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Macro-Properties?contentId=UApmaePuZgnJTn8wzbqhcQ
Macro Properties - Macro Properties - 2025.2 English - UG903
Macro objects have the following properties: ABSOLUTE_GRID CLASS NAME RLOCS
macropropertiesenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Organizing-Your-Constraints?contentId=yUIhzQdPSaHDzcmrgWRIHw
Organizing Your Constraints - Organizing Your Constraints - 2025.2 English - UG903
The Vivado IDE allows you to use one or many constraint files. While using a single constraint file for the entire compilation flow might seem more convenient,...
organizingconstraintsenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Propagated-Clocks?contentId=wIsvId8iD_4pyua8hoxZoQ
Propagated Clocks - Propagated Clocks - 2023.2 English - UG903
The period and waveform properties represent the ideal characteristics of a clock. When entering the FPGA and propagating through the clock tree, the clock...
clocksenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Training-Resources?contentId=BAUVTuaukRBWLdoLIpzg1g
Training Resources - Training Resources - 2023.2 English - UG903
AMD provides a variety of training courses and QuickTake videos to help you learn more about the concepts presented in this document. Use these links to...
training resourcesenglish
https://docs.amd.com/r/2023.2-English/ug903-vivado-using-constraints/Placement-Constraint-Examples
Placement Constraint Examples - Placement Constraint Examples - 2023.2 English - UG903
Placement Constraint Example One Locate a block RAM at RAMB18_X0Y10 and fix its location. % set_property LOC RAMB18_X0Y10 [get_cells u_ctrl0/ram0] Placement...
placementconstraintexamplesenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Primary-Clocks-Examples
Primary Clocks Examples - Primary Clocks Examples - 2022.1 English - UG903
As shown in the following figure, the board clock enters the device through the port sysclk, then propagates through an input buffer and a clock buffer before...
primaryclocksexamplesenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Using-Input-Delay-Options?contentId=sKF7EgUuur3Jna30jON_Cg
Using Input Delay Options - Using Input Delay Options - 2022.1 English - UG903
Although the -clock option is optional in the Synopsys Design Constraints (SDC) standard, it is required by the Vivado IDE. The relative clock can be either a...
usinginputdelayoptionsenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Disabling-Timing-Arcs?contentId=dVFcHuZb~EtuWB2ibIvrcw
Disabling Timing Arcs - Disabling Timing Arcs - 2025.2 English - UG903
You can disable timing arcs inside the cell with the set_disable_timing command. Only timing arcs going from input to output ports of a cell can be disabled....
disablingtimingarcsenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Example-Two-Setup-5/Hold-4?contentId=HlxElsrMC~sFTmDuD7oK5A
Example Two: Setup=5 / Hold=4 - Example Two: Setup=5 / Hold=4 - 2025.2 English - UG903
This example assumes that the following are defined: A setup multiplier of five (5) A hold multiplier of four (4) (that is, 5-1) This corresponds to a transfer...
example twosetupholdenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Creating-Synthesis-Constraints?contentId=bg31vaa4UFZBa70~pemtxA
Creating Synthesis Constraints - Creating Synthesis Constraints - 2023.1 English - UG903
The Vivado Synthesis transforms the RTL description of your design into a technology mapped netlist. This process happens in several steps, and includes a...
creatingsynthesisconstraintsenglish
https://docs.amd.com/r/2023.1-English/ug903-vivado-using-constraints/Moving-the-Setup?contentId=il7FxSQDPNBogTBkrg07eA
Moving the Setup - Moving the Setup - 2023.1 English - UG903
The following examples show the results of moving the setup: Example One: Setup=5 / Hold Moved Accordingly Example Two: Setup=5 / Hold=4
the setupmovingenglish
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Primary-Clocks-Examples
Primary Clocks Examples - Primary Clocks Examples - 2025.2 English - UG903
As shown in the following figure, the board clock enters the device through the port sysclk, then propagates through an input buffer and a clock buffer before...
primaryclocksexamplesenglish
https://docs.amd.com/r/2022.1-English/ug903-vivado-using-constraints/Constraining-Asynchronous-Signals
Constraining Asynchronous Signals - Constraining Asynchronous Signals - 2022.1 English - UG903
The set_max_delay command can also be used to constrain asynchronous signals that do not have a clock relationship, but which require maximum delay. For...
asynchronoussignalsenglish