CLOCK
TREE SYNTHESIS
Pre
checks for CTS
1) The clock sources and generated
clocks should be defined in constraints
2) The block should be placed and optimized with out legalization errors,
check_legality -verbose
can be used
3) The blocks estimated QOR should be
as per requirements like congestion free, Timing, Max cap, Max tran
4) Active scenarions are defined
5) Vdd and Vss power nets are pre
routed
6) High fanout nets such as scan enable
are synthesized with buffers
Defining
the Clock Trees
The tool derives the clock trees based on
clocks defined in constraints of the block, If the derived clock do not meet
the requirements the we can define the clock clock tree with defining clock
tree exceptions which are derived from clock tree exception from ideal clock
latencies and handling endpoints with balancing conflicts.
The tool
derives the clock tree by tracing through the transitive fanout from clock root
to clock endpoints. In general tracing terminates when finds a clock pin of a
sequential cell or macro , but the clock traces through sequential cells if
they are ICG cells or their fanout drives a generated clock.
If Xor or
Xnor are used as ICG , Which are non unate . ie
the tool uses both positive and negative unate timing arcs for tracing
clock path, if this do not correspond to functional mode of block then we
use set_case_analysis
command to hold all nonclock inputs of cell at constant value by
which the cell forces into functional mode for clock tree synthesis.
Clock
defining
Create_clock or create_generated_clock
Check_clock_trees command used to verify the master sources are
correctly defined
If block
containing generated clocks ensure that master clock sources are correctly
defined as incorrect definitions can result in poor skew and timing QoR, and
even it can not balance the sink pins of the generated clock with sink pins of
its source, The tool even cannot synthesis a clock tree for generated clock to
its source.
Set_driving_cell -lib_cell mylib/CLKBUF [get_ports CLK1]
If the
clock root is an input port without an I/O pad cell. You must accurately
specify the driving cell of theinput port
If you
specify a week driving cell, the tool might insert extra buffers to try to meet
the clock tree design rule constraints such as max transition and max
capacitance, If you not specify driver cell then the tool assumes the port as
infinite drive strength
If clock
root is an input port with an I/O pad cell, you must accurately specify the
input transition time of the input port.
set_input_transition -rise 0.3
[get_ports CLK1]
set_input_transition -fall
0.2 [get_ports CLK1]
Clock
Endpoints:
Tool
identifies two types of endpoints a) sink pins b) Ignore pins.
Sink pins are the clock
endpoints that are used for delay balancing. Tool assigns an insertion delay of
zero to all sink pins and uses this delay during delay balancing. Sink pins
also referred as balancing pins.
During
clock tree synthesis the tool uses sink pins in calculation and optimization
for both design rule constraints and clock tree timing of skew and insertion
delay
The sink
pins are clock pind that drives a sequential cell , unless that cell drives a
generated clock, a clock pin on a macro cell,
Ignore pins are clock end
points that are excluded from clock tree timing calculations and optimizations.
The tool uses ignore pins only in
calculations and optimizations for design rule constraints. Then
endpoints of ignore pins are source pins of clock trees in the fanout of
another clock.
Source pins of clock trees in the
fanout of another clock
Nonclock
input pins of sequential cells
• Three-state enable pins
• Output ports
• Incorrectly defined clock
• Buffer or inverter input pins
that are held constant by using the set_case_analysis
command
Note:
The tool does not
synthesize a clock tree if its source is held constant by
using the set_case_analysis command.
• Input pins of combinational
cells or integrated clock-gating cells that do not have any
fanout or that do not have any enabled timing arcs
To verify that the tool has correctly identified the sink pins and ignore pins,
examine the
clock trees in the GUI,
If the
default sink and ignore pins are correct, you are done with the clock tree
definition.
Otherwise, first identify any timing settings, such as disabled timing arcs and
case analysis
settings, that affect the clock tree traversal. To identify disabled timing
arcs in the block,
use the report_disable_timing command.
To identify case analysis settings in the
block, use the report_case_analysis command.
Remove any timing settings that cause
an incorrect clock tree definition.
Comments
Post a Comment