# SLiCAPinstruction.py

SLiCAP instruction class definition.

class instruction

  Prototype Instruction object.

  A

    Base conversion matrix (sympy.Matrix).

  DCvalue

    Zero-frequency value in case of dataType ‘pz’. (sympy.Expr, sympy.Float)

  Dv

    Vector with dependent variables (sympy.Matrix).

  Iv

    Vector with independent variables (sympy.Matrix).

  M

    MNA matrix (sympy.Matrix).

  check()

    Checks the completeness and consistancy of the instruction data. Will be called by instruction.execute().

    Example:

        >>> # create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')

  checkCircuit()

    Checks if the circuit for this instruction is a `SLiCAPprotos.circuit()` object.

    Called by instruction.execute().

  checkDataType()

    Checks if the data type is defined correctly.”

    Called by instruction.check() and by setDataType(<dataType>).

  checkDetector()

    Checks if the detector has been defined and if it exists in the circuit.

    Called by instruction.check() and by instruction.setDetector(<detector>).

  checkLGref()

    Checks if the loop gain reference has been defined and if it exists in the circuit.

    Called by instruction.check() and by instruction.setLGref(<lgRef>).

  checkPairExt(pairExt)

    Check the list with extensions of paired nodes.

    Parameters:

      varPairs (list) – list with extensions of paired nodes.

    Returns:

      number of errors

    Return type:

      int

  checkPairedCircuits(circuitPairs)

    Check the list with names of with paired subcircuits.

    Parameters:

      cirPairs – list with refDes of two subcircuits

    Returns:

      number of errors

    Return type:

      int

  checkSource(need=True)

    Checks if the source has been defined and if it exists in the circuit.

    Called by instruction.check() and by instruction.setSource(<source>).

    Parameters:

      need (bool) – If True, a source is required and an error message will be given if it missing. If False, only the presence of the indicated independent source in the circuit will be verified.

  checkStep()

    This method will check the completeness and the consistency of the instruction data for parameter stepping, before executing the instruction.

    Called by instruction.check() in cases in which instruction.step == True

  checkStepArray()

    Checks if the array with step values is defined properly.

    Called by instruction.checkStep() and by instruction.setStepArray(<stepArray>).

    The step array is a list of lists. The number of lists must equal the number of step variables. The numbers in the lists are subsequent values of the associated step variable. All lists should have equal lengths.

  checkStepList()

    Checks if the list with step values is defined properly.

    Called by instruction.checkStep() and by instruction.setStepList(<stepList>).

  checkStepMethod()

    Checks if the step method is defined correctly.

    Called by instruction.checkStep and by instruction.setStepMethod(<stepMethod>).

  checkStepNum()

    Checks if the number of steps is defined properly.

    Called by :instruction.checkStep() and by instruction.setStepNum(<stepNum>).

    Also called by and by instruction.setStepNum(<stepNum>).

  checkStepStart()

    Checks if the start value for parameter stepping is defined correctly.

    Called by instruction.checkStep() and by instruction.stepStart(<stepStart>).

  checkStepStop()

    Checks if the end value for parameter steping is defined correctly.

    Called by instruction.checkStep() and by instruction.stepStop(<stepStop>).

  checkStepVar()

    Checks if the step variable is defined correctly.

    Called by instruction.checkStep() and by setStepVar(<stepVar>).

  checkStepVars()

    Checks if the step variables for array stepping are defined correctly.

    Called by instruction.checkStep and by instruction.setStepVars(<stepVars>).

  circuit

    Circuit (SLiCAPprotos.circuit) used for this instruction. Can be assigned by setting this attribute, or will be defined by running: instruction.setCircuit(<fileName>).

    Example:

        >>> # Create an instance of a circuit object by checking a netlist:
        >>> my_circuit = checkCircuit('my_circuit.cir')
        >>> # create an instance of an instruction object:
        >>> my_instruction = instruction()
        >>> Use the circuit 'my_circuit' or the instruction 'my_instruction'.
        >>> my_instruction.circuit = my_circuit

    Example:

        >>> # create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')

  clear()
  controlled()

    Returns a list with names of controlled sources in instruction.circuit that can be used as loop gain reference.

    Returns:

      list with names of controlled sources in instruction.circuit

    Return type:

      list

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Obtain a list with names of controlled sources:
        >>> my_instr.controlled()
        []

  convType

    Defines the conversion type (None, ‘dd’, ‘dc’, ‘cd’, ‘cc’)

    See instruction.setConvType(<convType>) for specification of instruction.convType.

  dataType

    Defines the simulation data type.

    See instruction.setDataType(<dataType>) for specification of instruction.dataType.

  dcSolve

    DC solution of the network.

  defPar(parName, parValue)

    Adds or modifies a parameter definition and updates the list instruction.circuit.params with names (sympy.Symbol) of undefined parameters.

    Parameters:

      - parName (str, sympy.Symbol, sympy.Expr) – Name of the parameter.

      - parValue – Value or expression.

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Define the value of 'R' as 2000
        >>> my_instr.defPar('R', '2k')
        >>> # Or:
        >>> my_instr.defPar('R', 2e3)

  defPars(parDict)

    Adds or modifies multiple parameter definitions and updates the list instruction.circuit.params with names (sympy.Symbol) of undefined parameters.

    Params parDict:

      Dictionary with key-value pairs: key: parName (str, sympy.Symbol): name of the parameter. value: parValue (str, float, int, sp.Symbol) : value or expression of the parameter.

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Define the value of 'R' as 2000 and 'C' as 5e-12:
        >>> my_instr.defPars({'R': '2k', 'C': '5p'})

  delPar(parName)

    Deletes a parameter definition

    After deletion of the parameter from the instruction.circuit.parDefs dictionary the list instruction.circuit.params with names (sympy.Symbol) of undefined parameters is updated.

    Parameters:

      parName (str, sympy.Symbol) – Name of the parameter.

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Delete the definition for the parameter 'R':
        >>> my_instr.delPar('R')
        >>> # Or:
        >>> my_instr.circuit.delPar('R')

  denom

    Laplace poly of denominator (sympy.Expr).

  depVars()

    Returns a list with names of nodal voltages and branch currents that can be used as detector.

    Returns:

      list with names of nodal voltages and branch currents

    Return type:

      list

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Obtain a list with names of dependent variables:
        >>> my_instr.depVars()
        ['I_V1', 'V_N001', 'V_out']

  detLabel

    Name for the detector quantity to be used in expressions or plots (automatically determined in instruction.checkDetector()).

  detUnits

    Detector units ‘V’ or ‘A’ (automatically detected in instruction.checkDetector()).

  detector

    Names of the positive and negative detector.

    See instruction.setDetector(<detector>) for specification of the detector.

  errors

    Number of errors found in the definition of this instruction.

    Note:

    The instruction.errors attribute should not be modified directly by the user. It is determined automatically when executing the instruction.

  execute()

    Checks the instruction and executes it if no errors are found.

    if no errors are found it returns a `allResults` object with the results of the instruction.

    Returns:

      instruction object with results of the execution

    Return type:

      SLiCAPinstruction.instruction

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Assign 'V1' signal source:
        >>> my_instr.source = 'V1'
        >>> # Assign 'V_out' detector:
        >>> my_instr.detector = 'V_out'
        >>> # Set the gain type to 'gain'
        >>> my_instr.gainType = 'gain'
        >>> # Set the data type to 'laplace'
        >>> my_instr.dataType = 'laplace'
        >>> result = my_instr.execute()
        >>> print result.laplace

  gainType

    Defines the simulation gain type.

    See instruction.setGainType(<gainType>) for specification of instruction.gainType.

  getElementValue(elementID, param='value')

    Returns the value or expression of one or more circuit elements.

    If instruction.numeric == True it will perform a full recursive substitution of all circuit parameter definitions.

    This method calls instruction.circuit.getElementValue() with numeric = True if instruction.simType is set to ‘numeric’.

    Parameters:

      - elementID (str, list) – name(s) of the element(s)

      - param (str) –

        name of the parameter (equal for all elements):

        - ’value’: Laplace value

        - ’dc’: DC value (independent sources only)

        - ’noise’: Noise spectral density (independent sources only)

        - ’dcvar’: DC variance (independent sources only)

        Defaults to ‘value’.

    Returns:

      if type(param) == list:

      return value = dict with key-value pairs: key (sympy.Symbol): name of the parameter, value (int, float, sympy expression): value of the parameter

      else: value or expression

    Return type:

      dict, float, int, sympy.Expr

    Example:

        >>> # Create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # Create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Obtain the numeric value of 'R1' and 'C1':
        >>> my_instr.symType = 'numeric'
        >>> print my_instr.getElementValue(['R1', 'C1'])
        {'C1': 5.0e-7/pi, 'R1': 1000.00000000000}

  getParValue(parName)

    Returns the value or expression of one or more parameters.

    If instruction.numeric == True it will perform a full recursive substitution of all circuit parameter definitions.

    This method calls instruction.circuit.getParValue() with keyword arg numeric = True if instruction.simType is set to ‘numeric’.

    Parameters:

      parName (str, sympy.Symbol, list) – name(s) of the parameter(s)

    Returns:

      if type(parNames) == list:

      return value = dict with key-value pairs: key (sympy.Symbol): name of the parameter, value (int, float, sympy expression): value of the parameter

      else: value or expression

    Return type:

      dict, float, int, sympy.Expr

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Obtain the numeric parameter definitions of of 'R' and 'C':
        >>> my_instr.symType = 'numeric'
        >>> my_instr.getParValue(['R', 'C'])

  ignoreCircuitParams

    For compatibility with version 2. If True a dictionary of parameters will be used for substitutions. Else these parameters will be taken from the circuit definition.

  impulse

    Unit impulse response (ILT) (sympy.Expr).

  indepVars()

    Returns a list with names of independent sources in instruction.circuit

    Returns:

      list with names of independent sources in instruction.circuit

    Return type:

      list

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Obtain a list with names of independent sources:
        >>> my_instr.indepVars()
        ['V1']

  inoise

    Total source-referred noise spectral density (sympy.Expr) in V^2/Hz or A^2/Hz.

  inoiseTerms

    Dict with lists with contributions to source-referred noise spectrum

    Key = (str) name of the noise source Value = (sympy.Expr) contribution of that noise source to the source-referred noise spectrum in V^2/Hz or A^2/Hz

  ivar

    Total source-referred variance in V^2 or A^2 (sympy.Expr)

  ivarTerms

    Dict with lists with contributions to source-referred variance.

    Key = (str) name of the dcvar source Value = (sympy.Expr) contribution to the source-referred variance in V^2 or A^2

  label

    Label to be used in plots.

  laplace

    Laplace transfer function, or detector current or voltage (sympy.Expr).

  lgRef

    Refdes of the controlled source(s) that is (are) assigned as loop gain reference. A second controlled source is required for decomposition of circuits in common-mode and differential-mode equivalents.

    See instruction.setLGref(<detector>) for specification of the loop gain reference.

  lgValue

    Value of the loopgain reference will be stored during execution of the instruction.

  numer

    Laplace poly of numerator (sympy.Expr).

  numeric

    If True, functions and constants will be evaluated numerically and rational numbers will be converted in sympy.Float

  onoise

    Total detector-referred noise spectrum (sympy.Expr) in V^2/Hz or A^2/Hz.

  onoiseTerms

    Dict with with contributions to detector-referred noise spectrum

    Key = (str) name of the noise source Value = (sympy.Expr) contribution of that noise source to the detector-referred noise spectrum in V^2/Hz or A^2/Hz

  ovar

    Total detector-referred variance in V^2 or A^2 (sympy.Expr)

  ovarTerms

    Dict with lists with contributions to detector-referred variance.

    Key = (str) name of the dcvar source Value = (sympy.Expr) contribution to the detector-referred variance in V^2 or A^2

  pairExt

    Extensions used to indicate paired nodes or elements. Default is: [None, None].

  parDefs

    Parameter definitions for the instruction. Will be updated by executing the instruction.

  params

    Results of parameter sweep (dataType = ‘param’).

  poles

    Complex frequencies in [rad/s] (list)

  references

    Referenced elements in the circuit AFTER execution of an instruction.

    Will be copied from instruction.circuit.references at the start of the execution of the instruction and possibly modified during the excution of the instruction.

  removePairSubName

    If True, the subcircuit pair extension will be removed from parameters in expressions of paired elements in sub circuits. Defaults to True.

    Note:

      Warning: this may result in undesired behavior if global parameters carry the name of parameters in paired sub circuits.

  setCircuit(fileName)

    Defines the circuit for this instruction.

    - Checks the netlist file ‘fileName’

    - Creates a circuit object from it

    - Makes it the ciruit object for this instruction.

    Parameters:

      fileName (str) – Name of the netlist file.

    Example:

        >>> # create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')

  setConvType(convType)

    Defines the circuit conversion type for the instruction.

    Parameters:

      convType – gain type for the instruction: None, ‘dd’, ‘dc’, ‘cd’, ‘cc’, or ‘all’.

  setDataType(dataType)

    Defines the data type for the instruction.

    Parameters:

      dataType (str) – data type for the instruction: ‘dc’, ‘dcsolve’, ‘dcvar’, ‘denom’, ‘impulse’, ‘laplace’, ‘matrix’, ‘noise’, ‘numer’, ‘params’, ‘poles’, ‘pz’, ‘solve’, ‘step’, ‘time’ or ‘zeros’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Set data type to 'laplace':
        >>> my_instr.setDataType('laplace')

  setDetector(detector)

    Defines the signal detector

    Parameters:

      detector (list, str) – Name(s) of one or two nodal voltages or of one or two dependent currents.

    detector can defined as:

    - None: no detector has been defined

    - str: a single detector, name of a nodal voltage or a branch current

    - list: with names of either two nodal voltages or two branch currents.

    instruction.checkDetector converts the detector definition into a list with a positive and a negative detector [<detP>, <detN>], where detP and detN are the names (str) of either two nodal voltages or two branch currents. One of those can be ‘None’.

    A list with names of dependent variables that can be used as signal detector is returned by the method: instruction.depVars().

    Example:

        >>> # create an instance if a SLiCAP instruction
        >>> my_instr = instruction()
        >>> # create my_instr.circuit from the netlist 'myFirstRCnetwork.cir'
        >>> my_instr.setCircuit('myFirstRCnetwork.cir')
        >>> # Display a list with names of nodal voltages and branch currents
        >>> # that can be assigned to the detector.
        >>> my_instr.depVars()
        ['I_V1', 'V_0', 'V_N001', 'V_out']
        >>> # Voltage at node 'out':
        >>> my_instr.setDetector('V_out')
        >>> # Differential voltage between node 'N001' and 'out':
        >>> my_instr.setDetector(['V_N001', 'V_out'])
        >>> # Current through `V1':
        >>> my_instr.setDetector('I_V1')

    Note:

    The voltage ‘V_0’ at the reference node ‘0’ equals zero.

  setGainType(gainType)

    Defines the gain type for the instruction.

    Parameters:

      gainType (str) – gain type for the instruction: ‘gain’, ‘asymptotic’, ‘loopgain’, ‘servo’, ‘direct’, or ‘vi’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Set gain type to 'gain':
        >>> my_instr.setGainType('gain')

  setLGref(lgRef)

    Defines the loop gain reference (name of a controlled source).

    A list with names of dependent (controlled) sources is returned by the method instruction.controlled().

    Parameters:

      lgRef (str, sympy.Symbol) – Name of the loop gain reference.

    Example:

        >>> # create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Display a list with controlled sources of the circuit:
        >>> my_instr.controlled()

  setPairExt(pairExt)

    Defines the extension to element or node IDs for DM and CM pairs.

    Parameters:

      pairExt (list) – list with extensions for paired nodes.

  setPairedCircuits(cirPairs)

    Defines the paired subcircuits for matrix conversion.

    Parameters:

      varPairs (tuple) – list with tuples of names (str) of subcircuits that must be considered pairs.

  setSimType(simType)

    Defines the simulation type for the instruction.

    Parameters:

      simType (str) – Simulation type: ‘symbolic’ or ‘numeric’

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Set the simulation type to numeric:
        >>> my_instr.setSimType('numeric')
        >>> # Set the simulation type to symbolic:
        >>> my_instr.setSimType('symbolic')

    Note:

    SLiCAP always uses symbolic calculation methods. Only in a limited number of cases SLiCAP calulates with floats (pole-zero analysis, determination of the phase margin, etc.).

    With the simulation type set to ‘numeric’ SLiCAP recursively substitutes all circuit parameter definitions into expressions used for element values. Hence, component values can be expressions with symbolic parameters.

    The default number of recursive substitutions is 10. It is defined by ini.recSubst and can be changed by the user. For using the built-in MOS EKV models a value of eight is the minumum for full substitution.

    Example:

        >>> ini.recSubst = 12 # For deeply nested expressions!

  setSource(source)

    Defines the signal source.

    Parameters:

      source (str) – Name of an independent voltage or current source that exists in the circuit.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define the voltage source 'V1' as signal source:
        >>> my_instr.setSource('V1')

    Note:

    A list with names of independent voltage and current sources that can be assigned as signal source can be obtained from the method: instruction.indepVars():

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Obtaine a list with names of independent sources:
        >>> my_instr.circuit.indepVars()

  setStepArray(stepArray)

    Defines the array with values for step method array.

    Parameters:

      stepArray (list) – Nested list: list[i] carries the step values for the step variable in instruction.stepVars[i]. The lists should have equal lengths.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define 'array' type stepping:
        >>> my_instr.setStepMethod('array')
        >>> # Define circuit parameters 'R_a' and 'C_a' as step variables:
        >>> my_instr.setStepVars(['R_a', 'C_a'])
        >>> Define the step values for 'R_a and 'C_a':
        >>> my_instr.setStepArray([['1k', 1200, 1.2e3],['1u', 10e-6, 0.0001]])
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepList(stepList)

    Defines the list with step values for step method ‘list’. This list will be overwritten if the instruction is executed with the step method set to ‘lin’ or ‘log’.

    Parameters:

      stepList (list) – List with step values for the step parameter.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define 'list' type stepping:
        >>> my_instr.setStepMethod('list')
        >>> # Define the circuit parameter 'alpha' as step parameter:
        >>> my_instr.setStepVar('alpha')
        >>> # Define a list of step values for this parameter.
        >>> my_instr.setStepList(['10m', '20m', '50m', 0.1, 0.2, 0.5, 1, 2, 5])
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepMethod(stepMethod)

    Defines the parameter stepping method.

    Parameters:

      stepMethod (str) – ‘lin’, ‘log’, ‘list’ or ‘array’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define 'linear' type stepping:
        >>> my_instr.setStepMethod('lin')
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepNum(stepNum)

    Defines the number of steps for ‘lin’ and ‘log’ parameter stepping.

    Parameters:

      stepNumber – Number of steps for stepping methods ‘lin’ and ‘log’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define linear stepping:
        >>> my_instr.stepMethod = 'lin'
        >>> # Define the start value
        >>> my_instr.setStepStop('1M')  # 1E6
        >>> my_instr.setStepStop(1e6)   # 1E6
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepStart(stepStart)

    Start value for parameter stepping methods ‘lin’ and ‘log’.

    Parameters:

      stepStart (str, int, float) – Start value for parameter stepping methods ‘lin’ and ‘log’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define linear stepping:
        >>> my_instr.stepMethod = 'lin'
        >>> # Define the start value
        >>> my_instr.setStepStart('1k')  # 1E3
        >>> my_instr.setStepStart(1000)  # 1E3
        >>> my_instr.setStepStart(1e3)   # 1E3
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepStop(stepStop)

    End value for parameter stepping methods ‘lin’ and ‘log’.

    Parameters:

      stepStop (str, int, float) – End value for parameter stepping methods ‘lin’ and ‘log’.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define linear stepping:
        >>> my_instr.stepMethod = 'lin'
        >>> # Define the start value
        >>> my_instr.setStepStop('1M')  # 1E6
        >>> my_instr.setStepStop(1e6)   # 1E6
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

  setStepVar(stepVar)

    Defines the step variable for parameter step types ‘lin’, ‘log’ and ‘list’.

    Parameters:

      stepVar (str, sympy.Symbol) – step variable

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Define the circuit parameter 'alpha' as step variable:
        >>> my_instr.setStepVar('alpha')
        >>> # Enable parameter stepping
        >>> my_instr.stepOn()

    Note:

    A list with names (sympy.Symbol) that can be used as stepping parameter is obtained as follows:

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # print the list with names of all parameters that can be stepped:
        >>> print instr.circuit.params + list(instr.circuit.parDefs.keys())

  setStepVars(stepVars)

    Defines the step variables for ‘array’ type stepping.

    Parameters:

      stepVars (list) – List with names (str, sympy.Symbol) of step variables for array type stepping.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # Define 'array' type stepping:
        >>> my_instr.stepMethod = 'array'
        >>> # Define circuit parameters 'R_a' and 'C_a' as step variables:
        >>> my_instr.setStepVars(['R_a', 'C_a'])
        >>> Define the step values for 'R_a and 'C_a':
        >>> my_instr.setStepArray ([['1k', 1200, 1.2e3],['1u', 10e-6, 0.0001]])
        >>> # Enable parameter stepping
        >>> my_instruction.stepOn()

    Note:

    A list with names (sympy.Symbol) that can be used as stepping parameter is obtained as follows:

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # check a netlist file and use the circuit from this file for this
        >>> # instruction:
        >>> my_instr.setCircuit('my_circuit.cir')
        >>> # print the list with names of all parameters that can be stepped:
        >>> print instr.circuit.params + list(instr.circuit.parDefs.keys())

  simType

    Defines the simulation gain type.

    See instruction.setSimType(<simType>) for specification of instruction.simType.

  snoiseTerms

    Dict with source noise spectra.

    Key = (str) name of the noise source Value = (sympy.Expr) noise spectral density in V^2/Hz or A^2/Hz

  solve

    Laplace solution of the network.

  source

    Refdes of the signal source (independent v or i source).

    See instruction.setSource(<source>) for specification of the source.

  srcUnits

    Source units ‘V’ or ‘A’ (automatically detected in instruction.checkSource()).

  step

    Setting for parameter stepping.

    See instruction.setStepOn() and instruction.setStepOff() for specification of instruction.step.

  stepArray

    Array (list of lists) with values for step method array.

    See instruction.setStepArray(<stepArray>) for specification of instruction.stepArray.

  stepDict

    Dictionary with key-value pairs:

    key: name of a step parameter (sympy.Symbol) value: list with values for this parameter

  stepList

    List with values for step method ‘list’.

    See instruction.setStepList(<stepList>) for specification of instruction.stepList.

  stepMethod

    Step method for parameter stepping.

    See instruction.setStepMethod(<stepMethod>) for specification of instruction.stepMethod.

  stepNum

    Number of steps for step methods ‘lin’ and ‘log’.

    See instruction.setStepNum(<stepNum>) for specification of instruction.stepNum.

  stepOff()

    Disables parameter stepping.

    Does not change other settings for parameter stepping.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Disable parameter stepping
        >>> my_instruction.stepOff()

  stepOn()

    Enables parameter stepping.

    Does not change other settings for parameter stepping.

    Example:

        >>> # Create an instance of the instruction object
        >>> my_instr = instruction()
        >>> # Enable parameter stepping
        >>> my_instruction.stepOn()

  stepResp

    Unit step response (ILT) (sympy.Expr).

  stepStart

    Start value for stepping methods ‘lin’ and ‘log’.

    See instruction.setStepStart(<stepStart>) for specification of instruction.stepStart.

  stepStop

    Stop value for stepping methods ‘lin’ and ‘log’.

    See instruction.setStepStop(<stepStop>) for specification of instruction.stepStop.

  stepVar

    Defines the step variable (str) for step types ‘lin’, ‘log’ and ‘list’.

    See instruction.setStepVar(<stepVar>) for specification of instruction.stepVar.

  stepVars

    Defines the step variables for ‘array’ type parameter stepping.

    See instruction.setStepVars(<stepVars>) for specification of instruction.stepVars.

  substitute

    If True: parameters from self.circuit will be substituted recursively in element values.

    Else: element values defined in the circuit will be used

  svarTerms

    Dict with source variances

    Key = (str) name of the dcvar source Value = (sympy.Expr) dcvar value in V^2 or A^2

  time

    Time-domain response of the circuit (ILT) (sympy.Expr).

  timeSolve

    Time-domain solution of the network.

  zeros

    Complex frequencies in [rad/s] (list)