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
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