• 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. How to get the net-figure which is connected to a specific...

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 143
  • Views 16506
  • 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

How to get the net-figure which is connected to a specific instance terminal

MLindig
MLindig over 13 years ago

Hi,

I want to hilight only a part of a net (mainly the part from instance terminal to next branch of net). Here is an example:

I want to hilight the net part from transistor "M0" drain terminal which is connected on net "knt". I picket up the right terminal from

term = dbFindSigByName(cvId "knt")~>memInstTerms

term->net->figs contaions now all figures of the connected net. Which is the right figure (connected to term) which I could pass to geAddHilightFig(hlSetId fig) function?

 Thanks Michael

  • Cancel
  • Sarvani
    Sarvani over 13 years ago

     Hi Michael,

                     Sorry, I didn't Understand what you need. I feel you need to hilight instances which are connected to the net. If your version is 5141 then use auProbeAddDevsForNet() .

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MLindig
    MLindig over 13 years ago

    Hi Sarvani,

    I know that the textual description of my problem is little bit complicated :(. First of all I want to hilight only parts of net without any user interface interaction.

    M0-D-----
            |
            
    +----+--M2-G
            |    |
    M1-D-----    |
                 |

    In the example above I want only hilight the net from M0-D to the first '+'. I do not know how to decide which figure(s) from net figures is (are) the right one(s).

    Thanks Michael

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Michael,

    The database doesn't contain this information. Even if it did contain it for inst terms, how would it do it for each piece segment where there are joins? You'd have to have some kind of complex tree - and for connectivity you don't need that information - it wouldn't be needed for a netlister, for example.

    Assuming this is a schematic (you didn't say), you'd need to find the figures on the net, and then identify which of them overlap with the instance's pins (probably just seeing whether the coordinates of the wire segments are within the pin shape bBox, and then looking for segments with only one overlap - until you end up at a point with several coincident start/end points). Not too difficult to do.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MLindig
    MLindig over 13 years ago

    Andrew,

    yes you are right it is for schematics. Currently I found all figures on the net (no problem) but I do not know how to get the instance pin bounding box (I identified the instance terminal object ("D" for transistor) but there is no bBox attribute!?). I also identified all net figures which are connected to an instance.

    Currently I search for the closest line figure to the instance->xy attribute, but this may fail for transistors (or other instances with more then 2 pins) where more than one pin is connected to same net.

    Michael

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Michael,

    Assuming you have an instTerm object for the M0/D terminal (arrived at via sig~>instTerms or sig~>memInstTerms - depends on if you need to handle iterated instances and busses, say):

    instTerm~>term~>pins

    will give you list of the pin objects for that terminal. For a transistor there will typically only be a single pin - you could potentially have more than one pin - so it's up to you whether you need to loop around the pins or just deal with the first one. 

    pinObj=car(instTerm~>term~>pins)
    pinFig=pinObj~>fig 

    This will give you the shape for the pin. Strictly in OA you should look at pinObj~>figs which is a list of all the strongly connected pin shapes, but this is not used in symbols at the moment - maybe one day - but ~>fig will always give you one of the figures if there are more than one (in CDB versions there was only a single figure on a pin anyway).

    If you looked at pinFig~>bBox it will give you the bounding box of the pin figure, but that will be in the coordinate system of the transistor symbol. So you'd need to transform it:

    pinBBox=dbTransformBBox(pinFig~>bBox instTerm~>inst~>transform)

    Hopefully that helps!

    Regards,

    Andrew

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MLindig
    MLindig over 13 years ago

    Andrew,

    with your hints I could finish the net segment hilighting ;)!

    Thanks

    Michael

    • 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