• 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. Searching for the best way to rasterize layout data, i.e...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 144
  • Views 15490
  • 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

Searching for the best way to rasterize layout data, i.e. generate a bitmap

caver456
caver456 over 8 years ago

We would like to generate a single-bit ('black-and-white') raster / bitmap from a certain cell in Virtuoso Layout for each of a set of layers.

The cell size / grid size / pixel size for us would be 2.625 x 2.625 microns, but that may change.  We would generate the raster over some area of our top level layout, so, we're looking at potentially low thousands of pixels in each dimension.

Criteria would probably be simple; maybe as simple as "if that cell contains any (>0%) of the layer in question, the pixel value will be 1, otherwise it will be 0".

We would like to create a separate raster for metal1, a raster for via1, a raster for metal2, a raster for via2, and a raster for metal3... the point being, we have a small fixed set of layers and we'd like one raster per layer.

SKILL might not be the best fit... maybe Diva or Dracula or Assura or Calibre, or an external program looking directly at the GDS data?  An idea or solution in SKILL or any one of those other tools would be very helpful.  This forum seemed like the best venue for the question

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    My first question would really be "why?". This seems an odd thing to want to do...

    Anyway, out of interest, I was assuming that you might want to having something potentially more accurate, so was looking at using the "abe" functions (Advanced Boolean Engine) that have been added in IC617 (I'd recommend a recent ISR if  you're going to go down this route). I was experimenting with various tradeoffs, but it seems to get stuck slightly at times - I've not done any real profiling yet as this was an experiment. I suspect it's some kind of garbage-collection issue (when I have a chance, I'll investigate further - but I'd sooner know why you want this!)

    I was going to post the code now, but I've definitely narrowed it down to being a garbage collection problem - I'm not sure what I can do about it currently because even when disabling garbage collection altogether, it runs fairly quickly with 2500 x 1000 pixels - but then a single gc() call at the end takes a very long time (and a huge amount of memory has been allocated). I'll need to work with R&D to understand why this is happening.

    To be fair, it's probably not quite what the boolean engine functions were intended for; I'm essentially doing an AND in each pixel area to see if there are any shapes.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    My first question would really be "why?". This seems an odd thing to want to do...

    Anyway, out of interest, I was assuming that you might want to having something potentially more accurate, so was looking at using the "abe" functions (Advanced Boolean Engine) that have been added in IC617 (I'd recommend a recent ISR if  you're going to go down this route). I was experimenting with various tradeoffs, but it seems to get stuck slightly at times - I've not done any real profiling yet as this was an experiment. I suspect it's some kind of garbage-collection issue (when I have a chance, I'll investigate further - but I'd sooner know why you want this!)

    I was going to post the code now, but I've definitely narrowed it down to being a garbage collection problem - I'm not sure what I can do about it currently because even when disabling garbage collection altogether, it runs fairly quickly with 2500 x 1000 pixels - but then a single gc() call at the end takes a very long time (and a huge amount of memory has been allocated). I'll need to work with R&D to understand why this is happening.

    To be fair, it's probably not quite what the boolean engine functions were intended for; I'm essentially doing an AND in each pixel area to see if there are any shapes.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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