Rsh Approximation Model¶
Korol Conductivity Implementation¶
-
class
pidsim.korol_conductivity.
KorolConductivity
¶ Bases:
pidsim.conductivity_interface.ConductivityInterface
This class provides methods to map a concentration of Na atoms in Si to a conductivity value.
Example
from pidsim.korol_conductivity import KorolConductivity import h5py conductivity_model: KorolConductivity = KorolConductivity() # Assume every Na atom contributes 1 conduction electron conductivity_model.activated_na_fraction = 1. # Get a concentration profile from a transport simulation h5_path = './transport_simulation_output.h5' # Get the profile at index 20 idx = 20 with h5py.File(h5_path, 'r') as hf: c = np.array(hf['/L2/concentration/ct_{0:d}'.format(idx)]) # Update the concentration profile in the model conductivity_model.concentration_profile = c conductivity_model.segregation_coefficient = 1. conductivity = conductivity_model.estimate_conductivity()
-
__sodium_profile
¶ The Na concentration profile in cm-3 .
Type: np.ndarray
-
__activated_na_fraction
¶ The activated fraction of Na atoms to compute the conductivity \(0 < f < 1\).
Type: float
-
__segregation_coefficient
¶ Deprecated since version 0.1: This value represents the segregation coefficient of Na in the stacking fault assuming a mechanism driven by bulk diffusion + segregation at the SF. Use 1.0.
Type: float
-
activated_na_fraction
¶
-
concentration_profile
¶
-
conductivity_model
(concentration: numpy.ndarray) → numpy.ndarray¶ Implementation of the conductivity_model model.
Model simplifications
- The Na to Si ratio in the stacking fault is obtained from the ratio between Na concentration and Si concentration in the bulk of a perfect crystal (does not consider the specific geometry of a stacking fault)
- Conductivity is calculated based on depth-resolved Hall-effect measurements of mobility and carrier density in Na-implanted Si (Korol et al.)
- Reference
- Korol, V. M. “Sodium ion implantation into silicon.” Physica status solidi (a) 110.1 (1988): 9-34.
Parameters: concentration (np.ndarray) – The sodium concentration in the Si bulk Returns: The conductivity_model profile Return type: np.ndarray
-
estimate_conductivity
()¶
-
segregation_coefficient
¶
-
Parameter Span¶
-
pidsim.parameter_span.
append_to_batch_script
(filetag: str, batch_script: str)¶ Appends an execution line to the batch script
Parameters: - filetag (str) – The file tag for the .ini configuration file to run.
- batch_script (str) – The path to the batch script to append to.
-
pidsim.parameter_span.
create_filetag
(time_s: float, temp_c: float, sigma_s: float, zeta: float, d_sf: float, ef: float, m: float, h: float, recovery_time: float = 0, recovery_e_field: float = 0, d_sin: float = None) → str¶ Create the file_tag for the simulation input file
Parameters: - time_s (float) – The simulation time in seconds.
- temp_c (float) – The temperature in °C
- sigma_s (float) – The surface concentration of the source, in atoms/ cm2 .
- zeta (float) – The rate of ingress in 1/s
- d_sf (float) – The diffusivity at the SF in cm2 /s
- ef (float) – The applied electric field in SiNx in V/cm
- m (float) – The segregation coefficient
- h (float) – The surface mass transfer coefficient at the SiNx/Si interface in cm/s
- recovery_time (float) – The simulated recovery time (additional to the PID simulations) in s. Default: 0.
- recovery_e_field (float) – The electric field applied under recovery (ideally with sign opposite to the PID stress) units: V. Default: 0 V
Returns: The file_tag
Return type: str
-
pidsim.parameter_span.
create_input_file
(simulation_time: float, temperature_c: float, sigma_s: float, zeta: float, d_sf: float, e_field: float, segregation_coefficient: float, h: float, thickness_sin: float, thickness_si: float, base_concentration: float, er: float, t_steps: int, x_points_sin: int, x_points_si: int, out_dir: str, recovery_time: float = 0.0, recovery_e_field: float = 0, d0_sinx: float = 1e-14, ea_sinx: float = 0.1, d_sin: float = None) → str¶ Creates an inputfile for the finite source simulation
Parameters: - simulation_time (float) – The simulation time in seconds
- temperature_c (float) – The simulation temperature °C
- sigma_s (float) – The surface concentration of the source in atoms/cm2 zeta: float The surface rate of ingress of Na in (1/s)
- d_sf (float) – The diffusion coefficient in the SF in cm2 /s
- e_field (float) – The electric field in SiNx in V/cm
- segregation_coefficient (float) – The segregation coefficient at the SiNx/Si interface
- h (float) – The surface mass transfer coefficient at the SiNx/Si interface in cm/s
- thickness_sin (float) – The thickness of the SiNx layer in um.
- thickness_si (float) – The thickness of the Si layer in um
- base_concentration (float) – The base Na concentration prior to the simulation.
- er (float) – The relative permittivity of SiNx
- t_steps (int) – The number of time steps to simulate
- x_points_sin (int) – The number of grid points in the SiNx layer
- x_points_si (int) – The number of grid points in the Si layer
- out_dir (str) – The path to the output dir
- recovery_time (float) – Additional time used to model recovery (s). Default: 0.
- recovery_e_field (float) – Electric field applied during the recovery process in V/cm. Default: 0
- d0_sinx (float) – The Arrhenius prefactor for the diffusion coefficient of Na in SiNx , in cm2 /s. (only used if d_sin is None)
- ea_sinx (float) – The activation energy of the diffusion coefficient of Na in SiNx, given in eV. (only used if d_sin is None)
- d_sin (float) – The diffusivity of Na in SiNx , in cm2 /s. Default: None.
Returns: The file_tag of the generated file
Return type: str
-
pidsim.parameter_span.
create_span_file
(param_list: dict, simulation_time: float, temperature_c: float, thickness_sin: float, thickness_si: float, base_concentration: float, er: float, t_steps: int, x_points_sin: int, x_points_si: int, out_dir: str)¶ A wrapper for create_input_file that unpacks the values of the parameter span contained in param_list
Parameters: - param_list (dict) – A dictionary with the values of the parameters that are being varied. Must contain: - sigma_s: The surface concentration in atoms/cm2 - zeta: the rate of transfer in 1/s - dsf: the diffusion coefficient of Na in the SF - e_field: The electric field in V/cm - segregation coefficient: The segregation coefficient at the SiNx/Si interface - h: The surface mass transfer coefficient at the SiNx/Si interface - recovery_time: The recovery time added to the simulation - recovery_e_field: The electric field applied under recovery
- simulation_time (float) – The simulation time in seconds
- temperature_c (float) – The simulation temperature in °C
- thickness_sin (float) – The thickness of the SiNx layer in um.
- thickness_si (float) – The thickness of the simulated SF in um
- base_concentration (float) – The bulk base impurity concentration for all layers in 1/cm3 er: float The relative permittivity of SiNx
- t_steps (int) – The number of time steps to simulate.
- x_points_sin (int) – The number of elements to simulate in the SiNx layer.
- x_points_si (int) – The number of elements to simulate in the Si layer.
- out_dir (str) – The path to the output directory
Returns: The name of the input file for the simulation.
Return type: str
-
pidsim.parameter_span.
efield_plus_d_sin
(csv_file: str, simulation_time: float, temperature_c: float, sigma_s: float, zeta: float, h: float, segregation_coefficient: float, dsf: float, er: float = 7.0, thickness_sin: float = 0.075, thickness_si: float = 1, t_steps: int = 720, x_points_sin: int = 100, x_points_si: int = 200, base_concentration: float = 1e-20)¶ Generate the input files to simulate simultaneous variations in :math: D_{mathrm{SiN}} and :math: E.
Parameters: - csv_file (str) – The path to the csv file containing the parameter variations
- simulation_time – The simulation time (s).
- temperature_c – The simulation temperature in °C
- sigma_s (float) – The surface concentration :math: S_0 in cm-2.
- zeta (float) – The rate of ingress :math: k in s-1.
- dsf (float) – The diffusion coefficient of Na in the stacking fault in cm2/s
- h (float) – The surface mass transfer coefficient between the SiNxfilm and the silicon layer. In cm/s.
- segregation_coefficient (float) – The segregation coefficient :math: m.
- er (float) – The relative permittivity of SiN: sub:x.
- thickness_sin (float) – The thickness of SiN: sub:xin um.
- thickness_si – The thickness of the silicon layer in um.
- t_steps (int) – The number of time steps to simulate.
- x_points_sin (int) – The number of grid points for the SiN: sub:xlayer.
- x_points_si (int) – The number of grid points in the Si layer.
- base_concentration (float) – The base concentration to simulate (cm:sup: -3).
-
pidsim.parameter_span.
one_factor_at_a_time
(csv_file: str, simulation_time: float, temperature_c: float, er: float = 7.0, thickness_sin: float = 0.075, thickness_si: float = 1, t_steps: int = 720, x_points_sin: int = 100, x_points_si: int = 200, base_concentration: float = 1e-20)¶ Generates input files and batch script to run one-factor-at-a-time parameter variation
Parameters: - csv_file (str) –
The path to the csv file containing the base case and the parameter scans to simulate: Format of the file
Parameter name Base case span sigma_s 1E+11 1E10,1E11,… zeta 1E-4 1E-4,1E-3,… DSF 1E-14 1E-12,1E-14,… E 1E4 1E2,1E4,… m 1 1 h 1E-8 1E-8,1E-7,… - simulation_time (float) – The total simulation time in s.
- temperature_c (float) – The simulation temperature in °C
- er (float) – The relative permittivity of SiNx. Default 7.0
- thickness_sin (float) – The thickness of the SiNx layer in um. Default: 0.075
- thickness_si (float) – The thickness of the Si layer in um. Default 1 um
- t_steps (int) – The number of time steps for the integration.
- x_points_sin (int) – The number of grid points in the SiN layer
- x_points_si (int) – The number of grid points in the Si layer.
- base_concentration (float) – The background impurity concentration in cm^-3. Default 1E-20 cm-3 .
- csv_file (str) –
-
pidsim.parameter_span.
sigma_efield_variations
(sigmas: numpy.ndarray, efields: numpy.ndarray, out_dir: str, zeta: float, simulation_time: float, dsf: float, h: float, m: float, temperature_c: float, er: float = 7.0, thickness_sin: float = 0.075, thickness_si: float = 1.0, t_steps: int = 720, x_points_sin: int = 100, x_points_si: int = 200, base_concentration: float = 1e-20)¶ Generates inputs for a combination of the initial surface concentrations and electric fields defined in the input. Every other parameter remains fixed.
Parameters: - sigmas (np.ndarray) – An array containing the values of the surface concentration to vary (in ions/cm2 )
- efields (np.ndarray) – An array containing the values of the electric fields to vary (in V/cm)
- out_dir (str) – The path to the folder to store the generated input files.
- zeta (float) – The value of the rate of ingress at the surface (1/s)
- simulation_time (float) – The time length of the simulation in seconds.
- dsf (float) – The diffusion coefficient of Na in the stacking fault.
- h (float) – The surface mass transfer coefficient at the SiNx/Si interface in (cm/s)
- m (float) – The segregation coefficient at the SiNx/Si interface
- temperature_c (float) – The temperature °C
- er (float) – The relative permittivity of the dielectric. Default 7.0
- thickness_sin (float) – The thickness of the SiNx layer in um.
- thickness_si (float) – The thickness of the Si layer in um.
- t_steps (int) – The number of time steps. Default: 720
- x_points_sin (int) – The number of mesh points in the SiNx layer. Default 100
- x_points_si (int) – The number of mesh points in the Si layer. Default 200
- base_concentration (float) – The background concentration at the initial condition in atoms/cm3
-
pidsim.parameter_span.
sin_bias_from_e
(e_field: float, thickness_sin: float) → float¶ Estimates the bias in SiNx based on the value of the electric field and the thickness of the layer.
Parameters: - e_field (float) – The electric field in the SiNx layer (V/cm)
- thickness_sin (float) – The thickness of the SiNx layer in (um).
Returns: The corresponding bias in V
Return type: float
-
pidsim.parameter_span.
string_list_to_float
(the_list: str) → numpy.ndarray¶ Takes a string containing a comma-separated list and converts it to a numpy array of floats
Parameters: the_list (str) – The comma-separated list Returns: The corresponding array Return type: np.ndarray