• 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. Custom IC SKILL
  3. Find the overlapping shapes between three layers

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 143
  • Views 7768
  • Members are here 0
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

Find the overlapping shapes between three layers

Anmoljot
Anmoljot over 1 year ago

Hello,

We have a requirement as shared below:

  • Finding the overlapping shapes between multiple layers
  • Updating an existing layer by adding the shapes found in the previous step.

Kindly refer to the below image for the further description of requirement shared below:

Figures 1, 2 and 3 show the shapes for Layer A, B and C respectively and the Outline layer shape.

The requirement is to do an equivalent of "AND" operation to get just the shapes that overlap between the three layers.

The second part is to add these shapes to the OUTLINE layer as shown in the figure 4.

The smaller shapes in the middle region of fig. 1, 2 and 3 are not overlapping and hence not appearing in the output figure 4.

Please help to provide Skill commands which can meet the requirement.

Kindly let me know if any further details are required.

Thanks,

Anmol

  • Cancel
  • Anmoljot
    Anmoljot over 1 year ago

    Kindly note I have referred to the below case.

    Program for finding the bBox of the intersection (or AND operator) of two layers - Custom IC SKILL - Cadence Technology Forums - Cadence Community

    Referring to this, I tried the following ABE commands, but the output is not coming as expected.

    abeInit(cv)
    m0=abeLayerFromCellView("Metal1")
    m1=abeLayerFromCellView("Metal2")
    intersections=abeNewLayer()
    abeLayerAnd(m0 m1 intersections)
     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago

    Hi,

    You should definitely have a look at Cadence Advanced Boolean Engine [ABE] documentation

    This is meant to extract all shapes from a layer through a layout hierarchy and efficiently run boolean operations on it

    The functions you need are:

    abeInit, abeLayerFromCellview, abeLayerAnd, abeLayerToCellView, abeLayerToHilightSet and abeDone

    Cheers,

    Aurélien

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago in reply to Anmoljot

    You are missing the last functions I described in my previous answer : abeLayerToCellView, abeLayerToHilightSet and abeDone

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Anmoljot
    Anmoljot over 1 year ago in reply to AurelBuche

    Hello Aurélien,

    Thank you for your response!

    I have used abeLayerToCellView function as well, but in the output layer I am seeing that the AND operation is breaking the overlapping shapes into smaller rectangles. Is that behavior expected? I will try to share an illustration as well.

    Also, will check out the abeLayerToHilightSet function.

    Thanks,

    Anmol

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Anmoljot
    Anmoljot over 1 year ago in reply to Anmoljot

    I think the post below might possibly explain why the shapes are splitting into multiple smaller rectangles.

    Number of Points for a shape cannot more than 4000 - Custom IC SKILL - Cadence Technology Forums - Cadence Community

    Although not sure why the resulting polygons from AND for above layers could have >4000 points.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Anmoljot
    Anmoljot over 1 year ago

    I am wondering if there are any commands in skill that can help to select shapes of a layer having width greater than a certain value.

    Thinking of this as a workaround to filter out the smaller shapes (that are non-overlapping) and then I would be left with the bigger shapes only.

    Kindly suggest if there is any such command.

    Thanks,

    Anmol

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Anmoljot

    Pass ?tiles nil to the abeLayerToCellView() function. The default is that it outputs the individual tiles otherwise.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Anmoljot

    Well, it doesn't "select" them, but the standard trick to filter small shapes out is to undersize them (e.g. using abeLayerSize with a negative size) and then oversize them again with the same size. If you use half the minimum width you want for the undersizing and oversizing, then they'll be filtered.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Anmoljot
    Anmoljot over 1 year ago in reply to Andrew Beckett

    Hi Andrew, 

    Thank you for your response!

    I got to try this now, as I got stuck with some other higher priority work.

    By passing ?tiles nil to the abeLayerToCellView() function, I am getting the following output:

    Output without ?tiles nil is as shown below:

    The required output is something like this:

    Could you please suggest if there is something else that I can try to get this required output?

    Any help her would be really appreciated.

    Thanks,

    Anmol

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Anmoljot

    Hi Anmol,

    Without seeing the data, I can't comment on why the results are the way they are (I'm assuming there are small gaps in the regions where some of the lines are shown). I'm also not sure why it should produce a shape like you've suggested (given that there's no fill in the layers you're drawing it's impossible to see where the solid areas are).

    I suggest you contact customer support so somebody can see your actual data. There's not going to be a magic switch to produce what you want - but maybe some additional processing can get there (as I said, I can't guess what the data actually looks like from your pictures).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
>

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