Support Scripts

From Flooxs
Jump to navigation Jump to search

Introduction

This serves as my repository and hopefully a future repository for lots of floods device models. Currently only support for Silicon exists but SiGe will be on its way soon.

The general idea behind this repo is to create a more portable way for handling floods equations. Creating a tree structure for equations, solutions, and other key device simulation sections helps to keep code consistent between different but similar projects. For example, we might have a study on strained silicon devices that all require the same governing equations. This equations file should be in the parent director to all devices in this strain study. Particular devices will have their own structure and contact layout. The general idea of sourcing equations for device classes will evolve as the devices need more and more models to solve problems. It is possible that sourcing multiple equations files will become common. Equation sets could even become established.

The procs.tcl file is automatically found sourced by flooxs, loading procedures. A list of the loaded procedures displayed upon sourcing of procs.tcl. For flooxs to find procs.tcl it must be in your current directory or in a parent directory. This allows for the creation of a tree structure for equation sets. All devices in this repository should use procedures sourced from procs.tcl. Subsequent equations.tcl files should be created that utilize specific equations from the procs.tcl. These equations.tcl files can be sourced using the following command: "source [findFile equations.tcl]". The findFile procedure looks for the file in your current directory, then the parent directory, then its parent directory, and so on. This occurs until we hit the system root or find the file. If multiple equations.tcl files exist in the parent directories, the closest one to your current directory is returned.

This repo is split into 3 major sections: Models, Devices, Test. The idea is to have a unified model repository that can be used by tests and device problems. Ideally any model should have a matching test. A test can be qualatative or a test can be pass fail. Pass fail tests should be automated, that way when changes are submitted they can be referenced against the pass fail tests easily. Devices can and should use more than one model depending on the problem they are trying to solve.

Contributing

The addition of any model to this repository is welcome! Be wary of procedure name conflicts, tcl will not warn you and will just override any existing procedure. If you are not sure about a change, a simple grep -r in the Models directory will suffice. Any time a model is added the tests should be run to make sure there are no conflicts with existing models. It would also be great that if you write a model then a corresponding test is written.

Model Procs

Silicon

Silicon::ActiveBoron

Usage

Silicon::ActiveBoron T= Boron=Boron potential=DevPsi

Temperature (T) is in Kelvin.

The Boron concentration (Boron) is assumed to be the alagator field Boron.

The activation potential energy (potential) is optional and defaults to DevPsi.

Returns

alagator string

Description

Computes freeze out of carriers at low temperatures.

Silicon::ActivePhosphorus

Usage

Silicon::ActivePhosphorus T= Phosphorus=Phosphorus potential=DevPsi

Temperature (T) is in Kelvin.

The Phosphorus concentration (Phosphorus) is assumed to be the alagator field Phosphorus.

The activation potential energy (potential) is optional and defaults to DevPsi.

Returns

alagator string

Description

Computes freeze out of carriers at low temperatures.

Silicon::Cummings

Usage

Silicon::Cummings T= Accept=Accept Donor=Donor Elec=Elec Hole=Hole expand

Temperature (T) is in Kelvin.

Donor concentration (Donor) is assumed to be the alagator field Donor and dopant type As.

Accept concentration (Accept) is assumed to be the alagator field Accept.

Hole concentration (Hole) is assumed to be the alagator field Hole.

Elec concentration (Elec) is assumed to be the alagator field Elec.

The expand flag is used to expand the terms into a full string for testing purposes.

Returns

nothing

Description

Dan Cumming’s mobility model, sets a bunch of terms and returns nothing. Behavior is subject to change.

Silicon::ElecHallFactorTemp

Usage

Silicon::ElecHallFactorTemp T=

Temperature (T) is in Kelvin.

Returns

alagator string

Description

Computes temperature dependence of Hall scattering factor.

Silicon::Fischetti

Usage

Silicon::Fischetti

Returns

nothing

Description

Sets deformation parameters according to the Fischetti reference.

Silicon::Fridel

Usage

Silicon::Fridel

Returns

nothing

Description

Sets deformation parameters according to the Fridel reference.

Silicon::KlaassenNAs

Usage

Silicon::KlaassenNAs T= Accept=Accept Donor=Donor Elec=Elec Hole=Hole expand

Temperature (T) is in Kelvin.

Donor concentration (Donor) is assumed to be the alagator field Donor and dopant type As.

Accept concentration (Accept) is assumed to be the alagator field Accept.

Hole concentration (Hole) is assumed to be the alagator field Hole.

Elec concentration (Elec) is assumed to be the alagator field Elec.

The expand flag is used to expand the terms into a full string for testing purposes.

Returns

alagator string

Description

Klaassen, aka Philips, Arsenic Donor Mobility Model.

Silicon::KlaassenNP

Usage

Silicon::KlaassenNP T= Accept=Accept Donor=Donor Elec=Elec Hole=Hole expand

Temperature (T) is in Kelvin.

Donor concentration (Donor) is assumed to be the alagator field Donor and dopant type phosphorus.

Accept concentration (Accept) is assumed to be the alagator field Accept.

Hole concentration (Hole) is assumed to be the alagator field Hole.

Elec concentration (Elec) is assumed to be the alagator field Elec.

The expand flag is used to expand the terms into a full string for testing purposes.

Returns

alagator string

Description

Klaassen, aka Philips, Phosphorus Donor Mobility Model.

Silicon::KlaassenPB

Usage

Silicon::KlaassenPB T= Accept=Accept Donor=Donor Elec=Elec Hole=Hole expand

Temperature (T) is in Kelvin.

Accept concentration (Accept) is assumed to be the alagator field Accept and dopant type boron.

Donor concentration (Donor) is assumed to be the alagator field Donor.

Hole concentration (Hole) is assumed to be the alagator field Hole.

Elec concentration (Elec) is assumed to be the alagator field Elec.

The expand flag is used to expand the terms into a full string for testing purposes.

Returns

alagator string

Description

Klaassen, aka Philips, Phosphorus Donor Mobility Model.

Silicon::Masetti

Usage

Silicon::Masetti T= Accept=Accept Donor=Donor

Temperature (T) is in Kelvin.

Donor concentration (Donor) is assumed to be the alagator field Donor and dopant type As.

Accept concentration (Accept) is assumed to be the alagator field Accept.

Returns

A list of two alagator expressions, the first item is the electron mobility and the second is the hole mobility

Description

Masetti majority carrier mobility model. Great to use for many applications where the majority carrier is the only concern.

Silicon::OldSlotboom

Usage

Silicon::OldSlotboom Donor=Donor Accept=Accept

Temperature (T) is in Kelvin.

The Donor concentration (Donor) is assumed to be the alagator field Donor.

The Acceptor concentration (Accept) is assumed to be the alagator field Accept.

Returns

alagator string

Description

Old Slotboom bandgap narrowing model.

Silicon::SetSiliconStrainParams

Usage

Silicon::SetSiliconStrainParams

Returns

nothing

Description

Sets deformation parameters according to my best fit of data.

Silicon::SetSiliconStrainParams100

Usage

Silicon::SetSiliconStrainParams100

Returns

nothing

Description

Sets deformation parameters according to my best fit of data for 100.

Silicon::SetSiliconStrainParams110

Usage

Silicon::SetSiliconStrainParams110

Returns

nothing

Description

Sets deformation parameters according to my best fit of data for 110.

Silicon::Slotboom

Usage

Silicon::Slotboom Donor=Donor Accept=Accept

Temperature (T) is in Kelvin.

The Donor concentration (Donor) is assumed to be the alagator field Donor.

The Acceptor concentration (Accept) is assumed to be the alagator field Accept.

Returns

alagator string

Description

Slotboom bandgap narrowing model.

Silicon::VanDeWalle

Usage

Silicon::VanDeWalle

Returns

nothing

Description

Sets deformation parameters according to the Van Der Walle reference.

Silicon::vanOberstraetenElec

Usage

Silicon::vanOberstraetenElec T= current= F=DevPsiMag

Temperature (T) is in Kelvin.

Driving force (F) is assumed to be the alagator field set to the gradient of the electrostatic potential called DevPsiMag.

Current magnitude (current) is an alagator field used to compute the magnitude of the current at a location.

Returns

alagator string

Description

Avalanche breakdown for electrons in silicon.

Silicon::vanOberstraetenHole

Usage

Silicon::vanOberstraetenHole T= current= F=DevPsiMag

Temperature (T) is in Kelvin.

Driving force (F) is assumed to be the alagator field set to the gradient of the electrostatic potential called DevPsiMag.

Current magnitude (current) is an alagator field used to compute the magnitude of the current at a location.

Returns

alagator string

Description

Avalanche breakdown for holes in silicon.

AlGaN

AlGaN::ElecMobility

Usage

AlGaN::ElecMobility T=Temp

The temperature (T) defaults to an alagator expression of Temp

Returns

AlGaN electron mobility alagator string

Description

Computes the temperature dependent electron mobility for AlGaN

AlGaN::HoleMobility

Usage

AlGaN::HoleMobility

Returns

AlGaN hole mobility alagator string

Description

Gives a rough AlGaN hole mobility

AlN

AlN::ElecMobility

Usage

AlN::ElecMobility T=Temp

The temperature (T) defaults to an alagator expression of Temp

Returns

AlN electron mobility alagator string

Description

Computes the temperature dependent electron mobility for AlN

AlN::HoleMobility

Usage

AlN::HoleMobility

Returns

AlN hole mobility alagator string

Description

Gives a rough AlN hole mobility

GaN

GaN::ElecMobility

Usage

GaN::ElecMobility T=Temp

The temperature (T) defaults to an alagator expression of Temp

Returns

GaN electron mobility alagator string

Description

Computes the temperature dependent electron mobility for GaN

GaN::HoleMobility

Usage

GaN::HoleMobility

Returns

GaN hole mobility alagator string

Description

Gives a rough GaN hole mobility

SiC

SiC::ElecMobility

Usage

SiC::ElecMobility T=Temp

The temperature (T) defaults to an alagator expression of Temp

Returns

SiC electron mobility alagator string

Description

Computes the temperature dependent electron mobility for SiC

SiC::HoleMobility

Usage

SiC::HoleMobility

Returns

SiC hole mobility alagator string

Description

Gives a rough SiC hole mobility

Generic

Auger

Usage

Auger ni= Elec=Elec Hole=Hole mat=Silicon

The intrensic carrier concentration (ni) is in cm<math display="inline">^{-3}</math>.

Hole concentration (Hole) is optional and defaults to Hole.

Electron concentration (Elec) is optional and defaults to Elec.

Returns

Auger recombination alagator string

Description

Auger recombination

B2BE1

Usage

B2BE1 F=DevPsiMag mat=Silicon

The driving force/field (F) is optional and defaults to DevPsiMag.

Material (mat) is optional and defaults to silicon.

Returns

Simple band to band tunneling alagator string

Description

Simple linear band to band tunneling model.

B2BE1_5

Usage

B2BE1_5 F=DevPsiMag mat=Silicon

The driving force/field (F) is optional and defaults to DevPsiMag.

Material (mat) is optional and defaults to silicon.

Returns

Simple band to band tunneling alagator string

Description

Simple <math display="inline">x^{1.5}</math> power band to band tunneling model.

B2BE2

Usage

B2BE2 F=DevPsiMag mat=Silicon

The driving force/field (F) is optional and defaults to DevPsiMag.

Material (mat) is optional and defaults to silicon.

Returns

Simple band to band tunneling alagator string

Description

Simple quadratic band to band tunneling model.

CondFermiDirac

Usage

CondFermiDirac Ec=E Nc=v T=a quasiFermi=Qfn mat=Silicon

The The band edge (Ec) parameter is in units of eV and is the energy of the band edge statistics are computed on.

The number of carriers at the band edge is N and is in units of cm<math display="inline">^-3</math>.

The temperature T is in units of Kelvin, this can be a value or an alagator expression

The quasi-Fermi level (quasiFermi) parameter is the expression needed to evaluate the quasi-Fermi of this band, default is Qfn.

Material (mat) is optional and defaults to silicon.

Returns

Carrier statistics alagator expression

Description

Computes the valance band energy relative to the vacuum level with the band gap. Affinity must be set for the material in the pdb for this to work

Econd

Usage

Econd Eea=4.05 potential=DevPsi mat=Silicon

The electron affinity (Eea) defaults to the value for silicon of 4.05

Material (mat) is optional and defaults to silicon.

Returns

Conduction band alagator string

Description

Computes the conduction band energy relative to the vacuum level. Affinity must be set for the material in the pdb for this to work

Eval

Usage

Eval Eg=Eg Eea=4.05 potential=DevPsi mat=Silicon

The band gap parameter is in units of eV and must be set to account for any band gap narrowing effects

The electron affinity (Eea) defaults to the value for silicon of 4.05

The electrostatic potential (potential) defaults to the name DevPsi

Material (mat) is optional and defaults to silicon.

Returns

Valance band alagator string

Description

Computes the valance band energy relative to the vacuum level with the band gap. Affinity must be set for the material in the pdb for this to work

FEQFOhmic

Usage

FEQFOhmic name=contact_name hole=Hole elec=Elec ?current?

Contact name (name) is set in the pdb with the equations

The hole concentration (hole) is calculated with the Hole field unles otherwise specified

The elec concentration (elec) is calculated with the Elec field unles otherwise specified

A current source can be turned on with the ‘current’ flag

Returns

nothing

Description

Convienence wrapper for Finite Element Quasi Fermi (FEQF) simulation.

Gate

Usage

Gate name=contact_name wfn=0

Contact name (name) is set in the pdb with the equations

The work function (wfn) is assumed to be zero unless otherwise specified

Returns

nothing

Description

Convienence wrapper for gate contacts.

IntrinsicConc

Usage

IntrinsicConc Eg=Eg Nc=Nc Nv=Nv T=a

The band gap (Eg) parameter is in units of eV and is the energy of the band edge statistics are computed on.

The number of carriers at the band edge is N and is in units of cm<math display="inline">^-3</math>.

The temperature T is in units of Kelvin, this can be a value or an alagator expression

The quasi-Fermi level (quasiFermi) parameter is the expression needed to evaluate the quasi-Fermi of this band, default is Qfn.

Material (mat) is optional and defaults to silicon.

Returns

Carrier statistics alagator expression

Description

Computes the intrinsic carrier concentration according to <math display="inline">\sqrt(N_cN_v)\exp(-\frac{Eg}{2V_t})</math>

Midgap

Usage

Midgap Eg=Eg mat=Silicon

Band gap (Eg) is an alagator expression band gap.

Material (mat) is optional and defaults to silicon.

Returns

Midgap alagator expression

Description

The midgap from conduction and valance band equations to use as an initial condition for the quasiFermi levels

Poisson

Usage

Poisson er= potential=DevPsi Doping=Doping Elec=Elec Hole=Hole

The relative permitivity (er) is unitless.

The doping concentration (Doping) is optional and defaults to Doping.

Hole concentration (Hole) is optional and defaults to Hole.

Electron concentration (Elec) is optional and defaults to Elec.

Returns

Poisson’s equation tunneling alagator string

Description

Simple Poisson’s equation <math display="inline">\epsilon_r\nabla\Phi + N - n + p = 0</math>

SRH

Usage

SRH ni= Elec=Elec Hole=Hole Accept=Accept Donor=Donor mat=Silicon

The intrensic carrier concentration (ni) is in cm<math display="inline">^{-3}</math>.

The donor concentration (Donor) is optional and defaults to Donor.

The acceptor concentration (Accept) is optional and defaults to Accept.

Hole concentration (Hole) is optional and defaults to Hole.

Electron concentration (Elec) is optional and defaults to Elec.

Material (mat) is optional and defaults to silicon.

Returns

Shockley–Read–Hall recombination alagator string

Description

Shockley–Read–Hall recombination.

Schenk

Usage

Schenk Eg= ni= Nc= Nv= T= F=DevPsiMag QfnMag=QfnMag QfpMag=QfpMag Elec=Elec Hole=Hole Accept=Accept Donor=Donor mat=Silicon

The intrensic carrier concentration (ni) is in cm<math display="inline">^{-3}</math>.

The conduction band edge carrier concentration (Nc) is in cm<math display="inline">^{-3}</math>.

The valance band edge carrier concentration (Nv) is in cm<math display="inline">^{-3}</math>.

Temperature (T) is in Kelvin.

The driving force/field (F) is optional and defaults to DevPsiMag.

The magnitude of the hole quasi-Fermi gradient (QfpMag) is optional and defaults to QfpMag.

The magnitude of the electron quasi-Fermi gradient (QfnMag) is optional and defaults to QfnMag.

The donor concentration (Donor) is optional and defaults to Donor.

The acceptor concentration (Accept) is optional and defaults to Accept.

Hole concentration (Hole) is optional and defaults to Hole.

Electron concentration (Elec) is optional and defaults to Elec.

Material (mat) is optional and defaults to silicon.

Returns

Schnek band to band tunneling alagator string

Description

Very complicated band to band tunneling model that incorporates the effects of recombination on band to band tunneling.

Test

Usage

Test -help

Returns

nothing

Description

Simple test proc to test documentation

ValFermiDirac

Usage

ValFermiDirac Ev=E Nv=v quasiFermi=Qfp T=a mat=Silicon

The band edge (Ev) parameter is in units of eV and is the energy of the band edge statistics are computed on.

The number of carriers at the band edge is N and is in units of cm<math display="inline">^-3</math>.

The temperature T is in units of Kelvin, this can be a value or an alagator expression

The quasi-Fermi level (quasiFermi) parameter is the expression needed to evaluate the quasi-Fermi of this band, default is Qfp.

Material (mat) is optional and defaults to silicon.

Returns

Carrier statistics alagator expression

Description

Computes the valance band energy relative to the vacuum level with the band gap. Affinity must be set for the material in the pdb for this to work -help

Utilities

2DTensorListToFlooxsTensor

Usage

2DTensorListToFlooxsTensor TensorList

Returns

Flooxs tensor alagator expression

Description

inputs a 2x2 matrix Tensor/ Matrix list (3 dimensional list where the first two dimensions are the 2D matrix and the 3rd dimension are other matricies). All matricies are multiplied together by component.

3DTensorAdd

Usage

3DTensorAdd TensorList

Returns

TensorList

3DTensorDyadicMult

Usage

3DTensorDyadicMult TensorList

Returns

TensorList

Description

Multiples a tensor list together termwise

3DTensorListToFlooxsTensor

Usage

3DTensorListToFlooxsTensor TensorList

Returns

Flooxs tensor alagator expression

Description

inputs a 3x3 matrix Tensor/ Matrix list (3 dimensional list where the first two dimensions are the 3D matrix and the 3rd dimension are other matricies). All matricies are multiplied together by component.

3DTensorListToFlooxsTensorAdd

Usage

3DTensorListToFlooxsTensorAdd TensorList

Returns

Flooxs tensor alagator expression

Description

inputs a 3x3 matrix Tensor/ Matrix list (3 dimensional list where the first two dimensions are the 3D matrix and the 3rd dimension are other matricies). All matricies are added together by component.

3DTensorTo2D

Usage

3DTensorTo2D TensorList

Returns

TensorList

Description

Convert a 3D tensor to 2D by chopping off the z component.

AddStressVector6

Usage

AddStressVector6 VoigtStressVector VoigtStressVector

Returns

VoigtStressVector

Description

Adds two voigt notation stress vectors together

ClearCache

Usage

ClearCache

Returns

nothing

Description

Clears the cache, just runs rm -f structures/cache/*

tcl::mathfunc::F12

Usage

tcl::mathfunc::F12 value

Returns

Fermi-Dirac integral of this value

Description

Uses Gaussian quadrature to integrate <math display="inline">1/(1+\exp(x))</math> where 0 is the band edge, negative values are below the gap, and positive values are in the band. This function has the same behavior as the alagator expression, just written in tcl.

GetAnisoCarrierTensor

Usage

GetAnisoCarrierTensor CarrierVector

Returns

tensor 3x3 list

GetCarrierTensor

Usage

GetCarrierTensor Carrier

Returns

tensor 3x3 list

GetConductivityTensor

Usage

GetConductivityTensor Mobilities Carriers

Returns

tensor 3x3 list

GetContactSupplies

Usage

GetContactSupplies

Returns

list of contact spplies

Description

gets contact supplies in list format

GetHallTensor

Usage

GetHallTensor Mobilities Carriers HallMobility MagneticField

Returns

tensor 3x3 list

GetMobilityTensor

Usage

GetMobilityTensor MobilityVector

Returns

tensor 3x3 list

KandaFirstElecConductivtyFactorTensor

Usage

KandaFirstElecConductivtyFactorTensor stress={1 2 3 4 5 6} miller=(001)mat=Silicon

Stress vector is required to be in Voigt notation string list format.

Miller indicies (miller) are in (hkl)uvwformat and defaults to 001 wafers with 100 channels.

Material (mat) is optional and defaults to silicon.

Returns

Tensor list containing the relative conductivity changes for holes

Description

Computes the normalized conductivity change for electrons according to the linear piezoresistance model

KandaFirstElecConductivtyFactorTensorHall

Usage

KandaFirstElecConductivtyFactorTensorHall stress={1 2 3 4 5 6} mag={Bx By Bz} miller=(001)mat=Silicon

Stress vector is required to be in Voigt notation string list format.

Magnetic field (mag) is a vector in with x y and z components.

Miller indicies (miller) are in (hkl)uvwformat and defaults to 001 wafers with 100 channels.

Material (mat) is optional and defaults to silicon.

Returns

Tensor list containing the relative conductivity changes for holes

Description

Computes the normalized conductivity and Hall factor changes for electrons according to the linear piezoresistance and piezo-Hall models

KandaFirstHoleConductivtyFactorTensor

Usage

KandaFirstHoleConductivtyFactorTensor stress={1 2 3 4 5 6} miller=(001)mat=Silicon

Stress vector is required to be in Voigt notation string list format.

Miller indicies (miller) are in (hkl)uvwformat and defaults to 001 wafers with 100 channels.

Material (mat) is optional and defaults to silicon.

Returns

Tensor list containing the relative conductivity changes for holes

Description

Computes the normalized conductivity change for holes according to the linear piezoresistance model

Odr

Usage

Odr value

Returns

number

Description

Computest the order of magnitude of a number.

PC

Usage

PC value initial

Returns

number

Description

Computest the percent change from a value and the initial value.

Rnd

Usage

Rnd value

Returns

number

Description

Computest the order of magnitude of a number.

SetContactSupplies

Usage

SetContactSupplies list_of_contact_supplies

Returns

nothing

Description

sets contact supplies by list

TensorAdd

Usage

TensorAdd TensorList

Returns

TensorList

Description

Takes a tensor list and adds them together returning a tensor list of length one

TensorMult

Usage

TensorMult TensorList

Returns

TensorList

Description

Takes a tensor list and multiplies them together returning a tensor list of length one

XBandEdgeShiftStress

Usage

XBandEdgeShiftStress stress={1 2 3 4 5 6} miller=(001)mat=Silicon

Stress vector is required to be in Voigt notation string list format.

Miller indicies (miller) are in (hkl)uvwformat and defaults to 001 wafers with 100 channels.

Material (mat) is optional and defaults to silicon.

Returns

list of 3 conduction band energy band level shifts in eV

Description

Uses deformation potentials to compute X valley shifts on the three principle axies

device_cache

Usage

device_cache init n=? norunonexists

Returns

nothing

Description

runs a cached device solve with init optional and n= specifies the number of device commands to run

initial_solve

Usage

initial_solve potential=DevPsi midgap=Midgap elec=Elec hole=Hole doping=Doping

Unless otherwise specified the solve is performed on the DevPsi solution variable

Midgap is used for the midgap energy unless otherwise specified

Elec is used for the electron concentration (elec) unless otherwise specified

Hole is used for the hole concentration (hole) unless otherwise specified

Doping is used for the doping concentration (doping) unless otherwise specified

Returns

nothing

Description

Performs an initial newton solve on all materials for DevPsi and then runs a device_cache command

linear_ramp

Usage

linear_ramp contact=s start=v end=v step=v fxn=optional_function

Returns

a list of xy values where the x values are the values that were pamped and the y values are what was returned from the optional fxn function.

Description

Does a linear ramp of a contact and calls an optional function on each iteration

search

Usage

search keyword keyword keyword ...

Returns

nothing

Description

Searches all help messages with keywords and prints matching messages. The -all flag is available to print all the messages that match, default is to just print the top 3.

smooth_ramp

Usage

smooth_ramp start end maxinc conName yCalc plotAndStore err

Returns

nothing

Description

start - first x value, end - final x value, maxinc - first step, conName - contact name=___, yCalc - procedure to calculate y, plotAndStore - procedure to plot with passed x value and return associated y values, err - max allowed error (percent)

Devices

Unipolar

Bipolar

Hall

Test