DC variance

Introduction

SLiCAP can be used to determine:

  1. Source-referred and detector-referred variance in \(\left[ V^2 \right]\) or in \(\left[ A^2 \right]\).

  2. Individual contributions of DC error sources to the source-referred and detector-reffered variance

  3. Design limits (show stopper values) for all kinds of DC error sources

All of the above can be performed symbolically or numerically.

Tolerances of resistors and independent DC sources can be defined by setting their DC variance attribute ‘dcvar’ to a nonzero value or expression.

Changed from version 1.8

The variance of resistor values are defined relative (the square of the relative standard deviation: \(\sigma=1\%\) corresponds with dcvar = \(10^{-4}\)). The variance of voltage and current sources is defined absolute in \([V^2]\) or \([A^2]\), respectively.

"DCvar demo circuit"
R1 N1 N2 R value={R} dcvar={(sigma_R)^2}
I1 N1 N2 I value={I_DC} dcvar = {(sigma_I)^2}
V1 N1 N2 0 value={V_DC} dcvar = {(sigma_V)^2}
.param R=1k I_DC=1m V_DC=1 sigma_R=0.01 sigma_I=0.05 sigma_V=0.02

It is not (yet) possible to define the variance of the gain of dependent (controlled) sources.

SLiCAP uses a simplified algorithm for evaluation of the total variance of the detector qantity (voltage or current):

  1. Calculate the nominal (no errors) DC solution of a network

  2. Add error current sources in parallel with resistors. The variance of a current source is the variance of the resistor multiplied with the nominal DC current through that resistor

  3. Calculate the variance of the detector quantity, by adding the contributions of all error sources.

Define a dcvar analysis

DC variance analysis requires the data type ‘dcvar’ and the gain type ‘vi’.

>>> i1=instruction()
>>> i1.setGainType('vi')
>>> i1.setDataType('dcvar')

DC variance analysis results

DC variance analysis provides the following results:

  1. Detector-referred DC variance (output DC variance) in \(\left[ V^2\right]\) or in \(\left[ A^2\right]\)

  2. Contributions of all DC error sources to the detector-referred variance in \(\left[ V^2\right]\) or in \(\left[ A^2\right]\)

  3. If a source has been defined:

    1. Source-referred variance in \(\left[ V^2\right]\) or in \(\left[ A^2\right]\)

    2. Contributions of all DC error sources to the source-referred variance in :\(\left[ V^2\right]\) or in \(\left[ A^2\right]\)

These results can be displayed on a html page.

>>> i1=instruction()                           # Define an instruction
>>> i1.setSimType('symbolic')                  # Set the analysis type to 'symbolic'
>>> i1.setGainType('vi')                       # Set the gain type to 'vi'
>>> i1.setDataType('dcvar')                    # Set the data type to 'dcvar'
>>> i1.setDetector('V_out')                    # DC variance analysis requires a detector
>>> dcvar_result = i1.execute()                # Execute the instruction
>>> htmlPage("Symbolic DC variance analysis")  # Create a html page for displaying the results
>>> dcvar2html(dcvar_result, label='symDCvar') # Display the result on the html page

The result attributes can be used for further analysis:

>>> ovar        = dcvar_result.ovar      # Detector-referred variance
>>> ovar_terms  = dcvar_result.ovarTerms # Contributions to detector-referred variance
>>> ivar        = dcvar_result.ivar      # Source-referred variance;
>>>                                      # requires a source definition
>>> ivar_terms  = dcvar_result.ivarTerms # Contributions to source-referred variance
>>>                                      # requires a source definition

>>> # Print the contributions of the DC error sources to the detector-referred variance
>>> for source_name in list(ovar_terms.keys()):
>>>     print(source_name, ovar_terms[source_name])
>>> # Print the contributions of the DC error sources to the source-referred variance
>>> for source_name in list(ivar_terms.keys()):
>>>     print(source_name, ivar_terms[source_name])

DC variance tutorials

See: Tutorials section