Wydawanie poleceń w programie MAGIC
W programie MAGIC rozróżnia się dwa rodzaje poleceń:
krótkie i długie. Polecenia krótkie (nazywane także MACRO) wykonuje się poprzez
naciśnięcie pojedynczego klawisza odpowiadającego danemu działaniu. Polecenia
długie wydaje się poprzez napisanie dwukropka ‘:’ lub średnika ‘;’ oraz nazwy
polecenia wraz z parametrami a następnie naciśnięcie klawisza ‘ENTER’. Polecenia
długie i ich parametry można wywoływać stosując skróty o ile taki skrót
jednoznacznie określa dane polecenie lub parametr. Warunkiem wykonania
polecenia zarówno długiego jak i krótkiego jest umieszczenie kursora w obrębie
aktywnego okna graficznego. Litery duże i małe są rozróżniane. Lista dostępnych
poleceń wraz z krótkim ich opisem zamieszczona jest poniżej.
1) Uruchomienie programu
magic lub magic projekt lub magic -Ttech-file gdzie: projekt jest nazwą pliku który jest
automatycznie wczytywany do programu, tech-file
jest nazwą innego niż standardowy zbioru technologicznego..
Polecenia
długie:
:help przedmiot - wyświetlenie
pomocy na temat przedmiotu
:save [plik] - zapisanie na dysku w pliku aktualnie edytowanej komórki, standardowo przyjmowana jest
nazwa ostatnio używana
:load plik - odczytanie z dysku pliku do edycji
:quit -
zakończenie pracy z programem
2) Rysowanie i zaznaczanie elementów /
warstw
Polecenia
długie:
:box - wyświetla informacje o wymiarach i położeniu
boxu (możliwe jest również utworzenie boxu o zadanych wymiarach i położeniu)
:clockwise [stopnie] -
obrót wokół dolnego lewego narożnika. Stopnie
muszą być wielokrotnością 90, standardowo przyjmowane jest 90.
:copy - skopiowanie zaznaczonego elementu wraz z
boxem tak, że dolny lewy róg boxu znajduje się w nowej pozycji kursora
:delete - usunięcie wszystkiego co zostało wcześniej
zaznaczone
:erase warstwa -
wymazanie warstwy z obszaru objętego
boxem
:erase labels - usunięcie etykiet z obszaru objętego boxem
:findbox [zoom] -
przesunięcie ekranu tak aby zaznaczony
fragment znalazł się na środku, z parametrem zoom powiększa zaznaczony fragment na cały ekran
:grid [odstępy] - wyświetlanie
siatki o zadanych odstępach,
standardowo przyjmowana jest wartość jeden. Polecenie grid bez parametrów
powoduje kolejno włączanie i wyłączanie siatki
:label tekst[poz[war]] - przyporządkowanie etykiety miejscu
umieszczonemu pod krzyżykiem. Aby uzyskać krzyżyk należy przycisnąć najpierw
lewy a później prawy przycisk myszy. Pozycja
wskazuje gdzie tekst ma być wyświetlany w odniesieniu do krzyżyka (left, right, up, down, center). Warstwa określa której warstwie ma być
nadana etykieta.
:layers - wyświetlenie
informacji o warstwach dostępnych w bieżącej technologii
:macro [znak] -
wyświetlenie informacji o makrze przypisanym do znaku. Bez argumentów wyświetla informację o wszystkich makrach.
:macro znak polecenie - przypisanie znakowi polecenia. Ciąg
poleceń powinien być zawarty w cudzysłowach
:move [kier [odl]] - przesunięcie
zaznaczonego elementu wraz z boxem tak, że dolny lewy róg boxu znajduje się w
nowej pozycji kursora. Można określić kierunek
przesunięcia (left, right, up, down)
oraz odległość w liczbie jednostek
:paint warstwa -
narysowanie warstwy na obszarze
objętym boxem
:redo - odtworzenie cofnięcia
:select - zaznacza element znajdujący się pod
kursorem, kolejne wydawanie polecenia powoduje zaznaczanie coraz to większych
obszarów
:select more -
dodatkowo zaznacza element znajdujący się pod kursorem zamiast zastąpić
wcześniejsze zaznaczenie
:select area
[warstwy] - zaznacza warstwy na
obszarze objętym boxem. Standardowo zaznacza wszystkie warstwy.
:sideways - obrócenie zaznaczonego elementu prawa na lewą
:stretch [kier [odl]] - działanie podobne
do :move z tym, że element ulega
rozciągnięciu, a wszystkie warstwy które znajdowały się na jego drodze ulegają
usunięciu. Rozciąganie działa tylko poziomo lub pionowo
:undo - cofnięcie ostatnio wykonanego polecenia
:upsidedown - odwrócenie zaznaczonego elementu do góry
nogami
:view - wyświetlenie na ekranie zawartość całej
komórki
:what - wyświetlenie informacji o tym co jest
aktualnie zaznaczone
:writeall - zapisuje na dysk wszystkie komórki które były
edytowane w bieżącej sesji. Przed zapisaniem kolejnej komórki polecenie pyta
się co należy z nią zrobić do wyboru są możliwości: write - zapisanie komórki, flush
- przywrócenie starej zawartości z dysku, skip
- pominięcie komórki przy zapisywaniu, abort
- natychmiastowe zakończenie komendy
:zoom współczynnik - pomniejszenie obrazu o współczynnik.
Aby obraz zwiększyć należy użyć współczynnika o wartości mniejszej od 1.
Polecenia
krótkie:
a - skrót dla :select area
A - skrót dla :select
more area
b - skrót dla :box
B - skrót dla :findbox
c - skrót dla :copy
C - usunięcie zaznaczenia
d - skrót dla :delete
^D - usuwa warstwy z obszaru
objętego boxem, ale tylko te na które aktualnie wskazuje kursor
g - skrót dla :grid
G - skrót dla :grid 2
q,w,e,r -
skrót dla :move [left, down, up, right]
Q,W,E,R - skrót dla :stretch [left, down, up,
right]
s - skrót dla :select
S - skrót dla :select
more
t - skrót dla :move
T - skrót dla :stretch
u - skrót dla :undo
U - skrót dla :redo
v - skrót dla :view
z - skrót dla :zoom
Z - skrót dla :zoom 2
. - powtórzenie ostatnio wykonanego
długiego polecenia
Uwagi:
Najłatwiejszy sposób rysowania
polega na zaznaczeniu boxu, ustawieniu kursora nad kolorem na jaki chcemy
zamalować box a następnie kliknięciu środkowym przyciskiem myszy.
3) Tworzenie hierarchii komórek
Polecenia długie:
:array xilość yilość - na podstawie zaznaczonej komórki tworzy macierz komórek tak,
że wypełniają one dokładnie powierzchnię boxu a ich ilość w poziomie i w pionie
określają parametry xilość i yilość. Umożliwia również zmianę ilości
elementów i odstępów pomiędzy nimi w istniejącej już macierzy
:dump nazwa - odczytuje z dysku komórkę zapisaną w
zbiorze nazwa.mag i umieszcza ją na
ekranie. Nie tworzy hierarchii komórek
:edit - zaznaczona komórka staje się komórką
aktualnie edytowaną, wszystkie zmiany dokonane w takiej komórce zostaną
uwzględnione we wszystkich innych komórkach o tej samej nazwie
:expand - pokazuje pełny widok wszystkich komórek
objętych boxem
:expand toggle - przełącza pomiędzy pełnym widokiem
zaznaczonej komórki a jej ikoną
:flush [komórka] - przywraca
zawartość komórki z dysku.
Standardowo przyjmowana jest komórka aktualnie edytowana
:getcell nazwa - odczytuje
z dysku komórkę zapisaną w zbiorze nazwa.mag
i umieszcza ją tak że lewy dolny róg komórki pokrywa się z lewym dolnym rogiem
zaznaczonego boxu. Tworzy hierarchię komórek
:identify nowyid -
nadaje zaznaczonej komórce nowy identyfikator który musi być unikalny dla
całego projektu. Przy tworzeniu nowych komórek magic nadaje im identyfikatory
automatycznie
:path [ścieżka] -
definiuje ścieżkę poszukiwań wg.
której magic będzie przeglądał katalogi w celu odnalezienia określonej komórki.
Poszczególne elementy ścieżki muszą
być oddzielone dwukropkiem. Standardowo wyświetla aktualną ścieżkę
:see allSame - powoduje że wszystkie komórki są wyświetlane
z taką samą jaskrawością barw. Normalnie wszystkie komórki poza aktualnie
edytowaną są przyciemniane
:see no allSame - Przywraca standardowe wyświetlanie zawartości
komórek ze zróżnicowaną jaskrawością barw.
:select cell - zaznacza komórkę znajdującą się pod
kursorem. Komórkę można zaznaczyć poprzez samo :select jeżeli kursor wskazuje na jakiekolwiek miejsce w komórce
pozbawione rysunku
:select save
plik -
zapisuje na dysku zaznaczoną komórkę pod nową nazwą plik.mag
:unexpand - zamienia do postaci ikon wszystkie komórki
objęte boxem
Polecenia krótkie:
f - skrót dla :select cell
x - skrót dla :expand
X - skrót dla :unexpand
^X - skrót dla :expand
toggle
Uwagi:
Przy posługiwaniu się hierarchią
komórek należy zwrócić uwagę aby w komórce nadrzędnej komórki podrzędne nie
nakładały się na siebie. Chociaż jest to poprawne z punktu widzenia magic-a to
przysparza mu to dużo niepotrzebnej pracy i prowadzi często do pomyłek
powodowanych przez projektanta. Nakładanie się komórek na siebie należy
stosować tylko w przypadkach uzasadnionych.
Program Magic jest prostym edytorem topografii, który został napisany na Uniwersytecie Berkeley w Kaliforni i jest dostępny na wielu platformach systemowych takich jak: UNIX, Linux, OS2, DOS. Jest to program rozprowadzany bezpłatnie (public domain) i z tego względu jest wykorzystywany do celów edukacyjnych w wielu uniwersytetach na całym świecie. Magic jest jednym z pierwszych programów do projektowania topografii układów scalonych i został dość dobrze przetestowany i zmodyfikowany w ciągu kilku lat użytkowania. Poza tym dostępne są wersje źródłowe napisane w języku C, dlatego stosunkowo proste jest wprowadzanie zmian w programie i ciągła jego modyfikacja.
Mimo niekomercyjnego charakteru programu przy jego użyciu wykonano wiele realizacji praktycznych układów scalonych na całym świecie. Zbiory technologiczne są więc wielokrotnie zweryfikowane i sprawdzone.
Podstawową cechą programu Magic jest to, iż do projektowania używane są warstwy ‘abstrakcyjne’, a nie wzory masek. W stosunku do edytorów masek technologicznych jest to istotne usprawnienie przyśpieszające i upraszczające w znaczny sposób proces projektowania. Spośród wielu innych cech najbardziej istotne możliwości programu Magic do projektowania topografii analogowych układów scalonych są następujące:
- bieżąca kontrola reguł technologicznych;
- wbudowany hierarchiczny ekstraktor topografii;
- rozwinięte funkcje edytorskie takie, jak: obracanie, odbijanie, kopiowanie, przesuwanie, rozciąganie;
- hierarchiczne łączenie projektów;
- możliwość tworzenia zbiorów technologicznych CIF i Calma.
W niniejszej pracy zostanie opisany program Magic w wersji 6.4.4 oraz technologia SCMOS[1] dostępna poprzez MOSIS[2].
Najważniejszą charakterystyczną cechą technologii SCMOS (skalowalne CMOS) jest to, iż jest łatwo skalowalna oraz łatwo przenoszalna. Topografie układów scalonych zaprojektowane przy użyciu technologii SCMOS mogą być wyprodukowane w innej n-well lub p-well technologii z dużym wyborem oferowanych do dyspozycji szerokości tranzystorów. W Magic-u wszystkie rysowane elementy schematu muszą mieć wielokrotność jednostki podstawowej, która równa jest połowie minimalnego wymiaru. W celu udostępnienia w przyszłości możliwości praktycznego realizowania układu w innej n-well lub p-well technologii, muszą występować kontakty do wysp typu p (p-well) oraz do wysp typu n (n-well) i pierścienie ochronne oddzielnie wokół obu typów tranzystorów. W procesie produkcyjnym jeden typ wysp, jeden typ pierścieni ochronnych i jeden z typów kontaktów do podłoża zostanie zignorowany. Wszystkie warstwy w Magic-u są traktowane jako warstwy ‘abstrakcyjne’, które nie określają dokładnego wzoru maski użytej do zrealizowania projektu. Do procesu produkcyjnego warstwy z Magic-a muszą być przetransformowane na format warstw typu CIF lub Calma, które określają maski topografii. Generalnie warstwy łączące takie, jak metal1, metal2, poly lub dyfuzje zostaną przetransformowane do zbioru CIF lub Calma tak, jak zostały narysowane. Wyspy mogą być narysowane jawnie lub zostawione do automatycznego wygenerowania przez program Magic.
Technologia SCMOS dostarcza dwa poziomy metali. Wszystkie kontakty łączone są z metalem pierwszym (metal1 lub metal).
Metal pierwszy (metal1)
Warstwa metalu pierwszego jest rysowana w kolorze niebieskim. Nazywana jest ona metal1, m1 lub blue. Warstwa metal1 powinna posiadać minimalną szerokość 3 jednostki i minimalną odległość pomiędzy metalami przynajmniej 3 jednostki..
Metal drugi (metal2)
Górna warstwa metalu nazwa się metal2, m2 lub purple i rysowana jest w kolorze purpurowym. Metal drugi musi być przynajmniej o szerokości 3 jednostek i musi być oddalony od każdego innego o przynajmniej 4 jednostki.
Polisilikon (poly)
Polysilikon rysowany jest w kolorze czerwonym oraz nazywany jest w Magic-u jako: polysilicon, poly, red lub p. Polysilikon powinien posiadać minimalną szerokość 2 jednostki, minimalną odległość pomiędzy polysilikonem 2 jednostki.
Drugi polisylikon (poly2)
Polysilikon drugi rysowany jest w kolorze żółtym. Warstwa ta może być wprowadzana w Magicu jako: poly2, elektrode, el lub p2. Polysilikon2 powinien posiadać minimalną szerokość 2 jednostki, minimalną odległość pomiędzy poly2 a ploy2 3 jednostki.
Dyfuzje
Najczęściej rysowaną dyfuzją jest dyfuzja typu p (p-diffusion) na wyspie typu n (n-well) lub podłożu typu n (n-substrate) oraz dyfuzja typu n (n-diffusion) na wyspie typu p (p-well) lub podłożu typu p (p-substrate). Warstwy te są używane do tworzenia tranzystorów MOS typu p i n. Dyfuzja typu p na wyspie typu n jest rysowana w jasno brązowym kolorze. Może się ona nazywać pdiffusion, pdiff i brown dla dyfuzji typu p. Dyfuzja typu n na wyspie typu p jest rysowana w kolorze zielonym i może być nazywana: ndiffusion, ndiff lub green.
Dyfuzja typu p na wyspie typu p jest rysowana w jasno brązowym kolorze. Warstwę tę nazywa się psubstratepdiff, psd, ppdiff, ppd lub pohmic. Dyfuzja typu n na wyspie typu n jest rysowana w kolorze jasno zielonym z i nazywa się nsubstratendiff, nsd, nndiff, nnd lub nohmic.
Reguły projektowania dla dyfuzji typu p i n są takie same. Muszą być one o szerokości co najmniej 3 jednostek, odległości pomiędzy takimi samymi typami dyfuzji co najmniej 3 jednostek.
Dyfuzjami są także obszary wysp. Wyspa typu p. Nazywa się pw lub pwell, a wyspa typu n nw lub nwell. Wyspy muszą być przynajmniej o szerokości 4 jednostek, odległości pomiędzy tymi samymi typami co najmniej 3 jednostki. Odległości pomiędzy rożnymi typami będą omówione poniżej.
Kontakty do metalu 2
Wszystkie kontakty wymagają warstwy metal1. W Magic-u kontakty nie są rysowane jako dwie powierzchnie metalu zachodzące na siebie ze spoiwem w postaci przelotki. Zamiast tego rysuje się pojedynczy obszar specjalnego typu o nazwie np. metal2contact w przypadku gdy łączymy z warstwą metal2. Magic w pliku wyjściowym automatycznie wygeneruje metal1 i metal2 oraz przelotkę w środku powierzchni kontaktu. Wszystkie kontakty muszą być prostokątne. Kontakty z metal1 do metal2 są nazywane metal2contact, m2cut, m2c, via, v. Pojawiają się one na ekranie jako powierzchnia metal1 nad powierzchnią metal2 z czarnym wzorem nad kontaktem. Kontakt do metalu2 musi być przynajmniej o szerokości 4 jednostek. Zalecane jest aby kontakt do metalu 2 był wymierzany wymiarach: 4, 9, 14, 24 ... (1+1+2+5k) , gdzie: k=0,1,2,3... .
Dodatkową specjalną regułą dla kontaktów metal2 jest to, że nie może być żadnych krawędzi poly lub dyfuzji pod kontaktami do metal2 lub w zasięgu jednej jednostki do niego, ponieważ trudno jest wytworzyć kontakt do metalu2 nad obszarem krawędzi poly lub dyfuzji. Do zaakceptowania jest położenie poly lub dyfuzji pod kontaktami do metalu2, jeżeli poly lub dyfuzja całkowicie pokrywa powierzchnię kontaktu i dodatkowo otacza ją z zapasem jednej jednostki.
Kontakty do poly, poloy2 i
dyfuzji
Kontakty pomiędzy metal1 i poly nazywają się polycontact, pcontact, polycut, pc. Kontakt do poly musi być o szerokości przynajmniej 4 jednostek i musi być w odległości od poly lub kontaktu do poly 3 jednostek. Jest to jedna jednostka więcej niż odległość pomiędzy poly a poly. Kontakt do poly musi być w odległości przynajmniej 1 jednostki od dyfuzji.
Kontakt do poly2 (electrode) nazywa się electrodecontact, econtact, ec, poly2contact lub p2c. Szerokość kontaktu do poly2 musi mieć przynajmniej 4 jednostki. Kontakt ten musi być przynajmniej w odległości 3 jednostek od kontaktu do poly nawet jeżeli są one połączone z tą samą warstwą metalu1. Warstwa ta jest używana do tworzenia kondensatorów poly/poly2.
Kontakty pomiędzy metalem1 i dufuzją typu n są nazywane ndcontact, ndiffcut, ndc. Kontakty do dyfuzji typu p nazywane są pdcontact, pdiffcut, pdc. Kontakty do podłoża typu n nazywają się nsubstratecontact, nwcontact, nsc, nwc. Kontakty do podłoża typu p nazywają się psubstratecontact, pwcontact, psc, pwc. Kontakty do podłoża są używane do utrzymania na podłożu odpowiedniego napięcia, aby zapobiec zatrzaskiwaniu się układu. Wszystkie kontakty muszą być szerokości co najmniej 4 jednostek oraz oddzielone od innej dyfuzji o przynajmniej 4 jednostki (jedna jednostka więcej niż odległość dyfuzja dyfuzja). Rekomendowane jest aby kontakty do poly, poly2 lub dyfuzji były wielkości wielokrotności 4 jednostek. Kontakty do poly, poly2 i dyfuzji rysowane są na ekranie jako połączenie między dwoma warstwami z zakreskowanym obszarem kontaktu. Wszystkie kontakty muszą być kształtu prostokątnego. Następujące typy kontaktów mogą stykać się brzegami: kontakt do dyfuzji typu p i kontakt do podłoża typu n oraz kontakt do dyfuzji typu n i kontakt do podłoża typu p, inne są zabronione. Kontakt do poly musi być w odległości przynajmniej 2 jednostek od kontaktów do dyfuzji, nawet jeśli dwa kontakty są połączone elektrycznie. Poly2 musi być przynajmniej w odległości 2 jednostek od kontaktów do dyfuzji.
Warstwa szkła (overglass) i
pola kontaktowe (pads)
Cały obszar struktury układu scalonego jest pokryty warstwą szkła, która zabezpiecza dodatkowo układ. Jeżeli istnieje potrzeba, aby niektóre obszary nie były pokryte warstwą szkła, Magic posiada specjalne dwa typy warstw, które można do tego użyć. Są to pola kontaktowe (pads) i warstwa nazwana glass. Pola kontaktowe powodują otwory w pokrywającym układ szkle, składają się z metal1, metal2 i kontaktu pomiędzy metal1 i metal2. Pola kontaktowe są wyświetlane jako metal2 nad metalem1 z diagonalnymi liniami. Reguły dla pól kontaktowych nie są mierzone w jednostkach l, ale w mikrometrach, dlatego też pola kontaktowe nie są sprawdzane przez reguły Magic-a. Każdy bok pola kontaktowego musi mieć przynajmniej 100 mm.
Drugą warstwą, która dostarcza projektantom możliwość robienia cięć w szkle w dowolnym miejscu na podłożu dla sondowania lub innych celów, nazwana jest glass. Warstwa ta rysowana jest z ciemnymi paskami po przekątnej. Powierzchnie sondowania powinny być o szerokości przynajmniej 75 mm, jednak Magic nie sprawdza tej reguły.
Przestrzeń
pomiędzy warstwami typu n i p
Dyfuzja typu n, tranzystor typu n, kontakt do dyfuzji typu n oraz kontakty do wysp typu p muszą znajdować się daleko od dyfuzji typu p, tranzystorów typu p, kontaktów do dyfuzji typu p oraz kontaktów do wysp typu n. Dyfuzja typu n musi być w odległości przynajmniej 10 jednostek od dyfuzji typu p. Kontakty do podłoża mogą być o 2 jednostki bliżej od materiału o przeciwnym typie (wyspy nie muszą ich otaczać na tak dużo jednostek), tak że kontakty do wysp typu n potrzebują jedynie 8 jednostek odległości od dyfuzji typu n, kontakty do podłoża typu p muszą być odległe od dyfuzji typu p o przynajmniej 8 jednostek, kontakty do wyspy typu n powinny być odległe jedynie 6 jednostek od kontaktów do wyspy typu p.
Tranzystory typu p są rysowane jako powierzchnia dyfuzji typu p (pdiffusion) pokryta polysilikonem (poly). Magic akceptuje następujące nazwy dla tej warstwy: pfet lub ptransistor. Tranzystory typu n są rysowane jako powierzchnia dyfuzji typu n pokryta polysilikonem.. Tranzystory obu typów mogą być generowane przez narysowanie poly oraz dyfuzji jedne na drugim lub przez narysowanie bezpośrednio warstwy tranzystorowej. Reguły projektowania są takie same dla obu typów tranzystorów. Tranzystory muszą być przynajmniej o długości 2 jednostek i o szerokości 3 jednostek. Poly użyte jako bramka musi wystawać poza obrzeża kanału tranzystora przynajmniej na 2 jednostki. Dyfuzje typu n i p muszą wystawać poza obrzeża kanału tranzystora przynajmniej na 3 jednostki oraz muszą być odległe przynajmniej o 1 jednostkę od kontaktu do poly. Poly musi być przynajmniej 1 jednostkę dalej od obrzeża dyfuzji wykluczając obszar, gdzie tworzy ona tranzystor. Tranzystory muszą być przynajmniej w odległości 2 jednostek od siebie.
Warstwa typu polysylikon2 (poly2) także może być użyta do tworzenia tranzystorów poprzez pokrycie poly2 dyfuzją typu n lub p. Magic akceptuje następujące nazwy dla tak zbudowanego tranzystora: epfet lub eptranzistor dla tranzystora typu p oraz enfet lub entranzistor dla tranzystora typu n. Oba typy tranzystorów tworzone są przez narysowanie poly2 i dyfuzji jedno na drugim lub przez narysowanie bezpośrednio warstwy tranzystorowej. Reguły projektowe dla obu typów tranzystorów są te same: tranzystory muszą być przynajmniej o długości 2 jednostek i o szerokości 3 jednostek. Poly2 użyte jako bramka w tranzystorze musi wystawać poza obrzeże tranzystora przynajmniej na 2 jednostki, a dyfuzje typu n lub p muszą wystawać poza obszar tranzystora przynajmniej na 3 jednostki. Dyfuzje muszą być w odległości od kontaktów poly2 przynajmniej 1 jednostki z wyłączeniem obszaru, gdzie poly2 tworzy bramkę tranzystora. Tranzystory te muszą być przynajmniej 3 jednostki odległe od innych.
Dwie warstwy polisilikonu poly i poly2 pokrywające dyfuzję tworzą tranzystor dwubramkowy. Do tworzenia tranzystorów dwubramkowych w Magic-u można użyć specjalnej warstwy nazwanej: doubleptransistor, pfloating-gate, pfloatg, pffet lub pfg dla tranzystorów typu p. Dla dwubramkowych tranzystorów typu n Magic akceptuje następujące nazwy: doublentransistor, nfloating-gate, nfloatg, nffet lub nfg. Dwubramkowy tranzystor musi być długości przynajmniej 3 jednostek i szerokości 2 jednostek.
Program Magic nie rozpoznaje, że narysowane dwie warstwy poly i poly2 jedna nad drugą, są użyte do tworzenia tranzystorów dwubramkowych. Magic powiadamia w tym przypadku o złamaniu reguł projektowych rysując zakreskowany teren. Magic podstawowo traktuje dwie warstwy poly i poly2 jedna nad drugą, jako kondensator i sygnalizuje złamanie reguł projektowych. Dla tranzystorów z dwoma bramkami ignoruje się pogwałcenie tych reguł projektowych.
Warstwy poly i pol2 narysowane jedna na drugiej używane są do budowy precyzyjnych kondensatorów do projektów analogowych. W Magic-u istnieje specjalna warstwa dla kondensatorów. Nazywa się ona capacitor, polycap, pcap lub cap. Dla kondensatorów warstwa poly musi otaczaćwarstwę poly2 w przynajmniej na 2 jednostki szerzej. Warstwa poly2 musi być przynajmniej w odległości 2 jednostek od wysp i kontaktów do poly. Podczas tworzenia kontaktów do poly2 dla kondensatora warstwa poly2 musi pokrywać warstwę kontaktu i rozciągać się przynajmniej dwie jednostki dalej. Taki kontakt do kondensatora nazwany jest: ccontact lub capc lub cc. Kontakty do poly muszą być w odległości przynajmniej 2 jednostek o warstwy poly2. Magic ekstraktuje kondensator jako dwukońcówkowy tranzystor fet. MOSIS wykonał kilka modyfikacji dla programów ext2sim i sim2spice, które pozwalają na automatyczną ekstrakcję pojemności.
Dla większości przypadków nie trzeba rysować jawnie wysp jednakże zalecane jest, aby je rysować. Podczas tworzenia plików wyjściowych CIF lub Calma Magic tworzy automatycznie wyspy. Wyspa typu n jest rysowana wokół dyfuzji typu p, tranzystorów typu p, kontaktów do dyfuzji typu p i kontaktów do podłoża typu n. Wyspa typu p jest rysowana wokół dyfuzji typu n, tranzystorów typu n, kontaktów do dyfuzji typu n i kontaktów do podłoża typu p. Magic zlewa blisko występujące obok siebie wyspy w jedną dużą wyspę, jeżeli jest to możliwe. Dwie dyfuzje typu p i n będą występować na tej samej wyspie jeżeli odległość między nimi jest mniejsza od 10 jednostek. Żeby zaobserwować jakiej warstwy Magic użył, jako wyspy, można użyć komendy :cif (na ekranie pojawią się wtedy nazwy warstw w formacie CIF). Żeby zagwarantować, aby w odpowiednim miejscu znajdowała się wyspa, rysuje się w tym miejscu jawnie warstwę nwell lub pwell. Tak narysowane wyspy będą dodatkiem automatycznego generowania wysp. Wyspa typu p musi być przynajmniej pięć jednostek od dyfuzji typu p, tranzystora typu p lub kontaktu do dyfuzji typu p i trzy jednostki od kontaktu do wyspy typu p. Wyspy typu n i p mogą występować obok siebie, jednak nie mogą na siebie zachodzić (jeżeli zostanie narysowana jedna wyspa nad drugą, to nowa wyspa zastąpi starą). Wszystkie wyspy typu n i p muszą być szerokości przynajmniej 10 jednostek i odseparowane od innych wysp o tym samym typie o przynajmniej 9 jednostek.
Pierścienie ochronne rysuje się, aby uniknąć zatrzaskiwania się układu. Rysuje się je wokół tranzystorów o tym samym typie. Pierścienie ochronne tworzone są poprzez rysowanie warstwy silnie domieszkowanej o typie domieszkowania zgodnym z typem podłoża (lub wyspy). Można to wykonać rysując warstwę psd na podłożu typu p lub warstwę nsd na podłożu typu n. Kontakty do warstw nndiffusion i ppdiffusion powinny być użyte do związania pierścieni odpowiednio do Vdd i GND. Silna dyfuzja typu n musi być przynajmniej w odległości 3 jednostek od wyspy typu p i 6 jednostek od silnej dyfuzji typu p lub kontaktów do silnej dyfuzji typu p oraz 8 jednostek od dyfuzji typu n lub kontaktów do dyfuzji typu n (takie same reguły dla kontaktów do silnej dyfuzji typu n). Aby się układ nie zatrzaskiwał stosuje się kontakty do podłoża i wysp.. Dobrą regułą jest to, aby stosować przynajmniej taką ilość kontaktów do podłoża, ile jest tranzystorów.
W programie Magic zostały wprowadzone pewne funkcje, aby łatwo można było zamieniać domieszkowanie z typu n na p i odwrotnie. Jeżeli zostanie narysowana wyspa typu n (nwell) nad dyfuzją typu n, to zamieni się ona na dyfuzję typu p (ndiff è pdiff), tranzystor typu n na p (nfet è pfet), kontakty do dyfuzji typu n na kontakty do dyfuzji typu p (ndc è pdc), kontakty do podłoża typu p., na kontakty do podłoża typu n (psc è nsc) i silne dyfuzje typu p na silne dyfuzje typu n (psd è nsd). Podobnie jeżeli narysujemy wyspę typu p (pwell) nad dyfuzją typu p., to zamieni się ona na dyfuzję typu n (pdiff è ndiff), tranzystor typu p na n (pfet è nfet), kontakty do dyfuzji typu p na kontakty do dyfuzji typu n (pdc è ndc), silne dyfuzje typu n, na silne dyfuzje typu p (ndc è pdc), kontakty do podłoża typu n, na kontakty do podłoża typu p (nsc è psc). Jest to użyteczne do robienia symetrycznych kopii pewnego obszaru. Kopiuje się wówczas dany obszar, rysuje wyspę o przeciwnym typie nad tym obszarem, a następnie kasuje ją, aby zostawić tylko podstawowe warstwy.
pw , pwell wyspa typu p
nw , nwell wyspa typu n
p , poly , polysilicon , red poly
el , electrode , p2 , poly2 poly2
cap , capacitor , pcap , polycap kondensator
green , ndiff , ndiffusion dyfuzja
typu n
brown , pdiff , pdiffusion dyfuzja
typu p
pohmic , ppd , psd , psubstratepdiff dyfuzja typu p na podłoży typu p
nnd , nohmic , nsd , nsubstratendiff dyfuzja typu n na podłożu typu n
blue , m1 , metal1 metal1
m2 , metal2 , purple metal2
nfet , ntransistor tranzystor typu n
pfet , ptransistor tranzystor typu p
enfet , entransistor tranzystor typu n na bramce z poly2
epfet , eptransistor tranzystor typu p na bramce z poly2
doublentransistor , nffet , nfg ,
nfloatg , nfloating-gate tranzystor
typu n dwubramkowy
doubleptransistor , pffet , pfg ,
pfloatg , pfloating-gate tranzystor
typu p dwubramkowy
pc , pcontact , polycontact , polycut kontakt do poly
ndc , ndcontact , ndiffcut kontakt do dyfuzji typu n
pdc , pdcontact , pdiffcut kontakt do dyfuzji typu p
capc , capcontact , cc , ccontact kontakt do kondensatora
ec , econtact , electrodecontact ,
p2c , poly2contact kontakt do poly2
m2c , m2contact , m2cut , v , via kontakt do metalu2
psc , psubstratepcontact , pwc , pwcontact kontakt do podłoża (wyspy)typu p
nsc , nsubstratencontact , nwc , nwcontact kontakt do podłoża (wyspy)typu n
pad pole kontaktowe
glass otwory w szkle
Opracowane na podstawie pracy dyplomowej „Synteza środkowoprzepustowego filtru aktywnego OTA-C za pomocą sygnałowego grafu przepływowego”, G. Pankiewicz WETI PG, 1996