在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2217|回复: 6

[求助] 自动金属密度Dummy——SKILL问题

[复制链接]
发表于 2022-3-15 11:06:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
之前论坛大佬@jurcy分享的自动金属dummy经测试出现了一些问题,请教各位前辈是否有思路帮忙解决;原帖链接:如何自动添加dummy——https://bbs.eetop.cn/thread-434638-1-1.html
主要问题是:简单的矩形金属可以识别能完成较好的dummy效果,而path、切角、大于等于90°拐角附近无法填充dummy。
                   逐行测试显示代码前半部分填满dummy无问题,问题主要是出在dummy和金属覆盖区域的删除处。
测试结果如图:
dummy.png
源代码如下:




  1. cvid=geGetEditCellView()
  2.    DummySpace=8.0; dummy to dummy space rule
  3.    Shape2Dummy=10.0; Shapes to dummy space rule
  4.    metal1_shapes=setof(x,cvid~>shapes,x~>lpp==list("M1" "drawing"))
  5.    dummyWidth=15.0; Dummy shape width
  6.    dummyHeight=15.0; Dummy shape height
  7.    dummypitchX=dummyWidth+DummySpace
  8.    dummypitchY=dummyHeight+DummySpace
  9.    ColNumber=int((rightEdge(cvid~>bBox)-leftEdge(cvid~>bBox)+DummySpace)/dummypitchX)
  10.    RowNumber=int((topEdge(cvid~>bBox)-bottomEdge(cvid~>bBox)+DummySpace)/dummypitchY)
  11.    dummuList=nil
  12.    x0=leftEdge(cvid~>bBox)
  13.    y0=bottomEdge(cvid~>bBox)
  14.    for(i 0 RowNumber
  15.     for(j 0 ColNumber
  16.          dummyId=dbCreateRect(cvid list("M1" "dummy") list(x0+j*dummypitchX:y0+i*dummypitchY          x0+j*dummypitchX+dummyWidth:y0+i*dummypitchY+dummyHeight))
  17.             dummuList=append1(dummuList,dummyId)
  18.       )
  19.    )
  20.    SizedResult=dbLayerSize(cvid,list("M1" "drawing"),metal1_shapes,Shape2Dummy)
  21.    foreach(obj SizedResult
  22.       OverlapDummy=dbGetTrueOverlaps(cvid,obj~>bBox,list("M1" "dummy"))
  23.       foreach(dmy OverlapDummy
  24.           dbDeleteObject(dmy)
  25.       )
  26.       dbDeleteObject(obj)
  27.    )


复制代码
希望各位大佬前辈指导一下


 楼主| 发表于 2022-3-15 11:28:18 | 显示全部楼层
自顶一下!
发表于 2022-3-15 12:34:14 | 显示全部楼层
本帖最后由 zlun1987 于 2022-3-15 12:39 编辑






  1. <blockquote>



复制代码

发表于 2022-3-15 12:58:22 | 显示全部楼层
填dummy的基本都是套路都是这样:预设一堆dummy小块,判断与原图形overlap的dummy删除,没有overlap的留下。
现在问题在于判断与原图形overlap,是用什么做参考?上面脚本中使用个各个 obj 的 bBox 作为图形的占用位置,如果是矩形没问题,多边形的情况下bBox就不合适了(如下图)。

image.png

可以试试这样,遍历dummy小块,与原图中的M1做dbLayerAnd判断,如果有新图形产生说明是存在真实覆盖的,这再去把dummy小块删除,同时dbLayerAnd产生的新图形也记得删除。
我没用skill去加过dummy,你可以试试可不可行。

 楼主| 发表于 2022-3-15 13:04:37 | 显示全部楼层


yangqi666 发表于 2022-3-15 12:58
填dummy的基本都是套路都是这样:预设一堆dummy小块,判断与原图形overlap的dummy删除,没有overlap的留下 ...


嗯嗯嗯,一说我瞬间懂了,谢谢巨佬。真是有问必答啊!!泪目了

发表于 2022-12-14 17:18:35 | 显示全部楼层
请问下有改好的代码可以分享下不
发表于 2022-12-21 15:13:11 | 显示全部楼层
两个脚本,一个是不带NODUMMY层的脚本,一个是识别DUMMY Block层的脚本。我把生成的dummy方块改成了金属层,不需要的可以把后面的删掉 AddDummy.zip (1.44 KB, 下载次数: 46 )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 12:50 , Processed in 0.028105 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表