« Implicit pins | gEDA gnetlist User Guide | Command-line arguments »

## Configuring gnetlist

gnetlist loads a series of configuration files at start-up, if they exist:

1. The suite's system configuration file, called `$PREFIX/share/gEDA/system-gafrc`
2. The suite's user configuration file, called `$HOME/.gEDA/gafrc`
3. A `gafrc` file in the current working directory.
4. gnetlist's system configuration file, called `$PREFIX/share/gEDA/system-gnetlistrc`
5. gnetlist's user configuration file, called `$HOME/.gEDA/gnetlistrc`
6. A `gnetlistrc` file in the current working directory.

$PREFIX denotes the base installation directory for gnetlist (`/usr` on most systems), and $HOME denotes your home directory.

These files are scripts written in Scheme, and they are executed using a Scheme interpreter. This means that you can use the configuration files as a way of customising and extending gnetlist.

There are a very large number of options that affect the way gnetlist works, and only the most commonly-used are listed here. For a full list, see the `system-gnetlistrc` file installed with gEDA.

### Symbol and source libraries

When using gnetlist, it is very important that your symbol and source libraries are set up correctly. You will almost always want to put these settings in a suite configuration file (one of the ”`gafrc`” files) so that the same libraries are used by gschem and gnetlist. For an explanation of how to set up symbol and source libraries, see the gEDA gschem User Guide.

### Hierarchy processing options

When working with hierarchy, gnetlist renames nets and components based on where in the hierarchy they occur. You can configure how this “mangling” is carried out, and disable it if necessary.

By default, gnetlist appends names at each level of hierarchy together, using ”/” as the separator (so the component “U1” in the subcircuit “A3” becomes “A3/U1”). For component names (“refdes”), the `hierarchy-uref-order` and `hierarchy-uref-separator` functions can be used to change this. For example, to change the “refdes” mangling to prepend names at each level with the separator ”:”, you could use:

    (hierarchy-uref-order "prepend")
    (hierarchy-uref-separator ":")

Now “U1” in the subcircuit “A3” would be renamed to “U1:A3” by gnetlist.

The `hierarchy-uref-mangle` function can be used to turn off “refdes” mangling entirely:

    (hierarchy-uref-mangle "disabled")

This is very rarely a useful thing to do.

Similar settings exist for net names set using the ”`netname=`” attribute, and net names set using implicit pins and the ”`net=`” attribute.

- The `hierarchy-netname-order`, `hierarchy-netname-separator` and `hierarchy-netname-mangle` functions control ”`netname=`” mangling.
- The `hierarchy-netattrib-order`, `hierarchy-netattrib-separator` and `hierarchy-netattrib-mangle` functions control ”`net=`” mangling.

It is sometimes useful to turn off hierarchy processing entirely. You can do this with the `hierarchy-traversal` option:

    (hierarchy-traversal "disabled")

### Automatic net naming

You can control how gnetlist automatically names nets that are not named in the schematic files using the `unnamed-netname` function. gnetlist will add a unique number to the end of the string you provide. For example:

    (unnamed-netname "unnamed_net")

This would make gnetlist automatically give unnamed nets names of the form “unnamed_net12345”.