Understanding Clock Tree Synthesis (CTS) in VLSI Design
Clock Tree Synthesis (CTS) is important in VLSI design, ensuring efficient clock signal distribution across digital circuits. This process minimizes clock skew and optimizes insertion delay, which is essential for reliable chip operation.What is Clock Tree Synthesis (CTS)?
clock tree synthesis (CTS) is building a buffer/inverter network to balance the related sequential elements (such as flip-flops and registers) s belong to same clock domain targeting global skew of each clock domain ~0. Essentially, CTS ensures that the clock signal reaches various parts of the chip simultaneously, maintaining synchronization across the circuit.
After placement, where the location of each standard cell is determined, we have already optimized timing, area, and minimized congestion. Up to this point, we have an ideal clock. Now, we need to create a balance between the clock signals during Clock Tree Synthesis (CTS).
Types of Clock Tree Structure
- Geometric structures
1- H_ structure
The most commonly used structure in Clock Tree Synthesis (CTS) is the H-Tree structure. The H-Tree is favored because it provides a symmetric and balanced clock distribution network, which helps minimize clock skew
![]() |
H-structure |
2- X_ structure
The X-Tree similar to the H-Tree structure, the X-Tree is designed to provide a balanced and symmetric clock distribution network. However, it differs in its geometric configuration.
![]() |
X-structure |
![]() |
Pi_structure |
- Electrical structures
1-RC approach
The RC structure in Clock Tree Synthesis (CTS) refers to a clock distribution network that models the resistance (R) and capacitance (C) of the interconnects. Unlike geometric structures, the RC structure focuses on optimizing the electrical properties of the clock network to achieve minimal skew and delay.
![]() |
RC_structure |
cClock Parameters in Clock Tree synthesis (CTS)
![]() |
Clock skew |
Clock skew is calculated as the difference between the capture clock and the launch clock. Referring to the previous figure, the skew can be calculated as follows:
"
![]() |
Positive Skew |
Negative Skew IF the capture clock comes early than launch clock then it is called -ve skew.
![]() |
Negative Skew |
Types of Clock Skew
1.Local Skew
2.Global Skew or (Target Skew)
![]() |
Local Skew VS Global Skew |
Global skew, also known as the difference between the shortest clock path delay and the longest clock path delay between two flip-flops, can be calculated as follows:
Referring to the previous figure:
"
2. Clock Latency
- Source Latency: Delay from the clock's original point (PLL) to its definition point of clock in the design.
- Network Latency (Insertion Delay): Delay from the clock definition point to the clock pin of the register.
![]() |
Source -Network Latency Delay |
3. Jitter
![]() |
Jitter |
4. slew
![]() |
Slew |
Why is Clock Tree Synthesis (CTS) necessary in the ASIC flow?
In ASIC design, we can't simply route the clock nets to all flip-flops in the same clock domain without proper optimization. CTS is essential because it ensures that the clock network is optimized for timing, area, and power.
![]() |
Clock Tree |
Start of Clock tree synthesis (CTS)
- Placement -done.
- Power and ground nets -prerouted.
- Estimated congestion-acceptable.
- Estimated Timing -acceptable.
- No violation in constraints max cap/transitions.
- High fanout synthesized nets (such as scan nets ,Reset ).
What is The Clock tree synthesis (CTS)goals?
Minimizing Clock Skew .
Minimize the insertion delay .
Meet the clock tree logical design constraints rule (Max fanout, Max load capacitance, Max transition delay, Max buffer length).
The CTS Process
- Defining the Starting , Ending and Exceptions point of clock tree
- An input clock port
![]() |
Clock Source -Input port |
- An output pin from gated cell (AND gate , OR gate ,MUX )
![]() |
Clock Source -GATED CELL |
- Stop pins (input pins of clock in Flip-Flops , Latches )
![]() |
Clock sink-stop pin |
- Float pin /insertion delay
![]() |
clock sinks-Float pin |
- Exclude pin
![]() |
clock sink-Ignore pin |
![]() |
Gate - Buffer Sizing |
![]() |
Gate - Buffer Relocation |
0 Comments