In grote ontwerpen is het gebruikelijk om het ontwerp op te splitsen in stukken, waarbij elk stuk een “definitie” wordt die kan worden gebruikt als instanties in het ontwerp. In de stofzuiger analogie, zou men een stofzuiger definitie kunnen hebben met zijn poorten, maar nu zou deze definitie ook een volledige beschrijving van de interne componenten van de machine bevatten en hoe zij aansluiten (motoren, schakelaars, enz.), zoals een bedradingsdiagram doet.

Een definitie die geen instanties bevat wordt een “primitieve” genoemd (of een “blad”, of andere namen); terwijl een definitie die instanties bevat “hiërarchisch” is.

Een “opgevouwen” hiërarchie staat toe dat een enkele definitie meerdere malen wordt gerepresenteerd door instanties. Een “unfolded” hiërarchie staat niet toe dat een definitie meer dan één keer in de hiërarchie wordt gebruikt.

Folded hiërarchieën kunnen uiterst compact zijn. Een kleine netlist van slechts een paar instanties kan ontwerpen beschrijven met een zeer groot aantal instanties. Bijvoorbeeld, stel dat definitie A een eenvoudige primitieve is, zoals een geheugencel. Stel dan dat definitie B 32 instanties van A bevat; C bevat 32 instanties van B; D bevat 32 instanties van C; en E bevat 32 instanties van D. Het ontwerp bevat nu 5 definities (A tot en met E) en 128 instanties. Toch beschrijft E een schakeling die meer dan een miljoen geheugencellen bevat.

UnfoldingEdit

In een “plat” ontwerp worden alleen primitieven geïnstantieerd. Hiërarchische ontwerpen kunnen recursief worden “geëxplodeerd” (“plat gemaakt”) door een nieuwe kopie (met een nieuwe naam) te maken van elke definitie telkens wanneer deze wordt gebruikt. Als het ontwerp sterk geplooid is, zal het op deze manier uitbreiden resulteren in een veel grotere netlijst database, maar de hiërarchische afhankelijkheden blijven behouden. Gegeven een hiërarchische netlijst, specificeert de lijst van instantie-namen in een pad van de root-definitie naar een primitieve instantie het enige unieke pad naar die primitieve. De paden naar elke primitieve vormen samen een grote maar vlakke netlijst die precies gelijk is aan de compacte hiërarchische versie.

BackannotationEdit

Backannotation is data die aan een hiërarchische netlijst zou kunnen worden toegevoegd. Gewoonlijk worden zij gescheiden gehouden van de netlijst, omdat verscheidene dergelijke alternatieve reeksen van gegevens op één enkele netlijst zouden kunnen worden toegepast. Deze gegevens kunnen uit een fysiek ontwerp zijn gehaald, en zouden extra informatie kunnen verschaffen voor meer nauwkeurige simulaties. Meestal bestaan de gegevens uit een hiërarchisch pad en een stuk data voor die primitieve of het vinden van de waarden van RC vertraging als gevolg van interconnectie.

InheritanceEdit

Een ander concept dat vaak in netlijsten wordt gebruikt is dat van overerving. Stel dat een definitie van een condensator een bijbehorend attribuut heeft met de naam “Capacitance”, dat overeenkomt met de fysische eigenschap met dezelfde naam, met een standaardwaarde van “100 pF” (100 picofarads). Elke instantie van deze condensator kan ook zo’n attribuut hebben, alleen met een andere waarde van de capaciteit. En andere instanties zouden helemaal geen capaciteit kunnen associëren. In het geval dat geen capaciteit is gespecificeerd voor een instantie, zal de instantie de 100 pF waarde uit zijn definitie “erven”. Een gespecificeerde waarde zal de waarde in de definitie “opheffen”. Als een groot aantal attributen uiteindelijk hetzelfde is als in de definitie, kan een grote hoeveelheid informatie worden “overgeërfd”, en hoeft niet redundant te worden gespecificeerd in de netlist, hetgeen ruimte bespaart, en het ontwerp gemakkelijker leesbaar maakt voor zowel machines als mensen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.