skeleton-geda-project
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.
Requirements
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 symbolscheck-symbols: Rungsymcheckon the generated symbolspcb: 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 materialsgerbers.zip: Generate a Zip file containing Gerbers of the layoutosh-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,
gschemandpcbcome with a limited set of symbols and footprints of varying quality- gedasymbols.org
- luciani.org
- 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, 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
footgenwhich converts textual descriptions topcb-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.