Home > Community > Forums > Custom IC SKILL > Regarding "dbGetTrueOverlaps()"

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: *

 Regarding "dbGetTrueOverlaps()" 

Last post Fri, Mar 1 2013 8:39 AM by Andrew Beckett. 12 replies.
Started by Neeraj Vardhan 27 Feb 2013 09:24 PM. Topic has 12 replies and 1277 views
Page 1 of 1 (13 items)
Sort Posts:
  • Wed, Feb 27 2013 9:24 PM

    Regarding "dbGetTrueOverlaps()" Reply

    Hi,

    I am writing a code to get all instances under a marker layer. I tried to use dbGetTrueOverlaps() but it failed with an error of "*Error* dbGetTrueOverlaps: Invalid bBox - (((-0.915 0.025) (4.695 3.135)))". I have mentioned the code below, 

     

     procedure(nvGetVia3()

    cv=geGetEditCellView()

    x=geGetSelSet()

    y=x~>bBox

    shape_new=dbGetTrueOverlaps(cv y)

    )

     

    Thanks & Regards

    Neeraj 

     

    • Post Points: 35
  • Wed, Feb 27 2013 10:05 PM

    • RFStuff
    • Top 25 Contributor
    • Joined on Tue, Feb 5 2013
    • Posts 214
    • Points 3,780
    Re: Regarding "dbGetTrueOverlaps()" Reply

     You may dolike below to NOT get any nil.

    I think y=x~>bBox is not the list format dbGetTrueOverlaps() wants.

     

     procedure(nvGetVia3()

    cv=geGetEditCellView()

    x=geGetSelSet()

    y=x~>bBox

    shape_new=dbGetTrueOverlaps(cv car(y))

    )

     

    Thanks

    • Post Points: 5
  • Wed, Feb 27 2013 10:05 PM

    • RFStuff
    • Top 25 Contributor
    • Joined on Tue, Feb 5 2013
    • Posts 214
    • Points 3,780
    Re: Regarding "dbGetTrueOverlaps()" Reply

    Sorry I pressed the POST button twice.....

     You may do like below to NOT get any nil.

    I think y=x~>bBox is not the list format dbGetTrueOverlaps() wants.

     

     procedure(nvGetVia3()

    cv=geGetEditCellView()

    x=geGetSelSet()

    y=x~>bBox

    shape_new=dbGetTrueOverlaps(cv car(y))

    )

     

    Thanks

    • Post Points: 20
  • Wed, Feb 27 2013 11:11 PM

    Re: Regarding "dbGetTrueOverlaps()" Reply
    This is because geGetSelSet returns the list of selected objects and hence y contains the list of bounding boxes. So you can either do x=car(geGetSelSet()) and keep your call to dbGetTrueOverlaps as before, or use the approach that RFStuff suggested below.
    • Post Points: 20
  • Thu, Feb 28 2013 7:53 PM

    Re: Regarding "dbGetTrueOverlaps()" Reply

    Thankyou RFStuff and Andrew. I am facing a problem in picking up instance below the selected layer. can you provide me an example, by using dbGetTrueOverlaps() function, and how to pick the instance below the selected layer and print there location.

    Regards

    Neeraj 

     

    • Post Points: 20
  • Thu, Feb 28 2013 8:25 PM

    • RFStuff
    • Top 25 Contributor
    • Joined on Tue, Feb 5 2013
    • Posts 214
    • Points 3,780
    Re: Regarding "dbGetTrueOverlaps()" Reply

     Dear Neeraj,

    You may follow the link below :-

     Topic:-

    Script for finding same Metal type Shape Overlapping a Trace

     http://www.cadence.com/community/forums/T/25186.aspx

    Kind Regards,

    • Post Points: 20
  • Thu, Feb 28 2013 10:22 PM

    Re: Regarding "dbGetTrueOverlaps()" Reply

    Thanks RFSTuff for a  quick reply , I have one more query, how can i select all the instances under the layer and delete some of them later. As we do by search and then select and delete specific things from them.

    Regards

    Neeraj 

    • Post Points: 20
  • Thu, Feb 28 2013 11:39 PM

    • RFStuff
    • Top 25 Contributor
    • Joined on Tue, Feb 5 2013
    • Posts 214
    • Points 3,780
    Re: Regarding "dbGetTrueOverlaps()" Reply

    If you use dbGetTrueOverlaps(), you may get a list of lists something like below. The 1st one is the ID of the selected trace.You can always eliminate it using unless like Andrew's code in the POST.

    The first ID in each list represent the instance name in the hierarchy. The last one in each list is the actual object (may be a PATH,POlygon,Shape..etc). Each list is basically a nested list of the hierarchy.

    If you have more number hierarchy you will get more depth in the nesting. If you get the idea you can easily extract the instance ID.

    One can  basically argue that the instance is a last but one in a nested list returned by dbGetTrueOverlaps().

    You can also try  dbGetInstTransform(). It may NOT work in IC5141.

     

     

     shapeList = dbGetTrueOverlaps(cv obj1~>bBox obj1~>layer 0:5)
    \t (db:217705012
    \t     (db:217517248 db:262161624)
    \t     (db:217517248 db:262161472)
    \t     (db:217517248 db:262161312)
    \t     (db:217517248 db:261977724)
    \t     (db:217517248 db:261977644)
    \t     (db:217517248 db:261977564)
    \t )
    • Post Points: 20
  • Fri, Mar 1 2013 12:41 AM

    Re: Regarding "dbGetTrueOverlaps()" Reply
    Hi RFStuff, Hope i was not clear in my last post. Let me give a example, i have a huge layout from which i have to select "VIA5" for specific area. And i just want my SKILL code to select these instance, and allow me to delete only those which i want to from the selected once. It should be such that my code selects and i could unselect the not needed ones manually and then press . Regards Neeraj
    • Post Points: 20
  • Fri, Mar 1 2013 12:57 AM

    • RFStuff
    • Top 25 Contributor
    • Joined on Tue, Feb 5 2013
    • Posts 214
    • Points 3,780
    Re: Regarding "dbGetTrueOverlaps()" Reply

    I am NOT still clear what u want to do actually.

    But what I understand from your post, you may do something as below:-

    1) Find the overlapped instance/objects using

    dbGetTrueOverlaps().
    2) You can use some thing like  dbGetTrueOverlaps(cv car(obj1~>bBox) "VIA5" 0:5) to get the VIA ovelap objects. I assume VIA5 is drawing alyer in your process.
     
    3) Then whatever you want you can do with it by using appropriate command.
        a) If you want to do manually, then you can use Mr Andrew's code in the post to highlight the area to find the locations
        b) For doing in the code you can delete using appropriate commands.
     
    Kind Regards, 
    • Post Points: 20
  • Fri, Mar 1 2013 1:13 AM

    Re: Regarding "dbGetTrueOverlaps()" Reply
    I want the all of the "via5" under the given layer to be selected on layout. so that after running the script, when i go in layout, i could be able to move,copy or delete them or even deselect few of the instance from the all selected.
    • Post Points: 20
  • Fri, Mar 1 2013 6:52 AM

    • dmay
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Allen, TX
    • Posts 386
    • Points 7,290
    Re: Regarding "dbGetTrueOverlaps()" Reply

    This operation is different in 5.1.41 as comapred with 6.1.x since vias are instances in the old version and via objects in the new version. Here are two ways you could do this:

    5.1.41
    via5s = setof(x dbProduceOverlapInst(geGetEditCellView() shape~>bBox 0) x~>cellName == "VIA5")

    6.1.5:
    via5s = setof(x dbViaQuery(geGetEditCellView() shape~>bBox 0 0) x~>cellName == "VIA5")

    In the examples above, shape refers to the object you're using for your bBox. It could be car(selectedSet()).

    Derek

    • Post Points: 20
  • Fri, Mar 1 2013 8:39 AM

    Re: Regarding "dbGetTrueOverlaps()" Reply

    Derek,

    Your IC615 code will only work for customVias. Probably best to do x~>viaHeader~>viaDefName=="VIA5" rather than looking at x~>cellName; this will work for both customVias and stdVias.

    The IC5141 code is of course fine, since vias are just instances.

    Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (13 items)
Sort Posts:
Started by Neeraj Vardhan at 27 Feb 2013 09:24 PM. Topic has 12 replies.