ENVLP

A back-of-the-envelope symbolic circuit analyzer
PositiveFB

ENVLP

Getting started

  1. Place the parts. Click a part in the palette on the left, then click the canvas to drop it. The letter keys do the same: R resistor, C capacitor, L inductor, V voltage source, B current source, O op-amp, M MOSFET (press M again for the P-channel), Q BJT (again for the PNP), G ground, Shift+G supply rail, D diode, T transformer, I for the full list. While you are placing, Space rotates the part and Shift+Space flips it; Esc cancels.
  2. Wire them up. Press W, click a pin or any grid point to start a wire, then click the destination. Every click commits a segment and the wire carries on from where it stopped. Space swaps the route between horizontal-first and vertical-first, Enter ends the wire, Esc cancels it. A wire that ends on another wire's endpoint becomes one continuous wire; ending in the middle of another leaves a junction dot. Moving a part takes the wires attached to its pins with it, and a wire can be dragged: the segment under the cursor moves sideways and the rest of the route stretches to follow.
  3. Name the nets. Press N, type one or more names separated by spaces, then click each net in turn. Click a name to select it and press Del to remove it.
  4. Ground the circuit. At least one GND symbol is required. The supply rail (VDD) is optional; its voltage is an operating-point setting, not a value on the symbol.
  5. Run an analysis. Pick one on the right, fill in the fields it asks for, and press Run analysis (Ctrl+Enter). The left pane shows the result typeset (Math) and as text (Report); the right pane shows the Bode, Nyquist, Nichols or noise plot.
  6. Adjust the parts. Click a part to edit its value, its model parameters (gm, ro, Cgs, and the passives' parasitics) and its copies. Each model parameter has its own switch: a transistor's capacitors are off until you turn them on, and a passive is ideal until you give it a stray capacitance or a winding resistance.

Drag the thin dividers between the panels to resize them.

Ignoring negligible terms

ENVLP reports the low-entropy form of a result: every term is ranked by its worst-case magnitude over the sweep, and the terms far below the dominant one are dropped. The answer then reads like the expression a designer would write by hand instead of a page of negligible products.

Two thresholds decide what counts as negligible. They live in the negligible terms section under the analysis options:

Component value threshold
A series or parallel pair collapses when one element is at least this many times the other. 10 (which is 20 dB) means a 10k in parallel with a 1k is reported as the 1k.
Pole / zero threshold
A pole or a zero is dropped when it is more than this many times the reference frequency. A pole above the top of the sweep is dropped as well — it lies outside the analysed band.
Reference
What the pole/zero threshold is measured against: the dominant pole / zero, or the unity-gain bandwidth (the latter drops everything beyond a multiple of the crossover frequency).

Ignore negligible terms switches the whole reduction on and off; with it off you get the exact, fully expanded expression. Approx roots is independent: it lets a factor that cannot be factored exactly be given by its numeric roots instead.

Keyboard shortcuts

R C Lresistor, capacitor, inductor
V Bvoltage source, current source
M / Shift+MN-MOSFET / P-MOSFET (press M again to switch)
Q / Shift+QNPN / PNP (press Q again to switch)
Ddiode
Oop-amp
G / Shift+Gground / supply rail (VDD)
T Ktransformer, coupled inductors
Icomponent menu (every part)
Wwire tool
Nplace net label(s)
Spacerotate the part being placed or the selection by 90° (while wiring: swap the route)
Shift+Spaceflip horizontally
Ctrl+Spaceflip vertically
Ffit the components to the view
Deldelete the selection
Enterend the wire being drawn
Esccancel the current action
U / Shift+Uundo / redo
Ctrl+Z / Ctrl+Yundo / redo
Ctrl+Enterrun the analysis
F1 / ?this help

Shortcuts are ignored while you are typing in a field.

What each analysis does

Transfer function H(s)
The small-signal gain from the input source to the output, as a rational function of s. It reports the DC gain, the pole and zero corner frequencies, the dominant time constant and the factored form of the result.
AC (small-signal)
The small-signal response of the whole circuit: every independent source is excited with its own AC value and the responses are superposed. There is no input source to name, so the analysis has no in field.
DC operating point
The large-signal bias of the circuit: the voltage at every node and the operating point of every device (its drain current and its saturation voltage). The device model, the supply rail and the threshold voltages are set in the operating point section, which belongs to this analysis alone.
PSR / PSRR
How much of the ripple on the supply rail reaches the output: the power supply rejection, referred to the output.
Loop gain (return ratio)
The return ratio of the feedback loop, by the Rosenstark method. Name the amplifier in ref. amplifier: it is the part whose gain is set to zero to break the loop. The report gives the asymptotic gain, the return ratio, the feedback factor and the closed-loop gain.
Short-circuit current
The current that flows into the output node when it is shorted to ground. The short is the excitation, so this analysis has no input source to name either.
Input impedance
The impedance seen by the input source: the voltage across it per amp of drive. It is the source's own response, so it needs the input source and no output.
Output impedance
The impedance seen looking back into the output, with every source turned off. It needs the output node and no input source.
Noise
The output noise density and the input-referred noise, integrated over the sweep band, with the contribution of each source broken out.
Differential (Adm / Acm / CMRR)
The differential gain, the common-mode gain and the common-mode rejection ratio of a differential pair. The input is a differential port (in+ and in−) and the output is a port too, given as two nodes.

Components

Place net label(s)

Type one or more net names, separated by spaces. Each name is placed on the next net you click; Esc stops.