EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: CTS后DRC violation无法修复,显示dont_touch [打印本页]

作者: dennisi123    时间: 2014-9-13 19:53
标题: CTS后DRC violation无法修复,显示dont_touch
大家好!今天用ICC做完CTS后用report_constrain -all_violations发现有很多max_fanout violation,报告如下:                             Required        Actual
   Net                        Fanout         Fanout          Slack
   -----------------------------------------------------------------
   CLK_G1B12I84 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I119 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I136 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I149 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I165 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I178 (dont_touch)
                               15.00          35.00         -20.00  (VIOLATED)
   CLK_G1B12I55 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   CLK_G1B12I63 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   CLK_G1B12I133 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   CLK_G1B12I168 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   CLK_G1B12I179 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   u2/CLK_G1B12I147 (dont_touch)
                               15.00          34.00         -19.00  (VIOLATED)
   CLK_G1B12I102 (dont_touch)
                               15.00          33.00         -18.00  (VIOLATED)
   CLK_G1B12I105 (dont_touch)
                               15.00          33.00         -18.00  (VIOLATED)
   CLK_G1B12I141 (dont_touch)
                               15.00          33.00         -18.00  (VIOLATED)


。。。。。。。。。
我在其中选择了一个net 然后ctrl+R看到其属性中的dont_touch是false的,如下:


                               
登录/注册后可看大图
chrt035工艺没有出现过这种情况,现在用的是CSMC035工艺,脚本是一样的。ICC工具为什么认为是dont_touch呢?求前辈指点!谢谢!
作者: ICSYS    时间: 2014-9-13 21:47
综合网表里怎么设置max_fanout的?
作者: trippa    时间: 2014-9-14 09:32
remove_ideal_network
作者: trippa    时间: 2014-9-14 09:33
回复 2# ICSYS

set_max_fanout 32 [current_design]
作者: dennisi123    时间: 2014-9-14 12:30
本帖最后由 dennisi123 于 2014-9-14 12:37 编辑

回复 2# ICSYS

logical
   综合时候没有设置max_fanout,ICC做apr的时候这个constraint应该是从logic library来的吧,是必须要满足的吧
作者: dennisi123    时间: 2014-9-14 12:33
回复 3# trippa


   这个命令我用过了,做完以后还是上面这种情况。我的CTS命令如下:remove_clock_tree -clock_trees CLK
remove_ideal_network -all
set_propagated_clock [all_clocks ]
set_input_transition -max -rise 0.5 [get_ports CLK]
set_input_transition -max -fall  0.5 [get_ports CLK]
set_input_transition -min -fall  0.5 [get_ports CLK]
set_input_transition -min -rise   0.5 [get_ports CLK]
set_clock_tree_options -max_transition 0.5
set_app_var cto_enable_drc_fixing true
set_clock_tree_options -target_early_delay 0.7 -target_skew 0.2
remove_clock_tree -clock_trees CLK
define_routing_rule MY_CLK_RULE -widths {METAL1 0.6 METAL2 0.6 METAL3 0.6 METAL4 0.6} -multiplier_spacing 2.0
set_clock_tree_options -clock_trees [all_clocks ] -routing_rule MY_CLK_RULE
set_clock_tree_options -use_default_routing_for_sinks 1
clock_opt -no_clock_route -only_cts
set_propagated_clock [all_clocks ]
update_clock_latency
report_clock_timing -type skew
report_clock_timing -type latency
set_fix_hold [all_clocks ]
extract_rc
clock_opt -only_psyn -no_clock_route -area_recovery
route_zrt_group -all_clock_nets -reuse_existing_global_route true -stop_after_global_route true
extract_rc
report_constraint -all_violators
作者: dennisi123    时间: 2014-9-14 12:43
回复 3# trippa


  您好!我对比了下之前用相同命令用chrt做的layout,发现原来做的时候CLK网络的dont_touch是unknown,我把这个属性移除掉再试试
作者: icfbicfb    时间: 2014-9-14 14:53
.35 um 工艺需要 fanout limit为15么,太小了吧,50都行,

跑的很慢的,
作者: dennisi123    时间: 2014-9-14 15:22
回复 8# icfbicfb


   版主您好!我改成50再试试,不过就是不太明白为什么工具给出了(dont_touch)属性,因为在看属性的时候这个选项已经是false了。我觉得可能是因为dont_touch的问题导致了max_fanout违约。
作者: trippa    时间: 2014-9-14 18:58
回复 7# dennisi123


   需要在设计placement之前去掉dont_touch.
作者: dennisi123    时间: 2014-9-15 11:38
回复 10# trippa


   您好!我在placement之前用了这个:remove_attribute [get_nets * -all] dont_touch 但是做完CTS之后还是有max_fanout违约,提示和之前是一样的。
作者: trippa    时间: 2014-9-16 11:14
回复 11# dennisi123


   有这个是正常的。修修嘛。在SOCE下,set fixFanoutLoadMode true optDesign -postCTS -drc
作者: dennisi123    时间: 2014-9-16 12:46
回复 12# trippa


   回复 12# trippa


   我用set_clock_option -max_fanout 15之后就没有fanout violation了。我用的是ICC,SOCE不是很懂,不过命令是类似的,我也用类似的命令修过,不过还是修不动,工具会报dont_touch
作者: 小干爹z2z    时间: 2014-9-16 14:17
LZ你做完cts clock tree 会被mark 成cts_synthesized ,这个就是它的dont_touch 的reason
你可以get_attribute [get_nets $net] dont_touch_reasons
然后用 list_dont_touch_type 去查看dont touch的原因的意思。
这个应该就能解决你dont_touch的原因了
作者: dennisi123    时间: 2014-9-16 15:01
回复 14# 小干爹z2z


   你好!我按照你的方法找到dont_touch_reasons是cts_synthesized,具体解释就是Net is synthesized with clock tree synthesis。我想去掉dont_touch_reasons这个属性,但是提示static or derived attribute不能去掉。怎么能把这个属性去掉让工具自动修呢?
作者: 小干爹z2z    时间: 2014-9-16 16:14
回复 15# dennisi123


   LZ 你好 这个是做完CTS必要的这个dont_touch 属性, 为了防止data path的优化引擎去改动clock tree。但是并不会影响CTS的engine去修复与优化,所以你在CTS之后一般不会去掉, 而是如果发现没有这个属性 ,需要mark上去。当然也是有方法可以remove掉的 ,通过 mark_clock_tree这个command,具体请看man page。
mark这个dont_touch的属性,也是需要这个command。
作者: damonzhao    时间: 2014-9-16 16:23
你的树里的clk单元是多大?
还有transition设的多大?
作者: dennisi123    时间: 2014-9-16 16:38
回复 17# damonzhao

transition time设为1ns,max_fanout没有设置,工具默认为2000吧
作者: damonzhao    时间: 2014-9-16 16:45
回复 18# dennisi123


   clkbuf单元是多大的?
作者: dennisi123    时间: 2014-9-16 18:51
回复 19# damonzhao


   没有专门的clkbuff,用的是buffda,尺寸大概是22*14u
作者: dennisi123    时间: 2014-9-16 18:54
回复 16# 小干爹z2z


   我懂您的意思了,所以cts_synthesized属性还是保留比较好。工具对max_fanout修不了可能是因为它没有办法改变clock tree的结构,只能修改buff的大小和位置,是这样吗?
作者: damonzhao    时间: 2014-9-17 09:38
回复 20# dennisi123


   只有这一种buf么?换一个驱动能力大的试试。

你的transition 1ns,我觉得随便做做问题不大,但是你的这个buf,应该是最大驱动能力就是15,所以换个大驱动能力的完全搞定。你试试看
作者: 995331220    时间: 2014-9-17 11:15
dont touch 为true的时候 才是dont touch
作者: 小干爹z2z    时间: 2014-9-19 09:54
compile_clock_tree 默认应该吧你DRC 修复的 ,有变量可以控制optimize_clock_tree 也可以修复DRC。
先看看你的setting对不对吧 。如果有gate cell 你可以试试split_clock_net
作者: dennisi123    时间: 2014-9-19 13:03
回复 24# 小干爹z2z


   你好!我在cts用的是icc student guide里的三个命令:1 clock_opt -no_clock_route -only_cts    2 clock_opt -only_psyn -no_clock_route -area_recovery  
3 route_zrt_group -all_clock_nets -reuse_existing_global_route true -stop_after_global_route true。
请问这个三个命令与compile_clock_tree有什么区别?我在optimize_clock_tree之前已经set_fix_hold [all_clocks],优化后还是有min_cap violations,这个violation在PT里也有,会对版图有影响吗?谢谢!
作者: fangwang85    时间: 2014-9-19 16:30
我自己的理解,不对的地方请指正。compile_clock_tree就是建立时钟树的,也可以对reset等对skew有要求,建立buf tree ,clock_opt是个打包的命令。可以cts cto extract rc route
作者: fangwang85    时间: 2014-9-19 16:41
回复 11# dennisi123


   LZ placement之前,为了工具不插入buf,dont touch的属性不能去吧?在cts前去掉比较合适吧
作者: dennisi123    时间: 2014-9-19 17:11
回复 27# fangwang85


   嗯,我在CTS之前都是带着dont_touch的,在cts的时候好像也是有dont_touch的,不过ICC在CTS的时候好像可以ignore dont_touch。我记得是在哪见过这个说明的
作者: diyangguang    时间: 2014-9-19 22:52
都是高手
作者: fangwang85    时间: 2014-9-20 08:02
回复 28# dennisi123


   是的,我lab guide上也看到了,compiler_clock_tree可以ignore dont touch的属性,clock_opt倒是没有看到有这方面的说明
作者: dennisi123    时间: 2014-9-20 13:50
回复 30# fangwang85


   你好,我在手册里查到如下:By default, the tool ignores the dont_touch attribute on cells and nets during clock treesynthesis and clock tree optimization.

关于clock_opt的描述:
Optimizes the clock trees.
      During clock tree optimization, the tool uses the optimization techniques, such as buffer
relocation, buffer sizing, delay insertion, gate sizing, and gate relocation, to further
improve the skew.
Note:
      During clock tree optimization, the tool ignores the dont_touch attribute on cells and
nets. To prevent sizing of cells during clock tree optimization, use the
      set_clock_tree_exceptions -dont_size_cells command.
      You can also run clock tree optimization as a standalone process, using the
optimize_clock_tree command, as described in “Performing Clock Tree Optimization”
所以这这两个命令都是ignore dont_touch的
作者: fangwang85    时间: 2014-9-24 14:51
回复 31# dennisi123


   恩,是的。我遇到跟你同样的问题,只不过是信号线,signal的,通过mark_clock_tree 解决了
作者: xylyc521    时间: 2014-9-29 09:27
回复 32# fangwang85


   只要是transition 没问题      fanout  无所谓了
作者: dennisi123    时间: 2014-9-29 18:43
回复 33# xylyc521


   嗯,不过还是尽量能修就修吧,我流片机会少,不能冒风险啊
作者: fangwang85    时间: 2014-9-29 21:51
回复 33# xylyc521


   我遇到的就是tran的错误,类型差不多,可以通过这个方法修正
作者: 小干爹z2z    时间: 2014-9-30 13:28
回复 25# dennisi123


   clock_opt -only_cts -no_clock_route = compile_clock_tree  + optimize_clock_tree + balance_inter_clock ....
workshop上应该有讲的啊
作者: dennisi123    时间: 2014-9-30 16:03
回复 36# 小干爹z2z


   非常感谢!workshop上确实写了,只是自己看的太粗心,没有注意到。先摘录如下:Besides using clock_opt to perform both phases,they can also be run separately using the following atomic commands:
Phase 1 : compile_clock_tree
Phase 2 : optimize_clock_tree




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.4