• 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. missing dollarEqualParams in capacitor subckt in auCdl ...

Stats

  • Locked Locked
  • Replies 0
  • Subscribers 125
  • Views 13024
  • 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

missing dollarEqualParams in capacitor subckt in auCdl netlist

Paulux
Paulux over 14 years ago

Hello,

I want to make these lines in auCdl netlist.

.SUBCKT umim PLUS MINUS
CC0 PLUS MINUS 1.5E-4*cw*cl $[CA] $L=cl $W=cw
.ENDS
XC1 out gnd! /umim cl=20 cw=20

But auCdl netlist gives
.SUBCKT umim PLUS MINUS
CC0 PLUS MINUS (cw)*(cl) $[CA]
.ENDS
XC1 out gnd! / umim cl=20 cw=20

From Virtuoso Analog Design Environment User Guide Product Version 5.1.41, p.629,  only C or area or (L&W) will be outputted in the netlist. How could I make auCdl netlist shown above lines?

Also dollarEqualParams cannot be printed even after I type in CDF as shown below.But from manual, $L=cl $W=cw should be printed when I type into the field of dollarEqualParams, why this cannot happen?

Thanks in advance for your help

The umim CDF is
let( ( libId cellId cdfId )
    unless( cellId = ddGetObj( LIBRARY CELL )
        error( "Could not get cell %s." CELL )
    )
    when( cdfId = cdfGetBaseCellCDF( cellId )
        cdfDeleteCDF( cdfId )
    )
    cdfId  = cdfCreateBaseCellCDF( cellId )

    ;;; Parameters
    cdfCreateParam( cdfId
        ?name           "cl"
        ?prompt         "cl"
        ?defValue       "15"
        ?type           "string"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "cw"
        ?prompt         "cw"
        ?defValue       "15"
        ?type           "string"
        ?parseAsCEL     "yes"
    )

    ;;; Simulator Information
    cdfId->simInfo = list( nil )

    cdfId->simInfo->ams = '( nil )
    cdfId->simInfo->auCdl = '( nil
        dollarEqualParams nil
        dollarParams      nil
        modelName         ""
        propMapping       nil
        instParameters    nil
        namePrefix        "X"
        termOrder         ("PLUS" "MINUS")
        componentName     subcircuit
        netlistProcedure  ansCdlSubcktCall
    )
    cdfId->simInfo->cdsSpice = '( nil
        namePrefix        "X"
        termOrder         ("MINUS" "PLUS")
        componentName     "subcircuit"
        macroArguments    ("cl" "cw")
        netlistProcedure  ansSpiceSubcktCall
    )
    cdfId->simInfo->hspiceD = '( nil
        namePrefix        "X"
        termOrder         ("MINUS" "PLUS")
        componentName     "subcircuit"
        netlistProcedure  nil
    )
    cdfId->simInfo->hspiceS = '( nil
        namePrefix        "X"
        termOrder         ("MINUS" "PLUS")
        componentName     "subcircuit"
        macroArguments    ("cl" "cw")
        netlistProcedure  ansSpiceSubcktCall
    )
    cdfId->simInfo->spectre = '( nil
        modelParamExprList nil
        optParamExprList  nil
        opParamExprList   nil
        stringParameters  nil
        propMapping       nil
        termMapping       nil
        instParameters    nil
        otherParameters   (cl cw)
        termOrder         ("PLUS" "MINUS")
        componentName     subcircuit
        netlistProcedure  nil
    )
    cdfId->simInfo->spectreS = '( nil
        namePrefix        "X"
        termOrder         ("MINUS" "PLUS")
        componentName     "subcircuit"
        macroArguments    ("cl" "cw")
        netlistProcedure  ansSpiceSubcktCall
    )
//*****************************************
The mim1 CDF is
let( ( libId cellId cdfId )
    unless( cellId = ddGetObj( LIBRARY CELL )
        error( "Could not get cell %s." CELL )
    )
    when( cdfId = cdfGetBaseCellCDF( cellId )
        cdfDeleteCDF( cdfId )
    )
    cdfId  = cdfCreateBaseCellCDF( cellId )

    ;;; Parameters
    cdfCreateParam( cdfId
        ?name           "l"
        ?prompt         "Length"
        ?defValue       "pPar(\"cl\")"
        ?type           "string"
        ?display        "artParameterInToolDisplay('l)"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "w"
        ?prompt         "Width"
        ?defValue       "pPar(\"cw\")"
        ?type           "string"
        ?display        "artParameterInToolDisplay('w)"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "c"
        ?prompt         "Capacitance"
        ?defValue       ""
        ?type           "string"
        ?display        "artParameterInToolDisplay('c)"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "ic"
        ?prompt         "Initial condition"
        ?units          "voltage"
        ?defValue       ""
        ?type           "string"
        ?display        "artParameterInToolDisplay('ic)"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "model"
        ?prompt         "Model name"
        ?defValue       ""
        ?type           "string"
        ?display        "artParameterInToolDisplay('model)"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "m"
        ?prompt         "Multiplier"
        ?defValue       ""
        ?type           "string"
        ?display        "artParameterInToolDisplay('m)"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )
    cdfCreateParam( cdfId
        ?name           "scale"
        ?prompt         "Scale factor"
        ?defValue       ""
        ?type           "string"
        ?display        "artParameterInToolDisplay('scale)"
        ?parseAsNumber  "yes"
        ?parseAsCEL     "yes"
    )
    ;;; Simulator Information
    cdfId->simInfo = list( nil )
    cdfId->simInfo->auCdl = '( nil
        dollarEqualParams (cl cw)
        dollarParams      nil
        netlistProcedure  ansCdlCompPrim
        instParameters    (L W)
        componentName     cap
        termOrder         (PLUS MINUS)
        propMapping       (nil L l W w)
        namePrefix        "C"
        modelName         "CA"
    )
    cdfId->simInfo->cdsSpice = '( nil
        propMapping       nil
        netlistProcedure  ansSpiceCompPrim
        instParameters    (c ic)
        componentName     cap
        termOrder         (PLUS MINUS)
        namePrefix        "C"
        current           port
        termMapping       (nil PLUS "" MINUS "(FUNCTION minus(root(\"PLUS\")))")
        noPortDelimiter   t
        dcSens            nil
        acSens            t
    )
    cdfId->simInfo->spectre = '( nil
        propMapping       nil
        namePrefix        ""
        otherParameters   (model)
        instParameters    (c w l m scale trise ic tc1 tc2)
        termOrder         (PLUS MINUS)
        termMapping       (nil PLUS \:1 MINUS "(FUNCTION minus(root(\"PLUS\")))")
        componentName     capacitor
    )
    cdfId->simInfo->spectreS = '( nil
        propMapping       nil
        netlistProcedure  ansSpectreSCompPrim
        otherParameters   (model)
        instParameters    (c w l m scale trise tc1 tc2 ic)
        termOrder         (PLUS MINUS)
        termMapping       (nil PLUS \:1 MINUS "(FUNCTION minus(root(\"PLUS\")))")
        namePrefix        "C"
        componentName     capacitor
        noPortDelimiter   t
        current           port
    )
Thanks in advance for your help.

  • 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