本文档主题其实就是介绍如何修Timing。
首先明确什么时候开始fix Timing?下面这三种情况下都可以应用。
1、 deadline要到了
2、 PR tool已经尽力帮你做到最好还是不行
3、 Signoff STA timing 接近meet ,具体点讲就是:timing violation条数不能太多和slack不能太差;transition、fanout、capacitance、routing drc violation、IR drop、EM violation不能有一项很差。
Timing ECO 常用Strategy 和Skills
通常是先修setup,后修hold。
那先看下修setup的策略:
1、 remove noise on clock path if 存在,可以在PT里面查看clock path上的noise。具体指令如下所示:
PT 指令:report_timing -nos -path_type full_clock_expanded -crosstalk
通常launch clock上的delta那一栏代表noise,如果是正的就是具体的noise大小
capture clock上delta那一栏如果是负值就代表具体的noise值,如果超过5ps就应该要修。
那为何产生clock noise?主要原因有:小buffer推很长的线;clock和signal线靠太近;clock routing 频繁地换层。
如果noise数量只有几根 ,可以考虑手修,如果太多,就应该要回去重新run CTS。
下面介绍手修clock noise的方法:
(1) add shielding nets
(2) 增加clock 和其他nets的space
(3) 可以考虑用上层的金属走clock net,甚至可以用最top 层的metal,因为顶层的线noise最小;更甚至可以cut power stripe if 绕线真的已经完全挤不开空间可以这么尝试。
(4) sizeup driver buffer
(5) add repeater
2、 remove big noise on data paths if possible,当然这个针对的是big的太小的数量太多没法修干净。至于修的方法跟前面写的差不多。
3、 try to reduce delay on common data path。具体解法如下:swap cell vt 阈值电压from hvt/svt to lvt/ulvt;sizeup cell ; adding high drive strength buffer; routing with wide metal layer ;routing with top metal layer。
4、 use useful skew ;可以考虑加快launch clock,或者增加capture clock的delay。不过通常加快lauch clock的限制条件更多,当遇到ICG时是不能加快的,同时还要考虑走线长度,走线太长就得不到好处。还有一点需要特别注意就是加buffer垫延时,这个buffer加的位置如果前面都是INV,那一定要在隔偶数个INV插入,如果前面时buffer则无此注意事项。如果要大面积使用userful skew ,可以用capture clock加buffer的方法。Userful skew要注意的事项还是比较多的,所以一定慎用。
修hold方法:(一定要注意setup,因为前面setup已经修好)
1、 remove noise on clock path or data path if possible
2、 考虑将path上的low vt cell换成high vt cell,这个要换完整主要就得依靠工具了。
3、 size down cell ,不过还是要慎用,因为可能带来transition问题。
4、 都不行,最后只能add repeater,这里做两个提醒:一是如果没有足够的setup余量,可以考虑先增大setup 余量再来修hold;二是遇到density密度大,没什么空间加buffer时可以考虑将有slack 的path上面积大的cell换成小的cell,腾出空间插入buffer。当然要大量插单元还是应该让tool去做。
下面谈谈使用Timing ECO的原则注意顺序:(记住ECO只是用来小修小补,切忌伤筋动骨)
1、 能swap cell 的绝不add cell
2、 能sizeup/size down cell的绝不插buffer
3、 能够少插cell一定要少插,比如能在common path上差入就不要在各个endpoint电上差入
4、 能不route就不route,因为route一次时间要很久
5、 每步操作一定要注意drc问题,drc异常就要先停下来看下
6、 确保逻辑等价
在做timing ECO过程中,删除可以使用ecoDeleteRepeater,但是用deleteInst一定小心谨慎。对于routing metal的线要删除则可以随便删没关系。
在做完eco之后:对于新手可以用FV做检查;check timing ;check DRC
打开postroute database,在做ECO之前,下面的几个设置一定要设上,否则你会等崩溃掉。
1、 setEcoMode –reset
2、 setEcoMode –refinePlace false
3、 setEcoMode –update Timing false
4、 setNanoRouteMode –routeWithEco true
5、 setNanoRouteMode –routeSelectedNetOnly false
如果你用的ICExplore的flow fix setpu指令:
1、 loadECO ./ice_eco_netlist_setup
2、 source ./ice_eco_def_setup
在做ECO绕线之前,一定先做:
1、 checkPlace
2、 ecoPlace
3、 checkPlace
4、 ecoRoute
5、 checkRoute
6、 verify_drc
7、 defOut –floorplan –routing ./fix_setup.def
8、 saveDesign –relativePath –absoluteLibPath ./fix_setup.inn –compress(存.db)
文章评论(0条评论)
登录后参与讨论