method constructor {args} {
# Creates object of class `CSwitchModel` that describes current switch model.# name - name of the model# args - keyword instance parameters# Example of class initialization:# ```# CSwitchModel new cswmod -it 1 -ih 0.5 -ron 1 -roff 1e6# ```# Synopsis: name ?-option value ...?next {*}[my ArgsPreprocess {it ih ron roff} {name type} type {*}[linsert $args 1 csw]]
}
Nonlinear inductor model switch -m value- number of parallel units.
-ic value
Initial current.
-l value
Inductance value.
-lg value
Length of gap.
-lm value
Magnetic Length (excl. gap)
-n value
Number of turns.
-rpar value
Parallel resistance.
-rser value
Series resistance.
-tc1 value
Linear inductance temperature coefficient.
-tc2 value
Quadratic inductance temperature coefficient.
-temp value
Device temperature.
name
Name of the device without first-letter designator L.
nm
Name of node connected to negative pin.
np
Name of node connected to positive pin.
Description
Inductor type could be specified with additional switches: -beh if we want to model circuit's variable dependent inductor, or -model modelName if we want to simulate inductor with model card. Simple inductor:
method constructor {args} {
# Creates object of class `SubcircuitInstance` that describes subcircuit instance.# name - name of the device without first-letter designator X# pins - list of pins `{{pinName nodeName} {pinName nodeName} ...}`# subName - name of subcircuit definition# params - list of parameters `{{?-eq? paramName paramValue} {?-eq? paramName paramValue}}`# ```# Xxxx n1 n2 n3... <subckt name> [<parameter>=<expression>]# ```# Example of class initialization:# ```# SubcircuitInstance new 1 {{plus net1} {minus net2}} rcnet {{r 1} {-eq c cpar}}# ```##nagelfar implicitvarcmd {argparse *Creates object of class 'SubcircuitInstance'*} name pins subName params
argparse -pfirst -help {Creates object of class 'SubcircuitInstance' that describes subcircuit instance} {
{name -help {Name of the device without first-letter designator}}
{pins -help {List of pins {{pinName nodeName} {pinName nodeName} ...}}}
{subName -help {Name of subcircuit definition}}
{params -help {List of parameters {{?-eq? paramName paramValue} {?-eq? paramName paramValue}}}}
}
set params [linsert $params 0 [list -posnocheck model $subName]]
next x$name $pins $params
}
method constructor {subcktObj name nodes args} {
# Creates object of class `SubcircuitInstanceAuto` that describes subcircuit instance with already created# subcircuit definition object.# subcktObj - object of subcircuit that defines it's pins, subName and parameters# nodes - list of nodes connected to pins in the same order as pins in subcircuit definition `{nodeName1# nodeName2 ...}`# args - parameters as argument in form : `-paramName {?-eq? paramValue} -paramName {?-eq? paramValue}`# ```# Xxxx n1 n2 n3... <subckt name> [<parameter>=<expression>]# ```# Example of class initialization:# ```# SubcircuitInstanceAuto new $subcktObj 1 {net1 net2} -r 1 -c {-eq cpar}# ```# Synopsis: subcktObj name nodes ?-paramName {?-eq? paramValue} ...?# check that inputs object class is Subcircuitif {![info object class $subcktObj "::SpiceGenTcl::Subcircuit"]} {
set objClass [info object class $subcktObj]
return -code error "Wrong object class '$objClass' is passed as subcktObj, should be '::SpiceGenTcl::Subcircuit'"
}
# get name of subcircuitset subName [$subcktObj configure -name]
# get pins names of subcircuitset pinsNames [dict keys [$subcktObj actOnPin -get -all]]
# check if number of pins in subcircuit definition matchs the number of supplied nodesif {[llength $pinsNames]!=[llength $nodes]} {
return -code error "Wrong number of nodes '[llength $nodes]' in definition, should be '[llength $pinsNames]'"
}
# create list of pins and connected nodesforeach pinName $pinsNames node $nodes {
lappend pinsList [list $pinName $node]
}
# get parameters names of subcircuitif {[$subcktObj actOnParam -get -all] ne {}} {
set paramsNames [dict keys [$subcktObj actOnParam -get -all]]
foreach paramName $paramsNames {
lappend paramDefList -${paramName}=
}
}
if {[info exists paramDefList]} {
# create definition for argparse module for passing parameters as optional argumentsset arguments [argparse -inline "
[join $paramDefList \n]
"]
# create list of parameters and values from which were supplied by argsdict for {paramName value} $arguments {
if {[@ $value 0] eq {-eq}} {
lappend params [list -eq $paramName [@ $value 1]]
} else {
lappend params [list $paramName $value]
}
}
} else {
set params {}
}
set params [linsert $params 0 [list -posnocheck model $subName]]
next x$name $pinsList $params
}
method constructor {args} {
# Creates object of class `VSwitchModel` that describes voltage switch model.# name - name of the model# args - keyword instance parameters# Example of class initialization:# ```# VSwitchModel new swmod -vt 1 -vh 0.5 -ron 1 -roff 1e6# ```# Synopsis: name ?-option value ...?next {*}[my ArgsPreprocess {vt vh ron roff lser vser ilimit} {name type} type {*}[linsert $args 1 sw]]
}