How to develop some Printed Board Circuits with free tools from the
_________________ _________________ _________________
Why another article to talk about EDA, Electronic Design Automation?
Because there is more than one way to do it and this one is free. One of
its best particularity is the fact that we have a set of tools, some
graphical ones but mostly command line based. With this article, I will just
show how to make a PCB (Printed Circuit Board) from the beginning.
What is gEDA?
Most important, gEDA is a set of free (in the GPL way) electronic tools.
It is therefore always in development state.
I put here
the gEDA diagram. Click on it to enlarge.
In the center, we have gschem, the graphical schematic and symbol
It can be called by geda, the manager, on top of gschem. With it, you
can not only launch gschem but a spice simulator, a pcb designer, a
gerber and a waveform viewer.
On the top left, with tragesym, you can create symbols and gsymcheck
will check them.
Most interesting for us, down gschem, we have
two ways of doing net-lists. It is a gEDA particularity: every exchange
file is in plain text, only the extension indicate the goal:
You have gnetlist, the "official" way to do net-listing for spice
simulation with tclspice, ngspice, gnucap, Verilog synthesis with
Icarus or PCB creation. gsch2pcb is a net-lister dedicated for pcb. It
does the translation from .sch file components to pcb file, back
and forth. And to finish, we check the pcb file with gerbv.
- .sym for symbols files
- .sch for schematic files
- .net for net-list files
- .pcb for pcb files and so on...
In this article I will only talk about gschem, gsch2pcb and PCB. We
will begin with gschem.
Placing components with gschem
I won't talk a lot about installation: apt-get install geda-gschem
geda-symbols geda-utils pcb for GNU/Debian.
On others systems,
download the required files on http://geda.seul.org/source.html,
http://pcb.sourceforge.net/ for PCB and ./configure & make &
make install as usual.
Ok, let's open gschem. We have two ways to do it: we open it with the
command gschem alone or we put a filename like: gschem sample.sch. Now
we can place components: one more time, we have two choices: with the mouse
and "Add Component" or from the keyboard with "i". We select BNC-1.sym,
pwrjack-1.sym in connector, 2 resistor-2.sym, 1
resistor-variable-2.sym, 2 capacitor-1.sym, 2 capacitor-2.sym,
bridge-1.sym in analog, lm317-1.sym in linear.
We will have this picture as result:
Don't worry, you can download all files
my homepage (updated) or from
Now we can wire the components. To do it, we need to move them
and make rotations. Since we are lazy people, we will use keyboard
shortcuts: click on component then "er" for rotation, "ei" for
mirroring, "m" for moving, and "n" for wiring the components. We can
select only the part name to move or rotate it.
Once done, we can edit each component attribute with "ee". We can begin
with the most important component : LM317. When we open the attribute
box, we can see this:
We write LM317 into value name and TO220L for footprint (make it
invisible). For resistors, the value is indicated above on the schema
and the footprint is R025. And so on for capacitors,
potentiometers (you can see the sample.sch file added to the
Once we have finished, we can save it with a "fs" if the file have a
name and "fa" otherwise.
Translation with gsch2pcb
First, we need to give a number to the parts with the command:
If we reopen the file, we will see all ? from R?, C? U? changed to a
number. This mean we can make a net-list. First we must
install some footprint library and make a project file. We need to do
it because there is a lack of documentation for pcb footprint use
with gschem or I haven't found it. A good footprint set can be found
web.wt.net/%7Ebillw/gsch2pcb/gsch2pcb-libs.tar.gz. (local copy)
Download and install it with:
mv gsch2pcb-libs.tar.gz ~/toTheLocationYouWant/
tar xvzf gsch2pcb-libs.tar.gz
can make a project file with:
I have named it sampleLFprojet but you can use the name you want.
The schematics is for our gschem file. Elements-dir gives to pcb the
footprint directory to use (replace XXX with your directory location
pcb-elements). And the output-name is to continue with the sample name
for pcb. We save it in the same sample.sch directory.
The next step is to run:
The output are files named sample.board and sample.net. The first one
component parts to be used with PCB and the second one is the net
Making a circuit with PCB
We can start now with PCB. Open :
You will have this picture :
All components are packed to the left up side. We need to place the
components on the board. Then we call the wires (nets) with the
sample.net file with File --> load net-list file and optimize Connect
--> rast-nets. It's quite magic.
Now we place nets as desired with Line and solder mask selection.
It's finished: you just have to save and make a File --> print layout
to have your pcb printed.
The goal of this article was just to have a straight and rough
introduction to of some of the gEDA tools available and to show an easy,
short way to make a PCB. But gEDA is so much more that it will take
you a long time to play around with it: you will need to make a lot of
optimizations to make an output usable for professional pcb makers.
This article is mainly influenced and based on the Bill Wilson
bill--at--gkrellm.net documentation gsch2pcb.html.
And you can find more information at www.geda.seul.org.
PCB can be found at pcb.sourceforge.net.
If you understadn french then you can find more on
and for english speaking people, there is some stuff
Talkback form for this article
Every article has its own talkback page. On this page you can submit a comment or look at comments from other readers:
2005-12-21, generated by lfparser version 2.53