Volta volta logo.png


Volta is a simple circuit simulator for macOS that I created between 2007 and 2013. It all started with the concept drawing below.

Volta early concept drawing.png

Volta was available in the Mac App Store for a short time. My old website KulFX.com ("Cool Effects") was the home of all information related to Volta. In 2017 I stopped operating KulFX.com. In early 2018 I moved the contents of the old Volta homepage to this wiki page.

Volta kulfx logo.png

The feature set of Volta is similar to that of its predecessor, MI-SUGAR. Unlike MI-SUGAR, where the electric components are hard-coded types and the circuit files are stored in a binary format, Volta loads its library components and circuit descriptions from XML files. Also unlike MI-SUGAR, Volta has a modular architecture that is realized with dynamically loadable plug-ins and clear interface definitions. Components like the schematic editor, the simulator, the plotter are all plug-ins.

The implementation of Volta started with C++ and Qt as the GUI toolkit. In 2008 I decided to make Volta exclusively for macOS. Qt was thus replaced by Cocoa. The core model layer, however, remained C++. I recently published the source code on Github as a first step to migrating it to Swift.


Volta screenshot v124 1.png Volta screenshot v124 2.png Volta screenshot v124 3.png


Volta is not available for download as a readily usable app. You can download the Xcode project, however, with all the source code from Github. Follow the instructions on the Github page to build the Volta app with Xcode. The project files are distributed under the GPL 3 license.

User Guide

I haven't transferred the original Volta user guide to this wiki yet. It is available for viewing at robo.fish/volta/help/v124/en/index.html. Replace 'en' with 'de' for the German version. The user guide will eventually be transferred to this page.

Extra Library Files

Download these SPICE models.

Title Type Date Source File
NXP Semiconductors models SPICE 2012/09/30 NXP Semiconductors NXP.lib
On Semiconductor Models SPICE 2012/09/15 ON Semiconductor OnSemi.lib

Download these subcircuit models

Title Date Source File
1N4148 High-speed diode, 4 ns, 100 V max reverse, 450 mA max 2012/09/30 NXP Semiconductors 1N4148.volta
2N7002 N-channel MOSFET, 60 V, 500 mA 2012/09/30 NXP Semiconductors 2N7002.volta
BD680 80 V PNP Darlington Bipolar Power Transistor 2012/09/15 ON Semiconductor BD680.volta
BS170 BS170 N-channel small-signal MOSFET 500 mA, 60 V 2012/09/30 NXP Semiconductors BS170.volta
TIP122 100 V NPN Darlington Bipolar Power Transistor 2012/09/15 ON Semiconductor TIP122.volta
TIP127 100 V PNP Darlington Bipolar Power Transistor 2012/09/15 ON Semiconductor TIP127.volta

Download these component palettes

Title Date Source File
Capacitors (E12 Series) 2012/09/15 KulFX Capacitors_E12.volta
Inductors (E12 Series) 2012/09/15 KulFX Inductors_E12.volta
Resistors (E12 Series) 2012//09/15 KulFX Resistors_E12.volta
Meters and Power Sources 2012/09/15 KulFX Meters.volta
Most Used 2012/09/15 KulFX Most_Used.volta
Semiconductor Devices 2012//09/15 KulFX Semis.volta

The contents of the library packs above are redistributed with permission from the copyright owners.

Example: Bandpass Filter

We are going to simulate the Multiple Feedback Band-Pass Filter from eCircuit Center using Volta. We will create a subcircuit for the operational amplifier and a circuit for the actual filter. No custom models are required.
Volta bandpass example opamp subcircuit.png
You can either create your own Volta subcircuit based on the netlist snippet below or you can download the subcircuit file shown in the figure above. Pins 1 and 3 are the non-inverting and inverting inputs of the op-amp, pin 3 is not used, and pin 4 maps to internal node 6, which is the output of the op-amp.

.SUBCKT OPAMP1	     1   2   6
RIN	1	2	10MEG
* DC GAIN (100K) AND POLE 1 (100HZ)
EGAIN   3 0     1 2     100K
RP1     3       4       1000
CP1     4       0       1.5915UF
EBUFFER 5 0     4 0     1
ROUT    5       6       10

Copy the subcircuit file into Volta's Subcircuits folder. You can reach the Subcircuits folder by opening the Library window (⌘L) and clicking on the folder icon at the bottom of the subcircuits section, as shown below.
Volta bandpass example opening subcircuits folder.png

Advanced: The filesystem path to the Subcircuits folder is "~/Library/Containers/com.kulfx.Volta/Data/Library/Application Support/Volta/Subcircuits/" where ~ refers to your home folder. If you don't see the folder Library in Finder then open Terminal.app and enter the command
chflags nohidden ~/Library"

to make it visible.

We are now ready for the filter circuit. Again, you can either create it yourself from the netlist below, or you can download the circuit file. Make sure the subcircuit is added to your library before you open the filter circuit.

VS   1   0   AC 1  SIN(0VOFF 1VPEAK 10KHZ)
R1A  1   2   7.96K
R1B  2   0   162
R2   3   4   15.9K
C1   2   3   10000PF
C2   2   4   10000PF
XOP  0   3   4  OPAMP1
< Subcircuit definition goes here >
.AC 	DEC 	200 3K 30K

Volta bandpass example circuit.png
Capture (⌥⌘C) the schematic and start the simulation (⌥⌘A). You will see the results of the AC analysis in the plotter. Hint: Plot (⌥⌘P) is a shortcut for capturing and analyzing.

You will notice that, in the downloadable circuit file, the inverting and non-inverting inputs of the op-amp are not connected as in the netlist but the other way around. Try connecting either way and to see the difference in the frequency curves.

You will also notice, that the frequency curve peaks in the negative direction. You would expect the peak to be positive. The reason is that the plotter of Volta displays real values only. In the original netlist from eCircuit Center the magnitude of the voltage is displayed.

The plotter in Volta is very basic. It uses linear scale and real values for the ordinate (y-axis) with no possibility to display the complex values or the magnitude. Furthermore, the plotter can not display relational values. That is, v(4) / v(1), which would show us the voltage gain directly.

Example: NMOS Inverter

Using Volta, let us create an inverter circuit consisting of two n-channel MOSFET (NMOS) components. One of the two NMOS will need a bulk connector which we will connect to ground. We start by customizing two MOSFET models: The enhancement-type NMOS models with and without bulk connector. Although it is not necessary to customize the default models in order to obtain an inverter characteristic we'll do so anyway for the purpose of demonstration.

  • Open the library window by pressing ⌘L or by choosing Edit... from the group selection menu of a palette strip.
  • Under the "Models" tab of the library window, expand the group MOSFETs and select the model N-Channel Enhancement w/ bulk MOSFET
  • Create a copy of the selected model by clicking on the + button at the bottom of the model list.

Volta nmos inverter example copying model.png

  • Rename the new model from EnhancementNMOSFETWithBulk2 to NMOSInverterBulk.

Volta nmos inverter example renamed model.png

  • Similarly, create a copy of the default model N-Channel Enhancement MOSFET and rename it to NMOSInverter.
  • Edit the properties of both custom models. You can edit property values in the properties table of the model. Open property tables with the triangular button. Double-click on a value field to enter a value. Set the following values: Threshold voltage VTO = 1.0, Transconductance KP = 2.5e-5, Surface potential PHI = 0

Volta nmos inverter example editing model properties.png

  • Close the properties table to apply the changes.

Drag both models to the schematic of your circuit. Also add two DC voltage sources (5 volts each), and a DC voltmeter. Connect the components and set the parameter values of the voltmeter as shown below. Capture the schematic (⌥⌘C) and run the analysis (⌥⌘A). You will see the analysis results in the simulator output area below the netlist and the corresponding graph in the plotter below the schematic.

Volta nmos inverter example circuit.png

SPICE Codemodels

Your netlist may require functionality that is only provided by Ngspice extensions provided as *codemodel* (cm) binaries. Unfortunately, there is no solution yet for using codemodel extensions in Volta.

Volta Version History

Volta 1.2

1.2.4 [unreleased]
  • Fixes the display of components in the component library window on OS X Mavericks.
  • Fixes a bug in the schematic capture operation.
  • Restores the AppleScript commands plot, run, and capture.
  • Adapted icons to the look of corresponding icons in Voltaic.
  • and many more...
  • Support for printing schematics and plots.
  • Chinese translation (by Maaarc - weibo.com/0i9y12aa).
  • Various error corrections and improvements.
  • Adds transmission line models and a single-line text element.
  • Adds support for iCloud documents.
  • Adds support for iCloud library.
  • Adds a slider for zooming circuit schematics up to 200%.
  • Updates Ngspice to version 25.
  • Requires OS X 10.8 "Mountain Lion" or later.
  • Corrects an error in converting Volta 1.1 files to the new file format.
  • Icon for Volta files.
  • Usability and stability improvements.
  • New file format (version 2)
  • Reworked palette concept
  • Library user interface enhancements
  • New storage concept for palette items
  • Supports OS X app sandboxing

Volta 1.1

Requires OS X 10.7 "Lion" or later.

  • Bug fixes in the library editor
  • Various bug fixes
  • Support for the OS X features Versions and Resume
  • Ngspice version 24
  • Subcircuits are now automatically reloaded when the content of the subcircuits folder changes
  • Fixed a bug in the plotter where x-axis values were not logarithmic when the scale is logarithmic
  • Added the plotter

Volta 1.0

  • The library editor user interface was cleaned up
  • Many bugs were fixed
  • The circuit simulator was upgraded to ngspice R23
  • The application's icon has changed

Volta old icon.png