Podręcznik
3. Układy specjalizowane – zarys metod projektowania
3.6. Narzędzia komputerowego wspomagania projektowania
Minimalny zestaw programów umożliwiający zaprojektowanie układu scalonego składa się z następujących programów:
Programy do wprowadzania danych i tworzenia projektu:
- Edytor tekstowy
- Edytor topografii
Programy do weryfikacji:
- Program do kontroli reguł projektowania (DRC)
- Ekstraktor schematu elektrycznego
- Symulator układów elektronicznych (typu SPICE)
Funkcje tych programów mogą być połączone, na przykład edytor topografii ma często wbudowany moduł umożliwiający kontrolę reguł projektowania, co daje możliwość kontroli na bieżąco, w trakcie tworzenia topografii. Dzięki temu unika się pracochłonnych rozległych przeróbek projektu, jakie mogłyby być konieczne, gdyby naruszenia reguł projektowania zostały wykryte dopiero po zakończeniu projektowania topografii.
Wymienione wyżej programy umożliwiają wprowadzenie opisu schematu elektrycznego w postaci tekstowej (np. w języku wejściowym programu SPICE), wykonanie symulacji, zaprojektowanie topografii (tj. „narysowanie” jej na ekranie komputera w edytorze topografii), skontrolowanie, czy topografia ta spełnia reguły projektowania, odtworzenie (wyekstrahowanie) z topografii schematu elektrycznego, oraz poddanie tego schematu symulacji dla sprawdzenia, czy układ wyprodukowany na podstawie zaprojektowanej topografii będzie działał zgodnie z intencją projektanta. Może to być zarówno układ analogowy, jak i cyfrowy. Dodatkowym ułatwieniem przy projektowaniu może być graficzny edytor schematów, czyli program pozwalający „narysować” na ekranie komputera schemat układu zamiast opisywać go tekstowo. Dużą pomocą przy weryfikacji jest program do sprawdzenia zgodności schematów elektrycznych (Layout versus Schematic - LVS). Pozwala on skontrolować, czy schemat układu opisany tekstowo lub wprowadzony graficznie zgadza się ze schematem odczytanym z topografii przez ekstraktor.
Taki zestaw programów umożliwia projektowanie w stylu full custom. W tym przypadku programy komputerowe wspomagają pracę człowieka przy projektowaniu i umożliwiają weryfikację projektu, ale tej pracy nie automatyzują. Jak już wiemy, taki sposób projektowania jest niezwykle pracochłonny. W praktyce możliwe jest projektowanie w ten sposób układów mających do kilkuset elementów. Ten sposób projektowania nie ogranicza jednak w niczym swobody projektanta, dając mu największe możliwości optymalizacji projektu pod każdym względem. Od projektanta wymaga zarówno znajomości zagadnień układowych, jak i zrozumienia struktury fizycznej układu i działania jego elementów.
Warto dodać, że wymieniony wyżej zestaw oprogramowania można skompletować z bezpłatnych programów publicznie dostępnych, co umożliwia naukę projektowania w stylu full custom bez kosztownych inwestycji w oprogramowanie komercyjne. Niestety producenci układów nie dostarczają do tych programów plików konfigurujących te programy dla konkretnych technologii, np. plików z modelami tranzystorów czy też plików z regułami projektowania. Zatem w praktyce do projektów układów, które mają być wyprodukowane, trzeba użyć oprogramowania komercyjnego.
W przypadku układów cyfrowych mamy jednak możliwość daleko idącej automatyzacji procesu projektowania. Mamy do dyspozycji następujące programy:
Programy automatyzujące projektowanie
- Program syntezy logicznej
- Programy automatycznej syntezy struktury fizycznej układu
Programy do weryfikacji
- Symulator funkcjonalny
- Symulatory logiczne
Układ cyfrowy może być opisany w języku opisu sprzętu (o tych językach będzie mowa dalej) i poddany symulacji funkcjonalnej w celu sprawdzenia, czy opis jest poprawny, a układ działa zgodnie z intencją projektanta. Służą do tego programy umożliwiające symulację funkcjonalną. Prawidłowy opis funkcjonalny może być poddany syntezie logicznej, której ostatecznym wynikiem jest schemat logiczny układu złożony z bramek oraz ewentualnie większych bloków takich, jak sumatory, układy mnożące czy bloki pamięci. Taki schemat może być w mniejszym lub większym stopniu ulepszany lub uzupełniany przez projektanta, na przykład przy wykorzystaniu edytora schematów. Gotowy do dalszych prac projektowych schemat logiczny poddaje się weryfikacji przy użyciu symulatora logicznego. Jest kilka rodzajów takich symulatorów. Schemat logiczny może być reprezentowany przy pomocy typowych bramek cyfrowych, które wykonują określoną funkcję logiczną i dodatkowo mogą być scharakteryzowane pod względem parametrów elektrycznych, np. czasów propagacji sygnału (będzie o nich mowa dalej) czy też poboru mocy. Te dane mają oczywiście charakter przybliżony, bo na etapie symulacji logicznej, gdy fizyczna realizacja układu nie jest jeszcze znana, dokładne wartości parametrów elektrycznych nie są określone. Inny rodzaj symulatora logicznego to symulator, w którym elementami są pojedyncze tranzystory, ale traktowane są one jako idealne przełączniki, które przewodzą prąd lub nie. W wielu symulatorach mogą występować zarówno bramki, jak i pojedyncze tranzystory. Istnieją także symulatory umożliwiające symulację mieszaną - część układu może być symulowana logicznie, a część elektrycznie. Są one przydatne przy projektowaniu układów mieszanych, analogowo-cyfrowych.
Gdy schemat logiczny jest gotowy i zweryfikowany przy pomocy symulatorów, można projektować fizyczną strukturę układu. Wiele profesjonalnych systemów projektowania daje tu różne możliwości. Można wygenerować plik danych do zaprogramowania układu programowalnego (FPGA). Możliwe jest wykonanie automatycznej syntezy fizycznej struktury układu przy wykorzystaniu matryc bramkowych lub komórek standardowych. Wkrótce będzie to omawiane dokładniej.
W skład profesjonalnych systemów projektowania wchodzą też zwykle programy do rozwiązywania pewnych specjalnych problemów występujących zwłaszcza przy projektowaniu układów przeznaczonych do wytwarzania w najbardziej zaawansowanych technologiach lub układów, którym stawia się szczególnie wysokie wymagania. Przykłady takich programów to:
- Programy do szacowania poboru mocy
- Programy do projektowania i analizy sieci połączeń zasilania bloków układu
- Programy do projektowania sieci połączeń rozprowadzających sygnały zegarowe
- Programy do generacji testów dla układów cyfrowych
Te programy nie będą dalej omawiane, ale poruszone będą problemy, do rozwiązywania których te programy służą.
Odrębną kategorię systemów oprogramowania do projektowania układów scalonych stanowią systemy projektowania układów mikrofalowych. Krzemowe układy scalone CMOS z powodzeniem mogą pracować do częstotliwości rzędu kilkudziesięciu GHz, a układy bipolarne są przydatne nawet przy częstotliwościach rzędu setek GHz. Te układy i sposoby ich projektowania wykraczają poza zakres naszego wykładu.
Większość programów do projektowania i weryfikacji układów scalonych wymaga danych dotyczących konkretnej technologii, w której układy będą produkowane. Przykładowo, program do kontroli reguł projektowania musi mieć dany zestaw tych reguł, program do symulacji elektrycznej wymaga parametrów modeli elementów, itp. Tego rodzaju dane dostarczane są przez producentów w postaci zestawów plików zwanych plikami technologicznymi (w języku angielskim zwanych „design kit”, co można przetłumaczyć jako „pakiet projektowy”).