Homebrew, open source, repurposed, hacked, software defined, open hardware

Thursday 3 March 2016

Converting IBIS, BXL, BSDL, symdef, Eagle, and Kicad design elements to gEDA

It's turning into something of a compulsion, but after writing the code for converting legacy and s-expression format Kicad footprints (modules) to gEDA PCB compatible footprints:

https://github.com/erichVK5/KicadModuleToGEDA

a converter for Kicad symbols, to convert them to gEDA gschem compatible symbols, seemed like the logical thing to do next:

https://github.com/erichVK5/KicadSymbolToGEDA/

With the basic software objects written, extending them with additional methods to support additional formats became easier and easier, and I have now put a working version of translate2geda on github:

https://github.com/erichVK5/translate2geda

It currently supports conversion of the following formats into symbols and footprints compatible with the FOSS gEDA EDA suite:

Eagle footprints (in XML .lbr files)
Eagle symbols (in XML .lbr files)
vendor neutral BXL files
BSDL files
IBIS files
symdef files

When time permits, I plan to incorporate the original Kicad module and symbol converter code into the now more modular translate2geda code. Until then, the individual converters can be used by those keen to convert Kicad design elements.

In addition, support for the upverter (.upv) open format is planned, and gerber -> footprint/layout is a work in progress.

Once things are behaving, I intend to implement export to Kicad as well. This should not be hard, since much of the code relies on Kicad flags and dimensions, around  which the original solution was designed.

With that done, export to Eagle is also planned, since they were nice enough to implement an open XML format.

FOSS EDA suites should ideally leverage each other's efforts, rather than reinventing the wheel, and being able to share symbols and footprints is an obvious way to do this.

Stretch goal:

schematic conversion

Here's a simple board intended for use in an eggbot designed in gEDA PCB, using an Arduino nano footprint, TO-220 footprint, electrolytic capacitor footprints, and a DIP16 Pololu footprint imported from Kicad modules.

The schematic used to design the circuit in gschem used symbols also imported from Kicad.

The board has deliberately been designed to be compact, since I aimed to fit it within a 5cm x 5cm layout, one of the sizes that gets preferential pricing with my usual PCB supplier, hackvana.com