Netlist
Encyclopedia
The word netlist can be used in several different contexts, but perhaps the most popular is in the field of electronic design. In this context, a "netlist" describes the connectivity of an electronic design.
Netlists usually convey connectivity information and provide nothing more than instances, nets, and perhaps some attributes. If they express much more than this, they are usually considered to be a hardware description language
such as Verilog
, VHDL (Very high speed integrated circuits Hardware Description Language), or any one of several specific languages designed for input to simulators.
Netlists can be either physical or logical; either instance-based or net-based; and flat or hierarchical. The latter can be either folded or unfolded.
Each time a part is used in a netlist, this is called an "instance."
Thus, each instance has a "master", or "definition".
These definitions will usually list the connections that can be made to that kind of device, and some basic properties of that device.
These connection points are called "ports" or "pins", among several other names.
An "instance" could be anything from a MOSFET
transistor or a bipolar transistor, to a resistor
, capacitor
, or integrated circuit
chip.
Instances have "ports". In the case of a vacuum cleaner, these ports would be the three metal prongs in the plug. Each port 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.
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
is perhaps the most famous 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
is probably the most famous of the net-based netlists.
, inside it. A definition which includes no instances would be referred to as "primitive", or "leaf", among other names, whereas a definition which includes instances would be "hierarchical".
A "folded" hierarchy allows a single definition to be represented several times by instances. An "unfolded" hierarchy will not allow a definition to be used more than once in the hierarchy. Folded Hierarchies can be extremely compact. A small netlist (for example, just a few hundred instances) could describe connections with tens or hundreds of thousands of instances this way. How? Let us suppose definition "A" is a simple primitive memory cell. Then, suppose that 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". At this point, the design contains a total of 5 definitions (A through E) and 128 total instances. Yet, E describes a circuit that contains 1,048,576 instances of "A."
A "flat" design is one where only instances of primitives are allowed. Hierarchical designs can be "exploded" or "flattened" into flat designs via recursive algorithms. "Explosion" can be a very apt term; if the design were highly folded (as in the previous example), this expansion will yield a much larger netlist. Also, folded designs can be "unfolded", by creating a new copy (with a new name) of each definition each time it is used. This will generate a much larger database if the design were highly folded but will also preserve the design's hierarchy.
By providing a list of the instance names as one descends a folded hierarchy from the top definition to the primitives, one can derive a unique hierarchical path to any instance. These paths can be used to tie a flat design description to a folded hierarchical version of the same design.
Netlists usually convey connectivity information and provide nothing more than instances, nets, and perhaps some attributes. If they express much more than this, they are usually considered to be a hardware description language
Hardware description language
In electronics, a hardware description language or HDL is any language from a class of computer languages, specification languages, or modeling languages for formal description and design of electronic circuits, and most-commonly, digital logic...
such as Verilog
Verilog
In the semiconductor and electronic design industry, Verilog is a hardware description language used to model electronic systems. Verilog HDL, not to be confused with VHDL , is most commonly used in the design, verification, and implementation of digital logic chips at the register-transfer level...
, VHDL (Very high speed integrated circuits Hardware Description Language), or any one of several specific languages designed for input to simulators.
Netlists can be either physical or logical; either instance-based or net-based; and flat or hierarchical. The latter can be either folded or unfolded.
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."
Thus, each instance has a "master", or "definition".
These definitions will usually list the connections that can be made to that kind of device, and some basic properties of that device.
These connection points are called "ports" or "pins", among several other names.
An "instance" could be anything from a MOSFET
MOSFET
The metal–oxide–semiconductor field-effect transistor is a transistor used for amplifying or switching electronic signals. The basic principle of this kind of transistor was first patented by Julius Edgar Lilienfeld in 1925...
transistor or a bipolar transistor, to a resistor
Resistor
A linear resistor is a linear, passive two-terminal electrical component that implements electrical resistance as a circuit element.The current through a resistor is in direct proportion to the voltage across the resistor's terminals. Thus, the ratio of the voltage applied across a resistor's...
, capacitor
Capacitor
A capacitor is a passive two-terminal electrical component used to store energy in an electric field. The forms of practical capacitors vary widely, but all contain at least two electrical conductors separated by a dielectric ; for example, one common construction consists of metal foils separated...
, or integrated circuit
Integrated circuit
An integrated circuit or monolithic integrated circuit is an electronic circuit manufactured by the patterned diffusion of trace elements into the surface of a thin substrate of semiconductor material...
chip.
Instances have "ports". In the case of a vacuum cleaner, these ports would be the three metal prongs in the plug. Each port 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.
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
SPICE
SPICE is a general-purpose, open source analog electronic circuit simulator.It is a powerful program that is used in integrated circuit and board-level design to check the integrity of circuit designs and to predict circuit behavior.- Introduction :Unlike board-level designs composed of discrete...
is perhaps the most famous 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
EDIF is a vendor-neutral format in which to store Electronic netlists and schematics. It was one of the first attempts to establish a neutral data exchange format for the electronic design automation industry. The goal was to establish a common format from which the proprietary formats of the EDA...
is probably the most famous of the net-based netlists.
Hierarchy
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 case of the vacuum cleaner analogy, one might have a vacuum cleaner definition with its ports, but now this definition would also include a full electrical description of the internals of the vacuum cleaner, including the motors, switches, et ceteraEt cetera
Et cetera is a Latin expression that means "and other things", or "and so forth". It is taken directly from the Latin expression which literally means "and the rest " and is a loan-translation of the Greek "καὶ τὰ ἕτερα"...
, inside it. A definition which includes no instances would be referred to as "primitive", or "leaf", among other names, whereas a definition which includes instances would be "hierarchical".
A "folded" hierarchy allows a single definition to be represented several times by instances. An "unfolded" hierarchy will not allow a definition to be used more than once in the hierarchy. Folded Hierarchies can be extremely compact. A small netlist (for example, just a few hundred instances) could describe connections with tens or hundreds of thousands of instances this way. How? Let us suppose definition "A" is a simple primitive memory cell. Then, suppose that 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". At this point, the design contains a total of 5 definitions (A through E) and 128 total instances. Yet, E describes a circuit that contains 1,048,576 instances of "A."
A "flat" design is one where only instances of primitives are allowed. Hierarchical designs can be "exploded" or "flattened" into flat designs via recursive algorithms. "Explosion" can be a very apt term; if the design were highly folded (as in the previous example), this expansion will yield a much larger netlist. Also, folded designs can be "unfolded", by creating a new copy (with a new name) of each definition each time it is used. This will generate a much larger database if the design were highly folded but will also preserve the design's hierarchy.
By providing a list of the instance names as one descends a folded hierarchy from the top definition to the primitives, one can derive a unique hierarchical path to any instance. These paths can be used to tie a flat design description to a folded hierarchical version of the same design.