Home > Community > Forums > Custom IC SKILL > Net Tracing - 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: *

 Net Tracing - Skill 

Last post Sun, Apr 7 2013 10:34 PM by Andrew Beckett. 11 replies.
Started by archive 30 Jul 2007 11:43 PM. Topic has 11 replies and 4005 views
Page 1 of 1 (12 items)
Sort Posts:
  • Mon, Jul 30 2007 11:43 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    Net Tracing - Skill Reply

    Hello All ,

    I have a script which I use to calculate a particular net's  Net Length, total net resistance, Capacitance (w.r.t ground).
    But the drawback is that I have to select the entire Net before invoking the "NetLength" Function.

    So I want a script which can trace the entire net and give a list of metals, vias, instances that
    belong to this net. i.e I will select any one metal/instance/via  of a net and the code should trace the entire net and give me the desired o/p.

    NOTE: Instances here refer to instances/mosaics of vias.

    Thanks,
    Sathya


    Originally posted in cdnusers.org by rimser9
    • Post Points: 0
  • Tue, Jul 31 2007 12:45 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    Well, if the layout was created using Virtuoso XL, then this is easy - since all shapes on the net will be associated with the net in the database.

    Other than that, you could use Diva to extract a net - or you'd have to write something which traced the net - not that straightforward.

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • Post Points: 0
  • Tue, Jul 31 2007 1:21 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    Thanks Andrew.
    Thats what I was asking for. A skill code which can trace the net in Virtuoso Layout Editor.

    Regards,
    Sathya


    Originally posted in cdnusers.org by rimser9
    • Post Points: 0
  • Tue, Jul 31 2007 8:39 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    I wrote some skill code to do this and presented it at the 2002 Cadence Users Group. It was no small program, but basically used dbGetTrueOverlaps on shapes decomposed into rectangles. If your nets are not traversing the hierarchy, then using VXL connectivity information is the easiest way to go. DIVA also provides a quick extraction, but custom Skill was the only way we found that we could extract the shapes from any level of hierarchy by clicking on a shape.

    I can't give you the code, but I have attached my paper and presentation from the 2002 conference. The effort to write the code has paid off many times over. We can click on a net and hilight it, but we then have all the shapes and can do whatever we want with them.

    -Derek


    Originally posted in cdnusers.org by dmay
    • Post Points: 0
  • Tue, Jul 31 2007 9:23 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    I reread the first post and you mention that you "select" every shape on the net first. If this is the case, then VXL is your best bet. VXL adds connectivity to the shapes on the same net. You can then select all shapes on a net with something as simple as this:

    shapes = setof(x geGetEditCellView()~>shapes x~>net~>name == "mynet")

    You can get every instance (including vias) connected to the net using:
    insts = setof(x cv~>conns x~>net~>name=="mynet")

    The paper I attached describes how to get all shapes in the hierarchy of the design on a net, all the way down to the gate without needing VXL.

    -Derek


    Originally posted in cdnusers.org by dmay
    • Post Points: 0
  • Tue, Jul 31 2007 8:59 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    Hi ,

    Im using only VLE not VXL so I think I will just read ur paper and try to write my code myself.

    Meanwhile if there are nayone out there who can give the code are welcome.

    Thanks,


    Originally posted in cdnusers.org by rimser9
    • Post Points: 0
  • Fri, Aug 10 2007 10:08 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    Derek,

    I have written a similar tracing function, but I find the "Mark Net" function to be dramatically faster. dbGetTrueOverlaps has to be one of the most powerful functions in SKILL, but at the same time, it has to be the slowest.

    I'm curious if you can share any tips or thoughts on the performance aspects of this problem.

    For me, "Mark Net" is too fast to compete with it in SKILL for displaying purposes (compare tracing VSS! in a real chip). But, if you want the list of shapes for post-processing, like in Sathya's case, I think you need a SKILL function, like the one you have written. Therefore, the problem cannot be entirely bypassed by using "Mark Net", unless you only need to display the shapes.

    Thanks!


    Originally posted in cdnusers.org by m27315
    • Post Points: 0
  • Fri, Aug 10 2007 12:27 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Net Tracing - Skill Reply

    m27315,
    I put a lot of work into improving the performance and tracing supplies is definitely slow. However, my routine actually traces supplies faster than markNet. The main thing I did was limit dbGetTrueOverlaps to only check one layerName across all levels of hierarchy. It was only ever checking for overlaps on one metal layer at a time. I had a table of via names used in the design and the names of the layers that were connected by each via. Every via in our design contains the cut layer and the connecting metals.

    example:
    Via name    Connecting metals
    "VIA1"         list("metal1" "metal2")
    "VIA2"         list("metal2" "metal3")
    "CON"         list("poly" "metal1")

    Every overlapping metal shape was checked to see if it was inside one of the vias. If it was, then that shape was used to look for overlaps on both connecting metals. I never looked for overaps on the cut layers, otherwise things would be very slow. If someone accidentally flattens a via or contact, my routine will not trace connectivity through it. The trade off basically came down to speed or ability to handle flat data. I have considered adding an option to trace the flat data, but no one has ever needed it. They usually fix the flat vias instead.

    Basically, I start with a metal shape, break it into rectangles and run dbGetTrueOverlaps on each rectangle, only looking for shapes on the same layer. I have a filtering routine that ensures I throw out items I have already visited. When the overlaps routine returns a shape in a via cell, I then run a second dbGetTrueOverlaps on the connecting layer.

    My benchmarks on a supply signal in a medium sized block showed the following:
    Mark Net: 446 seconds
    My trace: 335 seconds (55 seconds in dbGetTrueOverlaps)

    My routine still has room for improvement.

    -Derek


    Originally posted in cdnusers.org by dmay
    • Post Points: 20
  • Sat, Apr 6 2013 5:05 AM

    • Sameer980
    • Not Ranked
    • Joined on Sat, Apr 6 2013
    • Posts 2
    • Points 40
    Re: RE: Net Tracing - Skill Reply

     Hi,

    I am also working in net tracing functionality, but facing problem with the command dbGetTrueOverlap..I need to find the resistance of net once u probe it. For this concern i need to trace the net so that i can extract all the metal layers and vias to get the total resistance.

     i need help on this....

    thnx

    • Post Points: 20
  • Sat, Apr 6 2013 7:13 AM

    Re: RE: Net Tracing - Skill Reply

    So what is your problem?

    Andrew.

    • Post Points: 5
  • Sat, Apr 6 2013 8:02 AM

    • Sameer980
    • Not Ranked
    • Joined on Sat, Apr 6 2013
    • Posts 2
    • Points 40
    Re: RE: Net Tracing - Skill Reply
    the dbGetTrtueOverlap is not returning all the layers in that cell view. Apart from this what we can do to trace the net and get all the metal layers of the net.
    • Post Points: 20
  • Sun, Apr 7 2013 10:34 PM

    Re: RE: Net Tracing - Skill Reply

    I don't see why you can't use dbGetTrueOverlaps - this should work fine. Maybe if you explained what your actual problem is (i.e. what you're doing, what your code looks like, what the error was, what is going wrong), then somebody might be able to spot what you're doing wrong? At the moment there really isn't enough to go on.

    Currently (in IC61X) you can use Mark Net and then save the resulting shapes to another cellView, but there isn't currently a non-UI version of this (so you'd have to call the leHiMarkNet() and leHiSaveAllHighLightMarkNet() functions to save the shapes to another cellView). There's an enhancement request for a non "Hi" version of these functions.

    Kind Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (12 items)
Sort Posts:
Started by archive at 30 Jul 2007 11:43 PM. Topic has 11 replies.