|
The word netlist can be used in several different domains, but perhaps the most popular is in the electronic design domain. Electronic design automation (EDA) is the category of tools for designing and producing electronic systems ranging from printed circuit boards (PCBs) to integrated circuits. ...
In this domain, a "netlist" describes the connectivity of an electronic design. Netlists usually provide nothing but instances, and nets, and perhaps some attributes. If they express much more than this, they usually turn into something more than a netlist, such as Verilog, VHDL, or any one of several specific languages designed for input to simulators. Netlists are meant to convey connectivity information, and if there is more data than this basic information in the description, then it may not be just a netlist. The Verilog HDL is a hardware description language, used for the design of ASICs and FPGAs in order to make digital circuits. ...
VHDL or VHSIC Hardware Description Language, is commonly used as a design-entry language for FPGAs and ASICs in electronic design automation. ...
A simulation is an imitation of some real device or state of affairs. ...
There are several kinds and classes of "netlist": - Physical
- Logical
etc. and also, netlists can of two major classes: - Instance based
- net based.
Netlists can also be - Flat
- Hierarchical
Hierarchical Netlists can be - Folded
- Unfolded.
Contents and Structure of a Netlist
Most netlists either contain or reference 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 vacuum cleaner, microwave oven, or light bulb, to a resistor, capacitor, or integrated circuit chip. An ideal resistor is a component with an electrical resistance that remains constant regardless of the applied voltage or current flowing through the device or the rate of change of the current. ...
Various types of capacitors A capacitor is a device that stores energy in the electric field created between a pair of conductors on which equal but opposite electric charges have been placed. ...
An integrated circuit (IC) is a thin chip consisting of at least two interconnected semiconductor devices, mainly transistors, as well as passive components like resistors. ...
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 are 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. Screen shot of Spice OPUS, a fork of Berkeley SPICE SPICE (Simulation Program with Integrated Circuits Emphasis) is a general purpose analog circuit simulator. ...
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. EDIF stands for Electronic Data Interchange Format, and has been predominantly used as a neutral format in which to store Electronic netlists and schematics. ...
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, you might now have a vacuum cleaner definition with its ports, but now perhaps this definition might also include a full electrical description of the internals of the vacuum cleaner, with the motors, switches, etc., inside it. A definition which includes no instances would be referred to as "primitive", or "leaf", among other names; and 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 instance, just a few hundred instances) could describe connections with tens or hundreds of thousands of instances this way. How? Let's suppose definition "A" is a simple primitive memory cell. Further suppose that definition "B" contains 32 instances of "A". Further suppose definition "C" contains 32 instances of "B". Further suppose "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 was highly folded (as in the previous example). 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 was highly folded, but will also preserve the 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.
Backannotation Backannotation are 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.
Inheritance Another concept often used in netlists is that of inheritance. Suppose a definition of a capacitor has an associated attribute called "Capacitance" 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 men. |