VisualTCAD Ug en
VisualTCAD Ug en
VisualTCAD Ug en
.
VisualTCAD 1.7.2 : VisualTCAD User's Guide
Copyright 2008-October 24, 2016 Cogenda Pte Ltd.
All rights reserved.
Duplication of this documentation is permitted only for internal use within the organiza-
License Grant
tion of the licensee.
THIS DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND
Disclaimer
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, IN-
CLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LI-
ABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PRO-
CUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBIL-
ITY OF SUCH DAMAGE.
. Contents
1 Introduction 1
1.1 Installing on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Installing on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Installing the Floating License on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Starting FlexLM Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Verifying the FlexLM Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3 Merging with other licenses managed by FlexLM . . . . . . . . . . . . . . . . . 7
1.3.4 Using the Graphical Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.5 Using the Command-line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.6 Examining the I-V Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.7 Visualizing the Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2 Tutorials 25
2.1 Simulate a PN Junction Diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 Building the Diode Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.2 Examining the I-V Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.3 Visualizing the Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2 Simulate a Diode Rectifier Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.1 Assigning Circuit Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.2 Drawing Circuit Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.3 Simulating the Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3 A 0.18um MOSFET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.1 Building MOSFET Device Structure . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3.2 Simulating I-V Curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.3 Setting Mobility Model Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4 Mix-Mode Simulation of Inverter IO Circuit . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.4.1 Creating Symbol and Mapping Device Electrode . . . . . . . . . . . . . . . . . . 49
2.4.2 Mixed-Mode Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.5 Scripting and Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.5.1 Example 1: Curve Plotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.5.2 Example 2: Spreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.5.3 Example 3: Building MOSFET Device Structure . . . . . . . . . . . . . . . . . . 58
2.5.4 Example 4: Using More Than One Window: . . . . . . . . . . . . . . . . . . . . 60
2.5.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
i
3 GUI Reference 62
3.1 Device Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.1 Structure Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.2 Device Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.1 Simulation Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.3 Circuit Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.3.1 Place Circuit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.4 Device Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.4.1 View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.4.2 Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.4.3 Animating the simulation result . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5 Spreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.6 XY Plotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.7 Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.7.1 Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.7.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.7.3 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
ii
4.2.1.2 Method curveGroupCount . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.3 Method curveCountAt . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.4 Method insertCurveGroup . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.5 Method removeCurveGroup . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.6 Method setGroupTitle . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.7 Method insertCurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.1.8 Method clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.2.1.9 Method saveToFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.2.1.10 Method setTitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3 SpreadSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1 Class SpreadSheetScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1.1 Method scriptType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1.2 Method getColumnName . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1.3 Method getColumnData . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1.4 Method insertRows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.5 Method insertColums . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.6 Method setColumnData . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.7 Method setColumnName . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.8 Method calcColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.9 Method saveToFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.10 Method setTitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.1.11 Method clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4 MainWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1 Class MainWindowScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.1 Method scriptType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.2 Method openDocumentFromFile . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.3 Method saveAllToFile . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.4 Method newWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.5 Method getWindowByName . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1.6 Method getWindowByNumber . . . . . . . . . . . . . . . . . . . . . . 106
iii
6.1.1 File IO Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.1.1.1 Method: cv2d.addFile() . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.1.1.2 Method: cv2d.exportData() . . . . . . . . . . . . . . . . . . . . . . . . 110
6.1.1.3 Method: cv2d.exportImage() . . . . . . . . . . . . . . . . . . . . . . . 111
6.1.1.4 Method: cv2d.selectAll() . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.1.1.5 Method: cv2d.createPanel() . . . . . . . . . . . . . . . . . . . . . . . . 111
6.1.1.6 Method: cv2d.closePanel() . . . . . . . . . . . . . . . . . . . . . . . . 112
6.1.1.7 Method: cv2d.closeAll() . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.1.2 File Edit Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.1.2.1 Method: cv2d.selectPanel() . . . . . . . . . . . . . . . . . . . . . . . . 112
6.1.2.2 Method: cv2d.selectAll() . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.1.2.3 Method: cv2d.addRuler() . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.1.2.4 Method: cv2d.addLine() . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.1.2.5 Method: cv2d.addLabel() . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.1.2.6 Method: cv2d.addCutline() . . . . . . . . . . . . . . . . . . . . . . . . 114
6.1.2.7 Method: cv2d.mergePanel() . . . . . . . . . . . . . . . . . . . . . . . 114
6.1.2.8 Method: cv2d.maximizePanel() . . . . . . . . . . . . . . . . . . . . . 115
6.1.3 File Property Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.1.3.1 Method: setViewSetting() . . . . . . . . . . . . . . . . . . . . . . . . 115
6.1.3.2 Method: cv2d.setTransform() . . . . . . . . . . . . . . . . . . . . . . 115
6.1.3.3 Method: cv2d.setStyle() . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.1.3.4 Method: cv2d.setFieldLegendStyle() . . . . . . . . . . . . . . . . . . . 116
6.1.3.5 Method: cv2d.setFieldStyle() . . . . . . . . . . . . . . . . . . . . . . . 117
6.1.3.6 Method: cv2d.selectField() . . . . . . . . . . . . . . . . . . . . . . . . 117
6.1.3.7 Method: cv2d.setRegionStyle() . . . . . . . . . . . . . . . . . . . . . . 118
6.1.3.8 Method: cv2d.setPNJunctionStyle() . . . . . . . . . . . . . . . . . . . 118
6.1.3.9 Method: cv2d.setDepletionEdgeStyle() . . . . . . . . . . . . . . . . . 119
6.1.3.10 Method: cv2d.setMaterialLegendStyle() . . . . . . . . . . . . . . . . . 119
6.1.3.11 Method: cv2d.setMaterialStyle() . . . . . . . . . . . . . . . . . . . . . 119
6.1.3.12 Method: cv2d.setPlotProperty() . . . . . . . . . . . . . . . . . . . . . 120
6.1.3.13 Method: cv2d.setLayout() . . . . . . . . . . . . . . . . . . . . . . . . 121
6.1.3.14 Method: cv2d.addCurve() . . . . . . . . . . . . . . . . . . . . . . . . 121
6.1.3.15 Method: cv2d.addFamily() . . . . . . . . . . . . . . . . . . . . . . . . 122
6.1.3.16 Method: cv2d.setCurveStyle() . . . . . . . . . . . . . . . . . . . . . . 123
6.1.3.17 Method: cv2d.setFamilyStyle() . . . . . . . . . . . . . . . . . . . . . . 124
iv
VisualTCAD
Semiconductor Device Simulator
Version 1.7.2
.
VisualTCAD 1.7.2 : VisualTCAD User's Guide
Copyright 2008-October 24, 2016 Cogenda Pte Ltd.
All rights reserved.
Duplication of this documentation is permitted only for internal use within the organiza-
License Grant
tion of the licensee.
THIS DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND
Disclaimer
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, IN-
CLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LI-
ABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PRO-
CUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBIL-
ITY OF SUCH DAMAGE.
. Contents
i
CHAPTER
1 . Introduction
The VisualTCAD device simulation software works on both Windows and Linux platform.
In the following sections, we shall outline the installation procedures on both platform,
and the procedure to start the graphical user interface and the command-line interface.
Installing on Windows
The installation package comes as ab executable file. Double clicking on it will start the
installation wizard (Fig. 1.1).
1
1.1. Installing on Windows .
2
1.1. Installing on Windows .
3
1.2. Installing on Linux .
Installing on Linux
The installation package of the Linux version is a self-extracting program, typically
named as Cogenda-Linux-<version>.bin. The same package includes binaries and data files
for several Linux platforms, include Redhat Enterprise Linux release 5 and release 6, 32-
and 64- bit platforms.
Typically we will run the installer as a super user(root):
Installing
$ su
$ ./Cogenda-Linux-1.7.4.bin
The installer will check the operating system and the prerequisite software needed to run
VisualTCAD. If the operating system is recognized, it lists the editions suitable on this
platform in the following menu, along with the features contained in each edition.
Checking the machine architecture: found rhel5-64
Editions recommended on this machine:
----------------------------------------------------------------------------
[ 1] VisualTCAD-flexlm-1.7.4-1-rhel5-64
Platform: rhel5-64 Features: FloatingLicense
----------------------------------------------------------------------------
[ 2] VisualTCAD-full-flexlm-1.7.4-1-rhel5-64
Platform: rhel5-64 Features: Full,FloatingLicense
----------------------------------------------------------------------------
[ 3] VisualTCAD-full-ib-flexlm-1.7.4-1-rhel5-64
Platform: rhel5-64 Features: Full,InfiniBand,FloatingLicense
----------------------------------------------------------------------------
[ 0] Show all editions.
----------------------------------------------------------------------------
The user may choose from the menu the edition to be installed. The basic edition [1] is
suitable for most users. The full edition [2] contains advanced products such as VisualFab
and VisualParticle that requires special licenses. The ib edition [3] only runs on cluster
computers with Infiniband interconnect hardware. The user may also enter 0 to see a full
4
1.3. Installing the Floating License on Linux .
.
list of editions included in the package.
If the operating system is not recognized, all editions will be displayed, and the user may
choose one that matches his platform most closely.
The installer then prompts the user to input the target installation directory, the default
location is /opt/cogenda.
The end user license agreement will be displayed, and one must entery to accept it. It
then prints out a summary of this installation, and asks the user to confirm.
========================== Installation Summary ============================
Install to : /opt/cogenda
Platform : rhel5-64
Features : Full,FloatingLicense
----------------------------------------------------------------------------
Is the above correct? [Y/exit]
The installer proceeds to unpack the executable binaries and data files. Finally, it asks the
user if a shortcut link is to be created to point to the installed version of the software. If
one accepts the default setting, a soft-link named ./opt/cogenda/current will be created.
Make a link to the installed version? [Y/n]
Enter a name for the installed version [current]
After installation, a typical directory structure would look like the following.
/opt/
|- cogenda/
|- current -> releases/VisualTCAD-flexlm-1.7.4-1-rhel5-64
|
|- previous -> releases/VisualTCAD-flexlm-1.7.4-rhel5-64
|
|- documents/
| |- 1.7.4/
| |- ...
| +- 1.7.4-1/
| |- ...
|
|- releases/
| |- VisualTCAD-flexlm-1.7.4-rhel5-64
| +- VisualTCAD-flexlm-1.7.4-1-rhel5-64
|
|- repo/
| |- ...
| |- ...
5
1.3. Installing the Floating License on Linux .
.
Starting FlexLM Server
Copy the cogenda.lic file to ./opt/cogenda/cogenda.lic . The content of the files looks
something like following.
SERVER node00 any
VENDOR COGENDA
USE_SERVER
Each line corresponds to a feature. This file shows a license with all features enabled,
with 32-way parallel computation enabled in the Genius simulator.
One first enter the Cogenda environment with the command below.
$ source /opt/cogenda/1.7.3/bin/setenv.sh
One then starts the license server with the following command on node00 . It is not
necessary to use root privilege.
$ lmgrd -c /opt/cogenda/cogenda.lic -1 /tmp/flexlm.log
The lmgrd command starts the FlexLM server, read in the license file, saves the log mes-
sages to ./tmp/flexlm.log , and turned to background running. If the server is correctly
started, the end of flexlm.log file should contain the followings.
14:07:56 (lmgrd) License file(s): /opt/cogenda/cogenda.lic
14:07:56 (lmgrd) lmgrd tcp-port 27000
14:07:56 (lmgrd) Starting vendor daemons ...
14:07:56 (lmgrd) Started COGENDA (internet tcp_port 48793 pid 19111)
14:07:56 (COGENDA) FLEXnet Licensing version v11.10.0.0 build 95001 x64_lsb
14:07:56 (COGENDA) Server started on localhost for: VTCAD
14:07:56 (COGENDA) VFAB VPTKL GENIUS_MISC
14:07:56 (COGENDA) GENIUS_COMMON GENIUS_DDM2 GENIUS_EBM3
14:07:56 (COGENDA) GENIUS_AC GENIUS_SPICE GENIUS_OPTICAL
14:07:56 (COGENDA) GENIUS_HIDDM1 GDS2MESH GSEAT
14:07:56 (COGENDA) EXTERNAL FILTERS are OFF
14:07:56 (lmgrd) COGENDA using TCP-port 48793
6
1.3. Installing the Floating License on Linux .
.
COGENDA_LICENSE_FILE=@node00
One can use the lmstat command to verify if one can successfully query the license
server. For example, one can run the command on node03, and expect the following
output:
$ lmstat
lmstat - Copyright (c) 1989-2011 Flexera Software, Inc. All Rights Reserved.
Flexible License Manager status on Thu 1/5/2012 14:17
COGENDA: UP v11.10
Note how license files from various vendors are concatenated with semicolon in the -c
option.
7
1.3. Installing the Floating License on Linux .
To check the license status, click in the menu Help License . The license status dialog
.
Checking License
Status
shown in Fig 1.8. If you download the trial version of Genius from the website, the
default license file included in the package is valid for one month only. Some advanced
features and disabled and at most 2 processors are supported. You need to register your
copy with Cogenda in order to continue using Genius. To register, click the .register
button, and email the generated registration code to Cogenda or a sales representative.
Every ralease bears a unique version string, which should be quoted when questing tech-
nical support from Cogenda. The version number of the release can be checked by click-
ing the menu .Help About , and the version number is shown in the dialog Fig. 1.9.
8
1.3. Installing the Floating License on Linux .
.
Figure 1.9: The About Dialog.
For convenience, we add the installation directory to his PATH environment for his con-
venience.
With the bash shell one can type
$ export PATH=$PATH:/opt/cogenda/genius/bin
or with csh.
# set PATH=$PATH:/opt/cogenda/genius/bin
Now we try running the PN diode example with one single processor:
genius -n 4 -i pn2d.inp
9
1.3. Installing the Floating License on Linux .
.
************************************************************************* 1
* 888888 88888888 88 888 88888 888 888 8888888 * 2
* 8 8 8 8 8 8 8 8 8 8 * 3
* 8 8 8 8 8 8 8 8 8 * 4
* 8 88888888 8 8 8 8 8 8 888888 * 5
* 8 8888 8 8 8 8 8 8 8 8 * 6
* 8 8 8 8 8 8 8 8 8 8 * 7
* 888888 88888888 888 88 88888 8888888 8888888 * 8
* * 9
* Parallel Three-Dimensional General Purpose Semiconductor Simulator * 10
* * 11
* This is Genius Commercial Version 1.7.2 with double precision. * 12
* * 13
* Copyright (C) 2008-2011 by Cogenda Company. * 14
************************************************************************* 15
Constructing Simulation System... 16
17
External Temperature = 3.000000e+02K 18
Setting each voltage and current source here...done. 19
20
... 21
22
... 23
24
DC Scan: V(Anode) = 2.000000e+00 V 25
----------------------------------------------------------------------------- 26
its | Eq(V) | | Eq(n) | | Eq(p) | | Eq(T) | |Eq(Tn)| |Eq(Tp)| |delta x| 27
----------------------------------------------------------------------------- 28
0 3.69e-03 4.42e-05 5.79e-05 0.00e+00 0.00e+00 0.00e+00 0.00e+00 29
1 7.67e-11 3.89e-06 3.07e-06 0.00e+00 0.00e+00 0.00e+00 4.93e-02 30
2 7.98e-15 3.44e-07 3.55e-07 0.00e+00 0.00e+00 0.00e+00 2.87e-03 31
3 2.57e-15 3.47e-08 3.52e-08 0.00e+00 0.00e+00 0.00e+00 2.87e-04 32
4 1.97e-15 4.09e-09 2.72e-09 0.00e+00 0.00e+00 0.00e+00 2.11e-05 33
5 1.92e-15 5.06e-10 1.68e-10 0.00e+00 0.00e+00 0.00e+00 1.09e-06 34
----------------------------------------------------------------------------- 35
CONVERGED_PNORM_RELATIVE 36
37
38
Write System to XML VTK file pn2d.vtu... 39
40
Write System to CGNS file pn2d.cgns... 41
42
Write Boundary Condition to file bc.inc... 43
44
Genius finished. Totol time is 1 min 2.78475 second. Good bye. 45
we can run Genius with more than one CPUs, using the -n option to specify the number
Running with Multiple
CPUs
of CPUs to utilize.
$ genius -n 2 -i pn2d.inp
If you download the trial version of Genius from the website, the default license file
Registering
included in the package is valid for one month only. Some advanced features and disabled
and at most 2 processors are supported. You need to register your copy with Cogenda in
order to continue using Genius. To register, simply type.
$ genius -r
10
1.3. Installing the Floating License on Linux .
.
************************************************************************* 1
To register your copy, email the following registration code: 2
81e434677a0bb0501aabd85d07b9f621feb19ba6ca5f24ff987e583fa083b48a771796178 3
ac1d9de40cc53f2980fd12de936febdcadb16e3b66b08e9e0bd314fc511f63cd2264b9ab1 4
b10635ad3a515ec4f62e101d86206fd7694ae938210d0a406eda6bece9b760f28f916c88d 5
d83010470068fe55afbcdff8da09c4aed0d9d 6
Please email this registration code to Cogenda or its redistributors. You will be given the
license file lic.dat. Copy it to
/opt/cogenda/genius/license/lic.dat
and overwrite the old file. Genius now should work under registered mode, with all
options you subscribed turned on.
The command line options for Genius are listed below.
Command Line Options
<=<Name>=> 1
genius -- Genius 3D parallel simulator 2
3
<=<Synopsis>=> 4
5
genius [ -n <<ncpus>> ] -i <<filename>> 6
genius -r 7
8
<=<Options>=> 9
10
-n <<ncpus>> Number of processors to be used in the simulation 11
12
-i <<filename>> Input file to the simulator 13
14
-r Register the copy with Cogenda 15
The coordinates of the mouse cursor is displayed in the status bar at the right-bottom
Simple Mouse
Operations
corner of the main window. The default unit of the coordinates is micron, but this can be
changed by the user.
To zoom-in or zoom-out the viewport, one can click the . Zoom-in or . Zoom-out
11
1.3. Installing the Floating License on Linux .
.
tool button. Alternatively, one could simple scroll the mouse wheel up or down. The
zooming will leave the view under the mouse cursor stationary.
To translate the viewport, one can hold the mid-button(wheel) of the mouse and drag the
viewport.
We start by drawing a box representing the body of the silicon diode. Choose from the
Drawing Device
Outline
drawing tools . Add Rectangle .
We define the first corner of the rectangle by clicking at the coordinates (-1,0). one may
notice that in the Add Rectangle tool, the mouse cursor is snapped to the background
grip. 1 Click again at (1,-2) to define the other corner, and complete the rectangle. This
closed rectangle region is slightly shaded.
We then proceed to define the anode and cathode by drawing the two rectangles (-
0.2,0.2)-(0.2,0) and (-1,-2)-(1,-2.2), respectively. The outline of the device structure is
shown in Fig. 2.2.
Every enclosed region in the drawing must be labelled and assigned a material. To label
Assigning Material
Regions
such a region, one chooses the . Add Region Label tool, and click within one of the
regions. we first click at (0, -1), which prompts a dialog as shown in Fig. 2.3. We key
in the label Silicon, the maximum mesh size of 0.1 micron in this region, choose the Si
material from the list, and click .OK .
1
The default snap mode is . Auto-Snap , which is appropriate in most occasions. The snapping modes
are described in detail in a separate documentation.
12
1.3. Installing the Floating License on Linux .
One notices that the region is now filled with the pink color representing the silicon
material. We similarly assign the Anode and Cathode regions, both of the A1 material, and
the drawing becomes as in Fig. 2.4.
13
1.3. Installing the Floating License on Linux .
The p-type diffusion is then defined. We draw another doping box with baseline (-0.2,0)
- (0.2,0) and helight to (0.2, -0.2). We choose the Gaussian doping function and in the
dialog shown in Fig. 2.6, we key in the peak concentration 1 1019 cm3 , and the char-
acteristic length 0.1 um.
14
1.3. Installing the Floating License on Linux .
.
The final doping profile of the diode is shown in Fig. 2.7. Note the different color
representing the n- and p-type doping profiles.
The numerical device simulation always relies on a mesh grid that divides the device into
Meshing
many small elements. Click on the . Do Mesh tool, and accepts the default parameters
in the mesh parameter dialog. The initial mesh is shown in Fig. 2.8. One may notice that
the PN junction is slightly highlighted was shading.
The initial mesh grid is not ideal for device simulation, as the junction region would re-
quire finer mesh grids. One may use the . Mesh Refinement tool to refine the initial
mesh. Accepting the default refine parameters, one sees the mesh is refined at the junc-
tion region, where the gradient of doping concentration is steep. We do 2 refinements in
sequence, and the final mesh is shown in Fig. 2.9.
15
1.3. Installing the Floating License on Linux .
.
Figure 1.18: The Final Refined Mesh Grid of the PN Junction Diode.
We save the drawing with . Save , and key in the file name diode.drw. Additionally, we
Saving the Device
choose in the menu .Device Save Mesh to File to export the mesh grid to diode.tif.
We start by creating a new simulation control window by clicking in the menu .File
.New Device Simulation . The empty simulation control window in shown in Fig. 2.10.
We first load the diode device structure by clicking. Load button in the Summary
Loading Device
Structure
section of the simulation control window. We select the diode.tif file, we just created. It
takes a few seconds for VisualTCAD and Genius to analyse the tif file. When it finishes, the
device structure is visualized in the Structure Viewer, and automatically defined device
electrodes are listed in the Electrodes section. In this case we have the Anode and the
Cathode.
One may notice that in the Simulation Control dock widget, the default Simulation Mode
16
1.3. Installing the Floating License on Linux .
.
is Steady-state, and the other choices are Transient and Circuit-element. There is also
the list of regions and boundaries in the device structure. Clicking on a region or bound-
ary name would highlight the corresponding region or label in the Structure Viewer. The
user can setup physical models, boundary conditions and other solver options from the
various tools in the dock widget, but the options are too vast to be described here.
For this simple simulation of the I-V characteristics, it is sufficient to setup the electrical
Setting DC Sweep
sources attached to the electrodes of the device. While the cathode is grounded, the anode
voltage will be swept from 0 to 1 volt. We change the source type of anode to Voltage
Sweep, and set the start, stop and step voltages to 0, 1, and 0.05 volt, respectively.
We save the simulation setup to the file diode.sim. To start the simulation job, click the
Starting Simulation Job
. Run and choose a working directory in the dialog shown in Fig. 2.12. We create a
new directory called run1, and all the simulation results will be kept in this directory.
As the simulation proceeds, the progress is updated in the status bar, at the right-bottom
Monitoring Progress
17
1.3. Installing the Floating License on Linux .
.
corner of the window, as shown in Fig. 2.13. In addition, simulation solutions are listed
in the Results pane in the dock widget. For advanced users, the running log message is
available in the process monitor, which is activated by clicking . Console in the toolbar.
We first select the columns Anode_Vapp and Anode_current. As in most GUI appli-
Plotting the I-V Curve
cations, one can select multiple columns by clicking on the column header and holding
the Control key. When the two columns are selected, right-click to activate the context
18
1.3. Installing the Floating License on Linux .
.
menu, and choose to plot the data using as the Anode_Vapp x-variable, as shown in Fig.
2.14. The plot appears in a new plot window, as shown in Fig. 2.15.
To change the axes settings, click .Edit Axes in the dock widget. In the axes property
Setting Plot Options
dialog shown in Fig. 2.16. select the Left y-axis and key in the title scale and range of
the axis.
To change the curve plotting settings, select the curve name from the list in the dock
widget, and click . Edit Legend . In the dialog window shown in Fig. 2.17, set the line
and symbol options.
The final plot is shown in Fig. 2.18.
19
1.3. Installing the Floating License on Linux .
20
1.3. Installing the Floating License on Linux .
.
Figure 1.28: Electron Concentration in the Silicon Region of the Diode.
One can filter the areas to be included or excluded in the visualization, in the Mesh Filter
Filter
section in the dock widget. We choose to filter by region names, as shown in Fig. 2.19.
We have included all the solutions in the visualization, each solution at a different anode
Animation
voltage. The electron profile is different for each solution. In the Animation Control
section of the dock widget, we can step through the solutions by clicking the . Next
and . Previous buttons.
21
1.3. Installing the Floating License on Linux .
We can probe the hole concentration along the straight line (0,0)-(0,-2) in the Probe
Probe
section in the dock widget, as shown in Fig. 2.21. After clicking the .Probe button, a
spreadsheet containing the interpolated values of hole concentration is opened. We can
then plot the hole concentration along the cut-line, as shown in Fig. 2.22.
22
1.3. Installing the Floating License on Linux .
23
1.3. Installing the Floating License on Linux .
.
Figure 1.31: Hole Concentration Along the Probe Line.
Summary
In the preceding sections, we went through the steps of simulating the I-V character-
istics of an PN junction diode. This illustrates the basic flow of device simulation in
VisualTCAD.
24
CHAPTER
2 . Tutorials
VisualTCAD is the integrated graphical user interface of the Genius device simulation
package. This chapter provides a step-by-step tutorial to the VisualTCAD graphical user
interface.
The coordinates of the mouse cursor is displayed in the status bar at the right-bottom
Simple Mouse
Operations
corner of the main window. The default unit of the coordinates is micron, but this can be
changed by the user.
25
2.1. Simulate a PN Junction Diode .
.
To zoom-in or zoom-out the viewport, one can click the . Zoom-in or . Zoom-out
tool button. Alternatively, one could simple scroll the mouse wheel up or down. The
zooming will leave the view under the mouse cursor stationary.
To translate the viewport, one can hold the mid-button(wheel) of the mouse and drag the
viewport.
We start by drawing a box representing the body of the silicon diode. Choose from the
Drawing Device
Outline
drawing tools . Add Rectangle .
We define the first corner of the rectangle by clicking at the coordinates (-1,0). one may
notice that in the Add Rectangle tool, the mouse cursor is snapped to the background
grip. 1 Click again at (1,-2) to define the other corner, and complete the rectangle. This
closed rectangle region is slightly shaded.
We then proceed to define the anode and cathode by drawing the two rectangles (-
0.2,0.2)-(0.2,0) and (-1,-2)-(1,-2.2), respectively. The outline of the device structure is
shown in Fig. 2.2.
Every enclosed region in the drawing must be labelled and assigned a material. To label
Assigning Material
Regions
such a region, one chooses the . Add Region Label tool, and click within one of the
regions. we first click at (0, -1), which prompts a dialog as shown in Fig. 2.3. We key
in the label Silicon, the maximum mesh size of 0.1 micron in this region, choose the Si
material from the list, and click .OK .
1
The default snap mode is . Auto-Snap , which is appropriate in most occasions. The snapping modes
are described in detail in a separate documentation.
26
2.1. Simulate a PN Junction Diode .
One notices that the region is now filled with the pink color representing the silicon
material. We similarly assign the Anode and Cathode regions, both of the A1 material, and
the drawing becomes as in Fig. 2.4.
27
2.1. Simulate a PN Junction Diode .
The p-type diffusion is then defined. We draw another doping box with baseline (-0.2,0)
- (0.2,0) and helight to (0.2, -0.2). We choose the Gaussian doping function and in the
dialog shown in Fig. 2.6, we key in the peak concentration 1 1019 cm3 , and the char-
acteristic length 0.1 um.
28
2.1. Simulate a PN Junction Diode .
.
The final doping profile of the diode is shown in Fig. 2.7. Note the different color
representing the n- and p-type doping profiles.
The numerical device simulation always relies on a mesh grid that divides the device into
Meshing
many small elements. Click on the . Do Mesh tool, and accepts the default parameters
in the mesh parameter dialog. The initial mesh is shown in Fig. 2.8. One may notice that
the PN junction is slightly highlighted was shading.
The initial mesh grid is not ideal for device simulation, as the junction region would re-
quire finer mesh grids. One may use the . Mesh Refinement tool to refine the initial
mesh. Accepting the default refine parameters, one sees the mesh is refined at the junc-
tion region, where the gradient of doping concentration is steep. We do 2 refinements in
sequence, and the final mesh is shown in Fig. 2.9.
29
2.1. Simulate a PN Junction Diode .
.
Figure 2.9: The Final Refined Mesh Grid of the PN Junction Diode.
We save the drawing with . Save , and key in the file name diode.drw. Additionally, we
Saving the Device
choose in the menu .Device Save Mesh to File to export the mesh grid to diode.tif.
We start by creating a new simulation control window by clicking in the menu .File
.New Device Simulation . The empty simulation control window in shown in Fig. 2.10.
We first load the diode device structure by clicking . Load button in the Summary
Loading Device
Structure
section of the simulation control window. We select the diode.tif file, we just created. It
takes a few seconds for VisualTCAD and Genius to analyse the tif file. When it finishes, the
device structure is visualized in the Structure Viewer, and automatically defined device
electrodes are listed in the Electrodes section. In this case we have the Anode and the
Cathode.
One may notice that in the Simulation Control dock widget, the default Simulation Mode
30
2.1. Simulate a PN Junction Diode .
.
is Steady-state, and the other choices are Transient and Circuit-element. There is also
the list of regions and boundaries in the device structure. Clicking on a region or bound-
ary name would highlight the corresponding region or label in the Structure Viewer. The
user can setup physical models, boundary conditions and other solver options from the
various tools in the dock widget, but the options are too vast to be described here.
For this simple simulation of the I-V characteristics, it is sufficient to setup the electrical
Setting DC Sweep
sources attached to the electrodes of the device. While the cathode is grounded, the anode
voltage will be swept from 0 to 1 volt. We change the source type of anode to Voltage
Sweep, and set the start, stop and step voltages to 0, 1, and 0.05 volt, respectively.
We save the simulation setup to the file diode.sim. To start the simulation job, click the
Starting Simulation Job
. Run and choose a working directory in the dialog shown in Fig. 2.12. We create a
new directory called run1, and all the simulation results will be kept in this directory.
As the simulation proceeds, the progress is updated in the status bar, at the right-bottom
Monitoring Progress
31
2.1. Simulate a PN Junction Diode .
.
corner of the window, as shown in Fig. 2.13. In addition, simulation solutions are listed
in the Results pane in the dock widget. For advanced users, the running log message is
available in the process monitor, which is activated by clicking . Console in the toolbar.
We first select the columns Anode_Vapp and Anode_current. As in most GUI appli-
Plotting the I-V Curve
cations, one can select multiple columns by clicking on the column header and holding
the Control key. When the two columns are selected, right-click to activate the context
32
2.1. Simulate a PN Junction Diode .
.
menu, and choose to plot the data using as the Anode_Vapp x-variable, as shown in Fig.
2.14. The plot appears in a new plot window, as shown in Fig. 2.15.
To change the axes settings, click .Edit Axes in the dock widget. In the axes property
Setting Plot Options
dialog shown in Fig. 2.16. select the Left y-axis and key in the title scale and range of
the axis.
To change the curve plotting settings, select the curve name from the list in the dock
widget, and click . Edit Legend . In the dialog window shown in Fig. 2.17, set the line
and symbol options.
The final plot is shown in Fig. 2.18.
33
2.1. Simulate a PN Junction Diode .
34
2.1. Simulate a PN Junction Diode .
.
Figure 2.19: Electron Concentration in the Silicon Region of the Diode.
One can filter the areas to be included or excluded in the visualization, in the Mesh Filter
Filter
section in the dock widget. We choose to filter by region names, as shown in Fig. 2.19.
We have included all the solutions in the visualization, each solution at a different anode
Animation
voltage. The electron profile is different for each solution. In the Animation Control
section of the dock widget, we can step through the solutions by clicking the . Next
and . Previous buttons.
35
2.1. Simulate a PN Junction Diode .
We can probe the hole concentration along the straight line (0,0)-(0,-2) in the Probe
Probe
section in the dock widget, as shown in Fig. 2.21. After clicking the .Probe button, a
spreadsheet containing the interpolated values of hole concentration is opened. We can
then plot the hole concentration along the cut-line, as shown in Fig. 2.22.
36
2.1. Simulate a PN Junction Diode .
37
2.2. Simulate a Diode Recti ier Circuit .
.
Figure 2.22: Hole Concentration Along the Probe Line.
Summary
In the preceding sections, we went through the steps of simulating the I-V character-
istics of an PN junction diode. This illustrates the basic flow of device simulation in
VisualTCAD.
38
2.2. Simulate a Diode Recti ier Circuit .
.
Figure 2.23: Default Symbol for the Two-Terminal Device.
We want a more suitable symbol for the diode, so we click Change Symbol, and in the
dialog(Fig. 2.24), we choose the diode symbol.
Then we must map the device electrodes to the two pins in the circuit symbol, as shown
in Fig. 2.25. We save to another file diode-circuit.sim.
39
2.2. Simulate a Diode Recti ier Circuit .
Figure 2.26: Placing the Semiconductor Diode Device Model in the circuit.
The other symbol components can be placed using . Component tool, the dialog for
selecting components is shown in Fig. 2.27. For common components like resistors and
capacitors, one can alternatively use the shortcut buttons in the dock widget.
Finally one use the . Wire tool to connect the components together. The completed
circuit schematic is shown in Fig. 2.28.
40
2.2. Simulate a Diode Recti ier Circuit .
.
Figure 2.27: Dialog for Selecting Circuit Components.
41
2.3. A 0.18um MOSFET .
We click the . Run Simulation tool to start the simulation. The monitoring and analysis
procedure is similar to that in the previous example. In the result spread-sheet, we plot
the columns probe1pos and v1pos, using time as the x-variable. The waveform plot is
shown in the Fig. 2.30.
Figure 2.30: The Voltage of the Sine Source and the Voltage Probe, as Functions of Time.
Summary
In this section, we outlined the procedure of simulating devices in circuit. This integrated
approach allows one to combine the accuracy of device simulation with the power of
SPICE circuit simulation.
A 0.18um MOSFET
The files of this example are located at VisualTCAD/examples/MOSFET.
42
2.3. A 0.18um MOSFET .
.
Building MOSFET Device Structure
As in the previous diode example, we shall start with drawing the device structure of the
MOSFET transistor. We first draw the outline of the device with the . Add Rectangle
and . Add Polyline tools, as shown in Fig. 2.31.
To draw a polyline or polygon, one can use the .polyline tool. Single-click to add a point
Polyline Tool
to the line, double-click to add the last point of the line. If the first point and the last point
coincide, a polygon is formed. To cancel the unfinished polyline, click the .right mouse
button.
In some cases, it is desirable to enter the exact coordinates of the points of a line. For
Exact Coordinates
Input
example, the thickness of the gate oxide of this MOSFET is 4nm, making it difficult to
locate the corners of the gate electrode using a mouse. Therefore, we draw the electrode
by keying in the exact coordinates.
We first enter the polyline tool. In the status bar, a coordinates input area appears, as
shown in Fig. 2.32. After one enters the x- and y-coordinates in the blanks, and click
the .enter button, a point is added to the polyline. One can similarly use this function in
other drawing tools.
Some times one desire to make a copy of an object, or make a mirror image of an ob-
Clone and Mirror
ject. For example, the side-wall spacers around the gate of the MOSFET transistor are
symmetrical, so one hope to draw one of them and make the other by mirroring. The
. Clone , . MirrorX and . MirrorY tools can help you on these tasks.
One then label each region, assign a name and a material to it. Optionally, one can
Labelling Material
Regions
set a mesh-size constraint to each region. The regions are shown in Fig. 2.33, and the
parameters for the regions are listed in Table 2.1.
43
2.3. A 0.18um MOSFET .
.
Region Material Mesh Size/um
substrate Silicon 0.05
Source Al 0.04
Drain Al 0.04
Gate NPolySi 0.1
Substrate Al 0.05
spc1 Nitride 0.1
spc2 Nitride 0.1
Table 2.1: Regions of the MOSFET transistor.
One then define the doping profiles in the MOSFET. The position of the doping boxes
Doping Pro iles
are shown in Fig. 2.34 and the doping profile parameters shown in Table 2.2.
44
2.3. A 0.18um MOSFET .
To make sure the mesh in the MOSFET channel region is fine enough, we use the
Mesh Grid
. Mesh size constrain tool to apply two constraints, shown in cyan color in Fig. 2.35.
After two refinements, the final mesh is generated. We save the mesh to a .tif file for
further simulations.
45
2.3. A 0.18um MOSFET .
.
Figure 2.36: Simulation setup for calculating the Id-Vg curve of the MOSFET.
We submit the simulation for running, and shall observe that the drain voltage is first
ramped up from 0 to 0.1 V, before the actual gate voltage scan begins. This drain ramp-
up is necessary to ensure the convergence of the simulation.
After running the simulation, we obtain the spreadsheet containing the terminal volt-
age/current information in the sweep. We plot the drain current against the gate voltage,
and obtain the Id-Vg curve shown in Fig. 2.37.
One can also visualize the electron concentration in the device, as shown in Fig. 2.38.
46
2.3. A 0.18um MOSFET .
It might be interesting to click the . Play tool-button to play the animation, and watch
the change of electron density as gate voltage increases.
47
2.3. A 0.18um MOSFET .
We can now run the simulation again, and observe the change to the Id-Vg curve, as a
result of the change in the mobility model.
48
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Mix-Mode Simulation of Inverter IO Circuit
As in the previous cmos simulation, we can create a device structure of inverter and do
Mix-Mode simulation. So we need draw a structure of inverter, the detail step refer to
mosfet structure building(Example 3: Building MOSFET Device Structure, on page 58),
here we omit the drawing structure step. About this example we need draw a inverter
symbol, then use VisuaTCAD to do Mix-Mode simulation.
We can combine the semiconductor device simulation with SPICE circuit simulation.
This section shows the steps to demonstrate the output characteristic of Inverter. The
files of this tutorial are located at VisualTCAD/examples/Inverter.
Now we can obtain the child window of drawing symbol, as shown in Fig. 2.41. First
input the symbol name, then add the line or circles, in the process user can using En-
able/disabled grid snapping mode as needed.
49
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Figure 2.41: Inverter symbol.
When we finish the symbol drawing, we need add the pin of the symbol to connect with
other device of the circuit, here we need 4 pins, named PIN_VDD, PIN_GND, PIN_IN,
PIN_OUT, the pin name is must begin with PIN_. the drawing process and is shown in
Fig. 2.42.
50
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Last step for drawing the symbol is define the reference attribute. About the inverter
device here we choose the value N, and it stands for Numerical Device.
Which can use in Mix-Mode simulation. The child window is shown in Fig. 2.43.
Our 2D inverter structure is shown in Fig. 2.44. Here total have 8 electrodes, we need
connect each 2 electrodes like Fig. 2.44, finally we have 4 electrodes as our symbol of
inverter.
51
2.4. Mix-Mode Simulation of Inverter IO Circuit .
52
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Figure 2.47: Choose the contact to interconnect.
53
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Figure 2.49: Interconnect Floating setting.
When we finish the boudary setting and interconnect setting, we need change the Sim-
ulation Mode to Circuit Element, Since this is a four-terminal device, the default circuit
symbol with four pins is displayed, as shown in Fig. 2.50. We want a more suitable
symbol for the inverter, so we click Change Symbol, we change the symbol to we have
edited before, as shown in Fig. 2.51.
54
2.4. Mix-Mode Simulation of Inverter IO Circuit .
.
Then we must map the four device electrodes to the four pins in the circuit symbol, as
shown in Fig. 2.52. We save to the file named inverter.sim.
Mixed-Mode Simulation
When we finfish the device setting, we need open a new circuit Schematic window and do
circuit simulation,then choose . Numerical Device menu to draw our inverter symbol
and click . Component menu to draw Voltage source, we can click corresponding menu
to add Voltage Probe, Ground and Wire. The final circuit is shown in Fig. 2.53.
We want to do DC sweep Mode simulation, so we setup the sweep setting with the
. Setup Simulation tool and . Solver Options tool, as shown in Fig. 2.54.
55
2.5. Scripting and Automation .
.
Figure 2.54: Simulation condition setting and solver Options setting.
We click the . Run Simulation tool to start the simulation. The monitoring and analysis
procedure is similar to that in the previous example. In the result spreadsheet, we plot
the columns Output Voltage and Input Voltage, using Input Voltage as the x-variable.
The waveform plot is shown in the Fig. 2.55.
.Device Outline , .Assigning Material Regions , .Placing Doping Profiles and .Meshing ,
etc. in the GUI, to draw the device structure step by step. If the structure is complicated,
this process will take some time to complete. It would be okay to do this once, but if you
are to build several MOSFET devices, identical in all respects but different gate lengths, the
repetion becomes a burden.
56
2.5. Scripting and Automation .
.
To set you free from the tedious work, VisualTCAD provides scripting functionality in
several modules, which, among other things, can generate the device structure automat-
ically. More importantly, one does not have to write the scripts from scratch. In the
case of device drawing, after one drew a first device strucuture in GUI, he can export the
drawn structure to a script file. One then use this generated script file as the template,
and with minor modifications, run the script to generate new device structures.
The scripting language in VisualTCAD is Python, which is a general purpose program-
ming language with many useful libraries and utilities. In this section, we shall see some
examples on scripting in a few modules of VisualTCAD.
Let us look at the script file for details. In the following code segment, we first insert a
curve group at position 0 (first group), which may contain a set of curves.
We then define two arrays of numbers, xData and yData. One observe that they have the
same number of items, and the corresponding items follow the relation = 2 . The next
two commands define some curve properties such as a color, line style and symbol style,
and assign a title to the curve. Finally, we insert the curve to group 0, and at position 0
in the group. The two numerical arrays are used as - and -coordinates of the curve.
## insert Group 0 1
plot.insertCurveGroup(0,'Group','') 2
3
# Curve 0 in Group 0 4
xData = [0,0.5,1,1.5,2,2.5] 5
yData = [0,0.25,1,2.25,4,6.25] 6
properties = {'hasLine':1,'lineColor':'#ff0000', 7
'lineStyle':1,'lineWidth':1,'hasSymbol':0, 8
'symbolColor':'#000000','symbolStyle':1, 9
'symbolSize':6,'symbolFilled':1} 10
title = 'y=x^2' 11
plot.insertCurve(0,0,xData,yData,title,properties) 12
The following two lines illustrates how to use the list constructing syntax of Python to
define two numerical arrays for plotting the function = 2 .
57
2.5. Scripting and Automation .
.
xData = [i*pi/6 for i in xrange(13)] 1
yData = [sin(x) for x in xData] 2
Example 2: Spreadsheet
After creating a new Spreadsheet window, we choose in the menu .Spreadsheet Run
Script to run the spreadsheet.py script, the result is shown in Fig. 2.57.
Some explanation of the script follows. The function setColumnData is for setting entries
of a column using the data in a numerical array. In this example, we define an array
colData and assign it to column 0.
One can apply mathematical expression (coded in Python) to the data of some columes,
and assign the result to a column. The following segment shows how to calculate the
absolute value of the sum of the first two columns, and assign it to the 3rd column in the
spreadsheet.
# calc Column 1
spreadsheet.calcColumn(2, "abs(cols[1]+cols[2])"); 2
One can get and set title of columns with the getColumnName and setColumnName functions,
and save the spreadsheet to a file using the saveToFile function.
58
2.5. Scripting and Automation .
.
Figure 2.58: Script build the MOSFET device structrure.
The first section of the script consists of commands to draw outlines of the device. As an
example, in the following segment, we define a polygon with the coordinates of its corner
points. Note that the last point coincide with the first, so that it forms a closed polygon.
Then we add the polygon the the device structure using the function addPolyLineItem:
# PolyLineItem (#0) 1
points = (-400,0),(400,0),(400,1000),(-400,1000),(-400,0) 2
device2d.addPolyLineItem(points) 3
The second section defines the material regions of the device. As shown below, each
region must have a label and a material name. A point in the region ( pos ) is used to
identify among the many regions in the structure. Optionally, one can set mesh area
constraint and assign a color. Finally, the region label is added to the device with the
function addRegionLabelItem.
# RegionLabelItem 'Gate' (#44) 1
label = 'Gate' 2
material = 'NPolySi' 3
pos = (1.77778,-92.8889) 4
areaConstrain = 10000 5
color = '#cc71585' 6
device2d.addRegionLabelItem(label,material,pos,areaConstrain,color) 7
The next section of the code defines mesh-size-control items. We wish to divide the
segment (-80,60)-(80,60) by at least 8 mesh grids. We add this constraint with the ad-
dMeshSizeCtrlItem function, as shown below.
# MeshSizeCtrlItem (#116) 1
division = 8 2
points = (-80,60),(80,60) 3
device2d.addMeshSizeCtrlItem(division,points) 4
One important step is to set the doping profiles in the device. In the following lines,
we define the source LDD doping profile, which has a gaussian distribution function.
The profile attributes such as baseline, depth, normal direction, characteristic lengths, xy
ratio, label of the profile, peak doping concentration, doping type, and doping species,
must be set. The doping profile is then added with the function addDopingProfileItem.
# DopingProfileItem 'LDD_S' (#134) 1
attributes = {'label':'LDD_S','type':'Gauss', 2
'property':'Nd', 3
'n.peak':2e+19,'polarity':1.0, 4
'baseline_center':(-250,0), 5
'baseline_length':300.0, 6
59
2.5. Scripting and Automation .
.
'depth':10.0, 'unit_normal':(0,1), 7
'xy.ratio':1.0,'y.char':20.0} 8
device2d.addDopingProfileItem(attributes) 9
We can save the completed device structure to file. A mesh is needed for simula- tion,
and the doMesh function is invoked for this purpose. Finally, we export the mesh in the
TIF format so that it can be used in simulations.
## save to file 1
device2d.saveToFile('/home/user/example/mosfet.drw'); 2
3
## do mesh 4
device2d.doMesh() 5
6
## export mesh 7
device2d.exportMesh('/home/user/example/mosfet.tif'); 8
This involves two modules in VisualTCAD, spreadsheet and plotting, and the script must
operate at the global scope, using the mainwindow object mw. We open this script file in
VisualTCAD's text editor, and run it with the menu item Tools . Run as Python Script.
The script first opens the simulated IV data p18/result.dat and p18vd2/result.dat in two
spreadsheet windows, using the openDocumentFromFile function. User will need to mod-
ify the path to the data filename. Then it creates a new plotting window.
# open spreadsheet file 1
file = '/home/user/p18/result.dat' 2
mw.openDocumentFromFile(file) 3
4
# open spreadsheet file 5
file = '/home/user/p18vd2/result.dat' 6
mw.openDocumentFromFile(file) 7
8
plotA = mw.newWindow("Plot","plot2") 9
The windows are numbered, we obtain the spreadsheet with the getWindowByNumber func-
tion, and read data from it. The curve is then added to the plotting window, as we have
done in the first example.
60
2.5. Scripting and Automation .
.
# insert Curve 1 in Group 0 1
2
spreadsheet = mw.getWindowByNumber(2); 3
Xdata = spreadsheet.getColumnData(3) 4
Ydata = spreadsheet.getColumnData(2) 5
properties = {'hasLine':1,'lineColor':'#ff0000', 6
'lineStyle':1, 'lineWidth':1,'hasSymbol':1, 7
'symbolColor':'#ff00ff', 'symbolStyle':0, 8
'symbolSize':6,'symbolFilled':1} 9
title = 'vds=0.2V' 10
plotA.insertCurve(0,1,Xdata,Ydata,title,properties) 11
One can use scripts to operate on more windows to automate TCAD simulation and data
analysis, as in the testMainWindow.py script, and the result is shown in Fig. 2.60.
Summary
With these examples we illustrated how one can use scripting for generating the device
structure, plotting the 2D curves and manipulating spreadsheets, etc. Through scripting,
one can save much time and increase the efficiency of TCAD simulation and analysis.
61
CHAPTER
3 . GUI Reference
Device Drawing
Structure Drawing
Menu Icon Description
Adding Geometry Item
.Add Point . Add a point item to the drawing.
.Add Polyline . Add a polyline item to the drawing.
.Add Rectangle . Add a rectangle item to the drawing, which will be converted to
a closed polyline item.
.Add Arc . Add a circle arc item to the drawing.
.Add Circle . Add a circle item to the drawing.
.Add Spline . Add a spline item to the drawing.
Selecting Objects
.Select Object . Select a graph item (polyline, rectangle, arc, etc.), a label or a
mesh-size-constraint item. This also switches to the solid editing
mode for moving objects.
.Select Point . Select a vertex point. This also switches to the rubber-band
editing mode for moving vertices.
62
3.1. Device Drawing .
.
General Editing Operations
.Edit Properties . Edit properties (e.g. coordinates of polygon of the current
drawing item. vertices).
.Make a Clone . Make a copy of the selected drawing items.
.Mirror Horizontally . Flip the current drawing item in the horizontal direction.
.Mirror Vertically . Flip the current drawing item in the vertical direction.
.Move points . Enter the corner point editing mode. User can select a vertex in
the highlighted polygon and move the vertex.
Polygon Properties
Dialog
63
3.1. Device Drawing .
.
Figure 3.1: Polygon Property Editing Dialog.
# Description
if neccessary, divide the dialog items into a few categories.
1 x- and y-coordinates of the first corner point of the polygon.
2 Coordinates of the last corner point of a polygon must coincide with the first corner.
64
3.1. Device Drawing .
.
Figure 3.2: Add Region Label.
# Description
1 Inputs the name of the region label, each region has one name, it can not be reused.
2 Selects the material for the region from genius material library, more than 50
choices.
3 Selects the symbol color for the region.
4 Sets the maxmum mesh size for the region material.
5 Selects the doping species, it can introduce uniform doping profile for the region.
# Description
1 Inputs the boundary label name, its properties can be set in boudary command.
2 Selects the symbol color for the boundary.
65
3.1. Device Drawing .
.
Edit properties
# Description
1 x- and y-coordinates of the first corner point of the polygon, double click to change
the coordinate value.
2 Coordinates of the last corner point of a polygon must coincide with the first corner.
66
3.1. Device Drawing .
.
Menu Icon Description
Profiles and Mesh Settings
.Add Doping Profile . Add a impurity doping (donor or acceptor) profile to the devic
.Add Mole Fraction Profile . Add a mole fraction profile for the compound semiconductor
material in the device.
.Set Mesh Size Constraint . Add a mesh size contraint item to the device.
Meshing
.Do Mesh . Generate a mesh for the device.
.Refine Existing Mesh . Refine the existing mesh.
.Mesh Quality Statistics Show statistics on the mesh quality.
.Mesh 3D View Show 3D visualization of the mesh and doping profile.
.Delete Existing Mesh . Destory the existing mesh grid.
Input/Output
.Save Mesh to File . Save the generated mesh to a file in TIF format.
.Run Python Script Run a device drawing Python script.
.Export Python Script Export the procedures to draw the present device as a Python
script.
VisualTCAD provide total 4 kinds of doping profiles recently, including Uniform Doping
Add Doping Pro ile
Profile, Gaussian Doping Profile, Erf Doping Profile and Dataset Doping Profile etc.
Gaussian Doping
Pro ile
67
3.1. Device Drawing .
.
# Description
1 Inputs Doping Profile name.
2 Chooses Doping Species: Donor or Acceptor.
3 Inputs Concentration of Doping Profile, two styles to choose: concentration peak or
Total Dose.
4 Characteristic Length, two styles to choose: Y Characteristic Length or Doping
Concentration at depth, the Distance to doping Box parameter is a relative depth to
the edge of bound rectangle. The doping setting has 4 groups total, but the
combination of Total Dose and Doping Concentration is invalid.
5 Sets XY Ratio, the value is equal to X.char/Y.char.
6 Gaussian Doping Profile, in the bound region the doping profile is uniform
distribution and out of the bound region the doping profile is gaussian distribution.
68
3.1. Device Drawing .
.
Figure 3.7: Gaussian Doping Profile.
69
3.1. Device Drawing .
.
Figure 3.8: Erf Doping Profile.
Chooses profile dataset style, total 3 kinds of dataset doping: only 1D, only 2D and Both.
Dataset Doping Pro ile
# Description
1 Inputs Doping Profile name.
2 Chooses Doping Species: Donor or Acceptor.
3 About only 1D option, importing the one-dimension doping data, it incuding 2
columns, first column is coordinate and its unit is $\nMeter$, the second column is
doping concentration and its unit is $\ICubic\cMeter$. the doping data can come
from the opened data file or look for the data file by the data path.
4 When VisualTCAD introduces the data from the data file, VisualTCAD needs
interpolation the mesh point data, the default linear interpolation, here provides the
logarithmic interpolation, also.
5 In the bound rectangle region introduces one-dimension dataset file, the baseline
from point1 to point2 is the begin of the one-dimention doping data,the end of
doping profile is expanded to the edge of the box, out of the bound region has none
doping distribution.
6 Erf Doping Profile, in the bound region the doping profile is uniform distribution
and out of the bound region the doping profile is erf distribution.
70
3.1. Device Drawing .
.
# Description
1 About only 2D option, importing the two-dimension doping data, it incuding 3
columns, first column is x-coordinate and its unit is $\nMeter$, the second column is
y-coordinate and its unit is $\nMeter$, the third column is doping concentration and
its unit is $\ICubic\cMeter$. the value of the rectangle has been changed to 0, it
means only the baseline from point 1 to point 2 is significative, VisualTCAD makes
the center of the baseline as the 2D doping origin, the doping data file introduces the
two-dimension doping profile from the center of the baseline to the doping
coordinate of the doping file, the x-coordinate positive direction is left direction.
71
3.1. Device Drawing .
.
Linear mole Fraction
Pro ile # Description
1 Inputs the linear mole fraction profile name.
2 Inputs the range of mole fraction profile.
3 The linear mole fraction profile is introduced to the bound rectangle region from the
baseline to the end of the bound rectangle.
72
3.1. Device Drawing .
.
Figure 3.11: Both 1D&2D Dataset Doping Profile.
73
3.1. Device Drawing .
.
Figure 3.12: Linear Mole Fraction Profile.
74
3.1. Device Drawing .
.
Figure 3.13: Gaussian Mole Fraction Profile.
Do mesh
# Description
1 The minimum angle constraint of the triangle mesh is from 15 to 32 degree, the
triangle angle is wider the mesh quality is better, but at the same time the rate of
generating mesh is become slow.
Re ine
75
3.1. Device Drawing .
#
1
2
.
Description
Figure 3.15: Refine.
Calculates the doping Gradient and Specifies the refinement is based on the
specified quantity logarithm.
Refinement the mesh in doping Gradient greater than or equal to an order of
magnitude, here the range of doping Gradient is from 1 to 5.
Mesh Statistics
# Description
1 Statsitics the mesh point number, triangle number, mesh size and mesh quality etc.
2 Statistics the disposition of the triangle angle.
Mesh 3D view
76
3.1. Device Drawing .
#
.
Description
Figure 3.17: Mesh 3D view.
1 User can rotate the structure in the windows and view in any visual angle.
# Description
1 Chooses the file's saving path.
2 Inputs the file name and save the mesh structure file.
Run Python
77
3.1. Device Drawing .
#
.
Description
Figure 3.19: Run Python.
Export Python
# Description
1 Chooses the file's saving path.
2 Inputs the file's name and saves the python deck file.
Device View
78
3.2. Device Simulation .
.
Menu Icon Description
Device View
.Fit to View . Center the device drawing, and scale it to fit the screen size.
.Center Origin Point . Center the screen at the origin of the device coordinates.
.Zoom In . Zoom in, with the point under the mouse cursor fixed in view.
.Zoom Out . Zoom out, with the point under the mouse cursor fixed in view.
.Ruler . Add a ruler item for measure the linear distance between two
points.
Device Simulation
Simulation Setting
Menu Icon Description
Simulation Setting
.Load . Open a structure file.
.Resistive Metal Turn on the resistive metal model (new in 1.7.1).
.Run . Running the device simulation.
.Write Deck File Save the device simulation configuration to a directory, which
will contain the command file (.inp) and mesh file.
Solve (.cgns) and data files (if needed).
.Time Control . Time parameters in Transient simulation.
.Sweep Control DC sweep parameters in DC Steady-state simulation.
.Boundary Condition . Boundary and Contact settings of the device.
Load
# Description
1 Chooses the exist structure file's path.
2 Selects the structure file and open it.
79
3.2. Device Simulation .
When the device exist the boundary of the metal, user should be set it to "Soder pad"
Resistive Metal
Boundary and open the ".Resistive Metal " button before load the device structure in the
".Device Simulation " window.
# Description
1 Choose boundary tool.
2 Add boundary label (Anode and Cathode).
80
3.2. Device Simulation .
#
1
2
.
Description
Figure 3.23: Change boundary setting.
In ".Device Simulation " window, load the mesh, and click "Boundary Settings".
Click ".More . . " to see the full list.
3 Change from "Neumann" to "Ohmic" and "Solder pad" boundary conditions,
respectively.
Run simulation
# Description
1 When user runs the simulation, VisualTCAD will remind user to save the simulation
settings before running it.
81
3.2. Device Simulation .
.
Time Control
# Description
1 For transient simulation, the time control setting needs set start time, step time, stop
time and Maxmum step time etc.
2 Other options, user can choose to set maxmum voltage step.
# Description
1 Clicks to choose the boundary.
2 Chooses the contact type, total includes many types, here chooses the ohmic contact.
3 Sets ohmic contact parameters, some contact have no parameters, such as Neumann
boundary.
4 Sets boundary z width, the priority is higer than global z width setting.
82
3.2. Device Simulation .
physical model
. Figure 3.27: Boundary condition.
# Description
1 Sets global parameter, temperature and z width parameters.
2 Chooses the physical equations, including Basic Drift-diffusion equations,
Drift-diffusion equations with lattice heating and Energy-balanced drift-diffusion
equations. Here chooses Basic Drift-diffusion equations.
83
3.2. Device Simulation .
# Description
1 Sets physical model of silicon material and other materials choosing the default
model.
2 Carrier statistics, chooses Boltzmann distribution or Fermi-Dirac distribution.
Energy balance equaption, When the Energy-Balance equation solver is selected in
the METHOD command, this parameter selectively enables the equations for lattice
temperature, electron temperature and hole temperature.
3 Transverse E-Field, Use effective surface electric field for carrier mobility
calculation at insulator-semiconductor interface. Longitudinal, Synonym to
Mobility.Force. When H.Mob is enabled, this parameter selects the driving field
used in high-field mobility calculation.
4 When ImpactIonization is enabled, this parameter selects the driving field used in
impact ionization coefficient calculation. including Qf Gradient, E dot J, E along
mesh-edge and simple E field.
5 Activates the Band-to-Band Tunneling (BBT) generation, and selects whether the
BBT generation should be calculated with the local model or the non-local model.
Only the local model is currently implemented. Whether the Carrier trapping is
enables.
# Description
1 Sets material model of silicon material and other materials choosing the default
model.
2 Basic model, including Default model only.
3 Basic model, user can modify the parameter of the model by clicking the right
button Add Property and input the paramenter Name and Value. User can inputs
print as the parameter Name and 1 as the Value, then runs the simulation, all
parameters setting of the selected model are printed in Log file.
4 Other Material model, using the same method, user can modify other model by
modifying the model parameters, the model including Band, Impact, Mobility,
Optical, Thermal and Trap.
84
3.2. Device Simulation .
Solver Options
# Description
1 Chooses the number of processor of simulation.
2 Chooses the maxmum iterations, the default setting is 30.
3 Chooses whether using update damping and sets potential damping factor.
4 Selects the element truncation strategy used in simulation, including Always
truncate, Never truncate and truncate at boundary.
5 Selects the linear solver algorithm, including Direct(MUMPS), Direct(SuperLU),
iterative(BCGS+ASM) and iterative(BCGS+ILU).
85
3.3. Circuit Schematics .
.
Circuit Schematics
Place Circuit Component
Menu Icon Description
device setting
.Component Add a Spice component (compact model) to the circuit.
.Numerical Device Add a numerical device to the circuit, for mix-mode simulation.
Common Circuit Components
.Ground . GND.
.Resistor . Add a resistor component.
.Capacitance . Add a capacitor component.
.Inductance . Add an inductor component.
Probe
.Voltage Probe . Add a voltage probe to the circuit, for monitoring voltage
difference between two circuit nodes.
.Current Probe . Add a current probe to the circuit, for monitoring current
through a circuit branch.
Connection
.Wire . Add wirings to the circuit.
Component
# Description
1 According to user need to select component.
2 Simple description of the component.
3 Component preview window.
86
3.3. Circuit Schematics .
.
Numerical Device
# Description
1 Load the device component file's path.
2 Selects the device component file and opens it.
Simulation Control
Menu Icon Description
Circuit simulation setting
.Simulation Setup Choosing the analysis type and setting analysis parameters.
.Solver Options . Numerical solver paramters, including Number of Processors in
parallel simulation.
.Run Simulation . Start the simulation.
.Check Netlist Check the validity of the circuit netlist.
.View Netlist Viewing the netlist file (in SPICE format).
.Write Deck Files Save the circuit simulation to a direcotry, which contains the
circuit netlist, Genius command file, mesh file and other data
files (if needed).
Setup Simulation
87
3.3. Circuit Schematics .
.
Figure 3.34: Setup simulation transient analysis.
# Description
1 Selects the analysis type, Here choosing transient simulation type.
2 Sets the transient simulation condition.
3 Initial operator point analysis options, including the number of ramp-up steps of the
bigest. nonzero External Source by Attach statement, the maxmum voltage steps,
initial value of Gmin stepping and target of Gmin stepping. The perpose of the
initial setting is making the simulation more convergence.
88
3.3. Circuit Schematics .
.
Figure 3.35: Setup simulation DC sweep analysis.
# Description
1 Selects the analysis type, here choosing DC Sweep simulation type.
2 Selects the sweep variable.
3 Selects the sweep component and sets the sweep range.
# Description
1 Selects the analysis type, here choosing AC Sweep simulation type.
2 Selects the AC sweep step spacing linear or logarithmic and sets the sweep range.
# Description
1 Selects the analysis type, here choosing Operation Point simulation type.
2 Here no settings are needed.
89
3.3. Circuit Schematics .
.
Figure 3.36: Setup simulation AC sweep analysis.
Check netlist
# Description
1 When user finishes the circuit schematic, user need check the netlist, when it is OK,
user can run the circuit simulation.
90
3.3. Circuit Schematics .
.
Figure 3.37: Setup simulation operation point analysis.
View netlist
# Description
1 According to the circuit schematic, VisualTCAD generates the netlist automatically,
the netlist file includes circuit components and wire connection etc.
91
3.4. Device Visualization .
.
Figure 3.39: View netlist.
Result Analysis
Menu Icon Description
Simulation Results
.Load Spice Raw File . Open the simulated waveform in a spreadsheet window.
.Plot Probe Wave . Plot the waveform of voltage and current probes.
Schematic View
Menu Icon Description
Schematics View
.Fit to View . Move the schematics to center and scale it to the fit the screen
size.
.Center Origin Point . Move the schematics to center.
.Zoom In . Zoom in.
.Zoom Out . Zoom out.
Device Visualization
92
3.4. Device Visualization .
.
View
Menu Icon Description
General Options
.Switch Background Color . Toggle the screen background color between black and white.
.Inverse Y of View Point Toggle the direction of the y-axis between up and down.
Camera Options
.Reset View . Reset camera position, orientation and focal parameters.
.View at +X . View the device from the direction of +x axis.
.View at -X . View the device from the direction of -x axis.
.View at +Y . View the device from the direction of +y axis.
.View at -Y . View the device from the direction of -y axis.
.View at +Z . View the device from the direction of +z axis.
.View at -Z . View the device from the direction of -z axis.
Draw
Menu Icon Description
Device Drawing
.Draw Device Region . Plot the regions in the device structure.
.Draw Device Material . Plot the materials in the device structure.
.Draw Device Boundary . Plot the boundary and interfaces in the device structure.
.Draw Mesh . Plot the mesh elements in the device structure.
Device Variable Plotting
.Draw Pseudo Color . Draw a pseudo color plot of the selected variable.
.Draw Contour . Draw a contour line (surface) plot of the selected variable.
.Draw Vector . Draw a vector plot of the selected variable.
93
3.5. Spreadsheet .
.
Spreadsheet
Menu Icon Description
Spreedsheet Operation
.Insert Row . Insert one row in the spreadsheet.
.Insert Column . Insert one column in the spreadsheet.
.Delete Row . Delete the selected rows in the spreadsheet.
.Delete column . Delete the selected columns in the spreadsheet.
.Plot Column . Plot the data in selected columns.
.Calculator . Use mathematical calculator to calculate data entries in the
selected column.
Scripting
.Run Python Script Run a spreadsheet Python script.
Plot column
# Description
1 User need select at least two columns and set one column data as x-axis data column.
Calculator
# Description
1 VisualTCAD offers calculate function, user can obtain the expression.
2 The calculate data come from the column data.
3 The expression can include the function of VisualTCAD offers, including absolute
value calculate and square calculate etc.
94
3.6. XY Plotting .
XY Plotting
Menu Icon Description
Plot Data Source
Insert Curve . Insert curve in the current group.
.Insert Group . Insert group in the plot.
.Delete . Delete the selected curve or group.
Edit Plot Properties
.Edit Axis Properties . Edit the axis properties, e.g. the axis scale, range and tick marks.
.Edit Curve Properties . Edit the curve properties, eg. the line style, symbol style and
color.
.Palette Manager Edit the plot curve style palletes.
Input/Output
.Run Python Script Run a Python for curve plotting.
.Export Python Script Export the current plot to a python script file.
Insert Curve
95
3.6. XY Plotting .
#
.
Description
Figure 3.42: Insert curve.
1 User can insert several curve to one plot, the x- and y-variable come from the open
any data file. the left window is for choosing the x-variable and only can choose one
column data.
2 The right window is for choosing y-variables, user can choose several column data
as y variables at the same time.
# Description
1 User can edit the plot axis properties, inputs the left y-axis title.
2 Selects the Axis Scale type, linear scale, logarithmic scale etc.
3 Inputs the range of value of the axis.
96
3.7. Text Editor .
#
1
.
Description
Figure 3.44: Edit Curve Properties.
User can edit each curve properties and slect each line axis style.
2 Selects each curve line and symbol style.
Palette Manageer
# Description
1 VisualTCAD offers 7 palettes for user.
2 User can edit new palette.
3 User can edit new curves of the selected palette and restore default palettes.
Text Editor
97
3.7. Text Editor .
.
Search
Menu Icon Description
.Find Search a string in the text.
.Find Next Go to the next match in the text.
.Find Previous Go to the previous match in the text.
.Replace Replace the matched string.
Find
# Description
1 Inputs the find text.
2 Selects the properties.
Replace
# Description
1 Inputs the find text.
2 Inputs the replace text.
3 Selects the properties.
98
3.7. Text Editor .
.
Options
Menu Icon Description
Spreedsheet
.Syntax HighLight Mode Highlight the text with the selected syntax mode, eg.Genius,
Spice,Python,XML or no-highlight.
.Font Settings Font settings of the text window.
Font Settings
# Description
1 Selects the font.
2 Selects the font style.
3 Selects the font size.
4 Other effects.
Tools
Menu Icon Description
Simulation Tools
.Run As Genius Deck Run Genius device simulator with the curent file as the
command input.
.Run As SPICE Deck Run SPICE circuit simulator with the current file as the circuit
deck.
.Run As Python Script Run the text file as a Python Script.
99
CHAPTER
4 Programming Reference
.
Device2D Drawing
Class Device2DScript
The Device2DScript exposes APIs for device2d drawing in python language.
Method scriptType
scriptType() 1
Method addPolyLineItem
addPolyLineItem(points) 1
points list, a list of points which to build a poly line. For example, points = (-400,0),
Arguments
(400,0), (400,1000), (-400, 1000), addPolyLineItem(points) will draw line((-400,0), (400,0)),
line((400,0), (400,100)), line((400, 1000), (-400,1000)).
Method addRegionLabelItem
addRegionLabelItem(label,materail, pos, areaConstrain=0.01, strColor="#ffb6c1") 1
Method addRegionDoping
addRegionDoping(label,property, concentration) 1
100
4.1. Device2D Drawing .
.
concentration double, concentration of region.
Method addRegionMoleFraction
addRegionMoleFraction(label, x, y=-1.0) 1
y double, y fraction.
Method addDataset
addDataset(xList, yList, vList, dsName="") 1
Method addDataset
addDataset(type, filename) 1
attr list, a list of name and value pair for profile item.
Arguments
Method addMoleFractionItem
addMoleFractionItem(attr) 1
attr list, a list of name and value pair for mole fraction item.
Arguments
Method addBoundaryItem
addBoundaryItem(label, segment, strColor="#ff0000") 1
101
4.1. Device2D Drawing .
.
Method addMeshSizeCtrlItem
addMeshSizeCtrlItem(division, points) 1
Method addRulerItem
addRulerItem(points) 1
Method addPointItem
addPointItem(point) 1
Method doMesh
doMesh( optimization = 1, meshCmd = "pzADenQq30", max_d=3.0, signed_log=true) 1
max_d double.
signed_log bool.
Method exportMesh
exportMesh( filename) 1
Method clear
clear() 1
Method saveToFile
saveToFile(filename) 1
filename string, filename to save file, which can be relative or absolute filename,
Arguments
if relateive, save in current directory where program is running.
Method setTitle
setTitle( title) 1
102
4.2. Curve Plot .
.
Curve Plot
PlotScript
The PlotScript exposes APIs for curve ploting in python language.
Method scriptType
scriptType( ) 1
Method curveGroupCount
curveGroupCount( ) 1
Method curveCountAt
curveCountAt( group) 1
Method insertCurveGroup
insertCurveGroup( pos, groupTitle="Group", groupPalette = QString()) 1
Method removeCurveGroup
removeCurveGroup( int pos) 1
Method setGroupTitle
setGroupTitle( group, title) 1
Method insertCurve
insertCurve( group, pos, xData, yData, title = "curve", properties = QVariant()) 1
103
4.3. SpreadSheet .
.
group int, index of curve group.
Arguments
pos int, index of curve in curve group.
Method clear
clear() 1
Method saveToFile
saveToFile( filename) 1
Method setTitle
setTitle( title) 1
SpreadSheet
Class SpreadSheetScript
The SpreadSheetScript class exposes APIs for spreadsheet operations in python lan-
guage.
Method scriptType
scriptType() 1
Method getColumnName
getColumnName( column) 1
Method getColumnData
getColumnData( column) 1
104
4.3. SpreadSheet .
.
column int, index of column, index from 0.
Arguments
Return data in column.
Returns
Method insertRows
\GSyntax{insertRows}( row, count) 1
Method insertColums
insertColums( column, count) 1
Method setColumnData
setColumnData( column, data) 1
Method setColumnName
setColumnName( column, name) 1
Method calcColumn
calcColumn( column, expression) 1
Method saveToFile
saveToFile( filename) 1
Method setTitle
setTitle( title) 1
105
4.4. MainWindow .
.
Method clear
clear() 1
MainWindow
Class MainWindowScript
The MainWindowScript class exposes APIs for operations in top level in python lan-
guage.
Method scriptType
scriptType() 1
Method openDocumentFromFile
openDocumentFromFile( filename) 1
Method saveAllToFile
saveAllToFile( filepath) 1
Method newWindow
newWindow( type, title) 1
Method getWindowByName
getWindowByName( subWindowName) 1
Method getWindowByNumber
getWindowByNumber( number) 1
106
4.4. MainWindow .
.
If find a subwindow which has index \GSyntax {\GSyntax {number}},
Arguments
return a pointer which point to it , else return NULL.
107
CHAPTER
Introduction
Cogenda-Visual Two-Dimension (CV2D) is part of the VisualFab modeling environ-
ment, it is used for physical simulation results visualizing in one dimension and two
dimension. CV2D can be used in GUI or script model.
Getting Started
CV2D can be started in two methods:
Type below command to launch CV2D directly:
source /usr/local/cogenda/current/bin/setenv.sh
VisualTCAD -c commands.py -m cv2d
Type below command to open VisualTCAD first, Then click the down arrow but-
ton and select .2D Visual in Fig. 5.1 to open CV2D.
source /usr/local/cogenda/current/bin/setenv.sh
VisualTCAD &-c commands.py -m cv2d
108
5.3. Fundamental Usage .
.
Fundamental Usage
Plot Page
CV2D plot page mainly includes plot panel and tool bar (Fig. 5.2). Plot panel
can display 1D and 2D plots, one also can create new 1D plots with cutline on the
existing 2D plot.
Tool bar
.Load File load new plot data, it is shortcut for .File- .Open in menu bar.
.Select after click this button, use left mouse to select one or multiple panel.
Two-Dimension plots
One-Dimension plots
109
CHAPTER
CV2D Module
The command is case sensitive, and the parameter is not case sensitive.
File IO Methods
Method: cv2d.addFile(name, alias)
Load one device structure file or one data file into CV2D.
addFile() accepts the following arguments:
Arguments
name: string. Opened file's absolute path list, files(be opened in panels) list, one can
open one or more files. Default value none. Unit none.
alias: string (optional). One can give the panel(open file) an alias name. Default value
none. Unit none.
none
Return Value
Examples
1 # add single files from relative current path
2 cv2d.addFile(name = "bpsg.tif", alias = "bpsg")
3
4 # add multiple files from relative current path
5 cv2d.addFile(name = "bpsg.tif", alias = "bpsg")
6 cv2d.addFile(name = "electrode.tif", alias = "electrode")
7
8 # add multiple files from absolute path
9 cv2d.addFile(name = "/home/cv2d_command/bpsg.tif", alias = "bpsg")
10 cv2d.addFile(name = "/home/cv2d_command/electrode.tif", alias = "electrode")
11
12 # add multiple files from pre-defined absolute path
13 file1 = "/home/cv2d_command/bpsg.tif"
14 file2 = "/home/cv2d_command/electrode.tif"
15
16 cv2d.addFile(name = file1, alias = "bpsg")
17 cv2d.addFile(name = file2, alias = "electrode")
Method: cv2d.exportData()
Export cutline data.
110
6.1. CV2D Module .
.
cv2d.exportCutlineData() accepts the following arguments:
Arguments
name: string. Name for the cutline.
filePath: string. Save data path and name. Default none. Unit none.
none
Return Value
Examples
1 # export data with specified name.
2 cv2d.selectPanel(name = cutline1)
3 dataFiles = cv2d.exportData(name = cutline1[0], filePath="./cutline1.dat")
Method: cv2d.exportImage()
Export single image.
cv2d.exportImage() accepts the following arguments:
Arguments
name: string. Name of the selected panel. Default none. Unit none.
alias: string (option). Alias of the selected panel. Default none. Uint none.
filePath: string. Save image path and name. Default none. Unit none.
none
Return Value
Examples
1 # export file1 panel with name "mesh.png"
2 cv2d.exportImage(name=file1, filePath="./mesh.png")
3
4 # export "bpsg" alias panel with name "mesh.png"
5 cv2d.exportImage(alias="bpsg", filePath="./mesh.png")
Method: cv2d.selectAll()
Select all panels as current used.
selectAll() no arguments:
Arguments
none
Return Value
Examples
1 # select all panels and draw cutline
2 cv2d.selectAll()
3
4 cutAliasName = "VDMOS_Cutline1"
5 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
Method: cv2d.createPanel()
Select one or more panel.
createPanel() accepts the following arguments:
Arguments
alias: string (optional). Set new panel name. Default none. Unit none.
none
Return Value
111
6.1. CV2D Module .
.
Examples
1 # create new panel, and panel name is "NEW".
2 cv2d.createPanel()
3
4 # create new panel and set panel name "FOX".
5 v2d.createPanel(alias="FOX")
Examples
1 # close single panel
2 cv2d.closePanel(name=files)
3
4 # close single panel
5 cv2d.closePanel(alias="bpsg")
Method: cv2d.closeAll()
Delete all files, and close all panels.
cv2d.closeAll() no arguments:
Arguments
none
Return Value
Examples
1 # close all panels
2 cv2d.closeAll()
Examples
1 # select one panel according to name
2 cv2d.selectPanel(name=file1)
112
6.1. CV2D Module .
.
3
4 # select one panel according to alias
5 cv2d.selectPanel(alias="aa")
Method: cv2d.selectAll()
Select all panels as current used.
selectAll() no arguments:
Arguments
none
Return Value
Examples
1 # select all panels and draw cutline
2 cv2d.selectAll()
3
4 cutAliasName = "VDMOS_Cutline1"
5 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
Method: cv2d.addRuler()
Add ruler box and set property.
cv2d.addRuler() accepts the following arguments:
Arguments
color: string. Color of the ruler. Default white. Unit none. The color can be selected
with RGB color table, or word such as ``Black''.
startPoint: string. The upper left corner coordinate. Default none. Unit none.
endPoint: string. The bottom right corner coordinate. Default none. Unit none.
none
Return Value
Examples
1 # add one ruler box with color white, box pper left corner (4.5,-52) and bottom right
corner (7,-50)
2 cv2d.addRuler(startPoint=(4.5,-52), endPoint=(7,-50), color="#ff0000")
3
4 # add multi ruler
5 cv2d.addRuler(startPoint=(4.5,-52), endPoint=(7,-50), color="#ff0000")
6 cv2d.addRuler(startPoint=(4.5,-42), endPoint=(3.5,-32), color="#ff0000")
Method: cv2d.addLine()
Add line and set property.
cv2d.addLine() accepts the following arguments:
Arguments
color: string. color of the line. Default white. Unit none.
startPoint: string. The upper left corner coordinate. Default none. Unit none.
endPoint: string. The bottom right corner coordinate. Default none. Unit none.
startArrowLength: number. Start arrow length. Default 12. Unit um.
startArrowAngle: number. Start arrow angle. Default 20. Unit degree.
showStartArrow: logic. Show start arrow. Default false. Unit none.
endArrowLength: number. End arrow length. Default 12. Unit um.
endArrowAngle: number. End arrow angle. Default 20. Unit degree.
113
6.1. CV2D Module .
.
showEndArrow: logic. Show end arrow. Default false. Unit none.
width: number. Line width. Default 0. Unit none.
style: string. Line style. Default SolidLine. Unit none.
none
Return Value
Examples
1 # add line and set width and style
2 cv2d.addLine(startPoint=(4.5,-48), endPoint=(7,-50), color="#ff0000", width=2, style=
"SolidLine")
Method: cv2d.addLabel()
Add label and set property.
cv2d.addLabel() accepts the following arguments:
Arguments
name: string. Label name. Default none. Unit none.
fontSize: string (option). Font size of the name. Default 9. Unit none.
color: string. color of the label. Default white. Unit none.
pos: string. Position of the label. Default none. Unit none.
none
Return Value
Examples
1 # add label with name "Mesh", coler "#ff0000" and placed at point (4,-10)
2 cv2d.addLabel(name="Mesh", pos=(4,-10), color="#ff0000")
Method: cv2d.addCutline()
Add cutline and generate new plot panel.
cv2d.addCutline() accepts the following arguments:
Arguments
alias: string (option). Alias of the selected panel. Default none. Unit none.
type: string. Set cutline type. Absolute or Relative. Default Absolute. Unit none.
startPoint: string. Set cutline start point. Default none. Unit none.
endPoint: string. Set cutline end point. Default none. Unit none.
none
Return Value
Examples
1 # add cutline will generate new plot for "NetDoping", set the new plot panel alias
name = cutAliasName
2 cv2d.selectField(name = "NetDoping")
3 cutAliasName = "VDMOS_Cutline1"
4 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
Method: cv2d.mergePanel()
Merge multi panels curve into one existing panel.
cv2d.mergePanel() accepts the following arguments:
Arguments
name: string. Name of the multi files. Default none. Unit none.
114
6.1. CV2D Module .
.
alias: string. Alias of the multi files. Default none. Unit none.
none
Return Value
Examples
1 # merge panel
2 cv2d.addFile(name=files)
3 cv2d.mergePanel(name=files)
Method: cv2d.maximizePanel()
Maximize panel view.
cv2d.maximizePanel() accepts the following arguments:
Arguments
name: string. Name of the selected panel to be maximized. Default none. Unit none.
alias: string(option). Alias of the selected panel to be maximized. Default none. Unit
none.
none
Return Value
Examples
1 # maximize file1 panel.
2 cv2d.maximizePanel(name = file1)
3
4 # maximize panel with alias "bpsg".
5 cv2d.maximizePanel(alias="bpsg")
Examples
1 # set viwe background color, foreground color and legend size
2 cv2d.setViewSetting(backGroundColor="#ffffff", foregroundColor="#000000", legendSize=
"small")
Method: cv2d.setTransform()
Set window transformation.
115
6.1. CV2D Module .
.
cv2d.setTransform() accepts the following arguments:
Arguments
xRange: number. X range of the transformation, that is the start point and end point of
X. Default none. Unit none.
yRange: number. Y range of the transformation, that is the start point and end point of
Y Default none. Unit none.
none
Return Value
Examples
1 # set window transform within x range 0 to 7.5, and y range -54.5 to -59.5
2 cv2d.setTransform(xRange=(0,7.5),yRange=(-54.5,-49.5))
Method: cv2d.setStyle()
Set plot property.
cv2d.setStyle() accepts the following arguments:
Arguments
showRegion: logic. show region. Default 1 (true). Unit none.
showMesh: logic. show mesh. Default 0 (false). Unit none.
showBound: logic. show bound. Default 0 (false). Unit none.
showPN: logic. show pn junction. Default 0 (false). Unit none.
showField: logic. show field list. Default 0 (false). Unit none.
none
Return Value
Examples
1 # show region and mesh
2 cv2d.setStyle(showMesh = 1, showRegion=1)
3
4 # show region and PN
5 cv2d.setStyle(showRegion=1, showPN=1)
6
7 # show region and field
8 cv2d.setStyle(showRegion=1, showField=1)
Method: cv2d.setFieldLegendStyle()
Set field legend style.
cv2d.setFieldLegendStyle() accepts the following arguments:
Arguments
name: string. Name of the selected fields. Default none. Unit none.
backGroundColor: string. Background color of the legend. Default Black. Unit none.
foreGroundColor: string. Foreground color of the legend. Default White. Unit none.
framed: logic. Set background color transparent or not. Default false. Unit none.
none
Return Value
Examples
1 # set field legend backGroundColor and foregroundColor, and show legend frame.
2 cv2d.setStyle(showField = 1)
3 cv2d.selectField(name = "NetDoping")
116
6.1. CV2D Module .
.
4 cv2d.setFieldLegendStyle(name="NetDoping", backGroundColor="#ff00ff", foregroundColor
="#191970", Framed=1)
Method: cv2d.setFieldStyle()
Set field style.
cv2d.setFieldStyle() accepts the following arguments:
Arguments
name: string. Name of the selected fields. Default none. Unit none.
show: logic. Show the field or not. Default false. Unit none.
range: string. Field value range. Default is from min to max of the selected value. Unit
none.
fullColorMap: logic. Using fullColorMap mode or not. Default 1. Unit none.
inside: logic. Set field range between the specified min and max, otherwise outside the
min and max. Default true. Unit none.
showLegend: logic. Show legend or not. Default 1. Unit none.
value: string. Set rainbow value. Default value 10. Unit none.
showLine: logic. Enable line mode or not. Default 0. Unit none.
showFill: logic. Enable fill mode or not. Default 1. Unit none.
showIsoLine: logic. Enable Isoline mode or not. Default 0. Unit none.
isoLineValue: string. Set isoline value. Default is the min of the field range. Unit none.
isoLineColor: string. Set isoline color. Default White. Unit none.
scaleFactor: string. Set scale factor. Default 1. Unit none.
monochromeColor: string. Enable monochromeColor mode. Default false. Unit none.
scale: string. Select scale mode (Linear, Log|X|, or SignedLog). Default Log|X|. Unit
none.
gradual: string. Select gradual mode (RainBow, Black to White, or White to Black).
Default RainBow. Unit none.
component: string. Select component of the vector or tensor, if name is vector, can be
"X", "Y", if name is tensor, can be "XX", "XY", "YX", "YY", "Major", "Minor".
Default none. Unit none.
none
Return Value
Examples
1 # set "NetDoping" field style.
2 cv2d.setStyle(showField = 1)
3 cv2d.selectField(name = "NetDoping")
4 cv2d.setFieldStyle(name="NetDoping", scale="signedLog", gradual="Rainbow", value=20,
isolineValue=19.5, showIsoline=1, fullcolormap=1, range=(-22, 23) )
Method: cv2d.selectField()
Select current field.
cv2d.selectField) accepts the following arguments:
Arguments
name: string. Name of the selected fields. Default none. Unit none.
none
Return Value
Examples
117
6.1. CV2D Module .
.
1 # select "NetDoping"field
2 cv2d.selectField(name = "NetDoping")
3
4 # select multiple field "NetDoping", "Na" and "Nd"
5 cv2d.selectField(name = ("NetDoping", "Na", "Nd"))
Method: cv2d.setRegionStyle()
Set selected region style.
cv2d.setRegionStyle accepts the following arguments:
Arguments
name: string. Name of the selected region. Default none. Unit none.
showMesh: logic. Show the mesh. Default 1. Unit none.
showRegion: logic. Show selected region. Default 1. Unit none.
showField: logic. Show field. Default 1. Unit none.
showBound: logic. Show bound. Default 1. Unit none.
color: string. Set mesh color. Default is the value defined in the material color table.
Unit none.
meshColor: string. Set mesh color. Default Black. Unit none.
none
Return Value
Examples
1 # Disable mesh for "silicon1" region.
2 cv2d.setRegionStyle(name="silicon1", showMesh=0)
3
4 # show "polysilicon1" region, and set region color.
5 cv2d.setRegionStyle(name="polysilicon1", showRegion=1, showMesh=0, showField=0,
showBound=0, color="#ff0000")
Method: cv2d.setPNJunctionStyle()
Set selected region style.
cv2d.setPNJunctionStyle() accepts the following arguments:
Arguments
showLine: logic. Show PN junction with line mode. Default 1. Unit none.
lineColor: string. Set line color. Default White. Unit none.
lineWidth: string. Set linewidth. Default 0. Unit none.
lineStyle: string. Set line style. Default SolidLine. Unit none.
showFill: logic. Show PN junction with fill mode. Default 0. Unit none.
pColor: string. Set p type region color. Default Blue. Unit none.
nColor: string. Set n type region color. Default Magenta. Unit none.
none
Return Value
Examples
1 # show PN junction with line, and set line stype "SolidLine", line width 6 and line
color "#EE00EE".
2 cv2d.setPNJunctionStyle(showline=1, linestyle='SolidLine', lineWidth=6, lineColor="#
EE00EE")
3
118
6.1. CV2D Module .
.
4 # show PN junction with fill mode, and p type region color "#EE00EE", n type region
color "#ff0000".
5 cv2d.setPNJunctionStyle(showline=0, showfill=1, pcolor="#EE00EE", ncolor="#ff0000")
Method: cv2d.setDepletionEdgeStyle()
Set depletion region style.
cv2d.setDepletionEdgeStyle() accepts the following arguments:
Arguments
showLine: logic. Show depletion edge with line mode. Default 0. Unit none.
lineColor: string. Set line color. Default White. Unit none.
lineWidth: string. Set linewidth. Default 0. Unit none.
lineStyle: string. Set line style. Default solidLine. Unit none.
showFill: logic. Show depletion edge with fill mode. Default 0. Unit none.
fillColor: string. Set depletion region fill color. Default Gray. Unit none.
none
Return Value
Examples
1 # show depletion region with fill mode.
2 cv2d.setStyle(showPN = 1)
3 cv2d.setDepletionEdgeStyle(showFill=1, fillColor="#000000")
4
5 # show depletion region with line mode.
6 cv2d.setStyle(showPN = 1)
7 cv2d.setDepletionEdgeStyle(showLine=1, lineColor="#000000", lineStyle = "SolidLine",
lineWidth = 8 )
Method: cv2d.setMaterialLegendStyle()
Set material legend style.
cv2d.setMaterialLegendStyle() accepts the following arguments:
Arguments
backGroundColor: string. Background color of the legend. Default Black. Unit none.
foreGroundColor: string. Foreground color of the legend. Default White. Unit none.
framed: logic. Set background color transparent or not. Default false. Unit none.
none
Return Value
Examples
1 # set material legend.
2 cv2d.setMaterialLegendStyle(backgroundColor="#8E8E38", foregroundColor="#4876FF",
framed=1)
Method: cv2d.setMaterialStyle()
Set material style.
cv2d.setMaterialStyle() accepts the following arguments:
Arguments
name: string. Name of the selected material. Default none. Unit none.
color: string. Set material. Default is the value defined in the material color table. Unit
none.
119
6.1. CV2D Module .
.
none
Return Value
Examples
1 # set different color for "PolySi", "Si" and "SiO2".
2 cv2d.setMaterialStyle(name="PolySi", color="#000000")
3 cv2d.setMaterialStyle(name="Si", color="#ffff00")
4 cv2d.setMaterialStyle(name="SiO2", color="#ff0000")
Method: cv2d.setPlotProperty()
Set plot property.
cv2d.setPlotProperty() accepts the following arguments:
Arguments
titleColor: string. Color of the plot panel title.
titleWidth: string. Font width of the title. Default 9. Unit none.
legendwidth: string. Legend font width. Default 9. Unit none.
showBound: logic. Show plot bound. Default 0. Unit none.
showRegion: logic. Show structure region. Default 1. Unit none.
leftScale: string. Set left Y axis scale. Default Linear. Unit none.
rightScale: string. Set right Y axis scale. Default Linear. Unit none.
bottomScale: string. Set bottom X axis scale. Default Linear. Unit none.
topScale: string. Set top Y axis scale. Default Linear. Unit none.
topScale: string. Set top Y axis scale. Default Linear. Unit none.
leftTitle: string. Set left Y axis title. Default none. Unit none.
righTitle: string. Set right Y axis title. Default none. Unit none.
bottomTitle: string. Set bottom X axis title. Default none. Unit none.
topScale: string. Set top Y axis title. Default none. Unit none.
grid: logic. Show grid line. Default 0. Unit none.
leftGrid: logic. Show left Y axis grid line. Default 1. Unit none.
rightGrid: logic. Show right Y axis grid line. Default 0. Unit none.
topGrid: logic. Show top X axis grid line. Default 1. Unit none.
bottomGrid: logic. Show bottom X axis grid line. Default 0. Unit none.
leftFineGrid: logic. Show left Y axis fine grid line. Default 0. Unit none.
rightFinegrid: logic. Show right Y axis fine grid line. Default 0. Unit none.
topFinegGid: logic. Show top X axis fine grid line. Default 0. Unit none.
bottomFineGrid: logic. Show bottom X axis fine grid line. Default 0. Unit none.
leftMinor: string. Set left axis minor division. Default 5. Unit none.
rightMinor: string. Set right axis minor division. Default 5. Unit none.
topMinor: string. Set top Y axis minor division. Default 5. Unit none.
bottomMinor: string. Set bottom Y axis minor division. Default 5. Unit none.
leftMajor: string. Set left axis major division. Default 8. Unit none.
rightMajor: string. Set right axis major division. Default 8. Unit none.
topMajor: string. Set top Y axis major division. Default 8. Unit none.
bottomMajor: string. Set bottom Y axis major division. Default 8. Unit none.
none
Return Value
Examples
1 # show with Log|x| (Linear/Signed Log)scale and grid on left Y axis.
2 cv2d.setPlotProperty(titleColor="#ff0000", titleWidth=20,
120
6.1. CV2D Module .
.
3 legendWidth=20, showBound=1, leftScale="Log|x|",
4 lefttitle="log(Na,Nd,TotalDoping[cm-3])", grid=1)
5
6 # show on right Y axis.
7 cv2d.setCurveStyle(index=0, xvariable="Y", yvariable=["Na","Nd","NetDoping"],
8 xaxis="xBottom", yaxis="yRight",
9 showline="0", showsymbol="1", symbolColor="#ff0000", symbolWidth="10",
symbolType="Star2")
10
11 cv2d.setPlotProperty(titleColor="#ff0000", titleWidth=20,
12 legendWidth=20, showBound=1, rightScale="Log|x|",
13 righttitle="log(Na,Nd,TotalDoping[cm-3])", grid=1)
Method: cv2d.setLayout()
Set panel layout arrangement.
cv2d.setLayout() accepts the following arguments:
Arguments
layout: string. Name for the layout arrangement ("H" or "V").
none
Return Value
Examples
1 # add two files, set transform, show mesh, then set layout vertically or Horizontally
.
2 files = ("./bpsg.tif","./electrode.tif")
3 aliasFiles = ("e8_1", "e8_2")
4
5 cv2d.addFile(name=files, alias=aliasFiles)
6
7 cv2d.selectPanel(alias=aliasFiles)
8
9 cv2d.setTransform(xRange=(0,7.5),yRange=(-54.5,-49.5))
10
11 cv2d.setStyle(showMesh=1)
12
13 cv2d.setLayout(layout="V")
14
15 cv2d.setLayout(layout="H")
Method: cv2d.addCurve()
Add curve index.
cv2d.addCurve() accepts the following arguments:
Arguments
name: string. Name of the data file. Default none. Unit none.
xVariable: string. X axis variable. Default none. Unit none.
yVariable: string. Y axis variable. Default none. Unit none.
xAxis: string. Selected top or bottom X axis.Default one. Unit none.
yAxis: string. Selected left or right Y axis.Default one. Unit none.
showLine: logic. Enable line mode. Default 1. Unit none.
showSymbol: logic. Enable symbol mode. Default 1. Unit none.
lineColor: string. Set line color. Default none (the color loops in the color table). Unit
none.
lineWidth: string. Set line width. Default 0. Unit none.
121
6.1. CV2D Module .
.
lineStyle: string. Set line style. Default SolidLine. Unit none.
symbolColor: string. Set symbol color. Default none (the color loops in the color table).
Unit none.
symbolWidth: string. Set line width. Default 0. Unit none.
symbolStyle: string. Set symbol style. Default SolidLine. Unit none.
none
Return Value
Examples
1 # add one curve and plot on right Y axis.
2 files =( "../bpsg.tif", "../output.sub.ivl")
3
4 aliasFile = "example6"
5 ivlFile = "ivl6"
6
7 cv2d.addFile(name=files[0], alias=aliasFile)
8 cv2d.addFile(name=files[1],alias=ivlFile)
9
10 cv2d.selectPanel(alias=aliasFile)
11 cutAliasName = "VDMOS_Cutline1"
12 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
13
14 cv2d.selectPanel(name = cutline1)
15
16 cv2d.addCurve(name="../output.sub.ivl", xvariable="I(drain)", yvariable="V(drain)",
yAxis='yRight',
17 showsymbol="1", symbolColor="#ff0000", symbolWidth="10", symbolType="Star2")
Method: cv2d.addFamily()
Add family curve index.
cv2d.addFamily() accepts the following arguments:
Arguments
name: string. Name of the family data file. Default none. Unit none.
xVariable: string. X axis variable. Default none. Unit none.
yVariable: string. Y axis variable. Default none. Unit none.
xAxis: string. Selected top or bottom X axis.Default one. Unit none.
yAxis: string. Selected left or right Y axis.Default one. Unit none.
showLine: logic. Enable line mode. Default 1. Unit none.
showSymbol: logic. Enable symbol mode. Default 1. Unit none.
lineColor: string. Set line color. Default none (the color loops in the color table). Unit
none.
lineWidth: string. Set line width. Default 0. Unit none.
lineStyle: string. Set line style. Default SolidLine. Unit none.
symbolColor: string. Set symbol color. Default none (the color loops in the color table).
Unit none.
symbolWidth: string. Set line width. Default 0. Unit none.
symbolStyle: string. Set symbol style. Default SolidLine. Unit none.
none
Return Value
Examples
1 # add one curve and plot on right Y axis.
122
6.1. CV2D Module .
.
2 files = ("../bpsg.tif","../electrode.tif")
3
4 aliasFiles = "e9_1, e9_2"
5 cv2d.addFile(name=files, alias=aliasFiles)
6
7 cv2d.selectPanel(alias=aliasFiles)
8
9 cv2d.setStyle(showField=1)
10 cv2d.selectField(name="NetDoping")
11
12 cutAliasName = "Cutline_e9_1_2"
13 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
14
15 cv2d.selectPanel(alias=cutAliasName)
16
17 cv2d.setPlotProperty(grid=1)
18
19 cv2d.addFamily(name=cutline1, xvariable="Y", yvariable="Na",
20 xaxis="xTop", yaxis="yRight",
21 showline="0", showsymbol="1", symbolColor="#ff0000", symbolWidth="10",
symbolType="Star2")
Method: cv2d.setCurveStyle()
Set curve style.
cv2d.setCurveStyle() accepts the following arguments:
Arguments
index: index for the data array.
yVariable: list for Y axis.
xAxis: string. Selected top or bottom X axis.Default one. Unit none.
yAxis: string. Selected left or right Y axis.Default one. Unit none.
showLine: logic. Enable line mode. Default 1. Unit none.
showSymbol: logic. Enable symbol mode. Default 1. Unit none.
lineColor: string. Set line color. Default none (the color loops in the color table). Unit
none.
lineWidth: string. Set line width. Default 0. Unit none.
lineStyle: string. Set line style. Default SolidLine. Unit none.
symbolColor: string. Set symbol color. Default none (the color loops in the color table).
Unit none.
symbolWidth: string. Set line width. Default 0. Unit none.
symbolStyle: string. Set symbol style. Default SolidLine. Unit none.
none
Return Value
Examples
1 # set curve style
2 files =( "../bpsg.tif", \
3 "../output.sub.ivl")
4
5 aliasFile = "example6"
6 ivlFile = "ivl6"
7
8 cv2d.addFile(name=files[0], alias=aliasFile)
9 cv2d.addFile(name=files[1],alias=ivlFile)
10
123
6.1. CV2D Module .
.
11 cv2d.selectPanel(alias=aliasFile)
12
13 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
14
15 cv2d.selectPanel(name = cutline1)
16
17 flag = cv2d.exportData(name = cutline1[0], filePath="../cutline1.dat")
18
19 cv2d.setCurveStyle(index=0, xvariable="Y", yvariable=["Na","Nd","NetDoping"],
20 xaxis="xTop", yaxis="yRight",
21 showline="0", showsymbol="1", symbolColor="#ff0000", symbolWidth="10",
symbolType="Star2")
Method: cv2d.setFamilyStyle()
Set family curve style.
cv2d.setFamilyStyle() accepts the following arguments:
Arguments
index: index for the data array.
yVariable: list for Y axis.
xAxis: string. Selected top or bottom X axis.Default one. Unit none.
yAxis: string. Selected left or right Y axis.Default one. Unit none.
showLine: logic. Enable line mode. Default 1. Unit none.
showSymbol: logic. Enable symbol mode. Default 1. Unit none.
lineColor: string. Set line color. Default none (the color loops in the color table). Unit
none.
lineWidth: string. Set line width. Default 0. Unit none.
lineStyle: string. Set line style. Default SolidLine. Unit none.
symbolColor: string. Set symbol color. Default none (the color loops in the color table).
Unit none.
symbolWidth: string. Set line width. Default 0. Unit none.
symbolStyle: string. Set symbol style. Default SolidLine. Unit none.
none
Return Value
Examples
1 # set family style after add a family.
2 files = ("../bpsg.tif","../electrode.tif")
3
4 aliasFiles = ("e9_1", "e9_2")
5 cv2d.addFile(name=files, alias=aliasFiles)
6
7 cv2d.selectPanel(alias=aliasFiles)
8
9 cv2d.setStyle(showField=1)
10 cv2d.selectField(name="NetDoping")
11
12 cutAliasName = "Cutline_e9_1_2"
13 cutline1 = cv2d.addCutline(alias=cutAliasName, endpoint=(5,-30), startPoint=(5,-50))
14
15 cv2d.selectPanel(alias=cutAliasName)
16
17 cv2d.setPlotProperty(grid=1)
18
19 index1=cv2d.addFamily(name=cutline1, xvariable="Y", yvariable="Na",
124
6.1. CV2D Module .
.
20 xaxis="xTop", yaxis="yRight",
21 showline=(True, False), showsymbol="1", symbolColor="#ff0000", symbolWidth="10",
symbolStyle="Star2")
22
23 cv2d.setFamilyStyle(index=index1, name=cutline1[0], xaxis="xBottom", yaxis="yLeft",
24 showline="0", showsymbol="0", symbolColor="#f5f000" ,symbolWidth="10",
symbolStyle="Star2")
125