Spare Cell和ECO Cell的区别和具体实现方法
Spare Cell
Spare Cell是在pre-palcement阶段(或RTL阶段就例化进去)需要提前插入的冗余逻辑单元。在比较老的工艺节点中,往往没有提供ECO Cell,所以那时候用的比较多的就是使用spare cell来做Function ECO。
当我们发现设计中有一些设计缺陷需要做postMask ECO发生时(芯片Tapeout后),修改逻辑单元是通过使用spare cell实现的,这种方法不需要修改任何bask layer ,只需要修改metal layer就可以实现逻辑关系修改。
为了确保做function ECO 时有足够多逻辑功能cell可用,我们一般建议使用若干种能够搭建出大部分逻辑功能的cell。
所以spare cell一般包含基本的standar cell ,比如inverter, buffer, nand, nor, and, or, xor, mux, FF等等。spare cell在不使用的情况下,没有任何逻辑功能,类似于Filler。它的输入和输出pin都没有接任何逻辑!
因此,spare cell的input pin需要通过tie cell连接到VDD或者VSS,输出pin悬空即可。当需要修改逻辑时,断开input pin的连接,然后重新进行eco的连接。
如何插入Spare Cell?
这里分享T 28nm工艺中所用的Spare cell insertion Flow。大家在自己的项目中可以根据这个来做一些调整和修改。
ICC2:
insert_sapre_cells -lib_cells {SDFD4BWP40P140 SDFD4BWP40P140 AN4D8BWP40P140 AN4D8BWP40P140 OR3D4BWP40P140 OR3D4BWP40P140 XOR3D2BWP40P140 XOR3D2BWP40P140 MUX3ND2BWP40P140 MUX3ND2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 INVD8BWP40P140 INVD8BWP40P140 INVD8BWP40P140} -cell_name spares -num_instance 4 -tie -skip_legal
spread_spare_cells\
-bbox {{10.8 20.3} {40.4 50.1}} [get_cells spare*]
Innovus:
createSpareModule -cell {SDFD4BWP40P140 SDFD4BWP40P140 AN4D8BWP40P140 AN4D8BWP40P140 OR3D4BWP40P140 OR3D4BWP40P140 XOR3D2BWP40P140 XOR3D2BWP40P140 MUX3ND2BWP40P140 MUX3ND2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 BUFFD2BWP40P140 INVD8BWP40P140 INVD8BWP40P140 INVD8BWP40P140} -moduleName spare_cell_module
placeSpareModule -moduleName spare_cell_module -stepx 100 -stepy 100 -util 0.6
Spare Cell or ECO Cell?
从上面介绍我们知道Spare Cell其实就是一个具备特定逻辑功能的标准单元,只不过我们并没有把它的input和output做任何逻辑连接。所以在数字IC后端实现中我们需要对Spare cell的input做tie 0或tie1处理。这里就意味着这些spare cell的input pin都需要做绕线,连接到tie cell上。后续做function eco时需要把用到的spare cell的input net断开并把这部分net shape删掉。所以整体处理起来会比较麻烦。
ECO Cell是foundary提前把base layer都做好,金属连接并没有做好,后续可以根据实际的function需求来替换成我们设计所需要的工艺库中的Function ECO Cell。所以这个ECO cell是一种特殊的Filler Cell,它不需要做tie1或tie0的操作,只不过它的base layer和后续的Function ECO cell是一样的。
但使用ECO Cell会改动到Contact这一层(CO层)base layer。当然metal layer改动和使用spare cell是一样的,需要根据实际项目的eco需求最终确定需要改动多少层metal layer(绕线和ECO cell替换成Gcell function cell所用的metal layer)。