In my spare time I've been working on a hobby project of mine called 'PCBmodE' -- a printed circuit board (PCB) design tool. Existing tools were too restrictive for the kind of boards I wanted to create, so I wrote one from scratch in Python.
PCBmodE was motivated by:
- the desire to easily create arbitrary shapes on all PCB layers;
- the need for version controlled primary source files written in open, free, and standardised formats and languages; and
- the frustration with purpose-built GUI particularities, and the inability to easily define feature shapes and locations in a precise and consistent manner.
In the long term, PCBmodE will hopefully motivate:
- an open, comprehensive, community-based repository of electronic components; and
- a netlist-based design tool, from which both layout and schematics are generated.
Here's how it works: PCBmodE reads shape and placement information stored in json files (each for board, parts, pads, etc.) to produce an SVG graphical representation of them. Routing is (currently) manually drawn with Inkscape, then extracted by PCBmodE and stored in an input json file. The SVG is then 'gerberised' into individual Gerber layer files for manufacturing. When viewed with Inkscape, individual layers (etch, soldermask, silkscreen, etc.) can be shown or hidden -- bring up the layer pane with CTRL+SHIFT+L. Below is an example board, the first that's going to be manufactured using PCBmodE.
The board's function is a 40-pin 0.5 mm to 2 mm to 0.1 " header interface with ten LEDs for good measure. Note that everything is generated from textual description stored in json files, and all the text is derived from SVG fonts, which means that you can use any font you like. Also, all shapes are SVG paths, and so can be arbitrarily rotated, scaled, and mirrored. The software is at a very early stage; it can't currently handle drills or more than a single layer, and doesn't have schematics or even a netlist.
I intend to release the Python source code (and the boards' source code of course), under a permissive license as soon as I'm happy that it isn't going to hurt anyone's eyes, and is in a somewhat usable state. If you're interested in contributing or discussing the future of this software, please get in touch.
Please let me know what you think!