• 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. Compute a CDF param from two existing parameters

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 8386
  • 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

Compute a CDF param from two existing parameters

unSkilled
unSkilled over 3 years ago

Virtuoso IC6.1.8-64b.500.23

Hi all,

I would like create a user-level CDF that displays the total width of a transistor as the product of a finger width (Wfg) and total multiplier (totalM). Strangely, the total W is not available as parameter. I tried the following:

/****************************************************/
 LIBRARY = "myLib"
 CELL    = "mynmos"
/****************************************************/

let( ( libId cellId cdfId )
    unless( cellId = ddGetObj( LIBRARY CELL )
        error( "Could not get cell %s." CELL )
    )
    when( cdfId = cdfGetUserCellCDF( cellId )
        cdfDeleteCDF( cdfId )
    )
    cdfId  = cdfCreateUserCellCDF( cellId )

    
    ;;; Parameters

    cdfCreateParam( cdfId
        ?name           "totalW"
        ?prompt         "wtot"
        ?defValue       "1"
        ?type           "string"
        ?display        "t"
        ?editable       "nil"
        ?callback       "Wfg*totalM"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )

    ;;; Properties
    cdfId->formInitProc            = "tsmcCdfFormInitCB"
    cdfId->doneProc                = ""
    cdfId->buttonFieldWidth        = 340
    cdfId->fieldHeight             = 35
    cdfId->fieldWidth              = 580
    cdfId->promptWidth             = 300
       cdfId->paramLabelSet           = "Wfg totalW l -m_ov_nf"
    cdfId->opPointLabelSet         = "(gm/id) region vgs vth vds vdsat id"
    cdfId->modelLabelSet           = "vtho toxe cj  "
    cdfId->paramEvaluate           = "nil nil nil t nil"
    cdfSaveCDF( cdfId )
)

--

What happens is that the totalW displayed is the default value, so it doesn't get calculated. I've tried multiple different syntaxes for the product of Wfg and totalM but nothing seems to work. Any hints are highly appreciated.

Regards,

  • Cancel
  • mbracht
    mbracht over 3 years ago

    Hi,

    You make the callback definition for the wrong parameter - totalW. In fact totalW is the the parameter you actually want to get recomputed  so you need to define the callback(s) for the parameters that totalW depends from - Wfg and totalM. Other than that you need to refer to the values of the CDF parameters in terms of the cdfgData data structure. So to refer to totalW you need to say cdfgData~>totalW~>value.

    regards

    Max

    • 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