In this second example we will refer to the Tutorial 4 (Si n-Mosfet) that you can find
in the Tutorials directory.
Again, as a first step, we have to model the device.
We’ll see in some details how to design and mesh a mosfet device with GMSH.
lsub=0.03;
lacc=0.002;
lct=0.0005;
lg=0.0015;
lh=0.01;
lc=0.0005;
these variables are used in the script to assign proper values to the mesh characteristic
length of the defined Points
Lg_2 = 0.0375;
d = 0.01;
Ls = 0.1;
h = 0.25;
b = 0.0025;
o = 0.005;
xd = Lg_2 + d;
xd2 = Lg_2 + d / 2;
xmax = xd + Ls - d;
These other convenient variables are used to parametrize the most relevant geometrical
features, such as channel length, oxide thickness, and so on.
Point(1) = {0, -h, 0, lsub};
Point(2) = {0, 0, 0, lc};
Point(3) = {xmax,-h,0.0,lsub};
Point(4) = {-xmax,-h,0.0,lsub};
Point(5) = {xmax,0,0.0,lh};
Point(6) = {-xmax,0,0.0,lh};
..........................
Line(1) = {4,1};
Line(2) = {3,13};
Line(6) = {4,14};
Line(7) = {10,9};
Line(8) = {12,2};
Line(9) = {8,7};
Line(10) = {11,8};
Line(11) = {9,12};
Line(13) = {7,6};
..........................
Line Loop(40) = {28,2,-34,33,8,29,-31,-30,-6,1};
Plane Surface(41) = {40};
we obtain the following surface:
The Physical surfaces are the 2D Physical regions of the mesh and will be assigned
to the related TIBERCAD regions through the keyword mesh regions (see
Step )
Physical Surface(1) = {41}; // n-Si
Physical Surface(2) = {44,47}; // n+-Si
Physical Surface(3) = {46}; // SiO2
In other word, each Phisical Line corresponds to a boundary condition (a contact in the case of a driftdiffusion calculation): thus Physical Line 1 refers to source contact, P.L. 2 to gate contact, P.L. 3 to drain contact. The numerical identifications of these Phisical Lines will be asigned to TIBERCAD BC regions by means of the BC reg numb instruction.
Physical Line(1) = {13}; // source
Physical Line(2) = {39,38}; // gate
Physical Line(3) = {19}; // drain
Here is the final geometrical model of our Mosfet structure.
The .geo script file with the geometrical description can be run in GMSH, to display
the modelled device and to mesh it through the GMSH graphical interface (see fig. 3.2).
Alternatively, a non-interactive mode is also available in GMSH, without graphical user
interface. For example, to mesh this 2D tutorial in non-interactive mode, just type:
gmsh mosfet.geo -2 -o mosfet.msh.
Here is the result of the 2D meshing:
Now we have to write down the TIBERCAD input file (see mosfet.tib in the Tutorials).
Three TIBERCAD regions are defined: to each of them, one mesh region is associated,
namely
the Phisical Surfaces 1, 2 and 3 defined in Step 1. However, in general more than
one mesh region can be associate to a single TIBERCAD region, if this is convenient.
Region substrate
{
mesh_regions = 1
material = Si
doping = 1e18 doping_type = acceptor
}
Region contact
{
mesh_regions = 2
material = Si
doping = 5e19 doping_type = donor
}
Region oxide
{
mesh_regions = 3
material = SiO2
}
Now we define the Simulation dd: it belongs to the class driftdiffusion
model driftdiffusion
{
options
{
simulation_name = dd
physical_regions = all
}
This time, for this simulation we declare two driftdiffusion physical models, respectively
about mobility (field dependent) and recombination (srh); see the reference
manual for the details.
physical_model recombination
...................
physical_model electron_mobility
The source, drain and gate contacts of the Mosfet device are defined as Boundary
conditions regions (BC Region source , BC Region drain, BC Region gate ) in the
following way:
BC_Region gate
{
BC_reg_numb = 2
type = schottk
barrier_height = 3.0
zero_grad_fermi_e = true
zero_grad_fermi_h = true
voltage = @Vg[0.0]
}
BC_Region source
{
BC_reg_numb = 1
type = ohmic
zero_grad_fermi_h = true
voltage = 0.0
}
BC_Region drain
{
BC_reg_numb = 3
type = ohmic
zero_grad_fermi_h = true
voltage = @Vd[0.5]
}
To each of the BC_regions, one BC_reg_numb is assigned, that is one of the Physical
Lines 1,2, 3 defined in Step 1, which represent the contact regions.
Note that, while source and drain are defined as type= ohmic, gate BC_region is
defined as type = schottky; barrier height = 3.0 specifes the metal/oxide interface barrier
and depends on the contact metal workfunction.
Drain voltage is defined as @Vd[0.5] and gate voltage as @Vg[0.0]. This specifies
that the value of the voltage will be determined at each moment of the simulation, by
the value of the two variables Vd and Vg, which will be assigned in the sweep definition.
Two sweeps are requested for this simulation, that is an external loop on Vg (the gate
voltage) and an internal loop on Vd (the drain voltage) for each value of Vg; in this way,
the IV drain characteristics for a series of gate biases are obtained in output.
sweep_1
{
simulation = dd
variable = Vd
start = 0.0
stop = 2.0 #0.1
steps = 200 #200 #1
# plot_data = true
}
sweep_2
{
variable = Vg
start = -0.1
stop = 0.5
steps = 6
simulation = sweep_1
#simulation = driftdiffusion
}
In the Simulation section , we decide the simulation dimension (dimension = 2 ), then
which simulations to perform and in which order; we set solve = sweep 2, to execute the
external gate voltage sweep sweep_2 which in its turn call the sweep sweep_1 where drain
current is calculated for all the chosen drain voltage steps by running dd simulation.
$Simulation
{
meshfile = mosfet.msh
dimension = 2
temperature = 300
solve = sweep_2
resultpath = output_IV_char
output_format = vtk
plot = (Ec, Ev, QFermi_e, QFermi_h, eDensity, hDensity, eCurrent, hCurrent,
NetRecombination, EField, ElPotential, ContactCurrents)
}
Output files with conduction and valence band profiles, quasi-fermi levels, electron
and hole density, recombination, electric field and potential (plot = Ec,Ev,.....) will be
generated, together (ContactCurrents) with a file with all the calculated values of the
drain current at the contacts for each gate bias step (the IV characteristics).
Now we can run TiberCAD:
tibercad mosfet.tib
The generated Output files are:
driftdiffusion_materials.vtk: information about the material regions of the device.
driftdiffusion_nodal.vtk: output for the nodal quantities which have been calculated,
e.g. conduction and valence bands, (quasi)fermi levels, electron and hole density
and mobility.
driftdiffusion_elemental.vtk: output for the elemental quantities (e.g. electric field,
current density).
sweep_2_driftdiffusion_Vg_0.000_Vd.dat and similar for all the Vg steps: drain
current characteristics for each Vg bias.
Let's see now a very quick guide to Paraview: For any details please see http://www.paraview.org/New/index.html
To plot TiberCAD 2D results, first, open the .vtk file from your working directory.
The name of the loaded files will be shown in the Pipeline browser.
Then, to visualize the content of the file, you should click on the Apply button in the Properties tab in Object Inspector
To select the output variable , go to Display and choose an item from the menu "Color by", e.g. electron _density. Also, in Display section, Scale and legend bar can be setted.