7.1 Overview
7.2 Basic Mesh Controls
7.3 Mesh Generation for EMW
7.4 Detecting Short Edges
7.5 Including Doping Information
7.6 Tensor Mesh for Garand VE
Tensor-product meshes generated by Sentaurus Mesh are used primarily by Sentaurus Device Electromagnetic Wave Solver (EMW) and the TCAD to SPICE device simulators (Garand VE and Garand MC).
To generate a tensor-product mesh using Sentaurus Mesh, you must specify the EnableTensor option in the IOControls section. Alternatively, you can use EnableSections in the IOControls section, which instructs Sentaurus Mesh to respect all specified sections. All the necessary controls for tensor-product mesh generation are specified in the Tensor section of the command file, which can include different subsections:
Tensor { Mesh {...} EMW {...} }
where:
For very large structures, you can speed up meshing by running Sentaurus Mesh in parallel. To do so, you can specify the number of threads in the IOControls section with numThreads=<integer>.
The Mesh subsection defines the basic tensor-mesh controls, the most important of which will be introduced here. For details, see the "Tensor Section" section, in Chapter 2, of the Sentaurus™ Mesh User Guide.
All the Sentaurus Mesh commands discussed in this section are contained in the Sentaurus Workbench project Applications_Library/GettingStarted/snmesh/TensorMesh. To work with the project, start Sentaurus Workbench and copy the project TensorMesh to a local directory within the Sentaurus Workbench working directory.
The command file is partitioned by the Sentaurus Workbench parameter example. To experiment with commands, add a new example in the Sentaurus Workbench project table, and add your commands in a new example section in the command file.
Starting with an empty Mesh subsection (compare example=2), Sentaurus Mesh uses reasonable default values. The most important defaults are:
For a test 2D CMOS image sensor (CIS) boundary, this results in a tensor mesh as shown in Figure 1 (left). Note the overall discretization of approximately 10 nodes in each direction due to the default value of maxCellSize and the clearly visible graded region around the top silicon interface.
By default, Sentaurus Mesh tries to create a smooth transition between cells of different element sizes. This is controlled by the keyword grading <grad>, where <grad> is a floating-point number specifying the maximum cell-size ratio of two adjacent elements. An individual grading factor can be specified for each direction using:
To switch off grading, specify grading=off in the Mesh subsection (see Figure 1, right). Comparing the graded mesh (Figure 1, left) to it, additional horizontal lines are inserted in the top region of silicon due to the very small cells in the region on top of silicon. Similarly, vertical lines are added adjacent to the metal lines around x > –0.7 and x < 0.7.
The size of tensor-grid elements in the bulk is a key parameter to be adjusted. As multiple refinements can be specified for a particular domain, you always specify an element size range with minCellSize and maxCellSize. Sentaurus Mesh tries to fullfill all of the specified requirements, however, it might not always be possible due to contradicting constraints or other limitations.
For example, with the following commands, you switch off grading and ensure that nowhere does the cell size drop below 0.01 μm, keeping the maximum cell size below 0.1 μm in each direction (see Figure 2, left).
grading off minCellSize = 0.01 maxCellSize = 0.1
Bulk refinements can be restricted to certain regions or materials and also to particular directions (see example=5). These local refinements overwrite global settings. Therefore, with the following line, the aluminum regions are refined more in the x- and y-directions (see Figure 2, right):
maxCellSize material "Aluminum" 0.01
However, looking more closely at the metal regions, you can see that the element size in the metal is approximately 0.05 μm and not 0.01 μm as actually requested, because the global minCellSize = 0.05 conflicts with maxCellSize=0.01 in the aluminum regions. The minCellSize requirements have a higher priority than the maxCellSize requirements. This ensures that a certain element size is not undercut, because the minimum cell size determines the time step in EMW simulations. This is why the final element size in metal is 0.05 μm, as defined by minCellSize.
Note that the minCellSize=0.05 setting also affects the thin region "M2" immediately above the silicon; it contains only one element in the y-direction instead of two as previously set.
With the following line, example=6 shows region- and direction-restricted refinement:
maxCellSize region direction "M6" "y" 0.02
This refines the lens "M6" in the y-direction (see Figure 3, left).
In addition to bulk refinement, the parameter maxBndCellSize offers interface (or boundary) refinement. In example=7, you use this parameter to refine the interfaces of the aluminum regions (see Figure 3, right):
maxBndCellSize interface material "Aluminum" "Insulator2" 0.01
Refinement occurs on both sides of the interface. A similar syntax can be used for region interfaces:
maxBndCellSize interface region "region1" "region2" 0.01
In addition to materialwise or regionwise refinements, Sentaurus Mesh offers the possibility to restrict refinements to user-defined rectangular windows. In example=8, the goal is to refine the photodiode area in the middle of the silicon bulk material (see Figure 4, left):
window "PD" -0.5 0.5 0.2 0.5 maxCellSize window direction "PD" "x" 0.05 maxCellSize window direction "PD" "y" 0.02
You first define a window named "PD" with coordinates in the order <xmin> <xmax> <ymin> <ymax> (plus <zmin> <zmax> for 3D structures). Then, similar to region or material restriction, you use the parameter window to limit maxCellSize refinements to that window.
Sentaurus Mesh can also generate equidistant meshes by specifying the number of mesh points in each direction (see Figure 4, right):
numPointsX = 20 numPointsY = 50
The benefit of equidistant meshes is that generation is very fast. However, boundaries are adjusted to the equidistant grid. In this example, the size of the metal regions differs substantially, and the thin "M2" layer above the silicon is missing completely. Therefore, typically, these meshes are used for preliminary coarse estimates, or the element size must be chosen fine enough to minimize geometric errors.
Sentaurus Mesh allows the generation of tensor grids whose cell size depends on the optical path length of the incident light. In other words, you want to discretize the structure with a fixed number of points per wavelength. Such an approach is dedicated to the spatial mesh discretization suitable for Sentaurus Device Electromagnetic Wave Solver (EMW).
To run Sentaurus Mesh in EMW mode, you must use the EnableEMW option in the IOControls section. Alternatively, you can use EnableSections in the IOControls to instruct Sentaurus Mesh to respect all specified sections.
The tensor-mesh generation for EMW simulations is controlled in the EMW subsection in the Tensor section of the Sentaurus Mesh command file:
Tensor { EMW {...} }
All the Sentaurus Mesh commands discussed in this section are contained in the Sentaurus Workbench project Applications_Library/GettingStarted/snmesh/TensorEMW. To work with the project, start Sentaurus Workbench and copy the project TensorEMW to a local directory within the Sentaurus Workbench working directory.
The command file is partitioned by the Sentaurus Workbench parameter example. To experiment with commands, add a new example in the Sentaurus Workbench project table, and add your commands in a new example section in the command file.
The complex refractive index (CRI) must be defined first with:
CRI WavelengthDep real imag
Similar to Sentaurus Device, you can instruct Sentaurus Mesh to use only the real part, or only the imaginary part, or both the real and imaginary parts for the optical path calculation by specifying the required parts. The effect on refinement is discussed here.
Similar to maxCellSize, the CRI model can be restricted to a certain region or material:
CRI material "Aluminum" WavelengthDep real
The CRI model constants are read from the ComplexRefractiveIndex sections of a Sentaurus Device parameter file. The file name can be set by the following command:
Parameter Filename = "@parameter@"
If no parameter file is defined, the defaults from Sentaurus Device are used. For convenience, a predefined Sentaurus Workbench parameter @parameter@ can be used to refer to a preprocessed version of the parameter file called snmesh.par.
Finally, to evaluate the CRI model and to calculate the n&k values, a wavelength in micrometers must be specified:
Wavelength = 0.6
The calculated n&k values for each region are reported in the log file:
refractive & kappa for each material using (n k) to set cell size: ------------------------------------------------- material: Aluminum M3a: (1.2 7.26) M3b: (1.2 7.26) ...
Similar to the maxCellSize refinement, the nodePerWavelength (or npw) refinement creates a maximum cell-size refinement. However, the actual value is calculated according to the wavelength and the CRI as follows:
As an example, using WavelengthDep Real, a wavelength of 0.5 μm, and a refractive index of 2.5 with npw=10, Sentaurus Mesh will place 10 nodes into the optical length of a wavelength, which corresponds to 0.2 μm in real space. Therefore, that the element size would be 0.02 μm.
Figure 5 (left) shows a simplistic case in example=2, with a very coarse mesh, typically used to quickly run EMW without expecting realistic results:
CRI WavelengthDep real imag NPW = 5
Note how the y-refinement becomes progressively coarser from bottom to top as the refractive index decreases, from silicon with 3.939 to gas with 1.
The finer mesh inside the metal regions is obvious. This is because you switched on the imaginary refractive index part for the CRI, which has a large value of 7.26.
In example=3 (see Figure 5, right), you switched off the imaginary part of the CRI. Therefore, the finer mesh in the metal regions disappears:
CRI WavelengthDep real imag CRI material "Aluminum" WavelengthDep real NPW = 5
The npw refinements can be specified not only globally but also individually for each direction (see example=4, Figure 6, left):
CRI WavelengthDep real NPWX = 5 NPWY = 10
The element size in the y-direction is reduced in all regions.
In addition, regionwise or materialwise as well as direction-limited specifications are possible:
npw material "materialName" <integer> npw material direction "materialName" "x | y | z" <integer> npw region "regionName"" <integer> npw region direction "regionName" "x | y | z" <integer>
See example=5 in Figure 6 (right):
CRI WavelengthDep real NPW = 5 NPW region "M3a" 30 NPW material direction "Silicon" "y" 10
All refinements are relaxed to 5 npw, and only the y-refinement in the silicon is kept at 10 npw. In addition, the right metal region has a very fine refinement of 30 npw.
Similar to the Mesh subsection previously described, the EMW subsection offers a grading parameter. By default, grading is switched on, but it can be switched off with grading off. Grading settings in the EMW subsection overwrite the grading settings in the Mesh subsection.
A single element layer is not well represented in EMW because the refractive indices are interpolated at the interfaces. Therefore, it is recommended to resolve a region with at least two cells in each direction. If an EMW subsection is present in the command file, by default, Sentaurus Mesh checks whether all layers are resolved with at least two elements. This check can be switched off by specifying NoEMWSolverConstraintsCheck in the EMW subsection.
For EMW simulations, the shortest edge length is critical for the maximum stable time step, which fundamentally determines the runtime. The stable time step is calculated using the Courant criteria and is proportional to the shortest edge length. Therefore, to achieve the maximum stable time step, short edges must be avoided.
To detect short edges, Sentaurus Mesh can report the minimum and maximum edge lengths in each coordinate direction, globally as well as for each region in the log file. To activate this report, specify verbosity=3 in the IOControls section of the command file.
For a simple structure, the report looks like:
________________________________________________________ # cells: 464 # cells in X direction: 16 # cells in Y direction: 29 ________________________________________________________ Max cell size in X direction: 0.166667 Min cell size in X direction: 0.1 Max cell size in Y direction: 0.5 Min cell size in Y direction: 0.025 Maximum grading in X direction: 1.66667 Maximum grading in Y direction: 1.96078 ________________________________________________________ Region Name M1b Material Name Silicon # cells: 54 Max cell size in X direction: 0.166667 Min cell size in X direction: 0.166667 Max cell size in Y direction: 0.231029 Min cell size in Y direction: 0.0387475 ...
The tensor meshing scheme can be used with doping definitions as discussed in Section 4. Doping Definition. To incorporate doping into the mesh, call Sentaurus Mesh on the command line or run Sentaurus Mesh from within Sentaurus Workbench. In the command file, you can include in the IOControls section the following line to make the tensor mesh compatible with Sentaurus Device:
IOControls { ... UnstructuredTensorMesh=True ... }
The examples discussed here use a simple NMOS 2D device to demonstrate this capability. The example is contained in the Sentaurus Workbench project Applications_Library/GettingStarted/snmesh/TensorDoping.
The first experiment (example=2) defines some constant and analytic doping profiles as follows:
Definitions { Constant "substrate" { Species = "BoronActiveConcentration" Value = 1e+16 } ... }
and places this profile in a Placements section:
Placements { Constant "substrate" { Reference = "substrate" EvaluateWindow { Element = material ["Silicon"] } } ... }
Figure 7 (left) shows the analytic doping profile.
Finally, an equidistant tensor mesh is defined:
Tensor { Mesh { numPointsX = 100 numPointsY = 1000 } }
Figure 8 shows the final mesh.
The second experiment (example=3) incorporates the doping profile from an external TDR file:
Definitions { Submesh "doping" { Geofile = "@pwd@/doping_msh.tdr" } } Placements { Submesh "doping" { Reference = "doping" } }
Figure 8 (right) shows the doping profile. This time, a more sophisticated meshing strategy is applied using different, partially overlapping windows to resolve the channel and the drain more accurately:
Tensor { Mesh { minCellSize direction "x" 0.005 maxCellSize = 0.05 window "active" 0 0.365 -0.2 0.2 maxCellSize window direction "active" "y" 0.005 window "channel" 0 0.15 -0.005 0.05 maxCellSize window direction "channel" "y" 0.001 window "source" 0.1 0.365 0.0 0.14 maxCellSize window direction "source" "y" 0.002 } }
For overlapping maxCellSize refinements, Sentaurus Mesh uses the smallest value in the overlapping domain.
Device structures generated from process and topography simulation are based on a tetrahedral mesh in TDR format, while input structures for Garand VE (as well as Garand MC) must use a rectangular tensor-product mesh. An essential step in the TCAD to SPICE flow is the conversion of the process-simulated structure from a tetrahedral mesh to a tensor-product mesh.
You can use the tensor meshing scheme (with incorporated doping) of Sentaurus Mesh to convert the incoming finite-element mesh to a mesh suitable for simulation with Garand VE. To produce a file in TDR format that can be imported into Garand VE, call Sentaurus Mesh from the command line:
snmesh <file_name>_msh
Alternatively, you can run Sentaurus Mesh from within Sentaurus Workbench.
The command file for tensor-mesh conversion has the format:
IOControls { InputFile = "@pwd@/prcsim_bnd.tdr" EnableTensor } * end IOControls Definitions { SubMesh "SubMesh" { Geofile = "@pwd@/prcsim_fps.tdr" } } * end Definitions Placements { SubMesh "SubMesh" { Reference = "SubMesh" } } * end placements
The option EnableTensor corresponds to the -t command-line option.
Then, a SubMesh subsection is defined that contains the data fields (such as DonorConcentration and AcceptorConcentration) to be mapped onto the converted tensor-product mesh. For mesh conversion for Garand VE, Geofile specifies the file containing the data fields you want to transfer (usually, <filename>_fps.tdr). The data fields defined on the external mesh are interpolated to the newly generated tensor-product mesh.
The Placements section must include the SubMesh profile instance.
The Tensor section includes the commands to control the tensor-product mesh generation. Remeshing can be applied in the command file to ensure features are resolved properly, by defining various tensor-mesh controls in the Mesh subsection (see Section 7.2 Basic Mesh Controls).
The examples discussed here use a 14 nm FinFET to demonstrate tensor mesh conversion for Garand VE. The complete project can be investigated from within Sentaurus Workbench in the directory Applications_Library/GettingStarted/snmesh/TensorGarand.
The first experiment (example T1) uses the default settings for the tensor mesh. Figure 9 shows the converted tensor mesh with doping. Without any control of the remeshing from users, the converted mesh is coarse, which might potentially reduce the accuracy of Garand VE simulations.
The second experiment (example T2) applies a more sophisticated meshing strategy using different windows:
Tensor { Mesh { window "finemesh" 0.0 0.036 0.0 0.01 -0.1 0.1 window "finemesh1" 0.0 0.036 0.0 0.01 0.1 0.2 window "finemesh2" 0.0 0.036 0.0 0.01 -0.2 -0.1 maxCellSize window "finemesh" 0.0015 maxCellSize window direction "finemesh" "x" 0.00075 maxCellSize window direction "finemesh" "y" 0.00075 maxCellSize window "finemesh1" 0.00075 maxCellSize window "finemesh2" 0.00075 Doping } } * end Tensor
As shown in Figure 10, the converted mesh is much denser than in example T1, and the corner of the fin is resolved more accurately.
If the tensor mesh is very dense, it results in longer simulation times for Garand VE. Therefore, when converting tensor meshes for Garand VE, a balance between finer feature resolution and faster simulation time should be considered.
The third experiment (example T3) applies a relaxed meshing strategy compared to example T2. Figure 11 shows that the mesh is less dense now, particularly in the z-direction, but the critical features of the structure, for example, the corner of the fin, are still well resolved.
You can also refine the mesh based on regions defined in the input TDR file. The fourth experiment (example T4) applies such a regional refinement strategy:
Tensor { Mesh { maxCellSize region "ChFin" 0.0015 maxCellSize region direction "ChFin" "x" 0.00075 maxCellSize region direction "ChFin" "y" 0.00075 maxCellSize region direction "SDepi.1" "X" 0.005 maxCellSize region direction "SDepi.2" "x" 0.005 maxCellSize region "GATEox_1" 0.0015 maxCellSize region direction "GATEox_1" "x" 0.0005 maxCellSize region direction "GATEox_1" "y" 0.0005 maxCellSize region "HfO2_1" 0.0015 maxCellSize region direction "HfO2_1" "x" 0.0005 maxCellSize region direction "HfO2_1" "y" 0.0005 Doping } } * end Tensor
Figure 12 shows the converted mesh is good overall and the corner of the fin is well resolved.
Remeshing must be carefully designed, taking advantage of different approaches, depending on the device structure. This is particularly important when performing a design-of-experiments, because it is often done in TCAD to SPICE flows, where simulation splits are set up with different device process parameters and critical dimensions.
Copyright © 2022 Synopsys, Inc. All rights reserved.