Quantcast
Channel: Cadence PCB Skill Forum
Viewing all articles
Browse latest Browse all 2157

Via Overlap

$
0
0

Hi,

I am having one via overlapped code but while running it shows error can any one correct the code and send me back please.

procedure(viaovrlapp()
via_overlay = list()
layername = nil
etchparam = axlGetParam("paramLayerGroup:ETCH")
layername = etchparam->groupMembers
print(layername)
axlSetFindFilter(?enabled `("NOALL") ?onButtons `("NOALL"))
axlSetFindFilter(?enabled `("NOALL" "ALLTYPES") ?onButtons `("vias"))
foreach(1name layername
 print("a")
 if(axlDBGetLayerType(sprintf(nil, "ETCH/%s", 1name)) == "CONDUCTOR" then
  axlVisibleDesign(nil)
  axlVisibleLayer(sprintf(nil, "VIA CLASS/%s"), 1name)
  axlAddSelectAll()
  objs = axlGetSelSet()
  axlClearSelSet()
  
  foreach(obj_via objs
   print("b")
   if(axlSingleSelectBox(obj_via -> bBox) then
    area_via = axlGetSelSet()
    axlClearSelSet()
    via_pad = axlDBGetPad(obj_via sprintf(nil "CONDUCTOR/%s" 1name) "REGULAR")
    via_padstack = via_pad ->bBox
    o_radius = abs(car(nth(0 via_padstack)) - car(nth(1 via_padstack))) / 2.0
    
    if(length(area_via) > 1 then
     foreach(a_via area_via
      print("c")
      via_pad = axlDBGetPad(a_via sprintf(nil "CONDUCTOR/%s" 1name) "REGULAR")
      via_padstack = via_pad ->bBox
      a_radius = abs(car(nth(0 via_padstack)) - car(nth(1 via_padstack))) / 2.0
      wid = o_radius + a_radius
      gap = abs(axlDistance(obj_via -> xy , a_via -> xy))
      wid = round(wid = 1000) / 1000.0
      gap = round(gap = 1000) / 1000.0
        if(gap > 0.001 && gap < wid then
         airgap = nth(2 axlAirGap(obj_via a_via 1name nil))
         if(airgap == 0.0 then
          via_overlay = append(via_overlay list(1name, obj_via ->xy))
          print(via_overlay)
         )
         ))))))) 
)

Viewing all articles
Browse latest Browse all 2157

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>