A simple gEDA project to build off of
C Makefile Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



skeleton-geda-project is meant to serve as a batteries-included foundation for a gEDA project.

Getting started

To begin, run the init.sh script. This will prompt you for your name of your new project and seed the required configuration.

Open NAME.sch with gschem. It is important that gschem is started from the root directory of the project. Draw your schematic.

When the schematic is largely complete you can run make pcb to seed the initial PCB layout and update it after the schematic is changed. After running this, you'll need to update the netlist (File->Load netlist file and select NAME.net) and add any new components (File->Load layout data to paste-buffer, select NAME.new.pcb, and click to place the new elements on a vacant part of the board).

Feel free to overwrite this readme when you no longer need it. skeleton-geda-project is available at http://www.github.com/bgamari/skeleton-geda-project.


This requires a complete gEDA installation. On Ubuntu, the required packages can be installed with apt-get,

apt-get install geda geda-gnetlist geda-utils pcb-gtk

Makefile rules

The included Makefile has a variety of useful rules,

  • tsymbols: Generate tragesym symbols
  • check-symbols: Run gsymcheck on the generated symbols
  • pcb: Update the pcb file and netlist
  • $NAME.pdf: Generate a PDF of the PCB layout
  • $NAME.ps: Generate a Postscript of the PCB layout
  • $NAME.bom: Generate a textual bill of materials
  • gerbers.zip: Generate a Zip file containing Gerbers of the layout
  • osh-park-gerbers.zip: Generate a Zip file containing Gerbers appropriate to send to OSH Park

Where can I find symbols/footprints?

If you are in need of a symbol or footprint, Google and Github are always reasonable places to start searching. Moreover, there are several repositories of high-quality symbols and footprints distributed under a variety of terms,

How do I make symbols?

There are several ways to create gschem symbols. For most cases, tragesym is the easiest way to compose a symbol. However, in cases where more control over layout and presentation is needed, gschem is preferred.

With tragesym

The tragesym utility (packaged in the geda-utils package in Debian-derived distributions) is a useful tool for generating symbols from a simple text description. You will find an example tragesym description in the sym/l79lxx.tsym. Simply copy this file and update the name, device, footprint, description, and author fields in addition to the pin definitions. The Makefiles tsymbols rule will .sym files from all .tsym files in the sym/ directory. As a rule, it's best to only add the .tsym source to version control.

With gschem

One can also create symbols using gschem by creating a new schematic, drawing the symbol and pins, and saving in the sym/ directory with a .sym file extension. See http://ashwith.wordpress.com/2010/09/23/creating-your-own-symbols-in-gschem/ for more details on this process.

How do I make footprints?

There are several tools for generating footprints. These include

  • Darrell Harmon's footgen which converts textual descriptions to pcb-compatible footprints
  • Edward Hennessey's graphical gfootgen
  • DJ Delorie's web-based generator for two-pad footprints
  • DJ Delorie's web-based generator for dual-inline packages
  • Stefan Salewski's text-based sfg tool.

See the gEDA wiki for more details.

How and why would I use hierarchical sheets?

It is good practice to preserve clean separation between the functional units of a design. This is especially true in large designs which are too large to fit on a single sheet or which consist of a block replicated several times. Hierarchical sheets allow one split a schematic into logical units which can be easily replicated.

To create a unit, simply design the unit in a normal schematic, saving it in the sym/ directory. Nets which are to be exposed outside of the sheet should be assigned a net attribute (e.g. net=CLK:1). Finally, create a separate symbol file to represent the unit (also in the sym/ directory). The symbol should possess a source attribute pointing to the unit's schematic (e.g. source=my_unit.sch) as well as pins for each of the nets the unit exposes. Each pin should possess a net attribute matching the name specified in the schematic.

Units can be inserted like any other symbol. In the netlist, components in instances of a unit will be identified by a unique refdes consisting of the refdes of the instance followed by the refdes of the component (e.g. refdes=C1 in instance refdes=CH1 will be called refdes=CH1/C1).

The sedrename pcb plugin is very useful for composing layouts with multiple repeated units.

Other resources

  • The gEDA wiki contains a wealth of information, although isn't always well organized
  • sedrename is a useful utility when working with designs composed of many repeated units.