Eastsheng's Wiki

GaAs 集成电路结构(GaAs IC Structure)热模拟

2025-10-24 18:00:28

[toc]

GaAs 集成电路结构(GaAs IC Structure)

要求: DevEdit 3D / Thermal 3D
最低版本: Atlas 5.28.1.R
示例文件: thermalex04_plot0


本示例对一个包含三个产热器件的 GaAs 集成电路结构 进行热模拟。

该器件由三个定义为热源的 GaAs 区域组成,这些热源嵌入在 GaAs 衬底中。
在衬底底部施加了一个 热接触面(thermal contact)
该结构通过 DevEdit 3D 构建,方法与本节前面的示例类似。

Atlas 中,material 语句用于定义三个 GaAs 区域中两个区域的功率输出。
衬底的热导率被定义为 温度依赖型,根据参数 tcon.power 进行设置。

本示例旨在展示:
邻近发热器件产生的热量如何影响一个不发热的晶体管
第三个 GaAs 区域(定义为 region #4)本身没有热功率输出,
但解算结果文件将显示该器件通过热传导受到了来自邻近器件的加热。

要加载并运行此示例:
DeckBuild 中选择 Load 按钮,将输入文件及支持文件复制到当前工作目录;
然后选择 Run 按钮运行该示例。

输入文件内容

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
# (c) Silvaco Inc., 2019
go devedit

DevEdit version="2.1" library="1.15"

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

# DevEdit V2.1 L1.15

region reg=1 mat=GaAs color=0xffcb pattern=0x9 Z1=0 Z2=75 \
points="0,50 0,0 50,0 50,50 0,50"
#
constr.mesh region=1 default

region reg=2 mat=GaAs color=0xffcb pattern=0x9 Z1=0 Z2=0.3 \
points="10,15 15,15 15,30 10,30 10,15"
#
constr.mesh region=2 default

region reg=3 mat=GaAs color=0xffcb pattern=0x9 Z1=0 Z2=0.3 \
points="22.5,15 27.5,15 27.5,30 22.5,30 22.5,15"
#
constr.mesh region=3 default

region reg=4 name=GaAs mat=GaAs color=0xffcb pattern=0x9 Z1=0 Z2=0.3 \
points="40,15 40,30 35,30 35,15 40,15"
#
constr.mesh region=4 default
# 该区域(region 5,即银基底)被指定为一个电极区域(electrode region),并且它的电极编号(electrode ID)为 1
region reg=5 name=substrate mat=Silver elec.id=1 work.func=0 color=0x7fff pattern=0xc Z1=75 Z2=76 \
points="0,0 50,0 50,50 0,50 0,0"
#
constr.mesh region=5 default



# Set Meshing Parameters
#
base.mesh height=1000000 width=1000000
# 在生成边界网格时,保持边界线平滑(最大斜率变化 28°),相邻单元尺寸变化不超过 300 倍,允许 0.001 的微扰动来优化节点分布,并在自动模式下自动对齐点
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=6 \
max.width=6 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
#
constr.mesh region=5 default
#
# Perform mesh operations
# 指定网格(Mesh)的生成模式, 采用张量积(Tensor Product)方式生成,也称为规则正交网格(Structured Orthogonal Mesh)。也即每个方向(x、y、z)单独划分网格点,程序自动把它们组合成规则的方格或立方体
Mesh Mode=TensorProduct
# 对网格在 x 和 y 方向 上都进行局部加密,在物理变化剧烈的区域(例如结区、界面、金属接触处、PN 结、电流集中区)提高计算精度
refine mode=both x1=6.3 y1=12.66 x2=43.13 y2=32.93
# 针对掺杂分布(impurity profile) 进行自动加密
imp.refine min.spacing=0.02 z=0

constr.mesh max.angle=90 max.ratio=300 max.height=6 \
max.width=6 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=0.3 平面 上生成平行于 XY 面的网格切片,网格间距为 0.15 μm。
z.plane z=0.3 spacing=0.15
#
z.plane z=15 spacing=5
#
z.plane z=75 spacing=10
#
z.plane max.spacing=1000000 max.ratio=100

base.mesh height=1000000 width=1000000
# 再次应用,为了在不同的网格生成和 refine 阶段都对边界条件和网格控制生效,保证整个三维模型的边界和网格质量。
bound.cond !apply max.slope=28 max.ratio=300 rnd.unit=0.001 line.straightening=1 align.Points when=automatic
#生成或构建网格的命令,把之前定义的网格参数实际生成网格结构,供模拟使用
mesh meshbuild

struct outfile=thermalex04.str

go atlas

mesh infile=thermalex04.str
#激活 热传导模型,需要考虑自加热或电-热耦合,可以结合 models 加上 srh, mobility, lattice 等其他物理模型
models thermal

material reg=1 tcon.power
material reg=2 power=0.02
material reg=3 power=0.03
#指定求解方法为 Newton 法(非线性求解器),用于求解热传导方程。
method newton

solve t1=300 outf=thermalex04_0.str
tonyplot3d thermalex04_0.str -set thermalex04_0.set

quit

理解代码

见in文件

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

我们来逐项解释其含义👇:


🧩 整体作用:

bound.cond 表示 边界条件与网格生成的约束设置(Boundary Conditions for Meshing)
这些参数并不是物理边界条件(如电势或温度),而是 用于控制网格划分质量和平滑度的几何约束条件

这条语句主要是告诉 DevEdit 在自动生成网格时如何优化边界线和节点分布


🔍 各参数详解:

参数 含义 作用
!apply 表示在调用 bound.cond 时不立即应用(可在后续命令或界面操作中启用) 临时设定,用于后续自动网格生成
max.slope=28 最大允许边界斜率变化(单位:度) 控制边界的“弯曲度”,防止网格线过度弯曲导致质量差
max.ratio=300 相邻网格单元的最大尺寸比 限制网格尺寸变化的剧烈程度,防止网格“跳变”太大
rnd.unit=0.001 随机扰动单位(mesh 随机化步长) 用于避免节点重合或数值奇异性,保证网格稳定性
line.straightening=1 启用边界线平滑功能 对弯曲边界进行线性化或优化,使边界更平滑
align.points when=automatic 当自动模式下对齐边界点 自动对齐边界点以避免交叉、错位等问题

💡 直观理解:

这条命令可以理解为:

“在生成边界网格时,保持边界线平滑(最大斜率变化 28°),相邻单元尺寸变化不超过 300 倍,
允许 0.001 的微扰动来优化节点分布,并在自动模式下自动对齐点。”


✅ 一般用途:

  • 出现在 DevEdit 的几何或网格定义文件(.de.str) 中;
  • 用于控制复杂结构(如多层材料、弯曲边界、微结构)的网格质量;
  • 尤其常见于 3D 热仿真(Thermal 3D)功率器件结构 中,以避免网格扭曲。

模拟结果

image-20251024174946337 image-20251024175023405