Using Clock Modifying Blocks (MMCM, XPLL, and DPLL) - 2022.1 English

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

Document ID
UG1387
Release Date
2022-05-25
Version
2022.1 English

You can use an MMCM, XPLL, or DPLL to change the overall characteristics of an incoming clock. An MMCM is most commonly used for conditioning and controlling the clock characteristics, such as:

  • Creating tighter control of phase
  • Filtering jitter in the clock
  • Changing the clock frequency
  • Correcting or changing the clock duty cycle

To use an MMCM, XPLL, or DPLL, several attributes must be coordinated to ensure that the MMCM is operating within specifications and delivering the desired clocking characteristics on its output. For this reason, Xilinx highly recommends that you use the Clocking Wizard to properly configure this resource.

You can also directly instantiate an MMCM, XPLL, or DPLL, which allows even greater control. However, be sure to use the proper settings to avoid causing the following issues:

  • Increasing clock uncertainty due to increased jitter
  • Building incorrect phase relationships
  • Making timing closure more difficult
    Important: When using the Clocking Wizard to configure the MMCM or PLL, by default the Clocking Wizard attempts to configure the MMCM for low output jitter using reasonable power characteristics.

Depending on your goals, you can change the settings in the Clocking Wizard to further minimize jitter and thus, improve timing at the cost of higher power. Alternatively, you can reduce power but increase output jitter.

When using MMCM, XPLL, or DPLL, be sure to do the following:

  • Do not leave any inputs floating. Relying on synthesis or other optimization tools to tie off the floating values is not recommended, because the values might be different than expected.
  • Connect RST to the user logic, so that it can be asserted by logic controlled by a reliable clocking source. Grounding of RST can cause problems if the clock is interrupted.
  • Use LOCKED output in the implementation of reset. For example, hold the synchronous logic clocked from the PLL in reset until LOCKED is asserted. The LOCKED signal must be synchronized before it is used in a synchronous portion of the design. Xilinx recommends adding LOCKED to a processor map so it is visible when debugging.
  • Confirm the connectivity between CLKFBIN and CLKFBOUT. The BUFG only needs to be included in the feedback path if the MMCM output clock needs to be phase aligned with the input clock, for example, when using BUF_IN compensation mode.
  • To avoid the MMCM, XPLL, or DPLL phase error timing penalty on synchronous clock domain crossing paths in Versal devices, use MBUFG* primitives that use leaf-level division. If using MBUFG* primitives is not possible, consider using parallel BUFGCE_DIVs from a single CLKOUT port instead of individual BUFGCEs from multiple CLKOUT ports.