Software … leistungsfähige Tools für Ihre Forschung & Entwicklung!

English

RP Coating – das Software-Werkzeug für das Design optischer Vielschichtstrukturen

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
fitted reflectivity profile of the test structure

Zum Vergleich das Spektrum ohne das Fitten:

reflectivity profile of the test structure without fitting

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 Schichtdicken­kontrolle kann mit einem hohen Grad von Automatisierung implementiert werden.