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
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