• 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. PCB Design
  3. Report of Dynamic Shape Instance Parameters

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 166
  • Views 17019
  • Members are here 0
More Content
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Report of Dynamic Shape Instance Parameters

Geras
Geras over 6 years ago

I have a board with hundreds of dynamic shapes where some of the shapes have instance parameters set that differ from the global parameter.  How can i get a report of every dynamic shape and what it's dynamic shape parameters are?  Or any other method that will tell me what shapes don't follow the global rules?

  • Cancel
Parents
  • masamasa
    masamasa over 6 years ago

    you can get an instance report for only one shape at a time.

    you can not get a report for multiple shapes.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Geras
    Geras over 6 years ago in reply to masamasa

    Is it possible to do this with a SKILL script?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • eDave
    eDave over 6 years ago in reply to Geras

    Yes, it's possible with skill. This might get you started:

    foreach(s, axlDBGetShapes("BOUNDARY"), p = axlDBGetProperties(s ->dynamicGroup), when(length(p) > 1, printf("%s: %L - %L\n", s ->layer, s ->bBox, p)))

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Geras
    Geras over 6 years ago in reply to eDave

    Thanks so much!  This does exactly what I was hoping.  My only question now is how do i correlate the shapes in this printout with the the shapes on the board?  Every shape has a priority number however that doesn't seem to line up with the priority numbers printed out if i query by by shape priority in the selection tool.  (all of those priorities have a negative number)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Geras
    Geras over 6 years ago in reply to eDave

    Thanks so much!  This does exactly what I was hoping.  My only question now is how do i correlate the shapes in this printout with the the shapes on the board?  Every shape has a priority number however that doesn't seem to line up with the priority numbers printed out if i query by by shape priority in the selection tool.  (all of those priorities have a negative number)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • eDave
    eDave over 6 years ago in reply to Geras

    The line of code I sent you will just give you the layer and the bounding box of the shape. Here's a very basic function that might help some more:

    defun( DE_reportDynamicShapes ()
    let((shps, shpsList, n, hilightedShape, layer)
    shps = setof(shp, axlDBGetShapes("BOUNDARY"), length(axlDBGetProperties(shp ->dynamicGroup)) > 1)
    shpsList = mapcar(lambda((shp), lsprintf("%s: %L\n", shp ->layer, axlDBGetProperties(shp ->dynamicGroup))), shps)
    while((n = axlUIMultipleChoice("Select a shape", shpsList)) && n >= 0
    when(hilightedShape, axlDehighlightObject(hilightedShape))
    hilightedShape = nth(n, shps)
    layer = hilightedShape ->layer
    unless(axlIsVisibleLayer(layer), axlVisibleLayer(layer, t))
    axlHighlightObject(hilightedShape)
    axlZoomToDbid(hilightedShape, t)
    axlUIConfirm(lsprintf("%L", axlDBGetProperties(hilightedShape ->dynamicGroup)))
    )
    axlDehighlightObject(hilightedShape)
    axlVisibleUpdate(t)
    ))

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Geras
    Geras over 6 years ago in reply to eDave

    Thanks!  That is really great, however it was still hard to see which shapes had which parameters and difficult to go through them all since the list reset after checking every shape.  I was able to to use axlDbidName(s ->net) in place of s ->dBox to give me the net name and now that list is great!  Thanks so much.  It's still really surprising to me that Allegro doesn't have a built in way to check all items that don't follow a global rule.  It makes it really hard to do an audit of a design.

    • Cancel
    • Vote Up 0 Vote Down
    • 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