Tcl SpiceGenTcl package (v0.70)

::SpiceGenTcl::Xyce::SemiconductorDevicesTop, Main, Index

ClassesTop, Main, Index

Bjt [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringModify substrate pin string in order to complain square brackets enclosure, see BJT info in reference manual of Xyce.
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

::SpiceGenTcl::Device

Subclasses

Q

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Bjt]Bjt, Top, Main, Index

Creates object of class Bjt that describes semiconductor bipolar junction transistor device.

OBJECT constructor name nc nb ne -model value ?-ns value ?-tj value?? ?-area value? ?-m value? ?-temp value? ?-off? ?-ic1 value? ?-ic2 value?
Details
Parameters
-areaScale factor, optional.
-ic1Initial conditions for vbe, optional.
-ic2Initial conditions for vce, optional.
-mMultiplier of area and perimeter, optional.
-modelName of the model.
-nsName of node connected to substrate pin, optional.
-tempDevice temperature, optional.
-tjName of node connected to thermal pin, optional, requires -ns.
nameName of the device without first-letter designator Q.
nbName of node connected to base pin.
ncName of node connected to collector pin.
neName of node connected to emitter pin.
Description
QXXXXXXX nc nb ne <ns> <tj> mname <area=val> <areac=val>
+ <areab=val> <m=val> <off> <ic=vbe,vce> <temp=val>
+ <dtemp=val>

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Bjt new 1 netc netb nete -model bjtmod -ns nets -area 1e-3
method constructor {args} {

    # Creates object of class `Bjt` that describes semiconductor bipolar junction transistor device.
    #  name - name of the device without first-letter designator Q
    #  nc - name of node connected to collector pin
    #  nb - name of node connected to base pin
    #  ne - name of node connected to emitter pin
    #  -model - name of the model
    #  -area - scale factor, optional
    #  -m - multiplier of area and perimeter, optional
    #  -temp - device temperature, optional
    #  -ic1 - initial conditions for vbe, optional
    #  -ic2 - initial conditions for vce, optional
    #  -ns - name of node connected to substrate pin, optional
    #  -tj - name of node connected to thermal pin, optional, requires -ns
    # ```
    # QXXXXXXX nc nb ne <ns> <tj> mname <area=val> <areac=val>
    # + <areab=val> <m=val> <off> <ic=vbe,vce> <temp=val>
    # + <dtemp=val>
    # ```
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Bjt new 1 netc netb nete -model bjtmod -ns nets -area 1e-3
    # ```
    # Synopsis: name nc nb ne -model value ?-ns value ?-tj value?? ?-area value? ?-m value?
    #   ?-temp value? ?-off? ?-ic1 value? ?-ic2 value?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Bjt' that describes semiconductor bipolar junction transistor device} {
        {-model= -required -help {Name of the model}}
        {-area= -help {Scale factor}}
        {-m= -help {Multiplier of area and perimeter}}
        {-temp= -help {Device temperature}}
        {-off -boolean -help {Initial state}}
        {-ic1= -help {Initial conditions for vbe}}
        {-ic2= -help {Initial conditions for vce}}
        {-ns= -help {Name of node connected to substrate pin}}
        {-tj= -require {ns} -help {Name of node connected to thermal pin}}
        {name -help {Name of the device without first-letter designator}}
        {nc -help {Name of node connected to collector pin}}
        {nb -help {Name of node connected to base pin}}
        {ne -help {Name of node connected to emitter pin}}
    }]
    lappend params [list model [dget $arguments model] -posnocheck]
    if {[dexist $arguments area]} {
        set areaVal [dget $arguments area]
        if {([llength $areaVal]>1) && ([@ $areaVal 1] eq {-eq})} {
            lappend params [list area [@ $areaVal 0] -poseq]
        } else {
            lappend params [list area $areaVal -pos]
        }
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {model area off ns tj name nc nb ne}} {
            lappend params [list $paramName {*}$value]
        }
    }
    set pinList [list [list nc [dget $arguments nc]] [list nb [dget $arguments nb]] [list ne [dget $arguments ne]]]
    if {[dexist $arguments ns]} {
        lappend pinList [list ns [dget $arguments ns]]
        if {[dexist $arguments tj]} {
            lappend pinList [list tj [dget $arguments tj]]
        }
    }
    next q[dget $arguments name] $pinList $params
}

genSPICEString [::SpiceGenTcl::Xyce::SemiconductorDevices::Bjt]Bjt, Top, Main, Index

Modify substrate pin string in order to complain square brackets enclosure, see BJT info in reference manual of Xyce

OBJECT genSPICEString
Details
Return value

SPICE netlist's string

method genSPICEString {} {

    # Modify substrate pin string in order to complain square brackets enclosure,
    # see BJT info in reference manual of Xyce
    # Returns: SPICE netlist's string
    set SPICEStr [next]
    if {[dexist [my getPins] ns]} {
        set SPICEList [split $SPICEStr]
        set SPICEStr [join [lreplace $SPICEList 4 4 "\[[@ $SPICEList 4]\]"]]
    }
    return $SPICEStr
}

BjtGPModel [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Model.addParam
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Model.deleteParam
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
getParamsSee ::SpiceGenTcl::Model.getParams
setParamValueSee ::SpiceGenTcl::Model.setParamValue
Properties

Readable: -name, -type

Writable: -name, -type

Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::BjtGPModel]BjtGPModel, Top, Main, Index

Creates object of class BjtGPModel that describes Gummel-Poon model of semiconductor bipolar transistor.

OBJECT constructor name type ?-option value ...?
Details
Parameters
argsKeyword model parameters, for details please refer to Xyce reference manual, 2.3.17 section.
nameName of the model.
typeNpn or pnp.
Description

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::DiodeModel new bjtmod npn -is 1e-15 -bf 200 -vaf 100 -cje 1e-10
method constructor {args} {

    # Creates object of class `BjtGPModel` that describes Gummel-Poon model of semiconductor bipolar transistor.
    #  name - name of the model
    #  type - npn or pnp
    #  args - keyword model parameters, for details please refer to Xyce reference manual, 2.3.17 section.
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::DiodeModel new bjtmod npn -is 1e-15 -bf 200 -vaf 100 -cje 1e-10
    # ```
    # Synopsis: name type ?-option value ...?
    set paramsNames {level af bf bfm br brm bv c2 c4 ccs cdis cjc cje cjs csub eg esub fc ik ikf ikr  iob irb is isc ise itf jbf jbr jlc jle jrb jtf kf mc me mjc mje mjs ms nc ne nf nk nkf  nle nr pc pe ps psub pt ptf rb rbm rc re tb tcb tempmodel tf tnom tr va vaf var vb vbf  vjc vje vjs vrb vtf xcjc xtb xtf xti}
    next {*}[my ArgsPreprocess $paramsNames {name type} {} {*}[linsert $args 2 -level 1]]
}

D [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

Diode

Diode [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

::SpiceGenTcl::Device

Subclasses

D

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Diode]Diode, Top, Main, Index

Creates object of class Diode that describes semiconductor diode device.

OBJECT constructor name np nm -model value ?-area value? ?-pj value? ?-ic value? ?-m value? ?-temp value? ?-custparams param1 {param1Val ?-eq|-poseq|-posnocheck|-pos|-nocheck?} ...?
Details
Parameters
-areaArea scale factor, optional.
-custparamsKey that collects all arguments at the end of device definition, to provide an ability to add custom parameters in form -custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ... Must be specified after all others options. Optional.
-icInitial condition, optional.
-mMultiplier of area and perimeter, optional.
-modelName of the model.
-pjPerimeter scale factor, optional.
-tempDevice temperature, optional.
nameName of the device without first-letter designator D.
nmName of node connected to negative pin.
npName of node connected to positive pin.
Description
D<name> <(+) node> <(-) node> <model name> [device parameters]

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Diode new 1 netp netm -model diomod -area 1e-6
method constructor {args} {

    # Creates object of class `Diode` that describes semiconductor diode device.
    #  name - name of the device without first-letter designator D
    #  np - name of node connected to positive pin
    #  nm - name of node connected to negative pin
    #  -model - name of the model
    #  -area - area scale factor, optional
    #  -m - multiplier of area and perimeter, optional
    #  -pj - perimeter scale factor, optional
    #  -ic - initial condition, optional
    #  -temp - device temperature, optional
    #  -custparams - key that collects all arguments at the end of device definition, to provide an ability
    #  to add custom parameters in form `-custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ...`
    #  Must be specified after all others options. Optional.
    # ```
    # D<name> <(+) node> <(-) node> <model name> [device parameters]
    # ```
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Diode new 1 netp netm -model diomod -area 1e-6
    # ```
    # Synopsis: name np nm -model value ?-area value? ?-pj value? ?-ic value? ?-m value? ?-temp value?
    #   ?-custparams param1 \{param1Val ?-eq|-poseq|-posnocheck|-pos|-nocheck?\} ...?
    set arguments [argparse -inline -pfirst -help {Creates object of class `Diode` that describes semiconductor diode device} {
        {-model= -required -help {Name of the model}}
        {-area= -help {Area scale factor}}
        {-pj= -help {Perimeter scale factor}}
        {-ic= -help {Initial condition}}
        {-m= -help {Multiplier of area and perimeter}}
        {-temp= -help {Device temperature}}
        {-custparams -catchall -help {Key that collects all arguments at the end of device definition, to provide an ability to add custom parameters in form '-custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ...'}}
        {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}}
    }]
    lappend params [list model [dget $arguments model] -posnocheck]
    if {[dexist $arguments area]} {
        set areaVal [dget $arguments area]
        if {([llength $areaVal]>1) && ([@ $areaVal 1] eq {-eq})} {
            lappend params [list area [@ $areaVal 0] -poseq]
        } else {
            lappend params [list area $areaVal -pos]
        }
    }
    if {[dexist $arguments pj]} {
        set pjVal [dget $arguments pj]
        if {([llength $pjVal]>1) && ([@ $pjVal 1] eq {-eq})} {
            lappend params [list pj [@ $pjVal 0] -poseq]
        } else {
            lappend params [list pj $pjVal -pos]
        }
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {model custparams area pj name np nm}} {
            lappend params [list $paramName {*}$value]
        }
    }
    if {[dget $arguments custparams] ne {}} {
        if {[llength [dget $arguments custparams]]%2!=0} {
            return -code error "Custom parameters list must be even length"
        }
        set custParamDict [dcreate {*}[dget $arguments custparams]]
        dict for {paramName value} $custParamDict {
            lappend params [list $paramName {*}$value]
        }
    }
    next d[dget $arguments name] [list [list np [dget $arguments np]] [list nm [dget $arguments nm]]] $params
}

DiodeModel [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Model.addParam
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Model.deleteParam
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
getParamsSee ::SpiceGenTcl::Model.getParams
setParamValueSee ::SpiceGenTcl::Model.setParamValue
Properties

Readable: -name, -type

Writable: -name, -type

Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::DiodeModel]DiodeModel, Top, Main, Index

Creates object of class DiodeModel that describes semiconductor diode model.

OBJECT constructor name ?-option value ...?
Details
Parameters
argsKeyword model parameters, for details please refer to Xyce reference manual, 2.3.8 section.
nameName of the model.
Description

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::DiodeModel new diodemod -is 1e-14 -n 1.2 -rs 0.01 -cj0 1e-9
method constructor {args} {

    # Creates object of class `DiodeModel` that describes semiconductor diode model.
    #  name - name of the model
    #  args - keyword model parameters, for details please refer to Xyce reference manual, 2.3.8 section.
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::DiodeModel new diodemod -is 1e-14 -n 1.2 -rs 0.01 -cj0 1e-9
    # ```
    # Synopsis: name ?-option value ...?
    set paramsNames {level af bv cj cj0 cjo cjp cjsw eg fc fcs ibv ibvl ikf is isr js jsw kf m mjsw n nbv nbvl nr ns php rs tbv1 tbv2 tikf tnom trs trs1 trs2 tt vb vj vjsw xti}
    next {*}[my ArgsPreprocess $paramsNames {name type} type {*}[linsert $args 1 d]]
}

J [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

Jfet

Jfet [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

::SpiceGenTcl::Device

Subclasses

J

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet]Jfet, Top, Main, Index

Creates object of class Jfet that describes semiconductor junction FET device.

OBJECT constructor name nd ng ns -model value ?-area value? ?-temp value?
Details
Parameters
-areaScale factor, optional.
-modelName of the model.
-tempDevice temperature, optional.
nameName of the device without first-letter designator J.
ndName of node connected to drain pin.
ngName of node connected to gate pin.
nsName of node connected to source pin.
Description
J<name> <drain node> <gate node> <source node> <model name> [area value] [device parameters]

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet new 1 netd netg nets -model jfetmod -area {area*2 -eq} -temp 25
method constructor {args} {

    # Creates object of class `Jfet` that describes semiconductor junction FET device.
    #  name - name of the device without first-letter designator J
    #  nd - name of node connected to drain pin
    #  ng - name of node connected to gate pin
    #  ns - name of node connected to source pin
    #  -model - name of the model
    #  -area - scale factor, optional
    #  -temp - device temperature, optional
    # ```
    # J<name> <drain node> <gate node> <source node> <model name> [area value] [device parameters]
    # ```
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet new 1 netd netg nets -model jfetmod -area {area*2 -eq} -temp 25
    # ```
    # Synopsis: name nd ng ns -model value ?-area value? ?-temp value?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Jfet' that describes semiconductor junction FET device} {
        {-model= -required -help {Name of the model}}
        {-area= -help {Emitter scale factor}}
        {-temp= -help {Device temperature}}
        {name -help {Name of the device without first-letter designator}}
        {nd -help {Name of node connected to drain pin}}
        {ng -help {Name of node connected to gate pin}}
        {ns -help {Name of node connected to source pin}}
    }]
    lappend params [list model [dget $arguments model] -posnocheck]
    if {[dexist $arguments area]} {
        set areaVal [dget $arguments area]
        if {([llength $areaVal]>1) && ([@ $areaVal 1] eq {-eq})} {
            lappend params [list area [@ $areaVal 0] -poseq]
        } else {
            lappend params [list area $areaVal -pos]
        }
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {model area name nd ng ns}} {
            lappend params [list $paramName {*}$value]
        }
    }
    next j[dget $arguments name] [list [list nd [dget $arguments nd]] [list ng [dget $arguments ng]] [list ns [dget $arguments ns]]] $params
}

Jfet1Model [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Model.addParam
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Model.deleteParam
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
getParamsSee ::SpiceGenTcl::Model.getParams
setParamValueSee ::SpiceGenTcl::Model.setParamValue
Properties

Readable: -name, -type

Writable: -name, -type

Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet1Model]Jfet1Model, Top, Main, Index

Creates object of class Jfet1Model that describes JFET level 1 model with Parker Skellern modification.

OBJECT constructor name type ?-option value ...?
Details
Parameters
argsKeyword model parameters, for details please refer to Xyce reference manual, 2.3.18 section.
nameName of the model.
typeNjf or pjf.
Description

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet1Model new jfetmod njf -vto 2 -beta 1e-3 -lambda 1e-4 -cgd 1e-12
method constructor {args} {

    # Creates object of class `Jfet1Model` that describes JFET level 1 model with Parker Skellern modification.
    #  name - name of the model
    #  type - njf or pjf
    #  args - keyword model parameters, for details please refer to Xyce reference manual, 2.3.18 section.
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet1Model new jfetmod njf -vto 2 -beta 1e-3 -lambda 1e-4 -cgd 1e-12
    # ```
    # Synopsis: name type ?-option value ...?
    set paramsNames {level af b beta cgd cgs delta fc is kf lambda pb rd rs tempmodel theta tnom vto}
    next {*}[my ArgsPreprocess $paramsNames {name type} {} {*}[linsert $args 2 -level 1]]
}

Jfet2Model [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Model.addParam
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Model.deleteParam
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
getParamsSee ::SpiceGenTcl::Model.getParams
setParamValueSee ::SpiceGenTcl::Model.setParamValue
Properties

Readable: -name, -type

Writable: -name, -type

Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet2Model]Jfet2Model, Top, Main, Index

Creates object of class Jfet2Model that describes JFET level 2 model with Parker Skellern modification.

OBJECT constructor name type ?-option value ...?
Details
Parameters
argsKeyword model parameters, for details please refer to Xyce reference manual, 2.3.18 section.
nameName of the model.
typeNjf or pjf.
Description

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet2Model new jfetmod njf -vto -2 -beta 10e-4 -rs 1e-4 -vbi 1.2
method constructor {args} {

    # Creates object of class `Jfet2Model` that describes JFET level 2 model with Parker Skellern modification.
    #  name - name of the model
    #  type - njf or pjf
    #  args - keyword model parameters, for details please refer to Xyce reference manual, 2.3.18 section.
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet2Model new jfetmod njf -vto -2 -beta 10e-4 -rs 1e-4 -vbi 1.2
    # ```
    # Synopsis: name type ?-option value ...?
    set paramsNames {level af b beta cgd cgs delta fc is kf lambda pb rd rs tempmodel theta tnom vto}
    next {*}[my ArgsPreprocess $paramsNames {name type} {} {*}[linsert $args 2 -level 2]]
}

M [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

Mosfet

Mesfet [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

::SpiceGenTcl::Device

Subclasses

Z

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Mesfet]Mesfet, Top, Main, Index

Creates object of class Mesfet that describes semiconductor MESFET device.

OBJECT constructor name nd ng ns -model value ?-area value? ?-temp value?
Details
Parameters
-areaScale factor, optional.
-modelName of the model.
-tempDevice temperature, optional.
nameName of the device without first-letter designator Z.
ndName of node connected to drain pin.
ngName of node connected to gate pin.
nsName of node connected to source pin.
Description
Z<name> < drain node> <gate node> <source node> <model name> [area value] [device parameters]

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Mesfet new 1 netd netg nets -model mesfetmod -area {area*2 -eq}
method constructor {args} {

    # Creates object of class `Mesfet` that describes semiconductor MESFET device.
    #  name - name of the device without first-letter designator Z
    #  nd - name of node connected to drain pin
    #  ng - name of node connected to gate pin
    #  ns - name of node connected to source pin
    #  -model - name of the model
    #  -area - scale factor, optional
    #  -temp - device temperature, optional
    # ```
    # Z<name> < drain node> <gate node> <source node> <model name> [area value] [device parameters]
    # ```
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Mesfet new 1 netd netg nets -model mesfetmod -area {area*2 -eq}
    # ```
    # Synopsis: name nd ng ns -model value ?-area value? ?-temp value?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Mesfet' that describes semiconductor MESFET device} {
        {-model= -required -help {Name of the model}}
        {-area= -help {Scale factor}}
        {-temp= -help {Device temperature}}
        {name -help {Name of the device without first-letter designator}}
        {nd -help {Name of node connected to drain pin}}
        {ng -help {Name of node connected to gate pin}}
        {ns -help {Name of node connected to source pin}}
    }]
    lappend params [list model [dget $arguments model] -posnocheck]
    if {[dexist $arguments area]} {
        set areaVal [dget $arguments area]
        if {([llength $areaVal]>1) && ([@ $areaVal 1] eq {-eq})} {
            lappend params [list area [@ $areaVal 0] -poseq]
        } else {
            lappend params [list area $areaVal -pos]
        }
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {model area name nd ng ns}} {
            lappend params [list $paramName {*}$value]
        }
    }
    next z[dget $arguments name] [list [list nd [dget $arguments nd]] [list ng [dget $arguments ng]] [list ns [dget $arguments ns]]] $params
}

Mesfet1Model [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Model.addParam
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Model.deleteParam
genSPICEStringSee ::SpiceGenTcl::Model.genSPICEString
getParamsSee ::SpiceGenTcl::Model.getParams
setParamValueSee ::SpiceGenTcl::Model.setParamValue
Properties

Readable: -name, -type

Writable: -name, -type

Superclasses

::SpiceGenTcl::Model

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Mesfet1Model]Mesfet1Model, Top, Main, Index

Creates object of class Mesfet1Model that describes MESFET model by Statz e.a..

OBJECT constructor name type ?-option value ...?
Details
Parameters
argsKeyword model parameters, for details please refer to Xyce reference manual, 2.3.19 section.
nameName of the model.
typeNmf or pmf.
Description

Example of class initialization:

::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet2Model new jfetmod njf -vto -2 -beta 10e-4 -rs 1e-4 -vbi 1.2
method constructor {args} {

    # Creates object of class `Mesfet1Model` that describes MESFET model by Statz e.a..
    #  name - name of the model
    #  type - nmf or pmf
    #  args - keyword model parameters, for details please refer to Xyce reference manual, 2.3.19 section.
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::SemiconductorDevices::Jfet2Model new jfetmod njf -vto -2 -beta 10e-4 -rs 1e-4 -vbi 1.2
    # ```
    # Synopsis: name type ?-option value ...?
    set paramsNames {level af alpha b beta cgd cgs fc is kf lambda pb rd rs tempmodel tnom vto}
    next {*}[my ArgsPreprocess $paramsNames {name type} {} {*}[linsert $args 2 -level 1]]
}

Mosfet [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
constructorConstructor for the class.
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

::SpiceGenTcl::Device

Subclasses

M

constructor [::SpiceGenTcl::Xyce::SemiconductorDevices::Mosfet]Mosfet, Top, Main, Index

Creates object of class Mosfet that describes semiconductor MOSFET device.

OBJECT constructor name nd ng ns -model value ?-n4 value ?-n5 value ?-n6 value ?-n7 value???? ?-m value? ?-l value? ?-w value? ?-ad value|-nrd value? ?-as value|-nrs value? ?-temp value? ?-off? ?-pd value? ?-ps value? ?-ic {value value value}? ?-custparams param1 {param1Val ?-eq|-poseq|-posnocheck|-pos|-nocheck?} ...?
Details
Parameters
-adDiffusion area of drain, optional, forbid -nrd.
-asDiffusion area of source, optional,forbid -nrs.
-custparamsKey that collects all arguments at the end of device definition, to provide an ability to add custom parameters in form -custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ... Must be specified after all others options. Optional.
-icInitial conditions for vds, vgs and vbs, in form of three element list, optional, require 4th node.
-lLength of channel, optional.
-mMultiplier, optional.
-modelName of the model.
-n4Name of 4th node;
-n5Name of 5th node, require -n4, optional.
-n6Name of 6th node, require -n5, optional.
-n7Name of 7th node, require -n6, optional.
-nrdEquivalent number of squares of the drain diffusions.
-nrsEquivalent number of squares of the source diffusions.
-offInitial state, optional.
-pdPerimeter area of drain, optional.
-psPerimeter area of source, optional.
-tempDevice temperature.
-wWidth of channel, optional.
nameName of the device without first-letter designator M.
ndName of node connected to drain pin.
ngName of node connected to gate pin.
nsName of node connected to source pin.
Description
M<name> <drain node> <gate node> <source node>
+ <bulk/substrate node> <model name>
+ [L=<value>] [W=<value>]
+ [AD=<value>] [AS=<value>]
+ [PD=<value>] [PS=<value>]
+ [NRD=<value>] [NRS=<value>]
+ [M=<value] [IC=<value, ...>]

Example of class initialization:

::SpiceGenTcl::Xyce::Mosfet new 1 netd netg nets -model mosfetmod -l 1e-6 -w 10e-3 -n4 netsub -n5 net5
method constructor {args} {

    # Creates object of class `Mosfet` that describes semiconductor MOSFET device.
    #  name - name of the device without first-letter designator M
    #  nd - name of node connected to drain pin
    #  ng - name of node connected to gate pin
    #  ns - name of node connected to source pin
    #  -model - name of the model
    #  -m - multiplier, optional
    #  -l - length of channel, optional
    #  -w - width of channel, optional
    #  -ad - diffusion area of drain, optional, forbid -nrd
    #  -as - diffusion area of source, optional,forbid -nrs
    #  -pd - perimeter area of drain, optional
    #  -ps - perimeter area of source, optional
    #  -nrd - equivalent number of squares of the drain diffusions
    #  -nrs - equivalent number of squares of the source diffusions
    #  -temp - device temperature
    #  -ic - initial conditions for vds, vgs and vbs, in form of three element list, optional, require 4th node
    #  -off - initial state, optional
    #  -n4 - name of 4th node;
    #  -n5 - name of 5th node, require -n4, optional
    #  -n6 - name of 6th node, require -n5, optional
    #  -n7 - name of 7th node, require -n6, optional
    #  -custparams - key that collects all arguments at the end of device definition, to provide an ability
    #  to add custom parameters in form `-custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ...`
    #  Must be specified after all others options. Optional.
    # ```
    # M<name> <drain node> <gate node> <source node>
    # + <bulk/substrate node> <model name>
    # + [L=<value>] [W=<value>]
    # + [AD=<value>] [AS=<value>]
    # + [PD=<value>] [PS=<value>]
    # + [NRD=<value>] [NRS=<value>]
    # + [M=<value] [IC=<value, ...>]
    # ```
    # Example of class initialization:
    # ```
    # ::SpiceGenTcl::Xyce::Mosfet new 1 netd netg nets -model mosfetmod -l 1e-6 -w 10e-3 -n4 netsub -n5 net5
    # ```
    # Synopsis: name nd ng ns -model value ?-n4 value ?-n5 value ?-n6 value ?-n7 value???? ?-m value?
    #   ?-l value? ?-w value? ?-ad value|-nrd value? ?-as value|-nrs value? ?-temp value? ?-off? ?-pd value?
    #   ?-ps value? ?-ic \{value value value\}?
    #   ?-custparams param1 \{param1Val ?-eq|-poseq|-posnocheck|-pos|-nocheck?\} ...?
    set arguments [argparse -inline -pfirst -help {Creates object of class 'Mosfet' that describes semiconductor MOSFET device} {
        {-model= -required -help {Name of the model}}
        {-m= -help Multiplier}
        {-l= -help {Length of channel}}
        {-w= -help {Width of channel}}
        {-ad= -forbid {nrd} -help {Diffusion area of drain}}
        {-as= -forbid {nrs} -help {Diffusion area of source}}
        {-pd= -help {Perimeter area of drain}}
        {-ps= -help {Perimeter area of source}}
        {-nrd= -forbid {ad} -help {Equivalent number of squares of the drain diffusions}}
        {-nrs= -forbid {as} -help {Equivalent number of squares of the source diffusions}}
        {-temp= -help {Device temperature}}
        {-ic= -validate {[llength $arg]==3} -help {Initial conditions for vds, vgs and vbs, in form of three element list}}
        {-n4= -help {Name of 4th node}}
        {-n5= -require {n4} -help {Name of 5th node}}
        {-n6= -require {n5} -help {Name of 6th node}}
        {-n7= -require {n7} -help {Name of 7th node}}
        {-custparams -catchall -help {Key that collects all arguments at the end of device definition, to provide an ability to add custom parameters in form '-custparams param1 param1Val param2 {param2eq -eq} param3 param3Val ...'}}
        {name -help {Name of the device without first-letter designator}}
        {nd -help {Name of node connected to drain pin}}
        {ng -help {Name of node connected to gate pin}}
        {ns -help {Name of node connected to source pin}}
    }]
    lappend params [list model [dget $arguments model] -posnocheck]
    if {[dexist $arguments ic]} {
        lappend params [list ic [join [dget $arguments ic] ,] -nocheck]
    }
    dict for {paramName value} $arguments {
        if {$paramName ni {model off ic n4 n5 n6 n7 custparams name nd ng ns}} {
            lappend params [list $paramName {*}$value]
        }
    }
    if {[dget $arguments custparams] ne {}} {
        if {[llength [dget $arguments custparams]]%2!=0} {
            return -code error "Custom parameters list must be even length"
        }
        set custParamDict [dcreate {*}[dget $arguments custparams]]
        dict for {paramName value} $custParamDict {
            lappend params [list $paramName {*}$value]
        }
    }
    set pinList [list [list nd [dget $arguments nd]] [list ng [dget $arguments ng]] [list ns [dget $arguments ns]]]
    if {[dexist $arguments n4]} {
        lappend pinList [list n4 [dget $arguments n4]]
        if {[dexist $arguments n5]} {
            lappend pinList [list n5 [dget $arguments n5]]
            if {[dexist $arguments n6]} {
                lappend pinList [list n6 [dget $arguments n6]]
                if {[dexist $arguments n7]} {
                    lappend pinList [list n7 [dget $arguments n7]]
                }
            }
        }
    }
    next m[dget $arguments name] $pinList $params
}

Q [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee Bjt.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

Bjt

Z [::SpiceGenTcl::Xyce::SemiconductorDevices]Top, Main, Index

Method summary
addParamSee ::SpiceGenTcl::Device.addParam
addPinSee ::SpiceGenTcl::Device.addPin
checkFloatingPinsSee ::SpiceGenTcl::Device.checkFloatingPins
configureConfigure properties.
deleteParamSee ::SpiceGenTcl::Device.deleteParam
genSPICEStringSee ::SpiceGenTcl::Device.genSPICEString
getParamsSee ::SpiceGenTcl::Device.getParams
getPinsSee ::SpiceGenTcl::Device.getPins
setParamValueSee ::SpiceGenTcl::Device.setParamValue
setPinNodeNameSee ::SpiceGenTcl::Device.setPinNodeName
Properties

Readable: -name

Writable: -name

Superclasses

Mesfet