首先,设置CTS要用的金属层,通常选上层金属,电阻更小。比如四层的设计,选M3和M4,三层的设计,选M3和M2。
add_ndr -name CTS_1W1S -width {M2 0.24 M3 0.4} -spacing {M2 0.24 M3 0.4} -generate_via
create_route_type -name top_rule -non_default_rule CTS_1W1S -top_preferred_layer M3 -bottom_preferred_layer M2
create_route_type -name trunk_rule -non_default_rule CTS_1W1S -top_preferred_layer M3 -bottom_preferred_layer M2
create_route_type -name leaf_rule -non_default_rule CTS_1W1S -top_preferred_layer M3 -bottom_preferred_layer M2
set_ccopt_property route_type -net_type top top_rule
set_ccopt_property route_type -net_type trunk trunk_rule
set_ccopt_property route_type -net_type leaf leaf_rule
设置CTS上要用的clock buffer、inverter、icg等cell,通常选用中等驱动能力的。驱动能力太小延时大,驱动能力太大功耗又高,折中一下。
set_ccopt_property buffer_cells {
CLKBUFV4_9TR
CLKBUFV6_9TR
}
set_ccopt_property inverter_cells {
CLKINV4_9TR
CLKINV6_9TR
}
set_ccopt_property clock_gating_cells {
CLKLANQV4_9TR
CLKLANQV6_9TR
CLKLAHQV4_9TR
CLKLAHQV6_9TR
}
设置CTS的指标,max trans、skew等,如下。
set_ccopt_property use_inverters true
set_ccopt_property target_max_trans 350ps
set_ccopt_property target_skew 350ps
set_ccopt_property update_io_latency false
接下来,生成CTS spec,运行CTS综合。
create_ccopt_clock_tree_spec -file cts.spec
source -echo -verbose cts.spec
clock_opt_design
最后,产生CTS的structure报告,方便debug。
report_ccopt_clock_tree_structure \
-expand_below_logic \
-expand_generated_clock_trees inline \
-show_sinks \
-update_timing \
-file cts_struct.rpt