pcb-rnd knowledge pool
Terminology: netlist, import schematics
netlist by Tibor 'Igor2' Palinkas on 2020-11-16 | Tags: howto, netlist, import, schematics |
Abstract: This node explains the terms "netlist", "import netlist", "import schematics" and how the schematics-to-PCB workflow works.
Terminology
- A schematics doesn't have a netlist in it: it has a lot more complex data about networks and components.
- A netlist can be derived and exported from a schematics.
- A PCB board file (layout file), normally contains a netlist (for checking connections).
- A forward annotation is when data from the schematics is sent to the PCB layout program.
Forward annotation
Sending a netlist only between the schematics and the PCB layout tool is not enough, some metadata is also required from the schematics, such as footprint names.
This is how it works in most EDA tools:
- There is the schematics, which has a lot of symbol data, schematics drawing geometry, wiring geometry, title boxes, text, documentation.
- There is a netlist format, which is a very much simplified digest of the above, something like 1..5% of all the above go in the netlist. There is no one netlist format, there are dozens of netlist formats: one for spice, one for kicad's pcbnew, one for protel, etc.
- There is the PCB editor which needs a netlist and footprint information; this is still a tiny fraction of all information in schematics, so most PCB editors, including pcb-rnd, will not read schematics directly but expects a netlist as input for the forward annotation.
Most netlist format lacks footprint info (mostly because SPICE and other simulators did not need it). In pcb-rnd, we prefer the tEDAx netlist format, which does have the netlist and footprint information (and some more). Recent versions of gschem and lepton both have support for tEDAx. From other schematics editors pcb-rnd imports using the custom layout targeted netlist format the given schematics editor invented.
How forward annotation works
The terms are somewhat confusing. When we say "import schematics", we really mean "import netlist+metadata". We can't call it just "import netlist" because that term is traditionally used for the pure netlist imports which is a list of nets and pin connections, without any footprint info."Import schematics", with some simplification, that really means "import netlist and footprint and some other metadata derived/exported from schematics". The derivation is done by the schematics software, as that's the one that can read the schematics. For gschem that's gnetlist, for lepton-eda that's lepton-netlist. For eeschema (kicad), tinycad, ltspice, that's some clicking on the GUI for a "netlist" export.
This is how a forward annotation works under the hood:
1. The schematics editor or an utility of the schematics editor (e.g. gnetlist or lepton-netlist) is ran to produce a netlist file (or more likely a netlist+metadata file, like a "tEDAx netlist")
2. pcb-rnd loads this file and upgrades the existing board file's netlist, loads missing/new footprints, removes footprints from the board that got removed from the schematics, updates attributes, etc.
This is automated by the import schematics feature.