## The Basics

### Build Mode

The editor always starts in Build Mode. You can switch to Simulate Mode by clicking the "Simulate" button along the bottom toolbar.

Click a component in the Build Box to select it, and then click somewhere on the grid to insert into your circuit.

Double-click any component in your circuit to bring up the corresponding parameter editor.

Holding down the Ctrl key while clicking and dragging on the grid will allow you to pan the viewport. Using the mousewheel will zoom.

(Note: please avoid holding Ctrl while actuating the mousewheel, as this generally causes the browser to attempt to zoom on its own. CircuitLab is not compatible with browser zoom, and currently has no way to detect this condition.)

### Ground

Every voltage in CircuitLab is calculated relative to the ground (GND) node, which is by definition at 0 volts. This means that every circuit has to have at least one GND element, or the circuit will not simulate.

The concept of a ground in a circuit simulator is similar but not identical to the concept of an electrical ground in the physical world. In real life, ungrounded battery-operated circuits work just fine, because to the circuit, only relative voltages matter. However, inside a circuit simulator (or even when solving a circuit on paper!), we have to pick one node to be our reference in order to calculate voltages at other nodes.

### Nodes

A node in an electrical circuit is a place where two or more circuit elements meet. A node in CircuitLab is the same thing: a point where two or more elements that are connected by a wire. By definition, the two endpoints of elements that are connected by a wire have the same voltage.

It is perfectly valid (and often more compact) to connect two or more endpoints of a circuit elements together without expcitly drawing a wire between them.

### Named Nodes

It is often very useful (and good practice) to name certain nodes in your circuit. You can do this by using the Name Node circuit element. A Name Node can be dropped onto a wire or directly onto any circuit element's endpoint.

You can "connect" two nodes in your circuit by naming them the same thing. Giving two nodes the same name is equivalent to drawing a wire between two nodes.

It is valid to have more than one name on one node. If that is the case, the node can be referenced by any of its explicitly created names.

If a node is not given a name using a Name Node element, then it is assigned a name by CircuitLab. Unamed nodes will have the prefix un. These automatically-assigned names should not be depended on to stay consistent as you continue working on your circuit, so it's good practice to name nodes whose voltages you'll want to measure or plot.

### Voltmeter and Ammeter

The Voltmeter and Ammeter elements can be used to display the voltage across or the current through the element on the schematic. You can double click a Voltmeter or Ammeter element to bring up the Parameters Box where you can select "Show Voltage" or "Show Current". This will cause the DC voltage across the Voltmeter or the DC current through an ammeter to be displayed next to the element. These values will be updated whenever you run a DC Simulation, and will be rendered on the exports of your schematic.

Note: The values displayed will only be updated when you run a DC Simulation, so a new DC Simulation needs to be run whenever the circuit changes in order for the values dispalyed to be accurate.

### Human-Friendly Inputs

CircuitLab allows you to use human-friendly metric prefixes for all of the numerical input boxes. For example, you can type "1k" for a resistance instead of typing "1000", or "22p" instead of "22e-12" (which works too!).

Table of Prefixes
Prefix10n
T12
G9
M6
k or K3
m-3
u-6
n-9
p-12
f-15

(Note: if you're used to SPICE, where inputs are case insensitive and both "m" and "M" mean "milli", note that CircuitLab is different and follows the standard SI prefixes. Upper-case "M" refers to Mega, or 10+6, while lower-case "m" refers to milli, or 10-3.)

### Plotting Outputs

Every simulation type has a separate Outputs box where you can choose what you want to plot. When a simulation type is active (accordion box expanded) you can click on any wire or Node Name to plot the voltage at that node. Clicking on a circuit element's terminal will cause the current into the terminal to plotted, as well as the voltage at the terminal. Clicking a point where multiple circuit elements meet will cause all the currents going into the elements to be plotted, as well as the voltage at the node where they meet.

In some cases, as you click around your circuit to select outputs, you may capture more outputs than you intended to. In this case, it's good practice to simply remove the expressions you aren't interested in to keep your plots clean.

You can also plot custom expressions.

Click and drag within a plot to zoom in to a plot region. Double-click on the plot to restore original zoom.

Drag vertical and horizontal cursors onto the plot to calculate math functions like averages and integrals.

### DC Simulation

A DC simulation attempts to find a stable DC solution of your circuit. When time-varying components are present, their long-term behavior is approximated -- for example, capacitors become open circuits, and inductors become short circuits. After running a DC Solve, you can mouse over parts of your circuits to see currents and voltages in the lower right hand corner of the screen.

A DC simulation is analogous to probing around a circuit with a multimeter.

### DC Sweep Simulation

A DC Sweep will plot the DC solution of your circuit across different values of a parameter of a circuit element. You can sweep any numerical parameter of any circuit element in your circuit.

The parameter to be swept is specified in the form NAME.PARAM, where NAME is the name of the circuit element, and PARAM is the name of the parameter. For example, sweeping over V1.V would sweep over the parameter V of the circuit element named V1.

A DC sweep is analogous to making measurements while using an adjustable power supply or adjusting a potentiometer. (Of course, in the CircuitLab environment, a much wider range of parameters can be experimented with!)

### Time-Domain Simulation

A Time-Domain Simulation does a transient analysis of your circuit over a certain period of time.

CircuitLab uses the dynamic model of the elements in your circuit work out the voltages and currents in your circuit at every time step. This means that it is very important to choose an appropriate time step for your transient simulation. If your time step is too large, the dynamic model will be inaccurate and the simulation could potentially look nothing like the real-life circuit would. If your time step is too small, your circuit may take too long to simulate.

A good rule of thumb when running a transient analysis is to pick your time step to be 10 times faster than than the fastest signal in your simulation. For example if the fastest source in your simulation is a 1 kHz sine wave, a good starting point would be to set the time step to 0.1m (0.1 milliseconds).

A transient simulation is analogous to using an oscilloscope to make observations about a circuit -- observing the full, non-linear behavior over a wide range of time scales.

### Frequency-Domain Simulation

Frequency Simulation does a small signal analysis of your circuit. The input can be any voltage source or current source. (Note: the input must be an element name, like "V1", and not a node name.) CircuitLab makes this chosen input a sine wave of magnitude 1 (by default), and will sweep the frequency from the chosen start frequency to the end frequency in Hertz.

A linearized, small-signal model of your circuit is generated from the DC operating point. Depending on your circuit, this model may only be accurate for very small signals, so frequency-domain analysis is usually complemented by time-domain analysis to reveal nonlinear effects.

Output voltages and currents reported are the magnitude of the voltage or current relative to the input, which by default is of magnitude 1. If your input is a voltage source, and you measure a different node's voltage in frequency-domain mode, the magnitude is a unitless gain (volts/volt), and any current you measure is a transconductance (amps/volt). Similarly, if your input is a current source, then any current you measure is a unitless gain (amps/amp), and any voltage you measure is a transimpedance (volts/amp).

There are three allowed forms of input source specifications:

• V1 - indicates a single input source named V1, with magnitude 1 and phase 0. This is equivalent to "V1 1 0".
• V1 10 90 - indicates a single input source named V1, a complex phasor with magnitude 10 and phase 90 degrees.
• V1 10 90 V2 1 0 - indicates two input sources: V1 (magnitude 10, phase 90 degrees) and V2 (magnitude 1, phase 0). Additional sources beyond two can be included in the input list.

The V(...), I(...), and P(...) outputs of frequency-domain simulation are all complex numbers -- they have a real and imaginary component, or a magnitude and phase. These complex quantities can be manipulated using various expressions such as REAL(x), IMAG(x), MAG(x), PHDEG(x), and more.

### Plot Cursors and Math Functions

You may position up to two vertical and two horizontal cursor lines on each plot. These cursor lines can be used to measure the absolute difference between any two points on the plot. The positions of the two cursors are also used to calculate a variety of math functions, including average, root-mean-squared (RMS), and integral values.

To position a new cursor line, hover your mouse over the edges of the grid area, where two green lines should appear. Simply click and drag a cursor line to position it on the plot. Re-position a cursor line by clicking on the rectangular handle along the middle of the line. To remove a cursor line, simply drag it off the grid area, and it will disappear.

To apply one of the built-in math functions to a particular trace, right click that trace in the legend and select the calculation you want from the context menu. The result of the calculation will be displayed in the info box in the lower-left corner of the plot. To remove an applied function, click the 'X' that appears next to it in the lower-left info box.