Netlist

Netlists usually provide nothing more than instances, nodes, and perhaps some attributes of the components involved.

[4] If they express much more than this, they are usually considered to be a hardware description language such as Verilog or VHDL, or one of several languages specifically designed for input to simulators or hardware compilers (such as SPICE analog simulation netlists).

Each terminal has a name, and in continuing the vacuum cleaner example, they might be "Neutral", "Live" and "Ground".

In the vacuum cleaner analogy, one might have a vacuum cleaner definition with its ports, but now this definition would also include a full description of the machine's internal components and how they connect (motors, switches, etc.

Hierarchical designs can be recursively "exploded" ("flattened") by creating a new copy (with a new name) of each definition each time it is used.

If the design is highly folded, expanding it like this will result in a much larger netlist database, but preserves the hierarchy dependencies.

The paths to every primitive, taken together, comprise a large but flat netlist that is exactly equivalent to the compact hierarchical version.

These data may have been extracted from a physical design, and might provide extra information for more accurate simulations.

Suppose a definition of a capacitor has an associated attribute called "Capacitance", corresponding to the physical property of the same name, with a default value of "100 pF" (100 picofarads).

If a great number of attributes end up being the same as on the definition, a great amount of information can be "inherited", and not have to be redundantly specified in the netlist, saving space, and making the design easier to read by both machines and people.