100% found this document useful (1 vote)
72 views4 pages

Clock Tree Synthesis Guide and Commands

Uploaded by

siva suryam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
72 views4 pages

Clock Tree Synthesis Guide and Commands

Uploaded by

siva suryam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

CLOCK TREE SYNTHESIS:

Inputs of CTS:
CLOCK SPEC
NETLIST
UPF
LEF and TEC files
.lib
MCMM

CHECKS:
 Placement is completed without congestion
 Power and ground nets are Prerouted
 Minimum timing
 High fanout synthesis

Prerequisites for Clock Tree Synthesis


Before performing clock tree synthesis tool identifies the clock sources with
create_clock ,create_generated_clocks
Before Performing Clock tree synthesis verify the placement is legal or not
Check_legality –verbose it checks the congestion .congestion is high it leads
timing issues in later stages.

Verifying the Clock Trees


 check_clock_trees -clocks [get_clocks CLK]
command checks for the following issues:

• Clock (master or generated) with no sinks

• Loops in the clock network

• Multiple clocks reach the same register because of overlapping clocks, but multiple clocks-per-
register propagation is not enabled

• Ignored clock tree exceptions


• Stop pin or float pin defined on an output pin

• Buffers with multiple timing arcs used in clock tree references

• Situations that cause an empty buffer list

Identifing the clock roots by create_clock command


set_driving_cell -lib_cell mylib/CLKBUF [get_ports CLK1 ]
it is used to specify the driving cell to the if the root is a CLK port to meet the
DRVs
If the 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]

Setting Clock Tree Design Rule Constraints


 set_max_transition 0.20 -clock_path [get_clocks CLK]
 set_max_capacitance 0.6pf -clock_path [get_clocks CLK]

Tool identifies the clock endpoints as sink pins and


ignore pins
During CTS sink pins are used for calculations and optimizations and design
rule constraints,
but ignore pins are not used for skew balncing and optimization only for
meeting the Design rule constraints
icc2_shell> set_clock_balance_points -clock [get_clocks CLK] \-
consider_for_balancing false -balance_points [get_pins U2/A]
# user defined explicit ignore pin

Setting Don’t Touch Settings on clock


network
 To set a don't touch setting on a clock tree, use the
set_dont_touch_network command
 icc2_shell> set_dont_touch_network -clock_only [get_pins
pin_name]
 set_dont_touch [get_cells cell_name] true #sets don’t touch attribute
on cells to prevent CTS optimizatin
 set_dont_touch [get_nets -segments net_name] true ##sets don’t
touch attribute on nets to prevent CTS optimization

Specifying the Clock Tree References


The buffer and inverter cells that can be used to build a clock tree and the
reference cells of the preexisting gates of the clock tree are referred to as clock
tree references.
 set_lib_cell_purpose -include cts
The library cells in the reference list do not have a dont_touch attribute If
library cells have the dont_touch attribute set on them, they are not used by
clock tree synthesis even if you specify them as clock tree references .

 set cts_cells list_of_cells


 icc2_shell> set_lib_cell_purpose -exclude cts [get_lib_cells]
 icc2_shell> set_lib_cell_purpose -include none [get_lib_cells $cts_cells]
 icc2_shell> set_lib_cell_purpose -include cts [get_lib_cells $cts_cells]
 Therefore, you must manually specify the buffers and inverters to use for
clock tree synthesis, as shown in the following example:
 icc2_shell> set_lib_cell_purpose -include cts \ {tech_lib/clk_buf*
tech_lib/clk_inv*}
 icc2_shell> derive_clock_cell_references
 icc2_shell> synthesize_clock_trees

Restricting the Target Libraries Used


You can restrict the libraries used during clock tree synthesis for the top
level or a lower level of the logical hierarchy of a design
 icc2_shell> set_lib_cell_purpose -include cts \ {HVT_lib/buf1 HVT_lib/buf2
LVT_lib/buf1 LVT_lib/buf2}
 this command include cells for CTS for specific library
 icc2_shell> set_target_library_subset -clock {LVT_lib} \-objects
[TOP/TSK_BLK]
this commands set the target library as LVT_Lib for lower level Block
TOP/TSK_BLK
 icc2_shell> set_app_options \ -name
[Link].enable_target_library_subset_opt -value 1

Setting Skew and Latency Targets for low frequency designs. Decrease
the ,power ,area,run time of the design

 set_clock_tree_options –target_skew & -target_latency

Common questions

Powered by AI

Manually specifying the buffers and inverters for clock tree synthesis is necessary because if the library cells have a don't touch attribute set, they are not utilized automatically by the synthesis process. By using commands such as set_lib_cell_purpose -include cts {tech_lib/clk_buf* tech_lib/clk_inv*}, designers can ensure that only the designated cells are used, avoiding unintended optimization mismatches and ensuring symmetry and balance in clock network paths .

In the context of CTS, sink pins are endpoints of the clock tree used in timing calculations and optimization processes to ensure that the clock signal reaches all required destinations. Conversely, ignore pins are defined as those that the tool does not use for skew balancing and optimization during CTS. Their exclusive role is meeting design rule constraints without affecting the intrinsic structure of clock paths. This differentiation allows designers to focus optimization efforts on critical parts of the clock network while maintaining necessary constraints, ensuring efficient clock tree performance .

Designers control the libraries used during clock tree synthesis by specifying which library cells are permissible for use with the command set_lib_cell_purpose -include cts. Additionally, they can restrict library usage for specific design levels using set_target_library_subset -clock. By including specific cells or libraries, like in set_lib_cell_purpose -include cts {HVT_lib/buf1 LVT_lib/buf2}, designers ensure optimal cell selection conducive to design constraints. This control over library selection allows for targeted optimization, improving the circuit's power, area, and timing characteristics .

The command check_clock_trees -clocks [get_clocks CLK] is used to verify the integrity of clock tree structures. It checks for issues such as clocks with no sinks, loops within the clock network, the presence of multiple clocks reaching the same register without multi-clock-per-register propagation enabled, and clock tree exceptions that have been ignored. It also identifies stop pins or float pins defined on output pins, buffers with multiple timing arcs, and situations leading to an empty buffer list. Addressing these issues is essential for a functioning clock tree that does not introduce design errors or deficiencies .

Prior to initiating Clock Tree Synthesis, it is crucial to identify clock sources using commands such as create_clock and create_generated_clocks, to ensure that the basic clock definitions are in place. Additionally, checking the placement legality and congestion is necessary using Check_legality –verbose, as high congestion can lead to timing issues in later stages. Ensuring these prerequisites are met is vital for an efficient CTS process, as it prevents potential complications, such as timing violations and increased skew, later in the design stage .

The set_dont_touch_network command is used to prevent certain components within the clock tree network from being optimized by the clock tree synthesis process. By setting don't touch attributes on cells and nets, using commands like set_dont_touch [get_cells cell_name] true, designers can maintain specific configurations and characteristics of the clock network that are critical for the design's stability or performance. This ensures that important design constraints are preserved during optimization .

Setting clock roots in Clock Tree Synthesis involves designating the initial driving cell or input port of the clock network using commands like set_driving_cell. This step is important because it defines where the clock signal originates and how it should propagate through the design. Accurate specification ensures that transition times are correctly set, which affects the clock's integrity throughout the circuit. For an input port clock root associated with an I/O pad cell, setting input transition times (e.g., set_input_transition -rise 0.3 [get_ports CLK1]) ensures signals are delivered consistent with expected performance, minimizing skew and latency .

Design rule constraints in CTS are crucial for ensuring the final design meets specific performance and reliability criteria. These constraints include limits on transition times and capacitance, which control the speed and power consumption of the clock network. For example, the command set_max_transition 0.20 -clock_path [get_clocks CLK] restricts the maximum permissible transition time, while set_max_capacitance 0.6pf -clock_path [get_clocks CLK] limits the maximum capacitance, preventing overloading of the clock network. By applying these constraints, designers can optimize the clock tree's performance to reduce skew and latency, accommodating critical design specifications and improving overall effectiveness .

High congestion during the placement phase of Clock Tree Synthesis can lead to significant timing issues in later design stages. This is because congestion can cause routing detours, thereby increasing the path lengths and intrinsic capacitance, which ultimately leads to higher propagation delays and increased skew across the clock paths. Consequently, without effective early placement optimization to mitigate congestion, the clock network may struggle to meet timing closure, thus affecting the performance and reliability of the eventual design .

Setting skew and latency targets in low-frequency designs is critical because it directly influences the efficiency of clock distribution across the circuit. By establishing these targets, designers can control timing, reduce unwanted delays, and minimize power consumption, which are notably pronounced at lower frequencies due to naturally higher tolerances for additional delay and power consumption. This optimization can also reduce design run-time, further enhancing performance and ensuring the circuit meets overall design goals without unnecessary excess in power or skew .

You might also like