• 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 Scripting - Skill
  3. skill code question

Stats

  • State Suggested Answer
  • Replies 1
  • Answers 1
  • Subscribers 17
  • Views 3397
  • Members are here 0
More Content

skill code question

Jeff Conger
Jeff Conger over 2 years ago

I've inherited a Skill script to check for missing backdrilled vias in a .brd file.  For example, given a list of net names, it will check that the backdrills on their signal vias have a stub length of a specified max length.  It reports a list of all via stub lengths and determines if the lengths are under or over the specified max length. 

The script works correctly except for vias that are VIPPO i.e. vias under a BGA without a dog bone, or vias located in the pad of a dc blocking capacitor.  For trace routes with these types of vias, the script does not work since it is expecting all vias to have a breakout trace on either top/bottom or a signal layer.  I'm trying to fix the script but I am not experienced in Skill.

The script consists of several functions - one of these is listed below.  The function looks at a via and uses the axlDBGetConnect function to return what is connected to that via. It works for vias that have a surface dogbone but for VIPPO it only "sees" the stripline routing attached to the via.  

For example, the lines below are from a via with a top layer dog bone and the via connects to sig_L5.  The script handles these vias correctly as it returns the Via connect layers as "top" and "Sig_L5". 

Via Connect Layers

 "ETCH/SIG_L5" "ETCH/TOP"

The script then calculates correctly the backdrill stub length for this via. 

This next example is from a VIPPO case - the via is part of a BGA footprint and the script reports that it connects to layer L5_S2, but the script doesn't recognize the Top layer pin connection.  

 Via Connect Layers

"ETCH/L5_S2"

Is there a way I can modify the Skill function below to interpret the Top layer as well as the signal layers, as being connected to the via?  I've read about the axlDBGetConnect()  function in a Cadence SKILL reference manual but it didn't help me resolve my question. 

defun( list_layers_on_via (thisVia)
; returns all layers connected to a via
pathlist = axlDBGetConnect(thisVia) ;returns everything connected to the via, see pg 342 of the oct. 2012 skill reference
layerlist = pathlist~>layer ;paths have a layer method
layerlist = unique(layerlist) ;return value -- a list of the unique layers attached to the via
)

The   list_layers_on_via   function is called as part of a loop below.  netids = all the nets to be checked, via_list = all the vias on a given net. 

foreach( net netids
via_list = list_vias_on_net(net)

foreach( via via_list
via_layers = list_layers_on_via(via)

  • Cancel
  • Sign in to reply
  • eDave
    0 eDave over 2 years ago

    Use axlDBGetConnect(thisVia t) to get the full list of connected objects.

    Pins don't have a layer so you will have to examine the pads of the vias to get the layers.

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