Моделирование сопротивлений диффузионных и ионно-легированных слоев

Страницы работы

Содержание работы

Моделирование сопротивлений диффузионных и ионно-легированных слоев.

Металлургическая граница p-n перехода Xj в Si структуре с диффузионным слоем определяется из уравнения:

Где

Диффузантом в моей задаче был B,

Также дана

Помимо расчета Xj наша модель должна считать также удельное сопротивление ρs;

  μ - подвижность основных  носителей заряда.

μ(N) рассчитывается по формуле Зильдербергера для T=300K;

 

Для электронов;

Для дырок.

Входными переменными являются N0-концентрация, Nb-концентрация в подложке, T-температура, t-время. Выходными переменными являются Xj-глубина, ros – сопротивление.

Глобальные переменные N0_,Nb_,T_,t_ в нашей задаче нужны для того, чтобы значения величин попали в левую часть уравнения.

Ниже представлена наша модель:

#include <iostream.h>

#include <conio.h>

#include "root.h"

#include "integral.h"

double Left(double );

double N0_, Nb_, T_, t_;

double f(double x);

void Model(double N0, double Nb, double T, double t,

double& xj, double& ros)

{

//описание данных

int Nckl,Err;

double epsX, epsF, Fx;

//изменение глобальных переменных

N0_=N0; Nb_=Nb; T_=T; t_=t;

//задание параметров ньютоновских итераций

epsX=1E-10;

epsF=1E+09;

xj=0;

//расчет xj

Err=RootNewton(Left,epsX,epsF,xj,Fx,Nckl);

if(Err!=0) { xj=0; ros=0; };

//расчет pos

ros=1/SdxSimps(f,0,xj,100);

//перевод в микрометры

xj=1E+04*xj;

}

#include <math.h>

double erfc(double);

double Left(double xj)

{

// описание данных

double L,D,D0,dE,TK;

double k=8.61738E-05;

// задание параметров

D0=0.555;

dE=3.42;

// расчет коэффициента диффузии D

TK=T_+273;

D=D0*exp(-dE/(k*TK));

// расчет характеристической длины L

L=2*sqrt(D*60*t_);

// расчет левой части

return N0_*erfc(xj/L)-Nb_;

}

double f(double x)

{

//описание данных

const double q=1.602E-19;

double Nsum, N, mob;

//расчет N(x)

N=Left(x);

//расчет подвижности

Nsum=Left(x)+2*Nb_;

mob=45+415/(1+pow(Nsum/2.23E+17,0.72));

return q*N*mob;

}

управляющая программа:

#include <iostream.h>

#include <conio.h>

void Model(double N0, double Nb, double T, double t,

double& xj, double& ros);

void main()

{

//описание данных

double N0,Nb,T,t,Xj,ros;

//задание параметров

N0=1E+20;

Nb=1E+15;

T=1100;

t=60;

//вызов функции

Model( N0, Nb, T,t,Xj,ros);

//вывод результата

clrscr();

cout<<"Xj = "<<Xj<<"  мкм"<<endl;

cout<<"ros = "<<ros<<" ом*кв"<<endl;

getch();

}

рис.1. Зависимость Xj от T.

рис.2. Зависимость ros от T.

Похожие материалы

Информация о работе