Volta
Introduction
Volta is a simple circuit simulator for macOS that I created between 2007 and 2013. It all started with the concept drawing below.
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.
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.
Download
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.
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 * INPUT IMPEDANCE RIN 1 2 10MEG * DC GAIN (100K) AND POLE 1 (100HZ) * GBP = DCGAIN X POLE1 = 10MHz EGAIN 3 0 1 2 100K RP1 3 4 1000 CP1 4 0 1.5915UF * OUTPUT BUFFER AND RESISTANCE EBUFFER 5 0 4 0 1 ROUT 5 6 10 .ENDS
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.
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.
* MULTIPLE FEEDBACK BAND-PASS FILTER 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 > * * ANALYSIS .AC DEC 200 3K 30K .PRINT AC V(4) .END
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.
- Rename the new model from EnhancementNMOSFETWithBulk2 to NMOSInverterBulk.
- 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
- 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.
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...
1.2.3
- Support for printing schematics and plots.
- Chinese translation (by Maaarc - weibo.com/0i9y12aa).
- Various error corrections and improvements.
1.2.2
- 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.
1.2.1
- Corrects an error in converting Volta 1.1 files to the new file format.
- Icon for Volta files.
- Usability and stability improvements.
1.2.0
- 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.
1.1.3
- Bug fixes in the library editor
1.1.2
- Various bug fixes
- Support for the OS X features Versions and Resume
- Ngspice version 24
1.1.1
- 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
1.1.0
- Added the plotter
Volta 1.0
1.0.1
- 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
![]() |