electronic design Electronic may refer to: *Electronics The field of electronics is a branch of physics and electrical engineering that deals with the emission, behaviour and effects of electrons The electron is a subatomic particle In physical scienc ...
, a netlist is a description of the connectivity of an
electronic circuit An electronic circuit is composed of individual electronic component An electronic component is any basic discrete device or physical entity in an electronic system Electronic may refer to: *Electronics, the science of how to control electr ...

electronic circuit
. In its simplest form, a netlist consists of a list of the
electronic component An electronic component is any basic discrete device or physical entity in an electronic system Electronic may refer to: *Electronics Electronics comprises the physics, engineering, technology and applications that deal with the emission, ...
s in a circuit and a list of the
node In general, a node is a localized swelling (a "knot A knot is an intentional complication in Rope, cordage which may be practical or decorative, or both. Practical knots are classified by function, including hitches, bends, loop knots, and splic ...
s they are connected to. A network (net) is a collection of two or more interconnected components. The structure, complexity and representation of netlists can vary considerably, but the fundamental purpose of every netlist is to convey
connectivity information Connectivity may refer to: Computing and technology * Connectivity (media), the ability of the social media to accumulate economic capital from the users connections and activities * Internet connectivity, the means by which individual terminals, ...
. Netlists usually provide nothing more than instances, nodes, and perhaps some attributes of the components involved. If they express much more than this, they are usually considered to be a
hardware description language In computer engineering Computer engineering (CoE or CpE) is a branch of engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, veh ...
such as
Verilog Verilog, standardized as IEEE 1364, is a hardware description language In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and m ...
VHDL The VHSIC Hardware Description Language (VHDL) is a hardware description language In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic ci ...
, or one of several languages specifically designed for input to
simulator A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of models; the model represents the key characteristics or behaviors of the selected system or process, whereas the simulat ...

s or
hardware compilerA silicon compiler is a software system A software system is a system of intercommunicating software component, components based on forming part of a computer system (a combination of Computer hardware, hardware and software). It "consists of a numbe ...

Types of netlists

Netlists can be: * Physical (based upon physical connections) or logical (based upon logical connections) ** For example, connecting three components through one terminal of one of those components would be considered a direct ''logical'' connection, whereas each would be discrete ''physical'' connections. * Instance-based (clustered about a component instance) or net-based (exhaustive list of connections to a particular net) ** Flat (all connections are shown) or hierarchical (connections are grouped in some way; such as which physical board or layer they are connected to. Such netlists may in addition be either ''folded'', hiding data beneath a given level of abstraction, or ''unfolded'', being exhaustive and thus potentially equivalent in content to flat netlists.)

Contents and structure of a netlist

Most netlists either contain or refer to descriptions of the parts or devices used. Each time a part is used in a netlist, this is called an "instance". These descriptions will usually list the connections that are made to that kind of device, and some basic properties of that device. These connection points are called "terminals" or "pins", among several other names. An "instance" could be anything from a
MOSFET The metal–oxide–semiconductor field-effect transistor (MOSFET, MOS-FET, or MOS FET), also known as the metal–oxide–silicon transistor (MOS transistor, or MOS), is a type of insulated-gate field-effect transistor that is fabricated by th ...

transistor or a
bipolar junction transistor A bipolar junction transistor (BJT) is a type of transistor upright=1.4, gate Candi bentar, a typical Indonesian gate that is often found on the islands of Java">Indonesia.html" ;"title="Candi bentar, a typical Indonesia">Candi benta ...
, to a
resistor A resistor is a passive Passive may refer to: * Passive voice, a grammatical voice common in many languages, see also Pseudopassive (disambiguation), Pseudopassive * Passive language, a language from which an interpreter works * Passivity (b ...

, a
capacitor A capacitor is a device that stores electric charge in an electric field An electric field (sometimes E-field) is the physical field that surrounds electrically-charged particle In physics Physics (from grc, φυσική (ἐπ ...

, or an
integrated circuit An integrated circuit or monolithic integrated circuit (also referred to as an IC, a chip, or a microchip) is a set of electronic circuit 200px, A circuit built on a printed circuit board (PCB). An electronic circuit is composed of indiv ...

integrated circuit
chip. Instances have "terminals". In the case of a vacuum cleaner, these terminals would be the three metal prongs in the plug. Each terminal has a name, and in continuing the vacuum cleaner example, they might be "Neutral", "Live" and "Ground". Usually, each instance will have a unique name, so that if you have two instances of vacuum cleaners, one might be "vac1" and the other "vac2". Besides their names, they might otherwise be identical. Networks (nets) are the "wires" that connect things together in the circuit. There may or may not be any special attributes associated with the nets in a design, depending on the particular language the netlist is written in, and that language's features. Instance based netlists usually provide a list of the instances used in a design. Along with each instance, either an ordered list of net names is provided, or a list of pairs provided, of an instance port name, along with the net name to which that port is connected. In this kind of description, the list of nets can be gathered from the connection lists, and there is no place to associate particular attributes with the nets themselves.
SPICE A spice is a seed A seed is an embryonic ''Embryonic'' is the twelfth studio album by experimental rock band the Flaming Lips released on October 13, 2009, on Warner Bros. Records, Warner Bros. The band's first double album, it was releas ...

is an example of instance-based netlists. Net-based netlists usually describe all the instances and their attributes, then describe each net, and say which port they are connected on each instance. This allows for attributes to be associated with nets.
EDIF EDIF (Electronic Design Interchange Format) is a vendor-neutral format based on S-Expression In computer programming Computer programming is the process of designing and building an executable computer program to accomplish a specific computi ...

is probably the most famous of the net-based netlists.


In large designs, it is a common practice to split the design into pieces, each piece becoming a "definition" which can be used as instances in the design. 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.), like a wiring diagram does. A definition which includes no instances is called a "primitive" (or a "leaf", or other names); whereas a definition which includes instances is "hierarchical". A "folded" hierarchy allows a single definition to be represented several times by instances. An "unfolded" hierarchy does not allow a definition to be used more than once in the hierarchy. Folded hierarchies can be extremely compact. A small netlist of just a few instances can describe designs with a very large number of instances. For example, suppose definition A is a simple primitive, like a memory cell. Then suppose definition B contains 32 instances of A; C contains 32 instances of B; D contains 32 instances of C; and E contains 32 instances of D. The design now contains 5 definitions (A through E) and 128 instances. Yet, E describes a circuit that contains over a million memory cells.


In a "flat" design, only primitives are instanced. 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. Given a hierarchical netlist, the list of instance names in a path from the root definition to a primitive instance specifies the single unique path to that primitive. The paths to every primitive, taken together, comprise a large but flat netlist that is exactly equivalent to the compact hierarchical version.


Backannotation is data that could be added to a hierarchical netlist. Usually they are kept separate from the netlist, because several such alternate sets of data could be applied to a single netlist. These data may have been extracted from a physical design, and might provide extra information for more accurate simulations. Usually the data are composed of a hierarchical path and a piece of data for that primitive or finding the values of due to interconnection.


Another concept often used in netlists is that of inheritance. 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). Each instance of this capacitor might also have such an attribute, only with a different value of capacitance. And other instances might not associate any capacitance at all. In the case where no capacitance is specified for an instance, the instance will "inherit" the 100 pF value from its definition. A value specified will "override" the value on the definition. 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.



Further reading

Stanford 2001 Electronic design automation