• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. finding vias

Stats

  • Replies 4
  • Subscribers 160
  • Views 14436
  • Members are here 0
More Content

finding vias

ahmetozsoy
ahmetozsoy over 15 years ago

Hi all,

Is there  a skill program that shows all the vias and via positions? This is because if I want to change a specific via type to another via type I could not manage to find where the via is. This is useful when you use some blind vias and convert them to thru-hole type vias to decrement the cost. In allegro editor reports the tool has the capability to say that there are for ex. 35 items used  for   via_thr_02_30x30 ( name of the via) but could not say its position.

Thank you.

Ahmet OZSOY 

 

 

  • Sign in to reply
  • Cancel
Parents
  • aCraig
    aCraig over 15 years ago

    Here's some code that will find all the padstacks of type "name" and log there location in padstack.log. When you view the log file just click the xy coord and Allegro/APD will zoom center to those coord. 

    defun(CAL_findPadstack (name)
      let((port userData vias (inc 0))
        port = axlDMOpenFile("ALLEGRO_LOG" "padstack" "w")
        axlLogHeader(port name)
        userData = axlUIGetUserData()
        putprop(userData axlVisibleGet() 'visibility)
        putprop(userData axlGetFindFilter(nil) 'FFEnabled)
        putprop(userData axlGetFindFilter(t) 'FFOnButtons)
        axlVisibleDesign(nil)
        axlVisibleLayer("VIA CLASS" t)
        axlClearSelSet()
        axlSetFindFilter(?enabled 'vias ?onButtons 'vias)
        axlAddSelectAll()
        vias = axlGetSelSet()
        ;axlMsgPut("Vias %L" length(vias))
        foreach(via vias
          when(via->name == name
            inc++
            fprintf(port "Net %L @ %L\n" via->net->name via->xy)
          )
        )
        axlMsgPut("Name %L %L" name inc)
        axlVisibleSet(userData->visibility)
        axlSetFindFilter(?enabled userData->FFEnabled,
          ?onButtons userData->FFOnButtons)
        axlCloseFindFilter()
        remprop(userData 'visibility)
        remprop(userData 'FFEnabled)
        remprop(userData 'FFOnButtons)
        axlClearSelSet()
        drain(port)
        close(port)
    ))

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • aCraig
    aCraig over 15 years ago

    Here's some code that will find all the padstacks of type "name" and log there location in padstack.log. When you view the log file just click the xy coord and Allegro/APD will zoom center to those coord. 

    defun(CAL_findPadstack (name)
      let((port userData vias (inc 0))
        port = axlDMOpenFile("ALLEGRO_LOG" "padstack" "w")
        axlLogHeader(port name)
        userData = axlUIGetUserData()
        putprop(userData axlVisibleGet() 'visibility)
        putprop(userData axlGetFindFilter(nil) 'FFEnabled)
        putprop(userData axlGetFindFilter(t) 'FFOnButtons)
        axlVisibleDesign(nil)
        axlVisibleLayer("VIA CLASS" t)
        axlClearSelSet()
        axlSetFindFilter(?enabled 'vias ?onButtons 'vias)
        axlAddSelectAll()
        vias = axlGetSelSet()
        ;axlMsgPut("Vias %L" length(vias))
        foreach(via vias
          when(via->name == name
            inc++
            fprintf(port "Net %L @ %L\n" via->net->name via->xy)
          )
        )
        axlMsgPut("Name %L %L" name inc)
        axlVisibleSet(userData->visibility)
        axlSetFindFilter(?enabled userData->FFEnabled,
          ?onButtons userData->FFOnButtons)
        axlCloseFindFilter()
        remprop(userData 'visibility)
        remprop(userData 'FFEnabled)
        remprop(userData 'FFOnButtons)
        axlClearSelSet()
        drain(port)
        close(port)
    ))

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information