Table of Contents

Quick Guide to Using KiCad for SPICE Simulation

The following was written for KiCad 4. Simulation support in KiCad 5 has been reworked to such an extent that a lot of the following doesn't work.

If you have KiCad 4 SPICE stuff you'd like to use in KiCad 5, have a look here.

This is written up assuming you know the basics of using KiCad already.

What you'll need

You'll need the following to get a working SPICE setup:

Configuring a project

  1. Create a new project in the conventional way.
  2. Open Eeschema and remove all the library references included by default.
  3. Manually add one or more libraries with SPICE components to the project.
    • Note that the SPICE library that comes packaged with KiCad is not included by default in new KiCad projects.
  4. Specify the SPICE engine you want to use:
    • Click the “Generate netlist” button (or the equivalent menu item).
    • Select the “Spice” tab
    • Enter the name of the command to invoke the simulator (with or without path) in the “Simulator command:” textbox.

Making it happen

  1. Do your schematic capture, subject to a couple best practices:
    • For named nets, use global labels instead of local labels.
      • The reason for this is that in the netlists, global identifiers will be used as-is but local labels get text prepended to the name—which makes it hard for you to remember/guess what the full identifier is.
    • Use the “0” component from a SPICE component library rather than the GND symbol.
      • 0” is the official name of ground node in SPICE. Some engines may translate GND into 0, some may not.
  2. To specify the simulations you want to run and the output you want to display, add a text block (i.e., “comment”) with the needed SPICE and Nutmeg syntax plus a little added mojo. The following does an AC analysis and plots the response at node vout:
    +PSPICE 
    .control
    ac dec 66 1kHz 120kHz 
    plot vdb(vout)
    set units = degrees
    plot vp(vout)
    .endc
    • The line +PSPICE is KiCad-speak for, “Stick the following text at the end of a SPICE netlist.”
      • :!: There appears to be a bug in the parser that requires you to add a space after +PSPICE and before the line break.
    • There is a corresponding -PSPICE that is KiCad-speak for, “Stick the following text at the start of a SPICE netlist.”
    • If you don't like seeing references to PSpice in your designs, you can use +GNUCAP and -GNUCAP instead. I believe they are exact synonyms in this context, but I am not certain.
    • Yes, this means you need to learn some SPICE and Nutmeg syntax. It's not hard.
  3. Run the simulation:
    • Click the “Generate netlist” button (or the equivalent menu item).
    • Select the “Spice” tab, and make sure “Default format” is checked. (You should only have to do this once; it will just save you time in subsequent invocations of the dialog.)
    • Click the “Run simulator” button.