Dans les grandes conceptions, c’est une pratique courante de diviser la conception en morceaux, chaque morceau 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 de l’aspirateur avec ses ports, mais maintenant cette définition comprendrait également une description complète des composants internes de la machine et comment ils se connectent (moteurs, interrupteurs, etc.), comme le fait un schéma de câblage.
Une définition qui ne comporte aucune instance est appelée « primitive » (ou « feuille », ou d’autres noms) ; alors qu’une définition qui comporte 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 à une définition d’être utilisée plus d’une fois dans la hiérarchie.
Les hiérarchies dépliées peuvent être extrêmement compactes. Une petite netlist de quelques instances seulement peut décrire des conceptions avec un très grand nombre d’instances. Par exemple, supposons que la définition A soit une primitive simple, comme une cellule de mémoire. Supposons ensuite que la définition B contient 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 de mémoire.
UnfoldingEdit
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 repliée, l’étendre de cette manière entraînera une base de données de netlists beaucoup plus importante, mais préservera les dépendances hiérarchiques. Dans une liste de réseau hiérarchique, la liste des noms d’instance dans un chemin allant de la définition racine à une instance de primitive spécifie le chemin unique vers cette primitive. Les chemins vers chaque primitive, pris ensemble, constituent une netlist large mais plate qui est exactement équivalente à la version hiérarchique compacte.
BackannotationEdit
Les backannotation sont des données qui pourraient être ajoutées à une netlist hiérarchique. Habituellement, elles sont conservées séparément de la netlist, car plusieurs ensembles de données alternatifs de ce type 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’un morceau de données pour cette primitive ou trouver les valeurs du retard RC dû à l’interconnexion.
InheritanceEdit
Un autre concept souvent utilisé dans les netlists est celui de l’héritage. Supposons que la 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, mais avec une valeur de capacité différente. Et d’autres instances pourraient ne pas associer de capacité du tout. Dans le cas où aucune capacité n’est spécifiée pour une instance, celle-ci « hérite » de la valeur 100 pF de sa définition. Une valeur spécifiée « remplacera » la valeur de la définition. Si un grand nombre d’attributs finissent par être les mêmes que ceux de la définition, une grande quantité d’informations peut être « héritée » et ne pas devoir être spécifiée de manière redondante dans la netlist, ce qui permet d’économiser de l’espace et de rendre la conception plus facile à lire par les machines et les personnes.