Quickstart: Finite Source Simulations

The simplest way to run the code is to run a simulation using an ini file from the command line.

Shell scripts are available at the executables folder in the root of the installation. If they do not already have execution permissions run:

$ cd executables
$ chmod +x *.sh

Running a finite source simulation. From the root of pnptransport run

$ ./simulate_fs.py --config input_example.ini

where the .ini file looks like

input_example.ini
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[global]
# Simulation time in seconds
simulation_time = 345600.0 
# Simulation temperature in °C
temperature = 85
# Surface source concentration in cm-2
surface_concentration = 1.0E+10
# Monolayer ingress rate (1/s)
rate_source = 1.000E-04
# The base filename for the output
filetag = output_file_Tag
# Number of time steps
time_steps = 720
# The surface mass transfer coefficient in cm/s
h = 1.0E-12
# The segregation coefficient
m = 1.0E+00
# The recovery time in seconds (default 0)
recovery_time = 43200.0
# The recovery voltage drop in the sinx layer
recovery_voltage = -7.5e-05
# Background concentration in cm-3
cb = 1.000E-20
# Dielectric constant
er = 7.0

[sinx]
# The diffusivity of Na in cm^2/s
d = 3.92E-16
# The applied voltage stress in volts
stress_voltage = 7.500E-05
# The thickness of the layer in um
thickness = 0.075
# The number of points in the layer
npoints = 100

[si]
# The diffusivity of Na in cm^2/s
d = 1.000E-14
# The thickness of the layer in um
thickness = 1.0
# The number of points in the layer
npoints = 100

The sections of the input file are

global

This section contains parameters that are not layer specific including

simulation_time: str
This corresponds to the total time to be simulated in seconds.
temperature: float
The simulated temperature in °C. Used to determine ionic mobility in the dielectric, according to \(\mu = D q / k_{\mathrm{B}} T\).
surface_concentration: float
The surface concentration at the source \(S\), given in cm-2 . Used to determine the flux at the source, given by \(J_{\mathrm{0}} = k S\), where \(k\) is the rate of ingress.
rate_source: float
The rate of ingress of ionic contamination at the source, in s:sup:-1. Used to determine the flux at the source, \(J_{\mathrm{0}} = k S\).
filetag: str
The file tag used to generate the output folder and files.
time_steps: int
The number of time intervals to simulate.
h: float
The surface mass transfer coefficient in cm/s, for the segregation flux at the SiNx / Si interface.
m: float
The segregation coefficient at the dielectric/semiconductor interface.
recovery_time: float
The additional simulation time in seconds without PID stress used for recovery.
recovery_voltage: float
The bias used during recovery in V. This is applied to the dielectric layer and ideally needs to be negative.
cb: float
The background concentration in cm-3 . Used as a finite initial concentration.
er: float
The relative permittivity of the dielectric.

sinx

d: float
The diffusion coefficient of the ionic species in the dielectric in cm2 /s.
stress_voltage: float
The applied voltage stress in the film in V.
thickness: float
The thickness of the layer in um.
npoints: int
The number of grid points to simulate.

si

d: float
The diffusion coefficient of the ionic species in the semiconductor in cm2 /s.
stress_voltage: float
The applied voltage stress in the film in V.
thickness: float
The thickness of the layer in um.
npoints: int
The number of grid points to simulate.

The code needs to be run in a linux terminal. However, it is recommended to use a graphical environment to keep the processes alive if the remote connection with the server fails.

The default directory structure of the simulation will be

top_folder
|---base_folder
|   |---input_file.ini
|---results
|   |---constant-flux
|   |   |---filetag.h5
|   |   |---filetag.ini

The results folder can be specified by the optional argument –output to the simulate_fs.py script

./simulate_fs.py --config input_file.ini --output folder_output

which will generate a folder structure like this.

top_folder
|---base_folder
|   |---input_file.ini
|---output_folder
|   |---filetag.h5
|   |---filetag.ini