• 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. SKILL function to create a 'negative' of a layer?

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 2493
  • 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

SKILL function to create a 'negative' of a layer?

Kishor4
Kishor4 over 5 years ago

Hi,

I have a layout of power MOSFET chip. It has single metal layer.

To perform some checks on the layout design, I want to create a 'negative' of the metal layer.

Is there a way to do it using SKILL function?

Thanks..

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    You could use dbLayerAndNot or use the Tools->Layer Generation in the layout editor to do the same thing. You can't just do a not because you need an outer bound of the inverse layer you're producing, but you could create a rectangle with the bBox of the cellView on a temporary layer, and then do the and not relative to that (i.e. with that layer as the first layer).

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Kishor4
    Kishor4 over 5 years ago in reply to Andrew Beckett

    Thanks Andrew!

    I tried out Tools->Layer Generation, and used a temporary layer to create a rectangle.

    But for some reason the resulting layer after 'And Not' was not perfect. In some regions on the chip, it also showed up where metal was present! 

    Couple more points I'd like to share:

    (a) I made sure that my design was flattened before performing 'And Not'.

    (b) When I observe carefully, I see that the metal layer is flattened but not 'merged'. There are thousands of metal rectangles - side by side, and some are overlapping. I wonder if this is causing the issue.

    Apparently, L-edit software has a separate button to 'merge' all rectangles, which merges and creates just a few 'pieces' (if I may say so) of metal.

    So I tried to 'merge' all the metal rectangles (Virtuoso). But the merge operation fails to do the merging.

    Response from Cadence Support is: "I believe the difficulty in using this method is that there is a limit to the geometries the software will actually merge.  "

    Alternate question would be: Can SKILL command succeed at merging, when the manual way of using merge function failed?

    Or, any other approach that I can attempt?

    Regards,

    Kishore

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Kishor4

    Hi Kishore,

    If you're already interacting with customer support on this, I won't repeat work that is going on elsewhere. However, I don't believe the fact that the shapes are not merged would be a problem here. Similarly, the output of dbLayerAndNot and the same functionality within the layout editor will also end up segmented into pieces because there's a maximum number of points in each polygon in Virtuoso (strictly speaking the database doesn't have a limit, but Virtuoso generally does not create shapes with more than 4000 points per polygon and splits into pieces to achieve this).

    I'd be quite surprised if there is a general flaw here as the layer manipulation functionality has been there for many, many years and originates from a physical verification tool where this is the bread and butter of physical verification. Hopefully you can iron that out with customer support. I've certainly not come across this before.

    We also have the abeLayer functions (e.g. abeLayerAndNot) from the Advanced Boolean Engine and these do not require the layout to be flattened first - so they may be worth a try. However, they are limited to orthogonal data (the dbLayer functions are not limited in this way).

    Anyway, I would suggest to continue working with customer support to show them an example of where this is not working for you so that we can understand and resolve your issue.

    Regards,

    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