CDF problem

Discussion in 'Cadence' started by marcoballins, Sep 29, 2008.

  1. marcoballins

    marcoballins Guest

    I am trying to create a a parametrized cell. However something seems
    not to work properly.
    I read the docs but could not figure out the problem. Any hint?

    When simulating I get this message in the CIW

    \o Warning from spectre in `vsinpulse', during circuit read-in.
    \o
    \o "input.scs" 24: `vsinpulse': Parameter `v1' redefines parameter
    of same
    \o name defined at higher level.
    \o
    \o "input.scs" 24: `vsinpulse': Parameter `v2' redefines parameter
    of same
    \o name defined at higher level.
    \o
    \o "input.scs" 24: `vsinpulse': Parameter `per' redefines
    parameter of same
    \o name defined at higher level.
    \o
    \o "input.scs" 24: `vsinpulse': Parameter `tdp' redefines
    parameter of same
    \o name defined at higher level.
    \o
    \o "input.scs" 24: `vsinpulse': Parameter `tr' redefines parameter
    of same
    \o name defined at higher level.
    \o
    \o Further occurrences of this warning will be suppressed.

    The cell is composed by a vsin and a vpulse in series.
    I used pPar() to make some parameters of those two sources as
    parameters of my new cell.
    E.g. in the AC magnitude of vsin I put pPar("acm"), etc., so that my
    new cell has a parameter named acm that sets that value to one of it's
    component
    This is a file generated with cdfDump():


    /****************************************************/
    LIBRARY = "ballini_devel"
    CELL = "vsinpulse"
    /****************************************************/

    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 "acm"
    ?prompt "AC magnitude"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('acp)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "acp"
    ?prompt "AC phase"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('acp)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "vdc"
    ?prompt "DC voltage"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('vdc)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "vo"
    ?prompt "Offset voltage"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('vo)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "va"
    ?prompt "Amplitude"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('va)"
    ?editable "t"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "freq"
    ?prompt "Frequency"
    ?units "frequency"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('freq)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "tds"
    ?prompt "Delay time for sine wave"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('tds)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "theta"
    ?prompt "Damping factor"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('theta)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "xfm"
    ?prompt "XF magnitude"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('xfm)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "pacm"
    ?prompt "PAC magnitude"
    ?units "voltage"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('pacm)"
    ?editable "t"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "pacp"
    ?prompt "PAC phase"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('pacp)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "v1"
    ?prompt "Voltage 1"
    ?units "voltage"
    ?defValue "0.0"
    ?type "string"
    ?display "artParameterInToolDisplay('v1)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "v2"
    ?prompt "Voltage 2"
    ?units "voltage"
    ?defValue "0.0"
    ?type "string"
    ?display "artParameterInToolDisplay('v2)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "tdp"
    ?prompt "Delay time for pulse wave"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('tdp)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "tr"
    ?prompt "Rise time"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('tr)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "tf"
    ?prompt "Fall time"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('tf)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "pw"
    ?prompt "Pulse width"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('pw)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "per"
    ?prompt "Period"
    ?units "time"
    ?defValue ""
    ?type "string"
    ?display "artParameterInToolDisplay('per)"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )

    ;;; Simulator Information
    cdfId->simInfo = list( nil )
    cdfId->simInfo->UltraSim = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    netlistProcedure nil
    )
    cdfId->simInfo->auCdl = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    netlistProcedure ansCdlSubcktCall
    )
    cdfId->simInfo->auLvs = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    netlistProcedure ansLvsCompPrim
    )
    cdfId->simInfo->cdsSpice = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    macroArguments ("acm" "acp" "vdc" "vo" "va" "freq" "tds"
    "theta" "xfm" "pacm" "pacp" "v1" "v2" "tdp" "tr" "tf" "pw" "per")
    netlistProcedure ansSpiceSubcktCall
    )
    cdfId->simInfo->hspiceD = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    netlistProcedure nil
    )
    cdfId->simInfo->hspiceS = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    macroArguments ("acm" "acp" "vdc" "vo" "va" "freq" "tds"
    "theta" "xfm" "pacm" "pacp" "v1" "v2" "tdp" "tr" "tf" "pw" "per")
    netlistProcedure ansSpiceSubcktCall
    )
    cdfId->simInfo->spectre = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    instParameters (acm acp vdc vo va freq tds theta xfm pacm
    pacp v1 v2 tdp tr tf pw per)
    netlistProcedure nil
    )
    cdfId->simInfo->spectreS = '( nil
    namePrefix "V"
    termOrder (PLUS MINUS)
    componentName "subcircuit"
    macroArguments ("acm" "acp" "vdc" "vo" "va" "freq" "tds"
    "theta" "xfm" "pacm" "pacp" "v1" "v2" "tdp" "tr" "tf" "pw" "per")
    netlistProcedure ansSpiceSubcktCall
    )

    ;;; Properties
    cdfId->formInitProc = ""
    cdfId->doneProc = ""
    cdfId->buttonFieldWidth = 340
    cdfId->fieldHeight = 35
    cdfId->fieldWidth = 350
    cdfId->promptWidth = 175
    cdfId->paramLabelSet = "vo va freq v1 v2 tr"
    cdfId->opPointLabelSet = "i"
    cdfSaveCDF( cdfId )
    )

    *****************END OF FILE*******************************

    Moreover, is this file essentially correct? Can I "trust" its
    behavior?

    Also, how can I make the current that flows in the two cell components
    a "property" (I don't know the exact term here) that is accessible
    e.g. in the calculator without descending in the hierarchy (in the
    expression in the Calulator window)?

    Thanks for any hint!
    Kind regards
     
    marcoballins, Sep 29, 2008
    #1
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.