RP Coating – das Software-Werkzeug für das Design optischer Vielschichtstrukturen
Überblick | Anwendung | Modell | Benutzung | Demos | Versionen |
Beispiel: Ermittlung von Strukturdaten durch Fitten an ein gemessenes Reflektivitätsspektrum
Wenn eine Dünnschichtstruktur hergestellt wird, gibt es meist Unsicherheiten betreffend die Schichtdicken sowie auch ihre Brechungsindizes. Letztere werden von der Packungsdichte des Materials beeinflusst, die von den detaillierten Wachstumsbedingungen abhängt. Ein gemessenes Reflektivitätsspektrum kann verwendet werden, um Informationen über die Struktur zu erhalten und damit die Beschichtungsmaschine zu kalibrieren.
In diesem Beispiel gehen wir davon aus, dass als Teststruktur ein einfacher Bragg-Spiegel mit 6 Schichtpaaren von HfO2 / SiO2 auf einem BK7-Substrat gewachsen wurde, nominell mit λ/4-Schichten für 800 nm:
d_units: nm l_units: nm N := 6 { number of layer pairs } ; Initial (nominal) layer parameters: d_HfO2 := 800 / 4 / n_HfO2_Jerman(800 nm,7) x_HfO2 := 7 d_SiO2 := 800 / 4 / n_SiO2_Jerman(800 nm,1.8) x_SiO2 := 1.6 beam from superstrate substrate: BK7 for j := 1 to N do begin * HfO2_Jerman, x = x_HfO2, d = d_HfO2 * SiO2_Jerman, x = x_SiO2, d = d_SiO2 end superstrate: air
Wir verwenden Brechungsindexdaten von M. Jerman et al., Appl. Opt. 44 (15), 3006 (2005), die von den Packungsdichten in Einheiten von g/cm3 abhängen. (Diese Daten werden mit der Software geliefert.) Die genauen Schichtdicken und Packungsdichten, die man von der Beschichtungsmaschine erhält, sind anfänglich unbekannt und sollten aus den gemessenen Reflektivitätsdaten ermittelt werden.
Das Reflektivitätsspektrum wurde gemessen und in einer Textdatei gespeichert, die pro Zeile eine Wellenlänge und die zugehörige Reflektivität (in Prozent) enthält. Wir lesen diese Datei ein, so dass ihre x/y-Datenpaare gespeichert sind (als “row 1”):
include "Reflectivity.dat"
Nun können wir die Fit-Prozedur durchführen. Als Fit-Variablen verwenden wir die Schichtdicken und die Packungsdichten, wobei wir annehmen, dass diese Parameter für alle Schichtpaare gleich sind. Wir müssen zunächst eine Funktion definieren, die die Strukturdaten entsprechend diesen Parametern setzt. Dann können wir das fit-Kommando aufrufen und schließlich die erhaltenen Werte anzeigen:
set_layer_params(d_HfO2, x_HfO2, d_SiO2, x_SiO2) := for j := 1 to N do begin set_d(2 * j-1, d_HfO2); set_d(2 * j , d_SiO2); set_x(2 * j-1, x_HfO2); set_x(2 * j , x_SiO2); end; fit 100 * R(x) to row 1 with (d_HfO2, x_HfO2, d_SiO2, x_SiO2), init set_layer_params(d_HfO2, x_HfO2, d_SiO2, x_SiO2) show "d_HfO2: ", d_HfO2:f1:"nm" show "d_SiO2: ", d_SiO2:f1:"nm" show "x_HfO2: ", x_HfO2:f2:"g / cm^3" show "x_SiO2: ", x_SiO2:f2:"g / cm^3"
Finally, we display the reflectivity profile:
diagram 1: "Reflectivity Profile" x: 400, 1200 "wavelength (nm)", @x y: 0, 100 "reflectivity (%)", @y frame hx hy m: points("r") { show the data points as rectangles } f: 100 * R(x), color = red, width = 3 ["d_HfO2: ", d_HfO2:f1:"nm"], 120, 150 ["d_SiO2: ", d_SiO2:f1:"nm"], 120, 200 ["x_HfO2: ", x_HfO2:f2:"g / cm^3"], 120, 250 ["x_SiO2: ", x_SiO2:f2:"g / cm^3"], 120, 300
Zum Vergleich das Spektrum ohne das Fitten:
Dieses Beispiel zeigt, dass es mit RP Coating ziemlich einfach ist, Strukturdaten aus gemessenen Daten zu extrahieren. Die Flexibilität dieser Software erlaubt auch weitere Verfeinerungen:
- Wenn das Spektrometer die Daten nicht als “comma-separated values” liefert, sondern in einem anderen (womöglich binären) Format liefert, kann man auch solche Dateien mit ein paar Zeilen Skriptcode einlesen.
- Man könnte die erhaltenen Fit-Daten in beliebigem Format abspeichern, etwa für die direkte Steuerung der Beschichtungsmaschine oder für Dokumentationszwecke.
- Wenn Reflektivitäten in situ am geheizten Substrat gemessen werden, könnte man automatisch Korrekturen entsprechend der Temperatur anbringen.
- Man könnte solche Messungen und das Fitten für eine erst teilweise gewachsene Struktur durchführen und dann eine numerische Optimierung für die restlichen Schichten durchführen. Eine solche Schichtdickenkontrolle kann mit einem hohen Grad von Automatisierung implementiert werden.