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

  1. 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)
  2. 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 .
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

Conductivty Interface

class pidsim.conductivity_interface.ConductivityInterface

Bases: object

concentration_profile
estimate_conductivity()