Free and Open Source Software for Electrical Engineering

Throughout the years I’ve used hundreds of software tools to do my job and research. Many of these are extremely expensive and I’ve only had access to them through school or employers. Some of these are Matlab, the Cadence tools, Agilent ADS and Ansys HFSS. Becoming proficient in their use is a major investment, and there is no guarantee that you will have access to them in the future.

Learning open source tools is a much better personal investment. This does not mean that you are better off leaning these instead of Cadence if you need it for your job, but if you have spare time to get good at your tools, some of those that I describe here might yield a higher return in the future.

Scientific Computing

Python, Scipy, Numpy and MatplotLib vs. Matlab: Python has rapidly become the most popular scripting language in the world. There is such a large community of users, that there is probably more libraries and documentation than what you’ll even need. Scipy, Numpy and Matplotlib are libraries that simplify numerical computation and creating plots.

iPython notebook is a spectacular tool that integrates several tools built around Python that provide the most powerful scientific computation environment that I’ve ever used. Click on the image below to go to the iPython Notebook website:

iPython Notebook

The easiest way to install all the tools together is by following the instructions at scipy.org.

Circuit Simulation

LTSpice: Not open source but free. Features schematic capture, SPICE simulator and  waveform viewer. This is a simulator you can trust. Some of my school mates at Georgia Tech use it for IC design!

QUCS: This is probably the most ambitious project in this category. It integrates schematic capture, a rich results viewer, and simulators for transient, AC, S-Parameter, Verilog, and others all together! Its interface imitates some of the feature of Agilent ADS, which allows for very good integration.

QUCS

CircuitLab: An online circuit simulator (Schematic capture, transient and AC simulation, and plots). It’s closed and limited in features, but very well designed. It provides an excellent interface and robust features for circuits of low complexity. In this sense it it an excellent learning tool. As it is the trend on online applications, it allows sharing your designs.NGSpice:

HDL Simulation

IVerilog: Open-source verilog simulator based on IEEE Std 1364-2005. Binaries available for Linux, Windows and MacOS. Fast and maintained actively. Compiles files for simulation, RTL synthesis and some target FPGAs.

GTKWave: Mature waveform viewer. Biaries for all platforms. Supports analog and digital signals together.

Impulse: VCD waveform viewer plug-in for Eclipse. Has more features than GTKWave, and its integration with Eclipse speeds up the design process.

PCB Design

KiCad: Combines schematic capture, layout editor (forward and back-annotation between the two), library editor and Gerber viewer. This is a professional-grade EDA application, actively developed, and features advanced capabilities like auto-routing, design rule check (DRC) and scripting (in Python.)

KiCAD

PCB: The other big player in the open-source PCB world. PCB is part of the GEDA project. More to come…

Authoring

Inkscape: A significant amount of engineering knowledge is shared through drawings and diagrams. Inkscape is a vector-graphics drawing program that has all the features you will ever need. Wether you want to draw a block diagram, circuit schematics, or annotate plots generated with other tools (like Matplotlib above), it will be more that suitable for the job and you will be delighted by the quality of the final result. It features a flexible plugin engine and tons of plugins are available, such as LaTeX input, which will allow you to create vector graphic equations and embed them in your drawing!

Lyx: LaTeX made easy! Lyx is a LaTeX editor that makes most LaTeX features available through its graphical interface and hides LaTeX code in your documents by providing a preview render instead. This allows you to see your document’s outline, equations and images. It is not a WYSIWYG editor, but more of a convenience interface to compose your documents faster and avoid writing LaTeX most of the time, but still providing access to the code for faster access when you dominate the language. If you want LaTeX quality output but don’t have the time to learn the language right now, this is the tool you need.

Others: writelatex.com