Svisual Ug
Svisual Ug
Guide
Version H-2013.03, March 2013
Copyright and Proprietary Information Notice
Copyright © 2013 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary
information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and
may be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may
be reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise, without
prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to
determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Trademarks
Synopsys and certain Synopsys product names are trademarks of Synopsys, as set forth at
http://www.synopsys.com/Company/Pages/Trademarks.aspx.
All other product or company names may be trademarks of their respective owners.
Synopsys, Inc.
700 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com
Script Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
list_cutlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
list_cutplanes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
list_datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
list_fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
list_files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
list_materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
list_movie_frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
list_plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
list_regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
list_streamlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
list_variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
load_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
load_file_datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
load_library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
load_script_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
move_plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
overlay_plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
probe_curve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
probe_field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
reload_datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
reload_files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
remove_curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
remove_cutlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
remove_cutplanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
remove_datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
remove_plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
remove_streamlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
reset_settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
rotate_plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
select_plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
set_axis_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
set_band_diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
set_best_look. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
set_camera_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
set_curve_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
set_field_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
set_grid_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
set_legend_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
set_material_prop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
set_plot_prop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
set_region_prop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
set_value_blanking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
set_window_full . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
set_window_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
show_msg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
start_movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
stop_movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
undo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
unload_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
windows_style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
zoom_plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
ifm::GetMOSWeights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
ifm::GetNoiseStdDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
ifm::GetQQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
ifm::GetsIFMStdDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
ifm::GetSNM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
ifm::GetSRAMVTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
ifm::ReadCSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
ifm::ReadsIFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
ifm::SetInfoDef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
ifm::WriteCSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Audience
This user guide is intended for users of the Sentaurus Visual software package.
Related Publications
For additional information about Sentaurus Visual, see:
■ The TCAD Sentaurus release notes, available on SolvNet (see Accessing SolvNet on
page xii).
■ Documentation available through SolvNet at https://solvnet.synopsys.com/DocsOnWeb.
Typographic Conventions
Convention Explanation
{} Braces
[] Brackets
() Parentheses
Bold text Identifies a selectable icon, button, menu, or tab. It also indicates the name of a field or an
option.
Courier font Identifies text that is displayed on the screen or that the user must type. It identifies the
names of files, directories, paths, parameters, keywords, and variables.
Italicized text Used for emphasis, the titles of books and journals, and non-English words. It also
identifies components of an equation or a formula, a placeholder, or an identifier.
Key+Key Indicates keyboard actions, for example, Ctrl+I (press the I key while pressing the Control
key).
Menu > Command Indicates a menu command, for example, File > New (from the File menu, select New).
Customer Support
Customer support is available through SolvNet online customer support and through
contacting the Synopsys support center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and answers to frequently
asked questions about Synopsys tools. SolvNet also gives you access to a wide range of
Synopsys online services, which include downloading software, viewing documentation, and
entering a call to the Synopsys support center.
To access SolvNet:
1. Go to the SolvNet Web page at https://solvnet.synopsys.com.
2. If prompted, enter your user name and password. (If you do not have a Synopsys user name
and password, follow the instructions to register with SolvNet.)
If you need help using SolvNet, click Help on the SolvNet menu bar.
************************************************************************
Boost 1.43.0
License: Boost Software License, version 1.0
Source/Licensor: http://www.boost.org/
************************************************************************
Permission is hereby granted, free of charge, to any person or organization obtaining a copy of
the software and accompanying documentation covered by this license (the "Software") to use,
reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative
works of the Software, and to permit third-parties to whom the Software is furnished to do so,
all subject to the following:
The copyright notices in the Software and this entire statement, including the above license
grant, this restriction and the following disclaimer, must be included in all copies of the
Software, in whole or in part, and all derivative works of the Software, unless such copies or
derivative works are solely in the form of machine-executable object code generated by a
source language processor.
************************************************************************
CPPTCL 1.1.3
License: Modified Boost Library
Source/Licensor: http://cpptcl.sourceforge.net/
************************************************************************
//
// Copyright (C) 2004-2006, Maciej Sobczak
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// This software is provided "as is" without express or implied
// warranty, and with no claim as to its suitability for any purpose.
//
I have copied this wording from one of the source files of the Boost library.
************************************************************************
DejaVu Fonts 2.33
License: Subject to multiple licenses
Source/Licensor: http://dejavu-fonts.org/
************************************************************************
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of
Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts
accompanying this license ("Fonts") and associated documentation files (the "Font Software"),
to reproduce and distribute the Font Software, including without limitation the rights to use,
copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons
to whom the Font Software is furnished to do so, subject to the following conditions:
The above copyright and trademark notices and this permission notice shall be included in all
copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular the designs of
glyphs or characters in the Fonts may be modified and additional glyphs or characters may be
added to the Fonts, only if the fonts are renamed to names not containing either the words
"Bitstream" or the word "Vera".
This License becomes null and void to the extent applicable to Fonts or Font Software that has
been modified and is distributed under the "Bitstream Vera" names.
The Font Software may be sold as part of a larger software package but no copy of one or more
of the Font Software typefaces may be sold by itself.
Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream
Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in
this Font Software without prior written authorization from the Gnome Foundation or
Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts
accompanying this license ("Fonts") and associated documentation files (the "Font Software"),
to reproduce and distribute the modifications to the Bitstream Vera Font Software, including
without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the
Font Software, and to permit persons to whom the Font Software is furnished to do so, subject
to the following conditions:
The above copyright and trademark notices and this permission notice shall be included in all
copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular the designs of
glyphs or characters in the Fonts may be modified and additional glyphs or characters may be
added to the Fonts, only if the fonts are renamed to names not containing either the words
"Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts or Font Software that has
been modified and is distributed under the "Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but no copy of one or more
of the Font Software typefaces may be sold by itself.
Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising
or otherwise to promote the sale, use or other dealings in this Font Software without prior
written authorization from Tavmjong Bah. For further information, contact: tavmjong@free. fr.
************************************************************************
ImageMagick 6.7.4
License: ImageMagick License
Source/Licensor: http://imagemagick.com/script/index.php
************************************************************************
Before we get to the text of the license, lets just review what the license says in simple terms:
* freely download and use ImageMagick software, in whole or in part, for personal, company
internal, or commercial purposes;
* link code under a different license against a library under this license;
* extend patent grants to any code using code under this license;
* use any marks owned by ImageMagick Studio LLC in any way that might state or imply that
ImageMagick Studio LLC endorses your distribution;
* use any marks owned by ImageMagick Studio LLC in any way that might state or imply that
you created the ImageMagick software in question.
* include a copy of the license in any redistribution you may make that includes ImageMagick
software;
* provide clear attribution to ImageMagick Studio LLC for any distributions that include
ImageMagick software.
* include the source of the ImageMagick software itself, or of any modifications you may have
made to it, in any redistribution you may assemble that includes it;
* submit changes that you make to the software back to the ImageMagick Studio LLC (though
such feedback is encouraged).
* you may include ImageMagick on a DVD as long as you comply with the terms of the
license;
* you can give modified code away for free or sell it under the terms of the ImageMagick
license or distribute the result under a different license, but you need to acknowledge the use
of the ImageMagick software;
The legally binding and authoritative terms and conditions for use, reproduction, and
distribution of ImageMagick follow:
1. Definitions.
License shall mean the terms and conditions for use, reproduction, and distribution as defined
by Sections 1 through 9 of this document.
Licensor shall mean the copyright owner or entity authorized by the copyright owner that is
granting the License.
Legal Entity shall mean the union of the acting entity and all other entities that control, are
controlled by, or are under common control with that entity. For the purposes of this definition,
control means (i) the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this
License.
Source form shall mean the preferred form for making modifications, including but not limited
to software source code, documentation source, and configuration files.
Object form shall mean any form resulting from mechanical transformation or translation of a
Source form, including but not limited to compiled object code, generated documentation, and
conversions to other media types.
Work shall mean the work of authorship, whether in Source or Object form, made available
under the License, as indicated by a copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
Derivative Works shall mean any work, whether in Source or Object form, that is based on (or
derived from) the Work and for which the editorial revisions, annotations, elaborations, or other
modifications represent, as a whole, an original work of authorship.
For the purposes of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative
Works thereof.
Contribution shall mean any work of authorship, including the original version of the Work and
any modifications or additions to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or
Legal Entity authorized to submit on behalf of the copyright owner.
For the purposes of this definition, "submitted" means any form of electronic, verbal, or written
communication sent to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and issue tracking
systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and
improving the Work, but excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as Not a Contribution.
Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a
Contribution has been received by Licensor and subsequently incorporated within the Work.
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to
reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and
distribute the Work and such Derivative Works in Source or Object form.
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to
make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such
license applies only to those patent claims licensable by such Contributor that are necessarily
infringed by their Contribution(s) alone or by combination of their Contribution(s) with the
Work to which such Contribution(s) was submitted.
If You institute patent litigation against any entity (including a cross-claim or counterclaim in
a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes
direct or contributory patent infringement, then any patent licenses granted to You under this
License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof in any
medium, with or without modifications, and in Source or Object form, provided that You meet
the following conditions:
* You must give any other recipients of the Work or Derivative Works a copy of this License;
and
* You must cause any modified files to carry prominent notices stating that You changed the
files; and
* You must retain, in the Source form of any Derivative Works that You distribute, all
copyright, patent, trademark, and attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of the Derivative Works; and
* If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative
Works that You distribute must include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not pertain to any part of the
Derivative Works, in at least one of the following places:
within a NOTICE text file distributed as part of the Derivative Works;
within the Source form or documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and wherever such third-party
notices normally appear.
The contents of the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that You
distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such
additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional
or different license terms and conditions for use, reproduction, or distribution of Your
modifications, or for any such Derivative Works as a whole, provided Your use, reproduction,
and distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in
the Work by You to the Licensor shall be under the terms and conditions of this License,
without any additional terms or conditions. Notwithstanding the above, nothing herein shall
supersede or modify the terms of any separate license agreement you may have executed with
Licensor regarding such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks, service marks, or
product names of the Licensor, except as required for reasonable and customary use in
describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and
each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES
OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation,
any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks associated with Your
exercise of permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence), contract, or
otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or
agreed to in writing, shall any Contributor be liable to You for damages, including any direct,
indirect, special, incidental, or consequential damages of any character arising as a result of this
License or out of the use or inability to use the Work (including but not limited to damages for
loss of goodwill, work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses), even if such Contributor has been advised of the possibility of
such damages.
While redistributing the Work or Derivative Works thereof, You may choose to offer, and
charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/
or rights consistent with this License. However, in accepting such obligations, You may act
only on Your own behalf and on Your sole responsibility, not on behalf of any other
Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless
for any liability incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
To apply the ImageMagick License to your work, attach the following boilerplate notice, with
the fields enclosed by brackets "[]" replaced with your own identifying information (don’t
include the brackets). The text should be enclosed in the appropriate comment syntax for the
file format. We also recommend that a file or class name and description of purpose be included
on the same "printed page" as the copyright notice for easier identification within third-party
archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the ImageMagick License (the "License"); you may not use this file except
in compliance with the License. You may obtain a copy of the License at
http://www.imagemagick.org/script/license.php
Unless required by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License.
************************************************************************
Mesa 6.5.3 and X11 drivers
License: MIT
Source/Licensor: http://www.mesa3d.org/
************************************************************************
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
************************************************************************
muParser 1.27
License: MIT
Source/Licensor: http://muparser.sourceforge.net/
************************************************************************
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
************************************************************************
SGI GLU Library and Ext. headers (glext.h) (glxext.h)
License: SGI Free B
Source/Licensor: http://oss.sgi.com
************************************************************************
Copyright (C) [dates of first publication] Silicon Graphics, Inc. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice including the dates of first publication and either this permission
notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be included in all copies or
substantial portions of the Software.
Except as contained in this notice, the name of Silicon Graphics, Inc. shall not be used in
advertising or otherwise to promote the sale, use or other dealings in this Software without
prior written authorization from Silicon Graphics, Inc.
************************************************************************
VTK 5.8.0
License: BSD
Source/Licensor: http://www.vtk.org/
************************************************************************
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names of any
contributors may be used to endorse or promote products derived from this software without
specific prior written permission.
Sentaurus Visual can be used to create plots that display fields, geometries, and regions,
including results such as p-n junctions and depletion layers. It also allows you to view I–V
curves and doping profiles, and provides tools to zoom, pan, and rotate images. You also can
extract data using measure and probe tools.
The graphical user interface (GUI) provides direct and easy-to-use functionality, as well as
advanced controls for expert users. With the Sentaurus Visual GUI, you can systematically
visualize devices as xy, 2D, and 3D plots.
The following example loads the dataset associated with a file and generates its plot:
svisual n2_fps.tdr
Command-Line Options
When starting from the command line, the following options (which can be obtained by typing
svisual -h) can be used:
Usage: svisual [options] [FILES]
Description:
Sentaurus Visual is a tool to display and analyze structures and curves.
Options:
-h[elp] : Display this help message.
-v[ersion] : Print the Sentaurus Visual version.
-m[esa] : Force run Sentaurus Visual with Mesa.
-glx : Force run Sentaurus Visual without Mesa.
-b[atch] : Run in pure batch mode (requires a script file).
-batchx | -bx : Run in batch mode that allows picture exporting
(virtual X server, requires a script file).
-s[cript] : Force to execute the next files as Sentaurus Visual
scripts.
-i[nspect] | -f : Force to execute the next files as Inspect scripts.
-library_path : Look for Tcl library files at the next path.
-nolibrary : Disable Tcl library auto-loading.
-nowait : Do not wait for license to become available.
-verbose : Log every Sentaurus Visual Tcl command executed to the
log file.
-slowscript | -ss : Redraw plots automatically after each command;
execution of script is slower.
NOTE Sentaurus Visual can run solely in batch mode, that is, no display is
required and scripts can be run using a shell. This mode is fast but has
some disadvantages, for example, exporting graphics only works in the
GUI mode. To overcome this, use the -batchx option.
Sentaurus Visual can receive node data and can be inserted into tool flows.
NOTE Sentaurus Visual can run in batch mode (-b option), which is especially
useful when used within tool flows. In this context, the use of macro
files is also of interest (see Chapter 6 on page 59).
By default, Sentaurus Visual always runs in the best supported graphics mode it can find, using
the graphics card of the machine to render plots. If there is not a compliant renderer, Sentaurus
Visual reverts to a generic Mesa driver for graphics rendering.
If your computer has a graphics card but Sentaurus Visual runs with Mesa rendering, you can
force Sentaurus Visual to run without Mesa rendering using the -glx option. To force Mesa
rendering, use the -mesa option.
NOTE You cannot use both the -glx option and the -mesa option
simultaneously.
Figure 1 Main window of Sentaurus Visual showing different plots in the plot area
For detailed information about the menus and toolbars, see Appendix B on page 145.
NOTE You can customize the Sentaurus Visual GUI. Different options are
available, for example, you can detach the panels, adjust their size, and
move the toolbars to another part of the main window.
Menu Bar
The menu bar allows you to access the main operations of Sentaurus Visual such as opening
files, showing and hiding toolbars, configuring Sentaurus Visual, manipulating loaded data,
and organizing plots in the plot area. Table 1 lists the menus that are available in the GUI.
Table 1 Menus
Menu Description
File Loads plots and scripts, reloads data, and exports and prints plots.
View Shows and hides toolbars and panels; plot settings and performance options.
Toolbars
Toolbars offer quick access to commonly used functions that are also available from the
different menus (see Toolbars on page 150).
Table 2 Toolbars
Toolbar Description
File Loads plots and scripts, reloads data, and exports and prints plots.
Edit Undoes operations, and displays toolbar for drawing shapes and inserting text onto
plots.
Table 2 Toolbars
Toolbar Description
NOTE One toolbar is always visible to allow you to show and hide the Tcl
Command panel and to organize the data selection and properties panels
into tabs.
Plot Area
The plot area displays the active plots. The toolbars and panels change depending on the type
of plot that is selected.
For a more detailed explanation of Tcl commands and scripting, see Chapter 6 on page 59 and
Appendix A on page 63.
This chapter describes the basic operations that are common to all
types of plot in Sentaurus Visual.
Loading Files
You can load files from the GUI or the command line, for example:
svisual [file1.tdr file2.tdr ...]
An opened file consists of datasets. A dataset is a structure containing data that is plotted on
xy, 2D, or 3D space. For example, a .plt, or .plx file can consist of one or more datasets,
and .tdr files usually consist of only one dataset.
NOTE To select multiple files, hold the Ctrl key when you click the required
files to load.
For more information about the TDR format, refer to the Sentaurus Data Explorer User Guide.
Loading Scripts
Sentaurus Visual can load scripts from the command line. For example, you can simply type
svisual with the path of the Tcl (.tcl) or Inspect (.cmd) script, and Sentaurus Visual
automatically detects the script type.
Tcl scripts with the file extension .tcl run native Sentaurus Visual commands, while Inspect
scripts with the file extension .cmd run Inspect commands in compatibility mode.
Most Inspect commands are fully supported, although some commands have only partial
support and some commands are not supported at all. For detailed information about support
for Inspect libraries and commands, see Appendix D on page 161. For detailed information
about Inspect commands, refer to the Inspect User Guide.
From the GUI, select File > Run Tcl Script to display a dialog box where you can select the
script to load.
NOTE Not all changes to a dataset can be reloaded. For example, if the original
structure was two dimensional, the reloaded data is expected to belong
to a 2D plot. If, after changes, the dataset now contains data for a 3D
structure, Sentaurus Visual cannot reload this plot.
Select Data > View Info Loaded to display a dialog box (see Figure 2) with all the data that
is currently active and the option of removing plots and datasets.
To delete a plot:
1. In the Plots pane, click the plot to be deleted.
2. Under the Plots pane, click the Remove button.
NOTE Deleting a plot does not delete the datasets associated with it. However,
deleting a dataset removes the associated 2D or 3D plots. For xy
datasets, only the curves that use the datasets are deleted.
Customizing Settings
The settings of Sentaurus Visual can be customized in the User Preferences dialog box (see
Figure 3).
Settings also can be imported or exported to a file by clicking the Import button or Export
button. To restore the preferences to their defaults, click the Reset button.
You also can import and export settings using Tcl commands:
■ To save the current settings, use the command export_settings (see export_settings on
page 79).
■ To load previously saved settings, use the command import_settings (see
import_settings on page 93).
NOTE Settings are applied the next time you launch Sentaurus Visual.
Linking Plots
The feature of linking plots can be used to compare two similar models, as it allows you to
manipulate elements from one plot of the group, and the linked elements will change on all
plots of the group. Elements that can be linked include material/region selection, field selection
and properties, movement and rotation, cutplanes and cutlines, axes properties (only in xy plots
and 2D plots), legend properties, curves properties, grid properties, and plot properties.
To link plots:
1. Select the plots to be linked.
2. Click the toolbar button.
Special linking allows you to link only specified properties and to set the remaining properties
individually.
The properties that can be linked or unlinked with special linking include:
■ Common properties:
• Movement
• Legend settings
• Plot properties
■ Only for xy plots:
• Curve settings
• Grid settings
■ Only for xy and 2D plots:
• Axes properties
Undoing Operations
Most user interaction commands in Sentaurus Visual have undo functionality that allows you
to revert recent changes to the visualization.
To undo an operation, click the toolbar button or use the undo Tcl command (see undo on
page 142).
Grid Orientation
Plots can be displayed in a grid configuration (see Figure 4 on page 15) by selecting Window
> Tile Grid.
By default, the aspect ratio between plots is preserved, but this can be changed by clearing the
Keep Aspect Ratio option of the Manage Frames dialog box (see Figure 8 on page 18).
Figure 5 on page 16 shows plots where the aspect ratio is not maintained.
When the aspect ratio is not maintained, the unused space is filled with the last plot frame, but
the aspect ratio of the structure is preserved.
Vertical Orientation
Plots can be arranged vertically (see Figure 6) by selecting Window > Tile Vertically.
Horizontal Orientation
Plots can be arranged horizontally (see Figure 7) by selecting Window > Tile Horizontally.
Managing Frames
More advanced sorting options can be configured in the Manage Frames dialog box (see
Figure 8). To display the dialog box, select Window > Sort Frames. Features available include
setting a custom grid, sorting plots in the plot area, and changing the direction in which new
plots are placed on the grid.
Inserting Text
To insert text inside a plot, click the toolbar button. This feature is available for xy and 2D
plots.
To draw an ellipse, click the toolbar button. This feature is available for xy plots only.
To draw a line, click the toolbar button. This feature is available for xy and 2D plots only.
Exporting Plots
Plots can be exported to an image file by clicking the toolbar button or selecting File >
Export Plot (Ctrl+E). A dialog box is displayed (see Figure 9) that allows you to select a
custom resolution and to select how the plots are exported: each plot in a separate file or all
plots in one file.
Sentaurus Visual supports exporting plots to the following file formats: BMP, EPS, JPG, JPEG,
PNG, PPM, TIF, TIFF, XBM, and XPM.
NOTE Custom resolution is disabled when exporting all plots to one file.
Exporting Movies
Sentaurus Visual allows you to export several captures of one or more plots to generate an
animated GIF file.
Adding Frames
To add a new frame in the movie:
1. Click the required plot to select it. To select multiple plots, hold the Shift key while clicking
the plots.
2. Tools > Movies > Add Frames or click the toolbar button.
If several plots are selected, one frame for each plot is generated.
Exporting a Movie
To export a movie:
1. Tools > Movies > Stop Recording or click the toolbar button.
The Export Movie dialog box is displayed (see Figure 11 on page 22).
2. To see a preview of a frame, click an item in the left pane.
3. Select the frames to export from the left pane.
To make multiple selections, drag to highlight the frames or hold the Ctrl key while clicking
the frames. At least one frame must be selected.
4. If required, change the order of the frames by selecting a frame from the left pane, and
clicking the Up or Down button.
NOTE The movie is recorded sequentially from the first frame to the last frame.
5. Set the duration of each frame in the Frame Duration field (the unit is 1/100 s).
6. Click OK to save the file.
Clicking Cancel will delete the entire frame buffer.
7. In the dialog box that is displayed, ensure that the file has the .gif extension. Add it if it is
missing.
Printing Plots
Selected plots can be printed by clicking the toolbar button or selecting File > Print Plots
(Ctrl+P). The Printer dialog box is displayed, where you can select a printer and set print
properties.
Zoom Tool
The zoom tool is used to magnify a particular area of a plot.
Reset Tool
The reset tool restores the selected plot position and zoom level. It does not restore the rotation
on 3D plots.
Deleting Plots
To delete selected plots:
■ Data > Delete Selected Plots (Ctrl+D).
NOTE Deleting a plot does not delete the associated dataset. To delete the
datasets or the plots or both, select Data > View Info Loaded (see
Figure 2 on page 11).
Performance Options
Working with complex 2D and 3D plots can be sometimes slow. To improve this, Sentaurus
Visual provides two options to work faster with plots.
To enable subsampling:
■ View > Subsampling.
Advanced options include setting the rendering delay after a mouse operation and modifying
the quality of the subsampled interactive structure:
■ The End Mouse Interaction Render Delay field adjusts the delay after interacting with
the structure in subsampling or fast draw mode, to redraw the detailed geometry.
■ The Subsampling option enables the structure to be rendered with fewer points, which
optimize the interactive performance with little degradation of the rendering quality.
■ If you select the Automatic option, Sentaurus Visual automatically renders the subsampled
structure. When you select the Automatic option, the value in the Factor field is used to
fine-tune the algorithm to either performance or quality. A higher value means a higher
quality subsampled structure, and a lower value means a lesser quality structure but with
better interactive performance.
■ If you do not select the Automatic option, you can use the Performance/Quality slider to
manually choose the quality of the subsampled structure. Moving the slider to the left
prioritizes interactive performance, or moving the slider to the right prioritizes rendering
quality.
■ The Enable Fast Draw option enables drawing of the boundaries only of 3D structures.
The effects of rendering the structure with subsampling or with the Enable Fast Draw option
selected are shown in Figure 13.
NOTE These changes are active only when in GUI mode. When the operation
is completed, the full rendering is shown.
Figure 13 (Left) Fast draw enabled, (middle) subsampling selected, and (right) original
structure
Loading XY Plots
Loading an xy file does not automatically plot the dataset associated with it. Instead, the loaded
datasets appear in the Selection panel, and a blank plot is created as shown in Figure 14.
The top pane corresponds to the datasets loaded, the middle pane shows the variables present
in the selected dataset, and the bottom pane lists the composite variables available in the middle
pane.
NOTE For .plx files, the x-axes and y-axes are assigned automatically, and the
respective curve is generated onto the active plot.
-0.0001
I(vs,s)
-0.0002
0 0.5 1
V(g)
As shown in Figure 16, five datasets were selected; v(g) was selected as the x-axis variable and
id(vd,d) was selected as the left y-axis variable.
6e-05 i(vd, d)(Id Vg_1_des)
i(vd, d)(Id Vg_2_des)
i(vd, d)(Id Vg_3_des)
i(vd, d)(Id Vg_4_des)
i(vd, d)(Id Vg_5_des)
4e-05
Y
2e-05
0
0 0.5 1
X
Curve Properties
To edit the properties of a curve, select it from the active plot, or you can select the curve from
the list in the Selection panel. The Curve Properties panel is displayed (see Figure 17).
■ On the Trans. tab, you can apply curve transformations. It is possible to apply an
integration or the first and second derivative to the dataset, or to plot a function using the
dataset values to evaluate the required function.
■ On the Analysis tab, you can perform certain analyses on the dataset. For a detailed
explanation, see Analysis Tool on page 36.
NOTE To show the Plot Properties panel, click an empty part of the required
plot if another panel is active.
Legend Properties
Legend properties such as position, font attributes, and colors can be changed in the Legend
Properties panel (see Figure 19). To open the panel, click the legend of an xy plot.
Axis Properties
The appearance of the axes can be modified using the Axis Properties panel (see Figure 20).
To open the Axis Properties panel, click any axis in the plot area.
Table 3 lists the defined words that are allowed in the <math> tag. Only one word is allowed
in the <math> tag.
3root 3 laplace ℒ
4root 4 mho ℧
contains ∋ notcontains ∌
contourintegral ∮ notelementof ∉
deriv ∂ notexists ∄
doubleintegral permille ‰
e e permyriad ‰
‰
elementof ∈ plusminus ±
emptyset ∅ sqroot
exists ∃ sum
forall ∀ surfaceintegral ∯
fourier ℱ tripleintegral
gradient ∇ union ∪
inf ∞ volumeintegral ∰
integral
Figure 21 shows an example of how these symbols are displayed.
Figure 21 Plot showing Greek symbols, math symbols, and scientific notation in axis labels
and legend
You also can use scientific notation in the axis labels of xy plots by choosing Scientific from
the Format list on the Title/Scale tab of the Axis Properties dialog box (see Figure 22).
Figure 22 Axis Properties dialog box showing the selection of scientific notation
-5
Ec
Ev
Efn
Efp
0 0.2 0.4
X
The dataset must have the following variables defined (variable names are italicized):
■ The conduction band energy (ConductionBandEnergy)
■ The valence band energy (ValenceBandEnergy)
■ The electron quasi-Fermi energy (eQuasiFermiEnergy) or the electron quasi-Fermi
potential (eQuasiFermiPotential) but not both in the same dataset
■ The hole quasi-Fermi energy (hQuasiFermiEnergy) or the hole quasi-Fermi potential
(hQuasiFermiPotential) but not both in the same dataset
NOTE Typically, band diagrams are created from xy datasets resulting from
cuts of 2D or 3D geometries.
Probe Tool
The probe tool allows you to sample the intersection value for a horizontal or vertical line
depending on whether the probing is performed on the x-axis or y-axis.
Probe Options
In the Probe panel, the following options are available:
■ To show the active curve only, select the Only Active Curve option.
■ To show guide lines while probing, select the Show Guide Lines option.
Analysis Tool
The analysis tool allows you to compute the electrical characteristics of field-effect transistors.
Depending on the curve being plotted, different analyses can be performed, such as the
threshold voltage, the maximum transconductance value, the drain saturation current, the
leakage current, and the output resistances in the linear or saturation region.
Vth Threshold voltage is defined as the minimum gate electrode bias required to strongly invert
the surface under the poly and to form a conducting channel between the source and the drain
regions. It can be calculated on Id–Vg curves.
GM(MAX) Transconductance is a measure of the sensitivity of the drain current to changes in the
gate–source bias. It is influenced by gate width, which increases in proportion to the active
area as cell density increases. It can be calculated on Id–Vg curves.
ID(SAT) For a constant gate voltage (Vg), this computes the drain saturation current on Id–Vd curves.
ID(OFF) For a constant drain voltage (Vd) and a gate voltage (Vg) equal to zero, this computes the
leakage drain current on Id–Vg curves.
Rout Rout is the value of the output resistance in the saturation region when Vg > Vth. This value
can be calculated on Id–Vd curves.
Ron Ron is the value of the on-state resistance. It is calculated when the transistor is in the linear
region. This value can be calculated on Id–Vd curves.
For more information about the extraction formulas used to obtain the results in the analysis
tool, see Inspect User Guide, Chapter 9 on page 73.
-10
-10
-5
-5
X
0
DopingConcentration [cm–3]
2.457e+20
3.759e+13
5 5.750e+06
5.954e-01
-1.858e+06
-1.214e+13
-7.939e+19
00 55 10
10 15
15 20
20
Y
Figure 25 Example of 2D plot
Rendering Options
Two-dimensional or 3D plots are composed of materials that are distributed in regions with
properties defined in contour maps (scalars) or flux lines (vectors). All these properties can be
found on the Selection panel (see Figure 26).
NOTE Holding the Ctrl key while clicking in a cell of the structure highlights
the region or material to which that cell belongs in the Selection panel.
NOTE Clicking a check box next to a material or region shows or hides the
specified property only for that region or material. However, clicking
the icon itself shows or hides the specified property for all materials or
regions in the active plot.
Contour Plots
Scalar fields are used to generate contour plots. Usually, the contour levels are calculated
automatically, so that they are distributed evenly within the value range of the active field.
The properties of the legend of contour plots can be changed by clicking the legend. The
Legend Properties panel opens (see Figure 27 on page 42) where you can:
■ Customize the number, precision, and notation of the labels.
■ Enable a background for the legend.
■ Change the background color and the frame color.
To create a contour plot, select the required property to be plotted on the Scalars tab of the
Selection panel (see Figure 26 on page 40). The range and levels are set automatically, but they
can be customized using the Range and Levels tabs (see Figure 28), where you can manually
define a range and the number of levels displayed.
Figure 28 Contour plot options showing the Range tab where the first field is the minimum
value and the second field is the maximum value of the range
Although only one field can be displayed using color-filled contour levels, you can display
multiple contour lines from other fields by clicking the second column of the field list of the
Selection panel (see Figure 26).
Custom scalar fields can be created on the More tab (see Figure 28). When you click the Add
Field button on this tab, a dialog box is displayed where you can create a custom field (see
Figure 29 on page 43). It allows insertion of functions and operators, and the use of existing
fields.
Figure 29 Create Numeric Field dialog box displaying fields, operators, and functions
Vector Plots
To add a vector field to a plot, click the Vectors tab of the Selection panel. Select a check box
next to a field to display it on the plot. Vector lines can be displayed uniformly on the structure
or with a size relative to the grid on which they are present.
To rotate a plot, you must be in selection mode (click the toolbar button). Drag to rotate the
plot. When you release the mouse button, the rotation stops.
To set the origin of a rotation point, use the camera configuration by either selecting View >
Camera Configuration or placing the mouse on the required point and pressing the O key.
Overlaying Plots
Overlaying 2D or 3D plots allows you to examine the differences between two similar plots.
To overlay plots:
1. Select two or more plots to be overlaid.
2. Click the toolbar button.
NOTE When plots are overlaid, the region boundaries of each plot can be set to
a different color to better identify the differences between plots in the
Selection panel.
To differentiate plots:
1. Select two plots with common fields.
2. Click the toolbar button.
Measuring Distances
Sentaurus Visual provides a measuring tool that is available by clicking the toolbar button.
The Ruler Data panel opens to show the coordinates and distances calculated (see Figure 33).
It allows you to measure distances between two points in a plane, or in space for 2D or 3D plots.
Integration Tool
You can integrate the active field on all the materials of the current 2D or 3D plot.
The Field Integration dialog box is displayed (see Figure 34 on page 48) with the results of the
integration for each material and a total value calculated over the active field. Integration can
be performed on other fields without changing the active field displayed on the structure.
Integration over the active field commences immediately, but it can be stopped by clicking the
Cancel Integration button of the Field Integration dialog box.
Integration on large structures can take some time. To see the progress of the integration, a
progress bar is visible in the lower-right corner of the GUI.
Probe Tool
The probe tool for 2D and 3D plots allows you to display information about a selected point on
a structure.
To probe a point:
1. Click the toolbar button.
2. Click the point to be evaluated.
The Probe panel opens, which shows various information about the point such as the values of
all the fields and information about the cell.
NOTE If you hold the Ctrl key when you click the point to be evaluated, the
cursor (crosshairs) snaps to the closest mesh point. The same is achieved
by selecting the Snap to Mesh option on the Probe panel, which
provides information about the closest edge to the probed point of the
structure.
To use value blanking, click the toolbar button. A dialog box is displayed (see Figure 36)
where you can insert constraints on the required fields.
NOTE Closing the Value Blanking dialog box disables any blanking
constraints set to the geometry.
As shown in Figure 39, the interpolate vertices option makes the surface of the field being
blanked smoother than when the other options are selected.
Cutting Structures
Sentaurus Visual provides tools for generating xy and 2D cuts, custom cutlines, and cutlines or
cutplanes orthogonal to an axis. Table 7 lists the available cutting tools.
Displays the Cutlines and Cutplanes dialog box, where you can generate non-orthogonal
cutplanes or cutlines directly from a 3D plot, and you can cut in specific values.
Creates a custom cutline in a 2D plot. The result is an xy plot of the selected field and
datasets for all the fields on the cutline.
Creates an orthogonal plot in one axis. The result is a 2D plot of the cutplane if cutting a 3D
plot, or an xy plot from a cutline in a 2D plot. If an axis has a constant value, cuts for that axis
are disabled.
To display the Cutlines and Cutplanes dialog box, click the toolbar button.
Cutlines in 2D Plots
Creating a new cutline is as easy as selecting an axis and a point in the plane to perform an
orthogonal cut or drawing a line using the custom cutline button. The result is a new xy plot as
shown in Figure 41.
Manipulating Cutlines
Cutlines can be moved and resized by dragging the cutline handlers (the circles at the ends of
the cutline), and the cutline plot is updated automatically.
To delete a cutline, select the cutline and press the Delete key.
NOTE The xy plot created is not deleted. Deleting the xy plot does not delete
the cutline in the 2D plot.
Cutplanes in 3D Plots
In 3D plots, orthogonal cutplanes can be created by selecting a cut axis and then clicking the
required point of the plot. The result is a new 2D plot with the same fields as the original plot
as seen in Figure 42. Such a 2D plot can be cut further by a cutline to generate an xy cut.
Figure 42 Cutplane in a 3D plot and the generated 2D plot, which is cut further to generate
an xy plot
Cutplanes also can be moved by dragging, and the 2D plot is updated automatically. In
addition, xy plots created from such 2D cuts are updated automatically.
To delete a cutplane, select the cutplane and press the Delete key.
NOTE Deleting the 2D plot does not delete the cutplane in the 3D plot.
Streamlines
Streamlines are a family of curves that are instantaneously tangent to the velocity vector of the
flow. Sentaurus Visual allows you to visualize these streamlines for the available vector fields
in 2D or 3D plots.
Displaying Streamlines
Click the toolbar button to display the Streamlines dialog box (see Figure 43), where you
can select the vector field, the starting point, and the display properties.
In this dialog box, on the Position tab, several properties can be defined to customize the
display of the streamlines:
■ The Vector Field box is where you select the field used to calculate the streamlines.
■ The Direction box allows you to show only streamlines ending on a point, starting from a
point, or both.
■ The Create Streamlines button allows you to create a family of streamlines going from a
starting point to a rake end point.
Integration Settings
Sentaurus Visual has default integration settings that work with most of the simulation results
obtained from other TCAD tools. However, users have the opportunity to fine-tune these values
if needed. The Integration tab is for this purpose.
This chapter presents how to automate tasks with Tcl scripting and
Inspect compatibility.
The first three commands of this script open a .plt file and create an Id–Vg curve. Next, the
plot is customized to make it more readable. Finally, the plot is exported to a .png file (see
Figure 45).
NOTE This script must be executed with the virtual X server option to allow
graphics export in batch mode, for example:
% svisual -batchx plot_idvg.tcl
The first two commands load and display a TDR file. The next create_cutline command
creates a cutline at the specified location. The last command exports the selected variables from
the cutline to a CSV file.
NOTE This script can be run solely in batch mode, with the command:
% svisual -batch plot_npn.tcl
You can run an Inspect command file in the same way as for a Tcl script. Sentaurus Visual
automatically detects the file as an Inspect command file.
Script Library
Sentaurus Visual allows you to add Tcl script files as libraries, which can be loaded
automatically at startup or manually using the Tcl command load_library (see load_library
on page 109).
Both paths can be checked for Tcl scripts (any file with the extension .tcl) for auto-loading at
startup, which can be enabled or disabled in the user preferences.
The options related to launching Sentaurus Visual are only valid when the auto-loading of the
script library is enabled:
-library_path <customPath> Adds a custom path to the list of library paths to look for script files
when auto-loading is enabled.
Restrictions
Every procedure defined in a script library must begin with the prefix lib_ to avoid the
possible redefining of any existing Sentaurus Visual command.
At the time of loading one or more script files from the script library paths, if there are
procedures that have been defined without this prefix, a warning message will be displayed,
listing these procedures.
Moreover, if there are procedures that redefine Sentaurus Visual commands, a second warning
message is displayed.
The Tcl commands apply to all plots and structures unless stated otherwise.
Syntax Conventions
The following conventions are used for the syntax of Tcl commands:
■ Angle brackets – <> – indicate text that must be replaced, but they are not part of the
syntax.
■ Braces – {} – are used for lists of values, and they must be included in the syntax.
■ Brackets – [] – indicate that the argument is optional, but they are not part of the syntax.
■ Parentheses – () – are used solely to group arguments to improve legibility of commands,
but they are not part of the syntax.
■ A vertical bar – | – indicates options, only one of which can be specified.
Common Properties
The following properties are used in several Tcl commands.
Colors
In Tcl commands that allow you to specify color properties (such as the -color <#rrggbb>
option), a string specifying red, green, and blue components of the RGB system is expected.
The string is preceded by a hash (#) character, and each value is provided in hexadecimal form.
Common colors also have aliases as listed in Table 8.
Fonts
For Tcl commands that allow you to adjust font properties, Sentaurus Visual defines a specific
list of font families and attributes listed in Table 9.
Arial Bold
Courier Italic
Times Normal
Strikeout
Underline
NOTE In xy plots, the font size of different elements of the plot are set with the
font_size argument; whereas in 2D and 3D plots, the font size cannot
be set directly. Instead, the font size is set as a factor of the plot frame
(the default value is 1.0), with the font_factor argument.
Lines
For Tcl commands that allow you to adjust line properties (such as the -line_style option),
Sentaurus Visual defines a specific list of line styles listed in Table 10. You can provide the
name of the style or its short form directly.
Markers
Table 11 lists the different markers available to use in xy plots in Sentaurus Visual. Tcl
commands allow you to use the name or the short form of each marker.
circle o
circlef of
diamond
diamondf
square
squaref
plus + +
cross x x
add_frame
Adds a new frame to the frame buffer.
NOTE You must use of the start_movie command before using the
add_frame command.
Syntax
add_frame [-name <frameName>] [-plot <plotName>]
Argument Description
-plot <plotName> Name of the plot where the new frame will be saved. Current active plot is
used by default.
Returns
String.
Example
add_frame -name Frame1
#-> Frame1
See Also
calculate
This function extracts FET parameters from Id–Vd or Id–Vg curves.
Syntax
calculate <curveName> [-plot <plotName>]
-op (vth | gmmax | idsat | ioff | rout | ron)
Argument Description
-plot <plotName> Name of the plot on which to apply the parameter extraction.
-op vth | gmmax | idsat | ioff | Parameter to be extracted from the curve. For more detailed
rout | ron information about the extraction parameters, see Analysis Tool
on page 36.
Returns
Double.
Example
calculate Curve_1 -op ron
#-> 0.0554013
create_curve
Creates a new curve for an xy plot.
If -plot is not specified, the command draws the curve on the selected plot. If there are no xy
plots created or the selected plot is not an xy plot, the command returns an error.
Syntax
create_curve [-name <curveName>] [-plot <plotName>]
(
(-dataset {<dataNamesList>} -axisX <varX> (-axisY | -axisY2) <varY>) |
-function <formula>
)
Argument Description
-name <curveName> Name of the new curve. If not specified, the command assigns a default curve
name.
-plot <plotName> Name of the plot where the new curve will be displayed. If not specified, the
command draws the curve on the selected xy plot.
-axisY | -axisY2 <varY> Specifies the variable to be used for the y-axis or the y2-axis.
Returns
List.
Example
create_curve -plot Plot_1 -dataset IdVd_example -axisX "drain OuterVoltage"
-axisY "drain TotalCurrent"
#-> Curve_1
create_cutline
Creates a new cutline.
If the type of cutline is aligned to an axis, this command requires the -at argument to be
specified.
If -type free is specified, the argument -points must be set. The new plot created has the
name of the cutline.
If -plot or -dataset is not specified, the command uses the selected 2D plot dataset.
Syntax
create_cutline [-name <cutlineName>] [-plot <plotName> | -dataset <dataName>]
-type (x | y | z | free)
(-at <doubleValue> | -points {<x1> <y1> [<z1>] <x2> <y2> [<z2>]})
Argument Description
-name <cutlineName> Name of the new cutline. If not specified, the command generates
a default name.
-plot <plotName> | Name of the plot or dataset from where the cutline will be
-dataset <dataName> generated. If not specified, the command uses the selected plot.
-type x | y | z | free Selecting x, y, or z ties the cutline to the specified axis. The
free option allows you to create a cutline drawing a line
between two (x,y) coordinates.
-at <doubleValue> | If an axis is selected using -type, the -at argument must be
-points {<x1> <y1> [<z1>] used. If -type free is specified, two (x,y) points must be
<x2> <y2> [<z2>]} specified with the -points argument. (In 3D plots, you must
specify two (x, y, z) points.)
Returns
String.
Example
create_cutline -plot Plot_2D -type free -points {-0.45 -0.15 0.30 0.80}
#-> C1(2D)
create_cutplane
Creates a new cutplane.
The new plot created has the name of the cutplane. If -plot or -dataset is not specified, the
command uses the selected 3D plot dataset.
Syntax
create_cutplane [-name <cutplaneName>]
[-plot <plotName> | -dataset <dataName>] -type (x | y | z)
-at <doubleValue>
Argument Description
-name <cutplaneName> Name of the new cutplane. If not specified, the command generates a default
name.
-plot <plotName> | Name of the plot or dataset from where the cutplane will be generated. If not
-dataset <dataName> specified, the command uses the selected plot.
-type x | y | z Selects the axis from which the cutplane will be generated.
-at <doubleValue> Cuts the structure at the value specified in the axis defined by -type.
Returns
String.
Example
create_cutplane -plot Plot_3D -type y -at 0.3
#-> C1(3D)
create_field
Creates a new field using data from the plot or the dataset specified in the arguments.
The command uses the selected 2D or 3D dataset if -plot or -dataset is not specified.
Syntax
create_field -name <fieldName> [-plot <plotName> | -dataset <dataName>]
-function <functionToEvaluate> [-show]
Argument Description
-plot <plotName> | Name of the plot or dataset from where the field is created. If not
-dataset <dataName> specified, the command uses the active plot.
Returns
String.
Example
create_field -name newFld -dataset 3D -function "log(<ElectricField>)"
#-> newFld
create_plot
Creates an empty xy plot, or creates a plot from 2D or 3D datasets.
Syntax
create_plot [-name <plotName>] (-1d | -dataset <dataName>)
Argument Description
-1d | -dataset <dataName> The arguments are: -1d creates an empty xy plot, and -dataset creates
a plot from a loaded 2D or 3D dataset.
Returns
String.
Example
create_plot -dataset 3D
#-> Plot_3D
create_streamline
Creates a new streamline on a 2D or 3D plot.
Syntax
create_streamline [-name <streamlineName>] -field <fieldname>
[-plot <plotName>]
(-point {<x> <y> [<z>]} | (-p1 {<x> <y> [<z>]} -p2 {<x> <y> [<z>]}
-nofpoints <intValue>) -direction (both | backward | forward))
[-regions <listOfRegions>] [-materials <listOfMaterials>]
Argument Description
-name <streamlineName> Identifier for the new streamline created. If not specified, the
command generates a default name.
-field <fieldname> Selects the field on which the streamline will be created.
-plot <plotname> Name of the plot. If not specified, the command uses the selected
plot.
-point {<x> <y> [<z>]} | Creates one streamline ending on a point with the -point
(-p1 {<x> <y> [<z>]} argument, or a custom number of streamlines going from P1 to P2
-p2 {<x> <y> [<z>]} with the -p1 and -p2 arguments.
-nofpoints <intValue>)
-regions <listOfRegions> Region on which the streamline will be created. Default: All regions.
-materials <listOfMaterials> Materials on which the streamline will be created. Default: All
materials.
Returns
List.
Example
create_streamline -field ElectricField -point {0.5 0.2} -direction both
#-> Streamline_1
create_variable
Creates a new variable.
Syntax
create_variable -name <varName> -dataset <dataName>
(-function <functionToEvaluate> | -values {<numericList>})
Argument Description
-dataset <dataName> Dataset from which values are obtained to evaluate functions.
-function <functionToEvaluate> | Expression to evaluate or the list of values to add to the dataset
-values {<numericList>} specified.
Returns
String.
Example
create_variable -name nVar -dataset idvd -values {0.1 0.3 0.5 0.7 0.9}
#-> nVar
diff_plots
Creates a new dataset with the difference in the common fields of the selected plots.
Syntax
diff_plots {<listOfPlots>} [-normalized] [-display]
Argument Description
Returns
String.
Example
diff_plots {Plot1 Plot2}
#-> Plot1-Plot2
echo
Prints a string in the Tcl Command panel.
Syntax
echo [<strings>]
Argument Description
Returns
None.
Example
echo "Hello World"
# Hello World
exit
Exits Sentaurus Visual with the status given as an argument.
Syntax
exit [<intValue>]
Argument Description
Returns
None.
Example
exit 1
# Exit status: 1
export_curves
Exports a curve to the specified file format.
Syntax
export_curves -plot <plotName> -filename <fileName> [{<curvesList>}]
[-format (csv | plx)] [-overwrite]
Argument Description
Returns
Integer.
Example
export_curves -plot Plot_1 -filename testFile.csv -format csv
#-> 0
export_movie
Creates a new movie by exporting the selected frames into a GIF file.
NOTE You must use the start_movie and add_frame commands before
using the export_movie command.
Syntax
export_movie -filename <fileName> [-frames {<listOfFrames>}]
[-frame_duration <intValue>] [-overwrite]
Argument Description
-filename <fileName> Name of the file for the new movie. Add .gif extension if necessary.
-frames {<listOfFrames>} Specifies the list of frames to be exported. Entire frame buffer is used by
default.
-frame_duration <intValue> Specifies the duration of each frame with 1/100 s as unit. Default is 50.
Returns
String.
Example
export_movie -filename Movie.gif -frame_duration 2 -overwrite
#-> Movie.gif
See Also
add_frame on page 66
start_movie on page 141
export_settings
Exports Sentaurus Visual settings to a file.
Syntax
export_settings <filename>
Argument Description
<filename> Name of the file. It must have the file extension .conf.
Returns
Integer.
Example
export_settings settings.conf
#-> 0
export_variables
Exports variables from a curve to a file.
Syntax
export_variables [<varList>] -dataset <datasetName> -filename <fileName>
[-overwrite]
Argument Description
-dataset <datasetName> Name of dataset where specified (by default, all) variables will be read for
export.
Returns
Integer.
Example
export_variables -dataset Data_1 -filename exportedVars.csv
#-> 0
export_view
Exports a plot to the specified file format.
If -plots is used, the command exports only the specified plots. If it is not specified, the
command exports all plots.
Syntax
export_view <filename> [-plots {<plotList>}] [-format <stringValue>]
[-resolution <width>x<height>] [-overwrite]
Argument Description
-plots {<plotList>} Exports the plots specified. If not specified, the command exports all the
plots.
-format <stringValue> Specifies the type of file format to use when exporting the plots. The
supported formats are: BMP, EPS, JPEG, JPG, PNG, PPM, TIF, TIFF, XBM,
and XPM.
Returns
Integer.
Example
export_view /path/to/examplePlot.bmp -format bmp
#-> 0
get_axis_prop
Returns axis properties.
Syntax
get_axis_prop [-plot <plotName>] -axis (x | y | z | y1 | y2)
(
-type | -title | -title_font_color | -title_font_family | -title_font_att |
(-title_font_size | -title_font_factor) | -scale_font_color |
-scale_font_family | -scale_font_att |
(-scale_font_size | -scale_font_factor) |
-scale_precision | -scale_format | -nof_minor_ticks |
-major_ticks_length | -range | -show_scale | -show_ticks |
-show_minor_ticks | -show | -inverted | -fixed
)
Argument Description
-plot <plotName> Name of the plot from where the axis properties will be returned.
-axis x | y | z | y1 | y2 Specifies from which axis the properties will be returned. The
axis identifiers y1 and y2 are only valid for xy plots.
-title_font_size | Font size (xy plots) or font size factor (2D and 3D plots) of the
-title_font_factor axis label.
-scale_font_size | Size (xy plots) or size factor (2D and 3D plots) of the axis scale.
-scale_font_factor
-show_scale Shows scale if values for the major ticks are displayed.
Returns
String.
Example
get_axis_prop -axis x -type
#-> linear
get_camera_prop
Returns camera properties.
NOTE The command returns only one property at a time and applies to 3D
plots only.
Syntax
get_camera_prop [-plot <plotName>]
(
-position | -focal_point | -rotation_point | -rot_size | -rot_width |
-rot_color | -show_rotation_point | -zoom
)
Argument Description
-plot <plotName> Name of the plot from which to obtain the required property. If not specified,
the command uses the selected plot.
Returns
String.
Example
get_camera_prop -position
#-> 3.53079 -0.0263978 0.392817
get_curve_data
Returns data from the specified curve axis.
Syntax
get_curve_data <curveName> [-plot <plotName>] (-axisX | -axisY)
Argument Description
Returns
List.
Example
get_curve_data Curve_1 -axisX
#-> 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
get_curve_prop
Returns curve properties.
NOTE The command returns only one property at a time and applies to xy plots
only.
Syntax
get_curve_prop <curveName> [-plot <plotName>]
(
-label | -color | -line_width | -line_style | -markers_type |
-markers_size | -deriv | -integ | -function | -show_markers | -show_line |
-show
)
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected plot.
Returns
String.
Example
get_curve_prop Curve_1 -deriv
#-> 2
get_field_prop
Returns field properties.
NOTE The command returns only one property at a time and applies only to 2D
and 3D plots.
Syntax
get_field_prop [<fieldname>] [-plot <plotName>] [-geom <geometryName>]
(-range | -scale | -levels | -custom_levels | -label |
-interpolated_values | -vector_scale | -scale_factor_grid |
-scale_factor_uniform | -show_bands | -show)
Argument Description
<fieldName> Name of the field. If not specified, the command uses the active field.
-plot <plotName> Name of the plot. If not specified, the command uses the active plot.
-geom <geometryName> Name of the dataset (or geometry). If not specified, the command uses the
main one from the active plot.
-interpolated_values Returns whether the interpolated values on its vertices are used for
visualization (this property is only valid for fields defined on cells).
-scale_factor_grid Scale factor of the selected vector field when the scaling is by grid.
-scale_factor_uniform Scale factor of the selected vector field when the scaling is uniform.
Returns
String.
Example
get_field_prop -range
#-> {2.36618e-05 4.36902e+06}
get_grid_prop
Returns grid properties of a plot.
Syntax
get_grid_prop [-plot <plotName>]
(
-align | -line1_color | -line2_color | -line1_width | -line2_width |
-line1_style | -line2_style | -show_minor_lines | -show
)
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected plot.
Returns
String.
Example
get_grid_prop -line1_color
#-> #ff0000
get_legend_prop
Returns legend properties.
Syntax
get_legend_prop [-plot <plotName>]
(-location | -title_font_color | -title_font_family | -title_font_size |
-title_font_factor | -title_font_att | -label_font_color |
-label_font_family | -label_font_size | -label_font_factor |
-label_font_att | -margins | -color_fg | -color_bg |
-orientation | -label_format | -nof_labels | -precision)
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected plot.
Returns
String.
Example
get_legend_prop -orientation
#-> vertical
get_plot_prop
Returns plot properties.
Syntax
get_plot_prop [-plot <plotName>]
(
-title | -color_fg | -color_bg | -show_title | -show_legend |
-show_axes | -show_axes_title | -show_grid | -show_curve_markers |
-show_curve_lines | -ratio_xtoy | -keep_aspect_ratio | -axes_interchanged |
-show | -frame_width | -color_map
)
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected plot.
-show_axes_title Returns a value indicating whether the axes labels are displayed (only for xy
plots).
-show_grid Returns a value indicating whether the grid is displayed (only for xy plots).
-show_curve_lines Returns a value indicating whether the curve lines are displayed.
-ratio_xtoy Returns the transformation ratio between the x-axis and y-axis (only for 2D
plots).
-keep_aspect_ratio Returns a value indicating whether the aspect ratio is maintained (only for 2D
plots).
-axes_interchanged Returns a value indicating whether the axes are interchanged (only for 2D
plots).
-frame_width Returns a value that is a positive integer less than 8, denoting the frame width
in pixels.
-color_map Returns a value indicating whether the color map is in default mode (full
palette) or grayscale mode.
Returns
String.
Example
get_plot_prop -title
#-> Test Plot
get_variable_data
Returns a list of variable values.
Syntax
get_variable_data <varName> -dataset <dataName>
Argument Description
Returns
List.
Example
get_variable_data X -dataset plotXY
#-> 1 2 3 4 5
help
Displays information about Sentaurus Visual Tcl commands.
Without any arguments, the command returns a complete list of the available Tcl commands.
Syntax
help [<TclCommand>]
Argument Description
Returns
String.
Example
help import_settings
# import_settings <filename>
import_settings
Imports Sentaurus Visual settings from a previously saved configuration file.
Syntax
import_settings <filename>
Argument Description
Returns
Integer.
Example
import_settings /path/to/settings.conf
#-> 0
integrate_field
Integrates a field over a complete 2D or 3D plot, or in specific regions.
Syntax
integrate_field [-field <fieldname>]
[-plot <plotName> | -dataset <dataSetName>]
[-region {<regionList>} | -material {<materialList>}]
[-window {<xmin> <xmax> <ymin> <ymax> [<zmin> <zmax>]}] [-returndomain]
Argument Description
-field <filename> Specifies the field to integrate. If not specified, uses the current active
field.
-plot <plotName> | Name of the plot or dataset. If not specified, uses the selected plot.
-dataset <dataSetName>
-region {<regionList>} | List of regions or materials to integrate. If not specified, integrates all
-material {<materialList>} regions.
-returndomain Sets the function to return the integrated domain value (an integrated
volume when used in three dimensions, or an integrated surface when
used in two dimensions).
Returns
Double.
Example
integrate_field -field Abs(ElectricField) -region {RGate}
# Dataset: 3D
# Field: Abs(ElectricField)
# ==================================
# Regions of Dimension 3
# ----------------------------------
# 1. RGate (PolySi)
# Integral: 3.697957e-04 [V*um^2]
# Domain: 9.211180e-04 [um^3]
# ----------------------------------
link_plots
Links plot properties of two or more plots.
Syntax
link_plots {<listOfPlotNames>} [-id <intValue>] [-unlink]
[-special {matreg field_sel field_prop move cuts plot_prop axes_prop
legend_prop curve_prop grid_prop}]
Argument Description
Returns
Integer.
Example
link_plots {Plot_1 Plot_2} -id 10
#-> 10
list_curves
Returns a list of curve names.
Syntax
list_curves [<pattern>] [-plot <plotName>] [-show | -hide]
Argument Description
-plot <plotName> Searches on a specific plot. If not specified, the command searches on the
selected plot.
Returns
List.
Example
list_curves _1
#-> Curve_1 Curve_12
list_cutlines
Returns a list of cutlines. If no arguments are specified, the command returns all cutlines.
Syntax
list_cutlines [<pattern>] [-plot <plotName>] [-type (x | y | z | free)]
Argument Description
-plot <plotName> Searches on a specific plot. If not specified, the command searches on the
selected plot.
Returns
List.
Example
list_cutlines -type y
#-> C1 C2
list_cutplanes
Returns a list of cutplanes. If no arguments are specified, the command returns all cutplanes.
Syntax
list_cutplanes [<pattern>] [-plot <plotName>] [-type (x | y | z)]
Argument Description
-plot <plotName> Searches on a specific plot. If not specified, the command searches on the
selected plot.
Returns
List.
Example
list_cutplanes -type y
#-> C3
list_datasets
Returns a list of dataset names according to the given pattern. If no pattern is specified, all
datasets are returned.
Syntax
list_datasets [<pattern>] [-dim <x>]
Argument Description
Returns
List.
Example
list_datasets -dim 3
#-> 3D_3
list_fields
Returns a list of field names.
Syntax
list_fields [<pattern>] [-plot <plotName> | -dataset <dataName>]
[-show_contours | -hide_contours] [-show | -hide]
Argument Description
Returns
List.
Example
list_fields ElectricField -plot Plot_3D
#-> Abs(ElectricField) ElectricField-X ElectricField-Y ElectricField-Z
list_files
Returns a list of opened files according to the given pattern. If no pattern is specified, all files
are returned.
Syntax
list_files [<pattern>] [-fullpath]
Argument Description
-fullpath Specifies the full path to where the directory resides that contains the opened
files. If not specified, uses the current work directory.
Returns
List.
Example
list_files
#-> 2D_file.tdr 3D_file.tdr
list_materials
Returns a list of material names.
Syntax
list_materials [<pattern>] [-plot <plotName> | -dataset <dataName>]
([-show_all | -hide_all] |
([-show_bulk | -hide_bulk] [-show_field | -hide_field]
[-show_mesh | -hide_mesh] [-show_border | -hide_border]))
Argument Description
Returns
List.
Example
list_materials -plot Plot_3D
#-> Contact DepletionRegion JunctionLine nitride Oxide PolySi Silicon
list_movie_frames
Returns the list of frames in the frame buffer.
Syntax
list_movie_frames
Returns
List.
Example
list_movie_frames
# Frame0001 Frame0002 Frame0003 Frame0004
list_plots
Returns a list of plot names according to the given pattern. If no pattern is specified, all plots
are returned.
Syntax
list_plots [<pattern>] [-dim <id>] [-link <id>] [-selected] [-show | -hide]
Argument Description
-link <id> Returns only linked plots with the <id> number.
Returns
List.
Example
list_plots -dim 3
#-> 3D
list_regions
Returns a list of region names.
Syntax
list_regions [<pattern>] [-plot <plotName> | -dataset <dataName>]
([-show_all | -hide_all] | ([-show_bulk | -hide_bulk]
[-show_field | -hide_field] [-show_mesh | -hide_mesh]
[-show_border | -hide_border]))
Argument Description
-plot <plotName> | Returns the regions of the specified plot or dataset. If not specified, the
-dataset <dataName> command returns the regions of the selected plot.
-show_bulk | -hide_bulk Filters by whether materials have their bulk shown or hidden.
-show_field | -hide_field Filters by whether materials have their field shown or hidden.
-show_mesh | -hide_mesh Filters by whether materials have their mesh shown or hidden.
-show_border | -hide_border Filters by whether materials have their border shown or hidden.
Returns
List.
Example
list_regions -dataset 3D
#-> bulk gate drain DepletionRegion JunctionLine source
list_streamlines
Returns a list of streamlines created on the plot.
Syntax
list_streamlines [<pattern>] [-plot <plotName>]
Argument Description
-plot <plotName> Returns the streamlines of the specified plot. If not specified, the command
returns the streamlines of the selected plot.
Returns
List.
Example
list_streamlines
#-> Streamline_1 Streamline_2 Streamline_3
list_variables
Returns a list of variable names according to the given pattern. If no pattern is specified, all
variables are returned.
Syntax
list_variables [<pattern>] -dataset <dataName>
Argument Description
Returns
List.
Example
list_variables -dataset testDataset
#-> drainCurrent gateToSourceVoltage time
load_file
Loads the specified file, and returns a string with the dataset name associated with the file.
Syntax
load_file <filename> -name <stringValue>
Argument Description
Returns
String.
Example
load_file /pathTo/Structure.tdr -name myStructure
#-> myStructure
load_file_datasets
Loads datasets from the specified file.
Syntax
load_file_datasets <filename>
Argument Description
Returns
List.
Example
load_file_datasets /pathTo/IdVg.tdr
#-> IdVg
load_library
Loads a Sentaurus Visual library. It can load all libraries located at the default paths, or only
libraries located at the given path, or only the library given by the path and its name.
Syntax
load_library ([-path <library_path>] [<library_name>] | [-all])
Argument Description
Returns
Integer.
Example
load_library -path ~/mySVLibs myLibrary1
#-> 0
load_script_file
Loads a Tcl script or Inspect script.
Syntax
load_script_file <filename> [-inspect]
Argument Description
Returns
Integer.
Example
load_script_file testScript.tcl
#-> 0
move_plot
Moves the selected plot.
Syntax
move_plot -position {<x> <y>} [-absolute] [-plot <plotName>]
Argument Description
-position {<x> <y>} Sets the new position of the plot. Arguments of type Double are expected.
-plot <plotName> Name of the plot to be moved. The current active plot is used if this option is
not specified.
Returns
Integer.
Example
move_plot -position {1.5 0.5} -absolute
#-> 0
overlay_plots
Overlays two or more plots. Creates a new plot with the specified name.
Syntax
overlay_plots {<listOfPlots>} [-name <plotName>]
Argument Description
-name <plotName> Name of the new plot to be created. If not specified, creates a new plot with a
generic name.
Returns
String.
Example
overlay_plots {Plot_3D Plot_3D_2} –name Plot_Overlay
#-> Plot_Overlay
probe_curve
Probes a curve.
NOTE The command applies to xy plots only. For 2D and 3D plots, use the
command probe_field (see probe_field on page 114).
Syntax
probe_curve <curveName> [-plot <plotName>] (-valueX | -valueY <doubleValue>)
Argument Description
-plot <plotName> Name of the plot with the curve to be probed. If not specified, the
command uses the selected plot.
Returns
Double.
Example
probe_curve idvg_1_des -valueX 0.85
#-> 0.5433e-6
probe_field
Probes a point on a plot, and returns the values of the defined field on that point.
NOTE This command applies to 2D and 3D plots only. For xy plots, use the
command probe_curve.
Syntax
probe_field [-field <fieldName>] [-plot <plotName>]
(–coord {<x> <y> [<z>]} | (-point <intValue> -region <regionName>)) [-snap]
Argument Description
-field <fieldName> Name of the field to probe in the plot. If not specified, probes the active field.
-plot <plotName> Name of the plot or dataset to be probed. If not specified, the command
probes the selected plot.
-coord {<x> <y> [<z>]} Specifies the point to be probed. In 2D plots, the z value must be 0 or must
be left undefined.
-point <intValue> Specifies the vertex ID relative to the region set to be probed. Use with the
-region option.
-region <regionName> Specifies the region where the field will be probed. Use with the -point
option.
Returns
Double.
Example
probe_field -field DopingConcentration -coord {0.2 0.3 -0.2}
#-> -2e18
reload_datasets
Reloads all the specified datasets.
Syntax
reload_datasets {<listOfDatasets>}
Argument Description
Returns
Integer.
Example
reload_datasets {3D 3D_2}
#-> 0
reload_files
Reloads the specified files.
Syntax
reload_files {<filenameList>}
Argument Description
Returns
Integer.
Example
reload_files {2D.tdr 3D.tdr}
#-> 0
remove_curves
Removes curves from an xy plot.
Syntax
remove_curves {<listOfCurves>} [-plot <plotName>]
Argument Description
-plot <plotName> Name of the plot from where curves will be removed. If not specified, the
command uses the active plot.
Returns
Integer.
Example
remove_curves {IdVg_1 IdVg_2}
#-> 0
remove_cutlines
Removes the specified cutlines.
Syntax
remove_cutlines {<listOfCutlines>} [-plot <plotName>]
Argument Description
-plot <plotName> Name of plot from where the cutlines will be removed. If not specified, uses
the active plot.
Returns
List.
Example
remove_cutlines {C1 C2}
#-> C1 C2
remove_cutplanes
Removes the specified cutplanes.
Syntax
remove_cutplanes {<listOfCutplanes>} [-plot <plotName>]
Argument Description
{<listOfCutplanes>} List of cutplane names. If not specified, uses the active plot.
-plot <plotName> Name of plot from where the cutplanes will be removed.
Returns
List.
Example
remove_cutplanes {C1 C2}
#-> C1 C2
remove_datasets
Removes the specified datasets.
Syntax
remove_datasets {<listOfDatasets>}
Argument Description
Returns
Integer.
Example
remove_datasets {dataSet1 dataSet2 dataSet3}
#-> 0
remove_plots
Removes the specified plots.
Syntax
remove_plots {<listOfPlotNames>}
Argument Description
Returns
Integer.
Example
remove_plots {plotXY plot2D plot3D}
#-> 0
remove_streamlines
Removes the specified streamlines.
Syntax
remove_streamlines {<listOfStreamlines>} [-plot <plotName>]
Argument Description
-plot <plotName> Name of the plot from where the streamlines will be removed. If not
specified, the command uses the selected plot.
Returns
List.
Example
remove_streamlines {Streamline_1 Streamline_2}
#-> Streamline_1 Streamline_2
reset_settings
Reset Sentaurus Visual settings to their default values.
Syntax
reset_settings
Returns
None.
Example
reset_settings
rotate_plot
Rotates a 3D plot using the axes and angles specified. Different axes can be rotated at the same
time.
Syntax
rotate_plot [-plot <plotName>] [-x <degrees>] [-y <degrees>] [-z <degrees>]
[-absolute]
Argument Description
-plot <plotName> Name of the plot. If not specified, uses the selected plot.
Returns
Integer.
Example
rotate_plot -x 10.5 -y 20
#-> 0
select_plots
Selects the plots.
Syntax
select_plots {<listOfPlotNames>}
Argument Description
Returns
List.
Example
select_plots {plot2D anotherPlot2D}
#-> plot2D anotherPlot2D
set_axis_prop
Sets axis properties.
If -axis is not specified, the properties are set for all axes.
The following properties apply to xy plots only: -type, -range, and -reset.
Syntax
set_axis_prop [-plot <plotName>] [-axis (x | y | y1 | y2)]
[-type linear | log] [-range {<x1> <x2>}] [-inverted | -not_inverted]
[-fixed | -not_fixed] [-title <stringValue>] [-title_font_color <#rrggbb>]
[-title_font_family <stringValue>]
([-title_font_size <intValue>] | [-title_font_factor <doubleValue>])
[-title_font_att normal | bold | italic | underline | strikeout]
[-nof_minor_ticks <int_Value>]
[-major_ticks_length <intValue>] [-minor_ticks_length <intValue>]
[-ticks_position out | in | center] [-auto_spacing | -manual_spacing]
[-anchor <doubleValue>] [-spacing <doubleValue>]
[-scale_format <stringValue>] [-scale_precision]
[-scale_font_color <#rrggbb>] [-scale_font_family <stringValue>]
([-scale_font_size <intValue>] | [-scale_font_factor <doubleValue>])
[-scale_font_att normal | bold | italic | underline | strikeout]
[-show | -hide] [-show_scale | -hide_scale] [-show_ticks | -hide_ticks]
[-show_minor_ticks | -hide_minor_ticks] [-show_title | -hide_title]
[-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command applies the
attributes to the selected plot.
-axis x | y | x1 | y2 Axis to apply the settings. If not specified, the command applies
the attributes to all axes.
-fixed | -not_fixed Fixes or does not fix the range of the axis.
-title_font_size <intValue> | Sets the axis label font size (xy plots) or font size factor (2D and
-title_font_factor <doubleValue> 3D plots).
-scale_font_size <intValue> | Sets the font size (xy plots) or size factor (2D and 3D plots) of
-scale_font_factor <doubleValue> axis scale.
-scale_font_att normal | bold | Sets the font attributes of the axis scale.
italic | underline | strikeout
Returns
None.
Example
set_axis_prop -axis y1 -title "Drain Current"
set_band_diagram
Creates a band diagram. For more details, see Plotting Band Diagrams on page 35.
Syntax
set_band_diagram [{<plotList>}]
Argument Description
Returns
Integer.
Example
set_band_diagram Plot_1
#-> 0
set_best_look
Automatically configures various plot parameters. For more details, see Best Look Option on
page 34.
Syntax
set_best_look [{<plotList>}]
Argument Description
Returns
Integer.
Example
set_best_look {Plot_1 Plot_2}
#-> 0
set_camera_prop
Sets camera properties.
Syntax
set_camera_prop [-plot <plotName>] [-position {<x> <y> <z>}]
[-focal_point {<x> <y> <z>} [-rotation_point {<x> <y> <z>}]
[-zoom <doubleValue>] [-rot_color <stringValue>] [-rot_size <intValue>]
[-rot_width <intValue>] [-show_rotation_point | -hide_rotation_point]
[-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-focal_point {<x> <y> <z>} Sets the focal point of the camera.
-rotation_point {<x> <y> <z>} Sets the rotation point of the structure.
Returns
Integer.
Example
set_camera_prop -rotation_point {0.2 0.35 -0.25}
#-> 0
set_curve_prop
Sets curve properties.
Syntax
set_curve_prop <curveName> [-plot <plotName>] [-label <curveLabel>]
[-color <stringValue>] [-line_width <intValue>] [-line_style <stringValue>]
[-markers_type <stringValue>] [-markers_size <intValue>]
[-deriv <intValue> | integ] [-function <stringValue>] [-axis (left | right)]
[-show_line | -hide_line] [-show_markers | -hide_markers] [-show | -hide]
[-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-deriv <intValue> | integ Derives or integrates the curve. For derivation, it can apply a first-
order or second-order derivative.
Returns
None.
Example
set_curve_prop Curve_1 -label "NetActive Field (Cut from structure_1 at x=0)"
set_field_prop
Sets field properties.
If <fieldName> is not specified, the properties are set for the selected field. The same applies
to -plot.
Syntax
set_field_prop [<fieldname>] [-plot <plotName>]
[-range {<min> <max>} | -reset]
(
([-scale (linear | log | asinh)] [-levels <intValue>]) |
[-custom_levels {<values>}]
)
[-label <fieldLabel>] [-interpolated_values | -primary_values]
[-vector_scale (grid | uniform)] [-scale_factor_grid <value>]
[-scale_factor_uniform <value>] [-show_bands | -hide_bands] [-show | -hide]
[-geom <geometryName>]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-range {<min> <max>} | -reset Sets range of the field contour plot, or resets to the default values.
-scale (linear | log | asinh) Sets a scale with <intValue> levels. Do not use with the
-levels <intValue> -custom_levels option.
-custom_levels {<values>} Specifies a custom list of levels.
-scale_factor_grid <value> Sets the scale factor of the selected vector field when the scaling
is by grid.
-scale_factor_uniform <value> Sets the scale factor of the selected vector field when the scaling
is uniform.
-geom <geometryName> Name of the dataset (or geometry). If not specified, the command
uses the main one from the active plot.
Returns
Integer.
Example
set_field_prop -range {-1e20 1e20}
#-> 0
set_grid_prop
Sets grid properties.
Syntax
set_grid_prop [-plot <plotName>] [-align (left | right)]
[-line1_color <stringValue>] [-line2_color <stringValue>]
[-line1_width <intValue>] [-line2_width <intValue>]
[-line1_style <stringValue>] [-line2_style <stringValue>]
[-show_minor_lines | -hide_minor_lines] [-show | -hide] [-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
Returns
None.
Example
set_grid_prop -show_minor_lines
set_legend_prop
Sets legend properties.
The following properties apply to xy plots only: -margins, -color_fg, and -color_bg.
Syntax
set_legend_prop [-plot <plotName>]
[-location (top_left | top_right | bottom_left | bottom_right)]
[-title_font_color <stringValue>]
[-title_font_family (arial | courier | times)]
[-title_font_att <stringValue>]
[-title_font_size <intValue> | -title_font_factor <doubleValue>]
[-label_font_color <stringValue>]
[-label_font_family (arial | courier | times)]
[-label_font_att <stringValue>]
[-label_font_size <intValue> | -label_font_factor <doubleValue>]
( [-margins {<x1> <x2>}] [-color_fg <stringValue>]
[-color_bg <stringValue>] |
[-orientation (vertical | horizontal)] [-label_format <stringValue>]
[-nof_labels <intValue>] [-precision <intValue>] ) [-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-title_font_size <intValue> | Sets legend title font size using either an integer (size) or a factor
-title_font_factor <doubleValue> for resizing the font (factor).
-label_font_size <intValue> | Sets labels font size using either an integer (size) or a factor for
-label_font_factor <doubleValue> resizing the font (factor).
-margins {<x1> <x2>} Sets legend margins, and background and foreground colors
-color_fg <stringValue> (apply to xy plots only).
-color_bg <stringValue>
-orientation vertical | horizontal Sets legend orientation, label format, number of labels, and
-label_format <stringValue> precision of labels (apply to 2D and 3D plots only).
-nof_labels <intValue>
-precision <intValue>
Returns
None.
Example
set_legend_prop -nof_labels 4
set_material_prop
Sets material properties.
If -plot is not specified, the properties are set for the selected material.
Syntax
set_material_prop [{<listOfMaterials>}] [-plot <plotName>]
[-show_all | -hide_all] [-show_field | -hide_field]
[-show_mesh | -hide_mesh] [-show_border | -hide_border]
[-geom <geometryName>] [-translucency_on | -translucency_off]
[-translucency_level <doubleValue>] [-color <#rrggbb>]
[-border_color <#rrggbb>] [-line_color <#rrggbb>]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-geom <geometryName> Name of the dataset (or geometry). If not specified, uses the main
one from the active plot.
-border_color <#rrggbb> Specifies the border color of the materials. Color in format RGB
is expected (see Colors).
-line_color <#rrggbb> Specifies the line color of the materials. Color in format RGB is
expected (see Colors).
Returns
Integer.
Example
set_material_prop {Oxide Silicon} -show_field
#-> 0
set_plot_prop
Sets plot properties.
Syntax
set_plot_prop [-plot <plotName>] [-title <stringValue>]
[-title_font_family (arial | courier | times)]
[-title_font_color <stringValue>]
[-title_font_size <intValue> | -title_font_factor <doubleValue>]
[-title_font_att <stringValue>] [-color_fg <stringValue>]
[-color_bg <stringValue>] [-frame_width <intValue>]
[-ratio_xtoy <doubleValue>] [-transformation {<x> <y> <z>}]
[-color_map (grayscale | default)]
[-keep_aspect_ratio| -not_keep_aspect_ratio]
[-axes_interchanged | -not_axes_interchanged] [-show_title | -hide_title]
[-show_legend | -hide_legend] [-show_axes | -hide_axes]
[-show_axes_title | -hide_axes_title] [-show_grid | -hide_grid]
[-show_curve_markers | -hide_curve_markers]
[-show_curve_lines | -hide_curve_lines] [-show | -hide] [-reset]
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-title_font_size <intValue> | Sets the title font size (xy plots) or multiplies the font size by a
-title_font_factor <doubleValue> factor (2D and 3D plots).
-frame_width <intValue> Sets the plot frame width, which must be a positive integer value
less than 8 (applies to xy plots only).
-ratio_xtoy <doubleValue> Sets the x to y ratio of the plot (applies to 2D plots only).
-transformation {<x> <y> <z>} Sets a linear coordinate transformation (applies to 3D plots only).
-color_map grayscale | default Sets the color map used in the plot (applies to 2D and 3D plots
only). Values are:
• When set to default, uses normal color map (full palette).
• When set to grayscale, uses only grayscale colors.
Returns
None.
Example
set_plot_prop -title "Example 3D Structure"
set_region_prop
Sets region properties.
If -plot is not specified, the properties are set for the selected region.
Syntax
set_region_prop [{<listOfRegions>}] [-plot <plotName>]
[-show_all | -hide_all] [-show_field | -hide_field]
[-show_mesh | -hide_mesh] [-show_border | -hide_border]
[-geom <geometryName>] [-translucency_on | -translucency_off]
[-translucency_level <doubleValue>] [-color <#rrggbb>]
[-border_color <#rrggbb>] [-line_color <#rrggbb>]
Argument Description
{<listOfRegions>} List of regions of the plot where the properties will be applied.
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-geom <geometryName> Name of the dataset (or geometry). If not specified, the command
uses the main one from the active plot.
-border_color <#rrggbb> Specifies the border color of the region. Color in format RGB is
expected (see Colors).
-line_color <#rrggbb> Specifies the line color of the region. Color in format RGB is
expected (see Colors).
Returns
Integer.
Example
set_region_prop {source gate drain} -show_mesh
#-> 0
set_value_blanking
Sets value blanking.
Syntax
set_value_blanking [-cons <1-8>] [-plot <plotName>] -field <fieldname>
(-less | -greater) <doubleValue> | [-blank (all | any | inter)] | -reset
Argument Description
-plot <plotName> Name of the plot. If not specified, the command uses the selected
plot.
-blank all | any | inter Selects the value blanking option where:
• all is all vertices.
• any is any vertex.
• inter is interpolate vertices.
Returns
Integer.
Example
set_value_blanking -field DopingConcentration -greater 0.0
#-> 0
set_window_full
Sets the full plot view.
Syntax
set_window_full (-on | -off)
Argument Description
Returns
Integer.
Example
set_windows_full -on
#-> 0
set_window_size
Sets the size of the main window of the GUI.
Syntax
set_window_size <width>x<height>
Argument Description
<width>x<height> Sets the width and the height of the main window in pixels (minimum of
200x200 pixels).
Returns
Integer.
Example
set_window_size 1280x800
#-> 0
show_msg
Displays a message in a dialog box.
Syntax
show_msg [-info | -warning | -error] [-title <stringValue>] <strMsg>
Argument Description
-info | -warning | -error Specifies the type of message to display. Default: -info.
Returns
None.
Example
show_msg -warning -title "Bad Value" "There was a problem extracting the
threshold voltage"
start_movie
Starts the recording of a new movie by creating a new frame buffer.
NOTE This command only starts the creation of a movie, so you must use the
add_frame and export_movie commands to complete the
operations.
Syntax
start_movie [-resolution <width>x<height>]
Argument Description
-resolution <width>x<height> Specifies the resolution of each captured frame in pixels. If not specified,
uses the current screen resolution.
Returns
None.
Example
start_movie
stop_movie
Stops recording a movie.
NOTE This command deletes the stored frame buffer. It does not save it into a
file.
Syntax
stop_movie
Returns
None.
Example
stop_movie
undo
Undoes the last command implemented or the number of commands specified.
Syntax
undo [times]
Argument Description
Returns
None.
Example
undo 2
unload_file
Unloads all the datasets belonging to the specified file.
Syntax
unload_file <filename>
Argument Description
Returns
Integer.
Example
unload_file structure2D.tdr
#-> 0
version
Returns the version of Sentaurus Visual.
Syntax
version
Returns
None.
Example
version
#-> 19.0.10
windows_style
Specifies the type of window style to use for the Sentaurus Visual GUI.
Syntax
windows_style [–sort {<plotList>}]
[-style (horizontal | vertical | grid | max | custom)]
[-direction (right_down | down_right)] [-max <numCols>]
[-aspect_ratio_on | -aspect_ratio_off]
Argument Description
-style (horizontal | Specifies a horizontal or vertical orientation, or grid style, or the use of
vertical | grid | max | maximum space or custom style.
custom)
-direction (right_down | Specifies the viewing direction of plots and where they will stretch. When
down_right) using the right_down direction, the grid fills to the right until it is full
and then continues adding new plots in a new row downwards from the first
row. When using the down_right direction, this order is inverted.
-max <numCols> Specifies the maximum number of columns in which to display the plots
when they are in a custom grid configuration.
-aspect_ratio_on | Specifies whether the aspect ratio is maintained for all the plots displayed.
-aspect_ratio_off
Returns
Integer.
Example
windows_style -style grid
#-> 0
zoom_plot
Zooms into a plot.
Syntax
zoom_plot [-plot <plotName>]
(-factor <doubleValue> | -window {<x1> <y1> <x2> <y2> [<yr1> <yr2>]} |
-reset)
Argument Description
-factor <doubleValue> Sets zoom factor. If the value is greater than 1, it zooms into a
plot. If the value is smaller than 1, it zooms out of a plot.
-window {<x1> <y1> <x2> <y2> Sets zoom window. It zooms into the specified window between
[<yr1> <yr2>]} the two x,y pairs.
Returns
None.
Example
zoom_plot -reset
This appendix describes the menus and the toolbars of the graphical
user interface of Sentaurus Visual.
Menus
This section lists the different menus.
File Menu
Table 12 File menu
Command Button Shortcut keys Description
Edit Menu
Table 13 Edit menu
Command Button Shortcut keys Description
View Menu
Table 14 View menu
Command Button Shortcut keys Description
Tools Menu
Table 15 Tools menu
Command Button Shortcut keys Description
Special Link Displays Special Link dialog box where you can
set up special linking to link only specified
properties.
Data Menu
Table 16 Data menu
Command Button Shortcut keys Description
TDR Tags Displays TDR Tags dialog box, where you can
select which tags to display on the selected plot.
Available for 2D and 3D plots only.
Window Menu
Table 17 Window menu
Command Button Shortcut keys Description
Next Plot Page Down key Moves to the next loaded plot.
Full Plot View F12 key Hides the toolbars and zooms into a plot using the
entire workspace.
Help Menu
Table 18 Help menu
Command Button Shortcut keys Description
NOTE The default viewer for the PDF of the Sentaurus Visual User Guide is
Adobe Acrobat Reader. Using another PDF viewer may disable some
cross references or external links in the PDF.
Toolbars
File Toolbar
Table 19 File toolbar
Button Description Button Description
Edit Toolbar
Table 20 Edit toolbar
Button Description Button Description
Undo Draw
(xy and 2D plots only)
Draw Toolbar
Table 21 Draw toolbar (available for xy and 2D plots only)
Button Description Button Description
View Toolbar
Table 22 View toolbar
Button Description Button Description
Best Look (xy plots only) View Plane XY (3D plots only)
Log Scale X (xy plots only) View Plane YZ (3D plots only)
Log Scale Y (xy plots only) View Plane XZ (3D plots only)
Log Scale Y Right (xy plots only) Fast Draw (3D plots only)
Tools Toolbar
Table 23 Tools toolbar
Button Description Button Description
Plot Band Diagram (xy plots only) Streamlines (2D and 3D plots only)
Cutline (2D plots only) Diff Plots (2D and 3D plots only)
Cut X (2D and 3D plots only) Integrate (2D and 3D plots only)
Movies Toolbar
Table 24 Movies toolbar
Button Description Button Description
Stop Recording
Look Toolbar
Table 25 Look toolbar
Button Description Button Description
To create a new variable, use the create_variable command. For example, to create the
common logarithm of the variable Y present in the dataset myDataset as a new variable, you
can use the command:
create_variable -name commonLogY -dataset "myDataset"
-function "log(<Y@myDataset>)"
To access variables on functions, use the format <VARIABLE@DATASET>. This new variable
will appear in the variables list of the dataset in which it was created.
NOTE Variables can be created on the Data tab of the Selection panel by
clicking the New Variable button. A dialog box is displayed where you
can interactively add functions, operators, and variables to create a new
formula.
To create a new curve, use the create_curve command. For example, to create the derivative
of Curve_1 and name it newCurve, you can use the command:
create_curve -name newCurve -function diff(<Curve_1>)
To use the curves on formulas, you must write the curve identifier in angle brackets. For
example, to use the data on Curve_1 for the differentiation function, it is written as
<Curve_1>.
NOTE Curves can be created on the Curves tab of the Selection panel by
clicking the New button. A dialog box is displayed where you can
interactively add functions, operators, and curves to create a new curve
based on a formula.
To create a new field, use the create_field command. Existing fields are used to create new
fields based on functions and operations specified by the user. In the following example,
consider two fields called ElectricField-X and ElectricField-Y. You want to create a
new field that contains the absolute value of the sum of both fields. This can be done with the
following command:
create_field -name AbsSumElectricField -dataset 2D
-function "abs(<ElectricField-X>+<ElectricField-Y>)" -show
NOTE New fields also can be created on the More tab of the Selection panel
by clicking the Add Field button.
Available Functions
Table 26 lists the available functions.
cifftim(x,y) x: Vector, Curve Vector Inverse fast Fourier transform, imaginary value.
y: Vector, Curve Curve
integr(y,x) y: Vector Vector Integrates the vector y over the range specified by x,
integr(c) x: Vector Curve or integrates the curve c.
c: Curve
tangent(c,v) x: Vector Vector Creates a tangent line in the point v on the curve c, or
tangent(x,y,v) y: Vector Curve the curve defined by the vectors x and y.
c: Curve
v: Double
■ cv_getVals
■ cv_getValsX
■ cv_getValsY
■ cv_getXaxis
■ cv_getYaxis
■ cv_printVals
■ cv_abs
■ f_Gamma
■ f_gm
■ f_IDSS
■ f_KP
■ f_Ron
■ f_Rout
■ f_TetaG
■ f_VT
■ cv_compute
■ cv_getZero
■ macro_define
■ script_exit
■ script_sleep
■ gr_formatAxis
■ gr_precision
■ gr_setLegend
■ gr_setLegendPos
Extraction Library
All the commands from this library are fully supported only if they are calculated over
displayed curves:
■ ExtractEarlyV
■ ExtractGm
■ ExtractGmb
■ ExtractIoff
■ ExtractMax
■ ExtractRon
■ ExtractSS
■ ExtractValue
■ ExtractVtgm
■ ExtractVtgmb
■ ExtractVti
If the curve is created but not displayed, the result will be the same for all commands except
ExtractIoff because the interpolation will be linear not logarithmic.
Sentaurus Visual only partially supports the commands listed in Table 28.
The following commands are not supported in this version of Sentaurus Visual:
■ cv_exists
■ cv_resetFillColor
■ cv_setFillColor
■ ds_getValue
■ proj_check
■ proj_datasetExists
■ proj_getGroups
■ proj_groupExists
The procedures of the extraction library are used to extract various parameters from the I–V
characteristics of various device types. The extraction library takes I–V data in the form of two
Tcl lists: one list contains the voltages points and the other list contains the corresponding
current values.
Syntax Conventions
The extraction library uses a unique namespace identifier (ext::) for its procedures. All
procedures and variables associated with this library are called with the namespace identifier
prepended, for example:
ext::<proc_name>
The extraction library uses an input parser that accepts arguments of the form:
keyword= <value>
NOTE You can insert whitespace between the keyword and the equal sign, for
example, keyword = <value>. Omitting the whitespace between the
equal sign and the value field will result in a failure if the value is a de-
referenced Tcl variable. Use keyword= $val (not keyword=$val).
The parser accepts arguments in any order. For some arguments, default values are predefined.
Such arguments may be omitted. If arguments for which no defaults are predefined are omitted,
the procedure will exit with an error message. In addition, unrecognized arguments result in an
error message.
Instead of using the standard Tcl method of using the return value of the procedure to pass
results back to the calling program, the extraction library uses a passing-by-reference method
to return the results to the calling program. The procedure keyword out is used to pass the
results back to the calling program:
out= <var_name>, <list_name>, or <array_name>
The following conventions are used for the syntax of Tcl commands:
■ Angle brackets – <> – indicate text that must be replaced, but they are not part of the
syntax. In particular, the following type identifiers are used:
• <r>: Replace with a real number, or a de-referenced Tcl variable that evaluates to a real
number. For example: $val.
• <i>: Replace with an integer, or a de-referenced Tcl variable that evaluates to an
integer. For example: $i.
• <string>: Replace with a string, or a de-referenced Tcl variable that evaluates to a
string. For example: $file.
• <list_of_r>: Replace with a list of real numbers, or a de-referenced Tcl variable that
evaluates to a list of real numbers. For example: $values.
• <list_of_strings>: Replace with a list of strings, or a de-referenced Tcl variable
that evaluates to a list of strings. For example: $files.
• <var_name>: Replace with the name of a local Tcl variable.
For example: val (not $val).
• <list_name>: Replace with the name of a local Tcl list.
For example: values (not $values).
• <array_name>: Replace with the name of a local Tcl array.
For example: myarray (not $myarray).
■ Brackets – [] – indicate that the argument is optional, but they are not part of the syntax.
■ A vertical bar – | – indicates options, only one of which can be specified.
If this command is included in a Sentaurus Visual file, the help information is printed to the
run-time output file of the corresponding Sentaurus Visual node. You also can type this
command in the Tcl Command panel of the graphical user interface, in which case, the help
information is displayed in a terminal window.
Output of Procedures
As discussed in Syntax Conventions on page 167, all procedures of the extraction library pass
the results back to the calling program by storing the results in a Tcl variable. The name of this
Tcl variable is specified as the value of the out keyword. All procedures beginning with
ext::Extract extract a device parameter. For example, the procedure ext::ExtractVtgm
extracts the threshold voltage:
ext::ExtractVtgm out= Vt name= "Vtgm" v= $Vgs i= $absIds
Here, since out= Vt, the extracted threshold voltage is stored in the Tcl variable Vt.
All procedures of the extraction library beginning with ext::Extract pass the extracted
value to the Sentaurus Workbench Family Tree (if the name keyword differs from
"noprint"). The extracted quantity is displayed as a Sentaurus Workbench variable.
If name= "noprint", the extracted variable is not passed to the Sentaurus Workbench Family
Tree. If name= "out", the name of the variable specified by the out keyword also is used as
the name that appears in the Sentaurus Workbench Family Tree.
Here, since name= "Vtgm", the extracted threshold voltage value is displayed as the
Sentaurus Workbench variable Vtgm.
All procedures also print several messages to the Sentaurus Visual output file (with the
extension .out). The amount of information printed in the output file depends on the
information level specified by the procedure ext::SetInfoDef. Irrespective of the specified
information level, the extracted value is printed in the output file by the procedures beginning
with ext::Extract.
If the information level for the procedure ext::ExtractVtgm is set to 1 using the info
keyword:
ext::SetInfoDef 0
ext::ExtractVtgm out= Vt name= "Vtgm" v= $Vgs i= $Ids vo= 1e-4 info= 1
If the extraction library procedure cannot extract the parameter, the parameter is set to the
character ‘x’ and a message is printed in the output file. In the case of ext::ExtractVtgm,
the following message is printed:
DOE: Vtgm x
ext::ExtractVtgm: Vtgm not found!
If there are errors in an extraction library procedure, Sentaurus Visual exits and an error
message is printed in the Sentaurus Visual error file (with the extension .err).
ext::AbsList
Computes the absolute value of all elements of a list.
Syntax
ext::AbsList out= <list_of_r> x= <list_of_r> \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
Returns
None.
Example
load_file IdVg_des.plt -name DC
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
puts "Ids= $Ids"
ext::AbsList out= Idabs x= $Ids
puts "Idabs= $Idabs"
#-> Ids= -1.42055e-08 -3.64403e-08 -9.11723e-08 ... -3.6233e-5
#-> Idabs= 1.42055e-08 3.64403e-08 9.11723e-08 ... 3.6233e-5
ext::DiffList
Computes the first-order derivative of a curve. The curve is represented by two Tcl lists: one
contains the x-values (independent variable) and one contains the corresponding y-values
(dependent variable).
Syntax
ext::DiffList out= <var_name> x= <list_of_r> y= <list_of_r> \
[yLog= 0 | 1] [xLog= 0 | 1] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
yLog Selects linear (0) or logarithmic (1) interpolation for y-axis values for
computing the derivative. Default: 0
xLog Selects linear (0) or logarithmic (1) interpolation for x-axis values for
computing the derivative. Default: 0
Returns
None.
Example
set Xs [list 1 1.5 2.5 6 7 7.5 8.5 8.7 8.8 10]
# Generate Ys using y=exp(x)+1
set Ys [list]
foreach x $Xs {
lappend Ys [expr exp($x) + 1]
}
puts "y= $Ys"
# For exponential function, use logarithmic interpolation for y-axis values
set yLog 1
ext::DiffList out= dydx x= $Xs y= $Ys yLog= $yLog
puts "dydx= $dydx"
#-> y= 3.718 5.481 13.182 ... 22027.465
#-> dydx= 2.887 4.532 12.231 ... 22012.323
ext::ExtractBVi
Extracts the breakdown voltage from an I–V curve. The breakdown voltage is defined as the
bias voltage at which the current reaches a certain level. The curve is represented by two Tcl
lists: one contains the voltage points and one contains the corresponding current values.
Syntax
ext::ExtractBVi out= <var_name> v= <list_of_r> i= <list_of_r> io= <r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "BVi")
Returns
None.
Example
load_file IcVc_des.plt -name BV
set Vcs [get_variable_data "collector InnerVoltage" -dataset BV]
set Ics [get_variable_data "collector TotalCurrent" -dataset BV]
ext::ExtractBVi out= BVcboi name= "out" v= $Vcs i= $Ics io= 1e-12
puts "BVi is [format %.3e $BVcbov] V"
#-> BVi is 9.199e+00 V
ext::ExtractBVv
Extracts the breakdown voltage from an I–V curve. The breakdown voltage is defined as the
maximum voltage that can be applied to a contact. The curve is represented by two Tcl lists:
one contains the voltage points and one contains the corresponding current values.
Syntax
ext::ExtractBVv out= <var_name> v= <list_of_r> i= <list_of_r> sign= <+1 | -1> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "BVv")
Returns
None.
Example
load_file IcVc_des.plt -name BV
set Vcs [get_variable_data "collector InnerVoltage" -dataset BV]
set Ics [get_variable_data "collector TotalCurrent" -dataset BV]
ext::ExtractBVv out= BVcbov name= "out" v= $Vcs i= $Ics sign= 1
puts "BVv is [format %.2e $BVcbov] V"
#-> BVv is 9.20e+00 V
ext::ExtractEarlyV
Extracts the Early voltage from an Ic–Vce curve. The curve is represented by two Tcl lists: one
contains the voltage points and one contains the corresponding current values.
Syntax
ext::ExtractEarlyV out= <var_name> v= <list_of_r> i= <list_of_r> vo= <r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
i List containing the collector current values. (List of real numbers, no default)
vo Bias point at which the slope of the Ic–Vce curve is determined for the
computation of the Early voltage. (Real number, no default)
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "Va")
Returns
None.
Example
# Extract Early voltage for a p-n-p bipolar transistor
load_file IcVc_des.plt -name IcVce
set Vcs [get_variable_data "collector OuterVoltage" -dataset IcVce]
set Ics [get_variable_data "collector TotalCurrent" -dataset IcVce]
ext::AbsList out= absIcs x= $Ics ;# Compute absolute value of collector current
ext::ExtractEarlyV out= Va name= "out" v= $Vcs i= $absIcs vo= -1.25
puts "Early Voltage is [format %.3e $Va] V"
#-> Early Voltage is 1.897e+01 V
ext::ExtractExtremum
Extracts the maximum or minimum of a curve. The curve is represented by two Tcl lists: one
contains the x-values and one contains the corresponding y-values.
Syntax
ext::ExtractExtremum out= <var_name> x= <list_of_r> y= <list_of_r> \
extremum= "min" | "max" [name= <string>] [f= <string>] \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "out")
Returns
None.
Example
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::ExtractGm
Extracts the maximum transconductance from an Id–Vgs curve. The transconductance g m is
defined as:
dI d
gm = (1)
d Vg
The gate bias at which the maximum transconductance occurs is computed using parabolic
interpolation. The curve is represented by two Tcl lists: one contains the voltage points and one
contains the corresponding current values.
Syntax
ext::ExtractGm out= <var_name> v= <list_of_r> i= <list_of_r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
v List containing the gate voltage values. (List of real numbers, no default)
i List containing the drain current values. (List of real numbers, no default)
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "gm")
Returns
None.
Example
# Extract gm for a PMOSFET
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::AbsList out= absIds x= $Ids
ext::ExtractGm out= gm name= "out" v= $Vgs i= $absIds
puts "gm is [format %.3e $gm] S/um"
#-> gm is -6.780e-05 S/um
ext::ExtractIoff
Extracts the drain leakage current at the specified gate voltage from an Id–Vgs curve (computed
for a high drain bias). The curve is represented by two Tcl lists: one contains the voltage points
and one contains the corresponding current values. The drain leakage current is extracted at a
small nonzero gate voltage value to avoid noise.
Syntax
ext::ExtractIoff out= <var_name> v= <list_of_r> i= <list_of_r> vo= <r> \
[log10= 0 | 1] [name= <string>] [f= <string>] \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Variable name to store the value of the drain leakage current.
v List containing the gate voltage values. (List of real numbers, no default)
i List containing the drain current values. (List of real numbers, no default)
log10 Procedure returns log10(Ioff) if set to 1. Otherwise, the procedure returns Ioff.
Default: 0
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "Ioff")
Returns
None.
Example
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::ExtractIoff out= Ioff name= "out" v= $Vgs i= $Ids vo= 1e-4 log10= 0
puts "Ioff is [format %.3e $Ioff] A/um"
ext::ExtractIoff out= log10Ioff name= "out" v= $Vgs i= $Ids vo= 1e-4 log10= 1
puts "Log10Ioff is [format %.3e $log10Ioff]"
#-> Ioff is 1.151e-7 A/um
#-> Log10Ioff is -6.939e+00
ext::ExtractRdiff
Extracts the differential resistance R diff from an I–V curve at a specified voltage. R diff is
defined as:
dV
R diff = (2)
dI
The curve is represented by two Tcl lists: one contains the voltage points and one contains the
corresponding current values.
Syntax
ext::ExtractRdiff out= <var_name> v= <list_of_r> i= <list_of_r> vo= <r> \
[yLog= 0 | 1] [xLog= 0 | 1] [name= <string>] [f= <string>] \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
yLog Selects linear (0) or logarithmic (1) interpolation for y-axis values for
computing the derivative. See note in ext::DiffList on page 172.
Default: 0
xLog Selects linear (0) or logarithmic (1) interpolation for x-axis values for
computing the derivative. See note in ext::DiffList on page 172.
Default: 0
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "Rdiff")
Returns
None.
Example
# Extract on-state output resistance of a p-n-p bipolar transistor
load_file IcVc_des.plt -name IcVce
set Vcs [get_variable_data "collector OuterVoltage" -dataset IcVce]
set Ics [get_variable_data "collector TotalCurrent" -dataset IcVce]
ext::AbsList out= absIcs x= $Ics
ext::ExtractRdiff out= Ron name= "out" v= $Vcs i= $absIcs vo= -1.25
puts "Ron is [format %.3e $Ron] Ohm-um"
#-> Ron is 38077.106 Ohm um
ext::ExtractSS
Extracts the subthreshold voltage swing, for a given gate voltage Vgo, from an Id–Vgs curve. The
subthreshold voltage swing (SS) is defined as:
1000
SS = ---------------------- (3)
d
log I d
d Vg
NOTE The slope may be noisy at the beginning of the curve or at very low
current levels. Better results are often obtained when setting Vgo to a
small but nonzero value.
Syntax
ext::ExtractSS out= <var_name> v= <list_of_r> i= <list_of_r> vo= <r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Variable name to store the value of the subthreshold voltage swing.
v List containing the gate voltage values. (List of real numbers, no default)
vo Gate voltage at which the slope is extracted. It should be a value well below
the threshold voltage. (Real number, no default)
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "SS")
Returns
None.
Example
set Vgo 1e-2
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::ExtractSS out= SS name= "out" v= $Vgs i= $Ids vo= $Vgo
puts "SS (subthreshold voltage swing) is [format %.3f $SS] mV/dec"
#-> SS (subthreshold voltage swing) is 89.555 mV/dec
ext::ExtractValue
For a given target x-value, the procedure extracts the (first) corresponding interpolated y-value
in a curve. The curve is represented by two Tcl lists: one contains the x-values and one contains
the corresponding y-values.
NOTE To find the interpolated x-value for a given y-value, swap the arguments
x and y.
Syntax
ext::ExtractValue out= <var_name> x= <list_of_r> y= <list_of_r> xo= <r> \
[yLog= 0 | 1] [xLog= 0 | 1] [name= <string>] [f= <string>] \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
yLog Selects linear (0) or logarithmic (1) interpolation for y-axis values.
Default: 0
xLog Selects linear (0) or logarithmic (1) interpolation for x-axis values.
Default: 0
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "out")
Returns
None.
Example
load_file ac_des.plt -name AC
set Vgs [get_variable_data "v(g)" -dataset AC]
set Cggs [get_variable_data "c(g,g)" -dataset AC]
ext::ExtractValue out= CggP name= "out" x= $Vgs y= $Cggs xo= 1.2
puts "CggP is [format %.3e $CggP]"
#-> CggP is 1.426e-15
ext::ExtractVtgm
Extracts the threshold voltage from an Id–Vgs curve using the maximum transconductance
method. The threshold voltage is defined as the gate–voltage axis intercept of the tangent line
at the maximum transconductance g m point. The gate bias at which the maximum
transconductance occurs is computed using parabolic interpolation. The curve is represented
by two Tcl lists: one contains the voltage points and one contains the corresponding current
values.
Syntax
ext::ExtractVtgm out= <var_name> v= <list_of_r> i= <list_of_r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
v List containing the gate voltage values. (List of real numbers, no default)
i List containing the drain current values. (List of real numbers, no default)
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "Vtgm")
Returns
None.
Example
# Extract Vtgm for a p-MOSFET
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::AbsList out= absIds x= $Ids
ext::ExtractVtgm out= Vtgm name= "out" v= $Vgs i= $absIds
puts "Vt (Max gm method) is [format %.3f $Vtgm] V"
#-> Vt (Max gm method) is -0.232 V
ext::ExtractVti
Extracts the threshold voltage for a given subthreshold current level from an Id–Vgs curve. The
threshold voltage is defined as the gate voltage at which the drain current reaches the current
level. The curve is represented by two Tcl lists: one contains the voltage points and one
contains the corresponding current values.
Syntax
ext::ExtractVti out= <var_name> v= <list_of_r> i= <list_of_r> io= <r> \
[name= <string>] [f= <string>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
v List containing the gate voltage values. (List of real numbers, no default)
i List containing the drain current values. (List of real numbers, no default)
name Name of the extracted variable to appear in the Sentaurus Workbench Family
Tree.
NOTE If name= "noprint", Sentaurus Workbench extraction is
suppressed.
NOTE If name= "out", the name of the variable specified by the out
keyword also is used as the name that appears in the Sentaurus Workbench
Family Tree.
(String, default: "Vti")
Returns
None.
Example
load_file IdVg_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::ExtractVti out= Vti name= "out" v= $Vgs i= $Ids io= 1e-7
puts "Vti (Vg at Io= 1e-7 A/um) is [format %.3f $Vti] V"
#-> Vti (Vg at Io= 1e-7 A/um) is 0.282 V
ext::FilterTable
Processes data from the Sentaurus Workbench Family Tree for the purpose of creating a graph
of one Sentaurus Workbench parameter (y-values) as a function of another Sentaurus
Workbench parameter (x-values) for a certain subset of experiments. The data is specified in
the form of two lists identifying the x- and y-values, which are preprocessed to create a graph.
The condition that an experiment must fulfill to be included in the graph is specified using a
pair of target values and a corresponding list of Sentaurus Workbench parameters.
Syntax
ext::FilterTable out= <array_name> x= <list_of_r> y= <list_of_r> \
conditions= <array_name> ncond= <i> [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Name of an array to store the results. The array has one string-valued index.
The index contains the elements X and Y. The values of the X element are a
subset of a list of values, specified using the keyword x. These values are in
ascending order. The values of the Y element are a subset of a list of values,
specified using the keyword y. All entries of the ‘y’-list that contain a
nonnumeric value are ignored. (Array name, no default)
conditions Array with two indices. The string-indexed array contains the elements
"Target" and "Values". The value of the "Target" element
contains the required value of a Sentaurus Workbench parameter to be used
as a filter condition. The "Values" element contains the corresponding
value list of the Sentaurus Workbench parameter for all the experiments.
The second integer counter enumerates the conditions. The enumerations
start with 1. (Array name, no default)
ncond Number of conditions contained in the array specified using the keyword
conditions. (Integer, no default)
info Sets local info level. Default: 0
Returns
None.
Example
# Plot Vt roll-off curve for PMOS under stress
set Types [list nMOS nMOS nMOS nMOS nMOS nMOS nMOS nMOS \
pMOS pMOS pMOS pMOS pMOS pMOS pMOS pMOS]
set Lgs [list 0.090 0.090 0.045 0.045 0.130 0.130 0.065 0.065 \
0.065 0.065 0.045 0.045 0.130 0.130 0.090 0.090]
set Stress [list no yes no yes no yes no yes \
no yes no yes no yes no yes]
set Vtgms [list 0.424 0.0374 0.313 0.263 0.414 0.364 0.408 0.358 \
-0.344 -0.294 -0.232 -0.182 x x -0.374 -0.324]
set Conditions(Target,1) "pMOS"
set Conditions(Values,1) $Types
set Conditions(Target,2) "yes"
set Conditions(Values,2) $Stress
ext::FilterTable out= LgVt x= $Lgs y= $Vtgms conditions= Conditions ncond= 2
create_variable -name Lg -dataset VtgmLg -values $LgVt(X)
create_variable -name Vtgm -dataset VtgmLg -values $LgVt(Y)
create_plot -1d -name Plot_VtRollOff
create_curve -name VtRollOff -dataset VtgmLg -axisX "Lg" -axisY "Vtgm"
puts "Lg= $LgVt(X)"
puts "Vtgm= $LgVt(Y)"
#-> Lg= 0.045 0.065 0.090
#-> Vtgm= -0.182 -0.294 -0.324
In a Sentaurus Visual script, you can use the dynamic preprocessing feature of Sentaurus
Workbench @<parameter_name>:all@ to access a list of input parameters and extracted
values for all Sentaurus Workbench experiments. For example, the lists Types, Lgs, Stress,
and Vtgms in the above example are generated automatically as a result of the following
commands in the Sentaurus Visual script:
set Types [list @Type:all@]
set Lgs [list @lgate:all@]
set Stress [list @stress:all@]
set Vtgms [list @Vt:all@]
Here, the Tcl list Types contains, for all experiments, the values of the Sentaurus Workbench
input parameter Type, which for example takes on the values nMOS or pMOS, depending on
whether in this experiment an NMOS or a PMOS structure is created.
Similarly, the Tcl list Lgs contains, for all experiments, a ‘parallel’ list of values of another
Sentaurus Workbench input parameter, which for example contains the value of the gate length
of the given MOSFETs. The corresponding extracted parameter can be accessed in the same
way. For example, the Tcl list Vtgms contains the extracted values for the threshold voltage for
each respective experiment.
NOTE The values in the various lists may or may not be numeric, and the
values may not necessarily be ordered.
The lists of x- and y-values, which will be processed (filtered) to create the graph, are specified
using the keywords x and y in the procedure ext::FilterTable. In the above example, the
lists of gate lengths (x= $Lgs) and Vtgm values (y= $Vtgms) are processed by
ext::FilterTable.
The keyword conditions controls the conditions an experiment must fulfill to be included in
the graph. The total number of conditions is specified by the keyword ncond. All the
conditions are specified in a string-indexed array using the keyword conditions. Each
condition is defined by both a target value and a corresponding list of Sentaurus Workbench
parameters. The target value is the required value of the parameter to be used as a filter
condition.
Each element of the string-indexed array has two indices. The first index is either "Target"
or "Values". The second index is the condition number. For each condition number:
■ The target value is specified using the "Target" element (element with first index named
"Target") of the array.
■ The corresponding list of Sentaurus Workbench parameters is specified using the
"Values" element (element with first index named "Values") of the array.
In the above example, the following code filters out the gate length (Lg) and threshold voltage
(Vtgm) values for PMOS devices (condition number 1). This condition is defined using the array
named Conditions:
set Conditions(Target,1) "pMOS"
set Conditions(Values,1) $Types
Here, the target value is "pMOS" and the corresponding list of Sentaurus Workbench
parameters is Types.
To filter out Lg and Vtgm values for devices under stress (condition number 2), the following
additional elements of the Conditions array are defined:
set Conditions(Target,2) "yes"
set Conditions(Values,2) $Stress
As a result of specifying both the conditions (conditions= Conditions ncond= 2), the
procedure ext::FilterTable filters out Lg and Vtgm values for PMOS devices under stress.
In the above example, if both the conditions are defined in the Conditions array but the
number of conditions is set to 1 (conditions= Conditions ncond= 1), the procedure
filters out the gate length and Vtgm values for all the PMOS devices (with and without stress).
The second condition will not be taken into account.
The procedure returns an array (specified by the keyword out) with a one string-valued index.
The index contains the elements X and Y. The values of the X element are a subset of a list of
values, specified using the keyword x. These values are in ascending order. The values of the
Y element are a subset of a list of values, specified using the keyword y. These lists in the array
can be used to create a graph.
In the above example, the procedure returns the array LgVt (out= LgVt) consisting of a list
of Lg values and a list of Vtgm values for PMOS devices under stress. These lists can be used
directly to create the Vt roll-off curve:
create_variable -name Lg -dataset VtgmLg -values $LgVt(X)
create_variable -name Vtgm -dataset VtgmLg -values $LgVt(Y)
create_plot -1d -name Plot_VtRollOff
create_curve -name VtRollOff -dataset VtgmLg -axisX "Lg" -axisY "Vtgm"
As an additional feature, the ext::FilterTable procedure ignores all entries of the y-values
that contain a nonnumeric value. Use this feature to omit failed extractions. In the tool input
file that performs the extraction, for example, a previous Sentaurus Visual tool instance, use the
#set directive to preset the extracted variable to the value x:
#set Vtgm x
...
ext::ExtractVtgm out= Vtgm name= "out" v= $Vgs i= $absIds
The actual extraction process, here using the ext::ExtractVtgm procedure, overwrites the
preset value x with the actual value. However, if the extraction process fails, the preset value
persists.
The output of the above example shows that the Vtgm value (= x) for the 130 nm gate length
(Lg=0.130) PMOS device under stress is not included in the array LgVt. In addition, the gate
lengths in the array LgVt are in ascending order:
puts "Lg= $LgVt(X)"
puts "Vtgm= $LgVt(Y)"
#-> Lg= 0.045 0.065 0.090
#-> Vtgm= -0.182 -0.294 -0.324
ext::FindVals
For a given target x-value, this procedure extracts all of the corresponding interpolated y-values
in a curve. The curve is represented by two Tcl lists: one contains the x-values and one contains
the corresponding y-values.
NOTE To find the interpolated x-values for a given y-value, swap the
arguments x and y.
Syntax
ext::FindVals out= <var_name> x= <list_of_r> y= <list_of_r> xo= <r> \
[yLog= 0 | 1] [xLog= 0 | 1] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
yLog Selects linear (0) or logarithmic (1) interpolation for y-axis values.
Default: 0
xLog Selects linear (0) or logarithmic (1) interpolation for x-axis values.
Default: 0
Returns
None.
Example
set Xs [list 0.0 1.0 2.0 3.0 4.0]
set Ys [list 0.0 2.0 4.0 2.0 0.0]
# Find all the elements of Xs corresponding to Ys= 2.0
ext::FindVals out= xos x= $Ys y= $Xs xo= 2.0
puts "The elements of Xs corresponding to Ys= 2.0 are $xos"
ext::LinTransList
Applies a linear transformation to the elements of a list. The elements of the list are replaced
by the transformed values given by:
X' = X • m + b (4)
Syntax
ext::LinTransList out= <list_of_r> x= <list_of_r> [m= <r>] [b= <r>] \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
Returns
None.
Example
load_file IdVg_des.plt -name DC
create_plot -1d -name Plot_IdVg
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::LinTransList out= VgTrans x= $Vgs b= 0.55 ;# Shift Vg values by 0.55 V
ext::LinTransList out= IdTrans x= $Ids m= 1e6
;# Scale Id values from A/um to mA/mm
# Create the shifted and scaled Id-Vg curve
create_variable -name VgTrans -dataset IdVgTrans -values $VgTrans
create_variable -name IdTrans -dataset IdVgTrans -values $IdTrans
create_curve -name IdVgTrans -dataset IdVgTrans \
-axisX "VgTrans" -axisY "IdTrans
ext::RemoveDuplicates
For a pair of lists x and y, removes duplicate elements of the list x and the corresponding
elements of the list y.
Syntax
ext::RemoveDuplicates out= <array_name> x= <list_of_r> y= <list_of_r> \
[eps= <r>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Name of an array to store the results. The array has one string-valued index.
The index contains the elements X and Y. The values of the X element are a
subset of a list of values, specified using the keyword x. These do not contain
duplicate values. The corresponding elements of the list specified using the
keyword y are stored in the Y element. The values of the Y element are a
subset of a list of values, specified using the keyword y.
(Array name, no default)
eps If the difference between two adjacent elements of the list specified using the
keyword x is less than eps, the first element is removed.
(Real number, no default)
Returns
None.
Example
set [list 1 1 2 3 1 1 2 2 2 3]
set y [list 10 20 30 40 50 60 70 80 90 100]
ext::RemoveDuplicates out= XY x= $x y= $y
set Xs $XY(X)
set Ys $XY(Y)
puts "Xs= $Xs"
puts "Ys= $Ys"
==> Xs= 1 2 3 1 2 3
==> Ys= 20 30 40 60 90 100
ext::SetInfoDef
Sets the default information level.
The local info level also can be set using the info keyword of the procedures in the extraction
library.
Syntax
ext::SetInfoDef 0 | 1 | 2 | 3
Argument Description
Returns
None.
Example
ext::SetInfoDef 2
Overview
The impedance field method in Sentaurus Device provides an accurate and efficient way to
evaluate the effects of random variability on the electrical behavior of semiconductor devices
(see Sentaurus Device User Guide, Chapter 23 on page 597).
Within the statistical impedance field method (sIFM), Sentaurus Device generates many
randomized realizations of a reference device. For example, 10000 realizations with different
randomized doping distributions, different randomized gate oxide thicknesses, different
randomized metal grain boundaries, and so on.
For each of these individual randomizations, Sentaurus Device computes, at each bias point,
the linear current response of the randomizations with respect to the reference device.
The impedance field method (IFM) data postprocessing library helps to manage and analyze
large amounts of linear current response data. For example, the IFM library allows you to
conveniently apply standard statistical analysis methods to data such as computing and
visualizing the distribution and comparing it to a Gaussian distribution.
The IFM library also supports the construction of the individual electrical characteristics of the
randomized devices from the electrical characteristics of the reference device and the linear
current response data.
Syntax Conventions
The IFM library uses a unique namespace identifier (ifm::) for its procedures. All procedures
and variables associated with this library are called with the namespace identifier prepended,
for example:
ifm::<proc_name>
The IFM library uses an input parser that accepts arguments of the form:
keyword= <value>
NOTE You can insert whitespace between the keyword and the equal sign, for
example, keyword = <value>. Omitting the whitespace between the
equal sign and the value field will result in a failure if the value is a de-
referenced Tcl variable. Use keyword= $val (not keyword=$val).
The parser accepts arguments in any order. For some arguments, default values are predefined.
Such arguments may be omitted. If arguments for which no defaults are predefined are omitted,
the procedure will exit with an error message. In addition, unrecognized arguments result in an
error message.
Some procedures of the IFM library compute large and complex data structures. For such data
structures, the standard Tcl method of using the return value of the procedure to pass results
back to the calling program is not suitable. Therefore, for some datasets, the IFM library uses
a passing-by-reference method to exchange information between the procedure and the calling
program. Procedure arguments that use the passing-by-reference method are identified with
keyword= <var_name>, <list_name>, or <array_name>.
The following conventions are used for the syntax of Tcl commands:
■ Angle brackets – <> – indicate text that must be replaced, but they are not part of the
syntax. In particular, the following type identifiers are used:
• <r>: Replace with a real number, or a de-referenced Tcl variable that evaluates to a real
number. For example: $val.
• <i>: Replace with an integer, or a de-referenced Tcl variable that evaluates to an
integer. For example: $i.
• <string>: Replace with a string, or a de-referenced Tcl variable that evaluates to a
string. For example: $file.
• <list_of_r>: Replace with a list of real numbers, or a de-referenced Tcl variable that
evaluates to a list of real numbers. For example: $values.
ifm::Gauss
Computes the y-value of a normalized Gaussian distribution for a given x-value:
1 x–μ 2
y = -------------- exp – --- ------------
N
(5)
σ 2π 2 σ
where N is the norm of the Gaussian distribution, μ is the average, and σ is the standard
deviation.
Syntax
ifm::Gauss out= <var_name> x= <r> moments= <array_name> [help= 0 | 1]
Argument Description
out Variable name to store the corresponding y-value of the normalized Gaussian
distribution.
moments Name of an array with one string-valued index, which contains the elements
norm, ave, and std_dev. The values of these elements contain the
requested norm, the average, and the standard deviation of the Gaussian.
(Array name, no default)
Returns
None.
Example
set Moments(norm) 1.0
set Moments(ave) 0.0
set Moments(std_dev) 1.0
ifm::Gauss out= G x= 0.1 moments= Moments
puts "The result is $G"
ifm::GetDataQuantiles
Computes quantiles for a list of random variables.
This procedure sorts a list of random values and associates each value with the corresponding
quantile (a value between 0 and 1).
Syntax
ifm::GetDataQuantiles out= <array_name> rvs= <list_of_r> [help= 0 | 1]
Argument Description
Returns
None.
Example
set RanVals [list -1.657 0.7661 2.142 1.189 -1.919 -0.6670 -0.1915 0.3662]
ifm::GetDataQuantiles out= DataQ rvs= $RanVals
puts $DataQ(X)
#-> -1.919 -1.657 -0.6670 -0.1915 0.3662 0.7661 1.189 2.142
puts $DataQ(Y)
#-> 0.0625 0.1875 0.3125 0.4375 0.5625 0.6875 0.8125 0.9375
ifm::GetGaussian
Computes either a Gaussian curve:
1 x–μ 2
G ( x ) = -------------- exp – --- ------------
N
(6)
σ 2π 2 σ
where N is the norm of the Gaussian distribution, μ is the average, and σ is the standard
deviation.
Syntax
ifm::GetGaussian out= <array_name> moments= <array_name> \
[nsam= <i>] [type= f | q] [xmin= <r>] [xmax= <r>] [help= 0 | 1]
Argument Description
moments Name of an array with one string-valued index, which contains the elements
norm, ave, and std_dev. The values of these elements contain the
requested norm, the average, and the standard deviation of the Gaussian.
(Array name, no default)
Returns
None.
Example
create_plot -1d -name Gaussian
select_plots Gaussian
set Moments(norm) 1.0
set Moments(ave) 0.0
set Moments(std_dev) 1.0
ifm::GetGaussian out= Gaussian type= f moments= Moments \
nsam= 100 xmin= -3.5 xmax= 3.5
create_variable -name "GX" -dataset GXY -values $Gaussian(X)
create_variable -name "GY" -dataset GXY -values $Gaussian(Y)
create_curve -name gauss -dataset GXY -axisX "GX" -axisY "GY"
ifm::GetHistogram
Computes x- and y-lists to be used to plot a histogram for a given list of random variables, a
given plotting range, and a given number of bins.
Syntax
ifm::GetHistogram out= <array_name> rvs= <list_of_r> xmin= <r> xmax= <r> \
[nbin= <i>] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
Returns
None.
Example
create_plot -1d -name Histogram
select_plots Histogram
set Rxs [list 1 1.1 2 5 5.1 5.3 6]
ifm::GetHistogram out= Histogram rvs= $Rxs xmin= 0 xmax= 6 nbin= 6
create_variable -name "X" -dataset XY -values $Histogram(X)
create_variable -name "Y" -dataset XY -values $Histogram(Y)
create_curve -name his -dataset XY -axisX "X" -axisY "Y"
ifm::GetMoments
Computes the norm, the average, and the standard deviation for a given list of random
variables:
N
1
μ = ---- x i (8)
N
i
N
1
---- ( x i – μ )
2
σ = (9)
N
i
where the norm N is given by the number of random values, the index i enumerates the
random values, μ is the average, and σ is the standard deviation.
Syntax
ifm::GetMoments out= <array_name> rvs= <list_of_r> [info= 0 | 1 | 2 | 3] \
[help= 0 | 1]
Argument Description
out Name of a string-valued array to store the computed moments. This array
contains the elements norm, ave, and std_dev. The values of these
elements contain the computed norm, the average, and the standard deviation
of the list of random variables. (Array name, no default)
Returns
None.
Example
set Vs [list 1 2 3 4 5]
ifm::GetMoments out= Moments rvs= $Vs
puts $Moments(norm)
#->5
puts $Moments(ave)
#->3
puts $Moments(std_dev)
#->1.41421356237
ifm::GetMOSIVs
Constructs the randomized Id–Vg curves for MOS-type devices for one or more randomization
sources.
The boundary condition that links the linear current response δI ν, d to the nodal drain current
dI ν, d and the gate voltage dV ν, g variations is given by:
dI ν, d = δI ν, d + y d, g dV ν, g (10)
The index ν enumerates the randomizations. The given equation gives the freedom to interpret
the linear current response directly as a change of the drain current:
dI ν, d = δI ν, d (11)
For the linearized system, the following two methods yield identical results:
■ The gate voltage adjustment method (dV):
I ν, d = I ref, d ( V ref, g – dV ν, g ) (13)
The drain current and the gate voltage of the reference device are given by I ref, d and V ref, g ,
respectively.
The equivalence of these two methods can be verified by expanding the two equations into a
Taylor series. For a nonlinear system, the two formulations are not equivalent and, depending
on the details of the nonlinearity, one or the other method may give more accurate results. To
better understand the implications, consider two limiting cases:
means that, while both δI ν, d and y d, g increase exponentially with increasing gate bias, the ratio
of the two quantities dV ν, g remains approximately constant. While large values of dI ν, d can
result in unphysical negative output currents for some randomizations, when using the drain
current adjustment method, the gate voltage adjustment method always guarantees positive and
physical output currents.
(ii) Saturating Id–Vg at low drain bias and high gate bias
In this regime, the transconductance y d, g vanishes and, therefore, dV ν, g diverges, while δI ν, d
remains approximately constant. Consequently, the large values of dV ν, g can result in
unphysical gate voltages (non-monotonous, or less than ground, or larger than the supply
voltage) for some randomizations, when using the gate voltage adjustment method. The drain
current adjustment method, however, always guarantees monotonous and physical input
voltages.
For the Id–Vg characteristic, the transition point between the subthreshold and near-threshold
regime and the saturation regime can be defined as the point of maximal transconductance and,
therefore, you can apply either the gate voltage adjustment method or the drain current
adjustment method, depending on the sign of the derivative of the transconductance. This
observation is the foundation of the third method:
■ The weighted method (weighted):
The weighted method switches between the gate voltage adjustment method and the drain
current adjustment method to avoid artificial over-adjustments of the currents or voltages. In
situations with relatively large adjustments at the transition point, discontinuities and overlaps
may be observed. The smooth option activates a smoothening procedure to eliminate these
artifacts at the transition point.
Finally, the conceptually simpler exponential method ensures nonnegative currents and also
avoids gate bias overshoots. This method often gives satisfactory results, but it violates the
linearity assumption:
■ The exponential method (exp):
dI ν, d
I ν, d = I ref, d exp ------------ (16)
I ref, d
Syntax
ifm::GetMOSIVs out= <array_name> sifm= <array_name> nrow= <var_name> \
ncol= <var_name> v= <list_of_r> i= <list_of_r> y= <list_of_r> \
id= <string> [type= IdVg] [method= dV | dI | weighted | exp] \
[smooth= yes | no] [sgn= 1 | -1] [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
sifm Name of an array that contains the sIFM data. The array has three indices:
The first index is string valued. The elements are the variability source
identifiers.
The second index is integer valued. It represents the row or bias index.
The third index is integer valued. It represents the column or randomization
index.
The array element values contain the sIFM linear current response.
(Array name, no default)
nrow Name of a variable containing the number of rows (bias points) in the sIFM
data. (Variable name, no default)
i List containing the reference current values. (List of real numbers, no default)
Returns
None.
Example
set IDs [list rdf ift SUM]
set FILEs [list]
foreach ID $IDs {
lappend FILEs mos_${ID}_I_ndrain.csv
}
ifm::ReadsIFM out= sIFM nrow= Nrow ncol= Ncol files= $FILEs ids= $IDs
set j 42
ifm::GetMOSIVs out= IV_rdf sifm= sIFM nrow= Nrow ncol= Ncol method= "weighted"
sgn= 1.0 v= $Vgs i= $Ids y= $adgs id= "rdf" smooth= yes
create_variable -name V -dataset RanIV(rdf,$j) -values $IV_rdf(X,$j)
create_variable -name I -dataset RanIV(rdf,$j) -values $IV_rdf(Y,$j)
create_curve -name IV_rdf($j) -dataset RanIV(rdf,$j) -axisX "V" -axisY "I"
ifm::GetMOSIVs out= IV_ift sifm= sIFM nrow= Nrow ncol= Ncol method= "weighted"
sgn= 1.0 v= $Vgs i= $Ids y= $adgs id= "ift" smooth= yes
create_variable -name V -dataset RanIV(ift,$j) -values $IV_ift(X,$j)
create_variable -name I -dataset RanIV(ift,$j) -values $IV_ift(Y,$j)
create_curve -name IV_ift($j) -dataset RanIV(ift,$j) -axisX "V" -axisY "I"
ifm::GetMOSIVs out= IV_SUM sifm= sIFM nrow= Nrow ncol= Ncol method= "weighted"
sgn= 1.0 v= $Vgs i= $Ids y= $adgs id= "SUM" smooth= yes
create_variable -name V -dataset RanIV(SUM,$j) -values $IV_SUM(X,$j)
create_variable -name I -dataset RanIV(SUM,$j) -values $IV_SUM(Y,$j)
create_curve -name IV_SUM($j) -dataset RanIV(SUM,$j) -axisX "V" -axisY "I"
ifm::GetMOSWeights
Computes the weights for the construction of randomized MOSFET Id–Vg curves.
This procedure computes, for each bias point, a value of either 1 or –1 to indicate that the gate
voltage adjustment method or the drain current adjustment method is to be used, depending on
the sign of the derivative of the transconductance.
Syntax
ifm::GetMOSWeights out= <list_name> y= <list_of_r> [type= IdVg] [help= 0 | 1]
Argument Description
out Name of a list to store the computed weights. (List name, no default)
Returns
None.
Example
load_file mos_ac_des.plt -name Data(AC)
set adgs [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
ifm::GetMOSWeights out= Ws y= $adgs
create_variable -name W -dataset Data(AC) -values $Ws
create_plot -1d -name Weights
select_plots Weights
create_curve -name W -dataset Data(AC) -axisX "v(ngate)" -axisY "W"
create_curve -name Y -dataset Data(AC) -axisX "v(ngate)" \
-axisY2 "a(ndrain,ngate)"
ifm::GetNoiseStdDev
Computes the drain current σ ( I d ) and the gate voltage σ ( V g ) standard deviation from the
drain current noise spectral density S d, d (see Sentaurus Device User Guide, Chapter 23 on
page 597), and the gate-to-drain admittance y d, g :
σ ( Id ) = S d, d ⋅ 1Hz (17)
S d, d ⋅ 1Hz
σ ( V g ) = ----------------------------- (18)
y d, g
Syntax
ifm::GetNoiseStdDev out= <array_name> s= <list_of_r> y= <list_of_r> \
[help= 0 | 1]
Argument Description
out Name of an array to store the results. The array has one string-valued index.
The index contains the elements I and V.
The value of the I element is a list with the current standard deviations.
The value of the V element is a list with the voltage standard deviations.
(Array name, no default)
Returns
None.
Example
load_file "mos_ac_des.plt" -name Data(AC)
set adgs [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
set S_Ids(noise) [get_variable_data S_I(ndrain) -dataset Data(AC)]
ifm::GetQQ
Compares the quantiles of a given data distribution with the quantiles of a Gaussian
distribution.
For each value in the quantiles of the Gaussian distribution, the matching (interpolated) value
of the data distributions is found. Then, the data x-values corresponding to this match are
plotted against the normalized Gaussian x-values ( x – μ ) ⁄ σ .
Syntax
ifm::GetQQ out= <array_name> dq= <array_name> gq= <array_name> \
moments= <array_name> [help= 0 | 1]
Argument Description
out Name of an array to store the results. The array has one string-valued index,
which contains the elements X and Y. The values of these elements represent
the lists of x- and y-values of a quantile–quantile comparison curve.
(Array name, no default)
dq, gq Name of arrays containing the quantiles of the given data distribution (dq)
and the quantiles of a corresponding Gaussian distribution (gq).
The arrays dq and gq each have one string-valued index, which contains the
elements X and Y. The values of these elements represent the lists of x- and y-
values of the quantiles. (Array name, no default)
moments Name of an array with one string-valued index, which contains the elements
norm, ave, and std_dev. The values of these elements contain the
requested norm, the average, and the standard deviation of the Gaussian.
(Array name, no default)
Returns
None.
Example
set RanVals [list -1.657 0.7661 2.142 1.189 -1.919 -0.6670 -0.1915 0.3662]
ifm::GetDataQuantiles out= DataQ rvs= $RanVals
ifm::GetMoments out= Moments rvs= $RanVals
ifm::GetGaussian out= GaussianQ type= q moments= Moments \
nsam= 40 xmin= -3.5 xmax= 3.5
ifm::GetsIFMStdDev
Computes the drain current and the gate voltage standard deviation from the sIFM linear
current responses and the gate-to-drain admittance.
For each bias point in the sIFM data file, this procedure reads the linear current responses and
calls ifm::GetMoments to compute the drain current standard deviation σ ( I d ) . The gate
voltage σ ( V g ) standard deviation is obtained by dividing the drain current standard deviation
by the gate-to-drain admittance y d, g .
Syntax
ifm::GetsIFMStdDev out= <array_name> sIFM= <string> y= <list_of_r> \
[help= 0 | 1]
Argument Description
out Name of an array to store the results. The array has one string-valued index.
The index contains the elements I and V.
The value of the I element is a list with the current standard deviations.
The value of the V element is a list with the voltage standard deviations.
(Array name, no default)
sIFM Name of a comma-separated value (CSV) file containing the sIFM linear
current responses. (String, no default)
Returns
None.
Example
load_file "mos_ac_des.plt" -name Data(AC)
set adgs [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
ifm::GetSNM
Computes the static noise margins (SNMs) from butterfly curves for one or more
randomization sources.
This procedure takes as input the voltage transfer characteristics (VTC) curves of the left and
the right inverters of an SRAM cell. One plot of all VTC curves is known as a butterfly curve.
The left (right) SNM is defined as the axis-aligned biggest square that can be fitted into the left
(right) lob of the butterfly curve. The effective SNM is defined as the smaller value of the two.
Syntax
ifm::GetSNM out= <array_name> squares= <array_name> vtc_left= <array_name> \
vtc_right= <array_name> ncol= <var_name> [info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Name of a string-indexed array to store the results. The elements are left,
right, and eff for the left, right, and effective SNMs. Each array entry
contains a list of the respective SNM values for all randomizations. (Array
name, no default)
squares Name of a three-indexed array to store the fitted squares representing the
SNM in the butterfly curve.
The first index is integer valued. The elements are 1 or 2 for the square of the
left or right lob of the butterfly curve.
The second index is string valued. The elements are X or Y for the x-values
and y-values of the fitted square.
The third index is integer valued and represents the randomization index.
(Array name, no default)
vtc_left, vtc_right Names of two-indexed arrays containing the left and right VTC curves.
The first index is string valued. The elements are Header or Data, where
the Header contains the names of the columns, such as Vi(0). The
corresponding Data field contains a list of voltage values.
The second index is integer valued and represents the randomization index.
(Array name, no default)
Returns
None.
Example
ifm::ReadCSV out= VTC_L file= Left_VTC.csv ncol= Ncol
ifm::ReadCSV out= VTC_R file= Right_VTC.csv ncol= Ncol
set j 42
set i_in [expr 2*$j]
set i_ot [expr 2*$j+1]
ifm::GetSNM out= SNM squares= SQ vtc_left= VTC_L vtc_right= VTC_R ncol= Ncol
ifm::GetSRAMVTC
Constructs randomized VTC curves for an SRAM cell for one or more randomization sources.
To compute the randomized VTC of an inverter from an SRAM cell, a method similar to the
weighted method outlined in ifm::GetMOSIVs on page 211 for the single transistor is used.
Unlike in a single transistor, in an SRAM cell, the output node is not connected to an external
voltage source and, therefore, Kirchhoff’s law requires that dI ν, o = 0 .
For the extraction of SRAM SNMs, you cannot require that the output small-signal voltage
variation vanishes because, during the read operation of the SRAM cell (access transistor is
switched on) in the region of low output bias (PMOS transistor is switched off), the actual
voltage of the output node is defined by the voltage divider formed by the access transistor and
the NMOS transistor. The current flow fluctuations through the access transistor cannot be
adequately compensated by adjusting the gate voltage of the NMOS (and PMOS) transistor. A
solution for the ν -th randomized SRAM cell for which all currents through the inverters are
the same, as in the reference SRAM cell, while additionally requiring that the voltage at the
output is also the same in the reference inverter would not be physical. For example, for certain
bias conditions, unrealistically large gate voltage adjustments would be needed to
overcompensate the random dopant fluctuation effects in the access transistor.
To obtain physically relevant VTC curves, both the output and input voltages are adjusted:
δI ν, o = – y o, i dV ν, i – y o, o dV ν, o (19)
A method, which results in physical VTC curves, consists of adjusting both dV ν, i and dV ν, o
based on an automatic analysis of the current flow in the reference device. For this method, the
voltage variations dV ν, i and dV ν, o are expressed in terms of voltage variations in the
coordinate system that is rotated:
dV ν, o cos ( ϕ ) sin ( ϕ ) dV ν, 1
= (20)
dV ν, i – sin ( ϕ ) cos ( ϕ ) dV ν, 2
In the rotated coordinate system, the boundary condition is imposed such that dV ν, 1 = 0 ,
resulting in:
δI ν, o
dV υ, 2 = – ----------------------------------------------------------- (21)
y o, i sin ( ϕ ) + y o, o cos ( ϕ )
At each bias point, an angle is selected that ensures a monotonous and physical solution.
For example, you can find out whether you are in the hold-like inverter regime (access
transistor is closed) or in the voltage divider regime (PMOS transistor is closed) by monitoring
the current flows in the reference SRAM cell. The reference current through the inverter is the
sum of the currents through the PMOS and the access transistors. If the main contribution
comes from the PMOS device, you are in the hold-like inverter regime, and you set ϕ to π ⁄ 2 .
On the other hand, if the main contribution comes from the access transistor, you are in the
voltage divider regime, and you set ϕ to 0. Therefore, you can use the reference current to
select the appropriate angle and then compute dV υ, 2 .
Here, pSOURCE points to the source contact of the PMOS transistor, and aDRAIN points to the
drain contact of the access transistor of the inverters of interest in the SRAM cell.
Syntax
ifm::GetSRAMVTC out= <array_name> vin= <list_of_r> vout= <list_of_r> \
fi= <list_of_r> aoi= <list_of_r> aoo= <list_of_r> id= <string> \
sifm= <array_name> nrow= <var_name> ncol= <var_name> \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
sifm Name of an array that contains the sIFM data. The array has three indices:
The first index is string valued. The elements are the variability source
identifiers.
The second index is integer valued and represents the row or bias index.
The third index is integer valued and represents the column or randomization
index. The array element values contain the sIFM linear current response.
(Array name, no default)
nrow Name of a variable containing the number of rows (bias points) in the sIFM
data. (Variable name, no default)
Returns
None.
Example
load_file sys_des.plt -name SYSTEM
load_file SRAM_des.plt -name DC
load_file sram_ac_des.plt -name AC
ifm::ReadCSV
Reads a CSV file, and passes the read data to the calling program in the form of a Tcl array.
NOTE The CSV files are assumed to have the following format: One header
line containing the names of the datasets (no whitespace) followed by a
number of rows containing the values in the dataset, for example,
-1.11e-12,3.92e-14,-1.66e-13,-6.09e-13,...
(no whitespace).
Syntax
ifm::ReadCSV out= <array_name> file= <string> ncol= <var_name> \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Name of an array with two indices to store the read data.
The first index is string valued and contains the elements Header and
Data.
The second index is integer valued and enumerates the number of columns in
the CSV file.
The values of the Header elements are the dataset names.
The values of the Data elements contain lists with the values in the dataset.
(Array name, no default)
ncol Name of a variable containing the number of columns found in the CSV file.
(Variable name, no default)
Returns
None.
Example
set Ncol 3
set CSV(Header,0) "A"
set CSV(Header,1) "B"
set CSV(Header,2) "C"
set CSV(Data,0) [list 1.1 1.2 1.3 1.4]
set CSV(Data,1) [list 2.1 2.2 2.3 2.4]
set CSV(Data,2) [list 3.1 3.2 3.3 3.4]
ifm::WriteCSV csv= CSV ncol= Ncol file= "my.csv"
ifm::ReadCSV out= ReadCSV ncol= ReadNcol file= "my.csv"
for {set icol 0} {$icol < $ReadNcol} {incr icol} {
puts "Column name is: $ReadCSV(Header,$icol)"
puts "Column data is: $ReadCSV(Data,$icol)"
}
Column name is: A
Column data is: 1.1 1.2 1.3 1.4
Column name is: B
Column data is: 2.1 2.2 2.3 2.4
Column name is: C
Column data is: 3.1 3.2 3.3 3.4
ifm::ReadsIFM
Reads one or more sIFM CSV files containing the linear current responses, and passes the read
data to the calling program in the form of a Tcl array.
NOTE The CSV files are assumed to have the following format: One header
line containing the names of the datasets (no whitespace) followed by a
number of rows containing the values in the dataset, for example,
-1.11e-12,3.92e-14,-1.66e-13,-6.09e-13,...
(no whitespace).
Syntax
ifm::ReadsIFM out= <array_name> nrow= <var_name> ncol= <var_name> \
files= <list_of_strings> ids= <list_of_strings> \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
out Name of an array to store the read data. The array has three indices:
The first index is string valued. The elements are the variability source
identifiers.
The second index is integer valued and represents the row or bias index.
The third index is integer valued and represents the column or randomization
index.
The array element values contain the sIFM linear current response.
(Array name, no default)
files List containing the names of the sIFM CSV data files.
(List of strings, no default)
ids List containing the variability source identifiers. If the list contains the
special identifier SUM, the combined data from all variability sources will
also be computed. (List of strings, no default)
nrow Name of a variable to store the number of rows (bias points) found in the
sIFM CSV file. (Variable name, no default)
Returns
None.
Example
set IDs [list rdf ift SUM]
set FILEs [list rdf_I_ndrain.csv ift_I_ndrain.csv SUM_I_ndrain.csv]
ifm::ReadsIFM out= sIFM nrow= Nrow ncol= Ncol files= $FILEs ids= $IDs
puts "The linear drain current response due to random dopant fluctuations in
the 123th randomization at 12th bias point is: sIFM(rdf,12,42) =
$sIFM(rdf,12,42). The corresponding response to interface traps is
sIFM(ift,12,42) = $sIFM(ift,12,42). The combined response is sIFM(SUM,12,42) =
$sIFM(SUM,12,42)"
NOTE The CSV file associated with the SUM ID is not actually read and,
therefore, it does not have to exist. The actual dataset is computed
automatically by summing all previously read datasets.
ifm::SetInfoDef
Sets the default information level.
The local info level also can be set using the info keyword of the procedures in the IFM
library.
Syntax
ifm::SetInfoDef 0 | 1 | 2 | 3
Argument Description
Returns
None.
Example
ifm::SetInfoDef 2
ifm::WriteCSV
Writes a Tcl array to a CSV file.
Syntax
ifm::WriteCSV file= <string> csv= <array_name> ncol= <var_name> \
[info= 0 | 1 | 2 | 3] [help= 0 | 1]
Argument Description
csv Name of an array with two indices, containing the data to be written.
The first index is string valued and contains the elements Header and
Data.
The second index is integer valued and enumerates the number of columns in
the CSV file.
The values of the Header elements are the dataset names.
The values of the Data elements contain lists with the values in the dataset.
(Array name, no default)
ncol Name of a variable containing the number of columns in the CSV data to be
written. (Variable name, no default)
Returns
None.
Example
set Ncol 3
set CSV(Header,0) "A"
set CSV(Header,1) "B"
set CSV(Header,2) "C"
set CSV(Data,0) [list 1.1 1.2 1.3 1.4]
set CSV(Data,1) [list 2.1 2.2 2.3 2.4]
set CSV(Data,2) [list 3.1 3.2 3.3 3.4]
ifm::WriteCSV csv= CSV ncol= Ncol file= "my.csv"