• 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 Design
  3. SKILL script for modifying CDF parameters of all cells in...

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 126
  • Views 16725
  • 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

SKILL script for modifying CDF parameters of all cells in a library.

RFStuff
RFStuff over 4 years ago

Dear All,

I want to add/remove a CDF parameter (for example Simulation Information-->netlistProcedure) of all cells in a library.

Is there anyway like any SKILL script/command by which  I can achieve this ?

Kind Regards,

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Adjust to suit your needs - this is clobbering the spectre netlistProcedure (not sure why you'd do this, but hey ho):

    lib=ddGetObj("mylib")
    foreach(cell lib~>cells
      cdf=cdfGetBaseCellCDF(cell)
      when(cdf && cdf->simInfo->spectre->netlistProcedure
        printf("netlistProcedure is %L\n" 
          cdf->simInfo->spectre->netlistProcedure)
        ; change it to whatever you want
        cdf->simInfo->spectre->netlistProcedure='doodah
        cdfSaveCDF(cdf)
      )
    )
    
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pvtmjs
    pvtmjs over 4 years ago in reply to Andrew Beckett

    HI Andrew, 

    I'm looking for something similar, but simpler I think. For each component aka device aka symbol aka available CDF in my library I'd like to query the allowable values for each CDF field, but in particular the size related values such as length, width. So far this entry is closest I've found so far. Would you please advise?  Thanks, John

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to pvtmjs

    Not sure this has a great deal to do with the original topic in this post, other than it's visiting every cell in a library (and there are numerous examples of that on the forums; this would have been better off following the forum guidelines and being a new post). It rather depends on what you mean by querying "the allowable values". What does that mean? Other than parameters which are radio or cyclic parameters, there's nothing in the CDF which specifies the allowed values. Sometimes this is enforced (or attempted to be enforced) using a SKILL callback, but there's nothing uniformly in the CDF to say what such limits are.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pvtmjs
    pvtmjs over 4 years ago in reply to Andrew Beckett

    The approach Tools->CDF->Edit->CDF Dump gets one close, but the min and max values are not found in the dump, just default values. More specifically, for a parameter such as length, how might user obtain the max and min values that the CDF will accept. It seems data.dm files are not human readable. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to pvtmjs
    pvtmjs said:
    The approach Tools->CDF->Edit->CDF Dump gets one close, but the min and max values are not found in the dump, just default values. More specifically, for a parameter such as length, how might user obtain the max and min values that the CDF will accept. It seems data.dm files are not human readable.

    The min and max are not there because the CDF does not contain min and max information. It's simply not there. It's irrelevant whether they are human readable or not, as the CDF simply does not contain this information. Hence dumping it out is going to be rather hard!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pvtmjs
    pvtmjs over 4 years ago in reply to Andrew Beckett

    Thanks for the prompt replies!  Since CDF does not contain min and max, I suppose the more literal question is now:  how does the user find the min and max values that the CDF will accept?  

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to pvtmjs

    It's not a matter of "min and max that the CDF will accept". CDF will accept anything. The issue is that there's probably a CDF callback defined for certain parameters which is a SKILL function that may be used to:

    1. Check the value is in a certain range (on the create instance or edit properties form) and then either clip it to that range or give some kind of error (maybe)
    2. Snap the value to a grid (maybe)
    3. Derive other parameters from this parameter (maybe)

    Since the knowledge of limits (if indeed there are any limits) is encoded within that SKILL function, and that could be implemented many different ways, there is no way of generically determining the allowable limits of a field. Even if you conceptually thought about triggering the callback function with a variety of values, it would be very hard to infer whether any change in value was due to a limit being reached, or the fact that it had snapped the value. It's also quite possible that the enforced limits may depend on other parameters, so it's also pretty hard to work out in general.

    For a specific PDK the limits that this callback checks (if any are checked) may be stored somewhere in a way that can be retrieved programatically, but you'd need to have knowledge of where that implementation had stored this information (if anywhere - it might be hard-coded within the SKILL function), and usually that is not documented in the PDK documentation.

    So what you're asking for isn't really possible without knowing how the PDK CDF callbacks were implemented.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to pvtmjs

    It's not a matter of "min and max that the CDF will accept". CDF will accept anything. The issue is that there's probably a CDF callback defined for certain parameters which is a SKILL function that may be used to:

    1. Check the value is in a certain range (on the create instance or edit properties form) and then either clip it to that range or give some kind of error (maybe)
    2. Snap the value to a grid (maybe)
    3. Derive other parameters from this parameter (maybe)

    Since the knowledge of limits (if indeed there are any limits) is encoded within that SKILL function, and that could be implemented many different ways, there is no way of generically determining the allowable limits of a field. Even if you conceptually thought about triggering the callback function with a variety of values, it would be very hard to infer whether any change in value was due to a limit being reached, or the fact that it had snapped the value. It's also quite possible that the enforced limits may depend on other parameters, so it's also pretty hard to work out in general.

    For a specific PDK the limits that this callback checks (if any are checked) may be stored somewhere in a way that can be retrieved programatically, but you'd need to have knowledge of where that implementation had stored this information (if anywhere - it might be hard-coded within the SKILL function), and usually that is not documented in the PDK documentation.

    So what you're asking for isn't really possible without knowing how the PDK CDF callbacks were implemented.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • pvtmjs
    pvtmjs over 4 years ago in reply to Andrew Beckett

    Thanks for the tutorial on this - it improves my understanding as I envisioned a lookup table having the min and max values for parameters such as length and width. Thought to inquire here before inquiring with the particular foundry. Thanks again. John 

    • 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