Specifying the Clock Tree Synthesis Goal
DRC、skew、latency
Setting the Max transition time constraints
set_max_transition 0.2 -clock_path[get_clocks clk1]
set_clock_tree_options -max_transition 0.15 -clock clk1
作用是一样的,如果同时用这2条命令,那么clock比data path优先级更高。
Setting Clock Tree Routing Options
1.clk比data绕线要求更严格,正常工具绕线根据Tech file(Min widtn/space)
2.加shielding保护层,也是金属线,防止噪声干扰,提高稳定性
3.指定routing layer
不同layer,RC值不一样,层数越高,一般线宽越大,RC越小,cell 绕线层一般选高层。
4.Nondefault routing rules
5.已经绕好线的地方不去动
Specifying Routing rules
NDR rule在clock上用的最多,也可以用在data path上。clk绕线时有一些特殊的要求,对约束更严格,对信号更稳定,可以加宽spacing,加宽net。比如在Tech file给定最小线宽1,spacing 1,在clock上就可以定义线宽2,spacing 2,一般定义的都比Tech file大,是整数倍。增加线宽可以解决EM问题,而且RC小,delay也小。增大spacing让信号干扰降低,让信号更稳定。
设定NDR:define_routing_rule clk_rule(取的名字) -width{M1 0.28 M2 0.28 M3 0.28 M4 028 M5 0.28 M6 0.28 M7 0.28 M8 0.28} -spacing{M1 0.28 M2 0.28 M3 0.28 M4 028 M5 0.28 M6 0.28 M7 0.28 M8 0.28}
调用NDR:set_clock_tree_options -routing_rule clk_rule
Clock tree routing options
root net:clock source点到分叉点
sink net:直接连到时序逻辑的ck点
internal net
设置NDR rule都是分开设置,其中root net最严格,internal 次之,sink net最后
NDR一般在sink net设置成默认rule,因为如果线宽太宽会影响到D pin,Qpin,SE pin的走线。而且线宽太宽连接到窄的ck pin会有DRC问题。
Shielding Clock Nets
2种方式加shielding
- 做完CTS加shielding
- 在绕线之后加,有可能有的clock net无法加shielding,其实不加shielding也不见得有问题。
如果congestion严重可以先绕线再加shielding,区别是以绕线为主还是以timing为主。
shielding clock nets也有width和spacing NDR
Specifying Routing Layers
选择clock绕线层数
set_clock_tree_options -clock_tree CLK1 -layer_list{M4 M5}
Enable OCV Clustering
set_clock_tree_options -ocv_clustering 让common path变得更长
Embedded clock tree Optimization
CTO的时候,工具默认不会动到在CTS建好的buffer tree,要是想动到需要打开一些option,但是runtime可能更长。
允许cell重新摆放