Pg065 Clk Wiz
Pg065 Clk Wiz
Pg065 Clk Wiz
Chapter 1: Overview
About the Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Recommended Design Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Feature Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Licensing and Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Appendix B: Upgrading
Migrating to the Vivado Design Suite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Differences between the Clocking Wizard and the Legacy DCM and PLL Wizards . . . . . . . . . . . . . 71
Upgrading in the Vivado Design Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Appendix C: Debugging
Finding Help on Xilinx.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Debug Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Hardware Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Overview
This chapter introduces the Clocking Wizard core and provides related information,
including recommended design experience, additional resources, technical support, and
ways of submitting feedback to Xilinx. The Clocking Wizard core generates source register
transfer level (RTL) code to implement a clocking network matched to your requirements.
Both Verilog and VHDL design environments are supported.
The core is licensed under the terms of the Xilinx End User License, and no FLEX license key
is required.
Feature Summary
The clocking options are listed below:
• Frequency Synthesis allows output clocks to have different frequencies from the active
input clock.
• Spread Spectrum provides modulated output clocks, which reduces the spectral
density of the electromagnetic interference (EMI) generated by electronic devices. This
feature is available for the MMCM(E2/E3/E4)_ADV primitive only. UNISIM simulation
support for this feature is not currently available.
• Phase Alignment allows the output clock to be phase locked to a reference, such as
the input clock pin for a device.
• Minimize Power allows you to minimize the amount of power needed for the primitive.
This is at the possible expense of frequency, phase offset, or duty cycle accuracy.
• Dynamic Phase Shift allows you to change the phase relationship on the output
clocks.
• Dynamic Reconfiguration allows you to change the programming of the primitive
after device configuration. When this option is chosen, the AXI4-Lite interface is
selected by default for reconfiguring the clocking primitive.
• Balanced. Selecting Balanced results in the software choosing the correct bandwidth
for jitter optimization.
• Minimize Output Jitter. This feature minimizes the jitter on the output clocks, but at
the expense of power and possibly output clock phase error. This feature is not
available with the Maximize input jitter filtering feature.
• Maximize Input Jitter filtering allows for larger input jitter on the input clocks, but
can negatively impact the jitter on the output clocks. This feature is not available with
the Minimize output jitter feature.
• Safe Clock Startup and Sequencing can be used to get a stable and valid clock at the
output. It also enables clocks in a particular sequence order as specified in the
configuration.
• Clock Monitor helps you to monitor the clock inputs to the Clocking Wizard. It can
monitor up to four clocks. You can monitor if the input frequency is out of range of the
expected frequency, and detect clock stop and glitches in the clock.
• Auto Primitive instantiates the appropriate clocking primitive for your requirements.
You do not need know the specification of the MMCM or PLL to judge which primitive
fits into your requirements; the Wizard does this for you. This feature is available for
UltraScale™ and UltraScale+™ devices only.
Applications
• The creation of clock networks with the required frequency, phase, and duty cycle, with
reduced jitter.
• Electromagnetic interference reduction in electronic devices using the Spread Spectrum
feature.
Information about other Xilinx LogiCORE IP modules is available at the Xilinx Intellectual
Property page. For information about pricing and availability of other Xilinx LogiCORE IP
modules and tools, contact your local Xilinx sales representative.
Product Specification
Clocking Wizard helps create the clocking circuit for the required output clock frequency,
phase, and duty cycle using a mixed-mode clock manager (MMCM)(E2/E3/E4) or
phase-locked loop (PLL)(E2/E3/E4) primitive. It also helps verify the output generated clock
frequency in simulation, providing a synthesizable example design which can be tested on
the hardware. It also supports the Spread Spectrum feature, which is helpful in reducing
electromagnetic interference. Figure 2-1 shows a block diagram of the Clocking Wizard.
X-Ref Target - Figure 2-1
Example Design
Frequency
Optional Feedback Check
Optional Optional
Clock Configured
Input Output Counter High
Generators Bufs Clocking Bufs
Clocks Clocks Array Bits
Primitive
X12950-080621
Performance
Maximum Frequencies
For the maximum frequencies of the MMCM and PLL, refer to the following device data
sheets:
Power
• The Minimize Power feature minimizes the amount of power needed for the primitive at
the possible expense of frequency, phase offset, or duty cycle accuracy.
• When asserted, the power down input pin places the clocking primitive in a low power
state, which stops the output clocks.
Resource Utilization
Resource utilization is available in the Clocking Wizard IDE by clicking on the Resource tab.
This does not include AXI4-Lite resources when Dynamic Reconfiguration is enabled.
X-Ref Target - Figure 2-2
Port Descriptions
Table 2-1 describes the input and output ports provided from the clocking network. All
ports are optional, with the exception being that at least one input and one output clock are
required. The options selected determine which ports are actually available to be
configured. For example, when Dynamic Reconfiguration is selected, these ports are
exposed. Any port that is not exposed is appropriately tied off or connected to a signal
labeled unused in the delivered source code.
Notes:
1. At least one input clock is required; any design has at least a clk_in1 or a clk_in1_p/clk_in1_n port.
2. Not available when primitive chosen is UltraScale PLL or Spread Spectrum is selected for MMCM.
3. The clk_out3 and clk_out4 ports are not available when Spread Spectrum is selected.
4. Exposure of every status and control port is individually selectable.
5. This version of Clocking Wizard supports naming of ports as per requirements. The list mentioned in Table 2-1 is the default
port list.
6. Ports used for dynamic change of output counter without reset. Available only in MMCME3 primitive.
7. These ports are available when the Clock Monitor feature is enabled.
8. The user must write to the interrupt enable register with all 1's (i.e., interrupt enable for clock stop, clock overrun, and clock
underrun bits in the interrupt status register) for the Interrupt to be enabled.
Register Space
Table 2-2 shows the set of registers applicable when the Dynamic Reconfiguration mode is
selected. All registers are accessed as 32-bit.
C_BASEADDR Clock Configuration Register 24s 0000 R/W Bit[0] = LOAD / SEN
+0x35C Loads Clock Configuration
Register values to the internal
register used for dynamic
reconfiguration and initiates
reconfiguration state machine.
This bit should be asserted when
the required settings are already
written into Clock Configuration
Registers. This bit retains to 0,
when the dynamic
reconfiguration is done and the
clock is locked.
Bit[1] = SADDR
When written 0, default
configuration done in the
Clocking Wizard GUI is loaded for
dynamic reconfiguration.
When written 1, setting provided
in the Clock Configuration
Registers are used for dynamic
reconfiguration.
C_BASEADDR + Undefined Undefined N/A
0x360 to
C_BASEADDR +
0x7FC
Notes:
1. Reading of this register returns an undefined value.
2. Initialized with configuration settings done by the clocking algorithm.
3. Valid only for MMCM(E2/E4) primitive.
4. Eight-bit divide value.
5. Phase value = (Phase Requested) * 1000. For example, for a 45.5 degree phase, the required value is 45500 = 0xB1BC.
6. Phase values entered are signed numbers in the range +360000 to -360000.
7. Duty cycle value = (duty cycle in %) * 1000. For example, for a 50% duty cycle, the value is 50000 = 0xC350.
8. To enable the interrupt, the user must write to the interrupt enable register with all 1's. Clock overrun and clock underrun are
bits gated by interrupt enable bits. Interrupts corresponding to the enabled bits in the interrupt enable register are updated
in this register.
Note: You need to write all the register sets with the required values, even if you want the change
only in one particular register.
Clocking
Up to seven output clocks with different frequencies can be generated for the required
circuitry.
Resets
• The Clocking Wizard has an active-High asynchronous reset signal for the clocking
primitive.
• The core must be held in reset during clock switch over.
• When the input clock or feedback clock is lost, the clkinstopped or clkfbstopped
status signal is asserted. After the clock returns, the clkinstopped signal is
deasserted and a reset must be applied.
Functional Overview
The Clocking Wizard is an interactive graphical user interface (GUI) that creates a clocking
network based on design-specific needs. The required clock network parameters are
organized in a linear sequence, so that you can select only the desired parameters. Using
the Wizard, experienced users can explicitly configure their chosen clocking primitive, while
less experienced users can let the Wizard automatically determine the optimal primitive
and configuration - based on the features required for their individual clocking networks.
If you are already familiar with the Digital Clock Manager (DCM) and Phase-Locked Loop
(PLL) Wizards, see Appendix B, Upgrading for information on usage differences.
Clocking Features
Major clocking-related functional features desired and specified can be used by the Wizard
to select an appropriate primitive. Incompatible features are automatically dimmed out to
help the designer evaluate feature trade-offs. See Feature Summary for more details.
Input Clocks
One input clock is the default behavior, but two input clocks can be chosen by selecting a
secondary clock source. Only the timing parameters of the input clocks in their specified
units is required; the Wizard uses these parameters as needed to configure the output
clocks.
Output Clocks
You can configure the number of output clocks. The maximum number allowed depends
upon the selected device or primitive and the interaction of the major clocking features you
specify. For MMCM(E2/E3) maximum seven, PLLE2 maximum six and PLLE3 maximum two
output clocks can be configured. If the primitive selected is Auto, then all the maximum
seven output clocks can be configured. Input the desired timing parameters (frequency,
phase, and duty cycle) and let the Clocking Wizard select and configure the clocking
primitive and network automatically to comply with the requested characteristics. If it is not
possible to comply exactly with the requested parameter settings due to the number of
available input clocks, best-attempt settings are provided. When this is the case, the clocks
are ordered so that clk_out1 is the highest-priority clock and is most likely to comply with
the requested timing parameters. The Wizard prompts you for frequency parameter
settings before the phase and duty cycle settings.
TIP: The port names in the generated circuit can differ from the port names used on the original
primitive.
Optional Ports
All primitive ports are available for configuration. You can expose any of the ports on the
clocking primitive, and these are provided in the source code.
Primitive Override
All configuration parameters are also configurable. In addition, should a provided value be
undesirable, any of the calculated parameters can be overridden with the desired settings.
Clock Monitor
The Clock Monitor feature allows you to monitor the clocks in a system; typically, the inputs
to the MMCM/PLL. It detects changes in the frequency of the clock, glitches in the clock, or
a clock stop. It also gives you the option to specify the tolerance required. For example, if
you want to see an error only if the frequency is 1 MHz higher than requested, a tolerance
of 1 MHz must be specified.
Clock Stop
The Clock Stop goes High when the clock is flat-lined for more than 10 clock cycles. Once
the clock is stale for 10 or more clock cycles, it initiates the calculation to detect the stop
and signals the clock_stop High. The clock stop signal will not become high immediately
and can take up to 256 clock cycles from the time the clock is flat. This calculation requires
a set of reference clock cycle periods, time at which the clock_stop will go High depends
on the ratio of user_clk and ref_clk.
Clock Glitch
The Clock Monitor can detect a glitch in the user clock. The minimum glitch it can detect in
the user clock is one clock period of the reference clock. The Clock Glitch condition might
overlap with the Clock Overrun.
Note: The Clock Underrun signal might also go High during the stop condition, if the frequency of
the signals goes much lower than the desired frequency.
Note: There might be cases where OOR/glitch is not detected if there is a large difference between
the maximum user clock frequency (e.g., 280 MHz) and minimum user clock frequency (e.g., 10 MHz).
Auto Primitive
This feature helps to instantiate the clocking primitive which best fits your requirements,
with high performance and better clock routing, while keeping the use of clocking
resources to a minimum. All clocking features and optional ports are deselected when you
select the primitive as Auto. You need to exclusively enable the options which are required.
The following tables explain the selection criteria depending on the clocking features
selected.
Note: This feature is available for UltraScale™ and UltraScale+™ devices only.
Table 3-1: Auto Primitives
Condition 1
The following table gives the duty cycle values which are possible with the divide values
from 1 to 8. Each clock must fall under any one of the divide and duty cycle combinations
to satisfy condition 1.
Condition 2
Condition 2 is satisfied when you select any one of the following buffers for all the output
clocks:
1. Buffer
2. Buffer_with_CE
3. BUFGCE_DIV
Condition 3
Condition 3 is satisfied when the output clocks 2-7 satisfy the duty cycle and divide
combinations specified in the following table.
Buffer options (Buffer or Buffer with CE) are provided to help you by instantiating the
appropriate buffer, which helps in creating better clock routing. When you select these
options, the Wizard determines the buffer to be instantiated by taking into consideration
the conditions in the following table.
Note: This feature is available for UltraScale and UltraScale+ devices only.
If you select specific buffers like BUFG, BUFGCE, BUFGCE_DIV, or No_Buffer, the Wizard
instantiates them specifically.
Matched Routing
• Enabling matched routing on the clocks conveys the information to the implementation
tool to use the same CLOCK_ROOT for the selected clocks. This is performed by setting
the CLOCK_DELAY_GROUP property on the corresponding clock nets in the Xilinx®
design constraints (XDC) file for the IP.
• For clocks without matched routing, the clock skew on timing paths with other clocks is
not optimized. This can lead to difficult timing closure. Use matched routing preferably
for high-frequency clocks with many clock domain crossing paths.
• The Wizard infers the BUFGCE_DIV as buffer when matched routing is selected. This
buffer helps in better matched routing.
Whenever you select the check box, the IP creates the optimal clocking structure. This
option will be helpful because it is backward compatible with the earlier clocking structure.
° Takes true and false as values with the default value being false.
• Model parameter: C_OPTIMIZE_CLOCKING_STRUCTURE_EN
° The value of this parameter is 1 if the above user parameter is true, and 0 if it is
false.
Example Configuration
Example 1: All Seven Clocks Active with MMCM as Primitive
° The resource tab shows one MMCM, one IBUFG, and seven BUFG.
Figure 3-3: Summary Table for Optimize Clock Structure Not Enabled
° The resource tab shows one PLL, one IBUFG, and two BUFGs.
Figure 3-7: Summary Table for Optimize Clock Structure Not Enabled
Figure 3-8: Clocking Structure for Optimize Clock Structure Not Enabled
° The resource tab shows one PLL, one IBUFG, one BUFG, and one BUFGCE_DIV.
Summary
This feature is available only for UltraScale and UltraScale+ devices. When matched routing
is enabled on the clocks and Auto Primitive is selected, the Wizard generates the clocks in
such a way that they have the same source and are derived through BUFGCE_DIV. These
derived clocks have minimum skew. The Clocking Wizard provides a summary for the
created network. Input and output clock settings are provided both visually and as
constraint files. In addition, jitter numbers for the created network are provided along with
a resource estimate.
Design Environment
Figure 3-11 shows the design environment provided by the Wizard to assist in integrating
the generated clocking network into a design. The Wizard provides a synthesizable and
downloadable example design to demonstrate how to use the network and allows you to
place a simple clocking network in a device. A sample simulation test bench, which
simulates the example design and illustrates output clock waveforms with respect to input
clock waveforms, is also provided.
X-Ref Target - Figure 3-11
Example Design
Frequency
Optional Feedback Check
Optional Optional
Clock Configured
Input Output Counter High
Generators Bufs Clocking Bufs
Clocks Clocks Array Bits
Primitive
X12950-080621
Core Architecture
The Clocking Wizard generates source code HDL to implement a clocking network. The
generated clocking network typically consists of a clocking primitive (MMCM(E2/E3)_ADV
or PLL(E2/E3)_ADV) plus some additional circuitry which typically includes buffers and clock
pins. The network is divided into segments as illustrated in Figure 3-12. Details of these
segments are described in the following sections.
Optional feedback
Configured
Input Opt Opt Output
Clocking
Clocks Bufs Bufs Clocks
Primitive
X12951
Input Clocks
Up to two input clocks are available for the clocking network. Buffers are optionally inserted
on the input clock paths based on the selected buffer type.
Primitive Instantiation
The primitive, selected either by you or the Wizard, is instantiated into the network.
Parameters on primitives are set by the Wizard, and you can override them. Unused input
ports are tied to the appropriate values. Unused output ports are labeled as such.
Feedback
If phase alignment is not selected, the feedback output port on the primitive is
automatically tied to the feedback input port. If phase alignment with automatic feedback
is selected, the connection is made, but the path delay is matched to that of clk_out1. If
user-controlled feedback is selected, the feedback ports are exposed.
Output Clocks
Buffers that are user-selected are added to the output clock path, and these clocks are
provided.
I/O Signals
All ports are optional, with the exception that at least one input and one output clock are
required. Availability of ports is controlled by user-selected parameters. For example, when
Dynamic Reconfiguration is selected, only those ports related to Dynamic Reconfiguration
are exposed. Any port that is not exposed is either tied off or connected to a signal labeled
unused in the delivered source code.
IMPORTANT: Not all ports are available for all devices or primitives; for example, Dynamic Phase Shift
is not available when Spread Spectrum is selected.
• Vivado Design Suite User Guide: Designing IP Subsystems using IP Integrator (UG994)
[Ref 7]
• Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2]
• Vivado Design Suite User Guide: Getting Started (UG910) [Ref 4]
• Vivado Design Suite User Guide: Logic Simulation (UG900) [Ref 5]
If you are customizing and generating the core in the Vivado IP integrator, see the Vivado
Design Suite User Guide: Designing IP Subsystems Using IP Integrator (UG994) [Ref 7] for
detailed information. IP integrator might auto-compute certain configuration values when
validating or generating the design. To check whether the values do change, see the
description of the parameter in this chapter. To view the parameter value, you can run the
validate_bd_design command in the Tcl Console.
You can customize the IP for use in the design by specifying values for the various
parameters associated with the IP core using the following steps:
For details, see Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2] and
Vivado Design Suite User Guide: Getting Started (UG810) [Ref 4].
Note: Figures in this chapter are illustrations of the Vivado IDE. This layout might vary from the
current version.
Clocking Features
The first tab of the IDE allows you to identify the required features of the clocking network
and configure the input clocks.
X-Ref Target - Figure 4-1
Figure 4-1: Clocking Options for 7 Series MMCM (Spread Spectrum Unselected)
Figure 4-2: Clocking Options with Spread Spectrum Unselected for UltraScale and UltraScale+
Note: The Auto option under Primitive is available only for UltraScale and UltraScale+™ devices.
Figure 4-3: Clocking Options for 7 Series MMCM (Spread Spectrum Selected)
When using IP integrator, the frequency, phase and clock domain properties of the output
clocks are automatically propagated and any change in input clock properties reflects on all
the outputs.
Note: The Port Renaming tab has been removed from the Clocking Wizard interface because the IP
does not support renaming of the ports in IP integrator.
• Frequency Synthesis allows output clocks to have different frequencies from the active
input clock.
• Spread Spectrum provides modulated output clocks, which reduces the spectral
density of the electromagnetic interference (EMI) generated by electronic devices. This
feature is available for the MMCM(E2/E3/E4)_ADV primitive only. The Minimize Power
and Dynamic Reconfig features are not available when Spread Spectrum is selected.
• Phase Alignment allows the output clock to be phase locked to a reference, such as
the input clock pin for a device. The default value of phase alignment is set to false for
UltraScale and UltraScale+ primitives. This feature uses extra clock routes in UltraScale
and UltraScale+ designs when MMCMs are used.
RECOMMENDED: Use this feature only if you specifically require it. Extra clock routes can be
used by implementation tools for high fanout signals instead of the Phase Alignment
feature.
Note: The Phase Alignment option is not available for the UltraScale PLL primitive.
• Minimize Power allows you to minimize the amount of power needed for the primitive.
This is at the possible expense of frequency, phase offset, or duty cycle accuracy.
• Dynamic Phase Shift allows you to change the phase relationship on the output
clocks.
• Dynamic Reconfiguration allows you to change the programming of the primitive
after device configuration. When this option is chosen, the AXI4-Lite interface is
selected by default for reconfiguring the clocking primitive. The DRP interface can be
selected if direct access to MMCM/PLL DRP register is required. See Dynamic
Reconfiguration through AXI4-Lite for more information.
• Selecting Balanced results in the software choosing the correct bandwidth for jitter
optimization.
• Minimize Output Jitter. This feature minimizes the jitter on the output clocks, but at
the expense of power and possibly output clock phase error. This feature is not
available with the Maximize input jitter filtering feature.
• Maximize Input Jitter filtering allows for larger input jitter on the input clocks, but
can negatively impact the jitter on the output clocks. This feature is not available with
the Minimize output jitter feature.
• Safe Clock Startup enables a stable and valid clock at the output using BUFGCE after
Locked is sampled High for eight input clocks. The sequencing feature enables clocks in
a sequence according to the number entered in the IDE. The delay between two
enabled output clocks in sequence is eight cycles of the second clock in the sequence
clock. This feature is useful for a system where modules need to start operating one
after the other.
• Optimize Clocking Structure. This option is only available to the user for the MMCM
and PLL primitives. When this option is enabled, the IP generates the optimal clocking
structure for the explicit primitive in combination with the auto buffer selection.
Note: These input frequency ranges vary with the device selected.
Enter the frequency and peak-to-peak period (cycle) jitter for the input clocks. The Wizard
then uses this information to create the clocking network. Additionally, a Xilinx design
constraints (XDC) file is created using the values entered. For the best calculated clocking
parameters, it is best to fully specify the values. For example, for a clock requirement of 33
1/3 MHz, enter 33.333 MHz rather than 33 MHz.
You can select the buffer type that drives the input clock, and this is then instantiated in the
provided source code. If the input buffers are located externally, selecting No buffer leaves
the connection blank. If Phase Alignment is selected, you do not have access to pins that
are not dedicated clock pins, because the skew introduced by a non-clock pin is not
matched by the primitive. You can choose the units for input clock jitter by selecting either
the UI or PS drop-down menu. The input jitter box accepts the values based on this
selection.
In IP integrator, when the Clocking Wizard IP is selected to target a board part, the
frequency values that are generated to the primary and secondary clocks are displayed in a
floating number format. For example, if the primary clock frequency is 100 MHz, it is
displayed as 100.000 instead of 100.
You can specify values for the output clock frequency, phase shift, and duty cycle assuming
that the primary input clock is the active input clock. The Clocking Wizard attempts to
derive a clocking network that meets your criteria exactly. In the event that a solution
cannot be found, best attempt values are provided and are shown in the actual value
column. Actual frequencies are calculated to limit the values to three decimal places.
Achieving the specified output frequency takes precedence over implementing the
specified phase, and phase in turn takes higher precedence in the clock network derivation
process than duty cycle. The precedence of deriving the circuits for the clk_out signals is
clk_out1 > clk_out2 > clk_out3, and so on. Therefore, finding a solution for
clk_out1 frequency has a higher priority. Values are recalculated every time an input
changes. Because of this, it is best to enter the requirements from top to bottom and left to
right. This helps to pinpoint requested values that cannot be supported exactly. If Phase
Alignment is selected, the phase shift is with respect to the active input clock.
are 180° phase shifted, and clk_out2 and clk_out3 are 180° phase shifted, clk_out3
uses its own phase settings and is connected to clkout2 of the MMCM. If you have
another clock, clk_out4, with a 180° phase shift compared to clk_out3, clk_out4 is
connected to clkout2b.
You can choose which type of buffer is instantiated to drive the output clocks, or No buffer
if the buffer is already available in external code. The buffers available depend on your
device family. For all outputs that have BUFR as the output driver, the BUFR_DIVIDE
attribute is available as a generic parameter in the HDL. You can change the divide value of
the BUFR while instantiating the design.
Note: The Max Freq. of buffer column in the Output Clocks tab of the Clocking Wizard (as shown
in Figure 4-4) shows the maximum frequency of the clock that the selected output buffer can drive.
When you select a buffer, ensure that the required frequency is within the range of frequencies that
the buffer can support. Otherwise, you might get timing violations.
If you select Dynamic Phase Shift clocking, the Use Fine PS check boxes become available.
'These checkboxes allow you to enable the variable fine phase shift on the MMCM(E2/E3).
Select the appropriate check box for any clock that requires dynamic phase shift. The
Wizard resets the requested phase field to 0.000 when Use Fine PS is selected.
When the Safe Clock Startup feature is enabled on the first tab of the GUI, the Use Clock
Sequencing table is active and the sequence number for each enabled clock is available for
configuration. In this mode, only BUFGCE is allowed as a driver of the clock outputs.
Both 7 series and UltraScale devices support the MMCM fractional divide functionality in
increments of 1/8th (0.125) for CLKFBOUT and CLKOUT0, and can support greater clock
frequency synthesis. The resolution of the fractional divide is 1/8 or 0.125 degrees,
effectively increasing the number of synthesizable frequencies by a factor of eight. For
example, if the CLKIN frequency is 100 MHz and the M divide value is set to 8, the VCO
frequency is 800 MHz. CLKOUT0 can be used to further fractionally divide the 800 MHz VCO
frequency (for example, CLKOUT0_DIVIDE = 2.5, resulting in a 320 MHz output frequency).
Note: The fractional divide values entered in override mode must be in multiples of 0.125.
Otherwise, the IP returns an error saying that the value must be a multiple of 0.125.
When using the fractional divider, the duty cycle is not programmable for outputs used in
the fractional mode. Fractional divide is not allowed in fixed or dynamic phase shift mode.
The CDDC feature is not available in the fractional divide mode for UltraScale devices. See
7 Series FPGAs Clocking Resources User Guide (UG472) [Ref 9] and UltraScale Architecture
Clocking Resources User Guide (UG572) [Ref 8] for more information.
Figure 4-5: Output Clocks with Safe Clock Start Up and Clock Sequencing for 7 Series MMCM
You can configure the sequence number from 1 to the maximum number of clocks selected.
The Clocking Wizard does not allow any break in the sequence from one to the maximum
in the table. The frequency of the output clock in the sequence must not be more than eight
times that of the output clock next in sequence. For details of the clocking behavior in this
mode, see Figure 4-6 and Figure 4-7.
X-Ref Target - Figure 4-6
BCLK
BUFGCE
ACLK
BUFGCE
D Q
LOCK D Q 8-Bit Shift Reg
BUFH
8-Bit Shift Reg INIT=0
CLKOUT0 BUFH
INIT=0
CLKOUT1
MMCM
X13968
BCLK
BUFGCE
ACLK
BUFGCE
D Q
LOCK D Q 8-Bit Shift Reg
BUFH
8-Bit Shift Reg INIT=0
CLKOUT0 BUFH
INIT=0
CLKOUT1
MMCM
X13969
Figure 4-8: Output Clocks for 7 Series MMCM (Spread Spectrum Selected)
• DOWN_LOW
• DOWN_HIGH
• CENTER_LOW
• CENTER_HIGH
The available modulation frequency range is 25 – 250 KHz. Spread spectrum calculation
details are described in Figure 4-9 and Figure 4-10.
X-Ref Target - Figure 4-9
Frequency
Center Spread
Average Spread
Frequency
Time
X12952
Frequency
Time
X12953
For spread:
IMPORTANT: The actual modulation frequency might deviate within +/- 10% of the requested
modulation frequency for some settings.
Reset Type
You can select the Reset Type as active-High or active-Low when RESET is enabled. The
default value is active-High.
Choosing Feedback
Feedback selection is only available when Phase Alignment is selected. When phase
alignment is not selected, the output feedback is directly connected to the input feedback.
For designs with phase alignment, choose automatic control on-chip if you want the
feedback path to match the insertion delay for CLK_OUT1. You can also select
user-controlled feedback if the feedback is in external code. If the path is completely on the
FPGA, select on-chip; otherwise, select off-chip. For designs that require external feedback
and related I/O logic, choose automatic control off-chip feedback. You can choose either
single-ended or differential feedback in this mode. The Wizard generates the core logic and
the logic required to route the feedback signals to the I/O. The Output Clocks IDE tab
(Figure 4-8) provides information to configure the rest of the clocking network.
Note: When you select the UltraScale PLL, choosing clocking feedback option is not available.
Primitive Overrides
One or more pages of device and primitive specific parameter overrides are displayed.
IMPORTANT: It is important to verify that the values you are choosing to override are correct because
the Wizard implements what you have chosen even if it causes issues with the generated network.
The parameters listed are relevant for the physical clocks on the primitive, rather than the
logical clocks created in the source code. For example, to modify the settings calculated for
the highest priority CLK_OUT1, you actually need to modify the CLKOUT0* parameters, and
not the CLKOUT1* parameters for a MMCM or PLL.
Note: The OVERRIDE_PRIMITIVE parameter is disabled when the selected primitive is Auto. You can
only update the attributes of the resulting primitive.
You can only select the STARTUP_WAIT option in the Override mode, that works with the
Configuration CLK_Cycle option, to wait for the Clock Manager to lock before completing
the startup sequence.
See 7 Series FPGAs Clocking Resources User Guide (UG472) [Ref 9] and UltraScale
Architecture Clocking Resources User Guide (UG572) [Ref 8] for more information.
The generated source code contains the input and output clock summaries shown in the
next summary page, as shown in Figure 4-16.
Port Renaming
The first summary page (Figure 4-14) displays summary information about the input and
output clocks. This information is also provided as comments in the generated source code,
and in the provided XDC.
Port Names
The Wizard allows you to name the ports according to their needs. If you want to name the
HDL port for primary clock input, type the port name in the adjacent text box. The text
boxes contain the default names. In the case of the primary clock input, the default name is
CLK_IN1.
IMPORTANT: Be careful when changing the port names, as it could result in syntax errors if the port
name entered is any reserved word of VHDL or Verilog, or if that signal is already declared in the
module.
Clock Monitor
The Clock Monitor feature is a part of the Clocking Wizard IP. It allows you to monitor the
clock in a given system for clock loss or out-of-range errors. In Zynq or Zynq UltraScale
devices, the clock monitored can be either a processing system (PS) clock or a
programmable logic (PL) clock. In FPGAs, the clock monitored can be an arbitrary clock.
• Reference Clock Frequency: The reference clock frequency determines the frequency
of the clock to be monitored.
• Channel Clock Frequency: You can choose the frequency of the clock to be monitored
based on the value of reference clock.
• Tolerance: You can program the precision required to monitor the clock.
Note: Only integer values of tolerance are accepted.
• Enable_PLL/MMCM (0-1): Enabling this option monitors the input clock to the
MMCM/PLL.
Note: If the Enable_PLL/MMCM options are enabled in the IDE, ensure that the primary/secondary
clock frequency does not exceed 300 MHz. Users cannot request user clock frequencies
(USER_CLK_FREQ_0/1/2/3) beyond 300 MHz.
Summary
The summary page (Figure 4-16) contains general summary information.
The Summary page gives you the information about the connections between the Wizard
output clocks and the primitive output clocks. The Source column in the last table specifies
the primitive output pin. It states whether the clock is generated directly from the primitive
or derived using BUFGCE_DIV.
Figure 2-2 provides details of the signals of AXI4-Lite and Table 2-2 provides details of the
clock configuration registers.
The Clocking Wizard core uses a configuration state machine listed in MMCM and PLL
Dynamic Reconfiguration (XAPP888) [Ref 6] and extends from two fixed-state
configurations to program any valid range of Multiply, Divide, Phase and Duty Cycle. In this
state machine, state 1 corresponds to default state configured through the Clocking Wizard
interface. State 2 corresponds to the user configuration loaded into the Clock
Configuration Register detailed in Table 2-2. State 2 values are also initialized with the
state 1 values so that a valid configuration is stored by default. All the dynamic
reconfiguration registers are to be updated whenever you want to reprogram the clock.
Dynamic Reconfiguration uses resources for internal calculations in the wizard. The user
provides CLKFBOUTMULT, DIVCLK_DIVIDE, CLKOUTxPHASE, and CLKOUTx_DUTY other user
understandable parameters. They cannot be directly mapped to MMCM/PLL DRP registers.
User understandable attributes are converted to MMCM DRP registers and written into
primitive. This calculation is done in the wizard using few function call and makes the wizard
utilize the resources mentioned in MMCM and PLL Dynamic Reconfiguration (XAPP888)
[Ref 6].
If the phase duty cycle configuration parameter is not enabled, the wizard only calls
functions related to frequency. This option must be enabled to change phase and duty cycle
dynamically. Next, wizard calls the functions related to phase and duty cycle at the cost of
resources. If resources cannot be used, use wizard to call these functions during IP
generation and write a different address set containing direct DRP data. Here wizard does
not do any calculations, it guides the user with the value needed to be written into the
registers. Write DRP must be selected to enable this feature.
1. Write all the Clock Configuration Registers, and then check for the status register.
2. Before writing into the C_BASEADDR + 0x200 register detailed in Table 4-1, make sure
that these values result in a valid VCO frequency range of MMCM/PLL which is
calculated using the following equation:
For details on the VCO range, refer to the DC and Switching Characteristics section of
the applicable device data sheet.
3. If the status register value is 0x1, start the reconfiguration by writing Clock
Configuration Register 23 with 0x3.
CAUTION! The fractional enable bit in Clock Configuration Register 0 must only be enabled if the value
of the clock FBOUT MULT is a non-integer. Similarly, the fractional enable bit in Clock Configuration
Register 2 must only be enabled if the value of CLKOUT0_DIVISE is a non-integer.
1. Generate the Clocking Wizard IP. Enable the Dynamic Reconfig option and select the
Write DRP registers feature.
2. Open another Clocking Wizard with the same input clock and the features as intended.
3. Change the output clock features in the Output Clocks tab of the Vivado IDE as
required for dynamic reconfiguration.
4. The table in the Write DRP registers tab is updated for the required clocks. Use these
register set values for dynamically reconfiguring the initial Clocking Wizard.
An example of the write DRP feature is described in Example for Dynamic Reconfiguration
Using Write to DRP.
MMCM/PLL
DCLK
RST
Software Reset 16
Register DO[15:0]
16
AXI Lite 32
7
DI[15:0]
Interface 32 Mmcm/pll_drp DADDR[6:0]
Data & Control
DEN
Registers (R/W)
DWE
32
DRDY
32
32
Status Register LOCKED
X13970
The input and output clock frequencies are 100 MHz in the Clocking Wizard by default.
1. The output clock frequency needs to be reconfigured to 50 MHz with a phase shift of
90°, as shown below:
X-Ref Target - Figure 4-18
2. The table in the DRP Registers tab gets updated for the user requirements on the clock,
as shown below:
3. The table specifies all the AXI registers with the address and the data which needs to be
written into it. Configure all the AXI Registers with respect to the table.
4. Configure Clock Configuration Register 24 (Address: C_BASEADDR + 0x35C) with
0x00000003 to set the LOAD and SEN bits.
5. Wait for the locked signal. The new frequency can be checked at the clkout1 output
port.
IMPORTANT: When Dynamic Reconfiguration is selected using the DRP interface, refer to MMCM and
PLL Dynamic Reconfiguration (XAPP888) [Ref 6] for the steps to reconfigure the clocking primitive. You
can use the MMCM register details to configure different M and D values.
Output Generation
For details, see the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2].
The core-level XDC has early processing order, meaning that core-level XDC constraints are
applied first and are then overridden by the user-provided constraints.
Clock Frequencies
See Maximum Frequencies in Chapter 2.
Clock Management
The core can generate a maximum of seven output clocks with different frequencies.
Clock Placement
No clock placement constraint is provided.
Banking
Bank selection is not provided in the XDC file.
Simulation
For comprehensive information about Vivado® simulation components, as well as
information about using supported third-party tools, see the Vivado Design Suite User
Guide: Logic Simulation (UG900) [Ref 5].
You can simulate the example design using the open_example_project flow in the
Vivado design tools. If you open an example project, the simulation scripts are generated in
the following working directory:
example_project/<component_name>_example/<component_name>_example.sim/sim_1/
You can run fast simulation using the unifast_ver or unifast libraries of MMCME2_ADV
and PLLE2_ADV. This results in a hundred-fold improvement in simulation run time.
clk_in1
clk_out1
clk_out2
clk_out3
clk_out4
reset
locked
When locked is asserted High clk_out1 is enabled clk_out3 is enabled after 8 Clock Cycles of clk_out4 is enabled after 8 Clock Cycles clk_out2 is enabled after 8 Clock Cycles of
after 8 Clock Cycles of CLKOUT0 from MMCM/ CLKOUT2 from MMCM/PLL when clk_out1 of CLKOUT3 from MMCM/PLL when CLKOUT1 from MMCM/PLL when clk_out4
PLL. is already enabled. clk_out3 is already enabled. is already enabled.
Figure 4-21: Simulation when Safe Clock Startup is True and Use Clock Sequencing is True
IMPORTANT: For cores targeting 7 series or Zynq®-7000 devices, UNIFAST libraries are not supported.
Xilinx IP is tested and qualified with UNISIM libraries only.
Example Design
In the Vivado® design tools, the open_example_project [get_ips
<component_name>] parameter in the Tcl Console invokes a separate example design
project where it creates <component_name>_exdes as top module for synthesis and
<component_name>_tb as top module for simulation. You can run implementation or
simulation of the example design from the example project.
Example Design
The following file describes the example design for the Clocking Wizard core.
• Verilog
<project_name>/<project_name>.srcs/sources_1/ip/<component_name>/example_design/
<component_name>_exdes.v
The top-level example designs adds clock buffers where appropriate to all of the input and
output clocks. All generated clocks drive counters, and the High bits of each of the counters
are routed to a pin. This allows the entire design to be synthesized and implemented in a
target device to provide post place-and-route gate-level simulation.
Test Bench
This chapter contains information about the provided test bench in the Vivado® Design
Suite environment. The following file describes the demonstration test bench:
• Verilog
<project_name>/<project_name>.srcs/sources_1/ip/<component_name>/simulation/
<component_name>_tb.v
The demonstration test bench is a simple Verilog program designed to exercise the
example design and the core. It performs frequency calculations as well as checks of all the
output clocks. It reports all the output clock frequencies, and if any of the output clocks is
not generating the required frequency, it reports an error.
Simulation
Verified with all the supported simulators.
Hardware Testing
Hardware testing is performed for all the features on the Kintex®-7 KC705 Evaluation Kit
using the provided example design. Hardware testing for the Clock Monitor feature is
performed on the Kintex UltraScale™ KCU105 Evaluation Kit.
Upgrading
This information is provided to assist those designers who are experienced with the DCM
and PLL Architecture Wizards. It highlights the differences between the old and new cores.
Primitive Selection
The old Wizard required you to choose the correct GUI (DCM or PLL) before configuring the
desired primitive. The new Wizard automatically selects the appropriate primitive and
configures it based on desired parameters. You can choose to override this choice in the
event that multiple primitives are available, as is the case for the Spartan®-6 device family.
Parameter Override
The new Wizard allows you to override any calculated parameter within the Wizard by
switching to override mode.
For cascading clocking components, non-buffered input and output clocks are available for
easy connection.
Parameter Changes
Added the INTERFACE_SELECTION parameter in the IDE for selecting the AXI4-Lite, DRP,
or None for DRP register access.
CLKOUT<1-7>_JITTER parameter added to query the Peak to Peak Jitter on the output
clocks
CLKOUT<1-7>_PHASE_ERROR parameter added to query the phase error on the output clock.
Port Changes
Added optional AXI4-Lite ports (s_axi_*). See Table 2-1.
Other Changes
Improved safe clock logic to remove glitches on clock outputs for odd multiples of input
clock frequencies.
Xilinx does not recommend to upgrading the Clocking Wizard IP that has been targeted on
a board to a device part. For assistance, contact Xilinx Support.
Debugging
This appendix includes details about resources available on the Xilinx Support website and
debugging tools.
Documentation
This product guide is the main document associated with the Clocking Wizard core. This
guide, along with documentation related to all products that aid in the design process, can
be found on the Xilinx Support web page or by using the Xilinx Documentation Navigator.
Download the Xilinx Documentation Navigator from the Downloads page. For more
information about this tool and the features available, open the online help after
installation.
Solution Centers
See the Xilinx Solution Centers for support on devices, software tools, and intellectual
property at all stages of the design cycle. Topics include design assistance, advisories, and
troubleshooting tips.
Answer Records
Answer Records include information about commonly encountered problems, helpful
information on how to resolve these problems, and any known issues with a Xilinx product.
Answer Records are created and maintained daily ensuring that you have access to the most
accurate information available.
Answer Records for this core are listed below, and can also be located by using the Search
Support box on the main Xilinx support web page. To maximize your search results, use
proper keywords such as
• Product name
• Tool message(s)
• Summary of the issue encountered
A filter search is available after results are returned to further target the results.
AR: 54102
Technical Support
Xilinx provides technical support in the Xilinx Support web page for this LogiCORE™ IP
product when used as described in the product documentation. Xilinx cannot guarantee
timing, functionality, or support if the you do any of the following:
• Implement the solution in devices that are not defined in the documentation.
• Customize the solution beyond that allowed in the product documentation.
• Change any section of the design labeled DO NOT MODIFY.
To contact Xilinx Technical Support, navigate to the Xilinx Support web page.
Debug Tools
There are many tools available to address Clocking Wizard core design issues. It is
important to know which tools are useful for debugging various situations.
The Vivado logic analyzer is used to interact with the logic debug LogiCORE IP cores,
including:
See Vivado Design Suite User Guide: Programming and Debugging (UG908) [Ref 3].
Hardware Debug
Hardware issues can range from link bring-up to problems seen after hours of testing. This
section provides debug steps for common issues. The Vivado debug feature is a valuable
resource to use in hardware debug. The signal names mentioned in the following individual
sections can be probed using the debug feature for debugging the specific problems.
General Checks
Ensure that all the timing constraints for the core were properly incorporated from the
example design and that all constraints were met during implementation.
• Does it work in post-place and route timing simulation? If problems are seen in
hardware but not in timing simulation, this could indicate a PCB issue. Ensure that all
clock sources are active and clean.
• If you use MMCMs in the design, ensure that all MMCMs have obtained lock by
monitoring the locked port.
• If your outputs go to 0, check your licensing.
• The VCO frequency falls into the valid range for the given multiply and the divide
values.
• The fractional enable bit must be set only for the non-integer values.
Note: The VCO range varies based on the device selected.
1. Add an additional BUFGCE cascaded in the failing clock path along with the existing
BUFGCE in safe clock startup path. Figure C-1 shows the failing path for the clk_out1.
Insert New BUFGCE between MMCM and the BUFGCE2 as shown below.
X-Ref Target - Figure C-1
BUFGF Sequence
Clk_out1 CE1 Registers
MMCM
New BUFG
BUFGCE CE2
X22362-012220
2. Apply the DONT_TOUCH constraint to the newly added BUFGCE. The DONT_TOUCH is
necessary to prevent opt_design from removing the newly inserted cascaded
BUFGCE.
(* dont_touch = "true" *) wire <<signal_name>>;
CLOCK_REGION is needed to place the cascaded BUFGCE buffers in the same clock
region to reduce the delay between them.
Note: <CLOCK_REGION_XX_YY> is the CLOCK_REGION where the MMCM resides and should be in
the same region as the MMCM clock input pin.
Xilinx Resources
For support resources such as Answers, Documentation, Downloads, and Forums, see Xilinx
Support.
• From the Vivado® IDE, select Help > Documentation and Tutorials.
• On Windows, select Start > All Programs > Xilinx Design Tools > DocNav.
• At the Linux command prompt, enter docnav.
Xilinx Design Hubs provide links to documentation organized by design tasks and other
topics, which you can use to learn key concepts and address frequently asked questions. To
access the Design Hubs:
• In the Xilinx Documentation Navigator, click the Design Hubs View tab.
• On the Xilinx website, see the Design Hubs page.
Note: For more information on Documentation Navigator, see the Documentation Navigator page
on the Xilinx website.
References
These documents provide supplemental material useful with this product guide:
Revision History
The following table shows the revision history for this document.
SAFETY CONCEPT OR REDUNDANCY FEATURE CONSISTENT WITH THE ISO 26262 AUTOMOTIVE SAFETY STANDARD (“SAFETY
DESIGN”). CUSTOMER SHALL, PRIOR TO USING OR DISTRIBUTING ANY SYSTEMS THAT INCORPORATE PRODUCTS, THOROUGHLY
TEST SUCH SYSTEMS FOR SAFETY PURPOSES. USE OF PRODUCTS IN A SAFETY APPLICATION WITHOUT A SAFETY DESIGN IS FULLY
AT THE RISK OF CUSTOMER, SUBJECT ONLY TO APPLICABLE LAWS AND REGULATIONS GOVERNING LIMITATIONS ON PRODUCT
LIABILITY.
© Copyright 2012-2022 Xilinx, Inc. Xilinx, the Xilinx logo, Alveo, Artix, Kintex, Spartan, Versal, Virtex, Vivado, Zynq, and other
designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the
property of their respective owners.