Professional Documents
Culture Documents
ICC2
专栏收录该内容
38 篇文章
51 订阅
订阅专栏
clock_opt通过-from和-to分为build_clock,route_clock和final_opt,默认从build_clock
到final_opt顺序执行,对应的操作分别是时钟树综合与优化(skew、latency与面积,max
transition与max cap);时钟树detail route;基于propagated clock latency的优化,时序
优化、DRV优化、面积与功耗优化,以及legalize placement。build_clock时钟树综合采取
Gate-By-Gate CTS的方法,即从后往前分段长tree,先balance ICG到sink pin,再balance
ICG到ICG,最后是root到ICG。
关于clock_opt常用命令及用法如下:
报告常见问题:
CTS-914 set_input_transition超过set_max_transition限制;
report_clock_setting
1/8
2、set_clock_tree_options
## target latency约束最小latency
#是否要balance,以及balance的leaf pin。
set_clock_tree_options -offset 0
timing_type :max_clock_tree_path;
二者大小不同产生天然的skew,在report_clock_qor时对应的pin的latency报告里会多出
一个lib cell clock balancing offset的值,要在set_clock_balance_points里用-offset设置成
0,这里用-delay也行,再去报告report_clock_qor时lib cell clock balancing offset就变成
了clock balancing offset 0了
#希望tree做短用正值,希望tree做长用负值
#指定clock tree可以优化的cell 类型
4、ccd
传统的CTS标准是latency、skew和area,使用ccd会根据sink之间的时序关系调整latency,
clock_opt阶段使用ccd会工具会默认将cts.compile.enable_local_skew和
cts.optimize.enable_local_skew设为true来执行local skew的优化。
2/8
set_app_options -name clock_opt.flow.enable_ccd -value true
#分别限制latency减少和增加的值,这里是0.2ns和0.4ns,默认情况下clock_opt阶段没
有限制
#减少资源浪费,跳过in2reg这种path group
#在clock_opt build_clock阶段通过优化WNS最差的300个endpoint来优化TNS
#默认是true,工具会优化boundary时序,为了把run time用于优化内部时序可以设false
# 这里不推荐在clock_opt阶段修hold
#优化scan chain改善hold时序,默认为false
6、clock route
#控制synthesize_clock_trees使用global route,绕线更接近route阶段,时序分析更准
确,这里如果使用clock_opt命令默认使用global route。
3/8
7、NDR rule
关于默认的root、sink,internal定义如下:
internal Internal nets in the clock tree (all nets except the
可以看到root的定义是连接clock root的net,如图1。
用户也可以自定义root type,通过:
set_clock_tree_options -root_ndr_fanout_limit 300
fanout超过指定数量的net也被定义为root,如图2:
4/8
图2.user specified root type
## 优化WNS关键路径的NDR rule,软约束
## 优化关键路径层次,改善时序
8、spacing rule
#控制CKBUFXX之间的spacing rule
9、get_clock_tree_pins
用来抓clock tree上的cell pin,包括root、create clock和generate clock的clock source
pin、ICG clock pin、 clock tree上的组合逻辑、CTS过程中插入的buf和inv,以及sink
pin,也可以-clock或者-from -to报指定范围的clock pin。
## 所有的sink pin
## cts阶段插的buffer和inverter
5/8
10、dont touch clock tree
#先做func然后设dont touch,接下来一起CTS时func就不会被动到。
#给net设dont touch
report_clock_balance_groups
remove_clock_balance_groups group
12、skew group
6/8
split_clock_cells -cells [get_cells U1/ICG*]
current_scenario $sce
remove_clock_trees
16、report_clock_qor
7/8
report_clock_qor
## 报告latency 最长和最短的path
8/8