CTS Debugging
CTS Debugging
Application Note
Rev 1.0
July 2011
Table Of Content
Purpose ............................................................................................................................... 3
Audience ............................................................................................................................. 3
Overview ............................................................................................................................. 3
1. Debugging the clock QoR issue ................................................................................ 4
2. Debugging CTS PreRoute issues .............................................................................. 5
1. Transition Violation: ............................................................................................................ 5
1. Debugging Transition Violation ................................................................................... 5
2. Fixing Transition violation: .......................................................................................... 6
2. Latency Violation................................................................................................................. 6
1. Debugging Latency Violation ...................................................................................... 6
2. Fixing Latency Violation: ............................................................................................. 7
3. Skew Violation..................................................................................................................... 8
1. Debugging Skew Violation .......................................................................................... 8
2. Fixing Skew Violation: ................................................................................................. 9
3. Debugging CTS clkRouteOnly issues ....................................................................... 9
1. Debugging Routing Issue ............................................................................................. 9
2. Fixing Skew Violation: ............................................................................................... 10
3. Debugging CTS postCTS issues ............................................................................. 11
1. Debugging post CTS Routing Issue ........................................................................... 11
2. Fixing Skew Violation: ............................................................................................... 11
4. Debugging Long Run Time ...................................................................................... 12
Purpose
This document provides information about different debugging techniques for improving Clock
Tree Synthesis (CTS).
Audience
This document is meant for users and designers performing Clock Tree Synthesis (CTS) using
the Encounter Digital Implementation (EDI) system versions 9.1 and 10.1
Overview
This document provides information about debugging and fixing CTS issues.
Is QOR bad Y
before routing? Debugging CTS PreRoute issues
(preRoute)
Is QOR turnings Y
bad after clock Debugging CTS clkRouteOnly issues
only routing?
(clkRouteOnly)
Is QOR turning Y
bad postCTS? Debugging CTS postCTS issues
(postRoute)
Check if there are placement blockages that prevent the tool from inserting a buffer to fix
the DRV. A possible log file message is: cannot find a reasonable buffer location for
insertion.
Check if clock instances are set to DontTouch or Fixed These settings prevent DRV
from being fixed by upsizing cell.
Transition violations caused when the cell specified in the library has scalar output
transition that already violates the requirement.
#Example of scalar output transition
rise_transition( scalar ){
values (400);}
Transition issue caused by buffer driving too high fanout (more than 50).
o Changing Layer: CTS expects routing layer to be the preferred routing layer
but actual nanoRoute uses non-preferred routing layer that has a much bigger
RC. To fix this check the nanoRoute option of preferred routing layer.
For huge pin cap issue, change the capacitance to less than 1pF. Anything more is
considered big.
MacroModel pin abc_reg 0.2ns 0.2ns 0.2ns 0.2ns 1pF
For high fanout issue, use set MaxFanout 50 in the clock specification file.
2. Latency Violation
Clock gating Instances set to FIXED or DontTouch before synthesis impact latency.
Buffer List may be too limited. For example buffer with big driving strength is not
included.
Clock tree already has many levels before synthesis. For example 20.
Macromodels having large pin capacitance or clock pin of instances in timing libraries
have large input pin capacitance.
Ensure that big buffers are listed in the clock specification file
Check whether clock instances have DontTouch, DontUse attributes or FIXED placement
attribute.
o reportDontUse
o get_property [get_lib_cells <cell_name>]is_dont_touch
o get_property [get_lib_cells <cell_name>]is_dont_use
Use higher routing layers if there are fewer cell/routing blockages in those layers.
Use non-default rule and multi-cut vias for routing, or choose higher routing layers that
have smaller RCs.
To display the paths with minimum and maximum latency open Global Clock Debug
(Clock->Debug Clock Tree) and select Tool => Find Object > Min/MaxPath
(displayClockMinMaxPaths)
3. Skew Violation
(Actual) (Required)
Trig. Edge Skew : 1872(ps) 200(ps)
Max. Rise Buffer Tran : 1380.6(ps) 250(ps)
o Choose higher routing layers if routing blockages at those layers are less.
Check if skew degradation is caused by Clock Structure. Gated clock is more difficult to
balance than free running clock.
A higher number of clock tree levels mean greater difficulty in balancing. Anything more
than 10 levels can be considered high.
In general, a symmetric buffer or inverter gives better skew than a non-symmetric one in
mixed inversion clock structure.
o Mixed inversion clock is the clock domain that has both rising and falling edge
flops, and non-inverting and inverting clock paths.
More re-convergent paths mean more paths to be balanced. That results longer insertion
delay and more buffer count.
Correlation between CTSs estimation and actual routing by NanoRoute can cause QOR
to turn bad after routing.
o Wire topology difference or clock wire detour. Follow the procedure detailed
below to debug the wire topology difference:
o Routing layer difference where CTS always assume preferred layers are used but
non-preferred layer is chosen by NanoRoute for certain segment. The root cause
can be:
Use PreferredLayerEffort Medium because although high will yield the best
result, in may cause DRC violation.
InstanceObstruction
+ instanceName Entire|Ignored|Detailed|HV
o clkRouteOnly
Length-based
unit length capacitance is C for each Layer
unit length resistance is R for each Layer
Enclosure model
o PostCTS
Grid-based
unit length capacitance is C for each Layer in each grid
unit length resistance is R for each Layer in each grid
Wire density model
For routing correlation, remove all power routing and unblock all memories using
forceClockTreeBlockage
o Set routeBlockageHV true
For RC grid model, use the below setting before performing the CTS.
If long run time is observed in clock tree construction, determine the net (sub-tree) for
which CTS is taking a long run time
o Investigate if there is anything abnormal on the net. For Example: placement
blockage prevents CTS from adding buffer.
o Common root cause for long clock tree construction is fixing DRV or inserting
buffer chain
Long run time can be caused by CTS spending effort in meeting skew and latency. A
good way to debug is to reduce the effort level by using the following settings:
setCTSMode verbose true # verbose true gives more detailed log message
setenv CKTDDEBUG 1
Set MaxSkew to 100ns
Set MaxDelay to 100ns
Re-run CTS
Another option is to try out multi-CPU CTS using the following settings:
setBetaFeature CTS-MT 1
setMultiCpuUsage localCpu <num>
Many narrow channels take time to evaluate a routing channel to route the clock nets.
Use forceClockTreeBlockage to block the whole block.