Tcl SpiceGenTcl package (v0.71)

::SpiceGenTcl::Ngspice::BasicDevicesTop, Main, Index

ClassesTop, Main, Index

C [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

Capacitor

Capacitor [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

C

constructor [::SpiceGenTcl::Ngspice::BasicDevices::Capacitor]Capacitor, Top, Main, Index

Creates object of class Capacitor that describes capacitor.

OBJECT constructor name np nm -c value ?-tc1 value? ?-tc2 value? ?-m value? ?-temp value|-dtemp value? ?-scale value? ?-ic value?
OBJECT constructor name np nm -beh -c value ?-tc1 value? ?-tc2 value?
OBJECT constructor name np nm -beh -q value ?-tc1 value? ?-tc2 value?
OBJECT constructor name np nm -model value ?-c value? ?-l value? ?-w value? ?-temp value|-dtemp value? ?-m value? ?scale value? ?-ic value?
Parameters
-behSelects behavioural type of resistor, optional.
-c valueCapacitance value or equation.
-dtemp valueTemperature offset, optional.
-ic valueInitial voltage on capacitor, optional.
-l valueLength of semiconductor capacitor, optional.
-m valueMultiplier value, optional.
-model valueModel of the resistor, optional.
-q valueCharge equation.
-scale valueScaling factor, optional.
-tc1 valueLinear thermal coefficient, optional.
-tc2 valueQuadratic thermal coefficient, optional.
-temp valueDevice temperature, optional.
-w valueWidth of semiconductor capacitor, optional.
nameName of the device without first-letter designator C.
nmName of node connected to negative pin.
npName of node connected to positive pin.
Description

Capacitor type could be specified with additional switches: -beh if we want to model circuit's variable dependent capacitor, or -model modelName if we want to simulate capacitor with model card (semiconductor capacitor). Simple capacitor:

CXXXXXXX n+ n- <value> <mname> <m=val> <scale=val> <temp=val>
+ <dtemp=val> <tc1=val> <tc2=val> <ic=init_condition>

Example of class initialization as a simple capacitor:

Capacitor new 1 netp netm 1e-6 -tc1 1 -temp {-eq temp}

Behavioral capacitor with C =ession:

CXXXXXXX n+ n- C={expression} <tc1=value> <tc2=value>

Example of class initialization:

Capacitor new 1 netp netm -c "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1

Behavioral capacitor with Q expression:

CXXXXXXX n+ n- Q={expression} <tc1=value> <tc2=value>

Example of class initialization:

Capacitor new 1 netp netm -q "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1

Capacitor with model card:

CXXXXXXX n+ n- <value> <mname> <l=length> <w=width> <m=val>
+ <scale=val> <temp=val> <dtemp=val> <ic=init_condition>

Example of class initialization:

Capacitor new 1 netp netm -model capm -l 1e-6 -w 10e-6
method constructor {args} {

    # Creates object of class `Capacitor` that describes capacitor.
    #  name - name of the device without first-letter designator C
    #  np - name of node connected to positive pin
    #  nm - name of node connected to negative pin
    #  -c value - capacitance value or equation
    #  -q value - charge equation
    #  -m value - multiplier value, optional
    #  -scale value - scaling factor, optional
    #  -temp value - device temperature, optional
    #  -dtemp value - temperature offset, optional
    #  -tc1 value - linear thermal coefficient, optional
    #  -tc2 value - quadratic thermal coefficient, optional
    #  -model value - model of the resistor, optional
    #  -beh - selects behavioural type of resistor, optional
    #  -l value - length of semiconductor capacitor, optional
    #  -w value - width of semiconductor capacitor, optional
    #  -ic value - initial voltage on capacitor, optional
    # Capacitor type could be specified with additional switches: `-beh` if we
    # want to model circuit's variable dependent capacitor, or `-model modelName`
    # if we want to simulate capacitor with model card (semiconductor capacitor).
    # Simple capacitor:
    # ```
    # CXXXXXXX n+ n- <value> <mname> <m=val> <scale=val> <temp=val>
    # + <dtemp=val> <tc1=val> <tc2=val> <ic=init_condition>
    # ```
    # Example of class initialization as a simple capacitor:
    # ```
    # Capacitor new 1 netp netm 1e-6 -tc1 1 -temp {-eq temp}
    # ```
    # Behavioral capacitor with C =ession:
    # ```
    # CXXXXXXX n+ n- C={expression} <tc1=value> <tc2=value>
    # ```
    # Example of class initialization:
    # ```
    # Capacitor new 1 netp netm -c "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1
    # ```
    # Behavioral capacitor with Q expression:
    # ```
    # CXXXXXXX n+ n- Q={expression} <tc1=value> <tc2=value>
    # ```
    # Example of class initialization:
    # ```
    # Capacitor new 1 netp netm -q "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1
    # ```
    # Capacitor with model card:
    # ```
    # CXXXXXXX n+ n- <value> <mname> <l=length> <w=width> <m=val>
    # + <scale=val> <temp=val> <dtemp=val> <ic=init_condition>
    # ```
    # Example of class initialization:
    # ```
    # Capacitor new 1 netp netm -model capm -l 1e-6 -w 10e-6
    # ```
    # Synopsis: name np nm -c value ?-tc1 value? ?-tc2 value? ?-m value? ?-temp value|-dtemp value?
    #   ?-scale value? ?-ic value?
    # Synopsis: name np nm -beh -c value ?-tc1 value? ?-tc2 value?
    # Synopsis: name np nm -beh -q value ?-tc1 value? ?-tc2 value?
    # Synopsis: name np nm -model value ?-c value? ?-l value? ?-w value? ?-temp value|-dtemp value?
    #   ?-m value? ?scale value? ?-ic value?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Capacitor' that describes capacitor} {
        {-c= -forbid {q} -help {Capacitance value or equation}}
        {-q= -require {beh} -forbid {c model} -help {Charge equation}}
        {-beh -forbid {model} -help {Selects behavioural type of capacitor}}
        {-model= -forbid {beh} -help {Model of the capacitor}}
        {-m= -forbid {beh} -help {Multiplier value}}
        {-scale= -forbid {beh} -help {Scaling factor}}
        {-temp= -forbid {beh dtemp} -help {Device temperature}}
        {-dtemp= -forbid {beh temp} -help {Temperature offset}}
        {-tc1= -forbid {model} -help {Linear thermal coefficient}}
        {-tc2= -forbid {model} -help {Quadratic thermal coefficient}}
        {-ic= -forbid {beh} -help {Initial voltage on capacitor}}
        {-l= -require {model} -help {Length of semiconductor capacitor}}
        {-w= -require {model} -help {Width of semiconductor capacitor}}
        {name -help {Name of the device without first-letter designator}}
        {np -help {Name of node connected to positive pin}}
        {nm -help {Name of node connected to negative pin}}
    }]
    set params {}
    if {[dexist $arguments c]} {
        set cVal [dget $arguments c]
        if {[dexist $arguments beh]} {
            lappend params [list -eq c $cVal]
        } elseif {([llength $cVal]>1) && ([@ $cVal 0] eq {-eq})} {
            lappend params [list -poseq c [@ $cVal 1]]
        } else {
            lappend params [list -pos c $cVal]
        }
    } elseif {![dexist $arguments model] && ![dexist $arguments q]} {
        return -code error {Capacitor value must be specified with '-c value'}
    }
    if {[dexist $arguments q]} {
        set qVal [dget $arguments q]
        lappend params [list -eq q $qVal]
    }
    if {[dexist $arguments model]} {
        lappend params [list -posnocheck model [dget $arguments model]]
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {c q beh model name np nm}} {
            if {[@ $value 0] eq {-eq}} {
                lappend params [list -eq $paramName [@ $value 1]]
            } else {
                lappend params [list $paramName $value]
            }
        }
    }
    next c[dget $arguments name] [my FormPinNodeList $arguments {np nm}] $params
}

CModel [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Model.actOnParam
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
Properties
-nameReadable, writable.
-typeReadable, writable.
Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Ngspice::BasicDevices::CModel]CModel, Top, Main, Index

Creates object of class CModel that describes semiconductor capacitor model.

OBJECT constructor name ?-option value ...?
Parameters
argsKeyword instance parameters.
nameName of the model.
Description

Example of class initialization:

CModel new capmod -tc1 1 -tc2 2
method constructor {args} {

    # Creates object of class `CModel` that describes semiconductor capacitor model.
    #  name - name of the model
    #  args - keyword instance parameters
    # Example of class initialization:
    # ```
    # CModel new capmod -tc1 1 -tc2 2
    # ```
    # Synopsis: name ?-option value ...?
    next {*}[my ArgsPreprocess {cap cj cjsw defw narrow short tc1 tc2 tnom di thick} {name type} type {*}[linsert $args 1 c]]
}

Coupling [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

K

constructor [::SpiceGenTcl::Ngspice::BasicDevices::Coupling]Coupling, Top, Main, Index

Creates object of class Coupling that describes inductance coupling between inductors.

OBJECT constructor name -l1 value -l2 value -k value #nagelfar implicitvarcmd argparse *Creates object of class `Coupling`* name l1 l2 k
Parameters
-k valueCoupling coefficient.
-l1 valueFirst inductor name.
-l2 valueSecond inductor name.
nameName of the device without first-letter designator L.
Description
KXXXXXXX LYYYYYYY LZZZZZZZ value

Example of class initialization as a simple inductor:

Coupling new 1 -l1 la -l2 lb -k 0.5
method constructor {args} {

    # Creates object of class `Coupling` that describes inductance coupling between inductors.
    #  name - name of the device without first-letter designator L
    #  -l1 value - first inductor name
    #  -l2 value - second inductor name
    #  -k value - coupling coefficient
    # ```
    # KXXXXXXX LYYYYYYY LZZZZZZZ value
    # ```
    # Example of class initialization as a simple inductor:
    # ```
    # Coupling new 1 -l1 la -l2 lb -k 0.5
    # ```
    # Synopsis: name -l1 value -l2 value -k value
    ##nagelfar implicitvarcmd {argparse *Creates object of class `Coupling`*} name l1 l2 k
    argparse -pfirst -help {Creates object of class `Coupling` that describes inductance coupling between inductors} {
        {name -help {Name of the device without first-letter designator}}
        {-l1= -required -help {First inductor name}}
        {-l2= -required -help {Second inductor name}}
        {-k= -required -help {Coupling coefficient}}
    }
    if {([llength $k]>1) && ([@ $k 0] eq {-eq})} {
        ##nagelfar ignore {Found constant "k"}
        set k [list -poseq k [@ $k 1]]
    } else {
        ##nagelfar ignore {Found constant "k"}
        set k [list -pos k $k]
    }
    ##nagelfar ignore {Found constant "l*"}
    next k$name {} [list [list -posnocheck l1 $l1] [list -posnocheck l2 $l2] $k]
}

CSwitch [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Common::BasicDevices::CSwitch

Subclasses

W

CSwitchModel [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Model.actOnParam
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
Properties
-nameReadable, writable.
-typeReadable, writable.
Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Ngspice::BasicDevices::CSwitchModel]CSwitchModel, Top, Main, Index

Creates object of class CSwitchModel that describes current switch model.

OBJECT constructor name ?-option value ...?
Parameters
argsKeyword instance parameters.
nameName of the model.
Description

Example of class initialization:

CSwitchModel new cswmod -it 1 -ih 0.5 -ron 1 -roff 1e6
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]]
}

Inductor [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

L

constructor [::SpiceGenTcl::Ngspice::BasicDevices::Inductor]Inductor, Top, Main, Index

Creates object of class Inductor that describes inductor.

OBJECT constructor name np nm -l value ?-tc1 value? ?-tc2 value? ?-m value? ?-temp value|-dtemp value? ?-scale value? ?-ic value?
OBJECT constructor name np nm -beh -l value ?-tc1 value? ?-tc2 value?
OBJECT constructor name np nm -model value ?-l value? ?-temp value|-dtemp value? ?-m value? ?scale value? ?-ic value? ?-nt value? ?-tc1 value? ?-tc2 value?
Parameters
-behSelects behavioural type of inductor, optional.
-dtemp valueTemperature offset, optional.
-ic valueInitial current through inductor, optional.
-l valueInductance value or equation.
-m valueMultiplier value, optional.
-model valueModel of the inductor, optional.
-nt valueNumber of turns, optional.
-scale valueScaling factor, optional.
-tc1 valueLinear thermal coefficient, optional.
-tc2 valueQuadratic thermal coefficient, optional.
-temp valueDevice temperature, optional.
nameName of the device without first-letter designator L.
nmName of node connected to negative pin.
npName 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:

LYYYYYYY n+ n- <value> <m=val>
+ <scale=val> <temp=val> <dtemp=val> <tc1=val>
+ <tc2=val> <ic=init_condition>

Example of class initialization as a simple inductor:

Inductor new 1 netp netm -l 1e-6 -tc1 1 -temp {-eq temp}

Behavioral inductor:

LYYYYYYY n+ n- L={expression} <tc1=val> <tc2=val>

Example of class initialization:

Inductor new 1 netp netm -l "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1

Inductor with model card:

LYYYYYYY n+ n- <value> <mname> <nt=val> <m=val>
+ <scale=val> <temp=val> <dtemp=val> <tc1=val>
+ <tc2=val> <ic=init_condition>

Example of class initialization:

Inductor new 1 netp netm -l 1e-6 -model indm
method constructor {args} {

    # Creates object of class `Inductor` that describes inductor.
    #  name - name of the device without first-letter designator L
    #  np - name of node connected to positive pin
    #  nm - name of node connected to negative pin
    #  -l value - inductance value or equation
    #  -m value - multiplier value, optional
    #  -scale value - scaling factor, optional
    #  -temp value - device temperature, optional
    #  -dtemp value - temperature offset, optional
    #  -tc1 value - linear thermal coefficient, optional
    #  -tc2 value - quadratic thermal coefficient, optional
    #  -model value - model of the inductor, optional
    #  -beh - selects behavioural type of inductor, optional
    #  -ic value - initial current through inductor, optional
    #  -nt value - number of turns, optional
    # 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:
    # ```
    # LYYYYYYY n+ n- <value> <m=val>
    # + <scale=val> <temp=val> <dtemp=val> <tc1=val>
    # + <tc2=val> <ic=init_condition>
    # ```
    # Example of class initialization as a simple inductor:
    # ```
    # Inductor new 1 netp netm -l 1e-6 -tc1 1 -temp {-eq temp}
    # ```
    # Behavioral inductor:
    # ```
    # LYYYYYYY n+ n- L={expression} <tc1=val> <tc2=val>
    # ```
    # Example of class initialization:
    # ```
    # Inductor new 1 netp netm -l "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1
    # ```
    # Inductor with model card:
    # ```
    # LYYYYYYY n+ n- <value> <mname> <nt=val> <m=val>
    # + <scale=val> <temp=val> <dtemp=val> <tc1=val>
    # + <tc2=val> <ic=init_condition>
    # ```
    # Example of class initialization:
    # ```
    # Inductor new 1 netp netm -l 1e-6 -model indm
    # ```
    # Synopsis: name np nm -l value ?-tc1 value? ?-tc2 value? ?-m value? ?-temp value|-dtemp value?
    #   ?-scale value? ?-ic value?
    # Synopsis: name np nm -beh -l value ?-tc1 value? ?-tc2 value?
    # Synopsis: name np nm -model value ?-l value? ?-temp value|-dtemp value? ?-m value? ?scale value?
    #   ?-ic value? ?-nt value? ?-tc1 value? ?-tc2 value?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Inductor' that describes inductor} {
        {-l= -help {Inductance value or equation}}
        {-beh -forbid {model} -require {l} -help {Selects behavioural type of inductor}}
        {-model= -forbid {beh} -help {Model of the inductor}}
        {-m= -forbid {beh} -help {Multiplier value}}
        {-scale= -forbid {beh} -help {Scaling factor}}
        {-temp= -forbid {beh dtemp} -help {Device temperature}}
        {-dtemp= -forbid {beh temp} -help {Temperature offset}}
        {-tc1= -help {Linear thermal coefficient}}
        {-tc2= -help {Quadratic thermal coefficient}}
        {-nt= -require {model} -help {Number of turns}}
        {-ic= -forbid {beh} -help {Initial current through inductor}}
        {name -help {Name of the device without first-letter designator}}
        {np -help {Name of node connected to positive pin}}
        {nm -help {Name of node connected to negative pin}}
    }]
    set params {}
    if {[dexist $arguments l]} {
        set lVal [dget $arguments l]
        if {[dexist $arguments beh]} {
            lappend params [list -eq l $lVal]
        } elseif {([llength $lVal]>1) && ([@ $lVal 0] eq {-eq})} {
            lappend params [list -poseq l [@ $lVal 1]]
        } else {
            lappend params [list -pos l $lVal]
        }
    } elseif {![dexist $arguments model]} {
        return -code error {Inductor value must be specified with '-l value'}
    }
    if {[dexist $arguments model]} {
        lappend params [list -posnocheck model [dget $arguments model]]
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {l beh model name np nm}} {
            if {[@ $value 0] eq {-eq}} {
                lappend params [list -eq $paramName [@ $value 1]]
            } else {
                lappend params [list $paramName $value]
            }
        }
    }
    next l[dget $arguments name] [my FormPinNodeList $arguments {np nm}] $params
}

K [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

Coupling

L [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

Inductor

LModel [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Model.actOnParam
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
Properties
-nameReadable, writable.
-typeReadable, writable.
Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Ngspice::BasicDevices::LModel]LModel, Top, Main, Index

Creates object of class LModel that describes inductor model.

OBJECT constructor name ?-option value ...?
Parameters
argsKeyword instance parameters.
nameName of the model.
Description

Example of class initialization:

LModel new indmod -tc1 1 -tc2 2
method constructor {args} {

    # Creates object of class `LModel` that describes inductor model.
    #  name - name of the model
    #  args - keyword instance parameters
    # Example of class initialization:
    # ```
    # LModel new indmod -tc1 1 -tc2 2
    # ```
    # Synopsis: name ?-option value ...?
    next {*}[my ArgsPreprocess {ind csect dia length tc1 tc2 tnom nt mu} {name type} type {*}[linsert $args 1 l]]
}

N [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

VerilogA

R [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

Resistor

Resistor [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

R

constructor [::SpiceGenTcl::Ngspice::BasicDevices::Resistor]Resistor, Top, Main, Index

Creates object of class Resistor that describes resistor.

OBJECT constructor name np nm -r value ?-tc1 value? ?-tc2 value? ?-ac value? ?-m value? ?-noisy 0|1? ?-temp value|-dtemp value? ?-scale value?
OBJECT constructor name np nm -beh -r value ?-tc1 value? ?-tc2 value?
OBJECT constructor name np nm -model value ?-r value? ?-l value? ?-w value? ?-temp value|-dtemp value? ?-m value? ?-noisy 0|1? ?-ac value? ?scale value?
Parameters
-ac valueAC resistance value, optional.
-behSelects behavioural type of resistor, optional.
-dtemp valueTemperature offset, optional.
-l valueLength of semiconductor resistor, optional.
-m valueMultiplier value, optional.
-model valueModel of the resistor, optional.
-noisySelects noise behaviour.
-r valueResistance value or equation.
-scale valueScaling factor, optional.
-tc1 valueLinear thermal coefficient, optional.
-tc2 valueQuadratic thermal coefficient, optional.
-temp valueDevice temperature, optional.
-w valueWidth of semiconductor resistor, optional.
nameName of the device without first-letter designator R.
nmName of node connected to negative pin.
npName of node connected to positive pin.
Description

Resistor type could be specified with additional switches: -beh if we want to model circuit's variable dependent resistor, or -model modelName if we want to simulate resistor with model card (semiconductor resistor). Simple resistor:

RXXXXXXX n+ n- <resistance|r=>value <ac=val> <m=val>
+ <scale=val> <temp=val> <dtemp=val> <tc1=val> <tc2=val>
+ <noisy=0|1>

Example of class initialization as a simple resistor:

Resistor new 1 netp netm -r 1e3 -tc1 1 -ac 1e6 -temp {-eq temp_amb}

Behavioral resistor:

RXXXXXXX n+ n- R={expression} <tc1=value> <tc2=value> <noisy=0>

Example of class initialization:

Resistor new 1 netp netm -r "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1

Resistor with model card:

RXXXXXXX n+ n- <value> <mname> <l=length> <w=width>
+ <temp=val> <dtemp=val> <m=val> <ac=val> <scale=val>
+ <noisy=0|1>

Example of class initialization:

Resistor new 1 netp netm -model resm -l 1e-6 -w 10e-6
method constructor {args} {

    # Creates object of class `Resistor` that describes resistor.
    #  name - name of the device without first-letter designator R
    #  np - name of node connected to positive pin
    #  nm - name of node connected to negative pin
    #  -r value - resistance value or equation
    #  -ac value - AC resistance value, optional
    #  -m value - multiplier value, optional
    #  -scale value - scaling factor, optional
    #  -temp value - device temperature, optional
    #  -dtemp value - temperature offset, optional
    #  -tc1 value - linear thermal coefficient, optional
    #  -tc2 value - quadratic thermal coefficient, optional
    #  -model value - model of the resistor, optional
    #  -beh - selects behavioural type of resistor, optional
    #  -noisy - selects noise behaviour
    #  -l value - length of semiconductor resistor, optional
    #  -w value - width of semiconductor resistor, optional
    # Resistor type could be specified with additional switches: `-beh` if we
    # want to model circuit's variable dependent resistor, or `-model modelName`
    # if we want to simulate resistor with model card (semiconductor resistor).
    # Simple resistor:
    # ```
    # RXXXXXXX n+ n- <resistance|r=>value <ac=val> <m=val>
    # + <scale=val> <temp=val> <dtemp=val> <tc1=val> <tc2=val>
    # + <noisy=0|1>
    # ```
    # Example of class initialization as a simple resistor:
    # ```
    # Resistor new 1 netp netm -r 1e3 -tc1 1 -ac 1e6 -temp {-eq temp_amb}
    # ```
    # Behavioral resistor:
    # ```
    # RXXXXXXX n+ n- R={expression} <tc1=value> <tc2=value> <noisy=0>
    # ```
    # Example of class initialization:
    # ```
    # Resistor new 1 netp netm -r "V(a)+V(b)+pow(V(c),2)" -beh -tc1 1
    # ```
    # Resistor with model card:
    # ```
    # RXXXXXXX n+ n- <value> <mname> <l=length> <w=width>
    # + <temp=val> <dtemp=val> <m=val> <ac=val> <scale=val>
    # + <noisy=0|1>
    # ```
    # Example of class initialization:
    # ```
    # Resistor new 1 netp netm -model resm -l 1e-6 -w 10e-6
    # ```
    # Synopsis: name np nm -r value ?-tc1 value? ?-tc2 value? ?-ac value? ?-m value? ?-noisy 0|1?
    #   ?-temp value|-dtemp value? ?-scale value?
    # Synopsis: name np nm -beh -r value ?-tc1 value? ?-tc2 value?
    # Synopsis: name np nm -model value ?-r value? ?-l value? ?-w value? ?-temp value|-dtemp value?
    #   ?-m value? ?-noisy 0|1? ?-ac value? ?scale value?
    set arguments [argparse -inline -pfirst -help {Creates object of class `Resistor` that describes resistor} {
        {-r= -help {Resistance value or equation}}
        {-beh -forbid {model} -require {r} -help {Selects behavioural type of resistor}}
        {-model= -forbid {beh} -help {Model of the resistor}}
        {-ac= -forbid {model beh} -help {AC resistance value}}
        {-m= -forbid {beh} -help {Multiplier value,}}
        {-scale= -forbid {beh} -help {Scaling factor}}
        {-temp= -forbid {beh dtemp} -help {Device temperature}}
        {-dtemp= -forbid {beh temp} -help {Temperature offset}}
        {-tc1= -forbid {model} -help {Linear thermal coefficient}}
        {-tc2= -forbid {model} -help {Quadratic thermal coefficient}}
        {-noisy= -enum {0 1} -help {Selects noise behaviour}}
        {-l= -require {model} -help {Length of semiconductor resistor}}
        {-w= -require {model} -help {Width of semiconductor resistor}}
        {name -help {Name of the device without first-letter designator}}
        {np -help {Name of node connected to positive pin}}
        {nm -help {Name of node connected to negative pin}}
    }]
    set params {}
    if {[dexist $arguments r]} {
        set rVal [dget $arguments r]
        if {[dexist $arguments beh]} {
            lappend params [list -eq r $rVal]
        } elseif {([llength $rVal]>1) && ([@ $rVal 0] eq {-eq})} {
            lappend params [list -poseq r [@ $rVal 1]]
        } else {
            lappend params [list -pos r $rVal]
        }
    } elseif {![dexist $arguments model]} {
        return -code error {Resistor value must be specified with '-r value'}
    }
    if {[dexist $arguments model]} {
        lappend params [list -posnocheck model [dget $arguments model]]
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {r beh model name np nm}} {
            if {[@ $value 0] eq {-eq}} {
                lappend params [list -eq $paramName [@ $value 1]]
            } else {
                lappend params [list $paramName $value]
            }
        }
    }
    next r[dget $arguments name] [my FormPinNodeList $arguments {np nm}] $params
}

RModel [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Model.actOnParam
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
Properties
-nameReadable, writable.
-typeReadable, writable.
Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Ngspice::BasicDevices::RModel]RModel, Top, Main, Index

Creates object of class RModel that describes semiconductor resistor model.

OBJECT constructor name ?-option value ...?
Parameters
argsKeyword instance parameters.
nameName of the model.
Description

Example of class initialization:

RModel new resmod -tc1 1 -tc2 2
method constructor {args} {

    # Creates object of class `RModel` that describes semiconductor resistor model.
    #  name - name of the model
    #  args - keyword instance parameters
    # Example of class initialization:
    # ```
    # RModel new resmod -tc1 1 -tc2 2
    # ```
    # Synopsis: name ?-option value ...?
    next {*}[my ArgsPreprocess {tc1 tc2 rsh defw narrow short tnom kf af wf lf ef r} {name type} type {*}[linsert $args 1 r]]
}

S [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

VSwitch

SubcircuitInstance [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

X

constructor [::SpiceGenTcl::Ngspice::BasicDevices::SubcircuitInstance]SubcircuitInstance, Top, Main, Index

Creates object of class SubcircuitInstance that describes subcircuit instance.

SubcircuitInstance create OBJNAME ?args?
SubcircuitInstance new ?args?
Parameters
nameName of the device without first-letter designator X.
paramsList of parameters {{?-eq? paramName paramValue} {?-eq? paramName paramValue}}
pinsList of pins {{pinName nodeName} {pinName nodeName} ...}
subNameName of subcircuit definition.
Description
XYYYYYYY N1 <N2 N3 ...> SUBNAM

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

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}}`
    # ```
    # XYYYYYYY N1 <N2 N3 ...> SUBNAM
    # ```
    # 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
}

SubcircuitInstanceAuto [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

XAuto

constructor [::SpiceGenTcl::Ngspice::BasicDevices::SubcircuitInstanceAuto]SubcircuitInstanceAuto, Top, Main, Index

Creates object of class SubcircuitInstanceAuto that describes subcircuit instance with already created subcircuit definition object.

OBJECT constructor subcktObj name nodes ?-paramName ?-eq? paramValue ...?
Parameters
subcktObjObject of subcircuit that defines it's pins, subName and parameters.
nameNot documented.
nodesList of nodes connected to pins in the same order as pins in subcircuit definition {nodeName1 nodeName2 ...}
argsParameters as argument in form : -paramName {?-eq? paramValue} -paramName {?-eq? paramValue}
Description
XYYYYYYY N1 <N2 N3 ...> SUBNAM

Example of class initialization:

SubcircuitInstanceAuto new $subcktObj 1 {net1 net2} -r 1 -c {-eq cpar}
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}`
    # ```
    # XYYYYYYY N1 <N2 N3 ...> SUBNAM
    # ```
    # 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 Subcircuit
    if {![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 subcircuit
    set subName [$subcktObj configure -name]
    # get pins names of subcircuit
    set pinsNames [dict keys [$subcktObj actOnPin -get -all]]
    # check if number of pins in subcircuit definition matchs the number of supplied nodes
    if {[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 nodes
    foreach pinName $pinsNames node $nodes {
        lappend pinsList [list $pinName $node]
    }
    # get parameters names of subcircuit
    if {[$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 arguments
        set arguments [argparse -inline "
            [join $paramDefList \n]
        "]
        # create list of parameters and values from which were supplied by args
        dict 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
}

VerilogA [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Device

Subclasses

N

constructor [::SpiceGenTcl::Ngspice::BasicDevices::VerilogA]VerilogA, Top, Main, Index

Creates object of class VerilogA that describes Verilog-A instance.

VerilogA create OBJNAME ?args?
VerilogA new ?args?
Parameters
modNameName of Verilog-A model.
nameName of the device without first-letter designator N.
paramsList of parameters {{?-eq? paramName paramValue} {?-eq? paramName paramValue}}
pinsList of pins {{pinName nodeName} {pinName nodeName} ...}
Description
NYYYYYYY N1 <N2 N3 ...> MODNAME

Example of class initialization:

VerilogA new 1 {{plus net1} {minus net2}} vmod {{r 1} {-eq c cpar}}

#nagelfar implicitvarcmd {argparse Creates object of class 'VerilogA'} name pins modName params

method constructor {args} {

    # Creates object of class `VerilogA` that describes Verilog-A instance.
    #  name - name of the device without first-letter designator N
    #  pins - list of pins `{{pinName nodeName} {pinName nodeName} ...}`
    #  modName - name of Verilog-A model
    #  params - list of parameters `{{?-eq? paramName paramValue} {?-eq? paramName paramValue}}`
    # ```
    # NYYYYYYY N1 <N2 N3 ...> MODNAME
    # ```
    # Example of class initialization:
    # ```
    # VerilogA new 1 {{plus net1} {minus net2}} vmod {{r 1} {-eq c cpar}}
    # ```
    ##nagelfar implicitvarcmd {argparse *Creates object of class 'VerilogA'*} name pins modName params
    argparse -pfirst -help {Creates object of class 'VerilogA' that describes Verilog-A instance} {
        {name -help {Name of the device without first-letter designator}}
        {pins -help {List of pins {{pinName nodeName} {pinName nodeName} ...}}}
        {modName -help {name of Verilog-A model}}
        {params -help {List of parameters {{?-eq? paramName paramValue} {?-eq? paramName paramValue}}}}
    }
    set params [linsert $params 0 [list -posnocheck model $modName]]
    next n$name $pins $params
}

VSwitch [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

::SpiceGenTcl::Common::BasicDevices::VSwitch

Subclasses

S

VSwitchModel [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
actOnParamSee ::SpiceGenTcl::Model.actOnParam
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
Properties
-nameReadable, writable.
-typeReadable, writable.
Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Ngspice::BasicDevices::VSwitchModel]VSwitchModel, Top, Main, Index

Creates object of class VSwitchModel that describes voltage switch model.

OBJECT constructor name ?-option value ...?
Parameters
argsKeyword instance parameters.
nameName of the model.
Description

Example of class initialization:

VSwitchModel new swmod -vt 1 -vh 0.5 -ron 1 -roff 1e6
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} {name type} type {*}[linsert $args 1 sw]]
}

W [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

CSwitch

X [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

SubcircuitInstance

XAuto [::SpiceGenTcl::Ngspice::BasicDevices]Top, Main, Index

Method summary
actOnParamSee ::SpiceGenTcl::Device.actOnParam
actOnPinSee ::SpiceGenTcl::Device.actOnPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
Properties
-nameReadable, writable.
Superclasses

SubcircuitInstanceAuto