Ć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:

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łatwieniem 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:

Laboratorium nr 1. Uruchamianie środowiska Design Framework II oraz tworzenie nowej biblioteki

  1. Otworzyć nowe okno linii poleceń (Console, Terminal)
  2. Przejść do podkatalogu intro w swoim katalogu domowym przez wpowadzenie polecenia
  3. cd ~/intro

  4. Uruchomić środowisko Design Framework II przez wprowadzenie polecenia
  5. startcds &

  6. Utworzyć nową bibliotekę o nazwie Intro
    1. 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
    2. rys. 1

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

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

  1. Uruchomić program Library Manager przez wybranie z menu polecenia Tools -> Library Manager. Pojawi się wtedy okno o tej samej nazwie
  2. Utworzyć nową celkę o nazwie NAND2 z widokiem schematic
    1. W kolumnie Library okna Library Manager zaznaczyć bibliotekę Intro
    2. Z menu okna Library Manager wybrać polecenie File -> New -> Cell View
    3. 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

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

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

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

  5. W analogiczny sposób dodać tranzystory PMOS PM1 i PM2. Wzór formularza jest pokazany na rys. 6
  6. rys. 6

    1. Użyć celki pmos z biblioteki SCHEMA (także w kategorii mosfets)
    2. W polu Instance Names wpisać nazwy tranzystorów PMOS: PM1 i PM2
    3. W polu Width wpisać wartość 15u (szerokość kanału 15 mm)
    4. Kliknąć Hide i umieścić kolejno obydwa tranzystory na schemacie tak jak pokazano na rys. 4

  7. Dodać celki zasilania i masy
    1. Z menu okna Composer wybrać polecenie Add -> Component... (i)
    2. W oknie formularza (rys. 7) kliknąć Browse
    3. rys. 7

    4. W oknie Library Manager odszukać bibliotekę analogLib, a w niej kategorię sources, podkategorię Globals, celkę vdd i zaznaczyć widok symbol
    5. Kliknąć Close aby zamknąć okno i powrócić do formularza z rys. 7
    6. W polu Instance Names wpisać nazwę celki zasilania VDD
    7. Kliknąć Hide i umieścić celkę VDD na schemacie tak jak pokazano na rys. 4
    8. W analogiczny sposób dodać celkę o nazwie GND odpowiadającą masie. Wykorzystać celkę gnd z biblioteki analogLib (w tej samej kategorii)

  8. Dodać porty wejściowe A i B
    1. Z menu okna Composer wybrać polecenie Add -> Pin (p)
    2. Wypełnić formularz zgodnie ze wzorem pokazanym na rys. 8
    3. rys. 8

    4. Kliknąć Hide i umieścić porty A i B na schemacie tak jak pokazano na rys. 4

  9. Dodać port wyjściowy Z
    1. Z menu okna Composer wybrać polecenie Add -> Pin (p)
    2. Wypełnić formularz zgodnie ze wzorem pokazanym na rys. 9
    3. rys. 9

    4. Kliknąć Hide i umieścić port Z na schemacie tak jak pokazano na rys. 4

  10. Połączyć wszystkie elementy schematu tak jak pokazuje rys. 4
    1. Wybrać z menu polecenie Add -> Wire (narrow) (w)
    2. Kliknąć lewym przyciskiem myszy w węzeł początkowy i po zwolnieniu przycisku kliknąć w węzeł końcowy
    3. Powtórzyć ostatnią czynność dla wszystkich połączeń

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

  1. Automatycznie wygenerować symbol bramki ze schematu
    1. Z menu otwartego okna Composer wybrać polecenie Design -> Create Cellview -> From Cellview... Pojawi się formularz z rys. 10
    2. rys. 10

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

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

    8. W formularzu z rys. 11 kliknąć przycisk OK aby wygenerować symbol. Pojawi się wtedy nowe okno programu Composer z wygenerowanym, prostokątnym symbolem
    9. W nowym oknie Composer wybrać polecenie Design -> Save (F2) aby zapisać wygenerowany symbol, a następnie zamknąć okno poleceniem Window -> Close

  2. Zastąpić automatycznie wygenerowany prostokątny symbol symbolem z biblioteki
    1. Przejść do okna Library Manager
    2. Odszukać bibliotekę HRDLIB, a w niej celkę NA2 i zaznaczyć widok symbol
    3. Z menu wybrać polecenie Edit->Copy. Pojawi się formularz z rys. 13
    4. rys. 13

    5. 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)
    6. rys. 14

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

    11. Zmienić wyświetlany tekst (pole Label) na NAND2 i wielkość czcionki (pole Height) na 0.03 i kliknąć OK
    12. 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ść

mm

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:

  1. Aby utworzyć nowy layout celki NAND2
    1. Przejść do programu Library Manager i zaznaczyć celkę NAND2 w bibliotece Intro
    2. Z menu wybrać polecenie File -> New -> Cellview...
    3. 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

  2. Aby narysować prostokąt na wybranej warstwie
    1. W oknie LSW zaznaczyć wybraną warstwę
    2. Z menu okna Virtuoso wybrać polecenie Create -> Rectangle (r)
    3. Kolejno kliknąć lewym przyciskiem myszy w dwa miejsca odpowiadające przeciwległym wierzchołkom prostokąta

  3. Aby narysować ścieżkę o danej szerokości i na danej warstwie
    1. W oknie LSW zaznaczyć wybraną warstwę
    2. Z menu okna Virtuoso wybrać polecenie Create -> Path (p)
    3. Kliknąć lewym przyciskiem myszy w miejsce gdzie ma zaczynać się ścieżka
    4. 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
    5. rys. 18

    6. Kolejno klikać lewym przyciskiem myszy w miejsca gdzie ścieżka ma zmieniać kierunek
    7. Kliknąć podwójnie lewym przyciskiem myszy w miejsce gdzie ścieżka ma się kończyć

  4. Aby utworzyć kontakt lub via
    1. Z menu okna Virtuoso wybrać polecenie Create -> Contact... (o)
    2. W formularzu (rys. 19) wybrać odpowiedni rodzaj kontaktu (via), których funkcje objaśnia tabela 2
    3. 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

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

  5. Aby zaznaczyć obiekt(y)
    1. Aby zaznaczyć pojedynczy obiekt należy kliknąć lewym przyciskiem myszy w ten obiekt lub obwieść do ramką
    2. 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ą

  6. Aby skopiować istniejący obiekt(y)
    1. Z menu okna Virtuoso wybrać polecenie Edit -> Copy (c)
    2. Zaznaczyć obiekt(y) przeznaczone do skopiowania (trzymając wciśnięty klawisz SHIFT jeżeli chcemy zaznaczyć więcej niż jeden obiekt)
    3. Przemieścić nowy(e) obiekt(y) w żądane miejsce i kliknąć lewym przyciskiem myszy

  7. Aby przemieścić istniejący obiekt(y)
    1. Z menu okna Virtuoso wybrać polecenie Edit -> Move (m)
    2. Zaznaczyć obiekt(y) przeznaczone do przemieszczenia (trzymając wciśnięty klawisz SHIFT jeżeli chcemy zaznaczyć więcej niż jeden obiekt)
    3. Przemieścić obiekt(y) w żądane miejsce i kliknąć lewym przyciskiem myszy

  8. Aby zmienić rozmiary obiektu
    1. Z menu okna Virtuoso wybrać polecenie Edit -> Stretch (s)
    2. Kliknąć lewym przyciskiem myszy w krawędź obiektu, którą chcemy przesunąć
    3. Przesunąć krawędź w żądane miejsce i ponownie kliknąć lewym przyciskiem myszy

  9. Aby zmienić warstwę, na której leży istniejący obiekt
    1. Zaznaczyć obiekt
    2. Z menu okna Virtuoso wybrać polecenie Edit -> Properties... (q)
    3. W polu Layer formularza (rys. 20) wybrać nową warstwę i kliknąć OK

rys. 20

  1. Aby zmierzyć odległość między dwoma punktami
    1. Z menu okna Virtuoso wybrać polecenie Misc -> Ruler (k)
    2. Kolejno kliknąć w dwa punkty, między którymi ma być mierzona odległość
    3. Odczytać wynik z wyświetlonej linijki
    4. Aby usunąć wszystkie linijki wybrać polecenie Misc -> Clear Rulers (K)

  2. Aby zamienić layout hierarchiczny (wielopoziomowy) na płaski (jednopoziomowy)
    1. wybrać polecenie Edit -> Other -> Flatten
    2. wypełnić formularz jak pokazano na rys. 21 i kliknąć OK

    rys. 21

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

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

    6. W polu Rules File wpisać nazwę pliku z regułami DRC: divaDRC.rul i kliknąć OK

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

    6. 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
    7. Kliknąć przycisk Next lub Previous aby przejść do odpowiednio następnego i poprzedniego błędu

  5. Aby zmienić wyświetlaną siatkę złożoną z kropek na siatkę złożoną z linii (opcjonalne)
    1. Z menu okna Virtuoso wybrać polecenie Design -> Options -> Display (e)
    2. W formularzu (rys. 25) zmienić typ siatki z dots na lines
    3. rys. 25

    4. Kliknąć przycisk Save To aby zapisać zmiany w bieżącej celce
    5. Kliknąć OK aby powrócić do okna Virtuoso

  6. Aby zapisać layout należy z menu okna Virtuoso wybrać polecenie Design -> Save (F2)