热度 14| |
通常为了以后能实现functional ECO,要求在P&R流程加入spare cell。
Spare cell的选择
很多成熟工艺的标准元库没有特殊的ECO cell,spare cell只能使用普通的门。通常会选一些常用地门加少许DFF作为spare cell。我个人比较喜欢MUX,改一下连线可以很方便地实现AND, OR, INV功能。
新一些的标准元库有特殊的cell专用于ECO。例如ECO_DCAP,可以作为decap使用,ECO的时候改一下内部的M1连线,功能就变成了AND, OR, INV … 顺便说一下,P&R最后通常会加decap和dummy fill,需要比较一下ECO_DCAP和普通DCAP的capacitance/area。相同面积,如果普通DCAP的capacitance大一些,选择普通DCAP作filler。
Spare cell 的摆放
在Innovus里可以先用createSpareModule命令把几个MUX, AOI, NAND, INV加一个DFF,一个TIE cell 做成一个spare module。这里TIE cell 是必须的。Spare cell的输出可以floating什么都不不接,每个spare cell的输入必须用TIE cell的输出来tie low。
如果使用ECO_DCAP来做spare module,可以选择几种不同大小的ECO_DCAP组合在一起。
放置spare module可以采用不同的策略。
策略1:
createSpareModule …
placeDesign …
placeSpareModule …
这个策略的好处是design优先放置,缺点是spare module因为后放置,位置可能不理想,ECO的时候可能spare cell位置太远造成route太长。
策略2:
createSpareModule …
placeSpareModule … -stepx … -stepy … -offsetx … -offsety …
placeDesign
这个策略实际是把core area划分成网格,在每个grid的节点上放一个spare module。好处是在一定距离内保证由一个spare module可用,ECO route的上限也大致定下来了。
Spare cell 的数量
通常spare cell的面积总和取整个设计面积的3% - 4%左右。如果以后准备大改的,多放一些。通过ECO大改功能是缩短周期的好办法。Base layer不改,仅仅metal layer改一下,一个月就可以完成一个新片子。抢市场的时候,周期短优势就很大了。
补充1: ECO_DCAP和普通DCAP的区别
虽然两者都有decap的功能,内部结构是不一样的。普通DCAP无论是X2,X4还是X20,内部都是两个管子,区别只是管子的大小。普通DCAP即使重新连M1,也只能搭出一个INV。
ECO_DCAP X2,X4,X20内部layout是区别的,类似于并联的管子,X越多,并的管子越多。修改M1连线,可以实现更复杂的逻辑门。
补充2: ECO_DCAP/DCAP和dummy fill之间的平衡
ECO_DCAP/DCAP里的管子是接VDD,VSS的,有漏电。Dummy fill 没有管子或是没有M1,没有漏电。 如果设计对漏电有严格要求,加了足够的decap后,剩余空间用dummy fill填充。
haoshiyang: 嗯,是先createSpareModule 再placeSpareModule吗?但是我createSpareModule -moduleName mod1 -cell */spare*的时候 这个命令里的cell都是指定cell类型 不能指 ...
jake: 对的,先createSpareModule, 在placeSpareModule。createSpareModule只能指定cell, 不能指定instance。 如果网表里已经有spare,就不需要createSpareModule+pla ...
jake: 对的,先createSpareModule, 在placeSpareModule。createSpareModule只能指定cell, 不能指定instance。 如果网表里已经有spare,就不需要createSpareModule+pla ...
haoshiyang: 而且我之前在ICC里 是按照一个正方形 一个正方形摆的 spare cell,也就是一个区域摆一个module 这个module里有很多类型的spare cell,这样也方便eco。想问下 inn ...
jake: 如果知道网表里spare应该放在哪里,不妨手工放一下;如果不知道,让工具放一下,看看效果怎么样,不行再调整。 ...
haoshiyang: 知道怎么摆 摆哪呀 就是不知道手动摆用什么命令?因为ICC都是按照坐标摆放的,spread_spare_cell -bbox ,innovus 该用什么命令呀 ...
jake: placeInstance
一般用GUI操作更直观更方便
haoshiyang: 我看了下placeInstance这个命令 好像不能按照一个bbox的区域去摆spare cells啊,我想还是和ICC工具里面一样 按照一个区域去撒这些spare cell ...
jake: createGuide 应该可以