Table of Contents

gEDA gschem User Guide

by: Ales Hvezda / September 21st, 2003

The latest version of this document may be found at: http://geda.seul.org/wiki/geda:gschem_ug

This document is released under the GNU Free Documentation License (GFDL).

Please report any errors/inconsistencies in this document by commenting in the Discussion area at the bottom of the associated page.

About this document ...

gEDA gschem Users Guide

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds. Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were: latex2html -local_icons gschem

The translation was initiated by Ales Hvezda on 2005-08-20

Introduction

This document describes the installation, configuration, and operation of the gschem application.
This document does not describe the process of generating schematics. For this, refer to the various tutorials on using the gEDA Tool Suite:

This document assumes you understand basic schematic capture concepts. For example: that a component represents something and that nets and buses interconnect these components to form a schematic, etc… For a basic understanding of the various work-flows available in the gEDA Tool Suite, please read the above tutorials. For more detailed understanding of specific tool issues, please refer to How To Ask Questions and to the Resources.

Overview

gschem is the schematic capture program in the gEDA Tool Suite. Its purpose is to facilitate the graphical input of:

Once gschem has been used to enter the symbols/schematics for your design, several gEDA Tool Suite “utility” programs are used to extract information for other purposes:

gschem_workflow_01.jpg

Resources

The following on-line resources are useful for designers using gschem:

How To Ask Questions

gschem is an OpenSource, community driven, development. As such, the emphasis has been on developing the gEDA Tools Suite, not on developing commercial-level documentation and support. Much of the burden on learning how to use the gEDA Tools Suite applications is placed on the user, who must understand the basics of electronics, Electronics Design Automation (EDA), and the terminology used in schematic capture, circuit simulation, and printed circuit board design.
As a typical OpenSource development, the gEDA Tools Suite development community provides timely and insightful response to user inquiries, but please perform the following steps before bothering the developers (they need to focus on making gEDA Tools Suite applications better, and you can actually learn to answer your own questions and become independent of the developers):

  1. Read Rick Moen’s How To Ask Questions The Smart Way, about how to ask for help. This is a must read for everybody.
  2. Read this document. I know, it’s a lot to expect engineers to actually read a user’s guide. The latest version of this document is maintained on the gEDA web-site at gschem User Guide. The information should be here. If it isn’t, comment to the fact in one of the on-line document’s “Discussion” areas (at the bottom of each wiki-page). Helpful comments are clear, to the point, and may even contain the wording that should be inserted into the document.
  3. Read the gschem Frequently Asked Questions (FAQ) wiki-page. This on-line document is updated often to reflect user and developer experiences with gschem.
  4. Read the gEDA/gaf Documentation. This information was installed on your computer if the gEDA Tools Suite was installed from the gEDA Tools Suite CD-ROM.
  5. Google is your friend. People that have asked questions that obviously didn’t do any simple Google search will not be treated well when asking for help. This is particularly true if your problem is not unique to the gEDA Tools Suite applications.
  6. Ask for a pointer to the right direction. It is considered good “net etiquette” to ask for a pointer to information, so that you can learn where such information can be found, rather than have someone search the information for you.
  7. If you are software literate, look at the source code to see what it is doing.
  8. Subscribe to the gEDA e-mail lists (i.e., you can only post to the e-mail lists if you are a subscriber). Then:
    1. Start reading recent messages in the geda-user e-mail list archives. Get a feel for the list’s ettiquite so that you learn how to properly ask questions.
    2. Search the archives for issues similar to yours. You may find the question has been asked of the developers and users before, and answered.
    3. In the event that you can find no information concerning your problem, submit a concise description of the problem and a request for the type of help you are requesting.

Installing gschem

As a mature OpenSource project, the gEDA Tools Suite and its components have been installed on many Linux distributions. The following are by no means the only methods of installing the gEDA Tools Suite and/or its components.

Latest Stable

gschem is a component of the gEDA/gaf set of tools which tend to integrate together in the development and maintenance of schematics and symbols. The term “gaf” stands for “gEDA and friends”). The gEDA/gaf applications are actually rather stable, and receive significant testing prior to release.
There are multiple methods of installing gschem. The appropriate method depends on your distribution. See the following for some examples.

"gEDA Tools Suite" CD-ROM

The recommended method is installation from the “gEDA Tools Suite” CD-ROM, gratefully prepared by Stuart Brorson. The latest version of this CD-ROM is available on-line for free download as an ISO image from the gEDA Downloads web-page. Simply burn this ISO image to a CD-ROM using your favorite CD burning software (e.g., K3b, …). Insert the CD-ROM, and if your computer supports autodetection of the CD-ROM, the built-in installation wizzard will launch. This wizzard will first check if your computer has some required software (informing you if you don’t and optionally installing these if you want), then build all of the “gEDA Tool Suite” applications (including gschem) from source. The whole process can take 2 hours on a slower computer.

If the installation wizzard did not launch, enter as follows to install the gEDA Tool Suite for access by all users on this computer (i.e., when prompted for the installation directory, enter something like: “/usr/local/gEDA-20060124”):

sudo sh /media/cdrecorder/installer –log –verbose

The above command requires superuser permissions configured for the user invoking the command. If you do not have the proper permissions to execute this command, ask your administrator to install the gEDA Tool Suite for you.

If the installation wizzard did not launch, enter as follows to install the gEDA Tool Suite for access by just the user doing the installation(i.e., when prompted for the installation directory, accept the default "/home/{login id}/geda-install”):

sh /media/cdrecorder/installer –log –verbose

Debian distributions

For Debian distributions, you may wish to download the latest DEB binaries prepared by Hamish Moffatt. These are not always current with the latest “gEDA Tools Suite” ISO image above, and do not include many of the other tools available on the “gEDA Tools Suite” ISO image. Nevertheless, the binary packages provide a hassle free way to install the core of geda.

Fedora and RedHat distributions

For RedHat distributions you may wish to download the RPM binaries prepared by Wojciech Kazubski.

Since Fedora Core 5, major parts of gEDA are available from the Fedora Project.

For more information, read the fedora rpm installation notes.

SuSE and OpenSuSE distributions

For SuSE and OpenSuSE distributions there are rpm packages for several gEDA related programms. They’ve been prepared by Werner Hoch using the OpenSuSE Build Service.

You can install the rpm packages with YaST, yum or any other installation tool. The packages are located at ftp://ftp-1.gwdg.de/pub/opensuse/repositories/home%3A/werner2101/.

For more informations read the SuSE rpm installation notes.

Mac OSX distributions

For Mac OSX distributions you may wish to download the latest Fink binaries prepared by Charles Lepple.

CVS Unstable/Testing

For those already familiar with the gEDA/gaf applications on the “gEDA Tools Suite” CD-ROM, access to the CVS repository is available. This is the latest developer source-code version of the application.
Installation from CVS is appropriate for those:

Configuring gschem

Assume that you have installed the gEDA Tools Suite from CD-ROM (the most common installation method), and that you are ready to configure gschem to your personal likes. When installing, you were prompted for the path where the gEDA executables would be placed. The default was the /home/{login id}/geda-install directory, where {login id} is the username you logged into your account with, but you may have changed this to another directory on the computer. This directory is referred to below as the {binary-install-path} because this is where the gEDA binary executables are placed. If you forgot where the binaries were installed, simply issue the following command to find where gschem is installed (in this case the {binary-install-path} is /usr/local/gEDA-20060124):

% which gschem
/usr/local/gEDA-20060124/bin/gschem
%

The gEDA Tools Suite applications follow normal Unix/Linux conventions for placement of configuration files; there are usually system-wide, user-wide, and project-specific configuration settings. The system-wide settings are placed in a sub-directory of the {binary-install-path}. The user-wide settings are placed in the user’s home directory, also known as the login directory (referred to in Unix/Linux parlance as the $HOME directory). The project-specific settings are placed in a project-specific directory.

Now that we know the above, we can configure gschem.
gschem is highly configurable. All configuration is handled through the following resource files (written using the GNU Guile programming language, an interpreter for Scheme, a version of Lisp):

; Load up a color scheme
(load (string-append gedadatarc "/gschem-lightbg")) ; light background

; Comment in this scheme code if you want automatic numbering when
; placing new component and copying components
;
(load (string-append gedadata "/scheme/auto-uref.scm"))
(add-hook! add-component-hook auto-uref)

A few comments about changing the files:

gschemrc

The {binary-install-path}/share/gEDA/system-gschemrc file is well commented. Read this file for more details on the settings available.
Some of the settings appropriate for override (by placing in either the user’s $HOME/gschemrc file or the project’s ‘pwd’/gschemrc file) are:

gafrc

The {binary-install-path}/share/gEDA/system-gafrc file is well commented. Read this file for more details on the settings available.
Some of the settings appropriate for override (by placing in either the user’s $HOME/gafrc file or the project’s ‘pwd’/gafrc file) are:

Running gschem

Confirming gschem is installed

You should determine if gschem has been correctly installed on your Linux computer.
Log into your Linux account, and launch your favorite interactive shell. The different Linux distributions will usually offer more than one interactive shell such as xterm, gnome-term, konsole, etc.
You will see a shell prompt, which will depend on your Linux distribution and on your selection of interactive shell. It is common practice in Linux documentation to refer to the user’s interactive login shell prompt as “%”, and to refer to the superuser’s (i.e., user “root”) interactive login shell prompt as “#”.
At the shell prompt, enter the following commands to determine if gschem is installed:

% echo $PATH
/usr/local/gEDA-20060124/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/gEDA/bin
% which gschem
/usr/local/gEDA-20060124/bin/gschem
% ldd /usr/local/gEDA-20060124/bin/gschem
    linux-gate.so.1 =>  (0x00345000)
    libgeda.so.25 => /usr/local/gEDA-20060124/lib/libgeda.so.25 (0x00d7d000)
    libguile.so.12 => /usr/lib/libguile.so.12 (0x00588000)
    libguile-ltdl.so.1 => /usr/lib/libguile-ltdl.so.1 (0x00b62000)
    libqthreads.so.12 => /usr/lib/libqthreads.so.12 (0x009f7000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x006d4000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x03266000)
    libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00c10000)
    libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x006ac000)
    libm.so.6 => /lib/libm.so.6 (0x008df000)
    libpangoxft-1.0.so.0 => /usr/lib/libpangoxft-1.0.so.0 (0x003e7000)
    libpangox-1.0.so.0 => /usr/lib/libpangox-1.0.so.0 (0x00a57000)
    libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00bd8000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00a01000)
    libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x009fb000)
    libdl.so.2 => /lib/libdl.so.2 (0x00906000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x0448e000)
    libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x06a81000)
    libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00c96000)
    libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x00d4f000)
    libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x00d33000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00921000)
    libc.so.6 => /lib/libc.so.6 (0x007b4000)
    /lib/ld-linux.so.2 (0x00796000)
    libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x00bac000)
    libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x00cca000)
    libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x00bb2000)
    libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x00ad1000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00af8000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00111000)
    libXfixes.so.3 => /usr/X11R6/lib/libXfixes.so.3 (0x00d0d000)
    libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x00bcc000)
    libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x00ba2000)
    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x00a82000)
    libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x05362000)
    libexpat.so.0 => /usr/lib/libexpat.so.0 (0x0068b000)
    libz.so.1 => /usr/lib/libz.so.1 (0x0090c000)

The echo $PATH command displays the user’s current setting for the PATH environment variable. In the above example for a Fedora Core 4 installation, user gEDA executed the command and determined that the PATH included the /usr/local/gEDA-20060124/bin directory (this will differ depending on where you put the gEDA Tools Suite executables). If you installed from the gEDA Tools Suite CD-ROM (the most common method of installing the gEDA tools), as the last step of the installation wizzard you were prompted to:

  1. Set your $PATH environment variable to {the directory in which the install wizzard installed gEDA’s executables}
  2. Set your $LD_LIBRARY_PATH environment variable to {the directory in which the install wizzard installed gEDA’s libraries}

The which command displays the full path of a command’s executable, searching for the command on the user’s list of directories, as defined in the PATH environment variable. In this case, it will return the full path to the gschem executable if it is on the user’s PATH. If this command does not return the full path to the gschem executable, make sure your PATH environment variable has been properly set.

The ldd command displays shared libraries required by a program. All of the requested libraries must be found for gschem to run. Don’t be intimidated by the long list of libraries, this is common for mature Linux applications. If we had not received this output (or something very similar), we would have to check on our setting for the LD_LIBRARY_PATH environment variable.

And of course, there is always attempting to just run gschem as follows:

%  gschem -h
Usage: gschem [OPTIONS] schematic_filename1 ... schematic_filenameN
  -q            Quiet mode
  -v            Verbose mode on
  -r filename   Rc filename
  -s filename   Script (guile) filename
  -o filename   Output filename (for printing)
  -p            Automatically place the window
  -t            Print stroke information
  -h            Help; this message

where we displayed the gschem help.

If these commands do not return the expected results, then most likely the gEDA tools are not installed properly. Please see the appropriate INSTALL docs (which came with the gEDA distribution) for more info on installing the gEDA tools. If you installed from the gEDA Tools Suite CD-ROM, read the INSTALL document on the CD-ROM first.

The Shell Prompt

terminal_screenshot_001.jpg
Figure 1 – gnome-terminal

You launch gschem from your favorite shell prompt (in this case, gnome-terminal on Fedora Core 4).
There are several command-line switches:

Running gschem is straightforward once you have installed it on your GNU/Linux system.
Although gschem is a GUI application, gschem is meant to be launched from the command-line, as it takes command-line arguements (see Figure 1 above).
To open an empty schematic, run: % gschem

To open a specific schematic, run: % gschem schematic_name.sch

To open a list of schematics, run: % gschem schematic_1.sch schematic_2.sch, schematic_3.sch …
or use wildcards to specify multiple filenames: % gschem schematic_*.sch

As operations are performed in the gschem Main Window the gschem Status Window continues to output information, and the shell prompt’s window continues to output information, consisting of:

Backups

There are two basic mechanisms in gschem for backing up schematics and symbols, classic Linux backups and incremental backups.

Classic Linux backups

While creating and/or editing schematic file(s) or symbol file(s), snapshots are triggered by the autosave interval setting in the {binary-install-path}/share/gEDA/system-gschemrc file (see Relevant configuration settings below). If the file has not been manually saved, and the interval expires (current default 2 minutes), the snapshot is saved the next time a change is made in the gschem main window (to either a schematic or to a symbol). The interval timer starts again as soon as the snapshot file(s) have been written, and once the timer expires the next change to the main window will trigger the snapshot to be written.
This snapshot includes all work up to, but not including, the last operation performed in the gschem main window. This is to allow for easier recovery from a crash that may have been caused by the last operation.
When gschem exits normally, the snapshot file(s) are deleted. So, if gschem were to crash, or not terminate normally for some reason (e.g., power failure, soda → keyboard, etc.), the shapshot file(s) would be found the next time gschem opened the file(s). gschem will display the following warning message when it finds a snapshot file associated with the schematic file(s) or symbol file(s) it opens:

WARNING: Found and autosave backup file:
  {full path to autosave file}

The backup copy is newer than the schematic, so it seems you
should load it instead of the original fil.
Gschem usually makes backup copies automatically, and this
situation happens when it crashed or it was forced to exit
abruptely.

If you load the original file, the backup file will be overwritten in
the next autosave timeout and it will be lost.

Do you want to load the backup file?

The snapshots are saved to a file whose filename is constructed from the original filename (schematic or symbol) as follows:

so that:

And yes, the "#" at the front and back of the filename are part of the filename.

When the user does finally manually save the file, the original file (i.e., the file that was opened) is renamed to "{filename~}" and the latest snapshot file (i.e., "#{filename}#") gets copied as "{filename}". Note that this new "{filename}" file may not contain the latest information as displayed on the gschem main window, as the autosave interval timer may not have expired since the last change to the schematic/symbol.
When the user finally decides to close gschem, the latest snapshot file (i.e., "#{filename}#") is saved to the original file (i.e., "{filename}".
When you exit gschem and are prompted to save any unsaved schematic file(s) or symbol file(s), this constitutes a manual save.

Incremental backups

Relevant configuration settings

There are the following configuration settings in the {binary-install-path}/share/gEDA/system-gschemrc file that effect backups:

On-line documentation

For a listing of the various command line flags run “gschem -h”:

% gschem -h
Usage: gschem [OPTIONS] schematic_filename1 ... schematic_filenameN
  -q            Quiet mode
  -v            Verbose mode on
  -r filename   Rc filename
  -s filename   Script (guile) filename
  -o filename   Output filename (for printing)
  -p            Automatically place the window
  -t            Print stroke information
  -h            Help; this message

For a detailed explanation of the command line flags look at the gschem man page:

% man gschem
gschem(1)			   20031231			     gschem(1)



NAME
       gschem - gEDA/gaf Schematic Capture

SYNOPSIS
       gschem  [-q]  [-v] [-t] [-r rcfilename] [-s scriptfilename] [-o output-
       filename] [-p] [schematic1 ... schematicN]

DESCRIPTION
       gschem is the schematic capture program which is part gEDA  (GPL	 Elec-
       tronic  Design Automation) toolset.  This program is used to draw elec-
       tronic schematics.  Schematics consist of standard symbols  (which  are
       either  part of a standard library or created by the user) which repre-
       sent the various gates  and  components.	  These	 components  are  then
       interconnected  by  nets	 (wires).   Schematics	may  be	 printed  to a
       PostScript file for printing or further conversion to other output for-
       mats.

       gschem is also the symbol creation editor.  All the standard methods of
       creating schematics are used in the creation of symbols.	 There	are  a
       few  special  rules when creating symbols, so please refer to the (non-
       existant as of now) symbol creation document.

       Please read the official documentation (very minimal at this point)  on
       how  to use gschem, since this man page just describes the command line
       arguments and a few examples on how to run gschem.


OPTIONS
       gschem accepts the following options:

       -q      Quiet mode on.  This mode  turns	 off  all  warnings/notes/mes-
	       sages. (optional)

       -v      Verbose	mode on.  This mode gives as much feedback to the user
	       as possible. (optional)

       -t      Print out more information when using mouse strokes.  With this
	       command	line  flag  and the middle button configured for mouse
	       strokes, gschem will output the stroke sequence numbers as  the
	       user executes strokes.  These numbers can be used to define new
	       strokes in the system-gschemrc file.

       -r filename
	       Specify a rc filename.  Normally gschem searches for  the  sys-
	       tem-gschemrc, then ~/.gEDA/gschemrc, and finally for a gschemrc
	       in the current directory.  This	options	 allows	 the  user  to
	       specify an additional rc file which is read after all the other
	       rc files are read. (optional)

       -s filename
	       Specify a guile script to be executed at startup. (optional)

       -o filename
	       Specify a filename for postscript output.   This	 command  line
	       argument	 is useful when running gschem from a shell script and
	       with a guile script.  The filename can be changed  through  the
	       print dialog box.

       -p      Automatically  place  the  window, especially useful if running
	       gschem from the command line and generating output.

       schematic1 [... schematicN]
	       Schematic file to be loaded.  Specifing	a  schematic  file  is
	       optional.   If  multiple schematic files are specified they are
	       read in sequentially and put on seperate pages.	It  is	impor-
	       tant that the schematic(s) follow all the options (ie last).


EXAMPLES
       These  examples	assume that you have a schematic called stack_1.sch in
       the current directory

       To run gschem and then interact with the program:

	    ./gschem

       To run gschem in interactive mode but load a sample schematic:

	    ./gschem adders_1.sch

       To run gschem and load up all schematics in the current subdirectory:

	    ./gschem *.sch


ENVIRONMENT
       No environment variables are used.


AUTHOR
       Ales Hvezda and many others


SEE ALSO
       gnetlist(1), gsymcheck(1)

COPYRIGHT
       Copyright ©  1999-2004 Ales Hvezda

       This document can be freely redistributed according to the terms of the
       GNU General Public License version 2.0




Version			      December 31st, 2003		     gschem(1)

Electrical Connectivity

As you draw schematics you need be aware of what is considered to be electrically connected by the gEDA programs.
Nets which are visually connected to other nets are electrically connected. This connection may be endpoint to endpoint or endpoint to midpoint. When a single endpoint to endpoint (net or pin endpoint) connection is drawn, the visual dangling net cue disappears. When an endpoint ends in the middle of another net (or multiple endpoints coming together at a single point) then a circular filled connectivity cue is drawn. You cannot connect a net to the middle of a pin. Nets can only be connected to the endpoints of pins. You cannot connect to a net if that net is not orthogonal (horizontal or vertical). The visual cues are the primary way of telling if nets/pins are connected.
Bus are similar to nets with the exception that you cannot connect a net to the endpoint of a bus (only to the middle). If you do try to connect a net to the end of a bus you will see a big red X at the invalid endpoint connection. Buses are still very new so there are still many quirks.
You can label nets by using the label= attribute. Do not attach more than one label= to a net. You only need to attach the label= attribute to one net segment. Different nets (i.e. multiple net segments which aren’t connected together) which have the same attribute label= attached to them are also considered electrically connected. You will not get any indication of this connection by gschem, but the netlister (gnetlist) considers nets with the same label= attribute electrically connected. The naming convention for buses has not been formalized yet.

Components & Symbols & Objects & Attributes

There is a hierarchical association between components, symbols, objects, and attributes.

Components

A component is the instantiation of a specific symbol, as placed on the schematic. When discussing a schematic you refer to components on the schematic, not symbols on the schematic. Think of symbols as being conceptual, and components as being concrete.
The component consists of a graphic representation and the attributes describing the component’s features.
The component inherits all of the attributes defined in the symbol. Certain attributes in the symbol:

are promoted to the component level for manipulation by the circuit designer. These attributes may optionally be exposed (made viewable) with the component’s graphic, and their values may be changed.
Any attribute not defined in the symbol may be defined in the component. For example, if the symbol does not define the comment attribute, this attribute may be added to the component, perhaps to add a comment for the Bill of Material or Assembly Instructions.
Unfortunately, it is difficult to determine a component’s attributes from gschem while entering the schematic. You have to place a symbol on the schematic, select the resulting component, and select Hierarchy | Down Symbol from the pull-down menus. Then, you have to unhide all attributes with Edit | Make Inv Text Vis from the pull-down menus. Then you have to expand your view of the symbol with View | Extents. Then, you have to go back to the schematic by selecting Hierarchy | Up from the pull-down menus. Then, you have to select Edit | Edit… to bring up the “Edit Attributes” dialog box to determine if any attributes have been added at the component level.

Symbols

Symbols are just a collection of objects and attributes.
The objects have positional significance in the symbol, and define the graphic that is viewed.
Attributes may be attached to objects, or they may be attached to the symbol itself (termed as “unattached” attributes, because they are not attached to an object).

Objects

The following are objects:

Attributes

An attribute is text which is in the form name=value (there are no spaces to the left or right of the name,value pair). An attribute can be either attached to an object or unattached. Attributes are used extensively in the gEDA project to convey information (e.g., device name, pin numbers, hidden nets, and unit reference numbers). Check gEDA/gaf Master Attribute Document for a complete list of attributes.
There are three kinds of attributes:

There are some gotchas about attribute promotion:

Now, in order to make everybody happy, this attribute promotion behavior is configurable.
The system-gschemrc file defines:

(attribute-promotion "enabled")

which enables attribute promotion.
If you override the system-gschemrc’s default promote-invisible setting by adding:

(promote-invisible "enabled")

to either your user’s ~/gschemrc or local ‘pwd’/gschemrc file, invisible unattached attributes will also be promoted (and in memory removed).

However, if you do this, component slotting will break because gschem expects certain unattached attributes inside the symbol (in memory even though they are invisible).
So you can add:

(keep-invisible "enabled")

to either your user’s ~/gschemrc or local ‘pwd’/gschemrc file. This is enabled by default, but has no effect unless promote-invisible is enabled.

So, to summarize, attribute promotion takes unattached attributes inside symbols and attaches them to the outside of a placed symbol. Three *rc keywords control this behavior: attribute-promotion, promote-invisible, and keep-invisible.

The Main Window

gschem_screenshot_001.jpg

There are several ways to interact with gschem. gschem requires a keyboard and mouse. There are three ways to initiate an operation or command:

To make usage matters more confusing, selecting an operation off of the menus behaves slightly differently than typing the keyboard shortcut. Most of the operations operate on the currently selected object(s), hence you need to select the object first before manipulating them. The menu selected operations usually require some more input (usually a mouse click) after they are picked off of the menu. The keyboard shortcut operations take that required input as the current mouse position. This saves an extra click since you can position the mouse at the right place, type in the shortcut(s), and the command then executes. Note, you can change this so that both menu and shortcut behavior is exactly the same. See the section on the resource file for more info on how to configure this.
Most of the interaction with gschem is fairly mode oriented (similar to the great text editor vi). If you select operations off of the menu, then you are placed into the corresponding mode (like copy or move mode). You must then select an anchor point (or whatever the appropriate point is) to continue the operation. Most of the commands off of the menu expect the objects to be already selected. Some of the modes persist after being execute while other immediately return you into select mode (the default mode).
The shortcuts are also mode like in nature. Most of the default shortcuts are for the various commands are not single keystrokes. There are a few which are single keystrokes (like zoom in: `z’ or pan: `x’), but most are typically two keystrokes long. As examples, to execute File/Save you would type `f’ and `s’ (without the quotes) or Add/Line is `a’ and `l’. You can get a listing of the shortcuts by picking Help/Hotkeys. You can also see the hotkey assignments in the pulldown menus as well. The shortcuts are defined in the resource files (system-gschemrc, /.gEDA/gschemrc, or `pwd`/gschemrc). See the section on the resource file for more info.
The mouse button actions in gschem are mostly configurable. The first mouse button is always used to select objects or pick points. This button is not configurable. The second mouse button is either a copy/move action (when held down over an object), a repeat last command or used to draw a stroke to execute a command. The third mouse button is either a mouse pan (when held down as the mouse is moved) or a popup menu. The behavior of the second and third mouse buttons is controlled through the resource file (see the section below for more info).

The Status Window

:geda:status_screenshot.jpg

Add some details about what gets displayed in the status window.

The Schematic File

Schematic files. These files contain components, nets, text, and sometimes primitive objects (like lines, circles, box etc…) Schematics do not contain pins. Schematic filenames should follow this convention: name_#.sch where:

Schematic files are pure ASCII and will always be pure ASCII. gEDA does not support any binary file formats. The file format for schematics is described in the gEDA file formats document.

The Symbol File

Symbol files. The schematic and symbol file formats are identical. gschem (or a text editor) is used to create symbol files as well as schematics. Symbol files contain lines, circles, boxes, arcs, pins, text, and attributes.
The naming convention for symbol files is: name-#.sym where:

The way of specifying hierarchy is by using the source= attribute. Please see the master attribute document for info on this mechanism.
The hierarchy mechanism is still in heavy flux, so there might be some more changes.

Symbol Libraries

Components are searched for by specifying (component-library "…”) inside one of the *rc files. See below for more info.

The Log File

Log file. This file contains informative, error, warnings etc… messages when gschem was run. This file is created in the working directory that gschem was started in. This allows the user to preserve log files between independent projects.

Grips

Grips are a mechanism used in gschem to provide an easy way of modifying objects inside schematics. When you select an object, little squares are placed in strategic locations (line end points or circle radius point or corners of a box) which allow you to change the object quickly. Grip support currently exists for lines, nets, pins, buses, circles, and boxes. Arcs do not yet have grips, but will eventually have them.

Using grips is easy:

Menu Operations

File

The gschem application is primarily used for the creation of schematic files (i.e., filename.sch) and symbol files (filename.sym).
The following operations are related to the manipulation of these files.
Note that gschem automatically maintains backups of open schematic/symbol files, in the /tmp directory, for the purpose of Undo/Redo. gschem cleans up these files when it exits gracefully. If gschem does not exit gracefully, the next time you launch gschem you will be prompted with a dialog similar to:

WARNING: Found an autosave backup file:
        {filename}

      The backup copy is newer than the schematic, so it seems you
      load it instead of the original file.
      gschem usually makes backup copies automatically, and this
      situation happens when it crashed or it was forced to exit
      abruptly.

      If you load the original file, the backup file will be overwritten in
      the next autosave timeout and it will be lost.

      Do you want to load the backup file?

The following are available from the gschem main window’s menu-bar when you expand File:

New Window (fw)

File | New Window opens a new window, in addition to any already open windows. Each window is totally separate from the other windows.

New Page (fn)

File | New Page opens a new page, in addition to any existing open pages. Usually this page will be named “untitled_N.sch”, where N is an incrementing number.

Open Page... (fo)

File | Open Page… opens an existing page from disk.
The “Open…” dialog box pops up providing:

Close Page (pc)

File | Close Page closes the currently displayed page. This will prompt you to save if you have modified the page.

Revert Page (pr)

File | Revert Page closes and reopens the currently displayed page. This will not prompt you to save the current page, but will quickly discard any changes you have made and reopen the saved schematic from disk. Use with caution.

Save Page (fs)

File | Save Page saves the current page. The current filename is displayed in the gschem status-bar.
If the page’s filename is “untitled_N.sch” (where N is a integer), then the Save As… dialog box will be displayed, prompting for a new filename.
If the page’s filename is NOT “untitled_N.sch” (where N is a integer), then the Save As… dialog box will NOT be displayed, and:

Save Page As... (fa)

File | Save Page As… opens the Save As.. dialog box.
If the current filename is “untitled_N.sch”, the Save As… dialog box prompts for a new filename.
If the current filename is NOT “untitled_N.sch”, the Save As… dialog box prompts for a new filename, filling in the current filename as a default.
In either case the filename may be changed, and a new file created when the Save As button is clicked.

Save All (fl) (fl)

File | Save All unconditionally saves all schematics loaded in memory.

Print... (fp)

File | Print… brings up the Print… dialog box.
The following may be selected:

Pressing Print will generate a PostScript file with the filname format of the form {filename}.ps (e.g., printing schematic file First_1.sch would generate First_1.ps).
Printing the PostScript file to your printer is distribution dependent:

Fedora Core (from the command-line):
lp First_1.ps

Write PNG... (fi)

File | Write PNG brings up the Write PNG… dialog box. Note you must have libgdgeda installed (and any required dependencies) if you want to output images.
The dialog box allows you to select:

When the OK button is clicked, a PNG graphic file with a filename of the form {filename}.png is created (e.g., writing a PNG for schematic file First_1.sch will generate a First_1.png file).
This file may be used any way a PNG file is used (e.g., web-page, document insertion, image manipulation with the GIMP, etc.).

Execute Script... (ft)

File | Execute Script… …..TBD

Close Window (fc)

File | Close Window closes the current window. If there are any modified schematics, the “There are unsaved schematics” dialog box will appear. Clicking OK will cause all unsaved schematics to be lost.

Quit (Alt-q)

File | Quit closes all opened windows and exits gschem. A “There are unsaved schematics” dialog box will appear for each window that has unsaved schematics.

Edit

The following are available from the gschem main window’s menu-bar when you expand Edit:

Undo (shift-u)

Edit | Undo does exactly that, it undos the last action which changed the schematic.
The depth of undo (how many undo steps can be performed) is set in the system-gschemrc file. The default is 10. Simply override this setting by placing the following lines in either your ~/.gEDA/gschemrc file or your local gschemrc file:

; undo-levels number
;
; Determines the number of levels of undo.  Basically this number decides 
; how many backup schematics are saved on disk.
;
(undo-levels 10)

After every action (including zooming and panning) the schematic is saved to disk (in /tmp). The undo-levels setting determines how many of these temporary files are maintained in the /tmp directory. gschem does clean-up after itself when you exit.
Should gschem crash, the saved files remain in /tmp for disaster recovery. You will be prompted the next time the schematic is opened to recover from the backup.

Redo (shift-r)

Edit | Redo only applies after you have done an Edit | Undo. You can undo something and then immediately redo it. However if you do anything in between you will lose the undo info. You can undo and redo to your hearts desire up and down till you reach the max undo levels.

Select Mode (s)

Edit | Select Mode is the initial mode in which gschem starts.
When in Select Mode, an unlocked object (i.e., component, line, box, circle, …) may be selected by placing the mouse pointer within the outline of the object and single-clicking, or by dragging a box (i.e., holding down the first mouse-button) around the object. Selecting an already selected object will leave the object selected (i.e., you can not unselect an object by single-clicking it). Multiple unlocked objects may be selected by dragging a box around the objects.
A locked object may be selected by dragging a box around the object.
To de-select all objects, single-click anywhere on the schematic where there is no object.
A visible attribute for an unlocked component may be selected by placing the mouse pointer over the component’s visible attribute and single-clicking. Placing the mouse pointer over the unlocked component’s visible attribute and double-clicking will open the edit dialog box appropriate for the attribute.
Objects will change color when selected.
You stay in Select Mode until you select one of the other Modes (e.g., Line, Copy, Move, etc.).
Your current Mode is displayed on the status-bar, in the lower-right corner of the gschem window.
If multiple objects overlap, single-clicking where they overlap will cycle through the objects.
If you hold down the SHIFT key and single-click, you can select and deselect multiple objects. Doing this with multiple overlapping objects will cause the selection to cycle among the possible object selections.
If you hold down the CONTROL key and single-click, you will toggle the object in and out of the current selection list.
If you hold down the SHIFT key while drawing a selection box you will add to the currently selected objects. Objects cannot be removed using the selection box and holding down the SHIFT key.
If you hold down the CONTROL key while drawing a selection box then you will toggle any encompassed objects. If an object was selected then it will be unselected and vice versa.
If you pick a component, its visible and invisible attributes are selected as well. If you just want to select the object, you must deselect the attributes.
The selection mechanisms are not obvious and do require some practice. There are some quirks so please report them as you come across them.

Edit... (ee)

First, select the object to be edited (i.e., in Select Mode).
If the object is a component, Edit | Edit… then pops up a dialog box that allows you to edit the component’s attributes:

If the ojbect is a text string, Edit… then pops up a dialog box that allows you to modify the text string’s attributes:

Apply the changes by pressing OK.

Notes:
If you need to change the attributes to more than just a few components, consider saving your schematics, closing gschem, and using the gattrib application, the grenum application, or the refdes_renum application to make the changes.

Edit Text... (ex)

First, select the text object to be edited (i.e., in Select Mode).
Edit | Edit Text… allows you to edit just text.
Edit | Edit Text… then pops up a dialog box that allows you to modify the text string’s attributes:

Apply the changes by pressing OK.

Notes:
If you need to change the attributes to more than just a few text strings, consider saving your schematics, closing gschem, and using the gattrib application, the grenum application, or the refdes_renum application to make the changes.

Copy Mode (ec)

Edit | Copy Mode allows you to copy (i.e., duplicate) the currently selected objects.
To copy the object(s):

After finishing the copy, you automatically return to Select Mode.
Holding down the CONTROL key as you move the outline around will constrain the movement to be either horizontal or vertical.
To copy objects using the shortcut keys is almost the same as above except that the origin point is selected automatically for you once you hit the copy mode shortcut.

Move Mode (em)

Edit | Move Mode allows you to move the currently selected objects.
To move the object(s):

After finishing the move, you automatically return to Select Mode.
Holding down the CONTROL key as you move the outline around will constrain the movement to be either horizontal or vertical.
To move objects using the shortcut keys is almost the same as above except that the origin point is selected automatically for you once you hit the copy mode shortcut.

Since version 20060906, there is another way to move object(s):

Delete (Delete-key)

Edit | Delete allows you to remove objects off of the page.
To delete objects:

The object(s) will be deleted immediately. If you inadvertantly delete a component, you can use Undo to recover.

Rotate 90 Mode (er)

Edit | Rotate 90 Mode allows you to rotate objects 90 degrees around a pivot/center point.
To rotate objects:

The object(s) will be rotated 90º counter-clockwise immediately. If you inadvertantly rotate a component, you can use Undo to recover.
Rotating objects using the shortcut keys is similar to above except that the center point is the last mouse position at which you typed the shortcut.

Mirror Mode (ei)

Edit | Mirror Mode allows you to mirror objects horizontally around a pivot point.
To mirror objects:

Mirroring objects using the shortcut keys is similar to above except that the pivot point is the last mouse position at which you typed the shortcut.
Objects are mirrored horizontally about the pivot point. If you want to get a vertical mirror then rotate and mirror the object(s) till you get the desired position.
Mirroring of embedded components is not supported.

Slot... (e shift-s)

Some physical packages (e.g., the classic 7400 Quad NAND gate) contain more than one logical component (e.g., one of the NAND gates). In gchem terminology, each of these logical components is termed a “slot” (e.g., there would be 4 slots in the 7400 Quad NAND gate). Each slot is associated with specific pins on the physical package.
Edit | Slot… allows you to change the slot number of a multiple-slot package. The package must support slotting. Refer to the gEDA/gaf Symbol Creation Document for more details.
To change the slot number (i.e., select which package pins are associated with a logical component):

Note that selecting the slot on a package often effects the layout of the printed circuit board, as the slot may be on the wrong side of the package for effecient routing of nets. Don’t worry, you can always come back and change the slot selection once you start laying out your board and know which slots route best.

Color... (eo)

Edit | Color… allows you to change the color of any selected object (with the exception of components).
To change the color of the currently selected objects:

The color change will take effect once you press Apply.
You can leave this dialog box up and select other objects and change their color by pressing Apply.

Lock (el) / Unlock (e shift-l)

Edit | Lock and Edit | Unlock allow you to lock/unlock components in a schematic. A locked component cannot be selected by a single click. To select locked component(s), drag a box around the component(s).
Locking a component is useful for components such as title blocks, which should not be selectable because there are other objects inside its boundaries. If the titleblock was not locked, and you missed selecting a component by clicking it with the mouse, you would end up selecting the titleblock instead.
Locking a component is also useful just to prevent it from being inadvertantly selected.
To lock/unlock components:

The locked/unlocked state of components is preserved when gschem exits, so components which were locked remain locked the next time the schematic is opened.
You can lock and unlock regular objects (e.g., lines, pins, boxes…). This is nice when you are drawing something and an object is in the way. Just lock it, and you will not have to think about it when you click to select other objects. Locking an object is not preserved in the file format, so once you quit gschem any locked objects will be unlocked the next time the schematic is opened.
Note that if a component is locked, you can not single-click to select a visible attribute, or double-click to select and edit a visible component. First unlock such locked components.

Line Width & Type... (ew)

The Edit | Line Width & Type… dialog box lets you control the width and type of lines, boxes, circles, and arcs on the schematic/symbol.
To change the Line Width & Type…:

Note that if the line width doesn’t seem to change, just pick a larger value.

Fill Type... (ef)

Edit | Fill Type… is used to fill boxes and circles.
To fill a box or circle:

Symbol Translate... (et)

Edit | Symbol Translate… is used when creating a symbol, to translate the symbol to an origin for subsequent placement. The symbol may take an optional offset (in mils), as appropriate to the symbol.
To translate the symbol:

If you enter a 0, then all the objects will be translated to the origin.
If you enter a non-zero offset, this will be applied equally in both the X and the Y directions.

Embed Component/Picture (eb)

gschem supports the concept of embedded components and graphics, where all the information necessary to display a component/graphic is placed in the schematic file. Edit | Embed Component/Picture causes schematic files to be significantly larger, but it makes it easy to share schematics with other people or archive schematics. You should only embed components when absolutely necessary.
To Embed Component/Picture:

Save the schematic. The schematic file will now contain the text strings for the embedded component or embedded graphic.
The Add Component… dialog box allows you to optionally embed the component.
The Add Picture… dialog box does NOT allow you to optionally embed the component.
You can only embed and unembed components. Also, you cannot embed and then mirror a component (this is a limitation of gschem and will eventually be fixed).

Unembed Component/Picture (eu)

Edit | Unembed Component/Picture will move the component’s or graphic’s information from the schematic file’s contents and output it to the original file’s path/filename (i.e., the schematic file includes the path/filename information). To Unembed Component/Picture:

Save the schematic. The schematic file will now NOT contain the text strings for the embedded component or embedded graphic.
You can only embed and unembed components.

Update Component (ep)

Edit | Update Component updates a component’s definition.
A symbol can be modified from within gschem using the following sequence:

New components placed on the schematic from this updated symbol will use the new symbol definition.
Components placed on the schematic from this symbol will be updated the next time this schematic is opened.
The symbol’s symversion attribute will automatically be incremented for non-trivial changes when the symbol is saved. When a schematic is opened by gschem, all symbols used by the schematic are read from their libraries. The symversion attribute of the symbol read from the library is compared to the symversion attribute of the components in the schematic. If the symversion attributes are different, the symversion attribute is exposed on the schematic for those symbols effected. Note that:

Show/Hide Inv Text (en)

Edit | Show/Hide Inv Text is most appropriate when creating or editing symbols, to view or hide the text for all of the symbol’s invisible attributes.
Make Inv Text Vis is most appropriate when adding symbols to schematics, to view the text for the symbol’s modifiable invisible attributes.
Edit | Show/Hide Inv Text toggles between making all invisible text visible and hiding all invisible text. When selected, all objects in the symbol are effected.
Visible text always remains visible.
A symbol has the following potential attributes :

Not all attributes need to be used to define a symbol (see the discussion of Appendix A -- Heavy vs Light Symbol Libraries). The gschem default is to define symbols as “light”, indicating that the symbol includes as few attributes as necessary to describe the symbol. “light” symbols depend on the designer attaching additional descriptive attributes to the symbol when the symbol is placed on the schematic. For example: a “light” symbol for a resistor might include just the graphic for a resistor, its pin attributes, and the “refdes” attribute. This describes a resistor. It would be the designer’s responsibility, after the resistor has been placed on the schematic, to add the “value” and “footprint” attributes appropriate for the specific resistor in the circuit. A “heavy” symbol includes more descriptive attributes. Using “light” vs. “heavy” symbols is up to the designer.
A symbol’s attributes may be flagged as either visible or invisible. Attributes are flagged as invisible to reduce the clutter around a symbol on the schematic.
When creating or editing the symbol, and changing a visible attribute to an invisible attribute, the attribute can not be viewed during further editing of the symbol. It becomes difficult to place attribute text. To view both the visible and invisible text, select Edit | Show/Hide Inv Text.
When a symbol is instantiated on a schematic as a component, only the symbol’s visible attributes are promoted to the component. For example: if a resistor’s symbol defines “refdes” as the only visible attribute defined in the symbol, the only attribute that the component contains is the “refdes” attribute). Those attributes not included in the symbol definition may be added at the schematic level, component-by-component.
This operation is useful when drawing/debugging symbols.
When hidden text is visible, “Show Hidden” will appear on the status-bar in the lower right.

Make Inv Text Vis (ev)

Edit | Make Inv Text Vis is a quick method of making all of a component’s invisible attributes visible. The same effect can be accomplished by double-clicking on the component and marking all of the entries in the Attributes listbox as “Vis?" (i.e., visible).
To Make Inv Text Vis for a component:

The attributes that had been hidden are displayed.
To hide the attributes again, you need to double-click the component to bring up it’s “Edit Attributes” dialog box, and explicitly place a check for each attribute you want hidden.

Buffer

gschem supports 5 copy/cut/paste buffers which are visible across all opened pages and windows.

Copy into 1/2/3/4/5 (yc)

To copy something into a buffer:

  1. Select the objects you want to copy.
  2. Select Buffer/Copy/Copy into buffer #.

Cut into 1/2/3/4/5 (yu)

Cut is like copy in that it removes the objects from the schematic

Paste from 1/2/3/4/5 (yp)

To paste a buffer into the current schematic:

  1. Fill the buffer using the above Copy or Cut.
  2. Go to the new schematic page/window.
  3. Select Buffer/Paste/Paste from buffer #.
  4. Click the first mouse button to pick an anchor point.
  5. Move the mouse to the final spot.
  6. Click the first mouse button again.

View

Redraw (vr)

View | Redraw re-paints the current window.
This is useful when you have mouse/component/line/text etc… droppings left over from a previous action. It is also useful when you want to update all visual connectivity cues.

Pan (x)

View | Pan lets you change the focus of the display.
To pan the display:

To pan the display using the shortcut is much simpler, simply place the mouse pointer where you want the display centered and type “x”. The display will jump to the mouse’s location.
Pan behavior is configurable. The system-gschemrc file defines:

(third-button "popup")

If you override the system-gschemrc’s default, of popping up a menu when the third mouse button is clicked, by adding:

(third-button "mousepan")

to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, the third mouse button (i.e., the right mouse button on scroll-wheel mice) will allow you to pan the schematic by holding down the third mouse button and dragging.
The system-gschemrc file also defines:

(fast-mousepan "enabled")

If you override the system-gschemrc’s default by adding:

(fast-mousepan "disabled")

to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, text will be displayed properly when the third mouse button is held down while dragging. The (third-button “mousepan”) setting must also be applied for this to work. Disabling fast-mousepan adversely effects rendering speed while panning on large “complicated” schematics.
The system-gschemrc file also defines:

(zoom-with-pan "enabled")

If you override the system-gschemrc’s default by adding:

(zoom-with-pan "disabled")

to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom in/out, the zoom will NOT center on the mouse pointer, effectively removing the pan feature of the zoom in/out operations.

Zoom Box (w)

View | Zoom Box allows you to draw a box around a part of the gschem window and zoom in.
To use View | Zoom Box:

To use View | Zoom Box by typing the equivalent shortcut (i.e., “w”) is more convenient. Simply position the mouse pointer at one corner of the zoom box, then type “w”. The zoom box will start immediately using the current mouse location as the first corner of the box.
View | Zoom Box will attempt to zoom to the requested area, but some boxes are not legal and gschem will do it’s best to zoom the requested area.

Zoom Extents (ve)

View | Extents will zoom the display to fit all of the placed objects into the current window.
To view all of the current window’s objects:

Typing the View | Extents shortcut (i.e., “ve”) is particularly convenient for those that have learned to navigate the schematics using the shortcuts.

Zoom In (z)

View | Zoom In zooms the display in. The current center of the window is the center of the new window. This command zooms in by a factor.
To zoom in:

The (zoom-with-pan “enabled”) configuration setting in the gschemrc files effects the operation of the zoom in shortcut (i.e., “z”). The default system-gschemrc setting for:

(zoom-with-pan "enabled")

enables zooming in, using the mouse pointer’s location as the new center of the window. If this changed to:

(zoom-with-pan "disabled")

in either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom in, the zoom will NOT center on the mouse pointer but will center on the current center of the window, effectively removing the pan feature of the zoom in operation.
To zoom in using the shortcut:

Typing “z” is particularly convenient for those that have learned to navigate the schematics using the shortcuts.

Zoom Out (Z)

View | Zoom Out zooms the display out. The current center of the window is the center of the new window. This command zooms out by a factor.
To zoom out:

The (zoom-with-pan “enabled”) configuration setting in the gschemrc files effects the operation of the zoom out shortcut (i.e., “z”). The default system-gschemrc setting for:

(zoom-with-pan "enabled")

enables zooming out, using the mouse pointer’s location as the new center of the window. If this changed to:

(zoom-with-pan "disabled")

in either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom out, the zoom will NOT center on the mouse pointer but will center on the current center of the window, effectively removing the pan feature of the zoom out operation.
To zoom out using the shortcut:

Typing “Z” is particularly convenient for those that have learned to navigate the schematics using the shortcuts.

Zoom Full (vf)

View | Zoom Full will zoom the display to the maximum possible displayable view.

To view the maximum displayable area:

The window contents will immediately change to show the maximum possible displayable view.

To view the maximum displayable area using the keyboard shortcut (i.e., “vf”):

The window contents will immediately change to show the maximum possible displayable view.

View | Zoom Full is useful if you like to put your working notes outside the titleblock for you schematic, for example. Just remember, these notes would now be considered part of the windows extents, so if you were to View | Extents, the display would show the titleblock and your working notes.

Page

Manager... (pm)

New (pe)

Revert (pr)

Close (pc)

Discard (pd)

Add

Component... (i)

Add | Component… opens a dialog box which lets you place components from the component libraries.
To place a component:

If a component name is already selected, hitting apply and moving the mouse into the main window will allow you to place that component again.
You can rotate the component before you place it by clicking the middle button. For every button click, the component will be rotate counter-clockwise 90 degrees.
Care has been taken to give components descriptive names in the libraries, though it is sometimes difficult to determine what the component really represents from its name.
For example: in the analog library there are four capacitor entries:

It helps to preview the symbol in the “Select Component” dialog box before selecting and placing the symbol.

Net (n)

Net draws a net segment.
A net is typically a contiguous set of line segments between two pins, though it is possible to draw nets between a pin and a point on another net, or between two nets.
For example, the following diagram shows 3 net segments:

nets.jpg

Note the small red segment at the end of the resistor’s pins. All pins in gschem have this red segment. This is the connectivity cue for the pin. It is sometimes difficult to “grab” this attachment point when drawing nets, you may need to zoom in on the pin. To zoom in, press the “z” key. To zoom out, press the “Z” (i.e., shift-z) key.
To begin drawing a net using the menu:

To begin drawing the net using the shortcut:

To continue drawing the net segment(s):

Press the last mouse button or ESC to cancel any net in progress.
If the net is cancelled you are automatically placed in Select Mode. You must pick Add | Net again or type the shortcut to add more nets.
You cannot connect a net segment to the middle of a non-orthogonal net.
The boxes at the end of the nets are connectivity cues. Red boxes signify a dangling net (not connected to anything).
Filled circles are midpoint connections/junctions. These cues are drawn automatically and are an indicator of electrical connectivity.
See Electrical Connectivity for more information.

Bus (u)

Add | Bus is basically the same as Add | Net, except that it draws buses.
Buses are very new and there are many aspects which are not defined yet, so keep that in mind as you uses buses. More to be added here eventually.

Attribute... (aa)

Add | Attribute… is appropriate when creating or editing symbols, to add a new attribute.
Add | Attribute… brings up the “Single Attribute Editor” dialog box. This dialog box is ONLY used to add attributes. It does not display or manipulate already placed attributes.
An attribute is nothing more than a text item which is in the form name=value (there cannot be any spaces to the left or right of the name,value pair). It can be either attached to an object, or unattached.
To add an unattached attribute (e.g., “comment”, “documentation”, etc.) to the symbol:

If you want to attach an attribute to an object, then select the desired object first and then Add | Attribute… from the pull-down menu. If you click on an object which has attached attributes, the attached attributes should be selected as well.
If you select Add | Attribute… off of the pull down menus then you do not have much control as to where the attribute gets placed (it gets places either at the lower left hand corner of the object extents or at the origin of any selected object). However, if you use the hot key (i.e., “aa”) then the current mouse position is used as the anchor point for the attribute item.
You cannot place an incomplete attribute (an attribute without a name and value).
Please see Components/Symbols/Objects/Attributes for more info on how to use attributes.

Text... (at)

Add | Text… displays the “Text Entry…” dialog box. To place text:

If you leave the Add | Text… dialog box open you can place the same text item again and again by just clicking Apply (or pressing Enter) and moving the mouse into the main window.
The following settings in the system-gschemrc file, the user’s ~/gschemrc file, or the local ‘pwd’/gschemrc file control how text is displayed:

; text-origin-marker : Controls if the text origin markers are displayed.
; text-size : Sets the default text size.
; text-caps-style : Sets the default caps style used for the display of text
; output-text : Controls how text is rendered to postscript

Text which is placed will be automatically capitalized. Please see the Resource file section below on how to control this behavior.
To cancel a text place press the last mouse button or the ESC key.
If you create text in the form name=value, then you are creating attributes. gEDA allows for general attributes to be free floating (or unattached). It is a good idea to change the color of these floating attributes to the current attribute color (which is also called the attached attribute color) to signify that this text item is an attribute.
You can rotate the text before you place it by clicking the middle button. For every button click, the text will be rotate 90 degrees.

Line (l)

Add | Line draws a single line segment.
To draw a line:

Add | Line draws a line in the same fashion as drawing nets with the following exceptions:

To cancel a line in progress, press the last mouse button or type the ESC key.

Box (b)

Add | Box draws a box. To draw a box:

To cancel a box in progress, press the last mouse button or type the ESC key.
A box has no electrical significance.

Circle (ai)

Add | Circle creates a circle.
To draw a circle:

To draw a circle (typing the shortcut), same as above except that you position the mouse pointer to the center-point of the circle before you type the shortcut.
To cancel a circle in progress, press the last mouse button or the ESC key.

Arc (ar)

Add | Arc draws an arc. To draw an arc:

The Start Angle can be positive or negative. The degrees are specified using the standard Cartesian coordinate system. The degrees of sweep can be positive or negative.
To cancel an arc in progress (while rubberband the radius), press the last mouse button or the ESC key or press the Cancel button in the arc dialog box.

Pin (ap)

Add | Pin adds a pin.
Though you can Add | Pin while entering a schematic, it only makes sense to create pins while creating or editing symbol files.
To draw a pin:

To cancel a pin in progress, press the last mouse button or the ESC key.

Picture... (ag)

Add | Picture places a graphic in the schematic. To draw a picture:

To cancel a picture in progress, press the last mouse button or type the ESC key.
A picture has no electrical significance.

Hierarchy

Down Schematic (Hd)

Hierarchy | Down Schematic shifts the focus from the current schematic to a sub-schematic.
Go down into a symbol, opening up any underlying schematics. Basically this will open up an underlying schematic of the selected component if it exists in the source library search path. See the Resource File section on how to define this path.
There are currently two ways of specifying that a symbol has an underlying schematic or schematics:

  1. The underlying schematic must have the same name as the symbol but have a .sch extension and must follow the _# suffix naming convention. See the Files section below on this convention.
  2. Attach an attribute to the symbol called source=filename.sch filename.sch is not a path to the symbol, but rather the basename (last file in the path specifier) of the symbol path. The underlying schematic will still be searched in the source-library path. You can specify multiple source= attributes. The underlying schematics will be opened in the order that the source= attribute is found.

If there multiple underlying schematics, they will be loaded. Movement between the schematic pages is restricted (to the same level of the same set of underlying schematics) unless the rc keyword enforce-hierarchy is modified to allow for a freer hierarchy traversal mode. See the Resource File section for more info.
It is also recommend that you maintain unique names for the various levels (when using the source= attribute) to avoid possible confusion. The hierarchy mechanisms are fairly new so expect some odd behavior (and please report it)

Down Symbol (Hs)

This option will open up the symbol of the selected component.
Once the symbol is open, the user can edit it and save it.
At this time, the toplevel schematic will not see the symbol change unless the toplevel schematic is reloaded or File/Revert is executed. This will be fixed eventually.

Up (Hu)

This option will move up the hierarchy (if there are pages above the currently displayed page).

Documentation (Ho)

Open any documentation available for the selected symbol/component.
The job is handed over to “gschemdoc”, which makes a best-effort attempt of finding relevant documentation.
The documention would normally be in PDF, HTML, text or image format, but gschemdoc tries to be as transparent as possible on this account.
First and foremost, the attribute “documentation=" is assumed to point to the documentation. This attribute should either be the filename (basename) of the document, or it should be a complete URL.
If it is a filename, and the file is found locally (in /usr/share/gEDA/documentation or otherwise), the relevant viewer will be initiated. Otherwise, a Google search for the document will be initiated.
If there is no documentation attribute, the attributes “device” and possibly “value” will be consulted in much the same way as for “documentation”. File searches will be made in forms of filenames like “device-value.pdf” and “device.pdf”.
Failing that, the file name for the symbol itself will be used as basis for the search.

Attributes

Attach (ta)

The Attach command allows you to take a text item (in the proper form; name=value) and attach it to another object.
To use Attributes/Attach:

  1. Select the object which will receive the attributes
  2. Select the text object(s) which will be attached to the above object
  3. Pick or type the shortcut for Attributes/Attach

The order of the sequence of selecting the object and then the text items is important; gschem will not allow you to select the text items first and then the object. After going through the above sequence the text item will turn yellow (or the current attached attribute color) signifying that the text item is an attached attribute.
You cannot attach a single attribute to several different objects. You cannot attach non-text items as attributes.

Detach (td)

Detach allows you to deassociate attributes from objects.
To deselect an object of all attributes:

  1. Select the object of interest
  2. Pick or type the shortcut for Attributes/Detach

All the attached attributes (even if they are not selected) will be detached from the object. This behavior is probably broken and will eventually be fixed (so that only selected attributes are detached).
When you detach attributes then they turn red (or the current detached attribute color). This color changes allows you to spot text which was an attribute and is now dangling (unattached).

Show Value (tv)

These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the value of the attribute, but there are circumstances where seeing the name and value (or maybe just the name) would be useful.
To use the options:

  1. Select the attribute(s) of interest
  2. Pick or type the shortcut for Attributes/Show *

The text item(s) should immediately change.
These operations only work on text items which are in the form name=value

Show Name (tn)

These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the value of the attribute, but there are circumstances where seeing the name and value (or maybe just the name) would be useful.
To use the options:

  1. Select the attribute(s) of interest
  2. Pick or type the shortcut for Attributes/Show *

The text item(s) should immediately change.
These operations only work on text items which are in the form name=value

Show Both (tb)

These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the value of the attribute, but there are circumstances where seeing the name and value (or maybe just the name) would be useful.
To use the options:

  1. Select the attribute(s) of interest
  2. Pick or type the shortcut for Attributes/Show *

The text item(s) should immediately change.
These operations only work on text items which are in the form name=value

Toggle Visibility (tt)

This operation allows you to toggle the visibility of attributes.
To use this option:

  1. Select the text item(s) of interest
  2. Pick or type the shortcut for Attributes/Toggle Vis

The text item(s) should change their visibility immediately.
If you make an attached attribute invisible, then you can simply select the parent object and select Toggle Vis and the attribute will be come visible (likewise any visible attributes attached to that object will become invisible).
If you make a free floating (unattached) attribute invisible, then the only way to make it visible (and all other invisible attributes) is to use the Edit/Show Hidden Text option.

Find Specific Text... (t shift-f)

This operation allows you to find a text element in a schematic.

To use this operation:

  1. open the dialog and enter the substring you want to search for
  2. select whether you only want to search in the current page or in the whole hierarchy of a multipage schematic
  3. press the find button

If the text is found in the schematic, gschem will zoom and pan to that element. Pressing the find button again will find the next matching text element. If no more text is found the dialog closes.

Note: gschem will find hidden text elements, too. If you don’t see the found element, try to show the hidden text.

Hide Specific Text... (th)

This operation allows you to hide text elements.

To use this operation:

  1. open the dialog and enter your text string
  2. press the apply button

gschem will hide all text elements that start with the given search string.

This operation is useful if you like to hide pintype and pinseq attributes when creating symbols.

Show Specific Text... (t shift-h)

This operation allows you to show hidden text elements.

To use this operation:

  1. open the dialog and enter your text string
  2. press the apply button

gschem will unhide all hidden text elements that starts with the given search string.

This operation is useful if you like to see only one specific attribute in the whole schematic (the footprint attribute for example). Use this operation together with the Hide Specific Text operation.

Autonumber Text... (tu)

This operation allows you to renumber text elements in your schematics and symbols.

You can use it to:

To use that operation:

  1. select or enter the text elements you like to renumber in the search for entry. searchtext with a "?" at the end will match trailing "?" and trailing numbers in the text elements you are searching for. searchtext with a “*” at the end will match the given searchtext, followed by arbitrary text and followed by a trailing "?" or trailing numbers.
  2. the autonumber text in option specifies where to search for the given searchstring.
  3. the skip numbers found in option specifies in which region you don’t want have duplicate numbers. Example: If you renumber your components you usually want uniq numbers on a page or even uniq number in the whole hierarchy of a multipage schematic. If you renumber netnames of a bus you usually want to apply the new numbers only to selected net elements. Thus you can have multiple equal netnames on a schematic sheet.
  4. the overwrite existing numbers option specifies whether you only want to number unnumbered elements or if you like to renumber elements too.
  5. The starting number entry allows you to specify the start number you like. It is common to number each schematic sheet starting with numbers like 100, 200 and so on. For bus netnames you may need numbers starting at 8, 16.
  6. The sort order tells in which direction you like to number your elements. For components you usually use the diagonal, the top to bottom or the left to right option. For bus netnames you may need right to left and bottom to top numbering. The file order means that the found text elements are not sorted before renumbering them. The fileorder is usually the order you have placed the objects to your sheet.
  7. the remove numbers options is a special option. It removes all numbers from the text elements you have selected in the Scope section of the dialog.
  8. the automatic slotting option is the second special option. When renumbering components it will add the slot attribute to slotted components like logik gates.

Pressing the apply button will start the autonumbering action.

Options

Text Size... (ot)

Options | Text Size… pops up a dialog box which allows you to specify the text size of all text (including attributes placed with the Add/Attribute… dialog box).
The text size is in points (1/72”). The default text size is 10 point text. The smallest text size is 2 points.

Toggle Grid On/Off (og)

Options | Toggle Grid On/Off toggles the visible grid.

Toggle Snap On/Off (os)

Options | Toggle Snap On/Off toggles the snap. Be very careful using this. Connections between pins and nets (and nets to nets) depends on being exactly connected. Turning of the grid will almost guarantee that nets/pins do not connect.
Before you translate a symbol using Edit/Symbol Translate, make sure the snap is on.
When snap mode is off, the text “Snap Off” will appear in the lower, righthand corner.

Snap Grid Spacing... (oS)

Options | Snap Grid Spacing… brings up a dialog box which allows you to change the snap grid spacing (not the grid spacing). The units for this spacing are mils.
Before you translate a symbol using Edit/Symbol Translate, make sure this spacing is set to 100.

Toggle Outline/Box (oa)

Options | Toggle Outline/Box toggles between drawing the outline of the current selection or just drawing a box when doing moves/copies/component and text places. The outline mode looks better, but tends to be significantly slower than using the box (bounding box) mode.

Toggle Net/Rubberband (or)

Options | Toggle Net/Rubberband …..????

Show Log Window (ol)

Options | Show Log Window displays the log window if it has been closed or disabled from being displayed when you start up gschem.

Show Coord Window... (oc)

Options | Show Coord Window… displays a pop-up window that displays the coordinates of the mouse pointer on the schematic. Useful for accurately placing objects.

Help

About... (ha)

Every GUI application needs an Help | About… feature, to display:

Manual... (hm)

Help | Manual… brings up the “gEDA/gaf Documention” web-page installed on this computer. Very useful for accessing the various documentation available for the gEDA/gaf applications.

Hotkeys... (hh)

Help | Hotkeys… lists the current hotkeys (a.k.a., shortcuts, a.k.a., keyboard accellerators).

Component... (Ho)

If you select a component on the schematic, and select Help | Component…, gschem uses the gschemdoc script to do its best job finding some documentation appropriate for the component:

Appendix A -- Heavy vs Light Symbol Libraries

A short discussion of Light Symbol Libraries as the default for gschem, and the option to build your own Heavy Symbol Libraries.

Appendix B -- Printing Schematics and Symbols

To be supplied…

Appendix C -- Writing guile Scripts

To be supplied…

Appendix D -- I Want To Build A Printed Circuit Board

gschem is used for two primary design workflows:

The following guidelines will assist you in developing quality designs intended for use by applications that support the creation of Printed Circuit Boards:

The following on-line tutorials are an excellent method for the beginner to learn the gEDA Tools Suite design workflow resulting in a PCB:

Appendix E -- I Want To Simulate My Design

gschem is used for two primary design workflows:

The following guidelines will assist you in developing quality designs intended for simulation:

The following on-line tutorials are an excellent method for the beginner to learn the gEDA Tools Suite design workflow resulting in a SPICE simulation:

Appendix F -- Change gschemdoc User-Defined Preferences

As installed, the gschemdoc utility script is used by gschem to:

The list of application launchers that gschemdoc uses are defined in the {binary-install-path}/bin/gschemdoc file:

#
# these may be changed to suit local preferences
#
CANDIDATE_BROWSER="galeon mozilla phoenix netscape netscape-navigator opera firefox konqueror"
CANDIDATE_PDFREADER="xpdf acroread ggv gv"
CANDIDATE_LOCATE="slocate locate"

To select a different application launcher, simply edit the {binary-install-path}/bin/gschemdoc file, find the above lines, and move your favorite application to the beginning of the list. For example, to use firefox as your preferred browser, move it to the beginning of the CANDIDATE_BROWSER= list, to use acroread (Adobe’s Acrobat Reader) as your preferred PDF reader, move it to the beginning of the CANDIDATE_PDFREADER= list, and to use locate as your preferred filesystem search utility, move it to the beginning of the CANDIDATE_LOCATE= list.

Appendix G -- Breaking a Large Symbol Into Smaller Symbols

To be supplied…

Appendix H -- Definition of Terms

Some terms used in the art of schematic capture:

attribute
A text item which is in the form name=value. It can be either unattached or attached.
buffer
component
Also know as part. The equivalent of an [electronics] device, as one may place on a printed circuit board. Components are instances of a symbol placed on a schematic.
device
Also known as “package”. The equivalent of an [electronics] device, as one may place on a printed circuit board.
dialog box
embedded component
A component whose definition is saved as part of the schematic’s file.
footprint
Also known as a land pattern. The surface space occupied by a component/package/part.
gEDA/gaf
gschem is a component of the gEDA/gaf set of tools, which tend to integrate together in the development and maintenance of schematics and symbols. The term “gaf” stands for “gEDA and friends”).
grip
guile
GNU Guile is an interpreter for Scheme, a version of Lisp.
HDL
Hardware Description Language (e.g., VHDL, Verilog, etc.). Used to simulate or document a device.
hierarchical
The concept that designs can contain nested levels of schematics, so that all the circuit doesn’t need to be placed on a single sheet.
land pattern
Also known as a footprint. The surface space occupied by a structure or device.
library
A collection of symbols.
line
A straight drawing element, connecting two points. On the schematic it has no electrical significance. In a symbol, a line is part of the symbol’s graphic elements.
model
A description of how a device behaves. Most often this is a SPICE model. The model is defined in gschem, but used in subsequent applications such as ngspice, gnucap, etc.
net
A net connects two or more pins on a schematic, and is made up of segments. The net’s equivalent is a “wire” or “trace” on the printed circuit board.
object
A line, circle, pin, net, box, bus, text/attribute, or picture.
package
Also known as device. The equivalent of an [electronics] device, as one may place on a printed circuit board.
page
Also known as a schematic’s sheet.
part
Also know as component. The equivalent of an [electronics] device, as one may place on a printed circuit board.
project
A collection of schematics, custom symbols, models, documentation, etc.
segment
Part of a net. A segment has two end-points, or “grips”.
schematic
A page/sheet with electronics symbols, text, and drawing elements (i.e., lines, circles, boxes, etc.) representing a diagram of an electrical or mechanical system.
series
A collection of schematics which share a common basename (e.g., schematic_1.sch, schematic_2.sch, schematic_3.sch, etc.). The series basename ties schematics together.
slotted device
Also known as a slotted package. A physical [electronics] device consisting of multiple identical components (e.g., the 7400 quad NAND device consists of 4 identical NAND gates).
source
A schematic, HDL code, or model which implements, describes, or documents some aspect of the project.
symbol
A collection of objects. The objects may have attributes attatched (i.e., associated) with them. There may also be attributes attached (i.e., associated) to the symbol itself (i.e., not specifically associated with an object).
sheet
Also known as a schematic’s page.
trace
The equivalent of a wire on a printed circuit board.
window
workflow
The process of designing. Usually includes continuous review and re-design, until it works. In the gEDA Tools Suite design workflow, multiple applications are used. One application typically is followed by another. The flow of data collected and how this data effects the design is considered the workflow.

~~DISCUSSION~~