Ćwiczenie nr 1. Wprowadzenie do środowiska CADENCE
Środowisko
Cadence IC Package służy do projektowania układów scalonych typu ASIC (Application-Specific Integrated Circuit) oraz mikroczujników i mikromechanizmów opartych na krzemie. W szczególności umożliwia ono:
- Projektowanie topografii masek układów scalonych (
Virtuoso Layout Editor)
Projektowanie schematów elektrycznych i logicznych (Composer Schematics Editor)
Tworzenie symboli elementów elektrycznych i logicznych (Composer Symbol Editor)
Wtórną ekstrakcję parametrów elektrycznych z layout’ów układów scalonych
Sprawdzanie reguł projektowych DRC (Design Rule Checking) i ERC (Electrical Rule Checking)
Symulację analogową (Analog Artist, cdsSpice, Spectre)
Modelowanie układów analogowych w języku Verilog-A (Spectre)
Symulację behawioralną układów cyfrowych opisanych w języku VHDL (Leapfrog)
Symulację behawioralną i/lub strukturalną układów cyfrowych opisanych w języku Verilog (Verilog-XL Logic Simulator)
Automatyczną syntezę schematu logicznego z opisu w języku VHDL (Synergy)
Automatyczną syntezę topografii masek układów typu Standard Cell ze schematu logicznego lub elektrycznego (Cell Ensemble, Gate Ensemble, Silicon Ensemble)
Konwersję z i do formatów takich jak CIF, EDIF i GDSII (ten ostatni jest wykorzystywany do wytwarzania układów w fabryce).
Cadence jest oferowany w wersji na stacje robocze typu Sun SparcStation i Sun Ultra (system operacyjny Solaris 2.x) oraz stacje robocze firmy Hewlett Packard (system operacyjny HP-UX). Obydwa te systemy operacyjne są zgodne ze standardem UNIX.
Dużym uła
twieniem korzystania z pakietu Cadence jest jego bardzo rozbudowany graficzny interfejs użytkownika. Podstawę stanowi tzw. Design Framework II (DFII), z którego można wywoływać większość narzędzi należących do pakietu. Są jednak i takie narzędzia (np. Silicon Ensemble), których interfejsu użytkownika nie można uruchomić z poziomu Design Framework II i trzeba to zrobić z poziomu poleceń UNIX’a.
Do pakietu Cadence są dostępne biblioteki (tzw. Design Kits) umożliwiające projektowanie układów scalonych w konkretnych technologiach krzemowych, takich jak austriacki AMS czy francusko-belgijski Alcatel MIETEC. Biblioteki te obejmują reguły projektowe (design rules) do danej technologii oraz zestaw tzw. celek standardowych (standard cells), czyli gotowych elementów, które można wykorzystać przy tworzeniu własnych projektów.
Cele ćwiczenia
Celem tego ćwiczenia jest:
- Nauka uruchamiania środowiska
Design Framework II pakietu Cadence
Opanowanie podstaw posługiwania się menedżerem bibliotek (Library Manager)
Opanowanie podstaw projektowania schematów elektrycznych i logicznych oraz symboli elementów przy pomocy programu Composer
Opanowanie podstaw projektowania topografii masek układów scalonych przy pomocy programu Virtuoso
Laboratorium nr 1. Uruchamianie ś
rodowiska Design Framework II oraz tworzenie nowej biblioteki
Otworzyć nowe okno linii poleceń (Console, Terminal)
Przejść do podkatalogu intro w swoim katalogu domowym przez wpowadzenie polecenia
cd ~/intro
Uruchomić środowisko Design Framework II przez wprowadzenie polecenia
startcds &
Utworzyć nową bibliotekę o nazwie Intro
Z menu okna głównego icfb (zwanego także CIW – Command Interpreter Window) wybrać polecenie File -> New -> Library... Pojawi się wtedy formularz pokazany na rys. 1

rys. 1
Wpisać nazwę nowej biblioteki: Intro w polu nazwy i kliknąć OK. Pojawi się wtedy nowy formularz, pokazany na rys. 2

rys. 2
Wybrać technologię TECH_CYE i kliknąć OK aby zakończyć tworzenie biblioteki
Laboratorium nr 2. Projektowanie schematu elektrycznego 2-wejściowej bramki NAND w technologii CMOS
Uruchomić program Library Manager przez wybranie z menu polecenia Tools -> Library Manager. Pojawi się wtedy okno o tej samej nazwie
Utworzyć nową celkę o nazwie NAND2 z widokiem schematic
W kolumnie Library okna Library Manager zaznaczyć bibliotekę Intro
Z menu okna Library Manager wybrać polecenie File -> New -> Cell View
wypełnić formularz zgodnie ze wzorem pokazanym na rys. 3 i kliknąć OK. Otworzy się wtedy okno programu Composer w trybie edycji widoku schematic celki NAND2

rys. 3
Dodać tranzystory NMOS NM1 i NM2 (patrz rys. 4)

rys. 4
Z menu okna Composer wybrać polecenie Add -> Component... (i)
W oknie formularza (rys. 5) kliknąć w przycisk Browse. Pojawi się wtedy drugie, mniejsze okno programu Library Manager

rys. 5
W kolumnie Library odszukać i zaznaczyć bibliotekę SCHEMA
Zaznaczyć opcję Show Categories i rozszerzyć okno w razie potrzeby tak, aby były dobrze widoczne wszystkie kolumny
W kolumnie Category odszukać kategorię mosfets, a następnie w kolumnie Cell celkę nmos i w kolumnie View zaznaczyć widok symbol
Nacisnąć przycisk Close aby zamknąć okno i powrócić do formularza z rys. 5
W polu Instance Names wpisać nazwy tranzystorów NMOS: NM1 i NM2
W polu Width wpisać wartość 6u (czyli szerokość kanału równa 6 mm)
Kliknąć przycisk Hide i umieścić kolejno obydwa tranzystory na schemacie tak jak pokazano na rys. 4
W analogiczny sposób dodać tranzystory PMOS PM1 i PM2. Wzór formularza jest pokazany na rys. 6

rys. 6
Użyć celki pmos z biblioteki SCHEMA (także w kategorii mosfets)
W polu Instance Names wpisać nazwy tranzystorów PMOS: PM1 i PM2
W polu Width wpisać wartość 15u (szerokość kanału 15 mm)
Kliknąć Hide i umieścić kolejno obydwa tranzystory na schemacie tak jak pokazano na rys. 4
Dodać celki zasilania i masy
Z menu okna Composer wybrać polecenie Add -> Component... (i)
W oknie formularza (rys. 7) kliknąć Browse

rys. 7
W oknie Library Manager odszukać bibliotekę analogLib, a w niej kategorię sources, podkategorię Globals, celkę vdd i zaznaczyć widok symbol
Kliknąć Close aby zamknąć okno i powrócić do formularza z rys. 7
W polu Instance Names wpisać nazwę celki zasilania VDD
Kliknąć Hide i umieścić celkę VDD na schemacie tak jak pokazano na rys. 4
W analogiczny sposób dodać celkę o nazwie GND odpowiadającą masie. Wykorzystać celkę gnd z biblioteki analogLib (w tej samej kategorii)
Dodać porty wejściowe A i B
Z menu okna Composer wybrać polecenie Add -> Pin (p)
Wypełnić formularz zgodnie ze wzorem pokazanym na rys. 8

rys. 8
Kliknąć Hide i umieścić porty A i B na schemacie tak jak pokazano na rys. 4
Dodać port wyjściowy Z
Z menu okna Composer wybrać polecenie Add -> Pin (p)
Wypełnić formularz zgodnie ze wzorem pokazanym na rys. 9

rys. 9
Kliknąć Hide i umieścić port Z na schemacie tak jak pokazano na rys. 4
Połączyć wszystkie elementy schematu tak jak pokazuje rys. 4
- Wybrać z menu polecenie
Add -> Wire (narrow) (w)
- Kliknąć lewym przyciskiem myszy w węzeł początkowy i po zwolnieniu przycisku kliknąć w węzeł końcowy
- Powtórzyć ostatnią czynność dla wszystkich połączeń
Sprawdzić poprawność elektryczną schematu i zapisać go wywołując polecenie Design -> Check and Save (X) (nie zamykać okna Composer)
Laboratorium nr 3. Projektowanie symbolu bramki NAND
Automatycznie wygenerować symbol bramki ze schematu
Z menu otwartego okna Composer wybrać polecenie Design -> Create Cellview -> From Cellview... Pojawi się formularz z rys. 10

rys. 10
Wypełnić formularz zgodnie ze wzorem i kliknąć OK. Wtedy pojawi się formularz z rys. 11

rys. 11
Kliknąć przycisk List znajdujący się po prawej stronie pola Right Pins
W formularzu z rys. 12 przestawić przełącznik Pin Graphics w pozycję actLo i kliknąć OK

rys. 12
W formularzu z rys. 11 kliknąć przycisk OK aby wygenerować symbol. Pojawi się wtedy nowe okno programu Composer z wygenerowanym, prostokątnym symbolem
W nowym oknie Composer wybrać polecenie Design -> Save (F2) aby zapisać wygenerowany symbol, a następnie zamknąć okno poleceniem Window -> Close
Zastąpić automatycznie wygenerowany prostokątny symbol symbolem z biblioteki
- Przejść do okna
Library Manager
Odszukać bibliotekę HRDLIB, a w niej celkę NA2 i zaznaczyć widok symbol
Z menu wybrać polecenie Edit->Copy. Pojawi się formularz z rys. 13

rys. 13
Wypełnić formularz zgodnie ze wzorem i kliknąć OK. Pojawi się wtedy okno informujące, że celka zawiera już widok o podanej nazwie (rys. 14)

rys. 14
W polu Action zmienić wartość na Overwrite i kliknąć OK aby zastąpić istniejącą celkę
Ponownie otworzyć zaktualizowany widok symbol celki NAND2
Zaznaczyć myszą pole tekstowe z napisem NA2 i wybrać polecenie Edit -> Properties -> Objects... (q). Pojawi się formularz z rys. 15

rys. 15
Zmienić wyświetlany tekst (pole Label) na NAND2 i wielkość czcionki (pole Height) na 0.03 i kliknąć OK
Zapisać nowy symbol i zamknąć okno
Laboratorium nr 4. Projektowanie layout’u 2-wejściowej bramki NAND CMOS
Layout bramki, którą należy zaprojektować został pokazany na rys. 16. Do projektowania topografii masek służy program
Virtuoso Layout Editor.

rys. 16
Tabela 1 zawiera wykaz użytych warstw, ich funkcje, minimalne dopuszczalne szerokości ścieżek oraz minimalne dopuszczalne odstępy między dwoma obiektami na danej warstwie
warstwa |
funkcja |
min. szer.
[mm] |
min. odstęp
[mm] |
NTUB |
studnia n-well na podłożu typu p |
5.0 |
7.0 |
PPLUS |
implantacja jonami boru (p+) |
1.6 |
1.6 |
DIFF |
dyfuzja arsenu (n) |
2.0 |
1.8 |
POLY1 |
I warstwa polikrzemu |
0.8 |
1.0 |
CONT |
kontakt z I warstwą metalizacji |
1.0 |
1.2 |
VIA |
via między I i II warstwą metalizacji |
1.2 |
1.6 |
MET1 |
I warstwa metalizacji |
1.4 |
1.0 |
MET2 |
II warstwa metalizacji |
1.6 |
1.2 |
tab. 1
Z kolei tabela 2 pokazuje zależności między niektórymi parami warstw, takie jak minimalny odstęp między obiektami na tych warstwach oraz minimalny margines, z jakim obiekt na jednej warstwie musi otaczać obiekt na drugiej warstwie
warstwa zewnętrzna |
warstwa wewnętrzna |
min. odstęp [ mm] |
min. otaczanie [mm] |
NTUB |
PPLUS |
|
2.2 |
NTUB |
DIFF |
|
3.0 |
PPLUS |
DIFF |
0.8 |
0.8 |
PPLUS |
CONT |
0.8 |
0.8 |
DIFF |
CONT |
0.8 |
0.5 |
POLY1 |
CONT |
0.8 |
0.4 |
POLY1 |
VIA |
1.0 |
1.0 |
POLY1 |
DIFF |
0.4 |
|
VIA |
CONT |
1.2 |
|
MET1 |
CONT |
|
0.2 |
MET1 |
VIA |
|
0.2 |
MET2 |
VIA |
|
0.3 |
tab. 2
Tabela 3 zawiera sugerowane wymiary i odległoś
ci dla projektowanej bramki logicznej
wymiar(y) / odległość |
m m |
długość kanału tranzystora NMOS/PMOS |
0.8 |
szerokość kanału tranzystora NMOS |
2 |
szerokość kanału tranzystora PMOS |
6.4 |
min. wystawanie bramki tranzystora ponad obszar dyfuzji |
0.6 |
odległość krawędzi obszaru dyfuzji źródła/drenu od bramki |
2.4 |
wymiary kontaktu |
1.0 ´ 1.0 |
wymiary via |
1.2 ´ 1.2 |
min. odstęp między kontaktami |
1.2 |
odległość między bramkami tranzystorów NMOS/PMOS |
2.8 |
odległość między obsz. dyfuzji tranzystoró w NMOS i PMOS |
6.0 |
szerokość ścieżki metalu 1 przenoszącej sygnał |
1.4 |
szerokość ścieżki metalu 1 doprowadzającej zasilanie/masę |
3.0 |
szerokość ścieżki metalu 2 |
1.8 |
tab. 3
Wskazówki:
- Aby utworzyć nowy layout celki
NAND2
- Przejść do programu
Library Manager i zaznaczyć celkę NAND2 w bibliotece Intro
- Z menu wybrać polecenie
File -> New -> Cellview...
- Wypełnić formularz tak jak pokazano na rys. 17 i kliknąć
OK aby utworzyć nowy layout. Pojawi się wtedy puste okno programu Virtuoso oraz okno z listą dostępnych warstw LSW (Layer Selection Window)

rys. 17
Aby narysować prostokąt na wybranej warstwie
W oknie LSW zaznaczyć wybraną warstwę
Z menu okna Virtuoso wybrać polecenie Create -> Rectangle (r)
Kolejno kliknąć lewym przyciskiem myszy w dwa miejsca odpowiadające przeciwległym wierzchołkom prostokąta
Aby narysować ścieżkę o danej szerokości i na danej warstwie
W oknie LSW zaznaczyć wybraną warstwę
Z menu okna Virtuoso wybrać polecenie Create -> Path (p)
Kliknąć lewym przyciskiem myszy w miejsce gdzie ma zaczynać się ścieżka
Jeżeli szerokość rysowanej ścieżki ma być większa niż minimalna dopuszczalna szerokość ścieżki dla danej warstwy, wcisnąć klawisz F3, zmienić szerokość w polu Width na wartość żądaną i kliknąć przycisk Hide

rys. 18
Kolejno klikać lewym przyciskiem myszy w miejsca gdzie ścieżka ma zmieniać kierunek
Kliknąć podwójnie lewym przyciskiem myszy w miejsce gdzie ścieżka ma się kończyć
Aby utworzyć kontakt lub via
- Z menu okna Virtuoso wybrać polecenie Create -> Contact... (o)
- W formularzu (rys. 19) wybrać odpowiedni rodzaj kontaktu (via), których funkcje objaśnia tabela 2

rys. 19
kontakt |
funkcja |
warstwa 1 |
warstwa 2 |
warstwa 3 |
ND_C |
kontakt między obszarem typu n i metalem 1 |
DIFF |
MET1 |
|
PD_C |
kontakt między obszarem typu p i metalem 1 |
DIFF |
PPLUS |
MET1 |
P1_C |
kontakt między polikrzemem 1 i metalem1 |
POLY1 |
MET1 |
|
P2_C |
kontakt mię dzy polikrzemem 2 i metalem 1 |
POLY2 |
MET1 |
|
VIA_C |
via między metalem 1 i metalem 2 |
MET1 |
MET2 |
|
tab. 2
- Kliknąć przycisk
Hide, a następnie miejsce, gdzie ma powstać kontakt. Przy przełączniku Justification ustawionym w pozycji centerCenter powinno to być miejsce, gdzie ma być środek kontaktu
Aby zaznaczyć obiekt(y)
- Aby zaznaczyć pojedynczy obiekt należy kliknąć lewym przyciskiem myszy w ten obiekt lub obwieść do ramką
- Aby zaznaczyć więcej niż jeden obiekt należy klikać lewym przyciskiem myszy w kolejne obiekty trzymając wciśnięty klawisz SHIFT lub obwieść obiekty ramką
Aby skopiować istniejący obiekt(y)
- Z menu okna Virtuoso wybrać polecenie Edit -> Copy (c)
- Zaznaczyć obiekt(y) przeznaczone do skopiowania (trzymając wciśnięty klawisz SHIFT jeżeli chcemy zaznaczyć więcej niż jeden obiekt)
- Przemieścić nowy(e) obiekt(y) w żądane miejsce i kliknąć lewym przyciskiem myszy
Aby przemieścić istniejący obiekt(y)
- Z menu okna Virtuoso wybrać polecenie Edit -> Move (m)
- Zaznaczyć obiekt(y) przeznaczone do przemieszczenia (trzymając wciśnięty klawisz SHIFT jeżeli chcemy zaznaczyć więcej niż jeden obiekt)
- Przemieścić obiekt(y) w żądane miejsce i kliknąć lewym przyciskiem myszy
Aby zmienić rozmiary obiektu
- Z menu okna Virtuoso wybrać polecenie Edit -> Stretch (s)
- Kliknąć lewym przyciskiem myszy w krawędź obiektu, którą chcemy przesunąć
- Przesunąć krawędź w żądane miejsce i ponownie kliknąć lewym przyciskiem myszy
Aby zmienić warstwę, na której leży istniejący obiekt
- Zaznaczyć obiekt
- Z menu okna Virtuoso wybrać polecenie Edit -> Properties... (q)
- W polu Layer formularza (rys. 20) wybrać nową warstwę i kliknąć OK

rys. 20
Aby zmierzyć odległość między dwoma punktami
Z menu okna Virtuoso wybrać polecenie Misc -> Ruler (k)
Kolejno kliknąć w dwa punkty, między którymi ma być mierzona odległość
Odczytać wynik z wyświetlonej linijki
Aby usunąć wszystkie linijki wybrać polecenie Misc -> Clear Rulers (K)
Aby zamienić layout hierarchiczny (wielopoziomowy) na płaski (jednopoziomowy)
- wybrać polecenie
Edit -> Other -> Flatten
wypełnić formularz jak pokazano na rys. 21 i kliknąć OK

rys. 21
Aby wygenerować dodatkowe warstwy FIMP i NPLUS (konieczne przed sprawdzeniem zgodności z regułami projektowymi DRC)
Z menu okna Virtuoso wybrać polecenie Verify -> DRC...
W formularzu (rys. 23) kliknąć przycisk Set Switches. Wtedy pojawi się okno z dostępną listą przełączników (rys. 22)

rys. 22
Zaznaczyć przełączniki pokazane na rys. 22 i kliknąć OK aby powrócić do formularza z rys. 23

rys. 23
W polu Rules File wpisać nazwę pliku z regułami DRC: divaDRC.rul i kliknąć OK
Aby sprawdzić zgodność layout’u z regułami projektowymi DRC
Z menu okna Virtuoso wybrać polecenie Verify -> DRC...
W formularzu (rys. 23) wyczyścić pole Switch Names i kliknąć OK
Obserwować wyniki testu w oknie głównym Cadence (icfb)
W razie wystąpienia błędów wybrać polecenie Verify -> Markers -> Find... Pojawi się wtedy formularz z rys. 24

rys. 24
Zaznaczyć opcję Zoom To Markers i kliknąć Apply aby obejrzeć fragment layout’u, w którym wystąpił błąd i przeczytać opis tego błędu
Kliknąć przycisk Next lub Previous aby przejść do odpowiednio następnego i poprzedniego błędu
Aby zmienić wyświetlaną siatkę złożoną z kropek na siatkę złożoną z linii (opcjonalne)
Z menu okna Virtuoso wybrać polecenie Design -> Options -> Display (e)
W formularzu (rys. 25) zmienić typ siatki z dots na lines

rys. 25
Kliknąć przycisk Save To aby zapisać zmiany w bieżącej celce
Kliknąć OK aby powrócić do okna Virtuoso
Aby zapisać layout należy z menu okna Virtuoso wybrać polecenie Design -> Save (F2)