Tutorial 04: n-Mosfet 2D

In this tutorial we will show an example of 2D simulation of a Si n-MOSFET device.
We will calculate :


In order to execute correctly the example you should have the following files in the working directory:
mosfet.tib : input file for TiberCAD
mosfet.msh : mesh file produced by GMSH from the script mosfet.geo

For a detailed tutorial of the geometrical modelling with GMSH, see Getting started 2

Here is the geometry of the Mosfet device as it is meshed by GMSH.

mesh

 


Let's give now a look to the input file; for further details you can refer to the program reference manual.

Device structure


$Device
{
Region substrate
{
material = Si
doping = 1e18 doping_type = acceptor
}
Region contact
{
material = Si
doping = 5e19 doping_type = donor
}
Region oxide
{
material = SiO2
}
}

First we define the device structure: it is composed by three TiberCAD Regions: substrate and contact, both made of Silicon, and oxide (SiO2).
The substrate region (which include channel) is doped p-type 1018 cm-3; contact region is composed by the two regions around source and drain, both heavily doped n-type 5x1019 cm-3 ; finally, oxide is the gate dielectric.

 

Drift-diffusion simulation

 

Now, we define the TiberCAD simulation models which will be used in this example.
We are going to calculate Poisson and Drift-diffusion (model driftdiffusion) for all the device (physical_regions = all in options).
A field dependent model for mobility is applied.


$Models
{
model driftdiffusion
{
options
{
simulation_name = driftdiffusion
physical_regions = all
}
physical_model recombination
{
model = srh
}
physical_model electron_mobility
{
model = field_dependent
low_field_model = doping_dependent
}

Then, we have to specify the the three contacts of our Mosfet:


BC_Regions 
{
BC_Region gate
{
type = schottky
barrier_height = 3.0
voltage = @Vg[0.0]
}
BC_Region source
{
type = ohmic
voltage = 0.0
}
BC_Region drain
{
type = ohmic
voltage = @Vd[0.5]
}
}  


The contacts (boundary regions for this model) have to be associated each to the corresponding region defined in the mesher program (here GMSH) as a Boundary region (which in the present case of 2D simulation is a line (Physical Line in GMSH)). This is made simply with
BC_Region gate

and so on for the other contacts
The gate contact is defined as a schottky contact, with a barrier value depending on the gate metal workfunction ( barrier_height).
The gate voltage is expressed by the notation @Vg[0.0]. This means that the gate voltage will be given the value of the variable Vg, specified in one of the sweep block (see after). [0.0] means that the default voltage value is 0.0 V.
Source and drain contacts are defined as ohmic; while source is fixed to 0 (voltage = 0.0), drain voltage is expressed, as for the gate, by the value of the sweep variable Vd ( voltage = @Vd[0.5]).

 


 

UP

 

Calculation of IV drain characteristic


# Definition of  Model-dependent Solver parameters
$Solver
{
driftdiffusion
{
nonlinear_solver = tiber
coupling = electrons
ksp_type = bcgsl
nonlin_max_it = 10
nonlin_step_tol = 1e-3
ls_max_step = 2
}
Sweep
{
sweep_drain
{
simulation = driftdiffusion
variable = Vd
start = 0.0
stop = 2.0
steps = 20
#plot_data = true
}
sweep_gate
{
variable = Vg
start = -0.1
stop = 1.0 #0.5
steps = 11 # 6
simulation = sweep_drain
plot_data = true
}
}

Now, the parameters for the solver are defined, for the driftdiffusion model.
coupling = electrons specifies that only one type of carrier is considered. ksp_type = bcgsl defines the solver type, nonlinear_solver = tiber specifies the non-linear solver.

  • As a first step, we are going to calculate Id/Vd drain current characteristic.

We include the optional Sweep block, whose syntax is the following:

Sweep
{
sweep_name1
{
.....................
}
sweep_name2
{
.............................
}
}

Her we define two nested sweeps: the external sweep (sweep_gate) calculates the drain current for a series of gate voltages, from -0.1 to 0.5 V; for each calculation, a sweep on drain voltages is performed (simulation = sweep_drain), defined by sweep_drain. In sweep_drain, driftdiffusion is calculated (simulation = driftdiffusion) for a series of drain voltages from 0 to 2 V.

In the Physics section usually some physical parameters are defined.
In this case we just state that we want to use the unstrained model for driftdiffusion (since no strain calculation is intended) and that we use Fermi-Dirac statistic

$Physics
{
driftdiffusion
{
statistics =  FD
}
}


Finally, in Simulation section, we define the 2D (dimension = 2) simulation to be performed, specified by
solve = sweep_gate: this means that we are going to perform a calculation of Poisson and drift-diffusion
with a double sweep on gate and drain voltage, to calculate Id/Vd drain current characteristics.

Results of calculation will be in the format of paraview data visualization and post-processing program (output_format = vtk)
In plot we define the output variables to be calculated.


$Simulation
{
searchpath =  ../../materials
meshfile = mosfet.msh
dimension = 2
temperature = 300
solve = sweep_gate
resultpath = output_IV_char 
#output_format = gmv
output_format = vtk
plot = (Ec, Ev, QFermi_e, eDensity, eCurrent,  NetRecombination, EField, ElPotential, ContactCurrents)
}


Now we can run TiberCAD....

tibercad mosfet.tib

 


 

Output

After the execution, the output directory contain the simulation results, as defined in
output_format and plot.

TiberCAD supports 3 packages for 2D and 3D data visualization and post-processing:

Free:
1) GMV, http://www-xdiv.lanl.gov/XCM/gmv/GMVHome.html
output_format = gmv
2) Paraview, http://www.paraview.org/New/index.html
output_format = vtk

Commercial:
3) Tecplot-ise, http://www.amtec.com/
output_format = ise


Let's see how to use Paraview to plot TiberCAD 2D results:

FIrst, open the .vtk file from your directory:

 

The name of the loaded files will be shown in the Pipeline browser.

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 from the menu "Color by", e.g. electron _density. Also, in Display section Scale and legend bar can be setted.

 

 

 

 

 

Thus, in driftdiffusion_materials.vtk we have the information about the material regions of the device: here, 1 indicates the substrate Region , 2 the contacts region and 3 the SiO2 gate dielectric.

In driftdiffusion_nodal.vtk and all the other files for each bias step, we have the output for the nodal quantities which have been calculated, e.g. conduction and valence bands, (quasi)fermi levels, electron and hole density and mobility.

For example, this is the electron density for a drain voltage = 2V and a gate bias Vg = 1V.
You can see the large increase of electron density in the channel, which is pinched off close to drain contact due to the high drain voltage.

 

 


In sweep_2_driftdiffusion_Vg_0.000_Vd.dat and all the other files for each Vg bias step (sweep_2_driftdiffusion_Vg_step_Vd.dat) we have the IV drain characteristics for each Vg bias.

 

Here are the IV characteristics obtained for a gate voltage Vg between -0.1 and 0,5 V.

 

 


UP

Calculation of transfer characteristic


 

  • As a second step, we are going to calculate Id/Vg transfer characteristic.(see input file mosfet_transchar.tib)

 


To do so, the two sweeps have to be defined in this way:

Sweep  {
sweep_drain
{
simulation = driftdiffusion
variable = Vd
start = 0.0
stop = 1.0
steps = 5
}
sweep_gate
{
variable = Vg
start = -1.0
stop = 0.5
steps = 150 
simulation = driftdiffusion
}
}

the first sweep (sweep_drain) calculates the drain current (simulation = driftdiffusion) for a series of drain voltages, from 0 to 1 V, while Vg is kept at its initial value Vg=0; at the end of this calculation we have polarized the mosfet at a drain voltage of 1 V. Then a sweep on gate voltages is performed, defined by sweep_gate. In sweep_gate , driftdiffusion is calculated (simulation = driftdiffusion) for a series of gate voltages from -1 to 0.5 V, by keeping the drain voltage at Vd = 1 V.
At the end, the Id/Vg transfer characteristic for Vd=1 V is obtained.

 

This time, in Simulation section, we define the 2D simulation to be performed by writing solve=(sweep_drain,sweep_gate): this means that we are going to perform a calculation of Poisson and drift-diffusion
with two sweeps in series, first a sweep on drain and than a sweep on gate voltage, to calculate Id/Vg transfer characteristic.

$Simulation
{
meshfile = mosfet.msh
dimension = 2
temperature = 300
solve = (sweep_drain, sweep_gate)
resultpath = output_transf_char
output_format = vtk
plot = (Ec, Ev, QFermi_e, QFermi_h, eDensity, hDensity, eCurrent, hCurrent,  NetRecombination, EField, ElPotential, ContactCurrents)
}

The rest of the input file remains unchanged.

 

Now we can run TiberCAD another time....

tibercad mosfet.tib

 

  • Now, in the files sweep_1_driftdiffusion_Vd_step_Vg.dat (e.g. sweep_1_driftdiffusion_Vd_1.000_Vg.dat) , we have the Id/Vg transfer characteristics for each Vd_step bias.

 

Here is the Id/Vg transfer characteristic for a drain voltage Vd = 1 V .

 

As before, in driftdiffusion_elemental.vtk and driftdiffusion_nodal.vtk, we have the output for respectively the nodal and the elemental quantities which have been calculated.

The subthreshold S parameter, given by

 

 

in this case results to be ~80 mV/dec.

 

UP

AttachmentSize
mosfet.msh309.63 KB
mosfet.geo1.67 KB
mosfet.tib2.28 KB
mosfet_transchar.tib2.14 KB