Avian’s Blog

Electronics and Free Software

Free tools for schematic capture

26.07.2006 23:58

I know of two free software tools for schematic capture of electronic circuits: the first is called Gschem and is part of the gEDA package and the other is XCircuit.

I have been using XCircuit exclusively for a couple of years now, mostly for board level design but also for a couple of integrated circuits. I've began using it because at that time it was the only free solution I found and because I also used it to draw other illustrations for various papers and reports for the Faculty. However lately I've been looking for another program to replace XCircuit. I've been working on more and more complicated circuits and I feel that getting rid of XCircuit shortcomings will out weight the time needed to learn to use a new interface efficiently.

So here is a short comparison of Gschem and XCircuit (as I've only worked for two days with Gscheme, this may be a bit biased):

XCircuit

Pluses

  • Very efficient one-key keyboard shortcuts (examples: "e" for edit, "r" for rotate, etc.). You have one hand over the alphanumeric part of the keyboard and the other hand on the mouse. The mouse cursor stays mostly in the center of the window and you rarely have to move it to the menu bar.
  • Very consistent use of mouse buttons. In all situations the middle mouse button is for "ok/yes", right mouse button for "cancel/no" and left button for "maybe" (it moves cursor to the next possible choice). This further removes need for any menu interaction.
  • Default tool is for drawing nets. You spend most of your time drawing connections, so this a very good thing.
  • Encapsulated Postscript is its native format. This means it's incredibly easy to embed schematics in Latex documents. It's also quite easy to edit files directly in a text editor.
  • Unselect function. If you select only one object too many with a box select, you can point your mouse to that object and hit "x" to deselect it. This saves time when trying to select everything except that thing over there.

Minuses

  • In all those years I haven't figured out how generate PCB compatible netlists from schematics. The tutorials work, but once I get to custom symbols I'm lost. I usually printed out the schematics and wrote netlists by hand.
  • Connectivity detection is weird. There is no strong distinction between nets (that should "conduct" electricity) and decoration (e.g. symbol outlines) - or at least I haven't figured it out.
  • No automatic component enumeration or bill of materials generation.
  • Symbol library management is a nightmare. I'm actually using Vim to copy new symbol definitions from a temporary file to the central library file. Also the library that comes with the distribution only contains basic symbols.
  • Is it written in TCL? Or Python? C?
  • Symbol rotation is a lossy operation. Select an object and rotate it 360 degrees in steps of 15 degrees. If you are lucky, the end result will still resemble the original.
  • Hard to work with opaque symbols because there is no easy way to control drawing order.
  • Orphaned Debian package.

Gschem

Pluses

  • Very good symbol library management: Multiple directories, system-wide and local library automatically merged together, symbol versioning. Extensive library is already included with the distribution.
  • Netlist generation works and is PCB compatible. It even makes a template PCB file with all components added to the board.
  • Has a basic support for "slots", that is multiple independent devices in one physical package.
  • Attribute editor!
  • Multiple copy & paste buffers that are actually easy to use (still haven't figured out how to do that efficiently in Vim).
  • Automatic enumeration of pins. A bit more awkward than in some proprietary software but useful nonetheless.
  • It is written in Scheme and C and appears to be quite easy to modify and extend.
  • The native format is simple and in ASCII, so it is easy to make a diff or edit it in a text editor.

Minuses

  • Compared with XCircuit, the keyboard shortcuts are kind of slow. Most take two key presses, sometimes with an additional modifier key. In most cases you also have to select an object before the keyboard shortcut will work. So an operation that takes one key press in XCircuit takes two mouse button clicks and two key presses in XCircuit.
  • Net editing is very slow. "Rubberband" mode applies only when moving symbols and parts of nets (not moving vertexes) and even then the connected nets don't stay aligned on right angles. It is faster to delete a net than to edit it (and deleting isn't very fast either, because you can't select a whole net at once but only each segment at a time).
  • Component enumeration does not appear useful. It ignores slots and I can't make it start numbering components with 1 instead of 100.
  • "Stable" version crashes every 10 minutes with a very simple circuit displayed. (CVS version seems better).
  • What's with leaving "gschem.log" in each and every directory?

In conclusion, I think I'm going to try to work with Gschem for a bit longer. If it will turn out that I'll be able to use netlist generation on real projects that thing alone will outweigh all of Gschem's minuses. I've also downloaded the code from CVS and it looks really nice. I already have a couple of patches that correct the most annoying things (at least for me).

So after maybe a month, we'll see what I will be able to add to the lists above.

Posted by Tomaž | Categories: Code
Comments
Add a new comment

Your name

Your email (optional, will be shown publicly)

Your web site (optional)


(No HTML tags allowed. Separate paragraphs with a blank line.)