| << [[geda:gnetlist_ug:input_output_files|Input & output files]]  |  **[[geda:gnetlist_ug|gEDA gnetlist User Guide]]**     |  [[geda:gnetlist_ug:basic_netlisting|Basic netlisting]] >> |

===== Netlist backends =====

Normally, gnetlist generates a netlist in two steps.

  - The gnetlist frontend uses the human-readable schematic files to construct an intermediate form of the design.
  - 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 [[http://www.liquidpcb.org/|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'').

<note tip>If none of the distributed backends do what you need, you can write and install your own! For more information, see the [[geda:gnetlist_scheme_tutorial|Scripting a gnetlist backend in Scheme]] tutorial.</note>

==== Specifying a backend ====

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

<code>
gnetlist -g bom2
</code>

==== Listing backends ====

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

<code>
gnetlist --list-backends
</code>

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.