找回密码
 注册
关于网站域名变更的通知
查看: 756|回复: 1
打印 上一主题 下一主题

过孔重叠检查 直接源码复制上来了 为了没有权限下载考虑 需要的可以复制去 PS 非原创

[复制链接]
  • TA的每日心情
    开心
    2019-11-20 15:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2015-10-28 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    本帖最后由 l8877l 于 2015-10-28 20:48 编辑


    axlCmdRegister("sv" `Stack_Vias)        
    procedure( Stack_Vias()
             let(
                        (vias
                                lx
                                ly
                                ux
                                uy
                                StackVias
                                logfile
                                rep_file
                        )
             axlClearSelSet()
             axlVisibleDesign(nil)
             axlVisibleLayer( "VIA CLASS/TOP" t)
             axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t)
             axlVisibleUpdate(t)
             axlSetFindFilter(?enabled `("NOALL" "VIAS") ?onButtons `("VIAS"))
             vias = axlGetSelSet(axlAddSelectAll())
             StackVias=nil
             foreach( via  vias
                            axlClearSelSet()
                            axlSetFindFilter(?enabled `("NOALL" "VIAS") ?onButtons `("VIAS"))
                            lx=car(via->xy)-8
                            ly=cadr(via->xy)-8
                            ux=car(via->xy)+8
                            uy=cadr(via->xy)+8
                     axlAddSelectBox(list(lx:ly ux:uy))
                     n=axlGetSelSetCount()
                     if( axlGetSelSetCount()>1  then
                              StackVias=cons(via StackVias)
                              ); end if
                            );end foreach
                         
                         logfile="./Stack_Vias.txt"
                         rep_file=outfile(logfile)
                  fprintf(rep_file "\t Stack Vias Report\n\n padstack Name\t\tLocation\n\n")
             foreach( via StackVias
                  fprintf(rep_file "%L\t\t%L\n" via->name , via->xy )
                           );end foreach
                  
             if( length(StackVias)==0 then
                        axlMsgPut("No stack via.")
              else
                       axlMsgPut("%d stack vias exist."  length(StackVias))
                      );end if
                     axlClearSelSet()
               close(rep_file)
               axlUIViewFileCreate(logfile "Stack Vias Log" t)
              );end let
            );end defun
                      
                         
                      
                      

    该用户从未签到

    推荐
    发表于 2015-11-2 08:30 | 只看该作者
    本帖最后由 361553894 于 2015-11-2 08:46 编辑

    axlAddSelectBox(list(lx:ly ux:uy))
    这里的bBox不太合理,实际上这个bBox是包住REGULAR的正方形框,而不是实体圆形的框,所以斜对角上并没有重叠的也会误报
    而且,左下右上拓宽8mil来寻找范围内的vias不太合理,斜对角的超过8mil,你的方法会漏掉很多
    要检查过孔重叠,实际上ANTIPAD有重叠也需要考虑在内
    正确的应该是
    vPoly1 = axlPolyFromDB(via1, ?padType 'ANTI)
    axlSetFindFilter(?enabled '("all") ?onButtons '("noall" "vias"))
    axlSingleSelectBox(car(vPoly1)->bBox);这里抓到的依旧是方框,而不是圆形的框,所以需要下一步进行筛选
    via2s = axlGetSelSet()
    foreach(via2 via2s
        unless(via2 == via1
            vPoly2 = axlPolyFromDB(via2, ?padType padType)
            ...
            ;然后通过axlPolyOperation(vPoly1 vPoly2 'And)来判断俩via是否真的有重叠(具体筛选方法就不在这展开了)

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-20 11:36 , Processed in 0.125000 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表