Innovus里如何插入GFILL和GA网表ECO流程

文摘   2024-07-31 13:55   上海  

〇、术语介绍

GA filler:gate array filler,与sparecell一样,提前撒的空白单元。

tile:如字面含义,GA filler是房间,tile是瓷砖。所以tile就像是铺地砖,用来填充GA filler的最小单元。

GA cell:eco时,新加的一类功能cell。这些特殊的功能cell都是以空白单元的最少单位tile为基础的,可以是一个tile大小,也可以是多个tile大小。eco时通过后端APR工具放置在GA filler里。如下图是一个GMUX2D1,占三个tile。

用GA filler做ECO,本质就是改变tile Metal1的连线,搭出需要的逻辑单元。

一、创建gacore的row

Floorplan阶段创建带gacore techsite类型的row。正常读取lef、eco lef,选取“core”来创建row,innovus同时会自动创建gacore。

在row->row pattern里,勾选gacore、去除core,可以看到gacore的row,以此来确认gacore创建成功。一般gacore的宽度是stdcell core的3~5倍。

二、插入GFILL的步骤

1、floorplan之后,摆放stdcell之前,可以先提前插入GDCAP。用于去除电源干扰、增强IRDrop。

2、在postRoute之后,用addFiller命令来插入一定比例GFILL,如下:

setFillerMode \    -add_fillers_with_drc falseaddFiller \    -cell {GFILLBWP GFILL2BWP GFILL3BWP GFILL4BWP GFILL10BWP} \    -util 0.6 \    -prefix GFILLER
在插GFILL的时候要注意,不要引起新的DRC问题,所以要设置add_fillers_with_drc为false。在addFiller时,要用参数-util来限制插完GFILL之后密度,防止密度太高时GFILL没有对齐gacore的问题,或者防止metal1占得太满影响后续eco routing绕通率。
另外,也要注意GFILL也不能插在place blockage的地方。M2有routing blockage的地方也不能插GFILL,因为这些地方M1的出pin引不出来。
3、最后插入普通FILL
addFiller \    -cell {FILL1BWP FILL2BWP FILL3BWP FILL4BWP FILL8BWP FILL16BWP FILL32BWP FILL64BWP}

三、ECO修改网表

1、人工修改。

新加的cell全部用GACell搭电路。只修改连线,不能删stdcell。可用的GACell类型可以到lib库、lef或者文档里查找。也可以用get_lib_cells来查找G开头的lib cell名称。

get_lib_cells G*
2、工具修改

如NanDigits GOF ECO。

四、Gate Array APR ECO网表流程

1、写出带GFILL的APR网表:old_pr.v

saveNetlist \    old_pr.v \    -includePhysicalCell {GFILLBWP GFILL2BWP GFILL3BWP GFILL4BWP GFILL10BWP}
2、写出def:old_pr.def
set dbgLefDefOutVersion 5.8defOut -floorplan -netlist -routing old_def.def
3、重新读入设计、eco网表、old def
source last_tapeout.enc.dat/digital_top.globalsset init_verilog eco.vinit_design
ecoDefIn old_pr.def \ -postMask \ -useGACells gacore \ -reportFile eco.rptapplyGlobalNets

用init_verilog指定eco网表。读入老def时,指定“-postMask”选项,和“-useGACells gacore”来指定用GFILL来做ECO,同时指定输出def log到eco.rpt里。

4、用ecoPlace来做递增式布局,把eco网表里新加的GACells映射到GFILL里。再用checkPlace来检查有无place问题。

# 删除GFILLdeleteFiller -prefix GFILL# place 新加的GACellsecoPlace -fixPlacedInsts true# ecoPlace -useGACells gacore# ecoPlace -useGAFillerCells {GFILLBWP GFILL2BWP GFILL3BWP GFILL4BWP GFILL10BWP}checkPlace

从上图可以看到ecoPlace之后,新加的GACells都已对齐到gacore的格子上。

再填回GFILL。

# 填回GFILLaddFiller \    -cell {GFILLBWP GFILL2BWP GFILL3BWP GFILL4BWP GFILL10BWP} \        -prefix GFILLER# 检查是否有gap,理论上应该刚好填满checkFiller

5、ecoRoute等后续正常APR流程


关于NanDigits Design Automation

Nandigits Design Automation于2007年成立,公司总部位于美国硅谷圣何塞(San Jose)。2016年10月在中国大陆成立销售和技术支持部门。我们是完整的芯片网表解决方案提供商,主要产品有网表功能ECO工具GOF ECO、逻辑等价性检查工具GOF LEC,网表调试工具GOF Debug、汽车电子功能安全验证的GOF Formal。到目前,我们已经帮助全球数十家芯片设计公司Tapeout超过100个项目。

欢迎评估试用

中国大陆

技术支持:support@nandigits.cn

美国总部

技术支持:support@nandigits.com

官方网站

https://nandigits.co

联系评估和试用

https://nandigits.cn/license/getlic.php


我们建了一个微信讨论群
扫码备注“加ECO群,公司+职位
欢迎关注NanDigits
完整的芯片网表解决方案提供商
☟☟点击“阅读原文”申请评估试用☟☟

NanDigits
专注芯片功能ECO、逻辑等价性检查、网表调试、形式验证等技术的研究,及其设计自动化的实现。