• 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 Design
  3. dbGetOverlaps() function in SKILL

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 125
  • Views 16374
  • 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

dbGetOverlaps() function in SKILL

ghost
ghost over 13 years ago

Hi all,

From what I know, both dbGetOverlaps() and dbGetTrueOverlaps () return objects in a cellview whose bounding boxes overlap the area specified by a given bounding box. The overlap includes bounding boxes that are enclosed by, butt against, or intersect with the given bounding box.

ex: dbGetTrueOverlaps(cv list((0 0) (10 10)) list("POLY" "drawing"))

Is there a way/function  to return only objects which enclose a bounding box.? (no butt against, no intersect)

BR

Ajay

  • Cancel
  • skillUser
    skillUser over 13 years ago

    Hi Ajay,

    I am not aware of a built-in function that would exclude the butting or intersecting boxes.  However, the function dbPointArrayAnd(), for example, might be used to exclude boxes that are butting but not overlapping - you would have to convert the boxes to be tested into point lists which is an easy enough task for bBoxes, bBox to point list ->

    
    procedure(CCSbBoxToPointList(bBox)
      list(
        lowerLeft(bBox)
        xCoord(upperRight(bBox)):yCoord(lowerLeft(bBox))
        upperRight(bBox)
        xCoord(lowerLeft(bBox)):yCoord(upperRight(bBox))
      )
    ); procedure 

    Boxes that touch without overlap, or do not overlap or do not touch will not produce any output, only overlapping boxes would.

    But this does not help in the case of not-intersecting.  There are other functions like this, such as dbPointArrayAndNot() that might help. There is a dbLayerEnclose() function that would allow you to check that the entire area of one shape is covered by or enclosed by another shape - but this function works with shape, not bounding boxes.  You might generate a dummy or scratch cellview to create shapes to represent the boxes and then use dbLayerEnclose on those shapes, post-process the results and reflect back in the original cellview. Are you interested in shapes/instances at level 0 only, or do you wish to see down the hierarchy? This sounds like it could be a fair amount of work. Also be aware that the dbGetOverlaps and dbGetTrueOverlaps can be computationally intensive, so you might also want or need to consider other functions like dbProduceOverlap and dbProduceOverlapInst.

    I hope that the notes above might help you.

    regards,

    Lawrence.

    • 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