• 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. Detected Layer-to-Layer Polygons that overlap

Stats

  • Replies 17
  • Subscribers 164
  • Views 23156
  • Members are here 0
More Content

Detected Layer-to-Layer Polygons that overlap

maxwellj
maxwellj over 15 years ago

I was wondering if anyone has a routine that goes in and lists all polgyons that overlap each other on a layer to layer basis.  We've been directed to find a way to check all our layers 1-2, 2-3, 3-4, .... and note any voltage polygons that overlap each other and then give them a percentage of overlap for each shape.  It's overkill, but these people have no other work to do, so they make new work for us.  Any help would be appreciated.

  • Sign in to reply
  • Cancel
  • eDave
    eDave over 15 years ago

    Hi Craig,

    Your post should not have been blocked - I didn't stop it! Did you remember to zip the file?  I usually forget.

    Dave (Moderator)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • aCraig
    aCraig over 15 years ago
    Hi Dave,

    The message was something like "this message has to be approved by a moderator". I did zip it.

    Craig
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • eDave
    eDave over 15 years ago

    OK,

    I just found and released several messages. I don't understand why they needed moderation. Sorry about that.

    Dave

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

    maxwellj said:

     Mike-

    We're using some 1-ply material on our board due to the number of layers and a limited board thickness for mechanical reasons.  Our design coucil demands 2-ply at a minimum, but we can't do it because of physical size constraints.  They demand we provide all the poylgons (power) that cross so if there is a void in the material, they can assign probabilities to the chances of the board smoking. Yeah, I'm giggling here, too. :)   Truth is stranger than fiction.  This council has no technical knowledge, so our effort will be doubled to get it approved.

     joe

     

    I feel your pain...  we should compare war stories.  I just spent 3 weeks with 4 engineers who all disagreed on an area that was in reality 100 mils by 300 mils.  Not one person considered the material weave effects but 0.1 mil adjustments were made by each person contrary to the other.  When the gerber was finally produced at 1:1, I could hear the deafening silence as everyone realized what filled my workstation screen was a microdot in real life. :)  Did we simulate this circuit? No.  We don't want to pay for a license.  Why do science when "feel good" engineering works? :)   Sigh...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • AC202502108327
    AC202502108327 7 months ago

    You can use a script in OrCAD/Allegro Skill (SKILL) to detect overlapping polygons layer by layer. The general approach is:

    1. Iterate through all layers and extract voltage polygons.
    2. Compare each polygon with others on the same layer using dbGetOverlap or similar functions.
    3. Calculate the percentage of overlap using area formulas.
    4. Output a report listing overlapping polygons and their percentage of overlap.
      Here is the Script

      procedure(checkPolygonOverlap()
      let((layers polys layerPairs overlapResults)

      ;; Get all layers in the design
      layers = axlDBGetStackupLayers()
      layerPairs = nil

      ;; Create layer pairs (1-2, 2-3, etc.)
      for(i 1 (length(layers) - 1)
      layerPairs = cons(list(nth(i layers) nth(i+1 layers)) layerPairs)
      )

      overlapResults = nil

      ;; Loop through each layer pair
      foreach(layerPair layerPairs
      let((layer1 layer2 poly1 poly2 overlapArea poly1Area poly2Area overlapPercentage)
      layer1 = car(layerPair)
      layer2 = cadr(layerPair)

      ;; Get all polygons from both layers
      polys = axlDBGetShapesByLayer(list(layer1 layer2) 'dynamic_shape)

      foreach(poly1 polys
      foreach(poly2 polys
      if(poly1 != poly2 && axlDBOverlap(poly1 poly2)
      overlapArea = axlDBGetOverlap(poly1 poly2)
      poly1Area = axlDBGetArea(poly1)
      poly2Area = axlDBGetArea(poly2)

      overlapPercentage = 100.0 * overlapArea / max(poly1Area poly2Area)

      overlapResults = cons(
      list("Layer:" layer1 "&" layer2 "Overlap:" overlapPercentage "%")
      overlapResults
      )
      )
      )
      )
      )
      )

      ;; Print results
      foreach(result overlapResults
      printf("%s\n" result)
      )
      )
      )

      checkPolygonOverlap()



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