• 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. Traversing a Schematic hierarchy and applying selective...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 144
  • Views 14301
  • 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

Traversing a Schematic hierarchy and applying selective changes (BASIC questions inside)

Michele Ancis
Michele Ancis over 10 years ago

Hi All,

I am trying to get some leverage from automation of some tasks on my database.

My aim is to write some simple and compact code to "scan" a given hierarchy - in schematic - and be

then able to perform selective changes on some of the cells (or shall I say cellviews? It is actually schematics only) based on different criteria such as

- cellName

- baseName

- specific CDF properties

I think I have got some bits and pieces from my search on this Forum, however still the complete

picture is missing, and I was not able to achieve that by reading the manuals. To me, as a newbie to this, they

look too scattered and I am always missing the next bit. So I hope you can help me with that.

What I gathered so far

http://community.cadence.com/cadence_technology_forums/f/48/p/23100/1313083#1313083

If you select something from a Schematic window, the code:

x=car(GetSelectedSet())

will give you a handle (ObjectID) to what you have selected, and if this is an "inst" you can then access the set of CDF properties through:

CDF = cdfGetInstCDF(x)

at this point, you are able to check/modify many properties including widths, layers, fingers,...This seems OK

------------------------------------------

http://community.cadence.com/cadence_technology_forums/f/48/t/26388

once you have a cellview handle, you can set up a recursive procedure visiting each instance contained in that cellview.

You can then decide what to do with that specific instance you are visiting, like change some properties if its baseName matches

your query, or whatever else.

The function suggested for getting the first handle, that to the cellview, is asiGetTopCellView(currentSession), thus requiring a

currentSession=asiGetSession(hiGetCurrentWindow())

beforehand.

What I would like to know better

I am looking for something more flexible, where I can give the name of the "topCellView" in different ways, for instance:

 - performing a selection on a schematic window (i.e of a cell within some schematic)

 - inputting a library/cell name combination

I was not able to find a way to accomplish this...Maybe I am looking at the problem from the wrong side...

Specifically, I found no way to get the ddId of a library, which may be the right starting point to input a cell from there (I assume

one could reference, from the "object library X", the different cells which come in it).

I found that if you look at the object returned by

tt=geGetEditCellView()

having previously selected a schematic window of your cell of interest, 

there is a property of the cellView called "lib" bearing a dd number, which I assume to be the lib ddID:

tt~>??

However if I try dbAllCellViews(0x1b232568 "MY_CELL_NAME") I get an "invalid library ID" type of response....What am I missing here?

I think I could probably perform a series of cdr(tt) until I finally get to the handle I am interested in, but I am sure there is a more elegant way.

In conclusion

As you see I am pretty scattered around, without a clear picture of where are the elements I need to perform this task, really.

Simple things like how to reference (get the ID for) a cell, a cellView, a library. This, by selection, or by "name".

I do not want to really go deep in SKILL and I do not think that the task I have in mind is difficult, so probably with the right hints

you would get me on the path reasonably soon...

Any pointers to concepts, solutions, specific parts of a manual I should read are greatly appreciated!!

Thank you in advance,

Michele

  • Cancel
Parents
  • Michele Ancis
    Michele Ancis over 10 years ago

    ...And if I just waited a little bit...I found in the Cadence Design Framework II SKILL Functions Reference

    the first bit of my "solution". The way to open a cellView from the name of a library and cell is to use:

    dbOpenCellViewByType()

    OK, that's nice :-)

    M

    P.S. any un-cluttering action from your side is still highly sought after!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Michele Ancis
    Michele Ancis over 10 years ago

    ...And if I just waited a little bit...I found in the Cadence Design Framework II SKILL Functions Reference

    the first bit of my "solution". The way to open a cellView from the name of a library and cell is to use:

    dbOpenCellViewByType()

    OK, that's nice :-)

    M

    P.S. any un-cluttering action from your side is still highly sought after!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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