• 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. highlighting instance(s) from their dbID(s), and not mouse...

Stats

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

highlighting instance(s) from their dbID(s), and not mouse click

Leonardo Vinci
Leonardo Vinci over 7 years ago

Consider there are about 100 instances in my layout view, and i also have a list of their dbIDs. From the CIW window using SKILL, if i mention any dbID, can it hilight that particular instance which the dbID corresponds to? 

I want to use this application in my code. 

Thank you! 

Leo/Leonardo 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    There are several options:

    • geSelectFig - just select the object (very simple, but obviously conflicts with any user selection that you're doing)
    • geAddInstProbe - add a probe on the instance
    • geAddHilightFig - add an object to a hilight set.

    Just to give you an idea of the last:

    hs=geCreateHilightSet(geGetEditCellView() list("y2" "drawing"))
    hs~>enable=t
    geAddHilightFig(hs instID)

    I often record the hilight set by storing it on the window so I can retrieve it later in case I want to add things or remove things from the hilight set - e.g. hiGetCurrentWindow()~>myHilightSet=hs and then retrieve it with hs=hiGetCurrentWindow()~>myHilightSet - so for example:

    winId=hiGetCurrentWindow()
    hs=winId~>myHilightSet || geCreateHilightSet(geGetEditCellView() list("y2" "drawing"))
    winId~>myHilightSet=hs

    hs~>enable=t
    geAddHilightFig(hs instID)

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Leonardo Vinci
    Leonardo Vinci over 7 years ago in reply to Andrew Beckett

    I am using geSelectFig(db:0x58c23c1b) but its showing error that db is unbound variable. Also, its changing this hex 0x58c23c1b to decimal. I am using wrong, can you suggest? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Leonardo Vinci

    You can't use db:0xnnnnnnnn as a literal value; that's just the print representation of the object (which is there for debugging - you can use that to see some idea that it's a db object and that it's distinct from other db objects because it has a different id number). You have to retrieve the database object from the database somehow (e.g. store it in a variable) and then pass that to the geSelectFig function. For example, you could use:

    cvId=geGetEditCellView()
    dbId=dbFindAnyInstByName(cvId "I1") ; or whatever the instance name is you want to find
    geSelectFig(dbId)

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Leonardo Vinci
    Leonardo Vinci over 7 years ago in reply to Andrew Beckett

    Andrew, actaully i want to hilight those nets whose geGetSelSet()~>net~>name==nil, (geGetSelSet() are all selected nets), i.e i want to find all those nets whose Route Net Name is empty or nil, i.e those nets which are not connected. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Leonardo Vinci

    OK, so that's not really what  you said before. You were asking about instances - now you're talking about nets. In fact you're not even really asking about that, because it must be the physical shapes you have selected, and you presumably want to highlight the shapes that don't have a net (if the "nets" were selected, they'd have a net object).

    So something like this:

    ; filter the selected shapes to find those which have no net (and are interesting objects)
    shapes=geGetSelSet()
    noNet=setof(shape shapes !shape~>net && !member(shape~>objType '("label" "line" "textDisplay")))
    ; create the hilight set if not already created
    winId=hiGetCurrentWindow()
    hs=geIsValidHilightSet(winId~>myHilightSet) && winId~>myHilightSet  || geCreateHilightSet(geGetEditCellView() list("y3" "drawing"))
    winId~>myHilightSet=hs

    hs~>enable=t
    ; add the objects to it.
    foreach(shape noNet
      geAddHilightFig(hs shape)
    )

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Leonardo Vinci
    Leonardo Vinci over 7 years ago in reply to Andrew Beckett

    This code is interesting Andrew, i have learnt geIsValidHilightSet() function from this. 
    Also, i am not able to unmark this highlist, in Toolbar, i am going to conectivity->Nets->Unmark All 
    But its not able to unmark. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Leonardo Vinci

    You'd need to do:

    hs=hiGetCurrentWindow()~>myHilightSet
    when(geIsValidHilightSet(hs)
      geDeleteHilightSet(hs)
      hiGetCurrentWindow()~>myHilightSet=nil
    )

    You could just change the hilight set to be disabled so it's not visible.

    This is nothing to do with mark net or unmark net; that's a specific command that may just use its own hilight set to render the results.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 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