W dużych projektach, powszechną praktyką jest dzielenie projektu na kawałki, każdy kawałek staje się „definicją”, która może być używana jako instancje w projekcie. W analogii do odkurzacza, można by mieć definicję odkurzacza z jego portami, ale teraz ta definicja zawierałaby również pełny opis wewnętrznych komponentów maszyny i jak się łączą (silniki, przełączniki, itp.), tak jak robi to schemat elektryczny.

Definicja, która nie zawiera żadnych instancji jest nazywana „prymitywną” (lub „liściem”, lub inne nazwy); podczas gdy definicja, która zawiera instancje jest „hierarchiczna”.

Hierarchia „złożona” pozwala pojedynczej definicji być reprezentowana kilka razy przez instancje. Hierarchia „rozłożona” nie pozwala na użycie definicji więcej niż raz w hierarchii.

Hierarchie złożone mogą być niezwykle zwarte. Mała netlista zawierająca tylko kilka instancji może opisywać projekty z bardzo dużą liczbą instancji. Na przykład, załóżmy, że definicja A jest prostym prymitywem, jak komórka pamięci. Następnie załóżmy, że definicja B zawiera 32 instancje A; C zawiera 32 instancje B; D zawiera 32 instancje C; i E zawiera 32 instancje D. Projekt zawiera teraz 5 definicji (od A do E) i 128 instancji. Jednak E opisuje obwód, który zawiera ponad milion komórek pamięci.

UnfoldingEdit

W „płaskim” projekcie, tylko prymitywy są instancjonowane. Hierarchiczne projekty mogą być rekurencyjnie „eksplodowane” („spłaszczane”) przez tworzenie nowej kopii (z nową nazwą) każdej definicji za każdym razem, gdy jest ona używana. Jeśli projekt jest bardzo złożony, to rozszerzenie go w ten sposób spowoduje, że baza danych netlisty będzie znacznie większa, ale zachowane zostaną zależności hierarchiczne. Biorąc pod uwagę hierarchiczną netlistę, lista nazw instancji w ścieżce od definicji głównej do instancji prymitywu określa pojedynczą, unikalną ścieżkę do tego prymitywu. Ścieżki do każdego prymitywu, razem wzięte, składają się na dużą, ale płaską netlistę, która jest dokładnie równoważna kompaktowej wersji hierarchicznej.

BackannotationEdit

Backannotation to dane, które mogą być dodane do hierarchicznej netlisty. Zazwyczaj są one przechowywane oddzielnie od netlisty, ponieważ kilka takich alternatywnych zestawów danych może być zastosowanych do pojedynczej netlisty. Dane te mogły zostać wyekstrahowane z projektu fizycznego i mogą dostarczyć dodatkowych informacji dla dokładniejszych symulacji. Zazwyczaj dane te składają się ze ścieżki hierarchicznej i fragmentu danych dla tego prymitywu lub znalezienia wartości opóźnienia RC z powodu wzajemnych połączeń.

DziedziczenieEdit

Inną koncepcją często stosowaną w netlistach jest dziedziczenie. Załóżmy, że definicja kondensatora ma powiązany atrybut o nazwie „Capacitance”, odpowiadający właściwości fizycznej o tej samej nazwie, z domyślną wartością „100 pF” (100 pikofaradów). Każda instancja tego kondensatora może również mieć taki atrybut, tylko z inną wartością pojemności. A inne instancje mogą w ogóle nie kojarzyć żadnej pojemności. W przypadku, gdy dla instancji nie zostanie określona żadna pojemność, instancja „odziedziczy” wartość 100 pF ze swojej definicji. Podana wartość będzie „nadpisywać” wartość z definicji. Jeśli duża liczba atrybutów jest taka sama jak w definicji, duża ilość informacji może być „odziedziczona” i nie musi być nadmiarowo podawana w netliście, oszczędzając miejsce i czyniąc projekt łatwiejszym do odczytania zarówno przez maszyny jak i ludzi.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.