• 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 size transistors using SKILL

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 143
  • Views 17850
  • 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 size transistors using SKILL

KrishnaPraveen
KrishnaPraveen over 15 years ago

Hi!

 I wanted to know how one can size a transistor schematic using SKILL.

 I am using these commands but I want to know how I can size the transistors, I read the CDSDOC but could not figure out:

windowID = dbOpenCellViewByType("test_schematic" "skillSchematic" "schematic" "schematic" "w")

masterID = dbOpenCellViewByType("analogLib" "nmos4" "symbol")

dbCreateInst(windowID masterID "I0" 1:1 "R0" 1)

These commands creates an nmos in the schematic view but I want to be able to size it.

 I tried doing this which I read in some code (though it does not make sense to me) :

windowID~>w="10u"

windowID~>l="130u"

 I think I am doing something fundamentally wrong.

I want to be able to size the transistors as I place them in the shematic.

 Any help is highly appreciated.

 

Thank You.

Krishna

 

  

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Krishna,

    You appear to be getting confused about what ID does what.

    First of all, the result of dbOpenCellViewByType is not a window id. It's a cellView id. Whilst the variable name doesn't matter, calling it windowID is just confusing.

    Secondly, you would want to set the w and l on an instance id (i.e. the return value ofdbCreateInst). Setting it on a cellView id makes no sense.

    So you probably want:

    cellViewID = dbOpenCellViewByType("test_schematic" "skillSchematic" "schematic" "schematic" "w")

    masterID = dbOpenCellViewByType("analogLib" "nmos4" "symbol")

    instID=dbCreateInst(cellViewID masterID "I0" 1:1 "R0" 1)

    instID~>w="10u"

    instID~>l=" 130u"

    For example.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • KrishnaPraveen
    KrishnaPraveen over 15 years ago

     Thank you very much Andrew! It worked. I was trying to set the height and width using cellViewID and masterID callbacks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • KrishnaPraveen
    KrishnaPraveen over 15 years ago

    But why does this not change the value in the CDF Parameter list (in the properties) of the instance?

    When I use this :

    instID~>w="10u"

    instID~>l=" 130u"

     It only changes the value of width and length next to the instance but not in the CDF Parameter list??

     But afer I change the values in the CDF Parameter list it updates. I don't understand this behaviour!

     

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

    The only reason this could happen is if the parameters are not actually called w and l that are displayed in the CDF. If the property names match (and are of the correct type), then the CDF for an instance ALWAYS uses the instance property to override the CDF default.

    Sometimes there are "CDF Callbacks" which are used to derive one CDF parameter from another whenever you  modify the value of one parameter. You might have (say) "wf" from which "w" is computed (or something similar). For more information see my Cadence Online Support note The Dangers of CDF Callbacks together with How to call CDF callbacks procedurally from SKILL?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • KrishnaPraveen
    KrishnaPraveen over 15 years ago

    Andrew, I think I am close.

    The behaviour that I am observing is, the width and the length does not change in the CDF Parameter list after I do this:

    instID~>w="10u"

    instID~>l=" 130u"

    These values are put next to the instance (I read one of your older posts.)

    These get changed once I go to the instance properties->"Modify"->"Apply". Then the values are changed in the CDF Parameter list.

    But this does not automate the sizing process. So how can I modify the values?

     I tried : cdfID = cdfGetInstCDF(instID), using this callback it does not let me modify the attributes.

     

     

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

    This doesn't make any sense (by the way "cdfId = cdfGetInstCDF(instID)" is not a callback, just to correct your terminology). The best thing would probably to contact Cadence Customer Support so that somebody can take a look at precisely what the problem is - I'm sure there is some aspect of the issue here you're not capturing correctly or clearly in order for me to diagnose it. Having one of the support team (of which I'm part of, in Europe) have a look at your actual data would really help here.

    Regards,

    Andrew.

    • 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