CoolSpice, a standalone circuit simulation suite

The CoolSpice package is a sophisticated circuit simulation tool. The package includes a schematics editor with GUI, a plotter, and a text editor for manually editing netlists. CoolSpice uses the open-source software package ngspice. Documentation for CoolSpice can be found below.

CoolSPICE version 3 has just been released!

CoolSpice is free for student use

The student version of CoolSpice is currently available for free. To obtain your free download, click on CoolSPICE Download after filling out the below form. You will be redirected to the download page.

For information about how to purchase the full version of CoolSpice or how to use CoolSpice for other commercial applications, please contact us.

Get CoolSpice up and running!


Double click on the CoolSpice installer after you download it and follow the instructions.

CoolSpice comes with two different Visual C++ Redistributables for 32- and 64-bit machines. If you encounter any problems running the CoolSpice package, please manually install the 64-bit version and the .NET Framework 4.0.

By default CoolSpice will be installed within My Documents and the following folders will be created within:

  • Ckts
  • Libraries
  • Models

The Ckts folder contains a collection of example circuits, schematics files which can be opened using the schematics editor and run.

The CoolCADSPICE folder contains the executables for the SPICE engine, the plotter, the text editor, and the schematics editor.

The Libraries folder contains the schematics libraries which contain basic SPICE components. The library files are used by the schematics editor.

The Models folder contains SPICE models for the following:

  • MOSIS contains SPICE models extracted and published on the webpage.
  • StandardParts contains some diode and BJT models.

Optional: the CoolCADSPICE contains a WinSCP subfolder which is currently empty. If you wish to add functionality for directly running a netlist from the main console, please follow these instructions:

  • Download the WinSCP files.
  • Extract all of the files including in the .ZIP.
  • Place the extracted files in Documents\CoolSpice\CoolCADSPICE\WinSCP

To use this additional functionality, click on the "SPICE Engine" button at the bottom left of the main console.

Building a Circuit

Basic Operation

By default, the Schematic Editor opens up with one empty schematic window and library/parts frames to the left. If these frames are not visible, click on the "Symbol picker" button (with the symbol Ω). For this example we are going to build an inverter using the IBM 65 nm 10LP CMOS technology (in the student version you can use one of the MOSFETs in the "MOSIS" library), whose MOSFET models are included in the built-in libraries which come with the program (in the student version, IBM libraries are absent, instead you can use the MOSIS libraries). Click on the + next to the required library to use to open up the list of components.

Double-clicking on the name of the required device (or single-clicking on the symbol which appears in the symbol frame) gives the user an instance of the device to place, as well as opening up the Options window for the device. The options window disappears after the user has clicked on the schematic window to place the device. The user can place multiple instances of the same device until the place mode is canceled by hitting the Escape key.

The options window is recalled by clicking on a device after placement. The initial (default) sizing for the MOSFET devices is the minimum size for the technology. The parameters can be changed by double-clicking on the value of a parameter. For this example circuit, width of the PMOS is changed to 1.04 µm (type 1.04u).

The orientation of the device symbol, the instance reference (“Ref”) and the simulation temperature (the option that enables setting temperature of individual devices does not affect simulation results for standard BSIM models. It is only available for cryogenic CMOS or high temperature silicon carbide devices) for the device can also be changed by the options window.

For the first example, we will look at the voltage and current transfer functions of an inverter. To add a power pin, use the “Power” button in the row of buttons (or use the hotkey F4). Note that when the mouse cursor hovers over the buttons, the function of the button appears in a pop-up tooltip. The ground can be found under the Analog library, as “Source – Ground” (For circuits with multiple grounds, please use the power pin with the "power voltage" set to 0). The DC voltage source is also under the same library. During or after placement, change the instance parameters of the sources to fit the examples below.

Wires are added using the Wire button (or the hotkey F2).

Analysis and Simulation

To measure and plot the drain current and voltages, we use a current probe, which is found in the Analog library as “Probe – Ammeter.” In this example the current probe is inserted between the PMOS drain and the rail power source, to measure the current going into the inverter. We also use wire labels, placed by using the label button (or the F1 hotkey). Warning: Do not give any other label to the net connected to the ground node.

The SPICE analysis tools are found in the “Analysis” library in the frame. Here we use the DC analysis tool, .dc, sweeping from 0 V to the rail voltage (1.2 V) in 0.05 V increments.

To run the analysis we can first save the design using the save button or the “Save” command in the menu. The simulation is ran by the “run” button or the command “Create SPICE Net List and Run” under the SPICE menu. The program then asks the user for a filename to save the netlist as.

After the simulation is complete, the CoolCADPlotter screen is launched automatically. To show the results, click the “Add Trace” button or use the command “Add Traces” under the Graph menu. The pop-up dialogue for the available traces opens up. Note that in the Plotter, when the mouse cursor hovers over a button, the function of the button is indicated in the bottom of the window frame.

Voltages can be recorded as a trace and plotted using the “Probe — Voltage” tool under the Analog library. The voltage probe should be connected to a node and the current probe should be inserted into a branch.

When the simulation is run with two or more probes in the circuit, the plotting program will show the voltage or currents recorded by all probes as available. In this example, if the user chooses both to plot at the same time, the plots are by default put on separate y-axes since we have one voltage and one current plot.

It is also possible to add plots one by one and create a split window using the “Add another view to the panel” button.

Creating a Symbol

Use the item “Add a Hierarchical Symbol” under the SPICE menu to create a symbol for the designed circuit. The symbol editor opens as another tab in your design, with the original circuit design put on the tab named “Sheet 1” by default.

When using the polygon tool to draw lines or shapes, right click and choose “Finish Polygon” to end the drawing.

The design itself should have labels on all the nodes which will correspond to pins in the symbol. The pins, which are added with the “pin” tool button, should have names and electrical types that correspond to the labels. Once this symbol has been saved, the circuit can be incorporated into the design of another circuit by utilizing the “Insert another design as symbol…” menu item in the SPICE menu.

Editing and Adding Libraries and Models

The “Libraries…” button gives the user access to the existing libraries for editing, as well as allowing the user to add new libraries.

In the symbol list, the user can right-click on the symbol of the device to be edited. In this example, we will create a new symbol and introduce the model for a diode. In the “Library Setup” window, click on “New.” A save window will open. After the library is saved with a name, an empty library window opens. Right-clicking anywhere on this window and choosing “New Symbol” gives the user an empty symbol window. A new symbol can then be designed and pins defined using the same tools referenced above for the hierarchical symbol creation.

Once the user asks to save the symbol, the Symbol Properties window comes up. After the symbol has been stored once, these properties can be accessed again by right-clicking on the symbol in the new library list and choosing “Symbol Properties.” In this window, the Attributes tab is used to define parameters and the SPICE tab is used to define the netlist line as well as the model file to be referenced. In this example, we are creating a diode, using a model in the file placed in the ../Models/ directory.

Once a symbol has been stored in the new library, this library is going to be available in the library tab and the new device can be used in new designs.