• 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. Changing instance properties though SKILL

Stats

  • Locked Locked
  • Replies 13
  • Subscribers 145
  • Views 32038
  • 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

Changing instance properties though SKILL

soathana
soathana over 13 years ago

Hi everyone I am using SKILL to generate a schematic.

So I am using schReplaceProperty function, but i have some problems. How can I get the names used for the instance parameters? The way i do it is call:

inst=dbCreateInst(...)

inst=list(inst)

schReplaceProperty(inst "name" "value") 

So for  width appearing (in Property editor and edit object properties) "Total Width" this is not the case. Apparently When I insert for name  "Total Width" i get a user property named Total, apparently it does not like space :) 

ideas? 

thanks,

Sotiris 

  • Cancel
Parents
  • dmay
    dmay over 13 years ago

    Sotiris,
    The inst I was referring to is an object id like the one returned from dbCreateInst. There are several ways to get the object id:

    1. inst = dbCreateInst(cvid mstr nil x:y "R0" 1)
    2. inst = dbFindAnyInstByName(cvid "U78")
    3. Select the instance in the cellView and then do: inst = car(selectedSet())

    You need to understand the difference between the objects and their names and in the case of parameters, their prompts can be different from the names. Just as you can't do  "U78"~>, you also can't do "Total Width"~>. The reason I sent you the sample procedure called "mysel" was to show you how to identify the the parameter name so you can access the parameter object.

    cdfGetInstCDF is going to return an object id for the cdf, it is not going to return a string. Try loading and running the procedure I sent. Hopefully this will clarify some things for you. Load the code in the CIW, select the instance in your schematic and then run mysel() in your CIW.

    cdf = cdfGetInstCDF(inst)
    This will get the cdf for the instance object id stored in the variable called inst. From this cdf object id, you can then obtain other information from its attributes and properties. To see what is availble on that object id, do the following in your CIW:

    cdf~>?
    cdf~>??
    cdf~>parameters~>?
    cdf~>parameters~>??

    If the inst you are referring to is a pcell with a cdf, you should see a list of object ids when you do ~>? and a list of lists of each object's  attributes and values when you do ~>??.

    Let's say you have a cdf and one of the prompts is "Total Width". You can get this specific parameter from the cdf this way:
    tw = car(setof(x cdf~>parameters x~>prompt=="Total Width))

    The setof command looks at all the parameter ids and finds the one with a prompt attribute equal to "Total Width". It returns this parameter in a list, so we take the car of it and store it in a variable called tw. Now, you can get its name:
    tw~>name
    tw~>value

    Once you know that name, you can access it directly on the inst id. Lets say the name of the "Total Width" parameter is "totalWidth", then you can do this:
    inst~>totalWidth
    or
    inst~>master~>parameters~>totalWidth

    Do some playing around until you get comfortable with object ids.

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • dmay
    dmay over 13 years ago

    Sotiris,
    The inst I was referring to is an object id like the one returned from dbCreateInst. There are several ways to get the object id:

    1. inst = dbCreateInst(cvid mstr nil x:y "R0" 1)
    2. inst = dbFindAnyInstByName(cvid "U78")
    3. Select the instance in the cellView and then do: inst = car(selectedSet())

    You need to understand the difference between the objects and their names and in the case of parameters, their prompts can be different from the names. Just as you can't do  "U78"~>, you also can't do "Total Width"~>. The reason I sent you the sample procedure called "mysel" was to show you how to identify the the parameter name so you can access the parameter object.

    cdfGetInstCDF is going to return an object id for the cdf, it is not going to return a string. Try loading and running the procedure I sent. Hopefully this will clarify some things for you. Load the code in the CIW, select the instance in your schematic and then run mysel() in your CIW.

    cdf = cdfGetInstCDF(inst)
    This will get the cdf for the instance object id stored in the variable called inst. From this cdf object id, you can then obtain other information from its attributes and properties. To see what is availble on that object id, do the following in your CIW:

    cdf~>?
    cdf~>??
    cdf~>parameters~>?
    cdf~>parameters~>??

    If the inst you are referring to is a pcell with a cdf, you should see a list of object ids when you do ~>? and a list of lists of each object's  attributes and values when you do ~>??.

    Let's say you have a cdf and one of the prompts is "Total Width". You can get this specific parameter from the cdf this way:
    tw = car(setof(x cdf~>parameters x~>prompt=="Total Width))

    The setof command looks at all the parameter ids and finds the one with a prompt attribute equal to "Total Width". It returns this parameter in a list, so we take the car of it and store it in a variable called tw. Now, you can get its name:
    tw~>name
    tw~>value

    Once you know that name, you can access it directly on the inst id. Lets say the name of the "Total Width" parameter is "totalWidth", then you can do this:
    inst~>totalWidth
    or
    inst~>master~>parameters~>totalWidth

    Do some playing around until you get comfortable with object ids.

    Derek

    • 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