Auto-Derived Clocks - Auto-Derived Clocks - 2026.1 English - UG1387

Versal Adaptive SoC Hardware, IP, and Platform Development Methodology Guide (UG1387)

Document ID
UG1387
Release Date
2026-07-22
Version
2026.1 English

The Vivado timing engine automatically derives most generated clocks. It recognizes the clock modifying blocks (CMB) and the transformations they perform on the master clocks.

In the AMD Versalâ„¢ device family, following are the CMBs:

  • MMCM*/XPLL*/DPLL*
  • BUFG_GT/BUFGCE_DIV
  • MBUFG_PS/MBUFG_GT/MBUFGCE/MBUFGCE_DIV/MBUFGCTRL
  • GTYE5_QUAD/GTYP_QUAD/GTME5_QUAD
  • IBUFDS_GTE5/IBUFDS_GTME5
  • XPHY

Timing clocks propagate through any other combinatorial cell located on the clock tree. You do not need to redefine them at their output unless the cell transforms the waveform. You must rely on the auto-derivation mechanism as much as possible. It provides the safest way to define the generated clocks. These clocks correspond to the actual hardware behavior.

The Vivado Design Suite timing engine can choose an inappropriate auto-derived clock name. You can force your own clock name. Use the create_generated_clock command without specifying the waveform transformation. Place this constraint immediately after the constraint that defines the master clock in the constraint file.

The default name of a clock generated by a MMCM instance is net0. You can add a constraint to force your own name. In the given example, the name is fftClk:
create_generated_clock -name fftClk [get_pins mmcm_i/CLKOUT0]

Attach the constraint to the source pin of the clock to avoid any ambiguity. For more information, refer to the Vivado Design Suite User Guide: Using Constraints (UG903).