找回密码
 注册
查看: 2679|回复: 37
打印 上一主题 下一主题

請各位大神幫幫忙寫CHECK裸銅SKILL

[复制链接]
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-1-27 08:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    本帖最后由 Pkron 于 2022-1-27 08:52 编辑

    有沒有skill可以幫忙檢查SOLDERMASK層別檢查

    一塊SOLDERMASK有兩種訊號的時候被檢查出來DRC的小SKILL幫手
    如圖

    拜託我可以貢獻全部48個貢獻直


    2022-01-27_08-45-59.png (15.32 KB, 下载次数: 1)

    2022-01-27_08-45-59.png
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    推荐
    发表于 2022-1-27 11:08 | 只看该作者
    本帖最后由 db-_- 于 2022-1-28 09:07 编辑

    给你写了一个。
    只能检查“BOARD GEOMETRY/SOLDERMASK和PACKAGE GEOMETRY/SOLDERMASK”层的shape与“ETCH/top和ETCH/bottom”层的shape和cline的重合。
    希望能帮到你。
    我没有详细测试,有问题请反馈。
    命令chksmn

    check_solder_of_mul_net.rar (1.55 KB, 下载次数: 19)
    未加密。源码


  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    推荐
    发表于 2023-10-12 16:52 | 只看该作者
    很久以前写的了,效率有点低,但是多等会儿还是能检查出来的,有能力的可以自己优化一下。

    v1.4.1 显示via层,修增length计数问题
    v1.4 增加via
    check_solder_of_mul_net.rar (1.62 KB, 下载次数: 8)

    1. ;;v1.4.1 显示via层,修增length计数问题
    2. ;;v1.4 增加via
    3. ;;v1.3 修正net网络名显示
    4. ;;v1.2 显示所有重叠的元素
    5. ;;v1.1 增加shape比对,增加net名/当前层显示
    6. ;;v1.0 初稿
    7. ;;check_solder_of_mul_net.il
    8. ;;指令: chksmn
    9. ;;功能:检测一个solder是否覆盖多个net(cline、shape、via)
    10. ;;描述:v1.4.1
    11. ;;  

    12. axlCmdRegister("chksmn" 'dbCheckSolderOfMulNet)

    13. procedure(dbCheckSolderOfMulNet()
    14. (let (visList tmpFile res1 res2)

    15.         visList = axlVisibleGet()        ;保存视图
    16.         tmpFile = axlTempFile()
    17.         res1 = _dbCheckSolderOfMulNet("TOP" tmpFile)
    18.         res2 = _dbCheckSolderOfMulNet("BOTTOM" tmpFile)
    19.         if(res1 || res2 then
    20.                 axlVisibleDesign(nil)                ;关闭全部层
    21.                 axlVisibleLayer("ETCH/TOP" t)        ;开启这层
    22.                 axlVisibleLayer("VIA CLASS/TOP" t)        ;开启这层
    23.                 axlVisibleLayer("BOARD GEOMETRY/SOLDERMASK_TOP" t)                ;开启这层
    24.                 axlVisibleLayer("PACKAGE GEOMETRY/SOLDERMASK_TOP" t)        ;开启这层
    25.                 axlVisibleLayer("ETCH/BOTTOM" t)        ;开启这层
    26.                 axlVisibleLayer("VIA CLASS/BOTTOM" t)        ;开启这层
    27.                 axlVisibleLayer("BOARD GEOMETRY/SOLDERMASK_BOTTOM" t)                ;开启这层
    28.                 axlVisibleLayer("PACKAGE GEOMETRY/SOLDERMASK_BOTTOM" t)        ;开启这层
    29.                 axlUIWExpose(axlUIViewFileCreate(tmpFile "Solder of multi net CHECK" t))        ;显示文件
    30.                 axlTempFileRemove(tmpFile)        ;删除临时文件
    31.         else
    32.                 axlVisibleSet(visList)        ;还原视图
    33.                 printf("No intersectional shapes, vias or lines.")
    34.         )
    35.         axlVisibleUpdate(nil)                ;显示生效
    36. ))

    37. procedure(_dbCheckSolderOfMulNet(layer tmpFile)
    38. (let (i j clinePoly clinePolys shapePoly intersectionPoly pf pt1 pt2 etchLayer viaLayer boardLayer packageLayer res pointList netCnt)
    39.        
    40.         pf = outfile(tmpFile "a")                ;创建临时文件,并打开       

    41.         ;;获取所有cline,shape,via
    42.         etchLayer = strcat("ETCH/" layer)
    43.         viaLayer = strcat("VIA CLASS/" layer)
    44.        
    45.         axlVisibleDesign(nil)                ;关闭全部层
    46.         axlVisibleLayer(etchLayer t)        ;开启这层
    47.         axlVisibleLayer(viaLayer t)        ;开启这层
    48.         axlClearSelSet()                ;清空选择
    49.         axlSetFindFilter(?enabled `("noall" "CLINES" "SHAPES" "VIAS") ?onButtons `("noall" "CLINES" "SHAPES" "VIAS"))        ;设置find过滤器
    50.         axlAddSelectAll()        ;添加所有元素       
    51.         foreach(i axlGetSelSet()        ;所有cline/shapes转成多边形
    52.                 clinePoly = axlPolyFromDB(i)
    53.                 foreach(j clinePoly
    54.                         clinePolys = cons(j clinePolys)        ;存储cline的所有poly
    55.                 )
    56.         )
    57.        
    58.         ;;获取所有shape
    59.         boardLayer = strcat("BOARD GEOMETRY/SOLDERMASK_" layer)
    60.         packageLayer = strcat("PACKAGE GEOMETRY/SOLDERMASK_" layer)
    61.         axlVisibleDesign(nil)                ;关闭全部层
    62.         axlVisibleLayer(boardLayer t)        ;开启这层
    63.         axlVisibleLayer(packageLayer t)                ;开启这层
    64.         axlClearSelSet()                ;清空选择
    65.         axlSetFindFilter(?enabled `("noall" "SHAPES") ?onButtons `("noall" "SHAPES"))        ;设置find过滤器
    66.         axlAddSelectAll()        ;添加所有元素
    67.         axlVisibleDesign(nil)                ;关闭全部层
    68.         axlVisibleLayer(etchLayer t)        ;开启这层
    69.         axlVisibleLayer(viaLayer t)        ;开启这层
    70.         axlSetFindFilter(?enabled `("noall" "CLINES" "SHAPES" "VIAS") ?onButtons `("noall" "CLINES" "SHAPES" "VIAS"))        ;设置find过滤器
    71.         fprintf(pf "%s LAYER:\n" layer)
    72.         foreach(i axlGetSelSet()
    73.                 shapePoly = axlPolyFromDB(i)        ;每个shape转成多边形
    74.                 intersectionPoly = axlPolyOperation(shapePoly clinePolys 'AND)        ;shape与cline进行与操作
    75.                 when(length(intersectionPoly) >= 2        ;数量大于2,就检查net名
    76.                         axlClearSelSet()
    77.                         pointList = nil
    78.                         foreach(j intersectionPoly
    79.                                 axlAddSelectPoint(caar(j->vertices))        ;有重叠的地方,通过选择来确定坐标和网络名
    80.                                 pointList = cons(caar(j->vertices) pointList)        ;坐标存起来
    81.                         )
    82.                         pointList = reverse(pointList)
    83.                         when(length(unique(axlGetSelSet()~>net~>name)) != 1        ;如果所有重叠的cline和shape网络名一样就不处理
    84.                                 netCnt = 1
    85.                                 foreach(j axlGetSelSet()
    86.                                         fprintf(pf "net%d: %-20s %-20s " netCnt sprintf(nil "%L" car(pointList))  j->net->name || "nil")        ;打印网络名和坐标
    87.                                         pointList = cdr(pointList)        ;坐标同步
    88.                                         netCnt++
    89.                                         res = t        ;返回值,决定是否找到重叠点
    90.                                 )
    91.                                 fprintf(pf "\n")
    92.                         )
    93.                 )
    94.                
    95.         )
    96.         fprintf(pf "\n")
    97.         axlClearSelSet()                ;清空选择
    98.         close(pf)                ;关闭文件
    99.         res
    100. ))
    复制代码


    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    推荐
    发表于 2022-2-10 01:33 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    5#
    发表于 2022-1-27 09:12 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
     楼主| 发表于 2022-1-27 09:44 | 只看该作者
    aarom 发表于 2022-1-27 09:12
    原廠DRC已經有了, 打開它吧...........

    這個平常不會去打開它,想最後的時候用SKILL去解決 不然打開會有很多正規的DRC
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    7#
     楼主| 发表于 2022-1-27 11:44 | 只看该作者
    db-_- 发表于 2022-1-27 11:08
    给你写了一个。
    只能检查“BOARD GEOMETRY/SOLDERMASK和PACKAGE GEOMETRY/SOLDERMASK”与“ETCH/top和ETCH ...

    非常感謝您!!!我試試看
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    8#
     楼主| 发表于 2022-1-27 12:06 | 只看该作者
    db-_- 发表于 2022-1-27 11:08
    给你写了一个。
    只能检查“BOARD GEOMETRY/SOLDERMASK和PACKAGE GEOMETRY/SOLDERMASK”与“ETCH/top和ETCH ...

    db大:剛剛嘗試了~大致上很好使用!需要請您在幫忙2點增加

    1.除了給座標旁邊可以顯示net name嗎?

    2.2個不同net shapes在同一處soldermask也可以抓出來嗎?不需要過濾!

    2022-01-27_12-05-49.png (15.03 KB, 下载次数: 3)

    2022-01-27_12-05-49.png
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    9#
    发表于 2022-1-27 12:35 | 只看该作者
    Pkron 发表于 2022-1-27 12:06
    db大:剛剛嘗試了~大致上很好使用!需要請您在幫忙2點增加

    1.除了給座標旁邊可以顯示net name嗎?

    已更新楼上的代码和附件。
    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    10#
    发表于 2022-1-27 13:16 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
     楼主| 发表于 2022-1-27 13:16 | 只看该作者
    db-_- 发表于 2022-1-27 12:35
    已更新楼上的代码和附件。

    感謝DB大大對上狀況後非常完美了!!CHECK實用性很高!

    這樣MOTHER BOARD就不用肉眼一個一個去看了!

    還有請問您之前有寫過自動挖白漆的SKILL嗎?

    當SOLDERMASK壓到白漆可以撈掉5MIL 例如測試點VIA壓到白漆 點選後SOLDERMASK可以自動挖5MIL的SAPCE

  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    12#
    发表于 2022-1-27 13:55 | 只看该作者
    Pkron 发表于 2022-1-27 13:16
    感謝DB大大對上狀況後非常完美了!!CHECK實用性很高!

    這樣MOTHER BOARD就不用肉眼一個一個去看了!

    没写过,这个我得思考一下怎么写,还没有完整的头绪。
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
     楼主| 发表于 2022-1-27 14:00 | 只看该作者
    db-_- 发表于 2022-1-27 13:55
    没写过,这个我得思考一下怎么写,还没有完整的头绪。

    DB大大:
    剛發現初稿CLINE可以檢查出來同一塊SOLDERMASK 不能檢查出來SHAPES

    更新後:

    SHAPES可以檢查出來但是初稿的CLINE檢查出來的NET有少,且測試新增的CLINE和SHAPES加上去也沒有被抓出來新增

    初稿測試新增CLINE是可以被檢查出來新增有問題的!

    請問是哪裡需要修改嗎?
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    14#
    发表于 2022-1-27 14:04 | 只看该作者
    Pkron 发表于 2022-1-27 14:00
    DB大大:
    剛發現初稿CLINE可以檢查出來同一塊SOLDERMASK 不能檢查出來SHAPES

    有截图吗,我构造一个类似的场景调试一下。
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    15#
     楼主| 发表于 2022-1-27 14:08 | 只看该作者
    db-_- 发表于 2022-1-27 14:04
    有截图吗,我构造一个类似的场景调试一下。

    我馬上錄製
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    16#
     楼主| 发表于 2022-1-27 14:23 | 只看该作者
    db-_- 发表于 2022-1-27 14:04
    有截图吗,我构造一个类似的场景调试一下。

    初稿CLINE是可以偵測到這些NET有跨到裸銅更新後 CLINE就只有一條可以偵測到

    SHPAES也是 新增的就沒有顯示出來

    在板子上方 不知道是不是因為大小受限制

    2022-01-27_14-13-04.png (77.86 KB, 下载次数: 0)

    2022-01-27_14-13-04.png

    2022-01-27_14-18-26.png (86.81 KB, 下载次数: 1)

    2022-01-27_14-18-26.png

    2022-01-27_14-18-42.png (82.34 KB, 下载次数: 2)

    2022-01-27_14-18-42.png
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    17#
     楼主| 发表于 2022-1-27 14:29 | 只看该作者

    以下是新增的地方上方只要是CLINE或是SHAPES 都不會被抓出來!

    1235.png (88.99 KB, 下载次数: 1)

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-24 01:36 , Processed in 0.109375 second(s), 32 queries , Gzip On.

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

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

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