eispice: When SPICE Says Hi To Python

Ashwin Gopinath

1
4125

eispice, a clone of Berkley SPICE 3 simulation engine. It is optimised for high-speed digital design and has a front-end backed, based and powered by Python.

The design philosophy of Python lends itself to be used for simulators. By design philosophy, I mean the core philosophy that was handily jotted down in the document ‘The Zen of Python,’ which includes gems such as ‘Beautiful is better than ugly,’ ‘Simple is better than complicated’ and others like ‘Readability counts.’ Such an array of underlying principles is the reason why Python is highly extensible.

SPICE and behind the SPICE

Fig 115
Fig. 1: Simulating IBIS using eispice

eispice is one of those products that change the landscape of their intended use by virtue of being so good. It was initially developed and targeted towards PCB-level signal integrity simulation, simulating Input/output Buffer Information Specification (IBIS) model-defined devices, transmission lines and passive termination. Over the years though, scope of the tool has been expanded to include general-purpose simulation features as well.

Other than being the only open source simulator that provides native IBIS model support, the most unique feature of eispice is its Python based front-end. This is achieved by wrapping the simulator into a Python module that makes it possible to use Python language to control simulations and process results. If you are not strong with Python, but do work on Berkley SPICE, you can use Python shell instead of nutmeg, and Python scripts can be run like batch-mode SPICE.

Features

eispice has a multitude of features, both regular and unique, so as to help you with a variety of tools. The sub-circuit support allows probing at a deeper level, right to where the sub-assemblies are. It also supports a simple Tk based plotter inhouse, so as to alleviate that concern. It lets you plot characteristic graphs, input and output by means of transient analysis and operating-point analysis.

In addition, a bevy of models also helps in increasing the usefulness of the program. These models are not part of a secret covenant, but are non-linear current and voltage source models, independent source models (like current generator/voltage generator), device models like resistance model, capacitance model or inductance model. Long-length transmission models are also incorporated into it by way of T lossless transmission model. There is also a diode model for diode circuits.

eispice provides access to Python language in order to manipulate SPICE decks and results. This feature lets you present the characteristics and plots as you desire, keeping in mind the customisability/readability of said project. The software has IBIS model import tool, plus all requisite drivers, receivers and pin models for easy use.

eispice software
Fig. 2: eispice software

There is a new piece-wise cubic-spline extension for the incumbent pwl, except for the addition of a pwl keyboard in order to spice it up. Models for VI curves and TA x VI curves have been improvised to increase clarity associated with these. Then there is an improved B-element that includes a time variable and is based on Python call-back, that is, it can use Python statements within B-element model.

Installation

espice is available for free for Windows and Linux operating systems. Whereas for Windows you only need to install it like any other software, for Linux code you need to compile the code before you run it.

So for win edition, download and install Windows version of Python 2.5 and then download and install Numpy, before finally downloading and installing it. As of time of writing, in order to work with eispice version 0.9, you need to install the additional Python and Numpy Python Module installed on your system.

1 COMMENT

  1. eispice hasn’t been updated since 2012. It still requires very old Python 2.5? My computer has Python 2.7, so it won’t install. Is it possible to control ngspice using Python instead?

LEAVE A REPLY

Please enter your comment!
Please enter your name here