Material models

Material models for silicon (Si) and silicon dioxide (SiO2) are available in the SiFab PDK. These are based on textbook material data: the refractive indices n (real part) and k (imaginary part) for silicon and n for silicon dioxide.

Model functions

The technology contains models as a function of wavelength in the form of functions:

  • si_n(wavelength): silicon, real part of refractive index.

  • si_k(wavelength): silicon, imaginary part of refractive index.

  • sio2_n(wavelength): silicon dioxide, real part of refractive index.

For each of them, the wavelength should be specified in um.

Data and fitting

The original data, as a function of wavelength, is saved in comma separated value (csv) files. These csv files are read and fitted when the PDK is loaded. The data is fitted using a cubic spline, resulting in a very small difference between the model and the data within the valid wavelength range:

# Plot silicon refractive index data and fitted model

from si_fab.technology.material_data import si_n_data, si_n
import pylab as plt
import numpy as np

wavs = np.linspace(si_n_data[0, 0], si_n_data[-1, 0], 100)
n = si_n(wavs)
n_at_data = si_n(si_n_data[:, 0])

plt.subplot(211)
plt.plot(si_n_data[:, 0], si_n_data[:, -1], "bo", markersize=5, label="data")
plt.plot(wavs, n, "r-", linewidth=4, label="fit")
plt.xlabel("wavelength [um]")
plt.ylabel("n")
plt.legend()
plt.title("refractive index")
plt.subplot(212)
plt.plot(si_n_data[:, 0], n_at_data - si_n_data[:, -1], "ro-", markersize=4, linewidth=3)
plt.xlabel("wavelength [um]")
plt.title("difference")
plt.show()
../../../../../../../_images/example_si_model.png