In großen Entwürfen ist es üblich, den Entwurf in Teile aufzuteilen, wobei jeder Teil eine „Definition“ wird, die als Instanzen im Entwurf verwendet werden kann. In der Staubsauger-Analogie könnte man eine Staubsauger-Definition mit ihren Anschlüssen haben, aber jetzt würde diese Definition auch eine vollständige Beschreibung der internen Komponenten der Maschine und wie sie verbunden sind (Motoren, Schalter usw.) enthalten, wie es ein Schaltplan tut.

Eine Definition, die keine Instanzen enthält, nennt man „primitiv“ (oder „Blatt“ oder andere Bezeichnungen), während eine Definition, die Instanzen enthält, „hierarchisch“ ist.

Eine „gefaltete“ Hierarchie erlaubt es, dass eine einzelne Definition mehrmals durch Instanzen dargestellt wird. Eine „ungefaltete“ Hierarchie erlaubt es nicht, eine Definition mehr als einmal in der Hierarchie zu verwenden.

Gefaltete Hierarchien können extrem kompakt sein. Eine kleine Netzliste mit nur wenigen Instanzen kann Designs mit einer sehr großen Anzahl von Instanzen beschreiben. Nehmen wir zum Beispiel an, Definition A ist ein einfaches Primitiv, wie eine Speicherzelle. Angenommen, Definition B enthält 32 Instanzen von A; C enthält 32 Instanzen von B; D enthält 32 Instanzen von C; und E enthält 32 Instanzen von D. Der Entwurf enthält nun 5 Definitionen (A bis E) und 128 Instanzen. Dennoch beschreibt E eine Schaltung, die über eine Million Speicherzellen enthält.

UnfoldingEdit

In einem „flachen“ Entwurf werden nur Primitive instanziert. Hierarchische Entwürfe können rekursiv „aufgefaltet“ („flattened“) werden, indem von jeder Definition bei jeder Verwendung eine neue Kopie (mit einem neuen Namen) erstellt wird. Wenn der Entwurf stark gefaltet ist, führt eine solche Erweiterung zu einer viel größeren Netzlistendatenbank, wobei jedoch die Hierarchieabhängigkeiten erhalten bleiben. Bei einer hierarchischen Netzliste gibt die Liste der Instanznamen in einem Pfad von der Root-Definition zu einer Primitiv-Instanz den einzigen eindeutigen Pfad zu diesem Primitiv an. Die Pfade zu jedem Primitiv bilden zusammen eine große, aber flache Netzliste, die genau der kompakten hierarchischen Version entspricht.

BackannotationEdit

Backannotation sind Daten, die zu einer hierarchischen Netzliste hinzugefügt werden können. Normalerweise werden sie getrennt von der Netzliste aufbewahrt, da mehrere solcher alternativen Datensätze auf eine einzige Netzliste angewendet werden könnten. Diese Daten können aus einem physikalischen Entwurf extrahiert worden sein und zusätzliche Informationen für genauere Simulationen liefern. In der Regel bestehen die Daten aus einem hierarchischen Pfad und einem Teil der Daten für dieses Primitiv oder der Ermittlung der Werte der RC-Verzögerung aufgrund der Zusammenschaltung.

VererbungBearbeiten

Ein weiteres Konzept, das häufig in Netzlisten verwendet wird, ist das der Vererbung. Angenommen, eine Definition eines Kondensators hat ein zugehöriges Attribut namens „Capacitance“, das der gleichnamigen physikalischen Eigenschaft mit dem Standardwert „100 pF“ (100 Picofarad) entspricht. Jede Instanz dieses Kondensators könnte ebenfalls ein solches Attribut haben, nur mit einem anderen Kapazitätswert. Und andere Instanzen könnten überhaupt keine Kapazität zuordnen. Wenn für eine Instanz keine Kapazität angegeben wird, „erbt“ die Instanz den Wert 100 pF aus ihrer Definition. Ein angegebener Wert „überschreibt“ den Wert aus der Definition. Wenn viele Attribute mit der Definition übereinstimmen, kann eine große Menge an Informationen „geerbt“ werden und muss nicht redundant in der Netzliste angegeben werden, was Platz spart und das Design sowohl für Maschinen als auch für Menschen leichter lesbar macht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.