skeleton-geda-project is meant to serve as a batteries-included
foundation for a gEDA project.
To begin, run the
init.sh script. This will prompt you for your name
of your new project and seed the required configuration.
gschem. It is important that
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
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
This requires a complete gEDA installation. On Ubuntu, the required
packages can be installed with
apt-get install geda geda-gnetlist geda-utils pcb-gtk
The included Makefile has a variety of useful rules,
tsymbols: Generate tragesym symbols
gsymcheckon 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,
pcbcome with a limited set of symbols and footprints of varying quality
- Bdale's component library
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,
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
description in the
sym/l79lxx.tsym. Simply copy this file and update
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.
One can also create symbols using
gschem by creating a new
schematic, drawing the symbol and pins, and saving in the
directory with a
.sym file extension. See
for more details on this process.
How do I make footprints?
There are several tools for generating footprints. These include
- Darrell Harmon's
footgenwhich converts textual descriptions to
- Edward Hennessey's graphical
- 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=CLK:1). Finally, create a separate symbol file to
represent the unit (also in the
sym/ directory). The symbol should
source attribute pointing to the unit's schematic
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
will be called
is very useful for composing layouts with multiple repeated units.