Home > Community > Forums > Custom IC Design > dbGetOverlaps() function in SKILL

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 dbGetOverlaps() function in SKILL 

Last post Tue, Apr 10 2012 2:30 PM by skillUser. 1 replies.
Started by ghost 10 Apr 2012 05:13 AM. Topic has 1 replies and 1396 views
Page 1 of 1 (2 items)
Sort Posts:
  • Tue, Apr 10 2012 5:13 AM

    • ghost
    • Not Ranked
    • Joined on Fri, Apr 6 2012
    • BANGALORE, Karnataka
    • Posts 4
    • Points 65
    dbGetOverlaps() function in SKILL Reply

    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

    • Post Points: 20
  • Tue, Apr 10 2012 2:30 PM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,576
    • Points 15,725
    Re: dbGetOverlaps() function in SKILL Reply

    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.

    • Post Points: 5
Page 1 of 1 (2 items)
Sort Posts:
Started by ghost at 10 Apr 2012 05:13 AM. Topic has 1 replies.