From OpenCircuits
Jump to: navigation, search

The goal of the gEDA project is to create a fully functional GPL'd suite of EDA (Electronic Design Automation) tools. It was started because of the lack of free EDA tools for UNIX.
GEDA Quickstart


What is gEDA/gaf?

(from the gEDA FAQ)

gaf stands for "gschem and friends. It is a subset of the entire tool suite under the gEDA name. It's a collection of the following tools.


gschem is the schematic capture tool. It's sole purpose is to facilitate the graphical input of components/circuits. Schematic capture is the ability to draw and layout circuits using a computer, where standard symbols are used to represent the various gates and components which are interconnected by wires.


gnetlist is a netlist generation program that takes the gEDA/gaf schematic file(s) and the required symbol files and generates a netlist.

It supports writing to the following netlist formats: Unix PCB, Allegro, BAE, Gossip, Maxascii, PADS, Protel, Spice, Tango, Verilog, VHDL-AMS, VHDL, Vipec, BOM generators, and gEDA's backend testing format.


gsymcheck is the symbol checker for the gEDA system. It takes in a symbol file and will verify that it will work in gschem. Currently, this tool identifies the following errors.

  • Having invalid objects inside of a symbol
  • Missing certain required attributes
  • Duplication of certain attributes
  • Incorrect usage of the various attributes
  • Using forbidden, obsolete, or invalid attributes


gattrib is gEDA's attribute editor. It reads a set of gschem files and creates a spreadsheet showing all components in rows, with the associated component attributes listed in the columns. It allows the user to add, modify, or delete component attributes outside of gschem, and then save the schematic files back out.

It is useful in situations where you need to view, add, modify, or delete a number of attributes all at once. It saves you the pain of clicking on each component and repeastedly using gschem's attribute editor to modify component attributes.

What is the gEDA suite?


All the main tools including gschem, gnetlist, gsymcheck, gattrib, libgeda, and gsch2pcb.


Ngspice is a mixed-level/mixed-signal circuit simulator based on three open source software packages: Spice3f5, Cider1b1 and Xspice. Ngspice is more than the sum of the packages above, as many people contributed to the project with their experience, their bug fixes and their improvements. Ngspice is now an usable simulator: many of the original bugs are fixed, it includes many recently developed compact models (BSIM3, BSIM4, SOI models, VBIC, HISIM, etc.) and some older models have been improved.


Gnucap is the Gnu Circuit Analysis Package. Its primary component is a general purpose circuit simulator. It performs nonlinear dc and transient analyses, fourier analysis, and ac analysis. Spice compatible models for the MOSFET (level 1-7), BJT, and diode are included in this release.

Gnucap is not based on Spice, but some of the models have been derived from the Berkeley models. Unlike Spice, the engine is designed to do true mixed-mode simulation.


The name gspiceui is a compaction of GNU Spice GUI. It is intended to provide a GUI for two freely available electronic circuit simulation engines: GNU-Cap and Ng-Spice.


PCB is an interactive printed circuit board editor for the X11 window system. PCB includes a rats nest feature, design rule checking, and can provide industry standard RS-274-X (Gerber), NC drill, and centroid data (X-Y data) output for use in the board fabrication and assembly process. PCB offers high end features such as an autorouter and trace optimizer which can tremendously reduce layout time.


Gerber Viewer (gerbv) is a viewer for Gerber files. Gerber files are generated from PCB CAD system and sent to PCB manufacturers as basis for the manufacturing process.

The different layers of the PCB are separated into different files. gerbv can load all files at the same time, though it can not show them at the same time. You have to browse through the different layers with the radio buttons on the right side.

Icarus Verilog

Icarus Verilog is a a GPLed Verilog compiler. Icarus Verilog includes a a parser that parses Verilog (plus extensions) and generates an internal netlist. The netlist is passed to various processing steps that transform the design to more optimal/practical forms, then passed to a code generator for final output. The processing steps and the code generator are selected by command line switches.


GTKWave is a digital waveform viewer useful for examining the output of various digital simulators (like Icarus Verilog, for example). It can read VCD, EVCD, LXT, and Synopsis output formats. It was built using the GTK+ toolkit.

Why gEDA?

Compared to other software packages from Cadence, Mentor, or Synopsys, gEDA may not be as advanced and sophisticated than other packages. However, gEDA is becoming increasingly useful to a lot of people because of the following reasons.

  • Completely free.
  • All files and source code are available via the GPL license.
  • Vendor independence. Since all gEDA tools come with full source, you can make any modifications to the tools, as long as you follow the terms of the GPL.
  • Stability: bugs are investigated immediately and fixed in a timely manner.
  • Runs on as many platforms as possible including GNU/Linux.
  • Strives to be well-documented.
  • All software components of gEDA/gaf are released under the GNU General Public License (GPL) version 2

Downloading gEDA

Fedora Core 5 and 6

Install Files: RPMs

Installation Method

1) rpm --install geda-*

2) rpm --install libgeda-*

3) rpm --install pcb-*

Fedora Core 4 and later

Install Files: RPMs

Installation Method

1) rpm --install geda-*

2) rpm --install libgeda-*

3) rpm --install pcb-*


Install Files: RPMs

Installation Method

1) yast


Install FIles: .deb files

Important Installation Notes

  • The gEDA programs use the GTK+ GUI toolkit. If you are running KDE, you should have no problem building and installing them as long as the GTK+ libraries and headers are installed on your system.
  • gEDA/gaf, as well as the gEDA-allied programs have certain dependencies. These are libraries and other programs which must be present on your system to build and run gEDA successfully. When trying to install gEDA, you may find that you need to install other, seemingly unrelated programs first. This is part of the normal process of installing GNU/Linux or Unix software. Note that the installation methods presented above provide you with different approaches to handling the dependency issue. (Also, gEDA/gaf has a very light dependency footprint. However, other gEDA-allied programs may have more dependencies.) If you find you are missing dependencies during the installation process don't despair! Overcoming any dependency issue is a simple matter of installing the required program or library.

Helping out with gEDA

(from the list of gEDA Tasks)

Documentation Writers/Editors

Somebody is needed to act as an editor for the gEDA documentation effort. Basically this person would take whatever documentation already exists and/or is currently being written and formats it into something presentable. This individual does not write the actual documentation, but would instead perform editorial work. People who want to write the actual documentation are also needed.

Publicity Manager

Somebody is needed to do publicity for the gEDA project. This consists of posting release updates to the various Linux/Unix websites (like Freshmeat or LWN)

Netlist Hacker

Somebody who is familiar with the generation/management of netlists is needed to help work on and improve gnetlist. Whether the existing gnetlist is used or if a total rewrite is needed is always an open option. Must be extremely familiar with UNIX/C/C++ programming.

Symbol Library Hacker

Somebody is needed to help get the symbol library up to the current symbol spec. This individual would also help in the integration of new symbols and making sure that they meet the current symbol spec. The task of getting the symbol library up to spec is a combination of manual effort and automated updating (this sort of automated updating lends itself very well to a person with shell/perl scripting familiarity).

geda GUI Hacker

Somebody who knows C, UNIX, and gtk+ programming is needed to work on the gEDA GUI (the program named geda). This program has been stalled for the past year due to the lack of manpower. Whether the existing geda is used or a total rewrite is needed is always an open option.

UNIX Port Testers

People are always needed to test gEDA on different and new UNIX like operating systems. This person would basically download a new release and make sure it works on their platform of choice. Any problems found would be then submitted to the appropriate gEDA author.

Windows Port Hacker/Manager

Somebody with expertise building and testing gEDA on UNIX systems and familiarity with the MS Windows 95/98/NT platform is needed to manage the gEDA Windows port. Testing, bug fixing, packaging, and releasing of gEDA on the Windows platform would be the primary responsibility of this person. This task requires a person who knows C, gtk+, UNIX, and MS Windows programming. The Windows port will NOT move forward if this task is not filled.

=== Release Hacker === Somebody who wants to create and manage releases is needed. Releases occur when the code is ready to be released, so there’s no marketing pressure. This task requires gEDA building/testing familiarity as well perhaps some minor code hacking.

Website/Mirror Hacker

Somebody to watch over the mirrors and maybe do some HTML hacking is needed. There are currently three websites which need to be monitored and occasionally fixed. The person would also have influence in the changing/expansion of the gEDA website. Duties would be split among the current webmasters.

Long term upgrades for desired tools

  • Libgeda:
    • Enable handling of .sch files with symbols having some (but not all) pins promoted onto the .sch file. This will enable pin-swapping via backannotation from PCB.
  • Gschem
    • Enable hierarchical bus support.
    • Make gschemrc variables settable from within gschem using a “settings” pull-down menu item (new).
    • Improve symbol library to handle very large symbol collections better
    • Whenever the selection changes and we have selection dependant dialog, the dialog should get an information about that. Then it would be possible to change the attribute dialog to be non-modal.
  • Gnetlist
    • Enable –help flag. Do other gEDA/gaf programs recognize this flag?
  • Gattrib
    • Make it export CSV to support BOM generation.
    • Get printing working.
    • Enable attachment of attributes to nets.
  • Garchive
    • Incorporate guile so that it reads RC files using the same mechanism as the rest of gEDA/gaf.
  • CD Installer
    • Change it so that the user is presented a pick-list at the beginning of the install, instead of blindly installing everything.
  • Refdes_renum
    • Doesn’t currently work properly with slotted parts (it gives new refdes numbers to slotted parts). Fix it so it recognizes slotted parts and assigns refdes appropriately.
    • Provide –gentle option, which doesn’t clobber (overwrite) any refdeses which are already assigned.

Ideas for new tools

  • Develop scheme for backward annotation of changes from PCB to gschem. Requires modifications to libgeda to support, e.g. pin promotion from .sym file to .sch file (enabling pin swapping).
  • Create a Gerber → .pcb conversion tool. Result is metal layer or footprint editable by PCB. This might be a Perl script.
  • Implement lockfiles between gattrib and gschem.

See also

Personal tools