SlideShare a Scribd company logo
1 of 85
Download to read offline
Digital
Implementation
Clock Tree Synthesis
© Ahmed Abdelazeem 1
Contents
After completing this unit, you should be able to:
❑ List the status of the design prior to CTS
❑ Set up the design for clock tree synthesis
❑ Identify implicit clock tree start/end points and when
explicit modifications are needed
❑ Control the constraints and targets used by CTS
❑ Describe the three different skew optimization
methods
❑ Execute the recommended clock tree synthesis and
optimization flow
❑ Analyze timing and clock specifications
post-CTS
3/3/2024 2
© Ahmed Abdelazeem
Facilities
Building Hours
Restrooms
Meals
Messages
Smoking
Recycling
Phones
Emergency EXIT
Please turn off cell phones and pagers
3
© Ahmed Abdelazeem
3/3/2024
Workshop Goal
Use IC Compiler II to perform placement, DFT,
CTS, routing and optimization, achieving timing
closure for designs with moderate to high design
challenges.
4
© Ahmed Abdelazeem
3/3/2024
Target Audience
ASIC, back-end or layout designers with
experience in standard cell-based automatic
Place&Route.
5
© Ahmed Abdelazeem
3/3/2024
High-Level IC Compiler Flow
Gate-level netlist
Synthesis
Design & Time Setup
Floorplan Definition
Placement & Optimization
CTS & Optimization
Routing & Optimization
Signoff
IC
Compiler
II
6
3/3/2024 © Ahmed Abdelazeem

✓
✓
Design Status, Start of CTS Phase
3/3/2024 © Ahmed Abdelazeem 7
❑ Placement - completed
❑ Power and ground nets – prerouted
❑ Estimated congestion - acceptable
❑ Estimated timing - acceptable (~0ns slack)
❑ Estimated max cap/transition – no violations
❑ High fanout nets:
• Reset, Scan Enable synthesized with buffers
• Clocks are still not buffered
Why are there no buffers on clock nets?
check_design –checks pre_clock_tree_stage
Understand Your Clock Structure First
❑ Questions you should be asking:
• What are the different clock trees and their roots?
• What are the stop (sink) and exclude pins?
• Are there any preexisting clock cells or trees?
• Are the generated clocks defined correctly?
• Are there converging or overlapping clock trees?
• What are the requirements between clocks?
3/3/2024 © Ahmed Abdelazeem 8
Understand Your Clock Tree Goals
❑ Skew Goal
• What are the skew requirements for your design?
• Are there different skew targets for small and large clocks?
❑ Insertion Delay Goal
• What are the insertion delay specs for your block?
• What is a reasonable target based on the size and
floorplan of your block/chip?
❑ Nondefault rules to prevent SI problems
❑ DRC Requirements
• Are signal net DRCs different from clock net DRCs?
❑ Find out the order of significance or importance of all the clocks in the design
3/3/2024 © Ahmed Abdelazeem 9
Understand Your Clock Tree Specs
❑ Check SDC constraints and verify them against the specification
• Pay close attention to any generated clocks and muxed clocks and understand how
set_case_analysis switches between modes of operation
create__clock (clock source)
create_generated_clock (derived clock)
set_clock_latency (insertion delay)
set_clock_uncertainty (skew + jitter + margin)
set_clock_transition (transition for sync)
set_case_analysis (case analysis)
❑ Find out what clocks to set as false paths which prevent unrelated logics from
optimization
3/3/2024 © Ahmed Abdelazeem 10
Clock Delay Problems
3/3/2024 © Ahmed Abdelazeem 11
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
Clock
❑ All clock pins are driven by a single clock source
❑ All clock pins are from a source of clock pulses in
various geometrical distances
CTS Problem
CTS Problem
◦ CTS is the process of distributing clock signals to clock pins based on
physical/layout information
◦ After placement of cells the tree of synchronization is synthesized
◦ Balanced clock tree is synchronized with the addition of buffers
◦ After routing CT optimization is made
3/3/2024 © Ahmed Abdelazeem 12
Unbuffered clock tree Buffered/balanced clock tree
CLK
CLK
Clock Tree Goal and Metrics
• Goal
▪ Basic connectivity
• Metrics
▪ Skew
▪ Power
▪ Area
▪ Slew rates
3/3/2024 © Ahmed Abdelazeem 13
Time
Time
Time
Clock Source (ex. PLL)
CLK1
CLK2
Skew
t1 t2
Latency
Slew
Latch delay
Critical path delay
Setup time
Cycle time
t
General Concepts: Clock Skew: Definition,
Causes and Effects
❑ Clock Skew is the time difference between the arrival of the same edge of a clock signal
at the Clock pin of the capture flop and launch flop
3/3/2024 © Ahmed Abdelazeem 14
Register Register
Dmax
Clock Network
1 2
d1
Launch
signals
d2
T
Catch
signals
Skew = d1 – d2
Zero skew: d1 = d2
Useful skew, d1 – d2 = δ12
Clock Skew Types
❑ Global
◦ Recommended - fastest
❑ Local
◦ Longer runtime
❑ Useful
◦ Used to fix small timing
violations
3/3/2024 © Ahmed Abdelazeem 15
Clock Skew Types: Global
3/3/2024 © Ahmed Abdelazeem 16
All clock delays
are matched as
close as possible
Global skew is recommended – fastest runtime
(may add unnecessary buffers)
D Q
FF2
CLK
D Q
FF1
CLK
D Q
FF3
CLK
B
CLOCK
A
DIN
B_OUT
A_OUT
D Q
FF4
CLK
C
D Q
FF2
CLK
D Q
FF1
CLK
B
CLOCK
(0.37ns)
B_OUT
D Q
FF3
CLK
A
DIN A_OUT
(0.38ns)
(0.38ns)
D Q
FF4
CLK
C
0.36ns)
Clock Skew Types: Local
3/3/2024 © Ahmed Abdelazeem 17
Possibly fewer buffers – much longer runtime
D Q
FF2
CLK
D Q
FF1
CLK
D Q
FF3
CLK
B
CLOCK
A
DIN
B_OUT
A_OUT
D Q
FF4
CLK
C
Only related FFs are
balanced for skew
D Q
FF2
CLK
D Q
FF1
CLK
B
CLOCK
0.20ns)
B_OUT
D Q
FF3
CLK
A
DIN A_OUT
0.21ns)
(0.38ns)
D Q
FF4
CLK
C
(0.36ns)
Clock Skew Types: Useful
3/3/2024 © Ahmed Abdelazeem 18
❑ Useful skew- If the clock is skewed intentionally to resolve violations, it is called
useful skew.
D Q
FF2
CLK
D Q
FF1
CLK
D Q
FF3
CLK
B
CLOCK
A
DIN
B_OUT
A_OUT
D Q
FF4
CLK
C
D Q
FF2
CLK
D Q
FF1
CLK
B
CLOCK
0.11ns)
B_OUT
D Q
FF3
CLK
A
DIN A_OUT
0.35ns)
(0.38ns)
D Q
FF4
CLK
C
(0.36ns)
skewed intentionally to
resolve violations
Clock Skew Variations
3/3/2024 © Ahmed Abdelazeem 19
T
S
W
H
Ground plane
H
Gate width tox
Gate length
L effective
• Process variations
• Power supply noise
• Temperature variations
• …
Starting Point
3/3/2024 © Ahmed Abdelazeem 20
All clock pins are driven by a single clock source.
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
Clock
Clock Tree Synthesis (CTS) (1/2)
3/3/2024 © Ahmed Abdelazeem 21
A buffer tree is built to balance the loads and minimize the skew.
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
Clock
Clock Tree Synthesis (CTS) (2/2)
3/3/2024 © Ahmed Abdelazeem 22
A “delay line” is added to meet the minimum insertion delay.
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
FF FF FF
Clock
Clock Tree Synthesis
3/3/2024 © Ahmed Abdelazeem 23
clock_opt
Physical
Constraints “NDRs”
Targets
DRC
max tran/cap/fanout
Control
Analysis
report_clock_tree
report_clock_timing
report_timing
Clock Trees Are Built in Two Phases
❑ Phase 1: Clock Tree Synthesis (CTS)
• Builds an initial load-balanced, DRC-clean clock tree
❑ Phase 1: Clock Tree Optimization (CTO)
• Performs cell sizing, relocation, buffer insertion
• Tries to achieve clock tree targets
3/3/2024 © Ahmed Abdelazeem 24
CTS Goals
3/3/2024 © Ahmed Abdelazeem 25
Phase 1: CTS
❑ Meet the clock tree Design Rule Constraints (DRC):
• Maximum transition delay
(0.5ns, by default)
• Maximum load capacitance
(0.6pf, by default)
• Maximum fanout
(2000, by default)
• Maximum buffer levels
(50, by default)
Phase 1: CTO
❑ Meet the clock tree targets:
• Maximum skew
(0ns, by default)
• Minimum insertion delay
(0ns, by default)
Constraints are upper-bound
goals. If constraints are not met,
violations will be reported.
Targets are "nice to have" goals.
If targets are not met,
no violations will be reported.
Clock Tree Synthesis Goal and Flows
❑ Placement should be completed
• Acceptable congestion, setup timing, and logical DRCs
• High fanout signal nets (reset, scan enable, etc.) are buffered
❑ The goal of the clock tree synthesis design phase is to:
• Build the clock tree buffer structure
• Route the clock nets
• Optimize datapath logic for setup and hold timing, and DRCs
❑ Two CTS flows are supported:
• Classic CTS flow: CTS first, followed by data path optimization
• Concurrent Clock & Data flow (CCD): CTS and data path optimization performed
concurrently
➢ Recommended for timing-critical designs
3/3/2024 © Ahmed Abdelazeem 26
Comparing Classic CTS versus CCD
3/3/2024 © Ahmed Abdelazeem 27
Classic CTS Concurrent Clock &Data
• Clock tree is built while ignoring
the data paths
• Goal: Minimize skew
➢ Allows full clock-cycle reg-to-
reg timing
• Data path is optimized post-CTS
‾ Clock tree remains untouched
• Clock tree is built with full
knowledge of data path timing
• Goal: Meet setup/hold timing
➢ Reg-to-reg timing may be larger
or smaller than a clock cycle
• Data path is optimized along with
incremental clock tree
modifications (green buffer)
Questions ☺
❑ When are the pros and cons of setting a tight constraint for target_skew?
❑ When are the pros and cons of setting a relaxed constraint for max_transition?
3/3/2024 © Ahmed Abdelazeem 28
Where does the Clock Tree Begin and End?
3/3/2024 © Ahmed Abdelazeem 29
Start
D Q
FF
CLK
GATED
CLOCK
D Q
FF
CLK
D Q
FF
CLK
STOP
STOP
STOP
Clock trees start at their
“Source” defined by
create_clock …
Clock Sinks
(stop, float or
exclude pins),
Synthesizable clock
trees end (by default)
on clock pins of
registers or macros
End
To see the source(s) of a clock, you can either run report_clocks, or use the sources attribute:
icc2_shell> get_attribute [get_clocks PCI_CLK] sources
{pclk}
Control
Balance Points: Sink and Ignore Pins
3/3/2024 © Ahmed Abdelazeem 30
❑ Sink Pins:
• CTS optimizes for DRC and clock
tree targets (skew, insertion delay)
• Optionally, can consider internal insertion
delay
❑ Ignore Pins:
• CTS adds a small buffer “guide
buffer” to isolate all pins
➢ Only DRCs fixed after the guide
buffer
• CTS ignores skew and insertion delay
targets
D Q
FF
CLK
GATED
D Q
FF
CLK
CLOCK
Skew and insertion
delay are ignored
Skew and insertion
delay are optimized
IP
IP_CLK
D Q
FF
CLK
CLK_OUT
Implicit Sink pins
Implicit Ignore pins
D Q
FF
CLK
Incorrectly
modeled in
the library
Guide Buffer
D Q
FF
CLKn
Generated and Gated Clocks
3/3/2024 © Ahmed Abdelazeem 31
Master and generated clocks are part of the same clock domain. Skew is
balanced globally (across all clock pins) within each clock domain
D Q
FF1
CLK
D Q
FF4
CLK
D Q
FF5
CLK
D Q
FF2
CLK
CLOCK
create_clock
D Q
FFD
CLK QN
D Q
FF3
CLK
GATED
create_generated_clock
Intermediate ICG and
divider FF CLK pins
are not considered for
skew balancing
0.64
0.65
0.63
Insertion delays are
closely matched as all
sink pins are
optimized for skew
CLK
ICG
User-defined or Explicit Sink Pins
3/3/2024 © Ahmed Abdelazeem 32
IP (FRAM)
IP_CLK
CLOCK
skew and
insertion
delay are
ignored
Implicit exclude pin
Scenario: If the clock pin inside
a macro cell is correctly defined,
CTS will treat that pin as an
implicit Sink pin. In this example
the clock pin is not defined.
What is the problem here?
no clock pin
definition
The macro’s clock pin is marked as an
implicit exclude “Ignore” pin – no
skew optimization!
D Q
FF
CLKn
?
D Q
FF3
CLK
Defining an Explicit Sink Pin
3/3/2024 © Ahmed Abdelazeem 33
CLOCK
skew and insertion delay are
now optimized
Explicit stop pin defined
Defining an explicit Sink pin
allows CTS to optimize for skew
and insertion delay targets.
IP
D Q
FF
CLKn
0.17
IP_CLK
D Q
FF
CLK
0.42
0.43
CTS has no knowledge of the IP-internal
clock delay – it can only “see” up to the
stop pin!
set_clock_balance_points 
-consider_for_balancing true 
-balance_points [get_pins IP/IP_CLK]
Defining an Explicit Sink Pin Wi h Delay
3/3/2024 © Ahmed Abdelazeem 34
Control
IP
D Q
FF
CLKn
0.15
CLOCK
skew and insertion delay are
now optimized
Explicit delay balanced defined
Defining an explicit sink pin
with delay allows CTS to
adjust the insertion delays
based on specification.
IP_CLK
D Q
FF
CLK
0.42
0.27
D Q
FF
CLKn
set_clock_balance_points 
-consider_for_balancing true 
-corner ss125c 
-delay 0.15 -late 
-balance_points [get_pins IP/IP_CLK]
Defining an Explicit Ignore (or Exclude) Pin
3/3/2024 © Ahmed Abdelazeem 35
Explicit ignore pins cause CTS to
ignore this pin and down-stream
sinks for skew balancing
set_clock_balance_points 
-clock Clock 
-consider_for_balancing false 
-balance_points [get_pins AN2/A]
CLOCK
D Q
FF
CLKn
D Q
FF1
CLK
D Q
FF
CLK
D Q
FF2
CLK
A
B
AN2
Explicit ignore
pin Defined on
pin AN2/A
Guide buffer
CTS inserts a guide buffer; CTS engine fixes
DRCs only along the clock path past ignore pins
Defining a Clock Skew Group
3/3/2024 © Ahmed Abdelazeem 36
CLOCK
D Q
FFD
CLK QN
D Q
FF3
CLK
D Q
FF1
CLK
D Q
FF4
CLK
Define an explicit
exclude pin here
D Q
FF2
CLK
…
…
0.42
0.67
Create_clock_skew_group –mode TEST –objects {FF1/CLK FF2/CLK}
The target skew will be the same as the master clock of
this skew group. You cannot set the skew independently.
Defining a clock skew group if you want to balance
a group of clock pins independently from the rest of
clock tree.
Default Clock Tree Targets
❑ The default target skew and target latency is 0 ns
• SDC uncertainty and network latency constraints are ignored
❑ Relax clock skew targets for non-timing critical clocks
• Reduces overall buffer count, power and run time
❑ Specify network latency targets to help post-CTS timing (see below)
• An alternative method using automatically-derived balance points will also be shown
3/3/2024 © Ahmed Abdelazeem 37
D Q
FF1
CLK
D Q
FF2
CLK
Clk1
Pre-CTS, FF1→FF2 path relies on the 1.0ns
latency difference to meet timing
Clk2 1.4 ns
2.4 ns
Slack = 0.0 ns
D Q
FF1
CLK
D Q
FF2
CLK
Clk1
Post-CTS, latency difference is only 0.6ns
causing the FF1→FF2 path to violate timing
Clk2 1.4 ns
2.0 ns
Slack = -0.4 ns
Ideal network
latencies
Propagated
network latencies
Target
CCD: Skew and Latency Considerations
❑ For the classic CTS flow, it is important to specify accurate
❑ skew and latency targets For the CCD flow:
• Target skew is not relevant, because the goal is to intentionally introduce skew to meet
timing
• Target latency can be applied if needed (for chip-level inter-block timing considerations,
for example), but keep in mind that the final agencies have larger skews compared to
classic CTS
3/3/2024 © Ahmed Abdelazeem 38
User-Defined Clock Tree Targets
3/3/2024 © Ahmed Abdelazeem 39
remove_clock_tree_options -all -target_skew -target_latency
set_clock_tree_options -target_skew 0.2 -corners [all_corners]
→ max skew target of 0.2 applied to all corners,
all clocks, all modes
current_corner Cl
set_clock_tree_options -target_skew 0.1
→ max skew target of 0.1 applied in C1, all clocks,
all modes
set_clock_tree_options -clocks CLK1 -target_latency 1. 4
set_clock_tree_options -clocks CLK2 -target_latency 2.4
→ latency target of 1.4 applied in C1, to CLK1 in
current mode
→ latency target of 2.4 applied in C1, to CLK2 in
current mode
report_clock_tree_options Targets apply to:
• All clocks if no clock is specified
• Current corner if no corner is specified
• Current mode if clock is specified, otherwise all modes
Balancing Multiple Synchronous Clocks
3/3/2024 © Ahmed Abdelazeem 40
By default CTS does not perform inter-clock skew balancing
→ May result in timing violations
D Q
FF3
CLK
D Q
FF4
CLK
D Q
FF1
CLK
CLOCK1 D Q
FF2
CLK
0.75
0.32
…
…
CLOCK2
WNS=-0.6
Create Balancing Groups
❑ There are two ways to balance the clock groups:
• Manual balancing constraints:
• Auto-derived balancing constraints:
3/3/2024 © Ahmed Abdelazeem 41
foreach mode {ml m2} {
current_mode $mode
create_clock_balance_group -name grpl 
-objects [get_clocks "CL0CK1 CL0CK2"]
}
derive_clock_balance_constraints -slack_less_than -0.3
report_clock_balance_groups
➢ Constraints will be derived for all modes
➢ Only clocks with cross-clock paths meeting the -slack_less_than
specification will be selected
Balancing Occurs During clock opt
3/3/2024 © Ahmed Abdelazeem 42
Buffer inserted at the
clock root to balance
insertion delay D Q
FF3
CLK
D Q
FF4
CLK
D Q
FF1
CLK
CLOCK1 D Q
FF2
CLK
0.75
0.76
…
…
CLOCK2
WNS=-0.16
Balancing occurs during the build_clock stage
Inter-clock Balancing is Important for CCD
❑ If inter-clock balancing is not enabled for the CCD flow, CCD optimization will try to
meet timing by skewing individual sinks (instead of the root)
• Much longer runtime
• Inserts many more buffers
3/3/2024 © Ahmed Abdelazeem 43
D Q
FF3
CLK
D Q
FF4
CLK
D Q
FF1
CLK
CLOCK1 D Q
FF2
CLK
0.75
0.76
…
…
CLOCK2
WNS=+0.02
Without inter-clock
balancing, CCD insets
buffer at the clock sinks
Control CTS Cell Selection
3/3/2024 © Ahmed Abdelazeem 44
set cts_libcells [get_lib_cells 
"*/INVX*_LVT */BUFX8_LVT */BUFX16_LVT 
*/MUX*LVT */A0* */CG* */FF*"]
set_lib_cell_purpose -exclude cts [get_lib_cells]
set_lib_cell_purpose -include cts $cts_libcells
set_dont_touch $cts_libcells false
❑ In the following example, only $cts_libcells are used to build the
clock trees. Modify as needed:
• In addition to buffers/inverters, include logically equivalent cells of any gates
(MUX, AND, ICG, etc.) and FlipFlops*1 in the clock tree Allows these to be
resized, if needed
• Always-on buffers should be added, to allow always-on CTS for MV designs
➢ If a clock branch needs to feed through a shut-down voltage area,
always-on CTS inserts AO buffers- otherwise, must go around it
Pre-existing clock Buffers Are Removed
3/3/2024 © Ahmed Abdelazeem 45
Pre-existing clock buffers/inverters
may negatively affect CTS QoR
CTS will only build
this part of the tree
cts.compile.remove_existing_clock_tress
By default, CTS removes pre-existing
clock buffers/inverters and builds a
balanced clock tree with fewer buffers CLOCK
D Q
FFb
CLK
D Q
FFn
CLK
…
A Y
D Q
FF1
CLK
D Q
FFa
CLK
Control
Default: true
Preserving Pre-Existing Clock Trees
3/3/2024 © Ahmed Abdelazeem 46
Set a dont_touch_subtrees
exception at the input pin
Pre-existing "un-balanced" clock tree-required to
remain "as-is“
Disabling auto-removal of pre-existing clock
buffers/inverters is not enough: CTS can still move
or size them, or insert buffers
set_dont_touch_network –clock_only [get_pins “buf/A”]
CLOCK
D Q
FFb
CLK
D Q
FFn
CLK
…
Custom logic
hand-built
A Y
D Q
FF1
CLK
D Q
FFa
CLK
May create unnecessary additional buffers.
Reported global skew is only as good as pre-existing logic skew
CTS leaves dont_touch clock sub-tree as-is
Other branches try to match the largest
insertion delay in the clock domain
Non-Default Clock Routing
❑ ICC II can route the clocks using non-default routing rules (NDR),
e.g. double-spacing, double-width, shielding
• NDR rules are treated as physical DRCs- reported as violations if not met
❑ Non-default rules are often used to “harden” the clock, e.g. to make the clock routes less
sensitive to Cross Talk or EM effects
3/3/2024 © Ahmed Abdelazeem 47
Physical
Constraints “NDR”
Default Routing Rule Effect of NDR route on Clk
Sig1
Clk
Sig2
Sig1
Clk
Sig2
Defining Non-Default Routing and Via Rules
❑ Define the NDR rules:
❑ With the -cuts option you use “symbolic” via names defined in the technology file as
cutNameTbl
❑ This simplifies the NDR definition because one symbolic via can match many specific
vias and arrays
3/3/2024 © Ahmed Abdelazeem 48
create_routing_rule 2xS_2xW_CLK_RULE 
-widths {Ml 0.11 M2 0.11 M3 0.14 M4 0.14 M5 0.14} 
-spacings {Ml 0.4 M2 0.4 M3 0.48 M4 0.48 M5 1.1} 
-cuts { ... 
{VIA3 {Vrect 1} } 
{VIA5 {Vrect 1} }}
Layer Name
cutNameTB1 name
Minimum # of cuts
Example Technology File
3/3/2024 © Ahmed Abdelazeem 49
Layer "VIAS" {
fatTblThreshold = (0, 0.13, 0.26)
fatTb1FatContactNuinber = ( “2,3,4”, ”5,6,20” , “5,6,20”)
fatTblFatContactMinCuts = ( “1,1,1”, ”1,1,2” , “2,2,4”)
cutNameTbl = ( Vsq , Vrect )
cutWidthTbl = ( 0.05, 0.05 )
cutHeightTbl = ( 0.05, 01.013 )
}
contactCode "VIA34,LH" {
contactCodeNumber = 5
cutwidth = 0.13
cutHeight = 0.05
...
}
contactCode "VIA34,LV" {
contactCodeNumber = 6
cutwidth = 0.05
cutHeight = 0.13
...
}
ContactCode "VIA34_P" {
contactCodeNumber = 20
cutwidth = 0.05
cutHeight = 0.05
...
}
Non-Default Via Rules
❑ Clock nets are hardened further by often requiring 100% via optimization to enhance reliability
• Minimum size single cut vias are replaced with:
➢ Multiple-cut via arrays and/or
➢ and/or Larger “square” or “bar” cuts
❑ This is also defined using clock NDR rules
3/3/2024 © Ahmed Abdelazeem 50
Defining Via NDRs with -vias
❑ You may also use the -vias option
❑ This will require you to specify the exact Contactcode names defined in the technology
file
❑ This example is the equivalent of using
-cuts { {via3 {vrect 1} } shown two pages earlier
3/3/2024 © Ahmed Abdelazeem 51
create_routing_rule 2xS_2xW_CLK_RULE 
-widths {Ml 0.11 M2 0.11 M3 0.14 M4 0.14 M5 0.14} 
-spacings {Ml 0.4 M2 0.4 M3 0.48 M4 0.48 M5 1.1} 
-vias { 
{VIA34_LH lxl R} {VIA34_LH 1x1 NR} {VIA34_LV 1x1 R) 
{VIA34_LV lxl NR} {VIA34_LH 1x2 R} {VIA34_LH 1x2 NR} 
{VIA34_LH 2x1 R} {VIA34_LH 2x1 NR} {VIA34_LV 1x2 R} 
(VIA34_LV 1x2 NR} {VIA34_LV 2x1 R} {VIA34_LV 2x1 NR}} 
##
VIA45 and VIA56 definitions go here}
Applying Non-Default Routing Rules
❑ Configure clock tree routing:
❑ Note that the NDR was specified also for M1-M3
• Although the clocks will be primarily routed on M4/M5 as shown above, they need to
route on lower layers to connect to the standard cell pins, therefore should be covered by
an NDR as well!
3/3/2024 © Ahmed Abdelazeem 52
create_routing_rule 2xS_2xW_CLK_RULE ...
set_clock_routing_rules -rule 2xS_2xW_CLK_RULE 
-min_routing_layer M4 
-max_routing_layer M5
NDRs on Clock Nets
❑ ICC II CTS supports various types of NDR specifications when building the clock tree
1. Net-specific NDR from set_routing_rule <net_list>:
NDR will not get propagated to newly created nets
2. Net-specific NDR from set_clock_routing_rules -nets:
NDR will get propagated to newly created nets
3. Clock-specific NDR from set_clock_routing_rules -clocks:
Supports separate NDRs for root, sink and internal nets which are clock-specific
4. Global NDR from set_clock_routing_rules:
Supports separate NDRs for root, sink, and internal nets
❑ The order of priority is 1 > 2 > 3 > 4
3/3/2024 © Ahmed Abdelazeem 53
n1
n2 n3
Different NDRs for Root, Internal, Sink Nets
3/3/2024 © Ahmed Abdelazeem 54
set_clock_routing_rules
-rules 3X_RULES
-min_routing_layer M4
-max_routing_layer M5
set_clock_routing_rules
-net_type sink
-rules 2X_RULES
-min_routing_layer M4
-max_routing_layer M5
-net_type:
root | internal | sink
The highlighted options allow you to specify less aggressive NDR rules for clock
tree “leaf” nets, while allowing more aggressive NDRs for the other nets.
Helps to prevent routing DRC violations as well as SI issues
D Q
FF
CLK
D Q
FF
CLK
D Q
FF
CLK
3X_RULES
wires
2X_RULES
wires
root sink
internal
Are all Clock Drivers and Loads Specified?
3/3/2024 © Ahmed Abdelazeem 55
Constraints
Ensure that all clock input ports have a slew constraint needed
for accurate clock delay calculation during and after CTS
CHIP_TOP
D Q
FF
CLK
D Q
FF
CLK
MOD_B
cbuf6
D Q
FF
CLK
D Q
FF
CLK
MOD_A
cbuf6
cbuf6
cbuf6
Specify input transition
set_driving_cell
set_load
Defining CTS-Specific DRC Values
❑ Max transition and max capacitance design rules can be specified in two ways: Library
and SDC
• ICC II will always use the smallest value
❑ You can define your own CTS-specific DRC values:
❑ Design rule constraints can be selectively applied per clock and per scenario (applies to
current scenario, by default):
3/3/2024 © Ahmed Abdelazeem 56
set_max_transition 0.5 -clock_path [all_clocks]
set_max_capacitance 0.6 -clock_path [all_clocks]
set_raax_transition 0.2 -clock_path 
-scenarios "SI S4" 
[get_clocks SYS_CLK]
Remove Skew from Uncertainty
❑ SDC constraints usually include
set_clock_uncertainty –setup | -hold <number> applied to each clock
• Models estimated effects of clock skew, jitter, and additional timing margin on setup/hold
timing, pre-CTS
❑ After clock tree propagation, to avoid pessimistic timing analysis, remove or reduce
uncertainty by the estimated skew:
3/3/2024 © Ahmed Abdelazeem 57
set_clock_uncertainty -scenarios si -setup | -hold <SMALLER_#> CLK1
set_clock_uncertainty -scenarios {s2 s3} -setup | -hold <SMALLER_#> CLK2
# OR
remove_clock_uncertainty [all_clocks] -scenarios [all_scenarios ]
Reporting Settings Summary
3/3/2024 © Ahmed Abdelazeem 58
# Report clock tree max_tran/cap/references/... in all clocks+modes:
report_clock_settings
[-clock CLOCKS]
[-type type]
type can be: configurations , routing_rules ,
references, spacing_rules , all
# Report clock tree target skew/latency constraints:
report_clock_tree_options
# Report explicit balance points (sink/exclude pins), and groups:
report_clock_balance_points
report_clock_balance_groups
# Report non-default routing rules in a more compact way
report_clock_routing_rules
Modes / Corners for CTS
❑ ICC II builds clock trees for all clocks in all active setup and/or hold scenarios
❑ CTS will also perform clock net logical PRC fixing on scenarios enabled for
max_transition and/or max_capacitance
❑ If you do not want a scenario to be used during CTS:
3/3/2024 © Ahmed Abdelazeem 59
set_scenario_status -active false {s1}
Hold Fixing
❑ Hold fixing occurs in all scenarios that are enabled for hold:
❑ Control what cells are used to fix hold violations:
❑ Control the effort for hold fixing:
3/3/2024 © Ahmed Abdelazeem 60
set_scenario_status { s2 } -hold true
set_lib_ce1l_purpose -exclude hold [get_lib_cells]
set_lib_ce1l_purpose -include hold 
[get_lib_cells "*/DELLN*_HVT */NBUFF*HVT 
*/DELLN*_RVT */NBUFF*RVT"]
set_app_options -list {
clock_opt.hold.effort none|low|medium |high}
Minimize Hold Time Violations in Scan Paths
❑ Enable scan chains reordering to minimize branch crossings
❑ Can reduce hold time violations in the scan chain
3/3/2024 © Ahmed Abdelazeem 61
Without clock tree based reordering With clock tree based reordering
test_si
clk
test_so
A C E
B D F
test_si
clk
test_so
A C E
B D F
set_app_options -list opt.dft.clock_aware_scan_reorder true
Clock Reconvergence Pessimism
❑ To reduce OCV effects, clock trees try to share as many buffers as possible
❑ Remove the pessimism from the timing calculation caused by shared clock paths
(late/early for launch/capture calculation)
3/3/2024 © Ahmed Abdelazeem 62
set_app_options -name time.remove_clock_reconvergence_pessimism
-value true
Clock Reconvergence Pessimism Removal
❑ The pessimism is removed for setup timing by adding the CRP in the capture path, and
by subtracting for hold
3/3/2024 © Ahmed Abdelazeem 63
Example setup timing report: Added CRP in capture path
Congestion-Aware Initial CTS
❑ Initial clock tree synthesis (build_clock) is not congestion aware!
• Based on virtual routing, by default
❑ On large complex-floorplan designs, this may lead to:
• Pre- vs. post-route clock skew, latency,
and logical DRC degradation
• Congestion hotspots
• Route DRCs
❑ Enable global routing for congestion estimation and congestion-aware clock tree
construction during the build_clock stage:
3/3/2024 © Ahmed Abdelazeem 64
set_app_options -list {cts.compile.enable_global_route true}
Local Skew Optimization
❑ Performs timing-aware clustering (as opposed to location-based)
❑ Optimizes local skew directly for setup and hold timing critical pairs
❑ Can relax skew target where possible (if slack is positive) to save clock buffer area
3/3/2024 © Ahmed Abdelazeem 65
Local Skew Optimization
❑ Timing aware clustering:
• Clusters timing-related clock tree nodes together to improve path sharing without
degrading latency.
❑ Automatic derivation of target skew:
• Derives target skew for clocks based on timing QoR seen with early estimation of timing
QoR. As a safeguard, derived value is limited to within 3% to 10% of clock period. CTS
works to meet derived skew instead of trying to achieve “0” skew and thus reducing
clock buffer/cell area.
• Local skew optimization ensures that timing-related registers have minimal skew.
❑ Local skew optimization during CTO:
• After (traditional) global skew optimization stage in CTO, it now looks at timing QoR,
and optimizes local skew for timing critical pairs to improve timing QoR.
• Makes sure that skew/latency/DRCs across scenarios are not degraded.
3/3/2024 © Ahmed Abdelazeem 66
Enable Local Skew CTS and CTO
❑ When using CCD, local skew CTS and CTO are enabled by default
• Because timing is taken into account for the initial clock tree, this reduces the work that CCD
has to do to further optimize the clock tree to meet timing
❑ To use local skew for classic CTS, you need to enable it specifically:
❑ By default, local skew optimization will calculate relaxed skew targets. You might see
messages like:
❑ CTS is doing this in order to save on clock area. If, after CTS, hold timing is degrading more
than what you are comfortable with, you might consider turning this feature off using the
application option
3/3/2024 © Ahmed Abdelazeem 67
set_app_options -list {
cts.compile.enable_local_skew true
cts.optimize.enable_local_skew true }
Computing global skew target..
Setting target skew for clock: SYS_2x_CLK as 0.240000
cts.common.enable auto_skew_target_for_local_skew
Restricting the Amount of CCD Skewing
❑ By default, CCD skews as much as needed to meet the timing
❑ You can limit the amount of skewing if needed, for example:
• ccd.max_prepone: max latency reduction (advance) allowed to a sink
• ccd.max_postpone: max latency increase (delay)
• Setting a limit can impact the timing QoR as this restricts CCD
3/3/2024 © Ahmed Abdelazeem 68
set_app_options -name ccd.max_prepone -value 0.2
set_app_options -name ccd.max_postpone -value 0.4
Skipping Path Groups during CCD
❑ You Can configure CCD to Skip the clock pins that belong to particular Path groups
during clock latency adjustment
❑ Data path optimization will still be performed on these path groups
• If you specify a path group name without a scenario name, all path groups with the name
specified from all scenarios are skipped
• If you specify a path group name with a scenario name, only the path group in the
specified scenario is skipped
3/3/2024 © Ahmed Abdelazeem 69
set_app_options -name ccd.skip_path_groups
-value { pathgroupl {scenarioA pathgroup2} }
Ignore I/O Timing for Boundary Register Skewing
❑ It might be desirable to prevent
CCD Skewing based on I/O timing
• I/O timing inaccurate or too pessimistic
• To ignore timing on some or all I/Os for CCD:
• This allows CCD to skew the FF1 boundary
register to help Path A's timing
3/3/2024 © Ahmed Abdelazeem 70
group_path –name MY_IN –from [get_ports In*]
set_app_options –name ccd.skip_path_groups –value {MY_IN}
clock_opt
CCD and Boundary Registers (1 of 2)
❑ By default, CCD skews all registers (including boundary FFs) for timing
❑ To prevent latency adjustment on boundary registers, use:
3/3/2024 © Ahmed Abdelazeem 71
ccd.optimize_boundary_timing → set to false
Boundary CK pin: en_launch/CK because of port din
Boundary CK pin: ff_l_l/CK because of port din
Optimize_boundary_timing is set to false, 2 registers will not
be optimized, 20 registers will be optimized.
❑ Primary Ports are used to differentiate between boundary and internal FFs
❑ Ignore ports for boundary identification (reset, scan_en, ...) using:
• to ignore specific ports for boundary identification, use:
3/3/2024 © Ahmed Abdelazeem 72
CCD and Boundary Registers (2 of 2)
ccd.ignore_scan_reset_for_boundary_identification → set to false
set_app_options 
-name ccd.ignore_ports_for_boundary_identification
-value {my_en en_A}
Hold Criticality during CCD
❑ Although CCD setup optimizations are hold-aware, hold violations can be introduced to
improve setup timing
• Usually, data path optimizations are able to address these hold violations
❑ You may want to prioritize hold during CCD if
• Fixing hold in your design is difficult / not possible
• Your design is area-critical, and the hold-buffer area increase is to be avoided
❑ To specify hold criticality during CCD, use:
• Set to medium or high to reduce hold degradation
• Use only if hold timing is critical, since setup optimizations may degrade
• Only affects final_opto, as well as CCD optimization during route_opt
3/3/2024 © Ahmed Abdelazeem 73
ccd.hold_control_effort Default: low
Classic CTS and CCD Execution
❑ Clock tree synthesis, clock tree routing, and data path optimization are all executed by:
• CCD is enabled using the application option clock_opt.flow.enable_ccd
❑ The four stages of clock_opt are:
❑ You can control which stages are executed with -from/- to
• For example, to perform only clock tree synthesis (CTS+CTO):
3/3/2024 © Ahmed Abdelazeem 74
Clock_opt
build_clock route_clock final_opt global_route_opt
Clock_opt –to build_clock
Classic CTS Flow Stages
3/3/2024 © Ahmed Abdelazeem 75
Command What does it do?
clock_opt 
-to build_clock
Builds GR clock trees*, and performs inter-clock
balancing, for minimum skew
clock_opt 
-from route_clock 
-to route_clock
Routes the clock nets
UpdatesI/Olatencies
clock_opt -from
final_opto
Performs data path optimization to meet timing and
DRCs
After the build_clock phase, the clock trees are global-routed. The global routing occurs
during the “optimization” (CTO) part
Classic CTS Flow: clock_opt vs. Atomic
❑ To analyze intermediate results, you can either:
• Run clock opt stages individually using -from/-to options
• Use atomic commands
3/3/2024 © Ahmed Abdelazeem 76
clock_opt stage Atomic commands
clock_opt 
-to build_clock
synthesize_clock_trees
balance_clock_groups
clock_opt 
-from route_clock 
-to route_clock
route_group -all_clock_nets 
-reuse_existing_global_route true
compute_clock_latency
clock_opt -from final_opto
Post-CTS: Post-route Clock Tree Optimization
❑ Problems:
• Possibility of clock tree QoR degradation (skew, latency, logical DRC) due to
miscorrelation between global route(build_clock)and detail route(route_clock)
• Clock tree QoR can further degrade due to coupling capacitance and crosstalk effects
❑ Solution: Post-route clock tree optimization
• Works on detail-routed clock trees to address these degradations
• Optimizations performed include on-route buffer insertion, buffer sizing, and gate sizing
❑ Post-route CTO can also be performed after signal routing
❑ If CCD is enabled, the command will only fix logical DRCs
3/3/2024 © Ahmed Abdelazeem 77
synthesize_c1ock_trees -postroute
CCD Power or Area Recovery
❑ The CCD engine can recover power or area
from the clock network
• Power/area recovered without any timing QoR impact
• Optimization includes repeater removal, clock cell and
register sizing.
• Applies to either the classic CTS or CCD flow
• Runs during the final_opto stage of clock_opt
❑ Choose between power or area recovery:
• Power: Should use accurate SAIF files for accurate dynamic power calculation
• Area: Use if accurate SAIF files are not available or if area is an optimization goal
3/3/2024 © Ahmed Abdelazeem 78
Effects of Clock Tree Synthesis
3/3/2024 © Ahmed Abdelazeem 79
❑ Clock buffers added
❑ Congestion may increase
❑ Non clock cells may have been
moved to less ideal locations
❑ Can introduce new timing and max
tran/cap violations
CTS
How do you handle new violations?
Analyzing CTS Results
3/3/2024 © Ahmed Abdelazeem 80
report_clock_qor 
[-type area|balance_groups|drc_violators| latency|
local_skew | power | robustness| structure|summary] 
[-histogram_type latency|transition|level|...] 
[-modes ...] [-corners ...] ...
❑ Reports max global skew (by default), late/early insertion delay, clock DRC violations,
number of clock tree references (buffers), structure of the clock tree, robustness,
histogram...
Analyzing CTS Results: Clock Timing Report
3/3/2024 © Ahmed Abdelazeem 81
report_clock_timing
-type summary|transition |
-modes {ml m2}
-corners {cl c2} ...
❑ Reports actual, relevant skew, latency, inter-clock latency, etc. for
paths that are related
❑ Includes effects of early/late timing derates
• report_clock_qor does not consider derates
❑ Example:
report_clock_timing -type skew
Analysis Using the CTS GUI
❑ CTS browser
• Identify clock tree object
properties and attributes
• Traverse clock tree levels
❑ CTS schematic
• Trace clock paths
• Cross-probe with layout view
❑ Clock tree-levelized graph
❑ Clock tree latency graph per corner
3/3/2024 © Ahmed Abdelazeem 82
Clock Tree Final View
3/3/2024 © Ahmed Abdelazeem 83
Main References
3/3/2024 © Ahmed Abdelazeem 84
❑ Ron Rutenbar “From Logic to Layout”
❑ Synopsys University Courseware
❑ Synopsys Documentation
❑ IDESA
❑ Cadence Documentation
3/3/2024 © Ahmed Abdelazeem 85
Thank You ☺

More Related Content

What's hot

Asic backend design
Asic backend designAsic backend design
Asic backend designkbipeen
 
Multi mode multi corner (mmmc)
Multi mode multi corner (mmmc)Multi mode multi corner (mmmc)
Multi mode multi corner (mmmc)shaik sharief
 
Placement in VLSI Design
Placement in VLSI DesignPlacement in VLSI Design
Placement in VLSI DesignTeam-VLSI-ITMU
 
VLSI-Physical Design- Tool Terminalogy
VLSI-Physical Design- Tool TerminalogyVLSI-Physical Design- Tool Terminalogy
VLSI-Physical Design- Tool TerminalogyMurali Rai
 
Difference between soc and single board computer ppt1
Difference between soc and single board computer ppt1Difference between soc and single board computer ppt1
Difference between soc and single board computer ppt1Edgefxkits & Solutions
 
2Overview of Primetime.pptx
2Overview of Primetime.pptx2Overview of Primetime.pptx
2Overview of Primetime.pptxShivangPanara
 
Basic synthesis flow and commands in digital VLSI
Basic synthesis flow and commands in digital VLSIBasic synthesis flow and commands in digital VLSI
Basic synthesis flow and commands in digital VLSISurya Raj
 
Sta by usha_mehta
Sta by usha_mehtaSta by usha_mehta
Sta by usha_mehtaUsha Mehta
 
Physical design-complete
Physical design-completePhysical design-complete
Physical design-completeMurali Rai
 
Physical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate BlocksPhysical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate BlockseInfochips (An Arrow Company)
 
Placement and algorithm.
Placement and algorithm.Placement and algorithm.
Placement and algorithm.Ashish Singh
 

What's hot (20)

Asic backend design
Asic backend designAsic backend design
Asic backend design
 
Multi mode multi corner (mmmc)
Multi mode multi corner (mmmc)Multi mode multi corner (mmmc)
Multi mode multi corner (mmmc)
 
Placement in VLSI Design
Placement in VLSI DesignPlacement in VLSI Design
Placement in VLSI Design
 
Crosstalk.pdf
Crosstalk.pdfCrosstalk.pdf
Crosstalk.pdf
 
VLSI-Physical Design- Tool Terminalogy
VLSI-Physical Design- Tool TerminalogyVLSI-Physical Design- Tool Terminalogy
VLSI-Physical Design- Tool Terminalogy
 
ASIC Design.pdf
ASIC Design.pdfASIC Design.pdf
ASIC Design.pdf
 
Difference between soc and single board computer ppt1
Difference between soc and single board computer ppt1Difference between soc and single board computer ppt1
Difference between soc and single board computer ppt1
 
PowerPlanning.pdf
PowerPlanning.pdfPowerPlanning.pdf
PowerPlanning.pdf
 
FTTH Basics
FTTH BasicsFTTH Basics
FTTH Basics
 
2Overview of Primetime.pptx
2Overview of Primetime.pptx2Overview of Primetime.pptx
2Overview of Primetime.pptx
 
09 placement
09 placement09 placement
09 placement
 
Canbus
CanbusCanbus
Canbus
 
Basic synthesis flow and commands in digital VLSI
Basic synthesis flow and commands in digital VLSIBasic synthesis flow and commands in digital VLSI
Basic synthesis flow and commands in digital VLSI
 
Floorplanning.pdf
Floorplanning.pdfFloorplanning.pdf
Floorplanning.pdf
 
Sta by usha_mehta
Sta by usha_mehtaSta by usha_mehta
Sta by usha_mehta
 
Physical design-complete
Physical design-completePhysical design-complete
Physical design-complete
 
Physical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate BlocksPhysical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate Blocks
 
Placement and algorithm.
Placement and algorithm.Placement and algorithm.
Placement and algorithm.
 
STA.pdf
STA.pdfSTA.pdf
STA.pdf
 
Asic
AsicAsic
Asic
 

Similar to 8. Clock Tree Synthesis.pdf

SOC Chip Basics
SOC Chip BasicsSOC Chip Basics
SOC Chip BasicsA B Shinde
 
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERS
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERSROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERS
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERSDeepak Shankar
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_designUsha Mehta
 
**Understanding_CTS_Log_Messages.pdf
**Understanding_CTS_Log_Messages.pdf**Understanding_CTS_Log_Messages.pdf
**Understanding_CTS_Log_Messages.pdfagnathavasi
 
Comparative Study of Delay Line Based Time to Digital Converter using FPGA
Comparative Study of Delay Line Based Time to Digital Converter using FPGAComparative Study of Delay Line Based Time to Digital Converter using FPGA
Comparative Study of Delay Line Based Time to Digital Converter using FPGAIRJET Journal
 
24-02-18 Rejender pratap.pdf
24-02-18 Rejender pratap.pdf24-02-18 Rejender pratap.pdf
24-02-18 Rejender pratap.pdfFrangoCamila
 
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-Study
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-StudyDo We Really Need TSN in Next-Generation Helicopters? Insights From a Case-Study
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-StudyRealTime-at-Work (RTaW)
 
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based Architecture
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based ArchitectureSelection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based Architecture
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based ArchitectureVoica Gavrilut
 
Complete ASIC design flow - VLSI UNIVERSE
Complete ASIC design flow - VLSI UNIVERSEComplete ASIC design flow - VLSI UNIVERSE
Complete ASIC design flow - VLSI UNIVERSEVLSIUNIVERSE
 
sta slide ref.pdf
sta slide ref.pdfsta slide ref.pdf
sta slide ref.pdfquandao25
 
13 static timing_analysis_4_set_up_and_hold_time_violation_remedy
13 static timing_analysis_4_set_up_and_hold_time_violation_remedy13 static timing_analysis_4_set_up_and_hold_time_violation_remedy
13 static timing_analysis_4_set_up_and_hold_time_violation_remedyUsha Mehta
 
Products & Services for Microelectronics
Products & Services for MicroelectronicsProducts & Services for Microelectronics
Products & Services for MicroelectronicsKamal Karimanal
 

Similar to 8. Clock Tree Synthesis.pdf (20)

Static_Time_Analysis.pptx
Static_Time_Analysis.pptxStatic_Time_Analysis.pptx
Static_Time_Analysis.pptx
 
9. Routing.pdf
9. Routing.pdf9. Routing.pdf
9. Routing.pdf
 
SOC Chip Basics
SOC Chip BasicsSOC Chip Basics
SOC Chip Basics
 
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERS
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERSROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERS
ROLE OF DIGITAL SIMULATION IN CONFIGURING NETWORK PARAMETERS
 
7. Placement.pdf
7. Placement.pdf7. Placement.pdf
7. Placement.pdf
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design
 
**Understanding_CTS_Log_Messages.pdf
**Understanding_CTS_Log_Messages.pdf**Understanding_CTS_Log_Messages.pdf
**Understanding_CTS_Log_Messages.pdf
 
file-3.ppt
file-3.pptfile-3.ppt
file-3.ppt
 
file-3.ppt
file-3.pptfile-3.ppt
file-3.ppt
 
Comparative Study of Delay Line Based Time to Digital Converter using FPGA
Comparative Study of Delay Line Based Time to Digital Converter using FPGAComparative Study of Delay Line Based Time to Digital Converter using FPGA
Comparative Study of Delay Line Based Time to Digital Converter using FPGA
 
Unit-III.pptx
Unit-III.pptxUnit-III.pptx
Unit-III.pptx
 
24-02-18 Rejender pratap.pdf
24-02-18 Rejender pratap.pdf24-02-18 Rejender pratap.pdf
24-02-18 Rejender pratap.pdf
 
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-Study
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-StudyDo We Really Need TSN in Next-Generation Helicopters? Insights From a Case-Study
Do We Really Need TSN in Next-Generation Helicopters? Insights From a Case-Study
 
Major project iii 3
Major project  iii  3Major project  iii  3
Major project iii 3
 
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based Architecture
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based ArchitectureSelection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based Architecture
Selection of FDI-Tolerant Time-Sensitive Networking (TSN)-Based Architecture
 
Complete ASIC design flow - VLSI UNIVERSE
Complete ASIC design flow - VLSI UNIVERSEComplete ASIC design flow - VLSI UNIVERSE
Complete ASIC design flow - VLSI UNIVERSE
 
sta slide ref.pdf
sta slide ref.pdfsta slide ref.pdf
sta slide ref.pdf
 
Lecture-5-STA.pdf
Lecture-5-STA.pdfLecture-5-STA.pdf
Lecture-5-STA.pdf
 
13 static timing_analysis_4_set_up_and_hold_time_violation_remedy
13 static timing_analysis_4_set_up_and_hold_time_violation_remedy13 static timing_analysis_4_set_up_and_hold_time_violation_remedy
13 static timing_analysis_4_set_up_and_hold_time_violation_remedy
 
Products & Services for Microelectronics
Products & Services for MicroelectronicsProducts & Services for Microelectronics
Products & Services for Microelectronics
 

More from Ahmed Abdelazeem

What is the Difference Between the target_library and link_library Variables?
What is the Difference Between the target_library and link_library Variables?What is the Difference Between the target_library and link_library Variables?
What is the Difference Between the target_library and link_library Variables?Ahmed Abdelazeem
 
Physical Implementation: I/O Pad Insertion for Innovus.pdf
Physical Implementation: I/O Pad Insertion for Innovus.pdfPhysical Implementation: I/O Pad Insertion for Innovus.pdf
Physical Implementation: I/O Pad Insertion for Innovus.pdfAhmed Abdelazeem
 
Learn Makefiles With the tastiest examples
Learn Makefiles With the tastiest examplesLearn Makefiles With the tastiest examples
Learn Makefiles With the tastiest examplesAhmed Abdelazeem
 
1. Introduction to PnR.pptx
1. Introduction to PnR.pptx1. Introduction to PnR.pptx
1. Introduction to PnR.pptxAhmed Abdelazeem
 
4. Formal Equivalence Checking (Formality).pptx
4. Formal Equivalence Checking (Formality).pptx4. Formal Equivalence Checking (Formality).pptx
4. Formal Equivalence Checking (Formality).pptxAhmed Abdelazeem
 
Formal Verification - Formality.pdf
Formal Verification - Formality.pdfFormal Verification - Formality.pdf
Formal Verification - Formality.pdfAhmed Abdelazeem
 
Physical Verification Design.pdf
Physical Verification Design.pdfPhysical Verification Design.pdf
Physical Verification Design.pdfAhmed Abdelazeem
 

More from Ahmed Abdelazeem (20)

10. Signoff.pdf
10. Signoff.pdf10. Signoff.pdf
10. Signoff.pdf
 
6. Design Planning.pdf
6. Design Planning.pdf6. Design Planning.pdf
6. Design Planning.pdf
 
What is the Difference Between the target_library and link_library Variables?
What is the Difference Between the target_library and link_library Variables?What is the Difference Between the target_library and link_library Variables?
What is the Difference Between the target_library and link_library Variables?
 
Physical Implementation: I/O Pad Insertion for Innovus.pdf
Physical Implementation: I/O Pad Insertion for Innovus.pdfPhysical Implementation: I/O Pad Insertion for Innovus.pdf
Physical Implementation: I/O Pad Insertion for Innovus.pdf
 
Learn Makefiles With the tastiest examples
Learn Makefiles With the tastiest examplesLearn Makefiles With the tastiest examples
Learn Makefiles With the tastiest examples
 
ready_valid_interface.pdf
ready_valid_interface.pdfready_valid_interface.pdf
ready_valid_interface.pdf
 
wire vs. reg.pdf
wire vs. reg.pdfwire vs. reg.pdf
wire vs. reg.pdf
 
verilog_fsm.pdf
verilog_fsm.pdfverilog_fsm.pdf
verilog_fsm.pdf
 
always_at_blocks.pdf
always_at_blocks.pdfalways_at_blocks.pdf
always_at_blocks.pdf
 
1. Introduction to PnR.pptx
1. Introduction to PnR.pptx1. Introduction to PnR.pptx
1. Introduction to PnR.pptx
 
5. DFT.pptx
5. DFT.pptx5. DFT.pptx
5. DFT.pptx
 
4. Formal Equivalence Checking (Formality).pptx
4. Formal Equivalence Checking (Formality).pptx4. Formal Equivalence Checking (Formality).pptx
4. Formal Equivalence Checking (Formality).pptx
 
3. Synthesis.pptx
3. Synthesis.pptx3. Synthesis.pptx
3. Synthesis.pptx
 
Routing.pdf
Routing.pdfRouting.pdf
Routing.pdf
 
ASIC_Design.pdf
ASIC_Design.pdfASIC_Design.pdf
ASIC_Design.pdf
 
Placement.pdf
Placement.pdfPlacement.pdf
Placement.pdf
 
Standard-Cells.pdf
Standard-Cells.pdfStandard-Cells.pdf
Standard-Cells.pdf
 
EMIR.pdf
EMIR.pdfEMIR.pdf
EMIR.pdf
 
Formal Verification - Formality.pdf
Formal Verification - Formality.pdfFormal Verification - Formality.pdf
Formal Verification - Formality.pdf
 
Physical Verification Design.pdf
Physical Verification Design.pdfPhysical Verification Design.pdf
Physical Verification Design.pdf
 

Recently uploaded

High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...Pooja Nehwal
 
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...Pooja Nehwal
 
Alambagh Call Girl 9548273370 , Call Girls Service Lucknow
Alambagh Call Girl 9548273370 , Call Girls Service LucknowAlambagh Call Girl 9548273370 , Call Girls Service Lucknow
Alambagh Call Girl 9548273370 , Call Girls Service Lucknowmakika9823
 
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Pooja Nehwal
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Pooja Nehwal
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhisoniya singh
 
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311  Call Girls in Thane , Independent Escort Service ThanePallawi 9167673311  Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service ThanePooja Nehwal
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Pooja Nehwal
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...anilsa9823
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...Call Girls in Nagpur High Profile
 
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...Call Girls in Nagpur High Profile
 
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...ur8mqw8e
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一ga6c6bdl
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一zul5vf0pq
 

Recently uploaded (20)

High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
 
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service
(SANA) Call Girls Landewadi ( 7001035870 ) HI-Fi Pune Escorts Service
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
 
Alambagh Call Girl 9548273370 , Call Girls Service Lucknow
Alambagh Call Girl 9548273370 , Call Girls Service LucknowAlambagh Call Girl 9548273370 , Call Girls Service Lucknow
Alambagh Call Girl 9548273370 , Call Girls Service Lucknow
 
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
 
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
Call Girls In Andheri East Call 9892124323 Book Hot And Sexy Girls,
 
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | DelhiFULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
FULL ENJOY - 8264348440 Call Girls in Hauz Khas | Delhi
 
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311  Call Girls in Thane , Independent Escort Service ThanePallawi 9167673311  Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
 
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
 
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
 
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Chhaya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Chhaya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
 
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
 

8. Clock Tree Synthesis.pdf

  • 2. Contents After completing this unit, you should be able to: ❑ List the status of the design prior to CTS ❑ Set up the design for clock tree synthesis ❑ Identify implicit clock tree start/end points and when explicit modifications are needed ❑ Control the constraints and targets used by CTS ❑ Describe the three different skew optimization methods ❑ Execute the recommended clock tree synthesis and optimization flow ❑ Analyze timing and clock specifications post-CTS 3/3/2024 2 © Ahmed Abdelazeem
  • 3. Facilities Building Hours Restrooms Meals Messages Smoking Recycling Phones Emergency EXIT Please turn off cell phones and pagers 3 © Ahmed Abdelazeem 3/3/2024
  • 4. Workshop Goal Use IC Compiler II to perform placement, DFT, CTS, routing and optimization, achieving timing closure for designs with moderate to high design challenges. 4 © Ahmed Abdelazeem 3/3/2024
  • 5. Target Audience ASIC, back-end or layout designers with experience in standard cell-based automatic Place&Route. 5 © Ahmed Abdelazeem 3/3/2024
  • 6. High-Level IC Compiler Flow Gate-level netlist Synthesis Design & Time Setup Floorplan Definition Placement & Optimization CTS & Optimization Routing & Optimization Signoff IC Compiler II 6 3/3/2024 © Ahmed Abdelazeem  ✓ ✓
  • 7. Design Status, Start of CTS Phase 3/3/2024 © Ahmed Abdelazeem 7 ❑ Placement - completed ❑ Power and ground nets – prerouted ❑ Estimated congestion - acceptable ❑ Estimated timing - acceptable (~0ns slack) ❑ Estimated max cap/transition – no violations ❑ High fanout nets: • Reset, Scan Enable synthesized with buffers • Clocks are still not buffered Why are there no buffers on clock nets? check_design –checks pre_clock_tree_stage
  • 8. Understand Your Clock Structure First ❑ Questions you should be asking: • What are the different clock trees and their roots? • What are the stop (sink) and exclude pins? • Are there any preexisting clock cells or trees? • Are the generated clocks defined correctly? • Are there converging or overlapping clock trees? • What are the requirements between clocks? 3/3/2024 © Ahmed Abdelazeem 8
  • 9. Understand Your Clock Tree Goals ❑ Skew Goal • What are the skew requirements for your design? • Are there different skew targets for small and large clocks? ❑ Insertion Delay Goal • What are the insertion delay specs for your block? • What is a reasonable target based on the size and floorplan of your block/chip? ❑ Nondefault rules to prevent SI problems ❑ DRC Requirements • Are signal net DRCs different from clock net DRCs? ❑ Find out the order of significance or importance of all the clocks in the design 3/3/2024 © Ahmed Abdelazeem 9
  • 10. Understand Your Clock Tree Specs ❑ Check SDC constraints and verify them against the specification • Pay close attention to any generated clocks and muxed clocks and understand how set_case_analysis switches between modes of operation create__clock (clock source) create_generated_clock (derived clock) set_clock_latency (insertion delay) set_clock_uncertainty (skew + jitter + margin) set_clock_transition (transition for sync) set_case_analysis (case analysis) ❑ Find out what clocks to set as false paths which prevent unrelated logics from optimization 3/3/2024 © Ahmed Abdelazeem 10
  • 11. Clock Delay Problems 3/3/2024 © Ahmed Abdelazeem 11 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Clock ❑ All clock pins are driven by a single clock source ❑ All clock pins are from a source of clock pulses in various geometrical distances
  • 12. CTS Problem CTS Problem ◦ CTS is the process of distributing clock signals to clock pins based on physical/layout information ◦ After placement of cells the tree of synchronization is synthesized ◦ Balanced clock tree is synchronized with the addition of buffers ◦ After routing CT optimization is made 3/3/2024 © Ahmed Abdelazeem 12 Unbuffered clock tree Buffered/balanced clock tree CLK CLK
  • 13. Clock Tree Goal and Metrics • Goal ▪ Basic connectivity • Metrics ▪ Skew ▪ Power ▪ Area ▪ Slew rates 3/3/2024 © Ahmed Abdelazeem 13 Time Time Time Clock Source (ex. PLL) CLK1 CLK2 Skew t1 t2 Latency Slew Latch delay Critical path delay Setup time Cycle time t
  • 14. General Concepts: Clock Skew: Definition, Causes and Effects ❑ Clock Skew is the time difference between the arrival of the same edge of a clock signal at the Clock pin of the capture flop and launch flop 3/3/2024 © Ahmed Abdelazeem 14 Register Register Dmax Clock Network 1 2 d1 Launch signals d2 T Catch signals Skew = d1 – d2 Zero skew: d1 = d2 Useful skew, d1 – d2 = δ12
  • 15. Clock Skew Types ❑ Global ◦ Recommended - fastest ❑ Local ◦ Longer runtime ❑ Useful ◦ Used to fix small timing violations 3/3/2024 © Ahmed Abdelazeem 15
  • 16. Clock Skew Types: Global 3/3/2024 © Ahmed Abdelazeem 16 All clock delays are matched as close as possible Global skew is recommended – fastest runtime (may add unnecessary buffers) D Q FF2 CLK D Q FF1 CLK D Q FF3 CLK B CLOCK A DIN B_OUT A_OUT D Q FF4 CLK C D Q FF2 CLK D Q FF1 CLK B CLOCK (0.37ns) B_OUT D Q FF3 CLK A DIN A_OUT (0.38ns) (0.38ns) D Q FF4 CLK C 0.36ns)
  • 17. Clock Skew Types: Local 3/3/2024 © Ahmed Abdelazeem 17 Possibly fewer buffers – much longer runtime D Q FF2 CLK D Q FF1 CLK D Q FF3 CLK B CLOCK A DIN B_OUT A_OUT D Q FF4 CLK C Only related FFs are balanced for skew D Q FF2 CLK D Q FF1 CLK B CLOCK 0.20ns) B_OUT D Q FF3 CLK A DIN A_OUT 0.21ns) (0.38ns) D Q FF4 CLK C (0.36ns)
  • 18. Clock Skew Types: Useful 3/3/2024 © Ahmed Abdelazeem 18 ❑ Useful skew- If the clock is skewed intentionally to resolve violations, it is called useful skew. D Q FF2 CLK D Q FF1 CLK D Q FF3 CLK B CLOCK A DIN B_OUT A_OUT D Q FF4 CLK C D Q FF2 CLK D Q FF1 CLK B CLOCK 0.11ns) B_OUT D Q FF3 CLK A DIN A_OUT 0.35ns) (0.38ns) D Q FF4 CLK C (0.36ns) skewed intentionally to resolve violations
  • 19. Clock Skew Variations 3/3/2024 © Ahmed Abdelazeem 19 T S W H Ground plane H Gate width tox Gate length L effective • Process variations • Power supply noise • Temperature variations • …
  • 20. Starting Point 3/3/2024 © Ahmed Abdelazeem 20 All clock pins are driven by a single clock source. FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Clock
  • 21. Clock Tree Synthesis (CTS) (1/2) 3/3/2024 © Ahmed Abdelazeem 21 A buffer tree is built to balance the loads and minimize the skew. FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Clock
  • 22. Clock Tree Synthesis (CTS) (2/2) 3/3/2024 © Ahmed Abdelazeem 22 A “delay line” is added to meet the minimum insertion delay. FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Clock
  • 23. Clock Tree Synthesis 3/3/2024 © Ahmed Abdelazeem 23 clock_opt Physical Constraints “NDRs” Targets DRC max tran/cap/fanout Control Analysis report_clock_tree report_clock_timing report_timing
  • 24. Clock Trees Are Built in Two Phases ❑ Phase 1: Clock Tree Synthesis (CTS) • Builds an initial load-balanced, DRC-clean clock tree ❑ Phase 1: Clock Tree Optimization (CTO) • Performs cell sizing, relocation, buffer insertion • Tries to achieve clock tree targets 3/3/2024 © Ahmed Abdelazeem 24
  • 25. CTS Goals 3/3/2024 © Ahmed Abdelazeem 25 Phase 1: CTS ❑ Meet the clock tree Design Rule Constraints (DRC): • Maximum transition delay (0.5ns, by default) • Maximum load capacitance (0.6pf, by default) • Maximum fanout (2000, by default) • Maximum buffer levels (50, by default) Phase 1: CTO ❑ Meet the clock tree targets: • Maximum skew (0ns, by default) • Minimum insertion delay (0ns, by default) Constraints are upper-bound goals. If constraints are not met, violations will be reported. Targets are "nice to have" goals. If targets are not met, no violations will be reported.
  • 26. Clock Tree Synthesis Goal and Flows ❑ Placement should be completed • Acceptable congestion, setup timing, and logical DRCs • High fanout signal nets (reset, scan enable, etc.) are buffered ❑ The goal of the clock tree synthesis design phase is to: • Build the clock tree buffer structure • Route the clock nets • Optimize datapath logic for setup and hold timing, and DRCs ❑ Two CTS flows are supported: • Classic CTS flow: CTS first, followed by data path optimization • Concurrent Clock & Data flow (CCD): CTS and data path optimization performed concurrently ➢ Recommended for timing-critical designs 3/3/2024 © Ahmed Abdelazeem 26
  • 27. Comparing Classic CTS versus CCD 3/3/2024 © Ahmed Abdelazeem 27 Classic CTS Concurrent Clock &Data • Clock tree is built while ignoring the data paths • Goal: Minimize skew ➢ Allows full clock-cycle reg-to- reg timing • Data path is optimized post-CTS ‾ Clock tree remains untouched • Clock tree is built with full knowledge of data path timing • Goal: Meet setup/hold timing ➢ Reg-to-reg timing may be larger or smaller than a clock cycle • Data path is optimized along with incremental clock tree modifications (green buffer)
  • 28. Questions ☺ ❑ When are the pros and cons of setting a tight constraint for target_skew? ❑ When are the pros and cons of setting a relaxed constraint for max_transition? 3/3/2024 © Ahmed Abdelazeem 28
  • 29. Where does the Clock Tree Begin and End? 3/3/2024 © Ahmed Abdelazeem 29 Start D Q FF CLK GATED CLOCK D Q FF CLK D Q FF CLK STOP STOP STOP Clock trees start at their “Source” defined by create_clock … Clock Sinks (stop, float or exclude pins), Synthesizable clock trees end (by default) on clock pins of registers or macros End To see the source(s) of a clock, you can either run report_clocks, or use the sources attribute: icc2_shell> get_attribute [get_clocks PCI_CLK] sources {pclk} Control
  • 30. Balance Points: Sink and Ignore Pins 3/3/2024 © Ahmed Abdelazeem 30 ❑ Sink Pins: • CTS optimizes for DRC and clock tree targets (skew, insertion delay) • Optionally, can consider internal insertion delay ❑ Ignore Pins: • CTS adds a small buffer “guide buffer” to isolate all pins ➢ Only DRCs fixed after the guide buffer • CTS ignores skew and insertion delay targets D Q FF CLK GATED D Q FF CLK CLOCK Skew and insertion delay are ignored Skew and insertion delay are optimized IP IP_CLK D Q FF CLK CLK_OUT Implicit Sink pins Implicit Ignore pins D Q FF CLK Incorrectly modeled in the library Guide Buffer D Q FF CLKn
  • 31. Generated and Gated Clocks 3/3/2024 © Ahmed Abdelazeem 31 Master and generated clocks are part of the same clock domain. Skew is balanced globally (across all clock pins) within each clock domain D Q FF1 CLK D Q FF4 CLK D Q FF5 CLK D Q FF2 CLK CLOCK create_clock D Q FFD CLK QN D Q FF3 CLK GATED create_generated_clock Intermediate ICG and divider FF CLK pins are not considered for skew balancing 0.64 0.65 0.63 Insertion delays are closely matched as all sink pins are optimized for skew CLK ICG
  • 32. User-defined or Explicit Sink Pins 3/3/2024 © Ahmed Abdelazeem 32 IP (FRAM) IP_CLK CLOCK skew and insertion delay are ignored Implicit exclude pin Scenario: If the clock pin inside a macro cell is correctly defined, CTS will treat that pin as an implicit Sink pin. In this example the clock pin is not defined. What is the problem here? no clock pin definition The macro’s clock pin is marked as an implicit exclude “Ignore” pin – no skew optimization! D Q FF CLKn ? D Q FF3 CLK
  • 33. Defining an Explicit Sink Pin 3/3/2024 © Ahmed Abdelazeem 33 CLOCK skew and insertion delay are now optimized Explicit stop pin defined Defining an explicit Sink pin allows CTS to optimize for skew and insertion delay targets. IP D Q FF CLKn 0.17 IP_CLK D Q FF CLK 0.42 0.43 CTS has no knowledge of the IP-internal clock delay – it can only “see” up to the stop pin! set_clock_balance_points -consider_for_balancing true -balance_points [get_pins IP/IP_CLK]
  • 34. Defining an Explicit Sink Pin Wi h Delay 3/3/2024 © Ahmed Abdelazeem 34 Control IP D Q FF CLKn 0.15 CLOCK skew and insertion delay are now optimized Explicit delay balanced defined Defining an explicit sink pin with delay allows CTS to adjust the insertion delays based on specification. IP_CLK D Q FF CLK 0.42 0.27 D Q FF CLKn set_clock_balance_points -consider_for_balancing true -corner ss125c -delay 0.15 -late -balance_points [get_pins IP/IP_CLK]
  • 35. Defining an Explicit Ignore (or Exclude) Pin 3/3/2024 © Ahmed Abdelazeem 35 Explicit ignore pins cause CTS to ignore this pin and down-stream sinks for skew balancing set_clock_balance_points -clock Clock -consider_for_balancing false -balance_points [get_pins AN2/A] CLOCK D Q FF CLKn D Q FF1 CLK D Q FF CLK D Q FF2 CLK A B AN2 Explicit ignore pin Defined on pin AN2/A Guide buffer CTS inserts a guide buffer; CTS engine fixes DRCs only along the clock path past ignore pins
  • 36. Defining a Clock Skew Group 3/3/2024 © Ahmed Abdelazeem 36 CLOCK D Q FFD CLK QN D Q FF3 CLK D Q FF1 CLK D Q FF4 CLK Define an explicit exclude pin here D Q FF2 CLK … … 0.42 0.67 Create_clock_skew_group –mode TEST –objects {FF1/CLK FF2/CLK} The target skew will be the same as the master clock of this skew group. You cannot set the skew independently. Defining a clock skew group if you want to balance a group of clock pins independently from the rest of clock tree.
  • 37. Default Clock Tree Targets ❑ The default target skew and target latency is 0 ns • SDC uncertainty and network latency constraints are ignored ❑ Relax clock skew targets for non-timing critical clocks • Reduces overall buffer count, power and run time ❑ Specify network latency targets to help post-CTS timing (see below) • An alternative method using automatically-derived balance points will also be shown 3/3/2024 © Ahmed Abdelazeem 37 D Q FF1 CLK D Q FF2 CLK Clk1 Pre-CTS, FF1→FF2 path relies on the 1.0ns latency difference to meet timing Clk2 1.4 ns 2.4 ns Slack = 0.0 ns D Q FF1 CLK D Q FF2 CLK Clk1 Post-CTS, latency difference is only 0.6ns causing the FF1→FF2 path to violate timing Clk2 1.4 ns 2.0 ns Slack = -0.4 ns Ideal network latencies Propagated network latencies Target
  • 38. CCD: Skew and Latency Considerations ❑ For the classic CTS flow, it is important to specify accurate ❑ skew and latency targets For the CCD flow: • Target skew is not relevant, because the goal is to intentionally introduce skew to meet timing • Target latency can be applied if needed (for chip-level inter-block timing considerations, for example), but keep in mind that the final agencies have larger skews compared to classic CTS 3/3/2024 © Ahmed Abdelazeem 38
  • 39. User-Defined Clock Tree Targets 3/3/2024 © Ahmed Abdelazeem 39 remove_clock_tree_options -all -target_skew -target_latency set_clock_tree_options -target_skew 0.2 -corners [all_corners] → max skew target of 0.2 applied to all corners, all clocks, all modes current_corner Cl set_clock_tree_options -target_skew 0.1 → max skew target of 0.1 applied in C1, all clocks, all modes set_clock_tree_options -clocks CLK1 -target_latency 1. 4 set_clock_tree_options -clocks CLK2 -target_latency 2.4 → latency target of 1.4 applied in C1, to CLK1 in current mode → latency target of 2.4 applied in C1, to CLK2 in current mode report_clock_tree_options Targets apply to: • All clocks if no clock is specified • Current corner if no corner is specified • Current mode if clock is specified, otherwise all modes
  • 40. Balancing Multiple Synchronous Clocks 3/3/2024 © Ahmed Abdelazeem 40 By default CTS does not perform inter-clock skew balancing → May result in timing violations D Q FF3 CLK D Q FF4 CLK D Q FF1 CLK CLOCK1 D Q FF2 CLK 0.75 0.32 … … CLOCK2 WNS=-0.6
  • 41. Create Balancing Groups ❑ There are two ways to balance the clock groups: • Manual balancing constraints: • Auto-derived balancing constraints: 3/3/2024 © Ahmed Abdelazeem 41 foreach mode {ml m2} { current_mode $mode create_clock_balance_group -name grpl -objects [get_clocks "CL0CK1 CL0CK2"] } derive_clock_balance_constraints -slack_less_than -0.3 report_clock_balance_groups ➢ Constraints will be derived for all modes ➢ Only clocks with cross-clock paths meeting the -slack_less_than specification will be selected
  • 42. Balancing Occurs During clock opt 3/3/2024 © Ahmed Abdelazeem 42 Buffer inserted at the clock root to balance insertion delay D Q FF3 CLK D Q FF4 CLK D Q FF1 CLK CLOCK1 D Q FF2 CLK 0.75 0.76 … … CLOCK2 WNS=-0.16 Balancing occurs during the build_clock stage
  • 43. Inter-clock Balancing is Important for CCD ❑ If inter-clock balancing is not enabled for the CCD flow, CCD optimization will try to meet timing by skewing individual sinks (instead of the root) • Much longer runtime • Inserts many more buffers 3/3/2024 © Ahmed Abdelazeem 43 D Q FF3 CLK D Q FF4 CLK D Q FF1 CLK CLOCK1 D Q FF2 CLK 0.75 0.76 … … CLOCK2 WNS=+0.02 Without inter-clock balancing, CCD insets buffer at the clock sinks
  • 44. Control CTS Cell Selection 3/3/2024 © Ahmed Abdelazeem 44 set cts_libcells [get_lib_cells "*/INVX*_LVT */BUFX8_LVT */BUFX16_LVT */MUX*LVT */A0* */CG* */FF*"] set_lib_cell_purpose -exclude cts [get_lib_cells] set_lib_cell_purpose -include cts $cts_libcells set_dont_touch $cts_libcells false ❑ In the following example, only $cts_libcells are used to build the clock trees. Modify as needed: • In addition to buffers/inverters, include logically equivalent cells of any gates (MUX, AND, ICG, etc.) and FlipFlops*1 in the clock tree Allows these to be resized, if needed • Always-on buffers should be added, to allow always-on CTS for MV designs ➢ If a clock branch needs to feed through a shut-down voltage area, always-on CTS inserts AO buffers- otherwise, must go around it
  • 45. Pre-existing clock Buffers Are Removed 3/3/2024 © Ahmed Abdelazeem 45 Pre-existing clock buffers/inverters may negatively affect CTS QoR CTS will only build this part of the tree cts.compile.remove_existing_clock_tress By default, CTS removes pre-existing clock buffers/inverters and builds a balanced clock tree with fewer buffers CLOCK D Q FFb CLK D Q FFn CLK … A Y D Q FF1 CLK D Q FFa CLK Control Default: true
  • 46. Preserving Pre-Existing Clock Trees 3/3/2024 © Ahmed Abdelazeem 46 Set a dont_touch_subtrees exception at the input pin Pre-existing "un-balanced" clock tree-required to remain "as-is“ Disabling auto-removal of pre-existing clock buffers/inverters is not enough: CTS can still move or size them, or insert buffers set_dont_touch_network –clock_only [get_pins “buf/A”] CLOCK D Q FFb CLK D Q FFn CLK … Custom logic hand-built A Y D Q FF1 CLK D Q FFa CLK May create unnecessary additional buffers. Reported global skew is only as good as pre-existing logic skew CTS leaves dont_touch clock sub-tree as-is Other branches try to match the largest insertion delay in the clock domain
  • 47. Non-Default Clock Routing ❑ ICC II can route the clocks using non-default routing rules (NDR), e.g. double-spacing, double-width, shielding • NDR rules are treated as physical DRCs- reported as violations if not met ❑ Non-default rules are often used to “harden” the clock, e.g. to make the clock routes less sensitive to Cross Talk or EM effects 3/3/2024 © Ahmed Abdelazeem 47 Physical Constraints “NDR” Default Routing Rule Effect of NDR route on Clk Sig1 Clk Sig2 Sig1 Clk Sig2
  • 48. Defining Non-Default Routing and Via Rules ❑ Define the NDR rules: ❑ With the -cuts option you use “symbolic” via names defined in the technology file as cutNameTbl ❑ This simplifies the NDR definition because one symbolic via can match many specific vias and arrays 3/3/2024 © Ahmed Abdelazeem 48 create_routing_rule 2xS_2xW_CLK_RULE -widths {Ml 0.11 M2 0.11 M3 0.14 M4 0.14 M5 0.14} -spacings {Ml 0.4 M2 0.4 M3 0.48 M4 0.48 M5 1.1} -cuts { ... {VIA3 {Vrect 1} } {VIA5 {Vrect 1} }} Layer Name cutNameTB1 name Minimum # of cuts
  • 49. Example Technology File 3/3/2024 © Ahmed Abdelazeem 49 Layer "VIAS" { fatTblThreshold = (0, 0.13, 0.26) fatTb1FatContactNuinber = ( “2,3,4”, ”5,6,20” , “5,6,20”) fatTblFatContactMinCuts = ( “1,1,1”, ”1,1,2” , “2,2,4”) cutNameTbl = ( Vsq , Vrect ) cutWidthTbl = ( 0.05, 0.05 ) cutHeightTbl = ( 0.05, 01.013 ) } contactCode "VIA34,LH" { contactCodeNumber = 5 cutwidth = 0.13 cutHeight = 0.05 ... } contactCode "VIA34,LV" { contactCodeNumber = 6 cutwidth = 0.05 cutHeight = 0.13 ... } ContactCode "VIA34_P" { contactCodeNumber = 20 cutwidth = 0.05 cutHeight = 0.05 ... }
  • 50. Non-Default Via Rules ❑ Clock nets are hardened further by often requiring 100% via optimization to enhance reliability • Minimum size single cut vias are replaced with: ➢ Multiple-cut via arrays and/or ➢ and/or Larger “square” or “bar” cuts ❑ This is also defined using clock NDR rules 3/3/2024 © Ahmed Abdelazeem 50
  • 51. Defining Via NDRs with -vias ❑ You may also use the -vias option ❑ This will require you to specify the exact Contactcode names defined in the technology file ❑ This example is the equivalent of using -cuts { {via3 {vrect 1} } shown two pages earlier 3/3/2024 © Ahmed Abdelazeem 51 create_routing_rule 2xS_2xW_CLK_RULE -widths {Ml 0.11 M2 0.11 M3 0.14 M4 0.14 M5 0.14} -spacings {Ml 0.4 M2 0.4 M3 0.48 M4 0.48 M5 1.1} -vias { {VIA34_LH lxl R} {VIA34_LH 1x1 NR} {VIA34_LV 1x1 R) {VIA34_LV lxl NR} {VIA34_LH 1x2 R} {VIA34_LH 1x2 NR} {VIA34_LH 2x1 R} {VIA34_LH 2x1 NR} {VIA34_LV 1x2 R} (VIA34_LV 1x2 NR} {VIA34_LV 2x1 R} {VIA34_LV 2x1 NR}} ## VIA45 and VIA56 definitions go here}
  • 52. Applying Non-Default Routing Rules ❑ Configure clock tree routing: ❑ Note that the NDR was specified also for M1-M3 • Although the clocks will be primarily routed on M4/M5 as shown above, they need to route on lower layers to connect to the standard cell pins, therefore should be covered by an NDR as well! 3/3/2024 © Ahmed Abdelazeem 52 create_routing_rule 2xS_2xW_CLK_RULE ... set_clock_routing_rules -rule 2xS_2xW_CLK_RULE -min_routing_layer M4 -max_routing_layer M5
  • 53. NDRs on Clock Nets ❑ ICC II CTS supports various types of NDR specifications when building the clock tree 1. Net-specific NDR from set_routing_rule <net_list>: NDR will not get propagated to newly created nets 2. Net-specific NDR from set_clock_routing_rules -nets: NDR will get propagated to newly created nets 3. Clock-specific NDR from set_clock_routing_rules -clocks: Supports separate NDRs for root, sink and internal nets which are clock-specific 4. Global NDR from set_clock_routing_rules: Supports separate NDRs for root, sink, and internal nets ❑ The order of priority is 1 > 2 > 3 > 4 3/3/2024 © Ahmed Abdelazeem 53 n1 n2 n3
  • 54. Different NDRs for Root, Internal, Sink Nets 3/3/2024 © Ahmed Abdelazeem 54 set_clock_routing_rules -rules 3X_RULES -min_routing_layer M4 -max_routing_layer M5 set_clock_routing_rules -net_type sink -rules 2X_RULES -min_routing_layer M4 -max_routing_layer M5 -net_type: root | internal | sink The highlighted options allow you to specify less aggressive NDR rules for clock tree “leaf” nets, while allowing more aggressive NDRs for the other nets. Helps to prevent routing DRC violations as well as SI issues D Q FF CLK D Q FF CLK D Q FF CLK 3X_RULES wires 2X_RULES wires root sink internal
  • 55. Are all Clock Drivers and Loads Specified? 3/3/2024 © Ahmed Abdelazeem 55 Constraints Ensure that all clock input ports have a slew constraint needed for accurate clock delay calculation during and after CTS CHIP_TOP D Q FF CLK D Q FF CLK MOD_B cbuf6 D Q FF CLK D Q FF CLK MOD_A cbuf6 cbuf6 cbuf6 Specify input transition set_driving_cell set_load
  • 56. Defining CTS-Specific DRC Values ❑ Max transition and max capacitance design rules can be specified in two ways: Library and SDC • ICC II will always use the smallest value ❑ You can define your own CTS-specific DRC values: ❑ Design rule constraints can be selectively applied per clock and per scenario (applies to current scenario, by default): 3/3/2024 © Ahmed Abdelazeem 56 set_max_transition 0.5 -clock_path [all_clocks] set_max_capacitance 0.6 -clock_path [all_clocks] set_raax_transition 0.2 -clock_path -scenarios "SI S4" [get_clocks SYS_CLK]
  • 57. Remove Skew from Uncertainty ❑ SDC constraints usually include set_clock_uncertainty –setup | -hold <number> applied to each clock • Models estimated effects of clock skew, jitter, and additional timing margin on setup/hold timing, pre-CTS ❑ After clock tree propagation, to avoid pessimistic timing analysis, remove or reduce uncertainty by the estimated skew: 3/3/2024 © Ahmed Abdelazeem 57 set_clock_uncertainty -scenarios si -setup | -hold <SMALLER_#> CLK1 set_clock_uncertainty -scenarios {s2 s3} -setup | -hold <SMALLER_#> CLK2 # OR remove_clock_uncertainty [all_clocks] -scenarios [all_scenarios ]
  • 58. Reporting Settings Summary 3/3/2024 © Ahmed Abdelazeem 58 # Report clock tree max_tran/cap/references/... in all clocks+modes: report_clock_settings [-clock CLOCKS] [-type type] type can be: configurations , routing_rules , references, spacing_rules , all # Report clock tree target skew/latency constraints: report_clock_tree_options # Report explicit balance points (sink/exclude pins), and groups: report_clock_balance_points report_clock_balance_groups # Report non-default routing rules in a more compact way report_clock_routing_rules
  • 59. Modes / Corners for CTS ❑ ICC II builds clock trees for all clocks in all active setup and/or hold scenarios ❑ CTS will also perform clock net logical PRC fixing on scenarios enabled for max_transition and/or max_capacitance ❑ If you do not want a scenario to be used during CTS: 3/3/2024 © Ahmed Abdelazeem 59 set_scenario_status -active false {s1}
  • 60. Hold Fixing ❑ Hold fixing occurs in all scenarios that are enabled for hold: ❑ Control what cells are used to fix hold violations: ❑ Control the effort for hold fixing: 3/3/2024 © Ahmed Abdelazeem 60 set_scenario_status { s2 } -hold true set_lib_ce1l_purpose -exclude hold [get_lib_cells] set_lib_ce1l_purpose -include hold [get_lib_cells "*/DELLN*_HVT */NBUFF*HVT */DELLN*_RVT */NBUFF*RVT"] set_app_options -list { clock_opt.hold.effort none|low|medium |high}
  • 61. Minimize Hold Time Violations in Scan Paths ❑ Enable scan chains reordering to minimize branch crossings ❑ Can reduce hold time violations in the scan chain 3/3/2024 © Ahmed Abdelazeem 61 Without clock tree based reordering With clock tree based reordering test_si clk test_so A C E B D F test_si clk test_so A C E B D F set_app_options -list opt.dft.clock_aware_scan_reorder true
  • 62. Clock Reconvergence Pessimism ❑ To reduce OCV effects, clock trees try to share as many buffers as possible ❑ Remove the pessimism from the timing calculation caused by shared clock paths (late/early for launch/capture calculation) 3/3/2024 © Ahmed Abdelazeem 62 set_app_options -name time.remove_clock_reconvergence_pessimism -value true
  • 63. Clock Reconvergence Pessimism Removal ❑ The pessimism is removed for setup timing by adding the CRP in the capture path, and by subtracting for hold 3/3/2024 © Ahmed Abdelazeem 63 Example setup timing report: Added CRP in capture path
  • 64. Congestion-Aware Initial CTS ❑ Initial clock tree synthesis (build_clock) is not congestion aware! • Based on virtual routing, by default ❑ On large complex-floorplan designs, this may lead to: • Pre- vs. post-route clock skew, latency, and logical DRC degradation • Congestion hotspots • Route DRCs ❑ Enable global routing for congestion estimation and congestion-aware clock tree construction during the build_clock stage: 3/3/2024 © Ahmed Abdelazeem 64 set_app_options -list {cts.compile.enable_global_route true}
  • 65. Local Skew Optimization ❑ Performs timing-aware clustering (as opposed to location-based) ❑ Optimizes local skew directly for setup and hold timing critical pairs ❑ Can relax skew target where possible (if slack is positive) to save clock buffer area 3/3/2024 © Ahmed Abdelazeem 65
  • 66. Local Skew Optimization ❑ Timing aware clustering: • Clusters timing-related clock tree nodes together to improve path sharing without degrading latency. ❑ Automatic derivation of target skew: • Derives target skew for clocks based on timing QoR seen with early estimation of timing QoR. As a safeguard, derived value is limited to within 3% to 10% of clock period. CTS works to meet derived skew instead of trying to achieve “0” skew and thus reducing clock buffer/cell area. • Local skew optimization ensures that timing-related registers have minimal skew. ❑ Local skew optimization during CTO: • After (traditional) global skew optimization stage in CTO, it now looks at timing QoR, and optimizes local skew for timing critical pairs to improve timing QoR. • Makes sure that skew/latency/DRCs across scenarios are not degraded. 3/3/2024 © Ahmed Abdelazeem 66
  • 67. Enable Local Skew CTS and CTO ❑ When using CCD, local skew CTS and CTO are enabled by default • Because timing is taken into account for the initial clock tree, this reduces the work that CCD has to do to further optimize the clock tree to meet timing ❑ To use local skew for classic CTS, you need to enable it specifically: ❑ By default, local skew optimization will calculate relaxed skew targets. You might see messages like: ❑ CTS is doing this in order to save on clock area. If, after CTS, hold timing is degrading more than what you are comfortable with, you might consider turning this feature off using the application option 3/3/2024 © Ahmed Abdelazeem 67 set_app_options -list { cts.compile.enable_local_skew true cts.optimize.enable_local_skew true } Computing global skew target.. Setting target skew for clock: SYS_2x_CLK as 0.240000 cts.common.enable auto_skew_target_for_local_skew
  • 68. Restricting the Amount of CCD Skewing ❑ By default, CCD skews as much as needed to meet the timing ❑ You can limit the amount of skewing if needed, for example: • ccd.max_prepone: max latency reduction (advance) allowed to a sink • ccd.max_postpone: max latency increase (delay) • Setting a limit can impact the timing QoR as this restricts CCD 3/3/2024 © Ahmed Abdelazeem 68 set_app_options -name ccd.max_prepone -value 0.2 set_app_options -name ccd.max_postpone -value 0.4
  • 69. Skipping Path Groups during CCD ❑ You Can configure CCD to Skip the clock pins that belong to particular Path groups during clock latency adjustment ❑ Data path optimization will still be performed on these path groups • If you specify a path group name without a scenario name, all path groups with the name specified from all scenarios are skipped • If you specify a path group name with a scenario name, only the path group in the specified scenario is skipped 3/3/2024 © Ahmed Abdelazeem 69 set_app_options -name ccd.skip_path_groups -value { pathgroupl {scenarioA pathgroup2} }
  • 70. Ignore I/O Timing for Boundary Register Skewing ❑ It might be desirable to prevent CCD Skewing based on I/O timing • I/O timing inaccurate or too pessimistic • To ignore timing on some or all I/Os for CCD: • This allows CCD to skew the FF1 boundary register to help Path A's timing 3/3/2024 © Ahmed Abdelazeem 70 group_path –name MY_IN –from [get_ports In*] set_app_options –name ccd.skip_path_groups –value {MY_IN} clock_opt
  • 71. CCD and Boundary Registers (1 of 2) ❑ By default, CCD skews all registers (including boundary FFs) for timing ❑ To prevent latency adjustment on boundary registers, use: 3/3/2024 © Ahmed Abdelazeem 71 ccd.optimize_boundary_timing → set to false Boundary CK pin: en_launch/CK because of port din Boundary CK pin: ff_l_l/CK because of port din Optimize_boundary_timing is set to false, 2 registers will not be optimized, 20 registers will be optimized.
  • 72. ❑ Primary Ports are used to differentiate between boundary and internal FFs ❑ Ignore ports for boundary identification (reset, scan_en, ...) using: • to ignore specific ports for boundary identification, use: 3/3/2024 © Ahmed Abdelazeem 72 CCD and Boundary Registers (2 of 2) ccd.ignore_scan_reset_for_boundary_identification → set to false set_app_options -name ccd.ignore_ports_for_boundary_identification -value {my_en en_A}
  • 73. Hold Criticality during CCD ❑ Although CCD setup optimizations are hold-aware, hold violations can be introduced to improve setup timing • Usually, data path optimizations are able to address these hold violations ❑ You may want to prioritize hold during CCD if • Fixing hold in your design is difficult / not possible • Your design is area-critical, and the hold-buffer area increase is to be avoided ❑ To specify hold criticality during CCD, use: • Set to medium or high to reduce hold degradation • Use only if hold timing is critical, since setup optimizations may degrade • Only affects final_opto, as well as CCD optimization during route_opt 3/3/2024 © Ahmed Abdelazeem 73 ccd.hold_control_effort Default: low
  • 74. Classic CTS and CCD Execution ❑ Clock tree synthesis, clock tree routing, and data path optimization are all executed by: • CCD is enabled using the application option clock_opt.flow.enable_ccd ❑ The four stages of clock_opt are: ❑ You can control which stages are executed with -from/- to • For example, to perform only clock tree synthesis (CTS+CTO): 3/3/2024 © Ahmed Abdelazeem 74 Clock_opt build_clock route_clock final_opt global_route_opt Clock_opt –to build_clock
  • 75. Classic CTS Flow Stages 3/3/2024 © Ahmed Abdelazeem 75 Command What does it do? clock_opt -to build_clock Builds GR clock trees*, and performs inter-clock balancing, for minimum skew clock_opt -from route_clock -to route_clock Routes the clock nets UpdatesI/Olatencies clock_opt -from final_opto Performs data path optimization to meet timing and DRCs After the build_clock phase, the clock trees are global-routed. The global routing occurs during the “optimization” (CTO) part
  • 76. Classic CTS Flow: clock_opt vs. Atomic ❑ To analyze intermediate results, you can either: • Run clock opt stages individually using -from/-to options • Use atomic commands 3/3/2024 © Ahmed Abdelazeem 76 clock_opt stage Atomic commands clock_opt -to build_clock synthesize_clock_trees balance_clock_groups clock_opt -from route_clock -to route_clock route_group -all_clock_nets -reuse_existing_global_route true compute_clock_latency clock_opt -from final_opto
  • 77. Post-CTS: Post-route Clock Tree Optimization ❑ Problems: • Possibility of clock tree QoR degradation (skew, latency, logical DRC) due to miscorrelation between global route(build_clock)and detail route(route_clock) • Clock tree QoR can further degrade due to coupling capacitance and crosstalk effects ❑ Solution: Post-route clock tree optimization • Works on detail-routed clock trees to address these degradations • Optimizations performed include on-route buffer insertion, buffer sizing, and gate sizing ❑ Post-route CTO can also be performed after signal routing ❑ If CCD is enabled, the command will only fix logical DRCs 3/3/2024 © Ahmed Abdelazeem 77 synthesize_c1ock_trees -postroute
  • 78. CCD Power or Area Recovery ❑ The CCD engine can recover power or area from the clock network • Power/area recovered without any timing QoR impact • Optimization includes repeater removal, clock cell and register sizing. • Applies to either the classic CTS or CCD flow • Runs during the final_opto stage of clock_opt ❑ Choose between power or area recovery: • Power: Should use accurate SAIF files for accurate dynamic power calculation • Area: Use if accurate SAIF files are not available or if area is an optimization goal 3/3/2024 © Ahmed Abdelazeem 78
  • 79. Effects of Clock Tree Synthesis 3/3/2024 © Ahmed Abdelazeem 79 ❑ Clock buffers added ❑ Congestion may increase ❑ Non clock cells may have been moved to less ideal locations ❑ Can introduce new timing and max tran/cap violations CTS How do you handle new violations?
  • 80. Analyzing CTS Results 3/3/2024 © Ahmed Abdelazeem 80 report_clock_qor [-type area|balance_groups|drc_violators| latency| local_skew | power | robustness| structure|summary] [-histogram_type latency|transition|level|...] [-modes ...] [-corners ...] ... ❑ Reports max global skew (by default), late/early insertion delay, clock DRC violations, number of clock tree references (buffers), structure of the clock tree, robustness, histogram...
  • 81. Analyzing CTS Results: Clock Timing Report 3/3/2024 © Ahmed Abdelazeem 81 report_clock_timing -type summary|transition | -modes {ml m2} -corners {cl c2} ... ❑ Reports actual, relevant skew, latency, inter-clock latency, etc. for paths that are related ❑ Includes effects of early/late timing derates • report_clock_qor does not consider derates ❑ Example: report_clock_timing -type skew
  • 82. Analysis Using the CTS GUI ❑ CTS browser • Identify clock tree object properties and attributes • Traverse clock tree levels ❑ CTS schematic • Trace clock paths • Cross-probe with layout view ❑ Clock tree-levelized graph ❑ Clock tree latency graph per corner 3/3/2024 © Ahmed Abdelazeem 82
  • 83. Clock Tree Final View 3/3/2024 © Ahmed Abdelazeem 83
  • 84. Main References 3/3/2024 © Ahmed Abdelazeem 84 ❑ Ron Rutenbar “From Logic to Layout” ❑ Synopsys University Courseware ❑ Synopsys Documentation ❑ IDESA ❑ Cadence Documentation
  • 85. 3/3/2024 © Ahmed Abdelazeem 85 Thank You ☺