1
Pytanie nr 15
„Proces projektowania
cyfrowego układu scalonego
(Design Flow)”
Grzegorz Golaś 127386
Układ scalony
Układ scalony – (ang. intergrated circuit, chip) to zminiaturyzowany
układ elektroniczny zawierający w swym wnętrzu od kilku, do setek
milionów podstawowych elementów elektronicznych; tranzystorów, diod,
rezystorów, kondensatorów.
Zwykle jest on zamknięty w hermetycznej obudowie - szklanej,
metalowej, ceramicznej lub wykonanej z tworzywa sztucznego.
Ze względu na sposób wykonania układy scalone dzieli się na:
monolityczne, w których wszystkie elementy wykonane są w
monokrystalicznej strukturze półprzewodnika,
hybrydowe - na płytki wykonane z izolatora nanoszone są warstwy
przewodnika oraz materiału rezystywnego, tworząc układ połączeń
elektrycznych oraz rezystory. Do tak utworzonych połączeń dołącza się
indywidualne, miniaturowe elementy elektroniczne (w tym układy
monolityczne).
Układ scalony (2)
Ze względu na technologię wykonania rozróżnia się układy:
•
cienkowarstwowe
•
grubowarstwowe
Większość stosowanych obecnie układów scalonych jest wykonana w technologii
monolitycznej.
Ze względu na stopień scalenia występuje, w zasadzie historyczny, podział na
układy:
•
małej skali integracji (SSI – small scale of integration) poniżej 20 elementów,
•
średniej skali integracj (MSI – medium scale of integration) 20 – 200 elementów,
•
dużej skali integracji (LSI – large scale of integration) 200 – 2000 ,
•
wielkiej skali integracji (VLSI – very large scale of integration) 2000 – 20000
elementów,
•
ultrawielkiej skali integracji (ULSI – ultra large scale of integration) powyżej
20000 elementów.
Ponieważ w układach monolitycznych praktycznie wszystkie elementy wykonuje
się jako tranzystory, odpowiednio tylko przyłączając ich końcówki, dlatego też
często mówi się o gęstości upakowania tranzystorów na mm
2
.
Układy cyfrowe
Układ cyfrowy – układ elektroniczny, który realizuje operacje na
wartościach, którym przypisano wartości liczbowe – w
najprostszym przypadku logiczne, którym odpowiadają wartości 1
lub 0 (Algebra Boole'a). Układy cyfrowe dzielą się na dwie główne
grupy:
układy kombinacyjne,
układy sekwencyjne.
Układ kombinacyjny – charakteryzuje się tym, że stan wyjść
zależy wyłącznie od stanu wejść; stan wyjść opisują funkcje
boolowskie.
Układ sekwencyjny – charakteryzuje się tym, że stan wyjść zależy
od stanu wejść x oraz od poprzedniego stanu, zwanym stanem
wewnętrznym, pamiętanego w zespole rejestrów (pamięci).
Rys. 1. Schemat budowy układu
sekwencyjnego
Układy cyfrowe (2)
Wśród układów sekwencyjnych zaś
wyróżnia się układy asynchroniczne
i synchroniczne.
Przy czym najczęściej układy
cyfrowe są synchroniczne, co
oznacza, że zmiany stanów są
wyzwalane przez jeden lub więcej
sygnałów zegarowych.
Układy cyfrowe (3)
Najczęściej układy cyfrowe operują na dwóch stanach: 0 i 1.
W celu eliminacji wpływu czynników zewnętrznych (szumy,
spadki napięć etc.) ustalane są przedziały odpowiadające
logicznemu “0” i “1” często pojawia się także tzw. stan
zabroniony, lub nieokreślony (dla sygnałów nie należących
do żadnego z przedziałów “0” i “1”).
Zamiennie z 0 i 1 stosuje się też pojęcia stan wysoki H
(high) oraz stan niski L (low).
Projektowanie układu scalonego
Do projektowania układów cyfrowych używa się często
języków opisu sprzętu HDL (Hardware Description
Language). Istnieją dwa zasadnicze sposoby opisu układów:
•behawioralny – projektant definiuje zależności pomiędzy
wyjściami a wejściami układu, natomiast realizacją układu
zajmuje się kompilator;
•funkcjonalny – projektant definiuje bloki funkcjonalne oraz
zależności między nimi; przy czym bloki funkcjonalne mogą
być bardzo proste (realizujące np. funkcje podstawowych
bramek logicznych), jak również bardzo skomplikowane (np.
pamięci, rejestry, sumatory itp.).
Projektowanie układu scalonego (2)
Środowiska do przetwarzania jęzków HDL mają szerokie
możliwości. Oprócz syntezy układów, umożliwiają różnorakie
optymalizacje (np. minimalizacja funkcji, upraszczanie
obwodów przez użycie „prefabrykantów”), testowanie
zaprojektowanych układów oraz ich funkcjonalną symulację.
Najpopularniejszymi używanymi językami HDL są:
•VHDL,
•Verilog,
•Inne.
Narzędzia wspomagania projektowania
Początkowo układy scalone projektowano ręcznie, co straciło sens
wraz z pojawieniem się układów o dużej skali integracji. Wobec
konieczności
automatyzacji
projektowania
pojawiły
się
odpowiednie
narzędzia
komputerowego
wspomagania
projektowania CAD (Computer-Aided Design):
•DA (Design automation) systemy automatycznego projektowania,
•EDA (Electronic Design Automation) systemy automatycznego
projektowania układów elektronicznych.
Zastosowanie tych narzędzi pozwala na realizację dwóch zadań:
•syntezę – Umożliwia przejście od opisu do implementacji
fizycznego układu,
•symulację – pozwala sprawdzić poprawność projektu bez
konieczności wykonywania urządzenia
Narzędzia wspomagania projektowania
(2)
Zastosowanie systemów CAD skraca czas projektowania
układów scalonych i ma ogromne znaczenie ekonomiczne.
Narzędzia CAD pozwalają na:
szybkie projektowanie,
wykrywanie błędów w projekcie,
szybkie wprowadzanie zmian,
weryfikację,
testowanie,
symulację projektu.
Design flow
Przykładowa procedura projektowania układu cyfrowego opartego na bramkach
logicznych:
1. Przygotowanie specyfikacji.
2. W razie konieczności dokonanie podziału systemu na mniejsze części i
przygotowanie specyfikacji dla każdej części.
3. Na podstawie specyfikacji stworzenie grafu automatu stanów, na którym
zaprezentowano wszystkie możliwe stany systemu, kombinacje sygnałów
wejściowych (warunki) określające zmiany stanów oraz wyjścia dla każdego
stanu.
4. Minimalizacja liczby stanów (jest to krok opcjonalny i nie jest konieczny we
wszystkich przypadkach).
5. Wyznaczenie zmiennych boolowskich reprezentujących wszystkie stany RTL
(Register Transfer Level).
6. Wyprowadzenie stanów następnych oraz wyjść.
7. Optymalizacja stanów następnych i wyjść w celu minimalizacji liczby
wymaganych bramek.
8. Wybór odpowiedniego rozmieszenia bramek w konkretnym układzie scalonym
oraz układów scalonych na płytce drukowanej.
9. Wykonanie połączeń pomiędzy układami scalonymi.
Przykładowy proces projektowania
• Proces
projektowania
ma charakter
ewolucyjny.
Rozpoczyna się
od ustalenia
wymagań,
następnie projekt
jest rozwijany i
testowany.
Projektowanie Hierarchiczne
Jest techniką projektowania opierającą się na kolejnych podziałach
poszczególnych modułów na mniejsze części (sub-moduły). Proces
dzielenia trwa do momentu, w którym poziom skomplikowania
mniejszych elementów pozwala na łatwe ich opracowanie.
Zaprezentowane wcześniej główne etapy projektowania mogą posiadać
hierarchiczną strukturę.
Przykładem hierarchicznego podziału struktury może być 4-bitowy
sumator CMOS podzielony na poszczególne komponenty. Pierwszym
krokiem jest podzielenie go na jednobitowe sumatory, które są następnie
dzielone na bity przeniesienia oraz sumy. Ostatnim krokiem jest
podzielenie ich na bramki logiczne. Na tym poziomie hierarchii
zaprojektowanie prostych obwodów realizujących założenia funkcji
Boolowskich jest znacznie prostsze niż w przypadku wyższych poziomów
hierarchii.
Projektowanie hierarchiczne (2)
Modułowość i regularność
Modułowość
Modułowość w procesie projektowania oznacza, że wszystkie bloki funkcjonalne
tworzące większy system muszą mieć ściśle zdefiniowane funkcje oraz granice.
Zastosowanie tej reguły pozwala na niezależne projektowanie każdego modułu z
osobna. Modułowość umożliwia równoległe prowadzenie prac nad poszczególnymi
elementami systemu. Dodatkową zaletą jest możliwość zastosowania
poszczególnych modułów w innych projektach.
Regularność
Regularność oznacza uproszczenie systemu poprzez stosowanie, w miarę
możliwości, identycznych bloków. Regularność może występować na wszystkich
poziomach projektowania. Dzięki niej możliwe jest zredukowanie liczby różnych
zastosowanych modułów, które muszą zostać zaprojektowane oraz sprawdzone.
Zlokalizowanie
Zlokalizowanie
Określenie granic poszczególnych modułów systemu sprawia, że wnętrze każdego
modułu przestaje być istotne dla innych modułów. Reguła zlokalizowania
zapewnia, że połączenia występują w większości pomiędzy sąsiadującymi ze sobą
modułami przy jednoczesnym unikaniu połączeń długodystansowych. Jest to
bardzo istotne w celu unikania nadmiernych opóźnień. Operacje, które są
szczególnie narażone na opóźnienia powinny być przeprowadzane lokalnie, bez
konieczności dostępu do odległych modułów lub sygnałów.
Najważniejsze metody projektowania
Podział na mniejsze bloki
funkcjonalne (opcjonalnie)
Główna idea systemu
Weryfikacja poziomów
systemu
Metoda Bottom-Up
(Full Custom)
Metoda Top-Down
(Standard Cell)
Metoda projektowania Bottom-Up (Full
Custom
Metoda projektowania Bottom-Up bazuje (głównie) na
ręcznej konstrukcji bloków obwodów na poziomie
tranzystorów oraz topologii maski. Są one następnie łączone
w celu sformowania kompletnego projektu. Dzięki
elastyczności na niższych poziomach projektowania, takich
jak
optymalizacja
rozmiarów
tranzystorów
oraz
minimalizacji elementów biernych, metoda Bottom-Up jest
bardzo użyteczna w projektowaniu modułów cyfrowych o
bardzo wysokiej gęstości oraz osiągach, jak również
zintegrowanych obwodach analogowych oraz mieszanych.
Metoda projektowania Bottom-Up (Full
Custom (2)
• Tworzone są schematy poszczególnych bloków funkcjonalnych
(połączenia tranzystorów obwodu wykonane w edytorze).
• Przeprowadzana jest symulacja połączeń tranzystorów
(sprawdzenie funkcjonalności bloków np. SPICE)
• Wykonywane jest projekt rozmieszczenia elementów
• Ekstrakcja (maskowanie) (wymiary urządzenia oraz parametry
pasożytnicze są zależne od rozplanowania maski)
• Sprawdzenie zgodności maski ze schematem obwodu
• Symulacja końcowa
Metoda projektowania Top_Down
(Standard Cell)
Metoda projektowania Top-Down odgrywa ważną rolę przy
automatycznej,
wspomaganej
komputerowo
syntezie
układów logicznych przy użyciu języków HDL. Syntetyzowana
logika jest przekształcana na standardowe komórki biblioteki
lub na FPGA. Metoda Top-Down stosowana jest tylko do
projektów cyfrowych posiadających stosunkowo krótkie cykle
produkcyjne oraz umiarkowane wymagania względem
efektywności układu.
Biblioteki
Zawierają dostępne
elementy oraz funkcje
Synteza logiczna oraz odwzorowanie bibliotek
Stworzenie opisu poziomu bramek przy użyciu
biblioteki komórek
Kod struktury (HDL)
Szczegółowy kod opisujący strukturę
poziomu bramek
Kod RTL (HDL)
Wyznaczenie zmiennych
boolowskich reprezentujących
wszystkie stany
Symulacja końcowa
Zasymulowanie końcowego układu logicznego w celu
zweryfikowania rzeczywistych opóźnień oraz możliwości układu
Rozmieszczenie elementów oraz ścieżek
Stworzenie struktury obwodu przy użyciu odpowiednich narzędzi
Symulacja cyfrowa
Weryfikacja logicznej funkcjonalności obwodu
Poziom opisu sieci bramek
Metoda projektowania Top_Down
(Standard Cell) (2)
Wytwarzanie
Masowa produkcja zaprojektowanego
układu
Testowanie
Weryfikacja osiągów układu oraz
zidentyfikowanie możliwości
wprowadzenia ewentualnych poprawek
Prototyp
Wyprodukowanie próbek układu
Stworzenie pliku w formacie
umożliwiającym opis kolejnych etapów
produkcji układu dla wytwórcy (Tape-
out)
Weryfikacja rozmieszczenia
Symulacje mające na celu zbadanie
funkcjonalności i osiągów całego układu
Rozmieszczenie elementów oraz ścieżek
całego układu (Top Level)
Produkcja
Etap ten zazwyczaj wymaga wielu modyfikacji w celu spełnienia
wymagań projektowych, wyprodukowania prototypu oraz wielokrotnego
testowania w celu skorygowania ewentualnych wad projektu.