• 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. stacked via location

Stats

  • State Suggested Answer
  • Replies 4
  • Answers 1
  • Subscribers 160
  • Views 4787
  • Members are here 0
More Content

stacked via location

masamasa
masamasa over 1 year ago

hello

 

is there a way to find where stacked padstacks/vias are located?

i have a 6 layer design with L1 thru L6.

 

i would like to find the locations of stacked vias such as vias L1 thru L6, L2 thru L5, and L4 thru L6.

 

This is designed by our customer and our customer assigned each padstack layer by layer like L1 thru L2, L2 thru L3 and so on.

 

regards

masa

  • Sign in to reply
  • Cancel
  • SaiPavanl
    0 SaiPavanl over 1 year ago

    You can use below SKILL code to get list of stacked vias and coordinates

    ;get all stacked vias in design
    axlCmdRegister("get stackedvia" `getStackedVias)
    (procedure getStackedVias()
    (let (viaListAtLoc curViaNameList allVias curLoc viaList)

    ;get all Vias in design
    viaLocMap=makeTable("ViaMapLocTable" nil)
    axlSetFindFilter(?enabled list( "noall" "vias") ?onButtons list( "noall" "vias"))
    axlAddSelectAll()
    allVias = axlGetSelSet()

    ;Make a table for Via with location as key
    (foreach curVia allVias
    ;printf("curVia is %s loc %L\n" curVia->name curVia->xy)
    curLoc=curVia->xy
    viaListAtLoc=viaLocMap[curLoc]
    (if viaLocMap[curLoc] then
    viaListAtLoc=cons(curVia viaListAtLoc )
    viaLocMap[curLoc]=viaListAtLoc
    else
    viaLocMap[curLoc]=list(curVia)
    )
    )

    ;print List of Vias
    printf("Stacked vias \n")
    (foreach key viaLocMap
    viaList=viaLocMap[key]
    curViaNameList=list()
    (if length(viaList) > 1 then
    (foreach curVia viaList
    curViaNameList = cons( curVia->name curViaNameList)
    ;printf("\tvia %s \n" curVia->name )
    )
    printf("%L : %L\n" key curViaNameList)

    )
    );
    (axlShell "done")
    );let
    );procedure

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • avant
    0 avant over 1 year ago

    if you want to visually see them on the board, turn on "Drill Labels" in the design parameters.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • masamasa
    0 masamasa over 1 year ago in reply to avant

    thank u for your response.

    my design has over 1 million vias so i can not visually check drill labels one by one unfortunately.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Hoangkhoipcb
    0 Hoangkhoipcb over 1 year ago in reply to masamasa

    Hi masamasa!

    You can refer my code. My design has over 150 thousand vias. i apply rule via same location only, no same pad.

    HoangKhoi.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
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