What is FPGA XDC?

 An FPGA XDC is a Xilinx Design Constraints file (extension .xdc) used in Vivado to tell the tools how your design must be connected and timed.

Think of it as the “rules + wiring map” for implementation.



What an XDC file contains

1) Pin assignments (physical I/O mapping)

Maps your top-level ports to FPGA package pins and sets I/O standards.

Example:

set_property PACKAGE_PIN W5 [get_ports {clk}] set_property IOSTANDARD LVCMOS33 [get_ports {clk}]

2) Timing constraints (so timing analysis is correct)

Defines clocks and timing relationships.

Example:

create_clock -period 10.000 [get_ports clk] ;# 100 MHz

You can also constrain:

  • input/output delays (set_input_delay, set_output_delay)

  • clock uncertainty, generated clocks, false paths, multicycle paths, etc.

3) I/O electrical constraints

Sets things like:

  • IOSTANDARD (LVCMOS33, LVDS, SSTL, etc.)

  • drive strength (DRIVE)

  • slew rate (SLEW FAST/SLOW)

  • pullups/pulldowns (PULLUP, PULLDOWN)

4) Other implementation constraints

Such as:

  • placement constraints (Pblocks, LOCs)

  • special routing constraints

  • debug core constraints (ILA/VIO-related sometimes)

Why XDC matters

Without a correct XDC:

  • your signals may go to the wrong pins (board won’t work)

  • clocks may be unconstrained → timing report is meaningless

  • you can get I/O standard mismatches (risking damage or non-function)

Where to get the right XDC

  • Your FPGA board vendor usually provides a master XDC (all pins defined).

  • You copy the needed lines and match them to your top-level port names.

Common pitfalls

  • Port name mismatch: XDC references get_ports {clk} but your top port is sys_clk.

  • Forgetting create_clock: leads to “no clocks” / “unconstrained paths.”

  • Wrong IOSTANDARD (e.g., using 3.3V when bank is 1.8V).

  • Assigning pins in the wrong bank or using reserved pins.

评论

此博客中的热门博文

Detailed Explanation of STM32 HAL Library Clock System

How do you set up ADC (Analog-to-Digital Converter) in STM32?

How To Connect Stm32 To PC?