Netlist - Netlist

En conception électronique , une netlist est une description de la connectivité d'un circuit électronique . Dans sa forme la plus simple, une netlist se compose d'une liste des composants électroniques d'un circuit et d'une liste des nœuds auxquels ils sont connectés. Un réseau (net) est un ensemble de deux ou plusieurs composants interconnectés.

La structure, la complexité et la représentation des netlists peuvent varier considérablement, mais le but fondamental de chaque netlist est de transmettre des informations de connectivité . Les netlists ne fournissent généralement rien de plus que des instances, des nœuds et peut-être quelques attributs des composants impliqués. S'ils expriment beaucoup plus que cela, ils sont généralement considérés comme un langage de description de matériel tel que Verilog ou VHDL , ou l'un des nombreux langages spécialement conçus pour être entrés dans des simulateurs ou des compilateurs matériels .

Les listes d'interconnexions peuvent être physiques ou logiques , basées sur des instances ou sur un réseau , et plates ou hiérarchiques . Ce dernier peut être soit plié, soit déplié .

Contenu et structure d'une netlist

La plupart des netlists contiennent ou renvoient à des descriptions des pièces ou des appareils utilisés. Chaque fois qu'une partie est utilisée dans une netlist, cela s'appelle une "instance".

Ces descriptions répertorient généralement les connexions établies avec ce type de périphérique et certaines propriétés de base de ce périphérique. Ces points de connexion sont appelés « terminaux » ou « broches », parmi plusieurs autres noms.

Une "instance" peut être n'importe quoi, d'un transistor MOSFET ou d'un transistor à jonction bipolaire à une résistance , un condensateur ou une puce de circuit intégré.

Les instances ont des « terminaux ». Dans le cas d'un aspirateur, ces bornes seraient les trois broches métalliques de la fiche. Chaque terminal a un nom, et en continuant l'exemple de l'aspirateur, ils peuvent être "Neutre", "En direct" et "Sol". Habituellement, chaque instance aura un nom unique, de sorte que si vous avez deux instances d'aspirateurs, l'une peut être "vac1" et l'autre "vac2". Outre leurs noms, ils pourraient autrement être identiques.

Les réseaux (filets) sont les "fils" qui relient les choses ensemble dans le circuit. Il peut y avoir ou non des attributs spéciaux associés aux réseaux dans une conception, selon la langue particulière dans laquelle la liste d'interconnexions est écrite et les caractéristiques de cette langue.

Les netlists basées sur les instances fournissent généralement une liste des instances utilisées dans une conception. Avec chaque instance, soit une liste ordonnée de noms de réseau est fournie, soit une liste de paires fournie, d'un nom de port d'instance, ainsi que le nom de réseau auquel ce port est connecté. Dans ce genre de description, la liste des réseaux peut être rassemblée à partir des listes de connexions, et il n'y a pas de place pour associer des attributs particuliers aux réseaux eux-mêmes. SPICE est un exemple de netlists basées sur des instances.

Les netlists basées sur le réseau décrivent généralement toutes les instances et leurs attributs, puis décrivent chaque réseau et indiquent à quel port elles sont connectées sur chaque instance. Cela permet d'associer des attributs aux réseaux. EDIF est probablement la plus célèbre des netlists basées sur le net.

Hiérarchie

Dans les grandes conceptions, il est courant de diviser la conception en morceaux, chaque pièce devenant une "définition" qui peut être utilisée comme instances dans la conception. Dans l'analogie de l'aspirateur, on pourrait avoir une définition d'aspirateur avec ses ports, mais maintenant cette définition inclurait également une description complète des composants internes de la machine et de la façon dont ils se connectent (moteurs, interrupteurs, etc.), comme le fait un schéma de câblage. .

Une définition qui n'inclut aucune instance est appelée un "primitif" (ou une "feuille", ou d'autres noms); alors qu'une définition qui inclut des instances est "hiérarchique".

Une hiérarchie « repliée » permet à une même définition d'être représentée plusieurs fois par des instances. Une hiérarchie "dépliée" ne permet pas d'utiliser une définition plus d'une fois dans la hiérarchie.

Les hiérarchies pliées peuvent être extrêmement compactes. Une petite netlist de quelques instances peut décrire des conceptions avec un très grand nombre d'instances. Par exemple, supposons que la définition A soit une simple primitive, comme une cellule mémoire. Supposons alors que la définition B contienne 32 instances de A ; C contient 32 instances de B ; D contient 32 instances de C ; et E contient 32 instances de D. La conception contient maintenant 5 définitions (A à E) et 128 instances. Pourtant, E décrit un circuit qui contient plus d'un million de cellules mémoire.

Déploiement

Dans une conception "plate", seules les primitives sont instanciées. Les conceptions hiérarchiques peuvent être récursivement « explosées » (« aplaties » en créant une nouvelle copie (avec un nouveau nom) de chaque définition à chaque fois qu'elle est utilisée. Si la conception est fortement pliée, l'étendre de cette manière entraînera une base de données de netlists beaucoup plus grande, mais préserve les dépendances de la hiérarchie. Étant donné une netlist hiérarchique, la liste des noms d'instances dans un chemin allant de la définition de racine à une instance primitive spécifie le chemin unique et unique vers cette primitive. Les chemins vers chaque primitive, pris ensemble, comprennent une liste d'interconnexions large mais plate qui est exactement équivalente à la version hiérarchique compacte.

Annotation arrière

Les backannotations sont des données qui pourraient être ajoutées à une netlist hiérarchique. Habituellement, ils sont séparés de la netlist, car plusieurs de ces ensembles de données alternatifs pourraient être appliqués à une seule netlist. Ces données peuvent avoir été extraites d'une conception physique et peuvent fournir des informations supplémentaires pour des simulations plus précises. Habituellement, les données sont composées d'un chemin hiérarchique et d'une donnée pour cette primitive ou pour trouver les valeurs du retard RC dû à l'interconnexion.

Héritage

Un autre concept souvent utilisé dans les netlists est celui d'héritage. Supposons qu'une définition d'un condensateur ait un attribut associé appelé "Capacitance", correspondant à la propriété physique du même nom , avec une valeur par défaut de "100 pF" (100 picofarads). Chaque instance de ce condensateur peut également avoir un tel attribut, uniquement avec une valeur de capacité différente. Et d'autres cas peuvent ne pas associer de capacité du tout. Dans le cas où aucune capacité n'est spécifiée pour une instance, l'instance "héritera" de la valeur 100 pF de sa définition. Une valeur spécifiée "écrasera" la valeur de la définition. Si un grand nombre d'attributs finissent par être les mêmes que sur la définition, une grande quantité d'informations peut être "héritée", et ne pas avoir à être spécifiées de manière redondante dans la netlist, économisant de l'espace et rendant la conception plus facile à lire par les deux des machines et des hommes.

Les références