11.1.10.1. BasicElement

This module implements SPICE circuit elements.

Warning

Some elements are partially implemented.

Warning

The API documentation generated by Sphinx is perfectible for this module. The source code can be more informative.

Note

It would be nice to have a useful and working documentation in the interactive environment.

The element’s parameters are internally implemented using class attributes and descriptors.

There are two types of parameters, positionals which are required and where the order mater, and optional parameters which are passed as keyword arguments.

Parameters are registered with more expressive and longer names than their Spice counterparts. For optional parameters, we can use both Spice and longer name for convenience.

See Ngspice documentation for details.

First letter

Element description

A

XSPICE code model

B

Behavioral (arbitrary) source

C

Capacitor

D

Diode

E

Voltage-controlled voltage source (VCVS)

F

Current-controlled current source (CCCs)

G

Voltage-controlled current source (VCCS)

H

Current-controlled voltage source (CCVS)

I

Current source

J

Junction field effect transistor (JFET)

K

Coupled (Mutual) Inductors

L

Inductor

M

Metal oxide field effect transistor (MOSFET)

N

Numerical device for GSS

O

Lossy transmission line

P

Coupled multiconductor line (CPL)

Q

Bipolar junction transistor (BJT)

R

Resistor

S

Switch (voltage-controlled)

T

Lossless transmission line

U

Uniformly distributed RC line

V

Voltage source

W

Switch (current-controlled)

X

Subcircuit

Y

Single lossy transmission line (TXL)

Z

Metal semiconductor field effect transistor (MESFET)

class PySpice.Spice.BasicElement.BehavioralCapacitor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a behavioral capacitor.

Spice syntax:

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

Keyword Parameters:

tc1

tc2

Attributes:

capacitance_expression

tc1

tc2

class PySpice.Spice.BasicElement.BehavioralInductor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a behavioral inductor.

Spice syntax:

LXXXXXXX n+ n- 'expression' <tc1=value> <tc2=value>
LXXXXXXX n+ n- L='expression' <tc1=value> <tc2=value>

Keyword Parameters:

tc1

tc2

Attributes:

inductance_expression

tc1

tc2

class PySpice.Spice.BasicElement.BehavioralResistor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a behavioral resistor.

Spice syntax:

RXXXXXXX n+ n- 'expression' <tc1=value> <tc2=value>
Rxxxxxxx n+ n- R='expression' <tc1=value> <tc2=value>

Keyword Parameters:

tc1

tc2

Attributes:

resistance_expression

tc1

tc2

class PySpice.Spice.BasicElement.BehavioralSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a behavioral source.

Spice syntax:

BXXXXXXX n+ n- <i=expr> <v=expr> <tc1=value> <tc2=value> <temp=value> <dtemp=value>

Keyword Parameters:

current_expression

alias i

voltage_expression

alias v

tc1

tc2

temperature

alias temp

device_temperature

alias dtemp

Attributes:

current_expression

voltage_expression

tc1

tc2

temperature

device_temperature

class PySpice.Spice.BasicElement.BipolarJunctionTransistor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements a bipolar junction transistor.

Spice syntax:

QXXXXXXX nc nb ne <ns> mname <area=val> <areac=val> <areab=val> <m=val> <off> <ic=vbe,vce> <temp=val> <dtemp=val>

Keyword Parameters:

model

area

areac

areab

multiplier

alias m

off

ic

temperature

alias temp

device_temperature

alias dtemp

Attributes:

model

area

areac

areab

multiplier

off

ic

temperature

device_temperature

class PySpice.Spice.BasicElement.Capacitor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a capacitor.

Spice syntax:

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

Keyword Parameters:

model

multiplier

alias m

scale

temperature

alias temp

device_temperature

alias dtemp

initial_condition

alias ic

Attributes:

capacitance

model

multiplier

scale

temperature

device_temperature

initial_condition

class PySpice.Spice.BasicElement.CoupledInductor(name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.AnyPinElement

This class implementss a coupled (mutual) inductors.

Spice syntax:

KXXXXXXX LYYYYYYY LZZZZZZZ value

Keyword Parameters:

Attributes:

inductor1

inductor2

coupling_factor

class PySpice.Spice.BasicElement.CoupledMulticonductorLine(netlist, name, *nodes, **parameters)[source]

Bases: PySpice.Spice.Netlist.NPinElement

This class implements coupled multiconductor lines.

Spice syntax:

PXXXXXXX NI1 NI2 ... NIX GND1 NO1 NO2 ... NOX GND2 model <len=length>

Attributes:

model

length

alias len length of the line in meters

Note

As opposite to Spice, the model is specified before the nodes so as to act as *args.

class PySpice.Spice.BasicElement.CurrentControlledCurrentSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a linear current-controlled current sources (CCCS).

Spice syntax:

FXXXXXXX n+ n- vname value <m=val>

Keyword Parameters:

multiplier

alias m

Attributes:

source

current_gain

class PySpice.Spice.BasicElement.CurrentControlledSwitch(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a current controlled switch.

Spice syntax:

WYYYYYYY n+ n- vname model <on> <off>

Keyword Parameters:

source

model

initial_state

Attributes:

source

model

initial_state

class PySpice.Spice.BasicElement.CurrentControlledVoltageSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a linear current-controlled voltage sources (CCVS).

Spice syntax:

HXXXXXXX n+ n- vname value

Keyword Parameters:

Attributes:

source

transresistance

class PySpice.Spice.BasicElement.CurrentSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements an independent sources for current.

Spice syntax:

IYYYYYYY n+ n- <<dc> dc/tran value> <ac <acmag <acphase>>> <distof1 <f1mag <f1phase>>> <distof2 <f2mag <f2phase>>>

Keyword Parameters:

Attributes:

dc_value

class PySpice.Spice.BasicElement.Diode(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements a junction diode.

Spice syntax:

DXXXXXXX n+ n- mname <area=val> <m=val> <pj=val> <off> <ic=vd> <temp=val> <dtemp=val>

Keyword Parameters:

model

area

multiplier

alias m

pj

off

ic

temperature

alias temp

device_temperature

alias dtemp

Attributes:

model

area

multiplier

pj

off

ic

temperature

device_temperature

class PySpice.Spice.BasicElement.DipoleElement(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements a base class for dipole element.

class PySpice.Spice.BasicElement.GSSElement[source]

Bases: PySpice.Spice.Netlist.NPinElement

This class implements GSS device.

Warning

Not implemented

class PySpice.Spice.BasicElement.Inductor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements an inductor.

Spice syntax:

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

Keyword Parameters:

nt

multiplier

alias m

scale

temperature

alias temp

device_temperature

alias dtemp

initial_condition

alias ic

Attributes:

inductance

model

nt

multiplier

scale

temperature

device_temperature

initial_condition

class PySpice.Spice.BasicElement.JfetElement(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

class PySpice.Spice.BasicElement.JunctionFieldEffectTransistor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.JfetElement

This class implements a bipolar junction transistor.

Spice syntax:

JXXXXXXX nd ng ns mname <area> <off> <ic=vds,vgs> <temp=t>

Keyword Parameters:

model

area

off

ic

temperature

alias temp

Attributes:

model

area

off

ic

temperature

class PySpice.Spice.BasicElement.LosslessTransmissionLine(name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements a lossless transmission line.

Spice syntax:

TXXXXXXX N1 N2 N3 N4 Z0=VALUE <TD=VALUE> <F=FREQ <NL=NRMLEN>> <IC=V1, I1, V2, I2>

where TD or F, NL must be specified.

Keyword Parameters:

impedance

alias:Z0 is the characteristic impedance

time_delay

alias:TD is the transmission delay

frequency

alias:F

normalized_length

alias:NL

Attributes:

impedance

time_delay

frequency

normalized_length

The transmission delay, td, may be specified directly (as td=10ns, for example). Alternatively, a frequency f may be given, together with nl, the normalized electrical length of the transmission line with respect to the wavelength in the line at the frequency f. If a frequency is specified but nl is omitted, 0.25 is assumed (that is, the frequency is assumed to be the quarter-wave frequency). Note that although both forms for expressing the line length are indicated as optional, one of the two must be specified.

Note: Either time_delay or frequency must be given.

class PySpice.Spice.BasicElement.LossyTransmission(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements lossy transmission lines.

Spice syntax:

OXXXXXXX n1 n2 n3 n4 model

Attributes:

model

Note

As opposite to Spice, the model is specified before the nodes so as to act as *args.

class PySpice.Spice.BasicElement.Mesfet(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.JfetElement

This class implements a Metal Semiconductor Field Effect Transistor.

Spice syntax:

ZXXXXXXX nd ng ns mname <area> <off> <ic=vds,vgs>

Keyword Parameters:

model

area

off

ic

Attributes:

model

area

off

ic

class PySpice.Spice.BasicElement.Mosfet(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements a Metal Oxide Field Effect Transistor.

Spice syntax:

MXXXXXXX nd ng ns nb mname <m=val> <l=val> <w=val>
+ <ad=val> <as=val> <pd=val> <ps=val> <nrd=val>
+ <nrs=val> <off> <ic=vds,vgs,vbs> <temp=t>

Keyword Parameters:

model

multiplier

alias m

length

alias l

width

alias w

nfin

only for Xyce

drain_area

alias ad

source_area

alias as

drain_perimeter

alias pd

source_perimeter

alias ps

drain_number_square

alias nrd

source_number_square

alias nrs

off

ic

temperature

alias temp

Attributes:

model

multiplier

length

width

nfin

only for Xyce

drain_area

source_area

drain_perimeter

source_perimeter

drain_number_square

source_number_square

off

ic

temperature

class PySpice.Spice.BasicElement.NonLinearCurrentSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a non-linear current sources.

Warning

Partially implemented

Spice syntax:

Gxxx n+ n- value={expr}
Gxxx n1 n2 TABLE {expression}=(x0,y0) (x1,y1) (x2,y2)
Gxxx n+ n- ( POLY (nd) ) nc1+ nc1- ( nc2+ nc2- ... ) p0 ( p1 ... )
Laplace

Keyword Parameters:

Attributes:

transconductance

class PySpice.Spice.BasicElement.NonLinearVoltageSource(name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a non-linear voltage source.

Warning

Partially implemented

Spice syntax:

Exxx n+ n- vol='expr'
Exxx n+ n- value={expr}
Exxx n1 n2 TABLE {expression}=(x0,y0) (x1,y1) (x2,y2)
Exxx n+ n- ( POLY (nd) ) nc1+ nc1- ( nc2+ nc2- ... ) p0 ( p1 ... )
Laplace

Keyword Parameters:

Attributes:

class PySpice.Spice.BasicElement.Resistor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a resistor.

Spice syntax:

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

Keyword Parameters:

ac

multiplier

alias m

scale

temperature

alias temp

device_temperature

alias dtemp

noisy

Attributes:

resistance

ac

multiplier

scale

temperature

device_temperature

noisy

class PySpice.Spice.BasicElement.SemiconductorCapacitor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a semiconductor capacitor.

Spice syntax:

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

Keyword Parameters:

model

length

alias l

width

alias w

multiplier

alias m

scale

temperature

alias temp

device_temperature

alias dtemp

initial_condition

alias ic

Attributes:

capacitance

model

length

width

multiplier

scale

temperature

device_temperature

initial_condition

class PySpice.Spice.BasicElement.SemiconductorResistor(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements a Semiconductor resistor.

Spice syntax:

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

Keyword Parameters:

model

length

alias l

width

alias w

temperature

alias temp

device_temperature

alias dtemp

multiplier

alias m

ac

scale

noisy

Attributes:

resistance

model

length

width

temperature

device_temperature

multiplier

ac

scale

noisy

class PySpice.Spice.BasicElement.SingleLossyTransmissionLine(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements single lossy transmission lines.

Spice syntax:

YXXXXXXX N1 0 N2 0 model <len=length>

Attributes:

model

length

alias len length of the line in meters

Note

As opposite to Spice, the model is specified before the nodes so as to act as *args.

class PySpice.Spice.BasicElement.SubCircuitElement(netlist, name, subcircuit_name, *nodes, **parameters)[source]

Bases: PySpice.Spice.Netlist.NPinElement

This class implements a sub-circuit.

Spice syntax:

XYYYYYY node1 node2 ... subcircuit_name parameter1=value1 ...

Attributes:

subcircuit_name

Note

As opposite to Spice, the circuit’s name is specified before the nodes so as to act as *args.

format_spice_parameters()[source]

Return the formatted list of parameters.

class PySpice.Spice.BasicElement.TwoPortElement(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements a base class for two-port element.

class PySpice.Spice.BasicElement.UniformDistributedRCLine(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.Netlist.FixedPinElement

This class implements uniform distributed RC lines.

Spice syntax:

UXXXXXXX n1 n2 n3 model l=length <n=number_of_lumps>

Attributes:

model

length

alias l length of the RC line in meters

number_of_lumps

alias n

Note

As opposite to Spice, the model is specified before the nodes so as to act as *args.

class PySpice.Spice.BasicElement.VoltageControlledCurrentSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements a linear voltage-controlled current sources (VCCS).

Spice syntax:

Gxxx n+ n- nc+ nc- value <m=val>

Keyword Parameters:

multiplier

alias m

Attributes:

transconductance

class PySpice.Spice.BasicElement.VoltageControlledSwitch(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements a voltage controlled switch.

Spice syntax:

SXXXXXXX n+ n- nc+ nc- model <on> <off>

Keyword Parameters:

model

initial_state

Attributes:

model

initial_state

class PySpice.Spice.BasicElement.VoltageControlledVoltageSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.TwoPortElement

This class implements a linear voltage-controlled voltage sources (VCVS).

Spice syntax:

EXXXXXXX n+ n- nc+ nc- value

Keyword Parameters:

Attributes:

voltage_gain

class PySpice.Spice.BasicElement.VoltageSource(netlist, name, *args, **kwargs)[source]

Bases: PySpice.Spice.BasicElement.DipoleElement

This class implements an independent sources for voltage.

Spice syntax:

VXXXXXXX n+ n- <<dc> dc/tran value> <ac <acmag <acphase>>> <distof1 <f1mag <f1phase>>> <distof2 <f2mag <f2phase>>>

Keyword Parameters:

Attributes:

dc_value

class PySpice.Spice.BasicElement.XSpiceElement(netlist, name, *nodes, **parameters)[source]

Bases: PySpice.Spice.Netlist.NPinElement

This class implements a sub-circuit.

Spice syntax:

AXXXXXXX <%v ,%i ,%vd ,%id ,%g,%gd ,%h,%hd , or %d>
+ <[> <~><%v ,%i ,%vd ,%id ,%g,%gd ,%h,%hd , or %d>
+ <NIN1 or +NIN1 -NIN1 or "null">
+ <~>...< NIN2 .. <]> >
+ <%v ,%i ,%vd ,%id ,%g,%gd ,%h,%hd ,%d or %vnam >
+ <[> <~><%v ,%i ,%vd ,%id ,%g,%gd ,%h,%hd ,
or %d>< NOUT1 or +NOUT1 -NOUT1 >
+ <~>...< NOUT2 .. <]>>
+ MODELNAME

. MODEL MODELNAME MODELTYPE
+ <( PARAMNAME1 = <[> VAL1 <VAL2 ... <]>> PARAMNAME2 ..>)>

Attributes:

model

Note

As opposite to Spice, the model is specified before the nodes so as to act as *args.

Warning

Partially implemented.