Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10066|回复: 5

[求助] 请问skill怎么获取antipad的大小?

[复制链接]
发表于 2015-8-28 16:21:19 | 显示全部楼层 |阅读模式
怎么获取via的坐标,antipad regularpad等参数???
我需要检查俩via的antipad小于4mil的函数
目前用的axlAirGap,但是antipad与regularpad大小差不是固定的
发表于 2015-8-28 17:23:38 | 显示全部楼层
1.首先获取到via的DBID,这个就不用我多说了吧。
2.获取via的坐标直接通过viaDbid->xy
2.获取VIA的其他参数,通过viaDbid->definition获取到via所使用的padstack,这个padstack包含了过孔的所有属性。比如你所需要的反焊盘大小。

如面的代码所示:
目前我把via的DBID存储到变量a中的

  1. Skill > a->?
  2. (parentGroups symbolEtch branch pads definition
  3.     isMirrored isThrough name objType parent
  4.     net rotation mirrorType startEnd testPoint
  5.     xy readOnly bBox prop fixedByTestPoint
  6. )
  7. Skill > a->definition->??
  8. (prop nil bBox
  9.     ((-16.0 -16.0)
  10.         (16.0 16.0)
  11.     ) readOnly
  12.     t pads
  13.     (pad:259453216 pad:259453192 pad:259453168 pad:259453144 pad:259453120
  14.         pad:259453096 pad:259453072 pad:259453048 pad:259453024 pad:259453000
  15.         pad:259452976 pad:259452952
  16.     ) objType "padstack"
  17.     startEnd
  18.     ("ETCH/TOP" "ETCH/BOTTOM") parent dbid:151934960 name
  19.     "VIA10-GEN" drillChar "10" plating "PLATED"
  20.     holeType "circle_drill" drillNonStandard nil multiDrillData
  21.     nil padSuppresion t uvia nil
  22.     type "through" keepout nil holeTolerance
  23.     (0.0 0.0) drillFigureHeight 20.0 drillFigureWidth 20.0
  24.     drillFigureName "CIRCLE" drillSizeHeight 0.0 drillSizeWidth
  25.     0.0 drillDiameter 10.0 drillOffset
  26.     (0.0 0.0)
  27.     isThrough t definition nil isPadRef
  28.     nil
  29. )
  30. Skill > b =  a->definition->pads
  31. (pad:259453216 pad:259453192 pad:259453168 pad:259453144 pad:259453120
  32.     pad:259453096 pad:259453072 pad:259453048 pad:259453024 pad:259453000
  33.     pad:259452976 pad:259452952
  34. )
  35. Skill > car(b)->??
  36. (readOnly t objType "pad" bBox
  37.     ((-11.0 -11.0)
  38.         (11.0 11.0)
  39.     ) type "REGULAR" parent dbid:313075792
  40.     offset
  41.     (0.0 0.0) layer "ETCH/TOP" flash
  42.     "" figureName "CIRCLE" figure
  43.     (_axlPath@0x8dce048)
  44. )
复制代码
 楼主| 发表于 2015-8-28 18:00:13 | 显示全部楼层
如果我要获得antipad的大小,利用
car(viaDbid->definition->pads)
能获取pads的dbid,那我怎么判断哪个是antipad,并且获得他的大小呢?
 楼主| 发表于 2015-8-28 18:19:22 | 显示全部楼层
viaDbid->definition->pads->type怎么都是nil呢。。。
发表于 2015-8-28 19:22:28 | 显示全部楼层
本帖最后由 XYX365 于 2015-8-28 19:24 编辑

是不是類似圖片所顯示的值,
如果是的話可以參考下列代碼,
而via的antipad應該是內曾和負片時,才有的
a1.jpg
  1. axlSetFindFilter(?enabled list("noall" "pins" "vias") ?onButtons list("noall" "pins" "vias"))
  2. axlClearSelSet()
  3. axlAddSelectPoint() ;自己要選擇兩個via
  4. axlAddSelectPoint()
  5. lSelectVias = axlGetSelSet()
  6. via1 = car(lSelectVias)
  7. via2 = cadr(lSelectVias)
  8. axlSetActiveLayer("ETCH/INT1") ;設定Active為內層名稱
  9. axlAirGap(via1 via2)

  10. =>
  11. axlAirGap(via1 via2)
  12. ((4922.22 1141.22)
  13.     (4917.22 1134.3) 8.54935
  14. )
复制代码
 楼主| 发表于 2015-8-31 08:40:02 | 显示全部楼层
本帖最后由 leilei4908 于 2015-8-31 10:22 编辑
XYX365 发表于 2015-8-28 19:22
是不是類似圖片所顯示的值,
如果是的話可以參考下列代碼,
而via的antipad應該是內曾和負片時,才有的


其实我要的是Dist,Dist减去俩Antipad大小就是负片上俩via间铜箔的最小宽度了
能直接获得这个Dist值么?如果是通过计算斜边获取的,计算量会很大。
我的目的是高亮所有via间铜箔在0到4mil间的via。
目前用airgap方式,比较任意两个via间的airgap,数据量很大,会无响应一两分钟,有没有更好的方案?

比如Dx超过一定的值就跳出for循环,但又回到之前没解决的一个问题了,怎么跳出for循环。。。[已解决]
方法:在for循环下增加if判断,虽然没有跳出for循环,但是实际上并没有执行下面的语句

现在用的方法是自己设定via to via的距离,从而判断铜箔宽度
如果能直接获取antipad大小那再好不过了,就不需要自己考虑了,毕竟antipad大小不是固定的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-5-16 12:53 , Processed in 0.149449 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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