• 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. what is the difference between parameters in a layout instance...

Stats

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

what is the difference between parameters in a layout instance stored in inst~>parameters/CDF(inst)/inst~>prop

MFahmy
MFahmy over 1 year ago

Hello, 

I was looking at the instance parameters of different layout instances to check which parameters are available and which were changed compared to their default values,

my first approach was to check each parameter in the cdfGetInstCDF(inst)~>parameters and compare its ~>value to ~>defValue but later I found out that some parameters are not defined as CDF but rather parameters which are stored in "inst~>master~>parameters~>value" and later I found some parameters which are stored in "inst~>prop" 

for some instances there is some sort of redundancy where some of the parameters are available in the three locations, for other instances I found parameters which are only available in one of the three, I couldn't find a correlation between the parameters values being changed compared to default and written in one of those location 

so what is the difference between the three locations below, and what would cause the parameters to be written in one location or redundantly and is there one location from which I can get all the parameters of the instance 


inst~>master~>parameters~>value
inst~>prop
cdfGetInstCDF(inst)~>parameters

Thanks, 

Fahmy 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    Fahmy,

    OK, let me explain these three things:

    1. inst~>master~>parameters~>value
      These are the values used as PCell parameters for the specific variant for that instance. In essence, they will be a combination of the defaults defined for the PCell parameters (which will be in inst~>master~>superMaster~>parameters~>value) overridden by any of these parameters with the same name on the instance (i.e. the inst~>prop). Put another way, if the instance's properties (inst~>prop) are for any names that correspond to the PCell parameters, these will override the defaults and generate a variant for that combination.
    2. inst~>prop
      These are any properties on the instance. They can be anything. Typically though if you are using CDF, they are stored if any parameter in the CDF is changed away from the CDF default (although in some cases the default values might also be stored on the instance if that CDF parameter has storeDefault=yes). Note that interesting things can happen if your CDF defaults are different from the PCell defaults, as (without storeDefault=yes), if the create instance/edit properties form show a value which is the same as the CDF default then the property is not stored on the instance, and the PCell will then get the PCell's default - which may be different from what the Edit Properties/Create instance is showing. Essentially, it's bad/dangerous practice to have CDF defaults different from the PCell's default (unless you are careful with storeDefault=yes).
    3. cdfGetInstCDF(inst)~>parameters
      This is all the parameters defined in the CDF, with some values overwritten by any properties with the same name on the instance. So instance properties override any default values in the CDF. Of course, CDF parameters may not necessarily be just for PCells - you may have many parameters that are for simulation or display purposes and don't affect the layout.

    Hope that helps a bit!

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • MFahmy
    MFahmy over 1 year ago in reply to Andrew Beckett

    Thanks for the clarification it is really helpful, 

    1. So would it be right to assume that any PCell parameter or CDF parameter that is changed from default will be stored on the instances properties (inst~>prop) along with other generic properties? (given that the PCell defaults are the same as CDF defaults and storDefault=no)

    2. I understand that CDF could be for PCells or it could contain other parameters as you mentioned,

    but is there a reason why some of the PCell parameters appear in the CDF so they are both PCell and CDF and other parameters are exclusively PCell parameters, in other words, what dictates whether a PCell parameter is defined in the CDF or not, I did some test to find out that for most of the PCell instances around half of the PCell parameters are in the CDF and the other half is not 

    Thanks, 

    Fahmy 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to MFahmy

    Fahmy,

    To answer your questions:

    MFahmy said:
    1. So would it be right to assume that any PCell parameter or CDF parameter that is changed from default will be stored on the instances properties (inst~>prop) along with other generic properties? (given that the PCell defaults are the same as CDF defaults and storDefault=no)

    Yes, that's right.

    MFahmy said:

    2. I understand that CDF could be for PCells or it could contain other parameters as you mentioned,

    but is there a reason why some of the PCell parameters appear in the CDF so they are both PCell and CDF and other parameters are exclusively PCell parameters, in other words, what dictates whether a PCell parameter is defined in the CDF or not, I did some test to find out that for most of the PCell instances around half of the PCell parameters are in the CDF and the other half is not 

    I'm surprised it's as many as that. If you have CDF defined at all, then the edit properties/create instance form will only show those (and possible not all of the CDF parameters if they have the display callback returning nil), but sometimes parameters are derived from others in the CDF callbacks (you'd still expect that the derived parameters are in the CDF as they would need to be set by the CDF callbacks).

    The main reasons I can think of for not having PCell parameters in the CDF are:

    1. Parameters representing shapes which are used in a fluid pcell - in that case, there are methods in the fluid protocol that might be setting them and there's no real need to have them in the CDF
    2. Obsolete parameters on the PCell which are no longer used, but are still defined in the PCell
    3. Special parameters which are updated by custom SKILL code and bypassing the usual edit props/create instance UI

    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