后端面试--每日一题(012)
How do you get better skew/insertion delays in CTS (Clock Tree Synthesis)?
如何得到更好的时钟树skew和insertion delay
难度:4
这些基本概念知道,但是怎么得到最优真想不出来~等待高手解答~
1. 用clock mesh是一种很好的办法. 不光能balance skew还能降低OCV的影响. 不过clock trunk的引入会带来功耗的增加. 需要在skew和功耗之间平衡.
2. bottom-to-up搭建clock tree 也是一种办法. 人为制定root pin, 将clcok tree分两步甚至更多去synthesis. 在某些规模较大的, 或结构特殊以致工具处理不好的case中, 比较有用. 这需要对时钟树结构有较全面了解.
利用这种方式还可以有效干预buffer所处位置, 在skew相近的前提下得到更小的功耗. 要知道gate 前和gate后可是大不相同的.
3. 手工微调. 脚本分析ctsrpt. 找到那些特立独行的ff单独处理.
四星问题. 班门弄斧一下. 请陈前辈指点.
期待答案
clock mesh 是一种方法。
如果是用普通的CTS的方法,可以从下面几个方面着手。不太可能一次就把CTS做得很好,要反复调试各种参数,达到最佳效果。
1)合理的clock root和through pin。这个看似CTS会从SDC自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leaf pin时,要特别注意
2)不要用太大或者太小的clock buf/inv
3)选用RC最小的金属层。如果上面RC最小的金属层已经被占用,比如RC最小的top,top-1已经不够clock net时,而top-2到layer2都是一样的RC时,可以选用layer3/4。为什么不用更高层哪?因为这样既照顾了layer2/1的pin,有不用太多的via到更高层
4)如果用double width clock wire,可以适当增大clock buf/inv的size
5)合理的max fanout。有时clock buf/inv的fanout可以超过max_fanout的限制
6)不要把skew设得太小
7)min_insertion_delay = 0ns
8)合理的transition time,不要太小
9)使用postCTS的CTS opt
10)做clock tree时,就直接把clock net走线完成
补充, 要去看一下longest path 路径,有的时候可能以为一个绕线导致整个main clock latency加大1ns以上,
高手!
问下各位多个clock 相互重叠的leaf pin是什么意思?还有就是double width clock wire怎么来设置?
谢谢!
小编你好,请问上面的最后一条是什么意思,可不可以具体点说说?
CTS时,就把时钟net都route了,不要等到detail route那一步
习惯做完CTS,post-opt,再cts route,再detail route
如果先cts route 再 post-opt,post opt的时候时钟buffer、inv可能被动掉,感觉不太好,要么删掉时钟 route,重新cts route。
cksynthesis命令后还要有单独对clock tree的route命令吗?要是只route clock net,应该怎么做呢?
初学者,请您多多指教!
初学者的话,用菜单,选route clock net
再学会从cmd log文件中找相应的命令
一般都是在做完cts后就对clock tree routing的,然后才是detail routing
谢谢!
请问小编,不知道初学者,应该使用什么软件开始比较好,谢谢
直接用最大众的,比如ICC,EDI
postcts时不会动时钟上面的buffer吧?
小编你好,同一个时序库做OCV的分析?