• 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. Passing CDF parameters into subcells

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 15901
  • 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

Passing CDF parameters into subcells

anomolousDoug
anomolousDoug over 6 years ago

Hi,

I have a hierarchical pcell that requires parameters to be passed through from the property sheet into lower level pcells containing unknown parameters, but the parameters do not update with any changes or apply.

Currently, this is the approach:

.

.

cv=dbOpenCellViewByType( library subcell "layout" "maskLayout" "r")
subParams=magicallyGetParameters( cv); Extract list of parameters

foreach( parameter subParams

   cdfCreateParam( cdf blah blah blah))

dbClose(cv)

cdfSaveCDF( cdf)

-------------------------------------------------------

pcDefinePCell( list( library "TopPcell" "layout")

   ((paramA int paramA)

   (paramB int paramB)

(subParams ilList subParams))

.

.

dbCreateParamInstByMasterName( pcCellView lib subcell "layout" "Q1" 0:0 "R0" 1 subParams)

)

The subParams list never updates, and only the default values ever go in, even though all sub parameters are extracted and displayed correctly in the CDF form.

I imagine this probably has something to do with callbacks, but I just don't really understand them, or even know when they're necessary.

Thanks

  • Cancel
Parents
  • mbracht
    mbracht over 6 years ago

    Hi...May I see what exactly the subParams list looks like. The PCell parameters passed to dbCreateParamInstByMasterName() need to be a list of sublists with each sublist being a 3 element list identifying param name, type and value.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • mbracht
    mbracht over 6 years ago

    Hi...May I see what exactly the subParams list looks like. The PCell parameters passed to dbCreateParamInstByMasterName() need to be a list of sublists with each sublist being a 3 element list identifying param name, type and value.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • anomolousDoug
    anomolousDoug over 6 years ago in reply to mbracht

    Thanks for having a look. The format of the subParams list is correct according to your description, but the values contained within are stale, and do not get updated with any change in the parameter form. However, the parameters at the top level do get updated correctly. The form of passthrough subParams and the lower level pcells are disconnected somehow. I saw an example of how to do this when using a mosaic containing the subcells by using dbReplaceProp on mosaic->instanceList, but that does not apply in this case as these subcells are flat placements, and I don't know what the equivalent would be. It seems things get more complicated when you introduce hierarchy inside a pcell.

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to anomolousDoug

    The main issue here is that you've not really provided enough information to know what you're doing wrong (or right). If you can't post the complete example here, I suggest you contact customer support.

    Thanks,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • anomolousDoug
    anomolousDoug over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    Here is a more complete example of what I'm trying to accomplish. In the following code, there are 2 pcells. "rectangle" is the higher level cell that parses the parameter list in the lower cell, and in turn calls the lower level cell "subRectangle" attempting to pass the cdf parameters through to the lower cell. I've gone through several unsuccessful iterations, but this is where it stands now:

    let(()
    when((cell = ddGetObj("CCSsandbox" strcat("rectangle") nil nil nil "a")) &&
    (cdf = cdfGetBaseCellCDF(cell) || cdfCreateBaseCellCDF(cell)) cdfDeleteCDF(cdf)
    cdf = cdfGetBaseCellCDF(cell) || cdfCreateBaseCellCDF(cell)

    cv=dbOpenCellViewByType( "CCSsandbox" "subRectangle" "layout" "maskLayout" "r")
    subParamList=list()
    if( cv->isParamCell then
    params=car( setof( param cv->prop param->name=="parameters"))
    foreach( mapcar param params->value
    k=symbolToString( type( param->value))
    cond(( k=="flonum" k="float")
    (k=="fixnum" k="int"))
    subParamList=append( subParamList list( list(param->name k param->value))))
    dbClose(cv)
    foreach( parameter subParamList
    cdfCreateParam(cdf
    ?name car( parameter)
    ?type nth(1 parameter)
    ?defValue nth(2 parameter)
    ?parseAsNumber "no"
    ?prompt car( parameter)
    ?parseAsCEL "no")))
    cdfSaveCDF(cdf));when

    pcDefinePCell( list(ddGetObj("CCSsandbox") "rectangle" "layout")
    (
    (subParamList ilList subParamList))
    let((xPitch yPitch element subParams)
    element=dbOpenCellViewByType( "CCSsandbox" "subRectangle" "layout")
    break()
    dbCreateParamInst( pcCellView element "" 0:0 "R0" 1 subParamList)
    dbClose( element)
    );pcell let
    );pcDefinePCell
    );cdf let

    -----------------------------------------------------------------------------------------------------------------------

    let((W H)
    when((cell = ddGetObj("CCSsandbox" strcat("subRectangle") nil nil nil "a")) &&
    (cdf = cdfGetBaseCellCDF(cell) || cdfCreateBaseCellCDF(cell)) cdfDeleteCDF(cdf)
    cdf = cdfGetBaseCellCDF(cell) || cdfCreateBaseCellCDF(cell)
    W=1.0
    H=1.0
    ;Default parameter values:
    cdfCreateParam(cdf
    ?name "W"
    ?type "string"
    ?defValue sprintf(nil "%.3f" W)
    ?parseAsNumber "yes"
    ?prompt "Width:"
    ?parseAsCEL "yes")
    cdfCreateParam(cdf
    ?name "H"
    ?type "string"
    ?defValue sprintf(nil "%.3f" H)
    ?parseAsNumber "yes"
    ?prompt "Height:"
    ?parseAsCEL "yes")
    cdfSaveCDF(cdf));when
    pcDefinePCell( list(ddGetObj("CCSsandbox") "subRectangle" "layout")
    (
    (W float W)
    (H float H))
    let(()
    dbCreateRect( pcCellView list( "y0" "drawing") list( 0:0 W:H))
    );pcell let
    );pcDefinePCell
    );cdf let

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • anomolousDoug
    anomolousDoug over 6 years ago in reply to mbracht

    subParamList (("H" "float" 1.0) ("W" "float" 1.0) )

    • 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