• 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. Can a cell-level CDF stay with its cell, regardless of library...

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 143
  • Views 18854
  • 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

Can a cell-level CDF stay with its cell, regardless of library?

caver456
caver456 over 8 years ago

In order to add control to pcell parameters in the edit parameters GUI (i.e. make a cyclic field, change the parameter display text, etc) I understand you need to use CDF.  (Interesting that this support case uses the wording that CDF is "the best method"... that implies there's another way... is that true?) - CDF works nicely, but, it looks like a base-cell-level CDF still depends on the library it was created with, i.e. if you copy that cell to a different library that doesn't have the same CDF, then the pcell edit parameters form will use the default display (i.e. actual pcell parameter names as the field labels; no cyclic fields; etc).  One post mentions that you can copy the CDF of the cell along with the cell itself by using ccpCopy but that seems pretty cumbersome and I didn't get it to work as expected.

The CDF docs seemed to indicate you could attach a CDF to a cell only, but maybe I'm misunderstanding?  Based on all of the above, it looks like a cell-only CDF is only valid for that cell when it is in the library specified in the cdfCreateBaseCellCDF command?

In other words, is there a way to get a nice clean modular independent pcell along with the user-friendly edit parameters form fields, such that the cell can be copied to any library and still work and look the same?

  • Cancel
  • caver456
    caver456 over 8 years ago
    Good point on the function names. We did go with a unique prefix.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    One way of (almost) doing this is to use Cadence's PCell Designer product (developed by my team) - see the data sheet for the product. This does actually put a run-time context into your library, but other than that the code is self-contained in the cellView.

    It's a useful tool to make building PCells much easier, with quicker development times and an excellent debugging environment.

    Contact your account team if you're interested...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • caver456
    caver456 over 8 years ago
    That looks like a pretty complete and handy tool, but probably not a good fit for our group doing 'under the table' pcells (maybe just a couple of them). I might just do a cheesy placeholder-processor csh script, so you can have the common code in a separate file, and it gets pasted into the actual pcell function by the csh script right before you compile it in skill. Or a skill wrapper function that invokes the placehodler processor script then compiles the processed skill file. Regardless, thanks for the help and the good leads.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • caver456
    caver456 over 8 years ago
    To follow up with the original question, after working the topic with Cadence support, turns out I had just neglected to actually save the cell base cdf. The orignal pcell cdf code I was using (I don't remember where I copied the code structure from) was like so:

    let( ( libId cellId cdfId )
    unless( cellId = ddGetObj("Test" "cpnbil")
    error( "Could not get cell %s." CELL )
    )
    when( cdfId = cdfGetBaseCellCDF( cellId )
    cdfDeleteCDF( cdfId )
    )
    cdfId = cdfCreateBaseCellCDF( cellId )

    ;;; Parameters
    cdfCreateParam( cdfId
    ?name "w"
    ?prompt "W"
    ?defValue "20.0"
    ?type "string"
    )

    ....
    ....

    )

    Looking at the data.dm of that generated cell (i.e. the source of the copy) was a clue (while mostly binary gibberish, the cdf parameters show up in data.dm as plain text) - it had no cdf code in it! Hmm, perhaps it isn't getting saved? After adding 'cdfSaveCDF(cdfId)' before the closing parens, everything works: the original data.dm now has the human-readable GUI code, which does get copied with the cell during the copy command (as long as 'Automatically add dependent property sets' is selected in the Copy Preferences form), so the GUI for the pcell which is the target of the copy command does have the CDF features as expected.

    All is well again - thanks for the help.
    • 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