start => gnetlist_ug

« Input & output files | gEDA gnetlist User Guide | Basic netlisting »

## Netlist backends

Normally, gnetlist generates a netlist in two steps.

1. The gnetlist frontend uses the human-readable schematic files to construct an intermediate form of the design.
2. A netlist backend is used to extract information from the intermediate form and write it out to disk.

Most backends are used to write out electrical connectivity information in a machine-readable format for use by other tools. For example, the “liquidpcb” backend is used to generate a netlist to use when designing a circuit board with LiquidPCB, and the “spice-sdb” backend is often used to create netlists for use with the SPICE simulator.

Backends may have other uses, however. For example, the “bom2” backend is used for generating a list of components used (a “Bill of Materials”), and the “drc2” backend carries out “design rule checking” (i.e. checking a design for commonly-made errors and potential problems).

A summary of all the netlist backends distributed with gnetlist is provided in the gnetlist manpage (which you can view by running `man gnetlist`).

If none of the distributed backends do what you need, you can write and install your own! For more information, see the Scripting a gnetlist backend in Scheme tutorial.

### Specifying a backend

Use the `-g` option to indicate which backend you would like gnetlist to run. For example, to run the “bom2” backend:

    gnetlist -g bom2

### Listing backends

To view a list of installed backends, use the `--list-backends` command-line option:

    gnetlist --list-backends

This will print a list of all the backends that gnetlist can find.

### Interactive mode

An alternative to running a backend is to use interactive mode. When the `-i` option is used, gnetlist creates the intermediate form from the schematic files, and then enters a Scheme REPL (Read-Eval-Print Loop). This allows you to run Scheme commands and inspect the output, which can be useful for troubleshooting and to enable some advanced netlist processing techniques.