Appearance
Observables
An observable is a named signal that the simulator records and makes available for plotting, logging, or post-processing. Every trace on the scope panel is backed by an observable; every column in the result CSV corresponds to one.
Three ways to declare an observable
- Label a wire. Click on a wire and give it a name. The label becomes an observable that emits the signal flowing through it.
- Probe a component's built-in output. Many components expose measurements (a capacitor's branch current, a meter's reading) that you can turn on via a checkbox in the properties dialog. The name you give the measurement becomes the observable id.
- Define one explicitly. Open the observables panel (in the main menu) and add an entry directly. Useful when you want to alias an automatically-generated id to something friendlier.
Naming rules
- Names must be unique across the whole circuit. The validator flags duplicates and refuses to run.
- Names live in a single flat namespace shared with
From/GoTosignal routing. Pick something descriptive (e.g.v_bus_3instead ofv1) — when your circuit grows past a dozen signals you'll thank yourself.
How observables flow through the system
When you click Run:
- The front-end exports the circuit to a netlist. Every observable gets a stable id and a binding to either a wire signal, a named port, or a component-internal measurement.
- The simulator's scheduler routes those signals into a CSV writer AND into the streaming-results channel that the scope reads from.
- As chunks arrive, the scope panel updates in real time. When the run finishes, the full CSV is available for download.
See also
- Scope panel for how observables are displayed.
- Multi-rate monitoring for what happens when observables in different rate groups land on the same plot.