Circuit Design on Your Linux Box Using gEDA

Use your Linux box for professional-quality printed circuit board design using CAD tools created by the gEDA Project.

Layout—pcb

Once the initial layout files are created using gsch2pcb, you can lay
out your design. This involves using a layout editor—a specialized
drawing program to draw metal tracks, components, drill holes and other
structures onto your circuit board. The PCB layout tool used with gEDA
is called, appropriately enough, pcb. pcb usually is invoked from the
command line; once running, it presents a drawing window accompanied by
all the widgets and tools necessary to draw your circuit board. A screenshot
of pcb in action is shown in Figure 2.

Figure 2. A board layout in pcb. The red lines
represent metal traces connecting the components
on the top layer of the board; the large blue area
corresponds to a ground plane on the back layer of
the board. A number of component footprints
also are visible.

The history of pcb is quite interesting. It
originally was written by Thomas Nau in 1990 for the
Atari ST. Thomas ported pcb to UNIX in 1994 and
used the Xaw (X11) widget set for its GUI. In about
1998, Harry Eaton took over maintaining the program,
and—among many other contributions—implemented
the ability to output Gerber files. pcb was placed on
Sourceforge.net about two years ago, and it is currently
maintained by Harry, D. J. Delorie (of djgcc fame)
and Dan McMahill. Most recently, Bill Wilson (author
of gsch2pcb) updated pcb's GUI to use GTK+, a very
welcome modernization.

Creating a circuit board layout using pcb, as with
any layout editor, involves first placing
the component footprints and then routing the metal
connections—called tracks or traces—between the
pins of the footprint. pcb allows you to define the
track width to use, which is important when,
for example, drawing power (usually thick) traces,
as opposed to signal (usually thin) ones.

As for component footprints, pcb supports two
different footprint libraries: a legacy library based
upon the M4 macro language and a newer library
(newlib), which defines footprints via an ASCII
file defining all graphical elements composing the
footprint, such as metal pads and rings, drill holes,
silk-screened text and so on. When rendering your
layout, pcb uses footprints from either library
to draw the footprint required by each component; the
footprints used are those called out by the footprint
attribute specified in your gschem schematic.

Since pcb's newlib defines footprints using an ASCII
file format, automated generation of footprints using
scripts is possible. To this end, another member
of the gEDA community, John Luciani, has created a
large collection of useful pcb footprints using Perl
scripts; both scripts and the generated pcb footprints
are available for free download from his Web site (see the on-line Resources).

pcb supports routing on up to eight layers, meaning that you can draw
metal connections on any of up to eight separate layers on the PCB itself.
This is important for enabling high-density component placements, which
are the norm for modern, compact designs. Connections between tracks
on different PCB layers are done by running a pair of tracks to a via,
which is a hole drilled through the PCB and subsequently plated with
metal, thereby electrically connecting tracks on one layer with tracks
on another.

Once you've completely laid out your board using pcb, you can generate
Gerber files, which is an industry-standard representation of your
board's layout. An assembly drawing, drill file and pick-and-place
file also are automatically created when you generate your Gerber files.
Send all these files to any PCB fabrication house, and soon you will
receive professional-quality PCBs designed by you on your Linux box!

A Finished Board

Once your bare PCBs come back, you either can stuff
(assemble) them yourself or send them to an
assembler to complete the job for you. Shown in
Figure 3 is an example PC board created using the
gEDA tools. This board is the same as that shown in
Figure 2. It is a two-layer board
that aggregates signals from several sensors and
routes them to an A/D module. This example board
is not particularly large or complex; larger and
more-complicated boards are regularly done using the
gEDA tools. However, it does show a wide variety of
component types: several through-hole connectors,
surface-mount and through-hole devices, a 14-pin DIP
in a socket, as well as holes and other elements.
This illustrates the ability of pcb to handle many
different types of electrical components. To see
more boards done using the gEDA Suite, look at the
featured project on the gEDA Web site, or do a
quick Google search. The variety of possible circuit
boards is limited only by your imagination!

Figure 3. A sensor board created using the gEDA Suite. As is evident, pcb can handle a wide variety of component types.

Stuart Brorson has been an avid Linux user since 1994 and became a
contributor to the gEDA Project in 2003. By day, Stuart is
a professional electrical engineer involved in designing scientific
instruments for spectroscopy.