找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 331|回复: 1
打印 上一主题 下一主题

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

[复制链接]

6

主题

122

帖子

2554

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2554
跳转到指定楼层
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
                  
                     
                  
                  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏2 支持!支持! 反对!反对!

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
2#
发表于 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 ( 粤ICP备18020198号 )

GMT+8, 2025-2-22 01:32 , Processed in 0.054873 second(s), 31 queries , Gzip On.

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

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

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