It has been a long time since it was practical to breadboard even moderately complex IC designs to evaluate them prior to manufacture. This is particularly true because of subtle parasitic and characteristic impedance effects that rear their ugly head in the frequency ranges of many modern circuit designs.
That is the rationale for Spice (Simulation Program with Integrated Circuit Emphasis). In the time since it was developed by the University of California at Berkeley in 1973, Spice has undergone major changes, all the while remaining user-friendly and Open Source. Originally, its computer language was Fortran. Spice2, developed in 1975, and Spice 2G.6, developed in 1981, both also used Fortran. Spice3, developed in 1985, uses C. Since then, as is permitted in the Open Source protocol, many independent vendors have modified the original programs, adding user interfaces and various embellishments. In many cases these derivative applications incorporate graphic interfaces allowing the user to place schematic symbols on the screen, configuring them to create conventional electronic schematic diagrams. It must be emphasized, however, that these graphic interfaces do not participate in the Spice computations, which are based solely on the netlist that is compiled, even when it is not visible to the user.
A key point to note is that all variants of Spice, at their most basic level, solve equations representing the behavior of electronic circuit elements based on Kirchhoff’s current and voltage laws by means of nodal point analysis. This lets Spice simulate linear ac, nonlinear dc and transient signals generated when virtual signals are applied to virtual resistors, capacitors, inductors, transmission lines, switches, RC configurations, diodes, BJTs, JFETs, and MOSFETs, and anything else that can be represented as a model containing voltage/current sources and passive circuit components.
The fact that Spice calculates Kirchhoff’s laws explains its shortcomings when it comes to simulating other types of electronics. Wire harnesses, for example, still undergo a lot of physical testing before installation because it is hard to simulate the variety of connections or the kinds of varying distributed circuit elements that arise in specific complicated harness geometries. Similarly, logic simulations on their most basic level implement logic tables. Other simulations that take place in this software are add-ons to the basic logic table engine.
Another point to note is that there are different versions of Spice and simulation inputs prepared for one version may need to be modified to run on a different version. For example, PSpice is a version of Spice put out by Orcad. Texas Instruments devotes an entire app note to modifying its a generic text-format Spice models so PSpice can use them. A common error is to confuse a Spice model with a PSpice model, hence the TI app note. PSpice uses proprietary languages to define components and models. LTspice is a version produced by Analog Devices (originally by Linear Technology). It is said to be the most widely distributed and used Spice software in the industry, probably because it is free.
A circuit must be presented to SPICE in the form of a netlist. The netlist is a text description of all circuit elements such as transistors and capacitors, and their corresponding connections. Modern schematic capture and simulation tools such as Multisim allow users to draw circuit schematics in a user-friendly environment, and automatically translate the circuit diagrams into netlists.
If the solver won’t even start, that usually means there’s a problem in the netlist. The solver doesn’t actually use the schematic–it uses the netlist extracted from the schematic. You can look at the net list from the view menu. Common problems include failing to put in a ground, failing to connect all components, and failing to give a value to all components. Spice will usually give you an error message that points to the source of the problem.
Altium Designer is a widely-used PCB design tool, currently including nspice, currently costing $3,000/year. The program includes automotive, aerospace, consumer electronics and medical devices. It is available on the Internet.
Blackboard is written in Java and intended for hobbyists. It uses ngspice for circuit simulation and permits designers to generate circuits on stripboards.
Cadence: System-Level Simulation imports mechanical structures from CAD tools. Machine learning applications are supported, integrating with complex EMI phenomena in automotive systems as well as biomedical analysis. The firm offers instructor-led classes at training centers or at the user’s site. Details are available at Cadence.com.
CircuitSafari is a free Android application that performs ngspice simulation. A touchscreen interface offers interactive schematic capture and signal simulation.
CoolSpice is from CoolCAD Electronics, LLC, a CAD and custom electronics design firm in College Park, MD. It incorporates ngspice including GUI, a plotter and text editor for managing netlists. Free for students, others pay a fee.
CppSim is another free program that integrates ngspice for transistor-load simulation, including C++, Verilog and other simulators.
eSim (previously known as Oscad / FreeEDA) performs circuit design, simulation, PCB design and analysis using KiCAD, Scilab and other open-source applications. It is also free.
Isotel offers Ngspice, an open-source mixed-level/mixed-signal circuit simulator. Its code is based on three open source software packages: Spice3f5, Cider1b1 and Xspice.
KiCad is a free electronics design automation tool incorporating Eeschema, a schematic editor and the ngspice simulation tool.
Kjwaves available at sourceforge.net/projects/kjwaves/ is a cross-platform plotting program that displays Spice RAW files.
Layouteditor contains a schematic editor specific to ngspice circuit simulation.
MSEspice is a further graphical offshoot from SPICE/ngspice. It is also available at sourceforge.net.
SpiceCircuit, for MS Windows, comes with a 32-bit version of nspice. It is freeware for non-commercial users.
WeSpice is an Android application for tablets. An Internet connection is not required except for the initial download. It allows the user to perform simulations and to analyze results.
XCircuit allows the user to draw high-quality schematics and to derive ngspice circuit netlists using schematic capture. It is on GitHub.
XSchem provides access to complex systems in terms of simple sub-components. Ngspice draws the netlist so that the circuit can be simulated. It is also on SourceForge.net.
Finally, Matlab is suitable for simulation and post-processing. Ngspice RAWFILE loads the simulation output directly into Matlab.
At the most basic level, Spice simulates the dc output of a circuit with capacitors opened and inductors shorted. The user can configure Spice to compute the value of a transfer function, which is the ratio of the output variable to the input source. Additionally, the program can compute input and output resistance in the manner of a vector network analyzer. In generating dc transfer curves, the user specifies a range and the program steps independent voltage or current sources. The dc output variables may be saved for each source value.
The front-end for data and analysis is a separate stand-alone program known as Nutmeg. As in Spice, Nutmeg uses data in the form of time and voltage vectors, which can be combined algebraically.
In the beginning, Spice consisted of a calculation engine for performing the underlying electronic simulation, and Nutmeg extracted and displayed the results. Currently, they are combined. Nutmeg is an I/O driver program that augments Spice3 interactivity and efficiency. To begin, a circuit schematic is compiled with all nodes numbered without gaps. Then, any circuit lines with no paths to ground are eliminated. A path to ground is not needed if the circuit is not loaded, in which case the output is merely for voltage reference. The next step is to create descriptive commands for all circuit supplies and devices. They can be put in a text editor with the file named.
Spice3 is a text file made up of lines terminated by specific character. The title line appears in print but is ignored by the program. Element lines list the components and show their places in the network. Comment lines begin with an asterisk and play no active role in the program. If a line begins with the + character, it is a continuation of the previous line. Control lines specify the analysis type to be performed on the circuit and the way in which the results are to be displayed. The final line is always “end”.
Source file elements are specified by element names, connected circuit nodes and parameter values. The element type is specified by the first letter of the element type, such as “r”, which denotes resistor. It can contain additional characters, such as “rxyz.” Within a line, fields are separated by one or more blanks, a comma, an equal sign or open or close parentheses. A new field begins with an upper-case letter.
As it performs an analysis, Spice places the data in a table of results, known as a “plot.” The plots contain vectors, which archive the numerical results.
Ngspice–a portmanteau that combines the original electronic simulator, Spice, and displays Nutmeg’S visualization and display capabilities–is used in a variety of free and commercial tools, which are comprised of graphical user interfaces with and without schematic capture and circuit development tools.