Wydawanie poleceń w programie MAGIC

 

Opis dotyczy wersji skompilowanej pod systemem Ultrix, skróty i polecenia pod Cygwin mogą się nieznacznie różnić

 

 

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.

 

 

 

 Charakterystyka programu Magic

 Wstęp

 

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].

 

 Metody projektowania układów MOS

 

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.

 

Dostępne warstwy i ich opis

 

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.

 

Budowa tranzystorów

 

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.

 

Budowa kondensatorów

 

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.

 

Wyspy i pierścienie ochronne

 

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.

 

Zamiana typó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.

 

Spis warstw używanych w technologii SCMOS

 

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



[1] Technologia SCMOS jest udostępniona przez MOSIS i umożliwia wykonanie układów scalonych  n-well, p-well i double-well w szerokim zakresie wymiarów od 0.8mm do 3mm

[2] MOSIS - USC Information Sciences Institute