dip - jmbussat/physics290e/fall-2006/tcad_document… · ii copyright notice and proprietary...

42
DIP Version Y-2006.06, June 2006

Upload: others

Post on 05-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPVersion Y-2006.06, June 2006

Page 2: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

ii

Copyright Notice and Proprietary InformationCopyright © 2006 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 DocumentationThe 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 StatementAll 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.

DisclaimerSYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

Registered Trademarks (®)Synopsys, AMPS, Arcadia, C Level Design, C2HDL, C2V, C2VHDL, Cadabra, Calaveras Algorithm, CATS, CRITIC, CSim, Design Compiler, DesignPower, DesignWare, EPIC, Formality, HSIM, HSPICE, Hypermodel, iN-Phase, in-Sync, Leda, MAST, Meta, Meta-Software, ModelTools, NanoSim, OpenVera, PathMill, Photolynx, Physical Compiler, PowerMill, PrimeTime, RailMill, RapidScript, Saber, SiVL, SNUG, SolvNet, Superlog, System Compiler, TetraMAX, TimeMill, TMA, VCS, Vera, and Virtual Stepper are registered trademarks of Synopsys, Inc.

Trademarks (™)Active Parasitics, AFGen, Apollo, Apollo II, Apollo-DPII, Apollo-GA, ApolloGAII, Astro, Astro-Rail, Astro-Xtalk, Aurora, AvanTestchip, AvanWaves, BCView, Behavioral Compiler, BOA, BRT, Cedar, ChipPlanner, Circuit Analysis, Columbia, Columbia-CE, Comet 3D, Cosmos, CosmosEnterprise, CosmosLE, CosmosScope, CosmosSE, Cyclelink, Davinci, DC Expert, DC Professional, DC Ultra, DC Ultra Plus, Design Advisor, Design Analyzer, Design Vision, DesignerHDL, DesignTime, DFM-Workbench, Direct RTL, Direct Silicon Access, Discovery, DW8051, DWPCI, Dynamic-Macromodeling, Dynamic Model Switcher, ECL Compiler, ECO Compiler, EDAnavigator, Encore, Encore PQ, Evaccess, ExpressModel, Floorplan Manager, Formal Model Checker, FoundryModel, FPGA Compiler II, FPGA Express, Frame Compiler, Galaxy, Gatran, HANEX, HDL Advisor, HDL Compiler, Hercules, Hercules-Explorer, Hercules-II, Hierarchical Optimization Technology, High Performance Option, HotPlace, HSIMplus, HSPICE-Link, iN-Tandem, Integrator, Interactive Waveform Viewer, i-Virtual Stepper, Jupiter, Jupiter-DP, JupiterXT, JupiterXT-ASIC, JVXtreme, Liberty, Libra-Passport, Library Compiler, Libra-Visa, Magellan, Mars, Mars-Rail, Mars-Xtalk, Medici, Metacapture, Metacircuit, Metamanager, Metamixsim, Milkyway, ModelSource, Module Compiler, MS-3200, MS-3400, Nova Product Family, Nova-ExploreRTL, Nova-Trans, Nova-VeriLint, Nova-VHDLlint, Optimum Silicon, Orion_ec, Parasitic View, Passport, Planet, Planet-PL, Planet-RTL, Polaris, Polaris-CBS, Polaris-MT, Power Compiler, PowerCODE, PowerGate, ProFPGA, ProGen, Prospector, Protocol Compiler, PSMGen, Raphael, Raphael-NES, RoadRunner, RTL Analyzer, Saturn, ScanBand, Schematic Compiler, Scirocco, Scirocco-i, Shadow Debugger, Silicon Blueprint, Silicon Early Access, SinglePass-SoC, Smart Extraction, SmartLicense, SmartModel Library, Softwire, Source-Level Design, Star, Star-DC, Star-MS, Star-MTB, Star-Power, Star-Rail, Star-RC, Star-RCXT, Star-Sim, Star-SimXT, Star-Time, Star-XP, SWIFT, Taurus, TimeSlice, TimeTracker, Timing Annotator, TopoPlace, TopoRoute, Trace-On-Demand, True-Hspice, TSUPREM-4, TymeWare, VCS Express, VCSi, Venus, Verification Portal, VFormal, VHDL Compiler, VHDL System Simulator, VirSim, and VMC are trademarks of Synopsys, Inc.

Service Marks (SM)MAP-in, SVP Café, and TAP-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.All other product or company names may be trademarks of their respective owners.

DIP, Y-2006.06

Page 3: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CONTENTS

DIPAbout this manual .................................................................................................................................v

Audience ..............................................................................................................................................................vRelated publications.............................................................................................................................................vTypographic conventions .....................................................................................................................................vCustomer support................................................................................................................................................ vi

Chapter 1 Using DIP..............................................................................................................................1Overview .............................................................................................................................................................1Exchanging datasets between grids ...................................................................................................................2

Potential problems..........................................................................................................................................3Importing datasets from the incorporation device ...............................................................................................3

Alignment .......................................................................................................................................................4Extrapolation .......................................................................................................................................................5

Advanced use.................................................................................................................................................5Possible problems ..........................................................................................................................................6

Linear and logarithmic interpolation ....................................................................................................................6Constructing datasets .........................................................................................................................................6

Example script for incorporating 2D data .......................................................................................................7Compatibility: Active and chemical concentrations .............................................................................................9

Reading and mapping datasets in .dat files ...................................................................................................9

Chapter 2 DIP concepts ......................................................................................................................11Basic object structure: Device, regions, and profiles ........................................................................................11

dip_device ....................................................................................................................................................11dip_profile.....................................................................................................................................................11dip_rect, dip_region......................................................................................................................................12Incorporation rules........................................................................................................................................12dip_coons .....................................................................................................................................................13dip_glider......................................................................................................................................................14

Opposite gliders ....................................................................................................................................15Adjacent gliders.....................................................................................................................................15

dip_stretcher.................................................................................................................................................16dip_3Dspecies..............................................................................................................................................19

Blending functions .............................................................................................................................................20Profile adjustments ............................................................................................................................................20

Appendix A Scripting language .........................................................................................................21Writing DIP command scripts.............................................................................................................................21Example: NMOS transistor.................................................................................................................................22Interactive features of dipsh ...............................................................................................................................24

Appendix B Functions and procedures ............................................................................................27General functions and procedures .....................................................................................................................27Tcl procedures ...................................................................................................................................................27Incorporation device: dip_device........................................................................................................................28Profiles ...............................................................................................................................................................29Incorporation regions: dip_rect...........................................................................................................................31Incorporation rules .............................................................................................................................................32Vectors ...............................................................................................................................................................33

iii

Page 4: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCONTENTS

iv

Page 5: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP ABOUT THIS MANUAL

DIP

About this manual

This manual describes the data interpolation package (DIP) application that is used to exchange databetween 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 toexchange and import datasets, and outlines the advanced functionality of DIP.

Chapter 2 describes the internal structure of DIP and the script language.

AudienceThis manual is intended for users of the DIP software package.

Related publicationsFor additional information about DIP, see:

Documentation on the Web, which is available through SolvNet athttps://solvnet.synopsys.com/DocsOnWeb.

Synopsys Online Documentation (SOLD), which is included with the software for CD users or isavailable to download through the Synopsys Electronic Software Transfer (EST) system.

Typographic conventionsConvention 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.

v

Page 6: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPABOUT THIS MANUAL

Customer supportCustomer support is available through SolvNet online customer support and through contacting theSynopsys Technical Support Center.

Accessing SolvNet

SolvNet includes an electronic knowledge base of technical articles and answers to frequently askedquestions about Synopsys tools. SolvNet also gives you access to a wide range of Synopsys onlineservices including software downloads, documentation on the Web, and “Enter a Call to the SupportCenter.”

To access SolvNet:

1. Go to the SolvNet Web page at http://solvnet.synopsys.com.

2. If prompted, enter your user name and password. (If you do not have a Synopsys user name andpassword, follow the instructions to register with SolvNet.)

If you need help using SolvNet, click HELP in the top-right menu bar or in the footer.

Contacting the Synopsys Technical Support Center

If you have problems, questions, or suggestions, you can contact the Synopsys Technical Support Centerin the following ways:

Open a call to your local support center from the Web by going to http://solvnet.synopsys.com(Synopsys user name and password required), then clicking “Enter a Call to the Support Center.”

Send an e-mail message to your local support center:

• E-mail [email protected] from within North America.

• Find other local support center e-mail addresses at http://www.synopsys.com/support/support_ctr.

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 http://www.synopsys.com/support/support_ctr.

vi

Page 7: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP ABOUT THIS MANUAL

Contacting your local TCAD Support Team directly

Send an e-mail message to:

[email protected] from within North America and South America.

[email protected] from within Europe.

[email protected] from within Asia Pacific (China, Taiwan, Singapore, Malaysia,India, Australia).

[email protected] from Korea.

[email protected] from Japan.

vii

Page 8: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPABOUT THIS MANUAL

viii

Page 9: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 1 USING DIP

DIP

CHAPTER 1 Using DIP

This chapter describes the functionality of the DIP application and how it works, and describes how toexchange and import datasets, and outlines the advanced functionality of DIP.

OverviewDIP was originally designed to incorporate 2D and 3D doping profiles into one consistent 3D model. Itwas subsequently redesigned and extended for use as a general data interpolation package. DIPexchanges 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 lowerdimension. Special incorporation techniques are available for building 3D datasets from a set of 2Ddatasets (cuts).

DIP has an object-oriented scripting interface; it reads commands from a script file. This is bestexplained by a simple example. Suppose you want to transfer the dataset named ArsenicConcentrationfrom 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 twolines, object-specific methods are invoked for grid B. The use of the different objects and methods isexplained later in this manual.

To run this script, start the DIP interpreter dipsh and type the commands. Alternatively, save the scriptin 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 certainobject. When the object structure of DIP and the methods that are available for each type of object areunderstood, command scripts can be easily written. The object-oriented scripting language offers aconsistent, easy-to-use interface for standard tasks and provides enormous flexibility for handlingcomplex applications.

NOTE Though DIP is available as the stand-alone interpreter dipsh, it is also built into otherprograms such as Mesh. A command script for DIP is required regardless of whether thescript is used with dipsh or another program that uses DIP.

1

Page 10: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 1 USING DIP

The stand-alone interpreter dipsh is helpful for testing scripts in interactive mode. A few methods havebeen designed exclusively for interactive use, for example, for writing the position and size of a grid ina three-dimensional space, or the number of datasets contained in a profile. Since dipsh uses toolcommand language (Tcl) scripting, it is possible to use more sophisticated programming constructs inthe script. For more information about Tcl, which is a freely available, visit http://www.scriptics.com.

Exchanging datasets between gridsWhile the transfer of datasets to grids of equal or lower dimension is straightforward, the incorporationof 2D profiles and the construction of 3D profiles based only on 2D cuts are more complex and requirea certain amount of planning and setup by the user. Therefore, a large part of this manual is dedicated todescribing the incorporation techniques in detail.

This section only describes the transfer of datasets to grids of equal or lower dimension. This type ofdata transfer is performed by applying standard interpolation techniques.

The profile class hierarchy implements the different grid types and provides a grid-independent interfacefor the interpolation of datasets. Figure 1 shows the class hierarchy and available grid types.

Figure 1 Profile classes in DIP

All grid types share a common set of methods that is used in exactly the same way regardless of the gridtype. For a complete description of each method, refer to the appendices. Most of these methods areconvenient functions for interactive use. Only a few methods are necessary to perform the basicoperation of transferring a dataset from one grid to another, and to write this new dataset to a file.

The following example illustrates how two datasets defined on a three-dimensional mixed-element gridare 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]

dip_profile

dip_profile2D

dip_profile3D

dip_mesh2D

dip_rec_tensor2D

dip_mesh3D

dip_rec_tensor3D

2

Page 11: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 1 USING DIP

reads the grid and data files and creates the mixed-element grid object, dip_mesh3D. The brackets performthe command substitution (similar to the '' notation in the UNIX C shell). The constructor takes asarguments a dip_device object that is not necessary and, therefore, ‘0’ in this case, then the names of thegrid 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 fileargument 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 tothe destination grid dst. Any number of datasets can be transferred in one import command. The secondargument (new) specifies that a new dataset is to be created in the destination grid. Alternatively, importeddatasets 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 wouldlead to the file being written in binary format.

Potential problemsUnexpected results can occur if the destination grid is not entirely contained inside the source gridor the material distribution of the two grids does not match (see Extrapolation on page 5).

A common problem relates to the position of the grids in 3D space. This position is determined bythe coordinates of the grid points and the local coordinate system of the grid. Ensure that yourprofiles are located where they should be. An easy way to find out more about the grid position isthe command writeInfo, which is available for all grid types.

Importing datasets from the incorporation deviceThe incorporation device implements the functionality required for building three-dimensional databased on input given on two-dimensional vertical cut planes. As a typical application, the incorporationdevice 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 areprovided later in this manual. This section explains only how the values computed by the incorporationdevice are transferred to a given grid.

3

Page 12: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 1 USING DIP

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 anothergrid:

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 notincluded 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 fileargument is ‘0,’ which means that no data is read.

The following line:

$dst importDeviceDatasets $dev new "BoronConcentration StressYY"

performs the actual transfer of the datasets BoronConcentration and StressYY from the incorporation devicedev to the destination grid dst. Any number of datasets can be transferred in one import command. Thesecond 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 canreplace (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 wouldlead to the file being written in binary format.

AlignmentWhen exchanging data from the incorporation device to a user-specified grid, often, the device is notcorrectly positioned along the vertical direction. DIP allows for the position of the device to be manuallychanged by using the procedure:

$dev move dx dy dz

This procedure causes a translation of the device.

4

Page 13: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 1 USING DIP

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. Tocheck the exact location and size of a grid or the device, use:

$dev writeInfo$grd writeInfo

ExtrapolationA dataset always has a property called valid regions. This property lists the regions of the grid where thedataset is defined. This could be all the regions of the grid or only a subset of the available regions. Whentransferring a dataset from a source grid to a destination grid, DIP loops through all the vertices of thedestination 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 inthe source grid. However, a special situation arises if the point is not located in one of the valid regionsor 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 ofthe dataset.

Extrapolation: The nearest point on the boundary of a valid region is searched and the value at thispoint 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 theincorporation device, dip_device. However, in fact, when the extrapolation option is changed for theincorporation device, the option is changed for all profiles associated with the device.

Advanced useIn the standard case previously described, the regions used for extrapolation are determinedautomatically from the valid regions of the dataset. However, it is also possible to switch off thisautomatic behavior by using:

$src noAutoSetExtrapolationRegions

5

Page 14: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 1 USING DIP

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"

All of these calls are available for grids and the incorporation device. Again, the incorporation devicedoes not itself interpret these options, but it passes them to all associated profiles. A completedescription of each of the above procedures is given in the appendices.

Possible problemsIf several datasets are imported in one call to importDatasets or importDeviceDatasets, and automaticselection of extrapolation regions is switched on, the list of extrapolation regions will be the union of allvalid regions of all imported datasets. Therefore, the user should only import datasets having the samevalid regions in one import call. Use several import commands if datasets with different valid regionsmust be imported.

Linear and logarithmic interpolationBy default, DIP applies a linear interpolation when computing the value of a dataset at an arbitrarylocation 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 interpolationcan be selected separately for individual grids. Logarithmic interpolation is used mostly for dopingspecies.

Constructing datasetsDIP 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 amountof planning is necessary to set up a command script to do this. The following sections explain how theincorporation 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 calledincorporation regions. These regions extend from the bottom to the top of the device. DIP supportsrectangular incorporation regions, implemented with the class dip_rect only.

6

Page 15: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 1 USING DIP

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 methodscan be applied in each region.

Figure 2 Partition 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 bycombining values from the sides of the region according to a rule – the incorporation rule. The sidevalues are usually obtained at certain projected points on the sides of the incorporation region.

Example script for incorporating 2D dataThe 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 directionperpendicular to the profile (see Figure 3 on page 8):

set device [dip_device]set profile [dip_mesh2D -args $device cut2.grd cut2.dat]set region [dip_rect -args $device 12 0.1 \

12 -3.3 \14 0.1 \

NULL NULL NULL $profile]dip_coons -args $region Arsenicdip_coons -args $region Borondip_coons -args $region Phosphorus

At the beginning of the script, the root doping device must be created. The dip_device object is laterrequired 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. Thenext command:

set profile [dip_profile2D -args $device cut2.grd cut2.dat]

7

Page 16: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 1 USING DIP

creates a dip_mesh2D object, adds it to the device previously created, and initializes the profile object withthe data contained in the files cut2.grd and cut2.dat. A reference to this profile is assigned to the variableprofile.

Next, a rectangular incorporation region is created with the command:

set region [dip_rect -args $device 12 0.1 \12 -3.3 \14 0.1 \

NULL NULL NULL $profile]

The arguments in the constructor for the dip_rect specify the device, the x and y coordinates of threecorner points of the rectangular region, and the profiles attached to each of the four sidewalls of theregion. 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 theincorporation region:

dip_coons -args $region Arsenicdip_coons -args $region Borondip_coons -args $region Phosphorus

The arguments specify the region and species to which this rule applies. Different rules can be used foreach 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 mayuse other incorporation rules and additional commands to change certain properties of incorporationrules. Before presenting more sophisticated applications, the next section presents a more thoroughoverview of the object structure related to 2D incorporation.

Figure 3 Three-dimensional device created by sweeping a single profile (color differences are due to different colormaps)

8

Page 17: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 1 USING DIP

Compatibility: Active and chemical concentrations

Reading and mapping datasets in .dat filesBy default, DIP maps chemical concentrations to active concentrations. Concentrations are mapped toactive by default when reading .dat files, for example, BoronConcentration becomesBoronActiveConcentration. Mapping does not occur if datasets for both active and chemicalconcentrations 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.

9

Page 18: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 1 USING DIP

10

Page 19: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 2 DIP CONCEPTS

DIP

CHAPTER 2 DIP concepts

This chapter describes the internal structure of DIP and the script language.

Basic object structure: Device, regions, and profilesThe object-oriented structure of DIP is reflected directly in its input script language. To understand theDIP command scripts, it is useful to know the basics about the internal structure of DIP (see Figure 4).

Figure 4 Internal object structure of DIP

dip_deviceThe root object dip_device holds a list of all profiles and incorporation regions (dip_rect). Its constructortakes no argument. Regions are created only after a dip_device object is available. They are automaticallyadded to the device when they are created. The dip_device object has methods for computing 3D dopingvalues, and for moving, rotating, and scaling the device. A complete list of all methods is in Appendix Bon page 27.

dip_profileThe base class dip_profile implements the standard interface to the different grid types. Figure 1 onpage 2 illustrates the detailed structure of the profile hierarchy.

dip_devicedip_profile

dip_rule

dip_rect

dip_coons

dip_glider

dip_3Dspecies

dip_stretcher

11

Page 20: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 2 DIP CONCEPTS

dip_rect, dip_regionIncorporation 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 verticalcylinder 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 ofcorner 0, corner 1, and corner 3. DIP does not check whether the three given corner points define arectangle. 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 ata certain point r inside the region, DIP computes the projected points in each side of the region andpasses 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 availableprofiles. Instead of interpolating a missing side profile, DIP can use values of neighboring regions. SeeIncorporation regions: dip_rect on page 31 for a complete list of all methods available for dip_rect.

Incorporation rulesOne of the main constraints of DIP is that 2D profiles must always be vertical. Therefore, the analysisand description of incorporation rules can be performed in the top view of the device, that is, in theprojection to the (x, y) plane. The formalism for 3D doping construction is described in terms ofpositions 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 regioncontaining 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 itsregion. 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 DIPobject hierarchy, the region provides the doping values on all sides. If numeric data is not available fora side, the region interpolates the side values based on available numeric data from other sides, or it asksthe adjacent region for the values at this side.

DIP supports three different interpolation rules for 2D profiles in rectangular regions (dip_rect) and onerule for incorporating 3D doping given on tensor product grids or mixed-element meshes:

dip_coons An interpolation rule that was inspired by the Coons formula for generatingsurface patches from four bounding lines. This rule works only for rectangularregions, although an extension to general quadrilaterals is possible. It has someuseful shaping properties and fulfills the boundary conditions at all sides of theregion.

12

Page 21: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 2 DIP CONCEPTS

dip_glider A special interpolation rule with excellent shaping properties. Single glidersfulfill the boundary conditions at three sides of the region. Double gliders fulfillthe boundary conditions at all sides.

dip_stretcher A more general interpolation rule that is extendable to arbitrarily shaped regionsincluding 1D and 2D profiles. It fulfills the boundary conditions at all sides ofthe region.

dip_3Dspecies This rule interpolates the doping given on a 3D profile.

Detailed descriptions of these incorporation rules are given in the following sections. As dip_coons anddip_glider are defined only for rectangular regions, the corresponding interpolation formulas in localcoordinates of the rectangle are described (see Figure 5). The formalism for dip_stretcher uses adifferent notation.

Figure 5 Rectangular incorporation region (dip_rect)

dip_coonsLet be a point in local coordinates of a rectangle of width and height . The Coonsinterpolation function is expressed in terms of the given function at the sides of the rectangle as:

(1)

where and are blending functions with the properties:

(2)

r x y z, ,( )= w hf r( ) g

f r( ) 1 B2 Y( )–( )g x 0 z, ,( )B1 X( )g w y z, ,( )B2 Y( )g x h z, ,( )

1 B1 X( )–( )g 0 y z, ,( )1 B1 X( )–( ) 1 B2 Y( )–( )g 0 0 z, ,( )–

B1 X( ) 1 B2 Y( )–( )g w 0 z, ,( )–B1 X( )B2 Y( )g w h z, ,( )–

1 B1 X( )–( )B2 Y( )g 0 h z, ,( )–

++

+

=

B1 X( ) B1 x w⁄( )= B2 Y( ) B2 y h⁄( )=

Bi 0( ) 0=

Bi 1( ) 1=

13

Page 22: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 2 DIP CONCEPTS

The first four terms in the Coons interpolation formula are a weighted sum of the values in the projectedside points. The weights are inversely proportional to the distance to the respective side. The last fourterms are correction terms, which must be introduced to match the boundary condition atthe four sides of the rectangle. The corner values are computed as the average of the two adjacent sideprofiles.

The Coons-type interpolation has some useful properties:

. If the value is constant on all sides, the interpolation is constant inside therectangle.

If the profiles on two opposite sides are equal and the profiles on the remaining two sides areconstant, the Coons formula generates a perfect sweep profile.

A flaw of the basic Coons formula is its tendency, under certain conditions, to produce values that areoutside the range of the side values. For example, this occurs if the side profiles decrease rapidly froma large value in one corner of the rectangle to small values on the other three corners. To avoid this, DIPuses a clipped variant of the original formula.

dip_gliderThe glider interpolation takes one of the side profiles (glider profile) and sweeps it along the two profiles(rails) that are in contact with the glider (see Figure 6).

Figure 6 Glider interpolation

Using the same notation as for dip_coons, the single glider interpolation for side 0 is defined as:

(3)

f r( ) g r( )=

g r( ) G f r( )⇒ G= =

f0 r( )

g w y z, ,( ) g 0 y z, ,( )+2

--------------------------------------------------- if g w 0 z, ,( ) g 0 0 z, ,( )– = 0

g x 0 z, ,( ) g 0 0 z, ,( )–( ) g w y z, ,( ) g 0 y z, ,( )–g w 0 z, ,( ) g 0 0 z, ,( )–---------------------------------------------------- g 0 y z, ,( )+⋅ otherwise

⎝⎜⎜⎜⎜⎛

=

14

Page 23: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 2 DIP CONCEPTS

The glider interpolation preserves the shape of the glider profile while sweeping it along the twocontacting sides.

The glider profile should always be a monotonous function, that is, it should have its minimum andmaximum values at the corner points. Undesired amplification of peaks may occur if the glider profilehas minimum or maximum values between the corner points. The monotony condition can be met byselecting an appropriate glider side or reducing the size of the interpolation region.

The implementation of dip_glider allows two separate glider profiles (double glider) to be specified.While the single glider interpolation fulfills the boundary conditions only on three sides of the rectangle,the double glider fulfills them on all sides. The two different cases for double gliders are opposite glidersand adjacent gliders.

Opposite gliders

The two gliders are on opposite sides of the rectangular region. A blending function is used to mergethem:

(4)

Adjacent gliders

The two gliders are on adjacent sides of the rectangular region. Blending functions are introduced toachieve smooth transitions between the two gliders:

(5)

The normalized blending functions and are used again with:

(6)

f02 r( ) 1 B2 Y( )–( )f0 r( ) B2 Y( )f2 r( )

f13 r( )

+

B1 X( )f1 r( ) 1 B1 X( )–( )f3 r( )+

=

=

f01 r( )2 B2 Y( )– B1 X( )–( )f0 r( ) B2 Y( ) B1 X( )+( )f1 r( )+

2--------------------------------------------------------------------------------------------------------------------------

f12 r( )1 B1 X( ) B2 Y( )–+( )f1 r( ) 1 B2 Y( ) B1 X( )–+( )f2 r( )+

2------------------------------------------------------------------------------------------------------------------------------------

f23 r( )B2 Y( ) B1 X( )+( )f2 r( ) 2 B1 X( )– B2 Y( )–( )f3 r( )+

2--------------------------------------------------------------------------------------------------------------------------

f30 r( )1 B1 X( )– B2 Y( )+( )f3 r( ) 1 B2 Y( )– B1 X( )+( )f0 r( )+

2------------------------------------------------------------------------------------------------------------------------------------

=

=

=

=

B1 X( ) B1 x w⁄( )= B2 Y( ) B2 y h⁄( )=

Bi 0( ) 0=

Bi 1( ) 1=

15

Page 24: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 2 DIP CONCEPTS

dip_stretcherThis interpolation rule is designed for maximum generality. It covers 1D and 2D profiles with arbitrarypositions and, therefore, is applicable to regions of arbitrary shape and regions containing internalprofiles. The coordinate axes of the three-dimensional object are denoted by , , and . For each ofthe lower dimensional profiles, an affine coordinate transformation must be defined.

Figure 7 Segments of cross sections and distances of a point in the layout plan

Let denote the coordinate of the 1D profiles, so that:

(7)

and:

(8)

If denotes the coordinates of a 2D profile:

(9)

and:

(10)

x y z

Z

xyz

0 0 00 0 0zx 0 0

Z00

x0

y0

z0

+⋅=

Zz z0–

zx-------------=

X Z,( )

xyz

xx 0 0

yx 0 0

0 zy 0

XZ0

x0

y0

z0

+⋅=

Xx x0–

xx------------- if xx 0≠( ),=

16

Page 25: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 2 DIP CONCEPTS

(11)

(12)

then the vectors and describe the transformation of the 2D cross section inthe layout plane. The projection of the 2D cross section in the layout plane is given by:

(13)

Let denote the 1D and 2D profiles, and let denote their projection into the layout. Let be calledthe segment of the cross section profile, although for 1D profiles, is only one point. Let denote an arbitrary point of the device. defines its projection into the layout plane. Let denotethe radius vector of in the layout plane, and let denote the distance from to thesegment (see Figure 7 on page 16):

(14)

Therefore, for a 1D cross section:

(15)

and for a 2D cross section:

(16)

The last term is checked only if:

(17)

The weight function is defined as:

(18)

Xy y0–

yx------------- if yx 0≠( ),=

Zz z0–

zy-------------=

x0 x0 y0,( )T= xx xx yx,( )T=

L x0 xxX Xmin X Xmax≤ ≤+{ }=

Pi Li LiLi x y z, ,( )

x y,( ) xx y,( ) di x y,( ) x y,( )

Li

di x y,( ) min x y,( ) Li∈ x y,( ) x y,( )–=

di x y,( ) x0 x– x0 x–( )2 y0 y–( )2+= =

di x y,( ) min x0 xxXmin x–+ x0 xxXmax x–+ x x0–x x0–( ) xx⋅

xx2

-----------------------------xx–, ,⎝ ⎠⎜ ⎟⎛ ⎞

min x0 xxXmin x–+( )2 y0 y+ yXmin y–( )2+

x0 xxXmax x–+( )2 y0 yyXmax– y–( )2+

xx y y0–( ) yx x x0–( )–

xx2 yx

2+---------------------------------------------------------

,

,

=

=

Xmin Xx x0–( ) xx⋅

xx2

-----------------------------xx x x0–( ) yx y y0–( )+

xx2 yx

2+-------------------------------------------------------≡ ≡ Xmax≤ ≤

w̃i x y,( ) 1di x y,( )dimax

------------------–dj x y,( )djmax

------------------j i≠∏=

17

Page 26: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 2 DIP CONCEPTS

Here, denotes the maximum distance of any point in the layout to the segment . The function is obviously nonnegative; it vanishes on all segments except . Due to the assumed general relative

position of the segments, a linear weight function cannot be constructed.

After normalizing the weight functions for all cross sections:

(19)

the doping in any point of the 3D device can be defined as:

(20)

where denotes the interpolated values in the 1D or 2D cross sections with given byEq. 8, resp. with given by Eq. 12 and given by Eq. 17.

depends on the applied interpolation rule:

(21)

(22)

(23)

(24)

The function Eq. 20 describes a smooth transition between the values in the given 1D and 2D crosssections. The impact of profiles far from the cross section is damped with increasing distance. Theinterpolation rule can be modified easily if the functions are replaced by a monotone transformationfunction , if and .

The given interpolation rule works correctly unless there are intersections of the segments . In theintersection of two segments and , all weight functions vanish and cannot be normalized. This case(see Figure 8 on page 19) is managed by modifying the weight functions in the vicinity of theintersections.

dimax Liwi Li

wi x y,( )w̃i x y,( )

w̃i x y,( )j∑--------------------------≡

x y z, ,( )

f x y z, ,( ) Φ 1– wi x y,( )Φ Pi( )i∑( )=

Pi Pi Pi Z( )= ZPi Pi X Z,( )= Z X

Φ

Φ 1– t( )t linear,

s* h10 t( ) arithmiclog,sin⎩⎪⎨⎪⎧

=

Φ s( )

s linear,

h10s

s*-----⎝ ⎠⎜ ⎟⎛ ⎞

arithmiclog,asin⎩⎪⎨⎪⎧

=

h10 t( )sin 10t 10 t––2

-------------------------=

h10 s( )asin sign s( ) s s2 1++⎝ ⎠⎛ ⎞log⋅=

wiϕ wi( ) ϕ 0≥ ϕ 0( ) 0=

LiLi Lj

18

Page 27: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP CHAPTER 2 DIP CONCEPTS

Figure 8 Modification of weight functions at intersections

Let denote the intersection points of any segment with . We define:

(25)

The parameter must be prescribed. It defines the radius of a cylinder around the intersection pointwhere all profiles are mixed. For all intersecting segments, a positive weight is obtained and thenormalized weight functions can be applied to define the doping in any point of the device.

The described formalism provides a global approach without any user interaction. It does not guaranteea one-dimensional sweep of the doping or a simple rotation where the experienced user would expectthis. Depending on the 1D and 2D doping profiles and their relative positions, undesired influences ofdoped regions or undesired isolated or merged doped regions may be obtained.

dip_3DspeciesThis rule interpolates the 3D doping given on a tensor product grid or a mixed-element mesh. The valueat the nearest point on the grid boundary is taken for points that are outside the grid. The interpolationguarantees continuity of the doping distribution between cells of the grid. However, it does not enforcethe continuity of gradients along cell boundaries.

xk yk,( ) Li

w̃i x y,( ) 1di x y,( )dimax

------------------–dj x y,( )djmax

------------------j i≠∏ min 1

dk x y,( )d0

------------------,⎝ ⎠⎛ ⎞

xk yk,( ) Li∈∏

1 min 1dk x y,( )

d0------------------,⎝ ⎠

⎛ ⎞–xk yk,( ) Li∈∑+

=

d0

19

Page 28: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPCHAPTER 2 DIP CONCEPTS

Blending functionsBlending functions (or weighting functions) are used to perform a smooth transition between differentterms in an interpolation formula. Their choice affects the ‘shape’ of an interpolation, particularly, ifnonlinear blending functions are used. Information from the mask layout can be introduced into aninterpolation formula in this way. DIP supports blending functions of linear and error function type.

Profile adjustmentsDue to inaccuracies in the process simulation, the profiles will not match exactly at the intersection oftwo 2D cuts. These inconsistencies may cause artifacts in the interpolation if the differences between theprofiles are too large. DIP applies a simple averaging at the intersection lines (corners of incorporationregions).

20

Page 29: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX A SCRIPTING LANGUAGE

DIP

APPENDIX A Scripting language

This appendix discusses the scripting language of DIP.

Writing DIP command scriptsThe DIP command interface is based on the tool command language (Tcl). A DIP input script is actuallya Tcl script and, therefore, enables the full flexibility of Tcl. The basic rules for writing DIP input scriptsare:

1. Before creating any other DIP object, create an object of class dip_device and assign it to a variable.This variable is required for subsequent operations. The code to create a dip_device object and toassign it to the variable named dev is:

set dev [dip_device]

2. Create the profiles and assign them to variables. For each available 2D profile, one object of classdip_profile2D is created with a command that looks like:

set p1 [dip_profile2D -args $dev cut1.grd cut1.dat]

For each available 3D profile, an object of class dip_tensor3D or dip_mesh3D is created with acommand that looks like:

set p2 [dip_tensor3D -args $dev tens.grd tens.dat]set p3 [dip_mesh3D -args $dev mesh.grd mesh.dat]

In this example, *.grd and *.dat are file names referring to files in DF–ISE format. For 3D profiles,users must select the correct object type (dip_mesh3D or dip_tensor3D).

3. This is the most demanding part of the script: Define the incorporation regions and incorporationrules for each region. A rectangular region can be created like this:

set r1 [dip_rect -args $dev 0 0 1 0 0 1 $p1 NULL NULL NULL]

The first argument is the device, the next six arguments define the size and location of the rectangleby three corner points (see Figure 5 on page 13), and the last four arguments specify the profiles tobe used for each side.

In this example, only one side has a profile; the side values for the other three sides are interpolatedfrom the profile p1. All four profiles can be zero if the doping is taken only from 3D grids.Incorporation regions are explained in detail in dip_rect, dip_region on page 12 and Incorporationregions: dip_rect on page 31.

For each incorporation region and each species, a separate incorporation rule must be specified. DIPcomputes the 3D distribution for each species according to the rule given for the species. DIP supportsthree different incorporation rules for rectangular regions (see Incorporation rules on page 12).

21

Page 30: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX A SCRIPTING LANGUAGE

Depending on the incorporation rule selected, the number of arguments can differ. At least twoarguments (region and species) are always required.

The definition of a new Coons-type incorporation rule for region r1 and species Arsenic can be:

dip_coons -args $r1 Arsenic

NOTE The rule is not assigned to a variable in this example. This would be necessary if users wantedto change the properties of the rule, such as the interpolation mode (linear or logarithmic) orblending functions.

Example: NMOS transistorThis example is a DIP input script for an NMOS transistor device. Three 2D cross sections are available(see Figure 9). The device is divided into eight rectangular incorporation regions. In each region, asimple glider interpolation is used to compute the 3D doping distribution.

Figure 9 Layout of incorporation regions for NMOS example

22

Page 31: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX A SCRIPTING LANGUAGE

Figure 10 Three cross sections of NMOS example: cut1, cut2, and cut3 (from left to right)

### DIP Input Script### Contains the definition of incorporation regions### and rules.

### Files with 2D numerical doping profiles:set GEOCUT1 cut1.grdset DOPCUT1 cut1.datset GEOCUT2 cut2.grdset DOPCUT2 cut2.datset GEOCUT2 cut3.grdset DOPCUT2 cut3.dat

### Create dip_deviceset d [dip_device]

### Add numerical doping profiles set p1 [dip_mesh2D -args $d $GEOCUT1 $DOPCUT1] set p2 [dip_mesh2D -args $d $GEOCUT2 $DOPCUT2]set p3 [dip_mesh2D -args $d $GEOCUT3 $DOPCUT3] ### Add incorporation regions and rules ## Region 0 set r0 [dip_rect -args $d 13 -0.6 13 1 12 -0.6 $p3 NULL NULL $p2] dip_glider -args $r0 Arsenic 0 -1 dip_glider -args $r0 Boron 0 -1 dip_glider -args $r0 Phosphorus 0 -1 ## Region 1 set r1 [dip_rect -args $d 13 -0.6 14 -0.6 13 1 $p2 NULL NULL $p3] dip_glider -args $r1 Arsenic 3 -1 dip_glider -args $r1 Boron 3 -1 dip_glider -args $r1 Phosphorus 3 -1 ## Region 2 set r2 [dip_rect -args $d 13 -1.6 13 -0.6 12 -1.6 $p3 $p2 NULL $p1] dip_glider -args $r2 Arsenic 0 -1 dip_glider -args $r2 Boron 0 -1 dip_glider -args $r2 Phosphorus 0 -1 ## Region 3 set r3 [dip_rect -args $d 13 -1.6 14 -1.6 13 -0.6 $p1 NULL $p2 $p3] dip_glider -args $r3 Arsenic 3 -1 dip_glider -args $r3 Boron 3 -1

23

Page 32: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX A SCRIPTING LANGUAGE

dip_glider -args $r3 Phosphorus 3 -1 ## Region 4 set r4 [dip_rect -args $d 13 -2.6 13 -1.6 12 -2.6 $p3 $p1 NULL $p2]dip_glider -args $r4 Arsenic 0 -1 dip_glider -args $r4 Boron 0 -1 dip_glider -args $r4 Phosphorus 0 -1 ## Region 5 set r5 [dip_rect -args $d 13 -2.6 14 -2.6 13 -1.6 $p2 NULL $p1 $p3]dip_glider -args $r5 Arsenic 3 -1 dip_glider -args $r5 Boron 3 -1 dip_glider -args $r5 Phosphorus 3 -1 ## Region 6 set r6 [dip_rect -args $d 13 -4.3 13 -2.6 12 -4.3 $p3 $p2 NULL NULL]dip_glider -args $r6 Arsenic 0 -1 dip_glider -args $r6 Boron 0 -1 dip_glider -args $r6 Phosphorus 0 -1 ## Region 7 set r7 [dip_rect -args $d 13 -4.3 14 -4.3 13 -2.6 NULL NULL $p2 $p3]dip_glider -args $r7 Arsenic 3 -1 dip_glider -args $r7 Boron 3 -1 dip_glider -args $r7 Phosphorus 3 -1

Interactive features of dipshThe interactive DIP command interpreter is invoked with the command:

% dipsh

All the operations in the appendices of this manual are accepted by dipsh. The basic rules for writing DIPscripts also apply to dipsh (see Writing DIP command scripts on page 21). However, since dipsh is basedon Tcl, users can use Tcl to write their own programs around DIP. This can be useful for testing scriptsby creating 1D, 2D, or 3D plots of the interpolated species. The following simple example illustrateswhat can be done.

After starting dipsh, the DIP input script, which was presented in Example script for incorporating 2Ddata on page 7, is sourced:

DIP % source nmos.dipReading external mesh cut2.grd... done.Reading external subMesh data cut2.grd... done.Building internal submesh structure... done.

Now that device, regions, and interpolation rules are defined, the member function of the dip_deviceobject is called to obtain the interpolated value at a point:

DIP % $device f 0 0 0 NetDopingdip_device::findRegion(): warning: point outside, taking nearest region-236267388305666336.000000

The message indicates that the point (0,0,0) was not found in any of the specified incorporation regions.

f

24

Page 33: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX A SCRIPTING LANGUAGE

To find out more about the device geometry, use the writeInfo command:

DIP % $device writeInfoDevice origin : (12, -3.3, -8.68025403481)Device size : (2, 3.4, 8.652851778)Device extents: x: [ 12, 14 ]

y: [ -3.3, 0.1 ]z: [ -8.68025403481, -0.0274022568099994 ]

Now, let us try again for a point that is inside the device. This time, the Tcl format command is used toobtain a more readable output:

DIP % puts [format "%e" [$device f 12.5 -1 -1 NetDoping]]-1.421677e+17

The next block of code shows how to produce a data file that can be viewed later in a graphing tool. Thenet doping is computed along a vertical line at , starting from the top of the device, andthe data pairs are written to the file data.out:

DIP % set x 1313DIP % set y -2-2DIP % set z0 [$device getTop]-0.027402DIP % set dz -0.1-0.1DIP % set file [open data.out w]file9DIP % for {set i 0} {$i < 10} {incr i} {set z [expr $z0 + $i * $dz]set value [$device f $x $y $z NetDoping]puts $file [format "% .3e % .3e" $z $value]}DIP % close $file

The data file can be viewed without exiting dipsh:

DIP % cat data.out-2.740e-02 4.300e+20-1.274e-01 1.134e+20-2.274e-01 1.190e+17-3.274e-01 -2.261e+17-4.274e-01 -3.461e+17-5.274e-01 -3.141e+17-6.274e-01 -2.371e+17-7.274e-01 -1.895e+17-8.274e-01 -1.617e+17-9.274e-01 -1.397e+17

If the Tcl shell does not find a command in its interpreter, it looks for an executable UNIX commandwith the same name. This is what happened above for the cat command.

x 13 y, –2= =( )

25

Page 34: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX A SCRIPTING LANGUAGE

26

Page 35: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX B FUNCTIONS AND PROCEDURES

DIP

APPENDIX B Functions and procedures

This appendix discusses the functions and procedures used in DIP.

General functions and proceduresDipSetMapToActiveModeOff

Switches off the mapping of chemical concentrations to active concentrations.The abbreviated species names are mapped to active concentrations in any case(see Compatibility: Active and chemical concentrations on page 9).

Tcl proceduresHigh-level procedures can also be used in DIP script files. The available procedures are:

Initialize Creates a dip_device object and assigns it to the variable device.

LoadProfiles profile1 profile2...profilenLoads 2D profiles prof0, prof1,...profn-1, respectively from the 2D DF–ISEgrid and data files profile1.{grd,dat}.gz, profile2.{grd,dat}.gz, ...profilen.{grd,dat}.gz. Each 2D profile object can later be referenced by thevariable $profi.

Region region_name {x0 y0 x1 y1 x2 y2} {p0 p1 p2 p3} [args]

Creates an incorporation region region_name. The three corners of the region aregiven by (x0 y0 x1 y1 x2 y2). The profiles attached to the four sides of the regionare specified by (p0 p1 p2 p3). Additional arguments specifying the neighborregions can be given:-neighbour {n | s | e | w} region_name

Interpolate region_name {species0 species1...speciesn} [args]

Defines an interpolation rule for the incorporation region region_name and eachspecies speciesi. The following arguments are available:-rule {coons | stretcher | glider} [gside1 gside2]

Defines a Coons interpolation rule. The arguments gside1 and gside2 are onlynecessary for the glider interpolation rule.

-interpolation {log | lin} Selects interpolation mode.

27

Page 36: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX B FUNCTIONS AND PROCEDURES

-Xblending {lin | erfx offset steepness} Selects function for blending in x-direction.

-Yblending {lin | erfy offset steepness} Selects function for blending in y-direction.

Incorporation device: dip_devicedip_device The constructor for an object of type dip_device. It does not take arguments and

returns a reference to the created object.

addExtrapolationRegionsByFunctions list-of-functions

Call passed to all profiles associated with the device (see corresponding call inProfiles on page 29).

addExtrapolationRegionsByMaterialNames list-of-materialsCall passed to all profiles associated with the device (see corresponding call inProfiles).

autoSetExtrapolationRegions

Call passed to all profiles associated with the device (see corresponding call inProfiles).

clearExtrapolationRegions

Call passed to all profiles associated with the device (see corresponding call inProfiles).

getGlobalValue x y z speciesReturns the interpolated value of species at the point (x, y, z). Possible names arevariable names listed in the DATEX file.

getGlobalVectorValue x y z speciesReturns a vector address representing the interpolated value of species at thepoint (x, y, z). Possible names of species are variable names listed in the DATEXfile (see Vectors on page 33).

move x y z Shifts the device by the vector (x, y, z).

noAutoSetExtrapolationRegions

Call passed to all profiles associated with the device (see corresponding call inProfiles).

noAutoTopSiliconAdjust

Switches off the default behavior that causes the device to shift vertically insuch a way that the silicon top of the device aligns with the silicon top of thegrid that imports data from the device. This only affects the importDeviceDatasetsfunction of a profile.

resetTransform Resets the device to its original location, that is, ignores all previous move,rotate, and scale operations.

rotate x y angle Rotates the device about a vertical axis at (x, y) by the angle specified in degrees.

28

Page 37: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX B FUNCTIONS AND PROCEDURES

scale x y z x-scale y-scale z-scaleScales the device by the factors (x-scale, y-scale, z-scale). The scaling isrelative to the origin specified with (x, y, z). Reflections are also possible withthis operation. For example, a reflection at the x = 0 plane is performed withscale 0 0 0 –1 1 1 specified in degrees.

setBlendingErf offset steepnessCall passed to all incorporation rules of all incorporation regions (seecorresponding call in Incorporation rules on page 32).

setBlendingLin Call passed to all incorporation rules of all incorporation regions (seecorresponding call in Incorporation rules).

setExtrapolationOff Call passed to all profiles associated with the device (see corresponding call inProfiles).

setExtrapolationOn Call passed to all profiles associated with the device (see corresponding call inProfiles).

setExtrapolationRegions list-of-region-namesCall passed to all profiles associated with the device (see corresponding call inProfiles).

setLinInterpolation Call passed to all profiles associated with the device (see corresponding call inProfiles).

setLogInterpolation Call passed to all profiles associated with the device (see corresponding call inProfiles).

writeInfo Writes general information on the device (location, extents) to standard output.

writeRegions Writes a list of all incorporation regions to standard output.

Profilesdip_mesh2D -args dip_device geo-file dat-filedip_mesh3D -args dip_device geo-file dat-filedip_rec_tensor2D -args dip_device geo-file dat-filedip_rec_tensor3D -args dip_device geo-file dat-file

These are the constructors for the different grid types. They take as arguments areference to an object of type dip_device which can be zero, and two input filesin DF–ISE format. The geo-file must contain the geometry or grid. Theargument dat-file can be zero. Otherwise, it must contain the datasets definedon the grid. If the first argument (dip_device) is nonzero, this operationautomatically adds the new profile to the incorporation device.

addExtrapolationRegionsByFunctions list-of-functionsAll valid regions of all datasets matching one of the specified functions areadded to the list of regions used for extrapolation.

29

Page 38: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX B FUNCTIONS AND PROCEDURES

addExtrapolationRegionsByMaterialNames list-of-materialsAll regions matching one of the specified materials are added to the list ofregions used for extrapolation.

autoSetExtrapolationRegionsCauses automatic selection of extrapolation regions according to the validregions of the dataset.

clearExtrapolationRegionsEmpties the list of extrapolation regions.

getExtrapolationRegionsReturns a list of the currently selected extrapolation regions.

getGlobalValue x y z speciesReturns the value of species at the location (x, y, z) on the profile. The locationis in global coordinates.

getGlobalVectorValue x y z speciesReturns a vector address representing the value of species at the location (x, y,z) on the profile. The location is in global coordinates (see Vectors on page 33).

importDatasets dip_profile mode species-listThe species listed in the third argument are transferred from the profile specifiedin the first argument to this (destination) grid. The mode can be one of new, add, orreplace. The choice of the mode is relevant only if datasets for the same speciesalready exist in this (destination) profile. Mode new means that the importeddataset is appended to the existing datasets, even if a matching species exists.Mode add causes the values of the imported dataset to be added to an existingdataset for the same species, and mode replace causes existing values for thesame species to be overwritten by the imported values.

importDeviceDatasets dip_device mode species-listThe species listed in the third argument are transferred from the incorporationdevice specified in the first argument to this (destination) grid. The meaning ofthe argument mode is the same as for importDatasets.

listDatasetFunctions Returns a list of the functions of all datasets available in the profile.

listDatasetNames Returns a list of the names of all datasets available in the profile.

move x y z Moves the profile by the vector (x, y, z).

noAutoSetExtrapolationRegions

Switches off the automatic choice of extrapolation regions according to thevalid regions of the dataset.

setExtrapolationOff Switches off extrapolation for this profile.

setExtrapolationOn Switches on extrapolation for this profile.

setExtrapolationRegions list-of-region-namesSets the extrapolation regions to the specified list.

30

Page 39: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX B FUNCTIONS AND PROCEDURES

setLinInterpolation Linear interpolation mode.

setLogInterpolation Logarithmic interpolation mode.

writeDatasets file-name modeWrites all datasets to a file. If mode is 0, the file is saved in ASCII format.Otherwise, the file is saved in binary format.

writeInfo Writes an extensive listing of profile properties.

Incorporation regions: dip_rectdip_rect -args dip_device x1 y1 x2 y2 x3 y3 p1 p2 p3 p4

This is the constructor for an object of type dip_rect. It takes as its first argumenta reference to an object of type dip_device. The following six arguments definethe location and size of the rectangular region by the three points (x1, y1), (x2,y2), and (x3, y3), which correspond to corners 0, 1, and 3, (see Figure 5 onpage 13). The last four arguments are references to objects of typedip_profile2D. They specify a profile for each side of the rectangular region.Zero profiles can be given. DIP uses the bounding box of the existing profilesto define a region. This operation automatically adds the new region to thedevice.

flip side Reflects the region at side. The argument side must be an integer between 0and 3 (see Figure 5).

move x y z Shifts the region by the vector (x, y, z).

resetTransform Resets the region to its original location, that is, ignores all previous move,rotate, flip, and scale operations. This operation is used in interactive mode, seeInteractive features of dipsh on page 24.

rotate corner angle Rotates the region about a vertical axis by the angle specified in degrees. Therotation axis is attached to one corner of the region. This corner is selected withthe argument corner, which must be an integer between 0 and 3 (see Figure 5).

scale corner x-scale y-scale z-scaleScales the region by the factors (x-scale, y-scale, z-scale). The scaling isrelative to one of the corners of the region, specified by corner.

setBlendingErf offset steepnessCall passed to all incorporation rules of the region (see corresponding call inIncorporation rules on page 32).

setBlendingLin Call passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

setLinInterpolation Call passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

setLogInterpolation Call passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

31

Page 40: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX B FUNCTIONS AND PROCEDURES

setXBlendingErf offset steepnessCall passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

setXBlendingLin Call passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

setYBlendingErf offset steepnessCall passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

setYBlendingLin Call passed to all incorporation rules of the region (see corresponding call inIncorporation rules).

useNeighborProfile side neighbor-regionUses the interpolated value of region neighbor-region to compute the values atside. This can be used to override the automatic interpolation of missing sideprofiles.

writeRules Writes a list of all rules to standard output.

Incorporation rulesThe class dip_rule is the base class from which specific incorporation rules are derived.

dip_glider -args region species side1 side2This is the constructor for an incorporation rule of type dip_glider. It takes as itsfirst argument a reference to an object of type dip_rect. The species argumentspecifies to which species this rule applies. The two additional argumentsspecify which sides of the region are used as gliders. At least one glider sidemust have a value between 0 and 3. Single gliders are created by setting thesecond side argument side2 to –1. A single glider with side = 0 would beconstructed as follows (see Incorporation rules on page 12): dip_glider -argsregion species 0 -1

dip_coons -args region speciesThis is the constructor for an incorporation rule of type dip_coons. It takes as itsfirst argument a reference to an object of type dip_rect. The argument speciesspecifies to which species this rule applies. This operation automatically addsthe new rule to the region.

dip_stretcher -args region speciesThis is the constructor for an incorporation rule of type dip_stretcher. It takes asits first argument a reference to an object of type dip_rect. The argument speciesspecifies to which species this rule applies. This operation automatically addsthe new rule to the region.

32

Page 41: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIP APPENDIX B FUNCTIONS AND PROCEDURES

dip_3Dspecies -args region profile speciesThis is the constructor for an incorporation rule of type dip_3Dspecies. Theargument region specifies the incorporation region for which this rule isevaluated. The argument profile is a reference to a 3D profile type. Separatedip_3Dspecies objects must be created for each species of the 3D profile (seeIncorporation rules on page 12).

setLinInterpolation Selects linear interpolation mode (see Incorporation rules).

setLogInterpolation Selects logarithmic interpolation mode. This is the default (see Incorporationrules).

setXBlendingErf offset steepnessSelects error functions for blending in x-direction. The two arguments specifyparameters for the error function (see Blending functions on page 20). This isnot available for dip_3Dspecies.

setXBlendingLin Selects linear functions for blending in x-direction. This is the default (seeBlending functions). This is not available for dip_3Dspecies.

setYBlendingErf offset steepnessSelects error functions for blending in y-direction. The two arguments specifyparameters for the error function (see Blending functions). This is not availablefor dip_3Dspecies.

setYBlendingLin Selects linear functions for blending in y-direction. This is the default (seeBlending functions). This is not available for dip_3Dspecies.

VectorsThe class vector3 is used to represent values of vector datasets.

vector3 -args x y z This is the constructor for vector3.

vector3 -this vector3_addressMaps a returned vector address into a vector object. This must be applied tovectors returned by functions such as getGlobalVectorValue:set v [$grd getGlobalVectorValue 1 2 0 Boron]

vector3 -this $v

This turns the vector address into a normal vector3 object.

x, y, z Retrieves the vector component values.

length Retrieves the absolute value of the vector.

add vector Adds the argument vector to this vector.

sub vector Subtracts the argument vector from this vector.

33

Page 42: DIP - jmbussat/Physics290E/Fall-2006/TCAD_document… · ii Copyright Notice and Proprietary Information Copyright © 2006 Synopsys, Inc. All rights reserved. This software and documentat

DIPAPPENDIX B FUNCTIONS AND PROCEDURES

34