DIP User Guide Version C-2009.06, June 2009
ii DIP User Guide
C-2009.06
Copyright Notice and Proprietary Information
Copyright ? 2009 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and may be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may be reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise, without prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.
Right to Copy Documentation
The license agreement with Synopsys permits licensee to make copies of the documentation for its internal use only. Each copy shall include all copyrights, trademarks, service marks, and proprietary rights notices, if any. Licensee must assign sequential numbers to all copies. These copies shall contain the following legend on the cover page:
“This document is duplicated with the permission of Synopsys, Inc., for the exclusive use of __________________________________________ and its employees. This is copy number __________.”Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America. Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MA TERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A P ARTICULAR PURPOSE.
Registered Trademarks (?)
Synopsys, AMPS, Astro, Behavior Extracting Synthesis T echnology, Cadabra, CA TS, Certify, CHIPit, Design Compiler, DesignWare, Formality, HDL Analyst, HSIM, HSPICE, Identify, iN-Phase, Leda, MAST , ModelTools, NanoSim, OpenVera, PathMill, Physical Compiler, PrimeTime, SCOPE, Simply Better Results, SiVL, SNUG, SolvNet, Syndicated, Synplicity, the Synplicity logo, Synplify, Synplify Pro, Synthesis Constraints Optimization Environment, T etraMAX, UMRBus, VCS, Vera, and YIELDirector are registered trademarks of Synopsys, Inc.
Trademarks (?)
AFGen, Apollo, Astro-Rail, Astro-Xtalk, Aurora, AvanWaves, BEST, Columbia, Columbia-CE, Confirma, Cosmos, CosmosLE, CosmosScope, CRITIC, CustomSim, DC Expert, DC Professional, DC Ultra, Design Analyzer, Design Vision, DesignerHDL, DesignPower, DFTMAX, Direct Silicon Access, Discovery, Eclypse, Encore, EPIC, Galaxy, Galaxy Custom Designer, HANEX, HAPS, HapsTrak, HDL Compiler, Hercules, Hierarchical Optimization T echnology, High-performance ASIC Prototyping System, HSIM plus , i-Virtual Stepper, IICE, in-Sync, iN-Tandem, Jupiter, Jupiter-DP , JupiterXT , JupiterXT-ASIC, Liberty, Libra-Passport, Library Compiler, Magellan, Mars, Mars-Rail, Mars-Xtalk, Milkyway, ModelSource, Module Compiler, MultiPoint, Physical Analyst, Planet, Planet-PL, Polaris, Power Compiler, Raphael, Saturn, Scirocco, Scirocco-i, Star-RCXT, Star-SimXT , System Compiler, System Designer, T aurus, TotalRecall, TSUPREM-4, VCS Express, VCSi, VHDL Compiler, VirSim, and VMC are trademarks of Synopsys, Inc.
Service Marks (sm )
MAP-in, SVP Café, and T AP-in are service marks of Synopsys, Inc.
SystemC is a trademark of the Open SystemC Initiative and is used under license.ARM and AMBA are registered trademarks of ARM Limited.Saber is a registered trademark of SabreMark Limited Partnership and is used under license.All other product or company names may be trademarks of their respective owners.
Contents
About This Manual v Audience. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .v
Related Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .v
Typographic Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .v
Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Accessing SolvNet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Contacting the Synopsys Technical Support Center . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Contacting Your Local TCAD Support Team Directly. . . . . . . . . . . . . . . . . . . . . . . .vii
Chapter 1 Using DIP1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Exchanging Datasets Between Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Potential Problems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Importing Datasets from the Incorporation Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Extrapolation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Advanced Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
Possible Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Linear and Logarithmic Interpolation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Constructing Datasets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Example Script for Incorporating 2D Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Compatibility: Active and Chemical Concentrations. . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Reading and Mapping Datasets in.dat Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Chapter 2 DIP Concepts11 Basic Object Structure: Device, Regions, and Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . .11 dip_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
dip_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
dip_rect, dip_region. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Incorporation Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
dip_coons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
dip_glider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Opposite Gliders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Adjacent Gliders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 dip_stretcher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
dip_3Dspecies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 DIP User Guide iii C-2009.06
Contents
Blending Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Profile Adjustments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Appendix A Scripting Language23 Writing DIP Command Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Example: NMOS Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Interactive Features of dipsh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Appendix B Functions and Procedures29 General Functions and Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Tcl Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Incorporation Device: dip_device. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Incorporation Regions: dip_rect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Incorporation Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 iv DIP User Guide
C-2009.06
DIP User Guide
v C-2009.06About This Manual
This manual describes the data interpolation package (DIP) application that is used to exchange
data between different types of grids and to incorporate 2D data profiles into 3D grids.
The main chapters are:
■Chapter 1 describes the functionality of the DIP application and how it works, and describes how to exchange and import datasets, and outlines the advanced functionality of
DIP.
■
Chapter 2 describes the internal structure of DIP and the script language.Audience This manual is intended for users of the DIP software package.
Related Publications
For additional information about DIP, see:
■The TCAD Sentaurus release notes, available on SolvNet (see Accessing SolvNet on page vi ).
■
Documentation on the Web, which is available through SolvNet at https://https://www.doczj.com/doc/267055608.html,/DocsOnWeb .Typographic Conventions Convention Explanation
Blue text
Identifies a cross-reference (only on the screen).Bold text
Identifies a selectable icon, button, menu, or tab. It also indicates the name of a field, window, dialog box, or panel.Courier font
Identifies text that is displayed on the screen or that the user must type. It identifies the names of files, directories, paths, parameters, keywords, and variables.Italicized text
Used for emphasis, the titles of books and journals, and non-English words. It also identifies components of an equation or a formula, a placeholder, or an identifier.NOTE Identifies important information.
About This Manual
Customer Support
vi DIP User Guide C-2009.06
Customer Support
Customer support is available through SolvNet online customer support and through contacting the Synopsys Technical Support Center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and answers to frequently
asked questions about Synopsys tools. SolvNet also gives you access to a wide range of
Synopsys online services, which include downloading software, viewing Documentation on
the Web, and entering a call to the Support Center.
To access SolvNet:
1.Go to the SolvNet Web page at https://https://www.doczj.com/doc/267055608.html, .
2.If prompted, enter your user name and password. (If you do not have a Synopsys user name
and password, follow the instructions to register with SolvNet.)If you need help using SolvNet, click Help on the SolvNet menu bar.
Contacting the Synopsys Technical Support Center
If you have problems, questions, or suggestions, you can contact the Synopsys Technical
Support Center in the following ways:
■Open a call to your local support center from the Web by going to https://https://www.doczj.com/doc/267055608.html,/EnterACall (Synopsys user name and password required).
■Send an e-mail message to your local support center:
?
E-mail support_center@https://www.doczj.com/doc/267055608.html, from within North America. ?Find other local support center e-mail addresses at
https://www.doczj.com/doc/267055608.html,/Support/GlobalSupportCenters/Pages/default.aspx .
■Telephone your local support center:?Call (800) 245-8005 from within the continental United States.
?Call (650) 584-4200 from Canada.
?
Find other local support center telephone numbers at
https://www.doczj.com/doc/267055608.html,/Support/GlobalSupportCenters/Pages/default.aspx .
About This Manual
Customer Support
DIP User Guide
vii C-2009.06Contacting Your Local TCAD Support Team Directly
Send an e-mail message to:
■
support-tcad-us@https://www.doczj.com/doc/267055608.html, from within North America and South America.■
support-tcad-eu@https://www.doczj.com/doc/267055608.html, from within Europe.■support-tcad-ap@https://www.doczj.com/doc/267055608.html, from within Asia Pacific (China, Taiwan, Singapore,Malaysia, India, Australia).
■support-tcad-kr@https://www.doczj.com/doc/267055608.html, from Korea.
■support-tcad-jp@https://www.doczj.com/doc/267055608.html, from Japan.
About This Manual
Customer Support
viii DIP User Guide
C-2009.06
C HAPTER 1Using DIP
This chapter describes the functionality of the DIP application and
how it works, and describes how to exchange and import datasets,
and outlines the advanced functionality of DIP.
Overview
DIP was originally designed to incorporate 2D and 3D doping profiles into one consistent 3D
model. It was subsequently redesigned and extended for use as a general data interpolation
package. DIP exchanges datasets between different grids, even between grids of different
dimension and type. Interpolation is used to transfer datasets from a source grid to destination
grids of equal or lower dimension. Special incorporation techniques are available for building
3D datasets from a set of 2D datasets (cuts).
DIP has an object-oriented scripting interface; it reads commands from a script file. This is best
explained by a simple example. Suppose you want to transfer the dataset named
ArsenicConcentration from grid A to grid B. Both grids are of mixed-element type. The
corresponding command script is:
set A [dip_mesh3D -args NULL A-file.grd A-file.dat]
set B [dip_mesh3D -args NULL B-file.grd 0]
$B importDatasets $A new ArsenicConcentration
$B writeDatasets B-file-after-dip.dat 0
In the first two lines, two grid objects are created and assigned to the variables A and B. In the
next two lines, object-specific methods are invoked for grid B. The use of the different objects
and methods is explained later in this manual.
To run this script, start the DIP interpreter dipsh and type the commands. Alternatively, save
the script in a file script_dip.cmd and run dipsh with the name of the script as the
command-line argument:
dipsh script_dip.cmd
Even though this example appears extremely simple, it shows all the concepts of writing a
script for DIP. Users always either create a new object of a certain type or invoke object-
specific methods for a certain object. When the object structure of DIP and the methods that
are available for each type of object are understood, command scripts can be easily written. The
object-oriented scripting language offers a consistent, easy-to-use interface for standard tasks
and provides enormous flexibility for handling complex applications.
DIP User Guide1 C-2009.06
1: Using DIP
Exchanging Datasets Between Grids
NOTE Though DIP is available as the stand-alone interpreter dipsh, it is also
built into other programs such as Mesh. A command script for DIP is
required regardless of whether the script is used with dipsh or another
program that uses DIP.
The stand-alone interpreter dipsh is helpful for testing scripts in interactive mode. A few
methods have been designed exclusively for interactive use, for example, for writing the
position and size of a grid in a three-dimensional space, or the number of datasets contained in
a profile. Since dipsh uses tool command language (Tcl) scripting, it is possible to use more
sophisticated programming constructs in the script. For more information about Tcl, which is
a freely available, visit https://www.doczj.com/doc/267055608.html,.
Exchanging Datasets Between Grids
While the transfer of datasets to grids of equal or lower dimension is straightforward, the
incorporation of 2D profiles and the construction of 3D profiles based only on 2D cuts are more
complex and require a certain amount of planning and setup by the user. Therefore, a large part
of this manual is dedicated to describing the incorporation techniques in detail.
This section only describes the transfer of datasets to grids of equal or lower dimension. This
type of data transfer is performed by applying standard interpolation techniques.
The profile class hierarchy implements the different grid types and provides a grid-independent
interface for the interpolation of datasets. Figure1 shows the class hierarchy and available grid
types.
dip_mesh2D
dip_profile2D
dip_rec_tensor2D
dip_profile
dip_mesh3D
dip_profile3D
dip_rec_tensor3D
Figure 1Profile classes in DIP
All grid types share a common set of methods that is used in exactly the same way regardless
of the grid type. For a complete description of each method, refer to the appendices. Most of
these methods are convenient functions for interactive use. Only a few methods are necessary
to perform the basic operation of transferring a dataset from one grid to another, and to write
this new dataset to a file.
2DIP User Guide
C-2009.06
1: Using DIP
Exchanging Datasets Between Grids The following example illustrates how two datasets defined on a three-dimensional mixed-
element grid are transferred to a two-dimensional recursive tensor grid:
set src [dip_mesh3D -args NULL src-file.grd src-file.dat]
set dst [dip_rec_tensor2D -args NULL dst-file.grd 0]
$dst importDatasets $src new "BoronConcentration StressYY"
$dst writeDatasets dst-file-after-dip.dat 0
The first command:
set src [dip_mesh3D -args NULL src-file.grd src-file.dat]
reads the grid and data files and creates the mixed-element grid object, dip_mesh3D. The
brackets perform the command substitution (similar to the '' notation in the UNIX C shell).
The constructor takes as arguments a dip_device object that is not necessary and, therefore,
‘0’ in this case, then the names of the grid file and data file. The mixed-element grid is assigned
to the variable src.
A similar command:
set dst [dip_rec_tensor2D -args NULL dst-file.grd 0]
creates the two-dimensional recursive tensor grid and assigns it to the variable dst. The data
file argument is ‘0,’ which means that no data is read.
The following line:
$dst importDatasets $src new "BoronConcentration StressYY"
performs the actual transfer of the datasets BoronConcentration and StressYY from the
source grid src to the destination grid dst. Any number of datasets can be transferred in one
import command. The second argument (new) specifies that a new dataset is to be created in
the destination grid. Alternatively, imported datasets can be added to datasets that are already
available in the destination grid, or they can replace (overwrite) existing datasets. Refer to the
appendices for a complete description of all options.
Finally, the datasets of the destination grid are written to the file dst-file-after-dip.dat
by the command:
$dst writeDatasets dst-file-after-dip.dat 0
The second argument (0) indicates that the file is to be written in ASCII format. A nonzero
value would lead to the file being written in binary format.
DIP User Guide3 C-2009.06
1: Using DIP
Importing Datasets from the Incorporation Device
4DIP User Guide C-2009.06
Potential Problems
■Unexpected results can occur if the destination grid is not entirely contained inside the source grid or the material distribution of the two grids does not match (see Extrapolation
on page 6).
■
A common problem relates to the position of the grids in 3D space. This position is determined by the coordinates of the grid points and the local coordinate system of the grid.
Ensure that your profiles are located where they should be. An easy way to find out more
about the grid position is the command writeInfo , which is available for all grid types.Importing Datasets from the Incorporation Device
The incorporation device implements the functionality required for building three-dimensional
data based on input given on two-dimensional vertical cut planes. As a typical application, the
incorporation device is used to generate a three-dimensional model of the doping distribution
based on two-dimensional cuts provided by the 2D process simulator. Details of the
incorporation methods are provided later in this manual. This section explains only how the
values computed by the incorporation device are transferred to a given grid.
The incorporation device is actually an object of type dip_device . If a dip_device has been
set up properly, its data can be transferred to a grid in a way that is very similar to incorporating
datasets from another grid:
set dev [dip_device]
...
...
set dst [dip_rec_tensor2D -args NULL dst-file.grd 0]
$dst importDeviceDatasets $dev new "BoronConcentration StressYY"
$dst writeDatasets dst-file-after-dip.dat 0
The first command:
set dev [dip_device]
generates an incorporation device object and assigns it to the variable dev . Additional code,
which is not included in this example, is required to specify the details of the incorporation
process.
The command:
set dst [dip_rec_tensor2D -args NULL dst-file.grd 0]
creates the two-dimensional recursive tensor grid and assigns it to the variable dst . The data
file argument is ‘0,’ which means that no data is read.
1: Using DIP
Importing Datasets from the Incorporation Device
The following line:
$dst importDeviceDatasets $dev new "BoronConcentration StressYY"
performs the actual transfer of the datasets BoronConcentration and StressYY from the
incorporation device dev to the destination grid dst. Any number of datasets can be
transferred in one import command. The second argument (new) specifies that a new dataset is
to be created in the destination grid. Alternatively, imported datasets can be added to datasets
that are already available in the destination grid, or they can replace (overwrite) existing
datasets. Refer to the appendices for a complete description of all options.
Finally, the datasets of the destination grid are written to the file dst-file-after-dip.dat
by the command:
$dst writeDatasets dst-file-after-dip.dat 0
The second argument (0) means that the file is to be written in ASCII format. A nonzero value
would lead to the file being written in binary format.
Alignment
When exchanging data from the incorporation device to a user-specified grid, often, the device
is not correctly positioned along the vertical direction. DIP allows for the position of the device
to be manually changed by using the procedure:
$dev move dx dy dz
This procedure causes a translation of the device.
Another built-in method allows the silicon top of the device to be aligned with the silicon top
of the grid. This method is applied by default in importDeviceDatasets. To switch off this
automatic alignment, use:
$dev noAutoTopSiliconAdjust
Misalignment between grids and the incorporation device is often the cause of unexpected
results. To check the exact location and size of a grid or the device, use:
$dev writeInfo
$grd writeInfo
DIP User Guide5 C-2009.06
1: Using DIP
Extrapolation
6DIP User Guide C-2009.06
Extrapolation
A dataset always has a property called valid regions . This property lists the regions of the grid
where the dataset is defined. This could be all the regions of the grid or only a subset of the
available regions. When transferring a dataset from a source grid to a destination grid, DIP
loops through all the vertices of the destination grid and asks for the value of the dataset at the
corresponding location in the source grid. There is no problem, in the standard case, where a
point lies in one of the valid regions of the dataset in the source grid. H owever, a special
situation arises if the point is not located in one of the valid regions or if the point is outside the
source grid. DIP provides two different options for handling this situation:
■No extrapolation: Values are always zero unless the point is located in one of the valid regions of the dataset.
■
Extrapolation: The nearest point on the boundary of a valid region is searched and the value at this point is taken.Extrapolation can be switched on or off separately for each profile by using:
$src setExtrapolationOn
or:
$src setExtrapolationOff
By default, extrapolation is switched on for all profiles. The same option is also available for
the incorporation device, dip_device . H owever, in fact, when the extrapolation option is
changed for the incorporation device, the option is changed for all profiles associated with the device.
Advanced Use
In the standard case previously described, the regions used for extrapolation are determined
automatically from the valid regions of the dataset. However, it is also possible to switch off
this automatic behavior by using:
$src noAutoSetExtrapolationRegions
The list of regions to be used for extrapolation can be edited manually by using the procedures:
$src setExtrapolationRegions "list of region names"
$src clearExtrapolationRegions
$src addExtrapolationRegionsByMaterialNames "list of materials"
$src addExtrapolationRegionsByFunctions "list of functions"
1: Using DIP
Linear and Logarithmic Interpolation All of these calls are available for grids and the incorporation device. Again, the incorporation
device does not itself interpret these options, but it passes them to all associated profiles. A
complete description of each of the above procedures is given in the appendices.
Possible Problems
If several datasets are imported in one call to importDatasets or
importDeviceDatasets, and automatic selection of extrapolation regions is switched on,
the list of extrapolation regions will be the union of all valid regions of all imported datasets.
Therefore, the user should only import datasets having the same valid regions in one import
call. Use several import commands if datasets with different valid regions must be imported. Linear and Logarithmic Interpolation
By default, DIP applies a linear interpolation when computing the value of a dataset at an
arbitrary location inside a finite element. To switch to logarithmic interpolation, use: $grd setLogInterpolation
or:
$dev setLogInterpolation
which are available for all grid types and the incorporation device. Linear or logarithmic
interpolation can be selected separately for individual grids. Logarithmic interpolation is used
mostly for doping species.
Constructing Datasets
DIP provides methods for building a three-dimensional dataset from several two-dimensional
profiles (cuts). This is not as straightforward as interpolating between grids of equal dimension;
a certain amount of planning is necessary to set up a command script to do this. The following
sections explain how the incorporation concept works and how the scripts are made for
incorporation applications.
One of the basic incorporation concepts of DIP is to divide the space into smaller regions called
incorporation regions. These regions extend from the bottom to the top of the device. DIP
supports rectangular incorporation regions, implemented with the class dip_rect only.
DIP User Guide7 C-2009.06
1: Using DIP
Constructing Datasets
8DIP User Guide
C-2009.06
Two-dimensional cuts are along the sidewalls of these regions, never through the regions (see
Figure 2). Each incorporation region is treated independently by DIP; completely different
incorporation methods can be applied in each region.
Figure 2Partition of 3D device into four rectangular incorporation regions: 3D view (left )
and top view (right )
A common property of all incorporation methods is that they compute the value at a 3D point
by combining values from the sides of the region according to a rule – the incorporation rule.
The side values are usually obtained at certain projected points on the sides of the incorporation
region.
Example Script for Incorporating 2D Data
The following simple example shows all of the essential elements required for incorporating
2D cuts.
This DIP input script is for a device that is generated by sweeping a single 2D profile in the
direction perpendicular to the profile (see Figure 3 on page 10):
set device [dip_device]
set profile [dip_mesh2D -args $device cut2.grd cut2.dat]
set region [dip_rect -args $device 120.1\
12-3.3\
140.1\
NULL NULL NULL $profile]
dip_coons -args $region Arsenic
dip_coons -args $region Boron
dip_coons -args $region Phosphorus
Region 1Region 2
Region 3Region 4
1: Using DIP
Constructing Datasets At the beginning of the script, the root doping device must be created. The dip_device object
is later required as an argument for other commands:
set device [dip_device]
This command creates an object of type dip_device and stores a reference to it in the variable
device. The next command:
set profile [dip_profile2D -args $device cut2.grd cut2.dat]
creates a dip_mesh2D object, adds it to the device previously created, and initializes the
profile object with the data contained in the files cut2.grd and cut2.dat. A reference to this
profile is assigned to the variable profile.
Next, a rectangular incorporation region is created with the command:
set region[dip_rect -args $device120.1\
12-3.3\
140.1\
NULL NULL NULL $profile]
The arguments in the constructor for the dip_rect specify the device, the x- and y-
coordinates of three corner points of the rectangular region, and the profiles attached to each
of the four sidewalls of the region. In this case, only one profile is available.
In the next step, interpolation rules are defined separately for each species and they are added
to the incorporation region:
dip_coons -args $region Arsenic
dip_coons -args $region Boron
dip_coons -args $region Phosphorus
The arguments specify the region and species to which this rule applies. Different rules can be
used for each species.
This simple example contains all the important parts of a DIP input script for incorporating 2D
cuts. More complex examples usually have several 2D cuts and several incorporation regions,
and they may use other incorporation rules and additional commands to change certain
properties of incorporation rules. Before presenting more sophisticated applications, the next
section presents a more thorough overview of the object structure related to 2D incorporation.
DIP User Guide9 C-2009.06
1: Using DIP
Compatibility: Active and Chemical Concentrations
10DIP User Guide
C-2009.06
Figure 3Three-dimensional device created by sweeping a single profile (color differences are due to different colormaps)Compatibility: Active and Chemical Concentrations
Reading and Mapping Datasets in .dat Files
By default, DIP maps chemical concentrations to active concentrations. Concentrations are
mapped to active by default when reading .dat files, for example, BoronConcentration
becomes BoronActiveConcentration . Mapping does not occur if datasets for both active
and chemical concentrations are in the file (for example, BoronActiveConcentration and
BoronConcentration ).
Mapping can be switched off:
■
In DIP scripts by using DipSetMapToActiveModeOff .■In Mesh by specifying the command-line option -DopingAsIs . This is propagated if Mesh uses DIP; DipSetMapToActiveModeOff
in a DIP script becomes redundant.
DIP User Guide
11C-2009.06C HAPTER 2DIP Concepts
This chapter describes the internal structure of DIP and the script language.
Basic Object Structure: Device, Regions, and Profiles
The object-oriented structure of DIP is reflected directly in its input script language. To understand the DIP command scripts, it is useful to know the basics about the internal structure of DIP (see Figure 4).
Figure 4Internal object structure of DIP
dip_device
The root object dip_device holds a list of all profiles and incorporation regions (dip_rect ).Its constructor takes no argument. Regions are created only after a dip_device object is available. They are automatically added to the device when they are created. The dip_device object has methods for computing 3D doping values, and for moving, rotating, and scaling the device. A complete list of all methods is in Appendix B on page 29.
dip_profile
The base class dip_profile implements the standard interface to the different grid types.Figure 1 on page 2 illustrates the detailed structure of the profile hierarchy.dip_device dip_profile
dip_rule
dip_rect
dip_coons
dip_glider
dip_3Dspecies
dip_stretcher
2: DIP Concepts
Basic Object Structure: Device, Regions, and Profiles
dip_rect, dip_region
Incorporation regions are used to confine incorporation rules to a certain part of the whole 3D
device. Each region has its own incorporation rules. The shape of an incorporation region is
always a vertical cylinder that extends over the full height of the device. DIP supports regions
of rectangular cross section (dip_rect). The location and size of a dip_rect is specified by
the x-coordinates and y-coordinates of corner 0, corner 1, and corner 3. DIP does not check
whether the three given corner points define a rectangle. It is the responsibility of the user to
select these points correctly.
A 2D profile can be attached to each side of an incorporation region. To compute a 3D doping
value at a certain point r inside the region, DIP computes the projected points in each side of
the region and passes the corresponding side values to the incorporation rule.
If no profile is specified for one or several sides, DIP interpolates the side values from the
available profiles. Instead of interpolating a missing side profile, DIP can use values of
neighboring regions. See Incorporation Regions: dip_rect on page35 for a complete list of all
methods available for dip_rect.
Incorporation Rules
One of the main constraints of DIP is that 2D profiles must always be vertical. Therefore, the
analysis and description of incorporation rules can be performed in the top view of the device,
that is, in the projection to the (x, y) plane. The formalism for 3D doping construction is
described in terms of positions and distances in this plane.
The influence of an incorporation rule is always limited to the region to which it belongs (see
dip_rect, dip_region). When DIP is asked for the doping at a certain 3D point of the device, it
looks up the region containing that point and evaluates the incorporation rules of this region.
From the point of view of an incorporation rule, the doping values must be given on all sides
of its region. Some rules may also be able to consider predescribed 1D and 2D doping profiles
inside a region, but the minimum that a rule expects to obtain from the region is the values on
all of its sides. In the DIP object hierarchy, the region provides the doping values on all sides.
If numeric data is not available for a side, the region interpolates the side values based on
available numeric data from other sides, or it asks the adjacent region for the values at this side.
12DIP User Guide
C-2009.06