Getting started 1

In this section we will see, step by step, how to use TiberCAD to simulate numerically
a semiconductor device. As a very simple 1D example we will refer to the Tutorial 0 (Si
bulk) that you can find in the Tutorials directory. See Getting started 2D for a 2D example.

 

Step 1: Modeling the device

As a first step, we have to model the device. To do so, you can use DEVISE module
of ISE-TCAD 9.5 software package or GMSH program. Here we will see in details the
procedure for GMSH. There are two possible ways to use GMSH:

  1. Interactive, using the graphical interface
  2. Using a script file.

In the following we’ll see how to write a basic GMSH script (bulk.geo); for any details
please refer to GMSH manual GMSH (http://geuz.org/gmsh/).
In a GMSH script, several variables can be defined and given a value in this way:
L = 1;
d = 0.01;

these are valid GMSH variables: L is just the length of the Si sample; d is the value
of a characteristic mesh length (see below).

  • Definition of geometrical entities Points:

Point(1) = {0, 0, 0, d};
Point(2) = {L, 0, 0, d};

In the definition of a geometrical point, the three first expressions inside the braces
on the right hand side give the three X, Y and Z coordinates of the point ; the last
expression (d) sets the characteristic mesh length at that point, that is the size of
a mesh element, defined as the length of the segment for a line segment, the radius of
the circumscribed circle for a triangle and the radius of the circumscribed sphere for a
tetrahedron.
Thus, the smaller is the value of d, the greater is the mesh density close to that point.
The size of the mesh elements will then be computed in GMSH by linearly interpolating
these characteristic lengths in the whole mesh.

 


N.B.: In a 1D simulation it is assumed that the geometrical model is restricted to
the x axis. Any other geometrical orientation could give impredictable results.


 

  • Definition of geometrical entity Line:

Line(1) = {1, 2};
The two expressions inside the braces on the right hand side give the identification
numbers of the start and end points of the line.

  • Definition of the physical entity Physical Line 1:

Physical Line(1) = {1};
The expression(s) inside the braces on the right hand side give the identification
numbers of all the geometrical lines that need to be grouped inside the physical line.
In this way, in general, physical regions are created which associate together geometrical
regions, and then the related mesh elements, which share some common physical
properties. It’s only these physical regions which can be referred to outside GMSH. In
TiberCAD , this is done by associating one or more physical regions to a TiberCAD
region through the keyword mesh_regions (see in the following).

  • Definition of two physical entities Physical Point:

Physical Point(1) = {1};
Physical Point(2) = {2};

 

Beginning from GMSH v.2, it is possible, alternatively, to assign more convenient
Physical Names to the Physical entities, instead of numerical IDs. Physical Names
consist of strings enclosed between quotation marks. The syntax is the following:

Physical Line("bulk") = {1}
............
Physical Point("Anode") = {1};

 

N.B.: In general, in a nD simulation, (n-1)D physical regions (points in 1D, lines
in 2D, surfaces in 3D) are used by TiberCAD to impose the required boundary conditions.
Each (n-1)D physical region defined in this way in GMSH will be associated in
TiberCAD to a boundary condition region, through the keyword BC_reg_numb. Thus,
in this case, Physical points 1 and 2 will be associated respectively to two BC_regions
(see in the following).

 

Step 2: Meshing the device

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. Alternatively, a
non-interactive mode is also available in GMSH, without graphical user interface. For
example, to mesh this 1D tutorial in non-interactive mode, just type:
gmsh bulk.geo -1 -o bulk.msh
where bulk.geo is the geometrical description of the device with GMSH syntax;
-1 means 1D mesh generation;
some command line options are:
-1, -2, -3 to perform 1D, 2D or 3D mesh generation,
-o mesh_file.msh to specify the name of the mesh file to be generated
In this way, a .msh has been generated and is ready to be read in TiberCAD.

 

Step 3: TiberCAD Input file

Now we have to write down the TiberCAD input file (see bulk.tib in Tutorial 0: Bulk Si ).
For a full reference see End User Guide

1 - Definition of Device Regions

First, we have to list all the TiberCAD Regions present in our Device: a TiberCAD
Region is usually a section of the device featuring the same material and possibly the
same doping.
$Device
{
Region bulk
{
mesh_regions = 1
material = Si
doping = 1e16 doping_type = donor
}
}

The TIBERCAD Region bulk is made of Silicon and n-doped with a concentration
1016cm−3 .
Through the keyword mesh_regions, one or more of the physical regions (Physical
Lines in 1D, Physical Surfaces in 2D, Physical Volumes in 3D) previously defined in the
GMSH mesh can be associated to the present TIBERCAD Region.

With mesh regions = 1, we associate the Physical Line 1, defined in the Step 1, to
the TIBERCAD Region bulk.

2 - Definition of Simulation

Now we define the Simulation driftdiffusion_1 : it belongs to the model class driftdiffusion
Models
{
model driftdiffusion
{
options
{
simulation_name = driftdiffusion_1
physical_regions = all
}

The TIBERCAD simulation driftdiffusion_1 , belonging to the model driftdiffusion,
will be applied to the whole device structure (physical regions = all ).

3 - Definition of Boundary Conditions

The anode and cathode contacts of our 1D Si sample are defined as Boundary conditions
regions (BC_Region_anode , BC_Region_cathode) in the following way:
BC_Region anode
{
BC_reg_numb = 1
type = ohmic
voltage = @Vb
}
BC_Region cathode
{
BC_reg_numb = 2
type = ohmic
voltage = 0.0
}

Both contacts are defined as ohmic, cathod is assigned a fixed voltage = 0.0, while anode
voltage is given by the value of the variable Vb (voltage = @Vb).

Through the keyword BC_reg_numb, one or more of the (n-1)D physical regions
(Physical Points in 1D, Physical Lines in 2D, Physical Surfaces in 3D) previously defined
in the GMSH mesh can be associated to the present TIBERCAD BC_Region. With
BC_reg_numb = 1, we associate the Physical Point 1, defined in the Step 1, to the
TIBERCAD BC_Region anode; with BC_reg_numb = 2, we associate the Physical Point
2, defined in the Step 1, to the TIBERCAD BC_Region cathode.

4 - Definition of Simulation parameters

The variable Vb is specified in the sweep block, in the Solver section
sweep
{
simulation = driftdiffusion_1
variable = Vb
start = 0.0
stop = 1
steps = 10
}

In this way, the simulation driftdiffusion_1 is performed for 10 ( steps = 10 ) values
of the anode voltage (variable = Vb), between 0 and 1.

5 - Definition of Execution parameters

In the Simulation section , we decide which simulations to perform and in which order;
we set solve = sweep, to execute the sweep which run driftdiffusion_1 simulation for
the specified loop.
$Simulation
{
#searchpath = .
meshfile = bulk.msh
dimension = 1
temperature = 300
solve = sweep
resultpath = output
output_format = grace
plot = (Ec, Ev, ContactCurrents)
}

Output files with conduction and valence band profiles (plot = Ec,Ev..) and all the
calculated values of the current at the contacts (ContactCurrents) (the IV characteristic)
are generated.

Step 4: Run TiberCAD

Now we can run TiberCAD:
tibercad bulk.tib
The generated Output files are:

  • driftdiffusion materials.dat: material (mesh) regions, in this case just region 1
  • driftdiffusion nodal.dat: nodal quantities (here conduction and valence band)
  • sweep driftdiffusion Vb.dat : integrated current at the two contacts for each sweep step.