Eastsheng's Wiki

简单双晶体管热仿真

2025-09-22 21:00:28

[toc]

简单双晶体管热仿真

  • 简单的双晶体管热模拟
    所需模块: DevEdit 3D / Thermal 3D
    最低版本要求: Atlas 5.28.1.R
    示例文件: thermalex01_plot0

本示例演示了两个晶体管的热学仿真。主要的顺序任务包括:

  1. DevEdit 3D 中定义两个相邻的晶体管区域;
  2. DevEdit 3D 中指定散热器(heat sinks);
  3. Atlas 建立接口;
  4. 选择热模型与材料参数;
  5. 求解温度分布。

在本示例中,结构是通过 DevEdit 3D 定义的。最初在 DevEdit 3D 的图形界面模式下建立结构并生成网格,随后保存命令文件,以便在 DeckBuild 中重新创建该结构。

该结构包含两个相邻的晶体管,嵌入在基底材料中。对于热模拟而言,晶体管仅被视为热源,不考虑其内部细节。在基底材料底部定义了一个铝(Al)区域作为电极。在 Atlas 中,这个区域将作为热边界条件而非电学边界条件。

go atlas 语句会自动将 DevEdit 3D 与 Atlas 连接。在读取三维网格文件后,Atlas 会自动进入三维模式。

material 语句用于通过参数 tc.const 定义各区域的热导率。该参数为热导率赋予一个常数值。后续的示例将展示温度依赖型热导率的情况。power 参数用于设定区域的热输出,即定义这些区域为热源。

只需使用命令 models thermal 即可启用三维热计算。最后阶段通过命令 solve t1=300 设定散热器(或电极)1 的温度为 300 K。最终的三维温度分布结果会保存到由 outfile 参数指定的文件中,可通过 TonyPlot 3D 查看。

若要加载并运行本示例,请在 DeckBuild > Examples 中点击 Load 按钮,这将把输入文件及所有支持文件复制到当前工作目录。然后点击 Run 按钮即可执行示例。

画图格式文件内容

thermalex01_0.set,可视化格式文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# 文件头(header)声明,用于标识文件的格式和版本信息,不会执行任何命令或对仿真产生影响
silvaco.file ASCII version=1.14.16 format=1
""
#non-visible objects 元数据行(metadata line),用于描述文件中对象(objects)的可视化状态。0表示文件中没有不可见对象。不影响仿真计算,只是文件结构的可视化属性记录
number-of-non-visible-objects 0

#non-enable-contour objects 所有对象都允许被用于绘制等值线
number-of-non-enable-contour-objects 0

#Cut Plane Settings 记录三维可视化时的观察角度、方向和缩放状态,它们不会影响仿真结果,只影响可视化展示。
# 这三个点共同定义了三维可视化中的坐标系方向。
point_1 0 0 0 # 表示第一个参考点的坐标,通常是三维视图的原点
point_2 1 0 0 # 表示第二个参考点的坐标,用于定义视图的 X 方向基准向量
point_3 0 0 1 # 表示第三个参考点的坐标,用于定义Z 方向(上方向或法线方向)

three_points 0 # 这个参数指示是否使用上述三个点来定义视角。0不启用(使用默认视图方向)
PAN 0 # 平移(pan)参数,用于控制视图在屏幕上的左右或上下移动。0 表示当前视图没有平移偏移
PITCH 90 # 表示俯仰角(pitch angle),即相机绕 X 轴的旋转角度。90 度通常意味着视角从正上方(Z 轴方向)俯视结构。
ELEV 1 # 表示相机高度(elevation)或视角仰角,控制观察点相对于模型的高度。1 可能表示从单位高度(或默认距离)观察模型。

#Cut Plane Axes Settings
# 坐标轴方向的显示方式——即在 2D/3D 绘图时,X/Y 轴是否反转、是否互换。0 不反转
X_REVERSE 0 # X 轴方向不反转
Y_REVERSE 0 # Y 轴方向不反转
XY_SWAP 0 # X 与 Y 轴不交换

#Electrode Properties #定义一个电极(electrode)的位置和编号信息
electrode "Electrode #1" 0 0 4

#Electrode Labels 定义一个名为 "Electrode #1" 的电极标签,显示名也为 "Electrode #1",标签位置坐标在 (0, 0, 0),当前状态为“不可见”。
electrode_label "Electrode #1" "Electrode #1" 0 0 0 0

#Region Properties
#这三行定义了三块不同的几何区域(Region #1~#3),
#它们对应不同的材料(由 material ID 指定),
#并将用于后续热、电仿真中设置边界条件与材料属性。
region "Region #1" 0 1 4
region "Region #2" 0 0 4
region "Region #3" 0 0 4

#Region Labels 为三个不同的区域设置可见标签(Region #1、Region #2、Region #3),并将它们显示(1)在默认位置(0 0 0)
region_label "Region #1" "Region #1" 1 0 0 0
region_label "Region #2" "Region #2" 1 0 0 0
region_label "Region #3" "Region #3" 1 0 0 0

#Isosurfaces 等值面(iso-surface)绘图设置 控制三维热或电物理量的可视化显示
iso_surf_draw_mode_id 0
iso_surf "Lattice Temperature" 308

#Overlay Properties 控制 叠加模式(overlay mode) 的状态
#参数0:表示 叠加模式未启用(OFF)。
#参数1:表示启用叠加模式(ON),在可视化时可以将多个物理量或多个绘图对象叠加显示,例如同时显示温度分布和电势分布。
overlay_mode_active 0

#Define the scene matrix 定义 三维场景矩阵,控制 3D 可视化视角、旋转、缩放和平移
# 一个 4×4 仿射变换矩阵
sm_00 -0.74098267362682446
sm_01 0.6514888833293403
sm_02 0.16280943548555929
sm_03 12.964862421565487

sm_10 0.33860615810181838
sm_11 0.5718517760587577
sm_12 -0.74721577600714795
sm_13 -51.913604071154673

sm_20 -0.579905636358506
sm_21 -0.49854566602942968
sm_22 -0.64433040577245815
sm_23 291.79837201919833

sm_30 0
sm_31 0
sm_32 0
sm_33 1

#Define the camera matrix 控制 3D 可视化时摄像机的位置和方向
cm_00 1
cm_01 0
cm_02 0
cm_03 0

cm_10 0
cm_11 1
cm_12 0
cm_13 0

cm_20 0
cm_21 0
cm_22 1
cm_23 -845.03625523005746

cm_30 0
cm_31 0
cm_32 0
cm_33 1

#Define the scene scaling factors
#定义 三维场景(scene)或模型的缩放比例
ss_xyz 1 1 1 # 1 1 1:表示 X、Y、Z 方向的缩放因子均为 1,即 保持原始比例。

#Define 3D projection
proj_3d_aspect 1.1004901960784315 # 3D 投影的长宽比(aspect ratio)数值 >1 表示 宽度略大于高度,用于控制显示画面不变形。
proj_3d_z_near 499.19702602787191 # 近裁剪平面(near clipping plane)位置 , 模型距离摄像机小于此值的部分不会显示。用于避免摄像机过近导致图形裁剪或显示异常。
proj_3d_z_far 899.05056665876384 # 远裁剪平面(far clipping plane)位置。模型距离摄像机大于此值的部分不会显示。与 z_near 一起定义可视深度范围(depth range)。
proj_3d_height 320.55221448924584 # 3D 投影窗口或场景高度(像素或单位长度)。控制模型在显示窗口中的垂直尺寸,结合 aspect 决定宽度
proj_3d_fovy 25 # 垂直视野角(field of view in Y,单位:度)。数值越大,视角越开(鱼眼效果),越小视角越窄(远距离透视)。当前 25°,属于较窄的透视视角。
proj_3d_type 0 # 投影类型。0 → 透视投影(Perspective projection),1 → 正交投影(Orthographic projection)

proj_3d_depth_cue 2 # 深度提示(depth cue)模式,用于增强远近感。
#0 → 关闭深度提示
#1 → 开启线性深度提示(远处颜色更淡)
#
#2 → 开启指数深度提示(更明显的透视远近感)
#
#当前 2 → 远近效果较强,让远处的模型颜色更淡,看起来有透视感。

coord_selection 0 # 选择使用哪种坐标系显示数据。0 → 默认世界坐标系(World / Global coordinates),1 → 局部坐标系(Local / Relative coordinates)
coord_type 0 # 选择坐标类型或显示方式。
#0 → 笛卡尔坐标(Cartesian)
#
#1 → 圆柱坐标(Cylindrical)
#
#2 → 球坐标(Spherical)

#控制 3D 可视化时模型各轴的显示比例,全部保持原比例,不影响仿真
modelview_x_scale 1
modelview_y_scale 1
modelview_z_scale 1

#Global BBox Settings 定义 整个模型的全局边界框(bounding box)
global_bbox_min -12.026903175797166 -12.026903175797166 -12.026903175797166
global_bbox_max 218.04035476369577 218.04035476369577 120.04035476369577

#Define x-y-z Axis Visibility 控制 三维坐标轴的显示状态,当前设置 1 1 1 → 三个坐标轴都可见
x_axis_visibility 1
y_axis_visibility 1
z_axis_visibility 1

#Define Legend Visibility
contour_legend 1 # 控制 等值线/等值面图例(contour legend) 是否显示。
region_legend 1 # 控制 区域图例(region legend) 是否显示。

#Define the DisplayMode
display_mode_id 11 # 指定 3D 模型的显示方式或渲染模式,当前设置 11 → 模型会以 半透明材料 + 等值面显示,同时保留区域和物理量可视化效果。

#Define Show Cut Plane
show_cut_plane 0 # 控制 可视化时是否显示截面,不影响仿真计算或数据

#Define Show Cut Plane X Y Axes
show_cut_plane_x_axis 1
show_cut_plane_y_axis 1

#Define the DrawMode
draw_mode_id 0 # 控制 3D 模型以线框方式显示

#Define the Region_Color_Type
region_color_type 0 # 每个区域使用预设的单色或软件默认颜色

mat_info "Copper 8 1"
mat_info "Electrodes 2 1"
mat_info "Molybdenum 2 1"
mat_info "NPB 70 1"
mat_info "Titanium 67 1"

#Define light0 and light1 information 控制 3D 场景光照
light0_enabled 1
light0_color 255 255 255
light0_intensity 0.52999997138977051
light0_latitude 30
light0_longitude 0

light1_enabled 1
light1_color 255 255 255
light1_intensity 0.52999997138977051
light1_latitude 0
light1_longitude 270

#Define contours information 等值面/色彩图的显示与图例配置
imp_menu_index 2 # 当前显示的数据类型索引第 2 个物理量,本例中指代 “Lattice Temperature”(晶格温度)
name-of-doping "Lattice Temperature" # 对应物理量的名称,这里显示晶格温度。
limit_select_type 0 # 最大最小值限制类型:0 → 默认使用自动计算范围,1 → 用户自定义范围
auto_max_limit 1 # 是否自动确定最大值/最小值:1 → 自动,0 → 使用手动设置
auto_min_limit 1
contour_max_imp_value 327.511573 # 等值面或色图显示的最大值(如果未使用自动)。单位通常与物理量一致(这里是温度 K)。
contour_min_imp_value 0 # 等值面或色图显示的最小值
legend_type 0 # 图例类型:0 → 简单连续色条,1 → 带数值标注等其他风格
legend_auto_mapping 1 # 是否自动映射物理值到颜色:1 → 自动,0 → 使用自定义映射
legend_mapping 0 # 自定义映射索引
legend_palette 0 # 颜色调色板索引
legend_nbr_of_colors 5 # 图例分段颜色数量(5 段),对应等值面或色彩图的颜色阶梯。

EOF 1283132480 # 表示 End Of File(文件结束),告诉 TonyPlot / DevEdit 文件解析器 已到文件末尾。
#数字 1283132480,这是一个 时间戳或校验码,用于文件版本管理或防止文件损坏。

输入文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# (c) Silvaco Inc., 2019
go devedit

#
# ATLAS 3D Thermal simulation
# Two power transistor simulation
#

DevEdit version="2.0" library="1.14"

work.area left=0 top=0 right=200 bottom=200

# SILVACO Library V1.14

region reg=1 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=100 \
points="0,0 200,0 200,200 0,200 0,0"
#
constr.mesh region=1 default

region reg=2 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=2 \
points="20,30 85,30 85,90 20,90 20,30"
#
constr.mesh region=2 default

region reg=3 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=2 \
points="130,30 165,30 165,140 140,140 140,55 130,55 130,30"
#
constr.mesh region=3 default

region reg=4 mat=Aluminum elec.id=1 color=0xffc0c0 pattern=0x7 Z1=100 Z2=102 \
points="0,0 200,0 200,200 0,200 0,0"
#
constr.mesh region=4 default



# Set Meshing Parameters
#
base.mesh height=1000000 width=1000000
#设置边界条件
bound.cond !apply max.slope=28 max.ratio=300 rnd.unit=0.001 line.straightening=1 align.points when=automatic
#
imp.refine min.spacing=0.02 z=0
#
constr.mesh max.angle=90 max.ratio=300 max.height=20 \
max.width=20 min.height=0.0001 min.width=0.0001
#
constr.mesh type=Semiconductor default
#
constr.mesh type=Insulator default
#
constr.mesh type=Metal default
#
constr.mesh type=Other default
#
constr.mesh region=1 default
#
constr.mesh region=2 default
#
constr.mesh region=3 default
#
constr.mesh region=4 default
#
# Perform mesh operations
#
Mesh Mode=MeshBuild
refine mode=both x1=8.04953560371517 y1=22.9102167182663 x2=91.0216718266254 y2=96.594427244582
refine mode=both x1=123.529411764706 y1=22.6006191950464 x2=174.922600619195 y2=145.510835913313
refine mode=both x1=99.6904024767802 y1=21.671826625387 x2=113.931888544892 y2=107.430340557276

imp.refine min.spacing=0.02 z=0

constr.mesh max.angle=90 max.ratio=300 max.height=20 \
max.width=20 min.height=0.0001 min.width=0.0001
#
constr.mesh type=Semiconductor default
#
constr.mesh type=Insulator default
#
constr.mesh type=Metal default
#
constr.mesh type=Other default

z.plane z=0 spacing=0.5
#
z.plane z=2 spacing=0.5
#
z.plane z=50 spacing=10
#
z.plane z=100 spacing=20
#
z.plane max.spacing=1000000 max.ratio=10

base.mesh height=1000000 width=1000000

bound.cond !apply max.slope=28 max.ratio=300 rnd.unit=0.001 line.straightening=1 align.Points when=automatic

mesh meshbuild

struct outfile=thermalex01.str

##########################

go atlas

mesh infile=thermalex01.str
#物理属性设置,热导率(tc.const)设置常数
material region=1 tc.const=1.2
material region=2 tc.const=1. power=0.35
material region=3 tc.const=1.1 power =0.4
#热仿真模型设置,启用热模型,用于计算热传导和温度分布
models thermal
method
#设置仿真初始温度为 300 K
solve t1=300 outf=thermalex01_0.str
tonyplot3d thermalex01_0.str -set thermalex01_0.set
#
quit


理解格式文件代码

  • electrode "<电极名称>" <编号> <区域号> <表面编号>
    electrode "Electrode #1" 0 0 4
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    - 这行代码定义了一个名为 **“Electrode #1”** 的电极,它:
    - 是第 **0 号电极**(内部编号);
    - 附着在第 **0 号区域(region 0)** 上;
    - 接触到该区域的 **第 4 号表面(surface 4)**
    -**DevEdit 3D / Atlas** 中,电极并不是一个“独立几何体”,
    而是附着在某个区域(region)的一个表面上,用于:
    - 指定电势(电边界条件);
    - 或在热仿真中定义热边界(例如恒温散热器)。



    - ```
    electrode_label "Electrode #1" "Electrode #1" 0 0 0 0
    electrode_label "<电极内部名称>" "<显示名称>" x y z visible_flag
    - - | 参数 | 含义 | | ---------------- | ------------------------------------------------------------ | | `"Electrode #1"` | 电极的内部名称(必须与 `electrode` 语句中定义的名称一致)。 | | `"Electrode #1"` | 电极的显示名称(TonyPlot 或 DevEdit 中显示的文字,可与上面不同)。 | | `0 0 0` | 电极标签在三维空间中的坐标(x, y, z),通常用于在可视化界面中放置标签位置。 | | `0` | 可见性标志(visibility flag): - `0` → 标签不可见或默认隐藏; - `1` → 标签在可视化中显示。 | - 定义一个名为 `"Electrode #1"` 的电极标签,显示名也为 `"Electrode #1"`, 标签位置坐标在 (0, 0, 0),当前状态为“不可见”。
  • region "Region #1" 0 1 4
    region "<区域名称>" <region_id> <material_id> <dimension>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    -

    - | 参数 | 含义 |
    | ------------- | ------------------------------------------------------------ |
    | `"Region #1"` | 区域名称(用户定义的名称,用于区分不同的材料区)。 |
    | `0` | 区域编号(Region ID,内部索引号)。 |
    | `1` | 材料编号(Material ID,对应某种材料,例如 0=Si,1=Al,2=SiO₂ 等)。 |
    | `4` | 维度或几何定义模式(一般为内部用途标识;在大多数 3D 结构中固定为 4)。 |

    - ```
    iso_surf_draw_mode_id 0
    - **含义**:设置等值面绘制模式(draw mode)。 **参数 0**:表示使用默认绘制模式(通常是表面平滑显示)。 **其他可能值**:有些版本中: - `1` → 网格线模式显示; - `2` → 半透明模式显示。 作用:控制等值面的可视化风格。
  • iso_surf "Lattice Temperature" 308
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31

    - 定义一个等值面(iso-surface),用于可视化某个物理量的特定值。

    -

    - | 参数 | 说明 |
    | ----------------------- | ----------------------------------------------------------- |
    | `"Lattice Temperature"` | 等值面对应的物理量(此处为晶格温度,Lattice Temperature)。 |
    | `308` | 等值面值,即在 **308 K** 处绘制温度等值面。 |


    - ```
    sm_00 -0.74098267362682446
    sm_01 0.6514888833293403
    sm_02 0.16280943548555929
    sm_03 12.964862421565487

    sm_10 0.33860615810181838
    sm_11 0.5718517760587577
    sm_12 -0.74721577600714795
    sm_13 -51.913604071154673

    sm_20 -0.579905636358506
    sm_21 -0.49854566602942968
    sm_22 -0.64433040577245815
    sm_23 291.79837201919833

    sm_30 0
    sm_31 0
    sm_32 0
    sm_33 1
    - 这实际上是一个 **4×4 仿射变换矩阵**(homogeneous transformation matrix): - ``` | sm_00 sm_01 sm_02 sm_03 | | sm_10 sm_11 sm_12 sm_13 | | sm_20 sm_21 sm_22 sm_23 | | sm_30 sm_31 sm_32 sm_33 |
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    - 前 3×3 子矩阵 (`sm_00` ~ `sm_22`) 控制 **旋转和缩放**。

    4 列 (`sm_03, sm_13, sm_23`) 控制 **平移(translation)**。

    最后一行 (`sm_30~sm_33`) 为齐次坐标行,通常为 `[0 0 0 1]`。

    - `sm_00, sm_01, sm_02` → X 方向在新坐标系中的投影(旋转 + 缩放)

    `sm_10, sm_11, sm_12` → Y 方向在新坐标系中的投影

    `sm_20, sm_21, sm_22` → Z 方向在新坐标系中的投影

    `sm_03, sm_13, sm_23` → 模型在 X、Y、Z 的平移量

    `sm_30~sm_33` → 齐次坐标,用于矩阵运算,固定 [0 0 0 1]

    - ```
    contour_legend 1
    region_legend 1
    - **`contour_legend 1`** - 控制 **等值线/等值面图例(contour legend)** 是否显示。 - `1` → 显示等值线或等值面对应的图例,标明物理量值(如温度、电势)。 - `0` → 不显示图例。 1. **`region_legend 1`** - 控制 **区域图例(region legend)** 是否显示。 - `1` → 显示各个材料或区域的标签颜色说明,例如 Region #1 = 铝、Region #2 = 硅。 - `0` → 不显示区域图例。
  • show_cut_plane_x_axis 1
    show_cut_plane_y_axis 1
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    - **`show_cut_plane_x_axis 1`**

    - 控制 **X 方向的截面平面**是否显示。
    - `1` → 显示 X 方向截面平面
    - `0` → 不显示 X 方向截面平面

    1. **`show_cut_plane_y_axis 1`**

    - 控制 **Y 方向的截面平面**是否显示。
    - `1` → 显示 Y 方向截面平面
    - `0` → 不显示 Y 方向截面平面

    - ```
    mat_info "Copper 8 1"
    mat_info "Electrodes 2 1"
    mat_info "Molybdenum 2 1"
    mat_info "NPB 70 1"
    mat_info "Titanium 67 1"

    - ``` mat_info "MaterialName ID SomeFlag"
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29

    - **MaterialName**:材料名称

    - 例如 `"Copper"`、`"Molybdenum"`

    **ID**:材料编号,对应 DevEdit / Atlas 中的区域编号,用于区分不同材料

    **SomeFlag**:控制属性或显示方式的标志(通常为 1,表示激活或可见)

    -

    - || 材料名称 | ID | 标志 | 说明 |
    | ------------------------- | ------------------ | ---- | ---- | ---------------------------- |
    | mat_info "Copper 8 1" | Copper(铜) | 8 | 1 | 材料 8,被激活/可见 |
    | mat_info "Electrodes 2 1" | Electrodes(电极) | 2 | 1 | 电极材料,编号 2 |
    | mat_info "Molybdenum 2 1" | Molybdenum(钼) | 2 | 1 | 钼材料,编号 2 |
    | mat_info "NPB 70 1" | NPB | 70 | 1 | NPB 材料(可能为聚合物或膜) |
    | mat_info "Titanium 67 1" | Titanium(钛) | 67 | 1 | 钛材料,编号 67 |



    ### 理解输入文件代码

    **Silvaco TCAD**(主要使用 DevEdit 和 ATLAS 仿真平台)中的 **3D 热仿真** 模拟脚本,用于模拟两种功率晶体管的热行为。下面是详细解释:

    ---

    #### 🔹 **开头注释**

(c) Silvaco Inc., 2019

go devedit

1
2
3
4
5
6
7
8

* **版权声明**:这是 Silvaco 公司发布的代码,版本为 2019
* **`go devedit`**:启动 **DevEdit** 工具,通常用于创建和编辑 3D 结构模型。

---

#### 🔹 **仿真类型和目标**

ATLAS 3D Thermal simulation

Two power transistor simulation

1
2
3
4
5
6
7

* 这段代码的目的是进行 **3D 热仿真**,模拟 **两种功率晶体管**的热行为。

---

#### 🔹 **DevEdit 版本和库设置**

DevEdit version=”2.0” library=”1.14”

1
2
3
4
5
6
7

* 使用 **DevEdit 2.0** 版本和 **Silvaco 库版本 1.14** 来定义材料和模型。

---

#### 🔹 **定义工作区域**

work.area left=0 top=0 right=200 bottom=200

1
2
3
4
5
6
7
8
9

* 定义 **工作区域**,其左、上、右、下边界分别为 0, 0, 200, 200,控制模型显示区域的范围。

---

#### 🔹 **定义区域(材料和区域网格)**

* **区域 1 (Silicon)**:

region reg=1 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=100 points=”0,0 200,0 200,200 0,200 0,0”

1
2
3
4
5
6

* 该区域使用 **硅材料**,颜色为橙色 (RGB: `0xffc000`),区域的 **高度** 为 100(Z1=0, Z2=100)。
* 定义区域的 **几何形状**,给出顶点坐标。

* **区域 2 (Silicon)**


region reg=2 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=2 points=”20,30 85,30 85,90 20,90 20,30”
1
2
3
4
5

* 该区域使用 **硅材料**,高度为 2(Z1=0, Z2=2),几何形状为一个矩形。

* **区域 3 (Silicon)**


region reg=3 mat=Silicon color=0xffc000 pattern=0x4 Z1=0 Z2=2 points=”130,30 165,30 165,140 140,140 140,55 130,55 130,30”
1
2
3
4
5

* 使用 **硅材料**,高度为 2,几何形状为一个不规则四边形。

* **区域 4 (Aluminum)**


region reg=4 mat=Aluminum elec.id=1 color=0xffc0c0 pattern=0x7 Z1=100 Z2=102 points=”0,0 200,0 200,200 0,200 0,0”
1
2
3
4
5
6
7

* 该区域使用 **铝材料**,电极 ID 1,几何形状与区域 1 相同,设置了 Z 方向的高度(Z1=100, Z2=102)。

---

#### 🔹 **网格设置**


base.mesh height=1000000 width=1000000

1
2
3
4
5
6

* 定义 **网格大小**,宽高非常大,可能表示不对整个区域进行细网格化,而是在某些关键区域进行局部细化。

- ```
bound.cond !apply max.slope=28 max.ratio=300 rnd.unit=0.001 line.straightening=1 align.points when=automatic

-

-

  • 参数 含义 作用
    bound.cond Boundary condition(边界条件) 定义几何或物理边界的条件,如形状、角度、节点排列方式
    !apply 执行命令的标志(有些软件用 ! 表示“立即执行”) 表示立即对当前模型边界应用这些设置
    max.slope=28 最大允许的边界斜率或倾角 限制边界线段之间的最大坡度变化,以防止过陡或异常几何导致网格畸变
    max.ratio=300 最大单元尺寸比 限制相邻单元的尺寸比例,避免出现“细长”或“极不均匀”的单元
    rnd.unit=0.001 圆角或随机扰动的单位尺度(rounding unit) 控制边界节点在自动拟合或平滑时的最小调整步长,通常用于消除几何噪声
    line.straightening=1 直线平滑开关(1 = 开启) 自动平滑边界线,使不规则边界更趋直,以优化网格质量
    align.points 节点对齐 确保边界上各网格点在相邻几何段之间位置一致,减少交界处的误差
    when=automatic 自动执行模式 当程序检测到需要重新调整边界时(例如重新划分网格),自动应用这些条件

🔹 网格优化和细化

1
2
constr.mesh max.angle=90 max.ratio=300 max.height=20 \
max.width=20 min.height=0.0001 min.width=0.0001
  • 设置网格生成的最大角度、最大比例、最大高度和宽度等参数,保证网格的质量,避免过大的网格。

🔹 物理属性设置

1
2
3
material region=1 tc.const=1.2
material region=2 tc.const=1. power=0.35
material region=3 tc.const=1.1 power =0.4
  • 热导率tc.const)设置:
    • 区域 1 使用热导率为 1.2(硅)。
    • 区域 2 和 3 的热导率分别为 1 和 1.1,且为功率区域(power),分别为 0.35 和 0.4。

🔹 热仿真模型设置

1
models thermal
  • 启用 热模型,用于计算热传导和温度分布。

🔹 求解和仿真

1
2
solve t1=300 outf=thermalex01_0.str
tonyplot3d thermalex01_0.str -set thermalex01_0.set
  • **solve**:设置仿真初始温度为 300 K,输出文件为 thermalex01_0.str
  • **tonyplot3d**:使用 TonyPlot 进行 3D 可视化,载入计算结果并显示。

🔹 退出

1
quit
  • 结束仿真和软件会话。

🔹 总结

这段脚本用于在 Silvaco TCAD 环境中创建一个 3D 热仿真模型,模拟功率晶体管的热行为。脚本分为几个主要部分:

  1. 定义模型区域和材料
  2. 设置网格
  3. 定义物理参数
  4. 执行仿真计算并可视化结果

整个过程涉及使用 DevEdit 编辑模型结构,使用 ATLAS 求解热仿真,并通过 TonyPlot 进行结果展示。

模拟结果