如前文所述,CTS(不包括post-cts)主要包含三个部分:一是config setting,二是create_clock_tree_spec(长树),三是ccopt_design(时钟网络优化)。
下文是我从cts log中截取的一些选段,摘的不全,也不定对,主要是为了说明一下cts的过程。
PnR分place、cts、post-cts、route、post-route等步骤;但其实这些过程都是交错在一起的。例如在logic synthesis和place阶段可以使用early cts去评估ppa的;在place阶段工具也会使用early global route进行ppa评估优化;cts阶段其实也涉及place和route;route阶段也会进行place和route;cts阶段还会单独绕时钟net。
config setting
1、设置active的path group(默认不修IO path的hold)。
2、设置ocv系数和clock uncertain等
3、设置是否开启useful skew
4、设置cts的ndr rule规则使用和clock tree的transition约束
5、设置长树的cell策略
6、设置长树的mode和corner
7、复位clock latency
8、设置don’t use, size_only等
9、report所有的config设置并生成报告,方便user检查和回顾
create_clock_tree_spec
1、检查power domain等信息
2、cts开始前做check_place设置,因为place如果质量不好,cts长树看的ppa是准确的
3、报告长树的setting
4、报告长cts上的sink point数量和gate数量
ccopt_design
1、将树重新合成到netlist中
2、将树上的cell place好
3、开始early route
5、进行place
6、更新route和place后RC参数
7、优化wns
8、优化tns
9、重新leagalize
10、优化静态功耗
11、优化drv
12、重新leagalize
13、重新early route
14、完成优化
15、写出data base