Clock Groups
Clock Groups
Lauren Gao
Clock Interactions
Synchronous
– Two clocks have a fixed phase relationship
• They share common circuitry (common node)
• They share the same primary clock (same initial phase)
Asynchronous
– Two clocks do not have a fixed phase relationship
• They do not share any common circuitry in the design and do not have a common
primary clock
• They do not have a common period within 1000 cycles (unexpandable) and the timing
engine cannot properly time them together
Exclusive
– Two clocks propagate on a same clock tree and reach the same sequential cell
clock pins but cannot physically be active at the same time
– Logically exclusive
• Two clocks are defined on different source roots
– Physically exclusive
• Two clocks are defined on the same source root by "create_clock -add"
Clock Interactions Examples
clk0
OSC1 Synchronous
clk1
MMCM
clk2
clka
OSC2 Asynchronous
clkb
MMCM
clkc
clkt
Exclusive
clkv Logic
BUFGMUX
Clock Group Constraint Types
clk0
CLKA
MMCM clk1 BEWARE: This
clk2 overrides any
Auto set_max_delay
Primary Generated constraints!
Clocks Async Clocks Clocks
clka
CLKB
MMCM clkb
clkc
Example:
– The clocks clk50 and clk100 are synchronous to each other
– The clocks clk33 and clk66 are synchronous to each other
– The clocks clk50 and clk100 are asynchronous to the clocks clk33 and
clk66
The constraint for the clock groups would be:
set_clock_groups –async \
–group {clk50 clk100} -group {clk33 clk66}
Asynchronous Clock Groups
REGA1
Solution
Guideline
– Logically exclusive clocks shouldn’t interact outside the MUX
– Logically exclusive clocks are defined on different source roots
Logically Exclusive Clock Groups
Guideline
– Physically clocks cannot physically exist at the same time
– Physically clocks are defined on the same source root
Physically Exclusive Clock Groups
The FPGA you are implementing must go on two different versions of
PCB boards. To ease the FPGA version management, the requirement is
to have a single bitfile for both boards. The only difference between the
boards is that the wbClk has a different frequency depending on the
configuration:
Configuration A:
– wbClk is a 100MHz clock
– bftClk is a 200MHz clock
– All CDCs between these clock domains can be treated as asynchronous
Configuration B:
– wbClk is a 150MHz clock
– bftClk is a 200MHz clock
– All CDCs between these clock domains can be treated as asynchronous
Solutions