Grundwissen

Spice ist ein analoger Schaltkreis-Simulater der es erlaubt, Schaltkreise beliebiger Art zu Designen und zu simulieren. Weiterhin besteht die Möglichkeit, gelayoutete Schaltkreise in ein Spice-Format zu extrahieren und diese dann dort auf ihr richtiges Schaltverhalten zu überprüfen. Ein detailiertes Handbuch über Spice ist hier zu finden.

Neben der direkten Simulation von Schaltverhalten ist es auch möglich, physikalische Modelle als elektrische Modelle zu beschreiben. Beispiel wäre hier z.B. eine Biegebalkensensor (300mm x 100mm) zur Messung von Beschleunigungen. Diese Differentialgleichung kann auf einen elektrischen Schaltkreis abgebildet werden. Somit ist es auch möglich, gekoppelte Systeme aus Mikroelektronik und Mikromechnaik zu simulieren (=> Mikrosystemtechnik / Systemintegration)

Spice ist ein Programm, das man gut durch das arbeiten mit Beispielen lernen kann. Wir beschränken uns auf den CMOS-Prozeß, der als bekannt vorausgesetzt wird. Spice verfügt über eingebaute Transistor-, Widerstands- und Kapazitätsmodelle. Diese Modelle werden ausschließlich in Textform beschrieben. Die Verbindung zwischen den einzelnen Elementen (Devices) findet durch eine Netzliste statt. Gleiche Zahlen oder Wörter bedeuten, daß diese Punkte gleich sind und damit verbunden sind. Zunächst ein Beispiel:

 

MESFET Beschreibung

 

Erklärung:

M-Device gibt Spice an, welche Art von Transistor es sich handelt. M ist ein reservierter Buchstabe und bedeutet, daß es sich hier um ein MOSFET-Transistor handelt. Weiterhin muß jedes Element einzigartig sein. Daher müssen bei mehreren Elementen die Transitoren mit laufenden Nummern unterschieden werden. Neben den M-Element (MOSFET), gibt es noch weitere Modelle mit reservierten Buchstaben. Diese wären:

M Drain Gate Source Substrat <Typ> W=<Gateweite> L=<Gatelänge> MOSFET-Transistor
Q Drain Gate Source Substrat <Typ> W=<Gateweite> L=<Gatelänge> Bipolar-Transistor
R In Out <Ohm> Widerstand
C In Out <Kapazität> Kondensator

Die Bezeichner Drain, Gate, Source, Substrat, In und Out sind allesamt Bezeichner für die Netzliste und verknüpfen die Elemente untereinander. <Typ> gibt das zu verwendende Modell an. Spice verfügt über ein default-Transistor-Modell, das beim CMOS-Prozeß durch CMOSN, CMOSP aktiviert werden kann. Dieses ist jedoch nur ratsam, wenn nur qualitative Aussagen getroffen werden sollen, da diese keine Rücksicht auf den verwendeten Prozeß nehmen können. Für qantitative Aussagen ist daher das prozeßspezifische Modell zu verwenden. Später dazu mehr. Weiterhin müssen bei den Transistoren die Dimensionen festgeletgt werden. Dies geschieht über die Angabe von Gateweite und Gatelänge. Verwendete Einheit ist im Normalfall u für mm. Bei den Widerständen muß noch die Größe des Widerstandes angegeben werden. Die Größenangabe erfolgt hier in k oder M für kOhm oder MegaOhm. Die Kondensatoren müßen ebenfalls eine Größe erhalten und werden mit p oder f für PicoFarad oder FemtoFarad angegeben. Nun ein Beispiel:

M1 3 2 1 1 pmos  W=6.0u L=2.0u
Q1 0 3 1 1 bipol W=20u L=2u
R1 3 0 1k
C1 3 0 100f

Das angegebene Beispiel macht technologisch gesehen nicht viel Sinn, enthält jedoch den zu verwendenden Syntax.

 

Nun gehen wir zur Struktur eines Spice-Files über...

*** Header 1. Zeile ist immer Kommentar, * leitet Kommentar ein
<models> die zu verwendenden Transitor-Modelle
<options> Optionen (Geanauigkeit,...)
<Circuit-Description> Schaltkreis mit allen Elementen
<Operation> Was soll simuliert und ausgegeben werden
.END Jeder Spice-File wird mit .END abgeschlossen

Dazu ein Beispiel, ein Inverter mit einer kapazitiven Belastung vom 30fF am Ausgang. Es soll sich dabei um einen digitalen Inverter handeln, der mit den minimalsten Strukturgrößen des 1.2mm-Prozesses arbeiten soll.

*** Digital Inverter, minimum Size 1.2um-CMOS, CKarl 1998
*** MODELS
.MODEL nmos nmos LEVEL=3 PHI=0.700000 TOX=3.1400E-08 XJ=0.200000U TPG=1
+ VTO=0.6474 DELTA=1.6230E+00 LD=5.8150E-09 KP=8.0236E-05 
+ UO=729.6 THETA=1.2540E-01 RSH=9.0910E-02 GAMMA=0.5999 
+ NSUB=1.3110E+16 NFS=6.5000E+11 VMAX=2.1000E+05 ETA=9.9760E-02 
+ KAPPA=1.5680E-01 CGDO=9.5924E-12 CGSO=9.5924E-12 
+ CGBO=2.9552E-10 CJ=2.84E-04 MJ=0.517 CJSW=1.97E-10 
+ MJSW=0.100 PB=0.99
.MODEL pmos pmos LEVEL=3 PHI=0.700000 TOX=3.1400E-08 XJ=0.200000U TPG=-1
+ VTO=-0.8483 DELTA=1.8430E+00 LD=1.0280E-09 KP=1.9212E-05
+ UO=174.7 THETA=7.7780E-02 RSH=1.0500E-01 GAMMA=0.3635 
+ NSUB=4.8130E+15 NFS=6.5000E+11 VMAX=4.0030E+05 ETA=1.3040E-01 
+ KAPPA=9.9940E+00 CGDO=1.6958E-12 CGSO=1.6958E-12 
+ CGBO=3.1527E-10 CJ=3.02E-04 MJ=0.497 CJSW=2.59E-10 
+ MJSW=0.100 PB=0.99
*** Default Options ok!
*** Circuit Description...
M1 OUT IN 1 1 pmos W=3.6u L=1.2u
M2 OUT IN 0 0 nmos W=1.8u L=1.2u
C1 OUT 0 30fF
*** OPERATION
VDD 1 0 DC 5V
VIN IN 0 PULSE(0V 5V 50ns 1ns 1ns 10ns 30ns)
.TRAN 2n 150n
.PRINT TRAN v(IN) v(OUT)
.END

 

Erklärung:

Die Modelle für den jeweiligen Prozess werden von den Halbleiterherstellern auf dem Internet angeboten. Diese müssen nur kopiert und in den Spice-File eingefügt werden.

Die Default-Parameter für die Optionen des Simulators genügen den meisten Anforderungen und müssen nur für spezielle Anwendungen (Simulation im subthreshold) geändert werden.

Der Schaltkreis (Circuit) ist ein simpler Inverter mit einer kapazitiven Belastung von 30fF am Ausgang. Eingang ist die Node IN, Ausgang die Node OUT. Der Substratkontakt ist direkt mit den Spannungsversorgungen Node 1 (VDD) und Node 0 (GND) verbunden.

Auf den Abschnit Operation will ich noch genauer eingehen. Dieser Abschnitt enthält den Input für den Schaltkreis. V ist ein reservierter Buchstabe und kennzeichnet eine Spannungsquelle. Eine Stromquelle wird im Gegenzug mit I gekennzeichnet. VDD ist die Spannungsversorgung des Schaltkreises. Dieses ist dran zu erkennen, daß die Node 1 in der VDD-Beschreibung auch im Schaltkreis vorkommt und somit eine Verbindung zwischen Spannungsquelle und Schaltkreis besteht. Node 0 ist GND. VIN ist ebenfalls eine Spannungsquelle. Diese erzeugt über den PULSE-Kommando periodische Spannungspulse. Diese werden über die Node IN auf den Input des Inverters gelegt. Das .TRAN-Kommando teilt den Simulator mit, daß es sich um eine zeitliche (transient) Analyse handelt. Der maximal zugelassene Zeitschritt ist hier 2 Nanosekunden. Die Simulation ist nach 150 Nanosekunden vorüber. Das .PRINT TRAN-Kommando gibt noch die zeitlichen Werte aus. Der Spice-File muß mit .END geschlossen werden.

Um die genau Bedeutung der benutzten Kommandos zu erfahren, hilft das Spice-Manual.

 

Wie wird eine Simulation gestartet?

Auf der Unix-Ebene kann man mit dem Kommando Spice3 den Spice-Interpreter aufrufen. Um eine Simulation zu starten, sind folgende Schritte innerhalb des Spice-Interpreters notwendig:

source <name+ext> lädt den Spice-File
edit ermöglicht ein editieren des Spice-Files
run startet die Simulation
load zeigt die internen Variablen an => Output
plot <variable(n)> gibt die Variable am Bildschirm aus
save <name+ext> speichert die Simulationsergebnisse
load <name+ext> lädt gespeicherte Simulationsergebnisse
quit beendet das Programm

Für den Spice-Interpreter sind keine weiteren Angaben mehr nötig, da dieser nur ein auszuführendes Programm für den Spice-File ist.

 

 


Home Tutorial             Back to Tutorial Spice

karl@vlsi.bu.edu ,11.09.98