Skip to content

附录 A:Tcl 命令参考

NOTE

原文来源:Sentaurus Data Explorer User Guide, Version W-2024.09, Synopsys, Inc. PDF 源页码:附录 A,对应 PDF 第 122–123 页

本附录为所有 TDX Tcl 命令提供快速查找表,包含返回类型、命令名称与完整语法。详细说明和示例请参见第 3 章。


命令索引说明

类型缩写含义
Boolean成功返回 TRUE(或 1),失败返回 FALSE(或 0
Integer返回整数;出错时返回负值
String返回字符串
Double返回双精度浮点数
List返回 Tcl 列表
Handle返回对象句柄,用于标签组相关函数

TIP

所有索引(geometry_index、region_index、state_index、dataset_index)均从 0 开始。在遍历前,先用对应的 GetNum* 函数确认数量上限。


文件命令

返回类型命令语法说明
BooleanTdrFileCloseTdrFileClose <filename>关闭文件,不保存修改
BooleanTdrFileConvertTdrFileConvert <convert-cmd> [params] <src> [<dst>]在脚本中调用格式转换(等同于命令行)
IntegerTdrFileGetNumGeometryTdrFileGetNumGeometry <filename>返回文件中几何体数量
HandleTdrFileGetTagGroupTdrFileGetTagGroup <filename>返回文件根标签组句柄
BooleanTdrFileOpenTdrFileOpen <filename> [-native_units] [-reference_coordinates]打开 TDR 文件(使用前必须调用)
BooleanTdrFileSaveTdrFileSave <filename> [<new_filename>]保存所有修改(可选另存为新文件)

文件命令说明

TdrFileOpen 选项

选项说明场景
-native_units不进行单位换算,按内部单位读取需要精确数值时
-reference_coordinates将坐标和矢量数据集转换为参考坐标系有变换矩阵时避免坐标混乱

TdrFileConvert 命令格式

tcl
# 等同于命令行:tdx -mtt -y tdr_file.tdr tdr_mirr.tdr
TdrFileConvert -mtt -y tdr_file.tdr tdr_mirr.tdr

# 等同于命令行:tdx -tt -v17 old.tdr new.tdr
TdrFileConvert -tt -v17 old.tdr new.tdr

几何命令

返回类型命令语法说明
BooleanTdrGeometryDeleteTdrGeometryDelete <filename> <geom_idx>删除指定几何体(循环中需反向遍历)
IntegerTdrGeometryGetDimensionTdrGeometryGetDimension <filename> <geom_idx>返回维度(1、2 或 3)
StringTdrGeometryGetNameTdrGeometryGetName <filename> <geom_idx>返回几何体名称字符串
IntegerTdrGeometryGetNumRegionTdrGeometryGetNumRegion <filename> <geom_idx>返回该几何体的区域数量
IntegerTdrGeometryGetNumStateTdrGeometryGetNumState <filename> <geom_idx>返回该几何体的状态数量
ListTdrGeometryGetShiftTdrGeometryGetShift <filename> <geom_idx>返回偏移向量 {x y z}
HandleTdrGeometryGetTagGroupTdrGeometryGetTagGroup <filename> <geom_idx>返回几何体的根标签组句柄
ListTdrGeometryGetTransformTdrGeometryGetTransform <filename> <geom_idx>返回 3×3 变换矩阵(9 元素列表,行优先)
StringTdrGeometryGetTypeTdrGeometryGetType <filename> <geom_idx>返回几何体类型(见下表)
BooleanTdrGeometrySetNameTdrGeometrySetName <filename> <geom_idx> <name>设置几何体新名称
BooleanTdrGeometrySetShiftTdrGeometrySetShift <filename> <geom_idx> <shift_list>设置偏移向量
BooleanTdrGeometrySetTransformTdrGeometrySetTransform <filename> <geom_idx> <transform_list>设置变换矩阵

几何类型枚举值

TdrGeometryGetType 可能返回以下字符串:

类型值说明
"envelop"包络几何体
"grid_raytree"光线追踪网格几何体
"mixed_element"混合单元几何体(最常用,SDE/SProcess 输出)
"tensor_rectilinear"非均匀张量直角网格
"tensor_uniform"均匀张量直角网格
"tensor_warped"变形张量网格
"tensor_xy"XY 绘图型几何体(用于 IV 曲线等)

状态命令

返回类型命令语法说明
BooleanTdrStateDeleteTdrStateDelete <filename> <geom_idx> <state_idx>删除状态(循环中需反向遍历)
StringTdrStateGetNameTdrStateGetName <filename> <geom_idx> <state_idx>返回状态名称
HandleTdrStateGetTagGroupTdrStateGetTagGroup <filename> <geom_idx> <state_idx>返回状态的标签组句柄
BooleanTdrStateSetNameTdrStateSetName <filename> <geom_idx> <state_idx> <name>设置状态新名称

删除状态的正确方式

tcl
# 正确:反向遍历删除
set f device.tdr
TdrFileOpen $f
set ns [TdrGeometryGetNumState $f 0]

for {set i [expr $ns - 1]} {$i >= 0} {incr i -1} {
    set sname [TdrStateGetName $f 0 $i]
    if {$sname != "target_state"} {
        TdrStateDelete $f 0 $i   ;# 仅保留目标状态
    }
}
TdrFileSave $f cleaned.tdr
TdrFileClose $f

区域命令

返回类型命令语法说明
IntegerTdrRegionGetDimensionTdrRegionGetDimension <filename> <geom_idx> <reg_idx>返回区域维度
StringTdrRegionGetMaterialTdrRegionGetMaterial <filename> <geom_idx> <reg_idx>返回区域材料名称(如 "Silicon"
StringTdrRegionGetNameTdrRegionGetName <filename> <geom_idx> <reg_idx>返回区域名称
IntegerTdrRegionGetNumDatasetTdrRegionGetNumDataset <filename> <geom_idx> <reg_idx> <state_idx>返回该区域在指定状态下的数据集数量
HandleTdrRegionGetTagGroupTdrRegionGetTagGroup <filename> <geom_idx> <reg_idx>返回区域的标签组句柄
StringTdrRegionGetTypeTdrRegionGetType <filename> <geom_idx> <reg_idx>返回区域类型(见下表)
BooleanTdrRegionSetMaterialTdrRegionSetMaterial <filename> <geom_idx> <reg_idx> <material>修改区域材料
BooleanTdrRegionSetNameTdrRegionSetName <filename> <geom_idx> <reg_idx> <name>修改区域名称

区域类型枚举值

类型值说明
"bulk"体区域(半导体、绝缘层等)
"contact"接触区域(金属接触)
"interface"界面区域
"raytree"光线追踪区域
"ten_bulk"张量网格体区域
"ten_contact"张量网格接触区域
"ten_xy"张量网格 XY 绘图区域

数据集命令

返回类型命令语法说明
BooleanTdrDatasetDeleteTdrDatasetDelete <fn> <gi> <ri> <si> <di>删除数据集(循环中需反向遍历)
BooleanTdrDatasetDeleteByNameTdrDatasetDeleteByName <filename> [<name>]按正则表达式删除数据集;无名称时删除所有
StringTdrDatasetGetLocationTdrDatasetGetLocation <fn> <gi> <ri> <si> <di>返回数据集的网格位置类型
StringTdrDatasetGetNameTdrDatasetGetName <fn> <gi> <ri> <si> <di>返回数据集名称
IntegerTdrDatasetGetNumValueTdrDatasetGetNumValue <fn> <gi> <ri> <si> <di>返回数据集中的数据值数量
StringTdrDatasetGetQuantityTdrDatasetGetQuantity <fn> <gi> <ri> <si> <di>返回物理量名称(如 "ElectronConcentration"
StringTdrDatasetGetStructureTdrDatasetGetStructure <fn> <gi> <ri> <si> <di>返回数据结构类型
HandleTdrDatasetGetTagGroupTdrDatasetGetTagGroup <fn> <gi> <ri> <si> <di>返回数据集的标签组句柄
StringTdrDatasetGetTypeTdrDatasetGetType <fn> <gi> <ri> <si> <di>返回数据集的仿真类型
StringTdrDatasetGetUnitTdrDatasetGetUnit <fn> <gi> <ri> <si> <di>返回单位短名称(如 "cm^-3"
StringTdrDatasetGetUnitLongTdrDatasetGetUnitLong <fn> <gi> <ri> <si> <di>返回单位长名称
BooleanTdrDatasetRenameTdrDatasetRename <filename> [<old_name>] <new_name>全局重命名匹配的数据集
BooleanTdrDatasetRenameQuantityTdrDatasetRenameQuantity <filename> [<old_qty>] <new_qty>全局更改物理量名称
BooleanTdrDatasetSetNameTdrDatasetSetName <fn> <gi> <ri> <si> <di> <name>设置指定数据集名称
BooleanTdrDatasetSetQuantityTdrDatasetSetQuantity <fn> <gi> <ri> <si> <di> <quantity>设置指定数据集物理量

参数缩写说明<fn> = filename,<gi> = geometry_index,<ri> = region_index,<si> = state_index,<di> = dataset_index

Dataset Location 枚举值

TdrDatasetGetLocation 返回以下字符串之一:

位置值含义
"edge"数据定义在网格边上
"element"数据定义在网格单元(体心)上
"element_edge"数据定义在单元边上
"element_face"数据定义在单元面上
"element_vertex"数据定义在单元顶点上
"face"数据定义在网格面上
"region"数据定义在整个区域(单值)
"vertex"数据定义在顶点上(最常见:逐点物理量)

Dataset Structure 枚举值

TdrDatasetGetStructure 返回以下字符串之一:

结构值含义
"matrix"矩阵型(如应力张量)
"scalar"标量(如掺杂浓度、电位)
"tensor_sym"对称张量
"var_dim_vector"可变维度矢量
"vector"矢量(如电场方向)

数据值命令

返回类型命令语法说明
ListTdrDataGetAllCoordinatesTdrDataGetAllCoordinates <fn> <gi> <ri> <si> <di> <vi>返回数据值的所有坐标(Tcl 列表)
StringTdrDataGetComponentTdrDataGetComponent <fn> <gi> <ri> <si> <di> <vi> [<row>] [<col>]返回指定行列的分量值
DoubleTdrDataGetCoordinateTdrDataGetCoordinate <fn> <gi> <ri> <si> <di> <vi> <coord_idx>返回指定维度坐标值
IntegerTdrDataGetNumColTdrDataGetNumCol <fn> <gi> <ri> <si> <di> <vi>返回数据值的列数(矩阵/矢量)
IntegerTdrDataGetNumRowTdrDataGetNumRow <fn> <gi> <ri> <si> <di> <vi>返回数据值的行数
StringTdrDataGetValueTdrDataGetValue <fn> <gi> <ri> <si> <di> <vi>返回标量数据值(字符串形式)
BooleanTdrDataSetComponentTdrDataSetComponent <fn> <gi> <ri> <si> <di> <vi> [<row>] [<col>] <value>设置指定分量的新值

参数缩写说明<vi> = value_index(数据值索引)

数据值访问说明

对于标量数据集:

  • 行数 (NumRow) = 1,列数 (NumCol) = 1
  • 直接用 TdrDataGetComponent <fn> <gi> <ri> <si> <di> <vi> 读取

对于矢量数据集(如电场 E-field):

  • 行数 = 维度数(2D → 2,3D → 3),列数 = 1
  • TdrDataGetComponent ... <vi> 0 读取 x 分量
  • TdrDataGetComponent ... <vi> 1 读取 y 分量

对于矩阵数据集(如应力张量):

  • 行和列均对应维度数
  • TdrDataGetComponent ... <vi> <row> <col> 读取指定分量

标签组命令

返回类型命令语法说明
HandleTdrTagGroupCreateTdrTagGroupCreate <parent_tg> <name>在父标签组下创建新的子标签组
BooleanTdrTagGroupDeleteTdrTagGroupDelete <parent_tg> <tg_idx>按索引删除子标签组
BooleanTdrTagGroupDeleteByNameTdrTagGroupDeleteByName <parent_tg> <name>按名称删除子标签组
HandleTdrTagGroupGetByPathTdrTagGroupGetByPath <fn> [<gi>] [<ri>] [<si>] [<di>] <path>按路径字符串获取标签组(如 "a/b/c"
StringTdrTagGroupGetNameTdrTagGroupGetName <tag_group>返回标签组名称
IntegerTdrTagGroupGetNumTagTdrTagGroupGetNumTag <tag_group>返回标签组中的标签数量
IntegerTdrTagGroupGetNumTagGroupTdrTagGroupGetNumTagGroup <tag_group>返回子标签组数量
HandleTdrTagGroupGetTagGroupTdrTagGroupGetTagGroup <parent_tg> <tg_idx>按索引获取子标签组句柄

标签命令

返回类型命令语法说明
BooleanTdrTagCreateScalarTdrTagCreateScalar <parent_tg> <name> <type> <value>创建标量标签(最常用)
BooleanTdrTagDeleteTdrTagDelete <tag_group> <tag_idx>按索引删除标签
BooleanTdrTagDeleteByNameTdrTagDeleteByName <tag_group> <tag_name>按名称删除标签
StringTdrTagGetComponentTdrTagGetComponent <tg> <tag_idx> [<row>] [<col>]读取标签指定分量
StringTdrTagGetNameTdrTagGetName <tag_group> <tag_idx>返回标签名称
IntegerTdrTagGetNumColTdrTagGetNumCol <tag_group> <tag_idx>返回标签的列数
IntegerTdrTagGetNumRowTdrTagGetNumRow <tag_group> <tag_idx>返回标签的行数
StringTdrTagGetStructureTdrTagGetStructure <tag_group> <tag_idx>返回标签结构类型("scalar""matrix"
StringTdrTagGetTypeTdrTagGetType <tag_group> <tag_idx>返回标签值类型(见下表)
StringTdrTagGetValueTdrTagGetValue <tag_group> <tag_idx>返回标签值(标量结构)
BooleanTdrTagSetComponentTdrTagSetComponent <tg> <tag_idx> [<row>] [<col>] <value>设置标签分量值

TdrTagCreateScalar 的 type 参数

type 值说明示例 value
"bool"布尔值"1""0"
"int"32 位整数"42"
"int64"64 位整数"1000000"
"float"单精度浮点"3.14"
"double"双精度浮点"2.718281828"
"string"字符串"my_label"

创建标签示例

tcl
set f device.tdr
TdrFileOpen $f

# 获取文件根标签组
set root_tg [TdrFileGetTagGroup $f]

# 创建子标签组
set meta_tg [TdrTagGroupCreate $root_tg "SimulationMeta"]

# 在子标签组中创建标签
TdrTagCreateScalar $meta_tg "SimVersion"  "string" "W-2024.09"
TdrTagCreateScalar $meta_tg "Temperature" "double" "300.0"
TdrTagCreateScalar $meta_tg "Converged"   "bool"   "1"

TdrFileSave $f device_tagged.tdr
TdrFileClose $f

快速参考:参数顺序规律

TDX Tcl 命令的参数遵循固定的层次顺序:

<filename>  →  <geometry_index>  →  <region_index>  →  <state_index>  →  <dataset_index>  →  <value_index>

根据函数访问的层级,取前 N 个参数,后续参数按需追加(名称、值等)。

示例

tcl
# 访问文件层级(1 个参数)
TdrFileGetNumGeometry file.tdr

# 访问几何层级(2 个参数)
TdrGeometryGetName file.tdr 0

# 访问区域层级(3 个参数)
TdrRegionGetMaterial file.tdr 0 2

# 访问数据集层级(5 个参数)
TdrDatasetGetName file.tdr 0 2 0 1

# 访问数据值层级(6 个参数)
TdrDataGetComponent file.tdr 0 2 0 1 5

基于 Sentaurus TCAD 官方文档构建

代码块