微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC版图设计交流 > 有没有详细点的添加dummy metal 的脚本啊?

有没有详细点的添加dummy metal 的脚本啊?

时间:10-02 整理:3721RD 点击:
能有备注教如何修改的最好了新手上路还请大家多多指教啊

论坛里面有,我之前下载过,你自己找找,是用skill写的,他实现的方式还是比较清晰的,大概的做法是这样的:①用dummy方块铺满整个layout,函数foreach+dbCreateRect②再将dummy放大,函数dbLayerSize③判断是否与原来的图形是否重叠,函数dbGetTrueOverlaps,重叠则删除,函数dbDeleteObjeect,不重叠则保留。不过他的代码还没有完善,只适用于flat的layout。对于Heri的layout,结合calibredrv等工具也可以实现加dummy的效果。

老哥,是下面这个吗?
不管是用那一种软件, 大致上的做法是:
1. 用 dummy metal shape填满整个 design
2. Sizing up Metal shapes by space rule
3. 把dummy metal shape有碰到第一步的结果的删除掉
Hereis the example for a flatten design
============================================
cvid=geGetEditCellView();
DummySpace=8.0; dummy to dummy space rule
Shape2Dummy=10.0; Shapes to dummy space rule
metal1_shapes=setof(x,cvid~>shapes,x~>lpp==list("M1" "drawing"));
dummyWidth=15.0; Dummy shape width
dummyHeight=15.0; Dummy shape height
dummypitchX=dummyWidth+DummySpace;
dummypitchY=dummyHeight+DummySpace;
ColNumber=int((rightEdge(cvid~>bBox)-leftEdge(cvid~>bBox)+DummySpace)/dummypitchX);
RowNumber=int((topEdge(cvid~>bBox)-bottomEdge(cvid~>bBox)+DummySpace)/dummypitchY);
dummuList=nil;
x0=leftEdge(cvid~>bBox);
y0=bottomEdge(cvid~>bBox)
for(i 0 RowNumber
for(j 0 ColNumber
dummyId=dbCreateRect(cvid list("M1" "dummy") list(x0+j*dummypitchX:y0+i*dummypitchY x0+j*dummypitchX+dummyWidth:y0+i*dummypitchY+dummyHeight));
dummuList=append1(dummuList,dummyId);
)
)
SizedResult=dbLayerSize(cvid,list("M1" "drawing"),metal1_shapes,Shape2Dummy)
foreach(obj SizedResult
OverlapDummy=dbGetTrueOverlaps(cvid,obj~>bBox,list("M1" "dummy"))
foreach(dmy OverlapDummy
dbDeleteObject(dmy)
)
dbDeleteObject(obj)
)
[img][/img]

是这个,稍微改改就能用了

学习了,

非常感谢!

用calibredrv给hier layout加dummy怎么实现呢?

我们用的就是结合 calibredrv 的,run 完后导出 dummy gds,然后贴回原layout。然而没学过脚本,看不懂那个文件。

用calibre 加需要yield enhance license,这个都是fab 提供的加密脚本,你们能看到?

是这个,稍微改改就能用了

学习了

很需要,谢谢小编了 。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top