• 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. How to get all voids on conductor layer?

Stats

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

How to get all voids on conductor layer?

khuranav007
khuranav007 1 month ago

What is the best way or methodology to obtain all voids (lack of metal) on a conductor layer?

I tried to use the following polygon->holes like shown below but it does not get all voids (lack of metal).

shpAbovePoly = car(axlPolyFromDB(shpAbove))
shpAbovePolyHoles = shpAbovePoly->holes

Voids in orange box are desired.

Thanks for help.

  • Cancel
  • Sign in to reply
Parents
  • Hoangkhoipcb
    0 Hoangkhoipcb 1 month ago

    Hi Khuranav,

    You can refer to the code below.

    defun(get_voids ()
        let(()
            void_list = nil
            foreach(shape setof(e axlDBGetShapes(axlMapClassName("ETCH/TOP")) e->net->name != "")
                voids = shape->voids
                if(voids then void_list = append(void_list voids))
            )
            axlHighlightObject(void_list)
            printf("%d voids in the TOP layer\n" length(void_list))
        )
       
    )

    Regards,

    HoangKhoi.
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • khuranav007
    0 khuranav007 1 month ago in reply to Hoangkhoipcb

    Thank you for the response.

    But shape->void only appears to work when void is fully 'surrounded' by the shape.

    Meaning, when void (if you draw a void) is enclosed by the shape otherwise shape->void does not identify areas where there is no metal.

    I think I will have to use axlPolyOperation() after getting all metal on each layer.

    Let me know if there's a better way.

    Thanks again.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Hoangkhoipcb
    0 Hoangkhoipcb 1 month ago in reply to khuranav007
    I think using this axlPolyOperation() will take more time.

    you try to run this code again.

    defun
    (get_voids ()
        let(()
            void_list = nil
            foreach(shape setof(e axlDBGetShapes(axlMapClassName("ETCH/TOP")) e->net->name != "")
                voids = shape->voids
                if(voids then void_list = append(void_list voids))
                if(shape->shapeBoundary != nil then void_list = append(void_list shape->shapeBoundary->voids))
            )
            axlHighlightObject(void_list)
            printf("%d voids in the TOP layer\n" length(void_list))
        )
       
    )
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Hoangkhoipcb
    0 Hoangkhoipcb 1 month ago in reply to khuranav007
    I think using this axlPolyOperation() will take more time.

    you try to run this code again.

    defun
    (get_voids ()
        let(()
            void_list = nil
            foreach(shape setof(e axlDBGetShapes(axlMapClassName("ETCH/TOP")) e->net->name != "")
                voids = shape->voids
                if(voids then void_list = append(void_list voids))
                if(shape->shapeBoundary != nil then void_list = append(void_list shape->shapeBoundary->voids))
            )
            axlHighlightObject(void_list)
            printf("%d voids in the TOP layer\n" length(void_list))
        )
       
    )
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • khuranav007
    0 khuranav007 1 month ago in reply to Hoangkhoipcb

    Hmm thanks.  Still only getting voids completely inside the shape only.

    • 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.

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

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