Beispielskript: Struktur.inc
command setsegment -name poly \ -material Si -length 80.0*nm \ -doping "-1.0E20*cm^-3" command setsegment -name oxid \ -material Oxid -length 1.0*nm \ -doping 0.0*cm^-3 command setsegment -name bulk \ -material Si -length 350*nm \ -doping 1.0E18*cm^-3
Beispielskript: Skript.inc
source "structure.inc" command boundaries -type 2 for {set i 10} {$i < "11" } { incr i 2 } { set doping "-$i.0E19*cm^-3" set plotname "Cap-$i" command changesegment -name poly -doping $doping command mosinit -mossim -base 7 -sbb 15 -lz 45*nm \ -T 300*K command setparam -name stretch -value 1.1 command setparam -name maxstretch -value 10.0 command setparam -name minmeshspacing -value 0.1*nm command defineplot -name $plotname \ -graph C-${i}E19 -element c \ -var VAR_UGB -what CP_CAPACITY \ -xunit V -yunit "1.E-6*F/cm^2" command capacity \ -unit V \ -from -3.0 -to -0.3 -step 0.1 \ -diff 0.002 -damp 1.0 -accur 1e-6 \ -name $plotname -charge invlc ... command plot_to_file -name $plotname -what 1 }
Die Anbindung der Skriptsprache Tcl/Tk an den Simulator erfolgt über die Definition der Funktion command. Die Argumente der Funktion command werden einfach als Eingabe an den Simulator übergeben und es lässt sich die Skriptsprache Tcl/Tk zur Steuerung des Simulators nutzen.
Ganze Befehlsblöcke können, wie im gezeigten Beispiel, in einer eigenen Datei abgelegt, und an geeigneter Stelle mittels des Tcl/Tk Befehls source für mehrere Simulationen wiederverwendet werden.
Die for-Schleife der Skriptsprache Tcl/Tk wird im Beispiel verwendet um die Dotierungswerte des Polysilizium-Gate für verschiedene Kapazitätskurven zu variieren. Zu jedem Dotierungswert wird im Simulator der neue Wert gesetzt (changesegment), die Simulation mit dem neuen Wert initialisiert (mosinit), eine eigene Ausgabedatei (defineplot) deklariert und eine komplette Kapazitätskurve berechnet (capacity) und abgespeichert.
Die selbst definierte Funktion command wird nur benutzt, um eine Eingabedatei im Tcl/Tk-Interpreter abzuarbeiten, die Befehle für den Simulator zwischenzuspeichern und den Parser des Simulators aufzurufen. Im Simulator zerlegt eine eigene Klasse die eingegebenen Befehle in Schlüsselwörter und Argumente, auf die dann einfach zugegriffen werden kann. Die Anzahl der gewünschten Subbänder im Befehl mosinit -sbb 15 wird im Programm mit dem C++-Statement int i = option[``sbb''].to_int() ausgelesen. Der Simulator kann so leicht mit neuer Funktionalität erweitert werden.