Link - Institut für Angewandte Mikroelektronik und Datentechnik

Werbung
Anleitung Laborpraktikum VLSI-Technik: Versuch 3 / Verhalten des „realen IC“
Inhalt
1.
Einleitung ........................................................................................................................................................................ 1
2.
Erstellen eines Inverters ................................................................................................................................................. 1
3.
Erstellen eines Blockes / Modules ................................................................................................................................ 14
4.
Bau eines komplexen Gatters: Buffer ........................................................................................................................... 17
1. Einleitung
Diese Anleitung soll einen Einblick in die Arbeit mit dem kostenlosen Tool LTSpice
(http://www.linear.com/designtools/software/) geben. Ziel ist es einen Inverter zu bauen, um diesen anschließend als
Modul/Komplexgatter wiederverwenden zu können. Für den Bau eines Buffers wird dann der definierte Inverter
genutzt. Zusätzlich wird erläutert wie man Spannungen und den Stromaufnahme der Schaltung ermitteln kann. Darüber
hinaus wird dargestellt wie man einzelne Parameter definiert und dynamisch verändern kann, ohne diese dabei statisch
festzulegen. Die Oberfläche ist in Abbildung 1: LTSpice IV zu sehen.
Abbildung 1: LTSpice IV
2. Erstellen eines Inverters
Zuerst öffnen Sie das Programm LTSpice und wählen Sie, falls noch kein leeres Schematic erstellt wurde, „FileNew
Schematic“. Ein Inverter in CMOS besteht aus einem PMOS und einem NMOS Transistor. Hierzu klicken Sie auf das
„Component“ Symbol in der oberen Leiste. Nun sollte das Menu aus Abbildung 2: Komponenten aufgehen. Wählen Sie
zuerst die Komponente NMOS4 aus und fügen Sie dieses per Linksklick dem Schematic hinzu.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 2: Komponenten
Anschließend wählen Sie die PMOS4 Komponente. Nun sollte dasselbe wie in Abbildung 3: NMOS4 und PMOS4
Komponente zu sehen sein.
Abbildung 3: NMOS4 und PMOS4 Komponente
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Nun müssen die Transistoren mit den eigenen Transistoren aus der Bibliothek verbunden werden. Hierzu wird direkt der
Komponentenname verwendet. Klicken Sie hierzu rechts auf das Wort NMOS. Jetzt sollte ein Menü, wie in Abbildung 4:
Verbinden der Transistoren und an die Bibliothek binden aufgehen. Übernehmen Sie die entsprechenden Werte
(„NMOS_VTG L=ln W=wn“). Das gleiche führen Sie für den PMOS Transistor durch und benennen diesen um
(„PMOS_VTG L=lp W=wp“).
Abbildung 4: Verbinden der Transistoren und an die Bibliothek binden
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Der Komponentenname entspricht der Modelbezeichnung des Transistors in der Bibliothek selbst. Wir verwenden die
Modelle NMOS_VTG und PMOS_VTG, welche die Simulationsmodelle mit physikalischer Beschreibung für eine 45nmTechnologie enthalten. Zusätzlich werden direkt die Längen und Weiten der Transistoren im Namen mit angegeben. Für
die Längen und Weitenangabe wurden die Parameter wn, wp, ln und lp gewählt. Zusätzlich wurden die Transistoren
bereits verbunden. Das Ergebnis ist in Abbildung 5: Benennung der Transistoren mit Parametern zu sehen.
Abbildung 5: Benennung der Transistoren mit Parametern
Zusätzlich müssen die Parameter definiert werden. Dies erfolgt mittels Spice Direktiven. Hierzu klicken Sie in der oberen
Toolbar das Symbol „.op“. Spice Direktiven stellen hierbei direkte Kommandos direkt an den Spice Simulator dar und
können in der Netzliste nachvollzogen werden. Diese Direktiven werden im Schematic als Textitem hinzugefügt.
Zusätzlich wird der Ausgang mit einem mit der Masse verbundenen Kondensator belastet, was eine Last simulieren soll.
Der NMOS_VTG Transistor wird ebenfalls geerdet. Das Ergebnis ist in Abbildung 6: Erdung und Last des Inverters zu
sehen.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 6: Erdung und Last des Inverters
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Als nächstes werden die Versorgungspannung und der Eingangswert des Inverters durch zwei Spannungsquellen
wiedergegeben. Das Einfügen der Spannungsquellen erfolgt wieder über das „Componenten“ Symbol. Siehe Abbildung
7: Einfügen einer Spannungsquelle.
Abbildung 7: Einfügen einer Spannungsquelle
Eine Spannungsquelle versorgt die Schaltung mit einer 1 V DC Spannung. Die zweite Spannungsquelle soll eine AC
Spannung erzeugen. Um dies zu erreich klicken Sie bei der Spannungsquelle rechts auf den unteren Wert und geben Sie
dort „1“ an. Bei der zweiten Quelle geben Sie statt „1“ folgenden Befehl an: „PULSE(0 1 0 20P 20P 4.98N 10N)“. Was AC
Spannung mit einer Periode von 10 ns (100MHz) erzeugt mit einer steigenden und fallenden Flanke von 20 ps. Das
Ergebnis ist in Abbildung 8: Definieren der Spannungsquellen zu sehen.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 8: Definieren der Spannungsquellen
Nun ist die Schaltung Komplett. Drücken Sie nun in der oberen Leiste das „Run“ Symbol. Nun geht ein Fenster auf mit
der Simulationsbeschreibung. Geben Sie hier im unteren freien Textfeld unter „Syntax“ Folgendes an: „.tran 0.05p 30n“.
Dies bewirkt eine Simulationsdauer von 30 ns bei einer Auflösung von 0.05 ps. Siehe Abbildung 9:
Simulationsbeschreibung.
Abbildung 9: Simulationsbeschreibung
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Beim Drücken auf OK wird nun ein Fehler, dass der Parameter C nicht verwertbar ist. Es fehlt ein Wert für die
Lastkapazität. Klicken Sie rechts auf „C“ und setzen Sie den Wert auf 1f, was einem Femto Farad entspricht.
In Abbildung 10: CMOS Inverter ist das finale Layout noch einmal dargestellt.
Abbildung 10: CMOS Inverter
Drücken Sie nun erneut das „Run“ Symbol. Es geht ein zusätzliches Fenster auf, in dem man sich die Spannungen und
Ströme anzeigen lassen kann. Um eine Spannung anzuzeigen machen Sie einen Linksklick auf die entsprechenden Stellen
im Schematic (siehe Abbildung 11: Spannung messen). Den Strom kann man sich direkt anzeigen lassen, indem man
zusätzlich die „Alt“-Taste drückt.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 11: Spannung messen
Ein Wertepaar (z.B. Spannungswert und Zeit) kann man direkt ablesen, indem man im Diagramm auf die entsprechende
Stelle geht. Die Werte werden dann direkt in der unteren linken Ecke angezeigt (Siehe Abbildung 12: Werte ablesen).
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 12: Werte ablesen
Um jedoch den Strom über eine Zeit zu messen ist es sinnvoll den Wert zu akkumulieren. Dazu setzen wir eine zweite
Spannungsquelle nach der Versorgungsspannung ein, die eine Spannung von 0 Volt erzeugt. Diese Spannungsquelle
nennen wir VStrommessung. Mit der Spice Direktive „.meas Strom1 avg i(VStrommessung) from=1n to=10n“ geben wir
an, dass wir den Strom von der 1 ns bis 10 ns messen wollen. Die beschriebene Schaltung ist in Abbildung 13:
Strommessung zu sehen. Der gemessene Strom wird in der „log“-Datei gespeichert. Diese kann man aufrufen indem
man „ViewSpice Error Log“ (siehe Abbildung 14: Gemessenen Stromwert anzeigen) auswählt. Hier ist der Strom1 mit
gemessenen Wert angegeben.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 13: Strommessung
Abbildung 14: Gemessenen Stromwert anzeigen
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Die Funktionalität des Inverters ist in Abbildung 15: Inverter Spannungen dargestellt. In Blau ist der Eingangswert zu
sehen. Grün ist der Ausgangswert des Inverters.
Abbildung 15: Inverter Spannungen
Diese Werte gelten aber nur für eine Transistorgröße. Es ist oft sinnvoll bestimmte Werte dynamisch ändern zu lassen.
Hierzu werden die Parameter wn und wp variabel definiert mit den folgenden abgeänderten Spice Direktiven: „.param
wp= ‚wn*2‘“ und „.step param wn 20n 100n 10n“ (sieheAbbildung 16: Wn Parameter dynamisch setzen). Dies bedeutet,
dass Wn von 20 nm bis 100 nm in 10 nm Schritten variiert wird.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 16: Wn Parameter dynamisch setzen
Als Ergebnis bekommen Sie nun mehrere Spannungskurven. Es gibt genau eine Spannungskurve pro Wn Wert (siehe
Abbildung 17: Plot verschiedene Wn's).
Abbildung 17: Plot verschiedene Wn's
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
3. Erstellen eines Blockes / Modules
Nun haben wir einen Inverter aus Transistoren gebaut. Oft ist es aber nötig die entworfene Schaltung als eigenes Symbol
und dahinterstehenden Modul zu gestalten. Hierzu müssen zuerst alle Stromquellen entfernt werden und alle Spice
Direktiven. Das Ergebnis ist in Abbildung 18: Inverter als Subcircuit erstellen zu sehen.
Abbildung 18: Inverter als Subcircuit erstellen
Alle Netze die nach außen sichtbar sein sollen müssen Label erhalten. Dies geschieht durch Klicken des Symboles „Label
Net“ in der oberen Leiste. Nun gibt man einem Netz einen Namen und, ob es ein Input, Output oder Bidirektionaler Port
ist (siehe Abbildung 19: Die Netze benennen).
Abbildung 19: Die Netze benennen
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Die komplette Bezeichnung der Netze ist in Abbildung 20: Komplette Beschreibung der Netze zu sehen.
Abbildung 20: Komplette Beschreibung der Netze
Die Bezeichnung der Label ist hierbei besonders wichtig. Diese sollten eindeutige Namen haben. Die Schaltung ist nun als
„Subcurcuit“ definiert und in der Datei „Inverter_Block_IMD.asc“ gespeichert. Die Datei wird nun auf der der
eingebundenen Festplatte <GStud*> gespeichert. Erstellt hierzu einen neuen Ordner „LTSPICE_IMD“. Alle eure Dateien
werden nun im Pfad <GStud*\LTSPICE_IMD> gespeichert. Was noch fehlt ist ein Symbol. Hierzu gehen Sie auf
„FileNew Symbol“. Es öffnet sich eine leere Zeichenfläche. Speichern Sie zunächst die Datei ab. Der Name vor der
Endung muss denselben Namen haben wie der der Schaltung, was in diesem Fall „Inverter_Block_IMD.asy“ ergibt. Auch
diese Datei wird im Ordner <GStud*\LTSPICE_IMD> gespeichert. Zeichnen Sie zunächst einen Inverter mit Hilfe der
Zeichenprimitiven. Als Beispiel sei hier die Abbildung 21: Inverter zeichnen aufgeführt.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 21: Inverter zeichnen
Bis jetzt wurde nur die äußerliche Repräsentation erstellt. Es fehlen noch die Ports. Die Ports müssen hierbei die
gleichen Namen tragen, wie die Namen der Netze im Subcurcuit. Wir brauchen in diesem Fall 4 Ports (IN, OUT, VDD,
GND). Um einen Port zu erstellen gehen Sie auf „EditAdd Pin/Port“ und platzieren Sie diesen an den geeigneten
Stellen. Das Ergebnis ist in Abbildung 22: Inverter Layout mit Pins zu sehen.
Abbildung 22: Inverter Layout mit Pins
Zusätzlich muss man nun noch den Instanz Namen zum Symbol ergänzen. Dies geschieht durch die Auswahl
„EditAttributesAttribute Window. Im neuen Fenster wählt man nun InstName und bestätigt mit Ok. Nun setzt man
den Platzhalter im Symbol Layout an eine passende Stelle (sieheAbbildung 23: Instanznamen hinzufügen). Die Namen
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
der Dateien müssen nun gleich sein, sowie die Pinnamen und die Labelnamen der Netze. Sollte dies der Fall sein ordnet
LTSpice das Symbol dem Subcicuit zu. Das Symbol kann nun verwendet werden.
Abbildung 23: Instanznamen hinzufügen
Jetzt kann man mittels des „Component“ Symbol in der oberen Leiste die Liste der Komponenten öffnen und den neu
erstellten Inverter auswählen. Hierzu wählen wir unter Top Directory den Pfad, wo das Subcircuit und das Symbol
gespeichert wurden. Dies ist in unserem Fall im <GStud*\LTSPICE_IMD> Ordner. Der neue eigens erstellte Inverter sollte
nur zur Auswahl zur Verfügung stehen.
4. Bau eines komplexen Gatters: Buffer
Ein Buffer besteht aus zwei hintereinander gesetzten Invertern. Dafür sollen die neu erstellten Inverter genutzt werden.
Zuerst werden zwei Instanzen des zuvor erstellten Inverters genutzt und verbunden. Spannungsquellen und eine
Kapazität am Ausgang dienen als realistische Umgebung. Zusätzlich werden wieder die Spice Direktiven genutzt, um die
Transistormodelle einzubinden, sowie die variablen Parameter zu setzen. Das Resultat der Schaltung ist in Abbildung 24:
Buffer bestehend aus zwei Invertern zu sehen. Die Ergebnisse sind in Abbildung 25: Simulationsergebnisse dargestellt.
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Abbildung 24: Buffer bestehend aus zwei Invertern
Abbildung 25: Simulationsergebnisse
M.Sc. Jan Skodzik
Universität Rostock, Fakultät f. Informatik und Elektrotechnik
Institut f. Angewandte Mikroelektronik und Datentechnik
Herunterladen