Copyright © 2002 by Guofu Niu
Field Effect . The essence of field-effect is modulation of the inversion charge by controlling the surface potential. As we discussed in detail in our lecture, the total charges, including both inversion charges and depletion charges, can be written as a function of surface potential. The potential drop across the gate oxide is then obtained as a function of the surface potential. The sum of the potential drop across the gate oxide and across the silicon surface space charge region (equal to surface potential) gives the gate voltage. This way we obtain a curve of gate voltage versus surface potential. This method avoids solving the surface potential for a given gate voltage, which does not have an explicit solution.
startup;
Na = 5e15; %cm
tox_nm = 30; %nm
tox = tox_nm * 1e-7; % to cm
dum = 0;
% dielectric const of oxide
ep_ox = get_const('EpsilonOxide');
Cox = ep_ox / tox;
phi_bi = 0.56 + phi_f(Na);
% thermal voltage
p_t = get_const('ThermalVoltage');
% define the range of surface potential
% in terms of thermal voltage
ps_st = 5*p_t;
ps_en = 2*phi_f(Na) + 10*p_t;
N=100;
ps = linspace(ps_st, ps_en, N);
Q_s = qs(ps, Na);
phi_g = ps + Q_s./Cox;
Vg = phi_g - phi_bi;
figure(1);
plot(ps, Vg);
xlabel('\phi_s (V)');
ylabel('gate voltage V_{GB} (V)');
figure(2);
plot(Vg, ps);
ylabel('\phi_s (V)');
xlabel('gate voltage V_{GB} (V)');
figure(3);
Q_b = qb(ps, Na);
Q_i = qinv(ps, Na);
plot(ps, Q_b, ps, Q_i, ps, Q_s);
xlabel('surface potential \phi_s (V)');
ylabel('Q_I, Q_B, and Q_S (C/cm^2)');
legend('Depletion charge Q_B', 'Inversion charge Q_I', 'Total silicon charge Q_S');
figure(4);
plot(Vg, Q_i);
xlabel('gate-to-body voltage V_{GB} (V)');
ylabel('inversion electron charge Q_I (C/cm^2)');
figure(5);
plot(Vg, Q_b, Vg, Q_i, Vg, Q_s);
xlabel('gate-to-body voltage V_{GB} (V)');
ylabel('Q_I, Q_B, and Q_S (C/cm^2)');
legend('Depletion charge Q_B', 'Inversion charge Q_I', 'Total silicon charge Q_S');
figure(6);
semilogy(Vg, Q_i);
xlabel('gate-to-body voltage V_{GB} (V)');
ylabel('inversion electron charge Q_I (C/cm^2)');
Total charge in silicon body Qs . The following is the matlab code for Qs. The input parameters are surface potential phi_s, and doping concentration Na.
function qs = qs(phi_s, Na)
dum = 0;
p_t = get_const('ThermalVoltage');
p_f = phi_f(Na);
tmp1 = get_const('sqrt_2qeps');
tmp2 = sqrt(Na);
tmp3 = (phi_s - 2*p_f)./p_t;
tmp4 = sqrt(phi_s + p_t.*exp(tmp3));
qs = tmp1*tmp2*tmp4;
Depletion charge in Si body Qb . The following program calculates Qb, the depletion charge, as a function of phi_s, the surface potential, and Na.
function qb = qb(phi_s, Na)
% qb - returns area depletion charge
% phi_s: surface potential (in V)
% Na: p-type body doping (in /cm^3)
tmp1 = get_const('sqrt_2qeps');
tmp2 = sqrt(Na);
tmp4 = sqrt(phi_s);
qb = tmp1*tmp2*tmp4;
Inversion Charge QI (electron charge) . Inversion charge QI is simply the difference between the total silicon charge and the silicon depletion charge.
function qi = qinv(phi_s, Na)
qi = qs(phi_s, Na) - qb(phi_s, Na);
Physical Constants . The following introduces how to use the function get_const(constantName) to get values of physical constants. I wrote this function to allow you easily add your own constant definition by modifying get_const.m. These are handy when you need to write some program related to field-effect transistor operation and modeling.
Usage
For example, to get the value of a constant like thermal voltage is easy, simply use:
phi_t = get_const('ThermalVoltage');
or:
phi_t = get_const('phi_t');
or
phi_t = get_const('Vt');
or
phi_g = get_const('V_t');
For the value of intrinsic concentration:
ni = get_const('ni');
or
ni = get_const('IntrinsicConcentration');
function answer = get_const(constName)
% get_const: returns value of a physical constant
%
switch lower(constName)
case {'phi_t', 'thermalvoltage', 'vt', 'v_t'}
answer = 25.8e-3; % V
case {'eps_si', 'epssi', 'epssilicon','epsilonsilicon'}
answer = 1.04e-12; % F/cm
case {'eps_ox', 'epsilonoxide', 'epsox', 'epssio2', 'epsoxide'}
answer = 3.45e-13; % F/cm
case {'ni', 'intrinsicn', 'n_i', 'intrinsicconcentration', 'intrinsicconc'}
answer = 1.4e10; % /cm^3
case {'q', 'echarge', 'elementarycharge','electroncharge'}
answer = 1.602e-19; % C
case {'sqrt_2qeps','sqrt2qeps'}
answer = 5.79e-16; % FV^(1/2)cm^(-1/2)
otherwise
display('Unknown constant name');
end
function phi = phi_f(Na)
% phi_f - returns Fermi potential of p-type body
% Na - doping conc in /cm^3
dum = 0;
p_t = get_const('ThermalVoltage');
n_i = get_const('IntrinsicConcentration');
phi = p_t .* log(Na/n_i);
Graphics Setting . Default matlab graphics may not be satisfactory. Lines are too thin, and fonts are too small. This is often a problem if you need to include a matlab figure in your report or paper. If you are using UNIX, put this following startup.m file in your working directory, and then start matlab from your working directory. If you are using windows, you can simply put the following statement as your first matlab statement: startup; ....
% start up file startup.m
% change the font size and line width as well as axes position
set(0,'DefaultAxesFontSize',12);
set(0,'DefaultTextFontSize',12);
set(0,'DefaultAxesLinewidth',2);
set(0,'DefaultLineLinewidth',2);
set(0,'DefaultAxesPosition',[0.15 0.2 0.7 0.6]);