1
SEMINARIUM DYPLOMOWE
Pytanie nr 15
„Proces projektowania
cyfrowego układu scalonego
(Design Flow)”
Wykonał: Marcin
Szulc
2
Układ scalony – (ang. intergrated circuit, chip)
(potocznie kość), zminiaturyzowany układ elektroniczny
zawierający w swym wnętrzu od kilku do setek
milionów podstawowych elementów elektronicznych,
takich jak tranzystory, diody, rezystory, kondensatory.
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 główne grupy:
monolityczne, w których wszystkie elementy,
elementy czynne wykonane są w monokrystalicznej
strukturze półprzewodnika,
hybrydowe - na płytki wykonane z izolatora
nanoszone są warstwy przewodnika oraz materiału
rezystywnego, które następnie są wytrawiane, 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).
3
Ze względu na grubość warstw rozróżnia się układy:
cienkowarstwowe (warstwy ok. 2 mikrometrów),
grubowarstwowe (warstwy od 5 do 50 mikrometrów).
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
.
4
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).
5
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.
Rys. 1. Schemat budowy układu sekwencyjnego
6
W najczęściej stosowanych układach cyfrowych
określa się dwa stany układu 0 i 1, ze względu na
to, że sygnał z układu może mieć różne wartości
spowodowane
sygnałami
wejściowymi
i
zakłóceniami przyjmuje się zakresy uznawania
sygnału za zero i jedynkę, czasami określa się też
tzw. stan zabroniony, lub nieokreślony.
Często stosuje się też pojęcia stan wysoki H
(high) oraz stan niski L (low).
Zazwyczaj stan wysoki odpowiada wartości 1, a
niski wartości 0, ale spotyka się też realizacje
odwrotne, gdzie brak sygnału lub jego niska
wartość oznacza wartość 1, a wysoka 0.
Układy 0, 1 są najczęściej stosowane w technice,
dlatego często technika cyfrowa jest utożsamiana
z wartościami 0 i 1 oraz z dwójkowym systemem
liczenia, co nie jest do końca prawdą.
7
Przy projektowaniu układów cyfrowych używa się
powszechnie 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.).
Ś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.
8
Pierwsze układy scalone były projektowane ręcznie (za
pomocą ołówka i kartki papieru). Wymagało to od
producenta zatrudnienia na długi okres czasu nie tylko
wielu doświadczonych inżynierów, ale i kreślarzy. W miarę
wzrostu złożoności układów, wydłużał się czas potrzebny
na zrealizowanie projektu, jak również rosły koszty
przygotowania układu do produkcji. W celu dotrzymania
kroku szybko zachodzącym zmianom, urządzenia muszą
być projektowane wyjątkowo szybko, co wymaga
automatyzacji projektowania. Projekty cyfrowe stały się w
dużej mierze uzależnione od stosowanych narzędzi
komputerowego wspomagania projektowania przy pomocy
narzędzi CAD (Computer-Aided Design), znanych jako
systemy automatycznego projektowania DA (Design
automation) lub systemy automatycznego projektowania
układów
elektronicznych
EDA
(Electronic
Design
Automation). Zastosowanie tych narzędzi pozwala na
realizację dwóch zadań:
syntezę – pozwala na translację specyfikacji (opisu) na
implementację projektu,
symulację – pozwala na analizę specyfikację lub
szczegóły implementacji w celu sprawdzenia poprawności
ich działania.
9
Ręczne projektowanie typowego układu VLSI
trwałoby kilka lat i pochłaniałoby ogromne sumy
pieniędzy. Zastosowanie systemów CAD pozwala
znacznie skrócić czas projektowania układów
scalonych i ma ogromne znaczenie ekonomiczne.
Celem zastosowania programów CAD są:
szybkie projektowanie,
wykrywanie błędów w projekcie,
umożliwienie szybkiego wprowadzania zmian,
weryfikacja,
testowanie,
symulacja projektu.
10
Proces projektowania cyfrowego układu scalonego
(Design Flow)
W celu projektowania systemów cyfrowych wykorzystujących bramki
logiczne opracowano formalne metody projektowania:
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.
11
Proces projektowania na każdym poszczególnym poziomie ma
charakter ewolucyjny. Rozpoczyna się od ustalenia określonych
wymagań. Następnie projekt jest rozwijany i testowany na
zgodność z wymaganiami. Jeśli okaże się być z nimi niezgodny,
wówczas musi być ulepszony.
Design Flow
Projekt architektury
funkcjonalnej
Specyfikacja
systemu
Weryfikacja
architektury
Projekt logiki układu
Weryfikacja logiki
układu
Projekt obwodu
Weryfikacja obwodu
Projekt fizyczny
układu
Weryfikacja
rozmieszczenia
elementów
Odwzorowanie
sposobu
zachowania
układu
Stworzenie
logiki układu
(poziom bramek
logicznych)
Tworzenie
obwodu
Rozmieszczanie
elementów
Wytworzenie
oraz testowanie
Rys. 2. Schemat ogólny procesu projektowania cyfrowego układu scalonego
12
Hierarchia projektowania
Hierarchia projektowania jest techniką wymagającą
podzielenia 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 trzy główne domeny projektowania układów
mogą posiadać hierarchiczną strukturę wyodrębnioną,
dla każdej z nich z osobna. Jednakże warunkiem
koniecznym jest takie uproszczenie projektu tak, aby
hierarchia w różnych domenach odnajdywała w prosty
sposób
swoje
odzwierciedlenie
we
wszystkich
pozostałych.
Jako przykład hierarchicznego podziału struktury może
posłużyć 4-bitowy sumator CMOS podzielony na
poszczególne komponenty. Pierwszym krokiem jest
podzielenie go na jedno-bitowy sumatory, które są
następnie dzielone na bity przeniesienia oraz sumy.
Ostatnim krokiem jest podzielenie ich na indywidualne
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.
13
Rys.3. Hierarchiczny podział struktury 4-bitowego sumatora CMOS podzielonego na poszczególne komponenty
14
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.
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 w miarę niezależne projektowanie modułu
od projektów innych modułów, dzięki temu, że nie ma
dwuznaczności pomiędzy zastosowaniami oraz granicami
dwóch bloków. Dzięki temu wszystkie bloki mogą zostać
połączone w jedną całość na koniec procesu w celu
stworzenia większego systemu. Dzięki modułowości możliwe
są równoległe prace nad poszczególnymi elementami
systemu. Dodatkową zaletą jest możliwość zastosowania
poszczególnych
modułów
w
innych
projektach
(projektowanie plug-and-play).
15
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ługo-dystansowych. 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.
16
Na poniższym wykresie zaprezentowano główne kroki typowych
przebiegów procesu projektowania cyfrowego układu scalonego
(Design Flow). Wyróżniamy dwie główne metody:
metoda Top-Down,
metoda Bottom-Up.
Podział na mniejsze
bloki funkcjonalne
(opcjonalnie)
Główna idea
systemu
Weryfikacja poziomów
systemu
Metoda Bottom-Up
(Full Custom)
Metoda Top-Down
(Standard Cell)
VLSI Design
Flow
17
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 razem
w celu sformowania kompletnej hierarchii
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.
18
Symulacja
Końcowa symulacja bloków
obwodu przeprowadzona
przy pomocy SPICE
Sprawdzenie zgodności
maski rozmieszczenia
elementów ze schematem
obwodu
Ekstrakcja (maskowanie)
Rzeczywiste wymiary
urządzenia oraz parametry
pasożytnicze są zależne od
rozplanowania maski
Rozmieszczenie
elementów
Rozmieszczenie
poszczególnych bloków
obwodów wykonane w
edytorze rozmieszczenia
Symulacja połączeń
tranzystorów
Symulacja bloków obwodu w
celu sprawdzenia ich
funkcjonalności np. przy
pomocy programu SPICE lub
innego
Schematy poszczególnych
bloków funkcjonalnych
Schemat połączeń
tranzystorów obwodu
wykonane przy pomocy
edytora schematów
Rys.5. Schemat przebiegu procesu projektowania metodą Bottom-Up (Full Custom)
19
Metoda projektowania Top-Down (Standard
Cell)
Metoda projektowania Top-Down odgrywa
podstawową
rolę
przy
automatycznej,
wspomaganej komputerowo syntezie bramek
przy użyciu języków programowania HDL.
Syntetyzowana
logika
jest
następnie
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.
20
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
Rys.6. Schemat przebiegu procesu projektowania metodą Top-Down (Standard Cell)
21
Etap produkcji od projektu rozmieszczenia elementów oraz
ścieżek do wyprodukowania gotowego chipu
Etap ten zazwyczaj wymaga wielu modyfikacji projektu
rozmieszczenia w celu spełnienia wymagań projektowych,
wyprodukowania prototypu oraz wielokrotnego testowania w celu
skorygowania ewentualnych wad projektu.
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)