Drawing Out Circuits from SPICE Description

I've become familiar with ngspice on Linux (Fedora 15). I even got syntax highlighting going for .sp files in gedit. However, when I describe the circuit in a SPICE deck I have no way of telling whether I'm even describing the correct circuit. Even if I get some kind of output or result, I may have connected a circuit element to the wrong node, which would give completely different results.

My question is if there is some kind of tool that takes a SPICE decks and draws the circuit described in them?

There where some algorithms to automatically draw schematics from netlists. This was a (not very big) research topic around the 80.

That said I do not believe there are practical systems available using the result of that research.

I wonder if dot from GraphViz could be used for such quick verification tasks.

• Not the answer I was looking for, but you're probably right. I suspected there was no software like I'm describing considering the fact that you can draw the circuit in gschem and create a netlist from it. The reason I was searching for the software I described is I like to have control over the syntax of my netlist. – sj755 Aug 21 '11 at 5:58
• It's interesting that more effort has went into automatically finding out what transistors do on a logical/description level. At least recently and in the digital circuit domain; see the paper "Reverse Engineering Digital Circuits Using Functional Analysis". – SX welcomes ageist gossip Dec 28 '14 at 11:43
• Looking at a fairly recent EETimes article, people still do this netlist-to-schematic conversion by hand in the EE field, even though there's plenty of graph drawing software and quite specialized such software exists in other areas, e.g. in bioinformatics. – SX welcomes ageist gossip Dec 28 '14 at 11:47

Contra to "jpc", I think practical systems do exists, although they probably aren't even available as software for purchase, but only as a service. Quoting from an EDN article "IC reverse engineering—a design team perspective":

The ICWorks tool automatically extracts a netlist from the annotations, and from this netlist creates a flat schematic. The schematic, netlist, and annotations are all associated with each other, so one alone cannot be changed. The netlist and schematic can be checked for other simple rule violations, including floating gates, shorted outputs, nets with no inputs or outputs, and shorted supplies.

Schematic organization on a page, or in hierarchy, is essential to making a design coherent. The analysis phase is very iterative and uses many sources of information, including public information such as marketing materials, data sheets, technical papers, or patents. These often help with the schematic organization (for instance, if block diagrams are available) and in understanding architectures and circuit designs.

It looks like a semi-automated process using that (non-public) software. They actually make available a piece of software called ICWorks Browser, but this is not their actual analysis software, but only used to view the results of their analyses (which they sell as a service).

I'm pretty sure that big companies have their own in-house software equivalents of the above analysis (not just Browser) software, but don't expect them to give it away or even mention it publicly...

EDIT: Also, I found a rather obscure product called "E-studio For Test" by Elgris Technologies, which claims to have a "Schematic Generator: Given an input PCB or IC netlist, the tool can generate a schematic from it." How well organized (as in comprehensible to a human) is the generated schematic is anybody's guess since I can't find any reviews for this product; they do offer a 15-day evaluation license, but you have to send them your MAC and IP addresses... and it only works up to Windows XP according to its page, so I think that qualifies it as fairly obsolete or even defunct as of 2014. There are probably other products with this functionality, although I found none free.

EDIT: Never say never... there's an alpha-quality open-source project, http://sourceforge.net/projects/netlistviewer/. It works with its own examples well enough, although when you open a netlist it dumps every component on the same line (visually). You have to drag components around a lot... and that's basically all this version 0.1 will let you do. The connections between components are single straight lines and there's no way to make them anything but autoroute. It would still be usable for me even like that if it actually worked with the common macromodel sub-circuits, such as NE5532, but loading that one throws up a parsing error... So I guess it needs more work.