回复 2# strongy
老哥,是下面这个吗?
不管是用那一种软件, 大致上的做法是:
1. 用 dummy metal shape填满整个 design
2. Sizing up Metal shapes by space rule
3. 把dummy metal shape有碰到第一步的结果的删除掉
Here is 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] |