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

标题: 自动金属密度Dummy——SKILL问题 [打印本页]

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


   

        

                
  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.    )
            

   

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



作者: Lazymushroom    时间: 2022-3-15 11:28
自顶一下!
作者: zlun1987    时间: 2022-3-15 12:34
本帖最后由 zlun1987 于 2022-3-15 12:39 编辑


   

        

                


  1. <blockquote>

  2.         

   

    复制代码


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

( , 下载次数: 54 )

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


作者: Lazymushroom    时间: 2022-3-15 13:04


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


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


作者: benjude    时间: 2022-12-14 17:18
请问下有改好的代码可以分享下不
作者: gxc_cjgs    时间: 2022-12-21 15:13
两个脚本,一个是不带NODUMMY层的脚本,一个是识别DUMMY Block层的脚本。我把生成的dummy方块改成了金属层,不需要的可以把后面的删掉 ( , 下载次数: 73 )
作者: 三分刷烂篮网    时间: 2024-9-25 15:07
求最新代码
作者: YuSHL    时间: 2024-9-25 16:07


   
三分刷烂篮网 发表于 2024-9-25 15:07
求最新代码


AddDummyFill

作者: pg13    时间: 2024-11-29 15:21


   
YuSHL 发表于 2024-9-25 16:07
AddDummyFill


请问这是哪个工艺的

作者: YuSHL    时间: 2024-11-29 17:29


   
pg13 发表于 2024-11-29 15:21
请问这是哪个工艺的


用skill写的,不区分工艺,运行速度没有calibre SVRF写的那么快

作者: melody027    时间: 2024-12-13 16:32


   
YuSHL 发表于 2024-9-25 16:07
AddDummyFill


如何修改里面的关键参数?谢谢

作者: YuSHL    时间: 2024-12-13 18:30


   
melody027 发表于 2024-12-13 16:32
如何修改里面的关键参数?谢谢


试一下就知道了呀

作者: melody027    时间: 2024-12-18 18:20


   
YuSHL 发表于 2024-12-13 18:30
试一下就知道了呀


是在终端运行这个脚本吗?具体用什么命令运行的呀?感谢解答~

作者: YuSHL    时间: 2024-12-19 09:12


   
melody027 发表于 2024-12-18 18:20
是在终端运行这个脚本吗?具体用什么命令运行的呀?感谢解答~


ciw load: load("/path/...../AddDummyFill.il")

ciw input: AddDummyFill()

作者: miamiamia    时间: 2024-12-20 10:43

出现下图提示,是因为618才支持吗?
( , 下载次数: 18 )





欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5