在innovus里面,clock path除了最后一级buffer跟reg的clock pin相连的那段net称为leaf net之外,其他的clock net都称为trunk net。
而我们为了减小trunk net上的net delay,我们会将net的线宽加大,并且尽量使用高层金属走线来减小net delay,而为了避免trunk net上出现串扰问题,我们会将net的间距加大,所以我们针对trunk net创建了一个双倍线宽双倍间距的ndr绕线规则。
而leaf net由于数量比较,并且net长度普遍较短,我们用常规的绕线规则就可以,不另外设置。如果这个也用双倍线宽和线间距的话,可能会导致绕线资源紧张问题的出现,但是带来的net delay并不会有太多的改善。
脚本命令如下:
1 2 3 4 5
| add_ndr -name cts_w2s2 -width_multiplier {M5:M8 2} -spacing_multiplier {M5:M8 2}
create_route_type -name trunk_rule -non_default_rule cts_w2s2 -top_preferred_layer M8 -bottom_preferred_layer M5
set_ccopt_property route_type trunk_rule -net_type trunk
|
1 2 3 4 5 6 7 8 9 10 11
| # 第1行:创建名叫 cts_w2s2 的 NDR 规则。 # 规定在 M5 到 M8 层,线宽放大 2 倍,间距放大 2 倍。 add_ndr -name cts_w2s2 -width_multiplier {M5:M8 2} -spacing_multiplier {M5:M8 2}
# 第2行:把上面这个 NDR 规则打包成一个叫 trunk_rule 的“绕线套餐”。 # 并且死死限制住:最高只能走到 M8,最低不能下穿 M5。 create_route_type -name trunk_rule -non_default_rule cts_w2s2 -top_preferred_layer M8 -bottom_preferred_layer M5
# 第3行:给 CCOpt (时钟引擎) 下达终极指令。 # “兄弟,长时钟树的时候,只要是 Trunk (主干线),全部给我强制套用这个 trunk_rule 套餐!” set_ccopt_property route_type trunk_rule -net_type trunk
|