[toc]
简单双晶体管热仿真
- 简单的双晶体管热模拟
所需模块: DevEdit 3D / Thermal 3D
最低版本要求: Atlas 5.28.1.R
示例文件: thermalex01_plot0
本示例演示了两个晶体管的热学仿真。主要的顺序任务包括:
- 在 DevEdit 3D 中定义两个相邻的晶体管区域;
- 在 DevEdit 3D 中指定散热器(heat sinks);
- 与 Atlas 建立接口;
- 选择热模型与材料参数;
- 求解温度分布。
在本示例中,结构是通过 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 | # 文件头(header)声明,用于标识文件的格式和版本信息,不会执行任何命令或对仿真产生影响 |
输入文件内容
1 | # (c) Silvaco Inc., 2019 |
理解格式文件代码
electrode "<电极名称>" <编号> <区域号> <表面编号> electrode "Electrode #1" 0 0 4- - | 参数 | 含义 | | ---------------- | ------------------------------------------------------------ | | `"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),当前状态为“不可见”。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_flagregion "Region #1" 0 1 4 region "<区域名称>" <region_id> <material_id> <dimension>- **含义**:设置等值面绘制模式(draw mode)。 **参数 0**:表示使用默认绘制模式(通常是表面平滑显示)。 **其他可能值**:有些版本中: - `1` → 网格线模式显示; - `2` → 半透明模式显示。 作用:控制等值面的可视化风格。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 0iso_surf "Lattice Temperature" 308- 这实际上是一个 **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
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- **`contour_legend 1`** - 控制 **等值线/等值面图例(contour legend)** 是否显示。 - `1` → 显示等值线或等值面对应的图例,标明物理量值(如温度、电势)。 - `0` → 不显示图例。 1. **`region_legend 1`** - 控制 **区域图例(region legend)** 是否显示。 - `1` → 显示各个材料或区域的标签颜色说明,例如 Region #1 = 铝、Region #2 = 硅。 - `0` → 不显示区域图例。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 1show_cut_plane_x_axis 1 show_cut_plane_y_axis 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
- **`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"
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 |
|
ATLAS 3D Thermal simulation
Two power transistor simulation
1 |
|
DevEdit version=”2.0” library=”1.14”
1 |
|
work.area left=0 top=0 right=200 bottom=200
1 |
|
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 |
|
-
-
参数 含义 作用 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 | constr.mesh max.angle=90 max.ratio=300 max.height=20 \ |
- 设置网格生成的最大角度、最大比例、最大高度和宽度等参数,保证网格的质量,避免过大的网格。
🔹 物理属性设置
1 | material region=1 tc.const=1.2 |
- 热导率(
tc.const)设置:- 区域 1 使用热导率为 1.2(硅)。
- 区域 2 和 3 的热导率分别为 1 和 1.1,且为功率区域(
power),分别为 0.35 和 0.4。
🔹 热仿真模型设置
1 | models thermal |
- 启用 热模型,用于计算热传导和温度分布。
🔹 求解和仿真
1 | solve t1=300 outf=thermalex01_0.str |
- **
solve**:设置仿真初始温度为 300 K,输出文件为thermalex01_0.str。 - **
tonyplot3d**:使用TonyPlot进行 3D 可视化,载入计算结果并显示。
🔹 退出
1 | quit |
- 结束仿真和软件会话。
🔹 总结
这段脚本用于在 Silvaco TCAD 环境中创建一个 3D 热仿真模型,模拟功率晶体管的热行为。脚本分为几个主要部分:
- 定义模型区域和材料
- 设置网格
- 定义物理参数
- 执行仿真计算并可视化结果
整个过程涉及使用 DevEdit 编辑模型结构,使用 ATLAS 求解热仿真,并通过 TonyPlot 进行结果展示。