Eastsheng's Wiki

AlGaAs/GaAs HEMT TCAD 模拟:使用 C-Interpreter 开发用户模型

2025-09-09 21:00:28

[toc]

AlGaAs/GaAs HEMT TCAD 模拟:使用 C-Interpreter 开发用户模型

TCAD器件模拟流程

模拟示例简介

  • 本示例演示了如何使用 C-Interpreter 来开发用户自定义的材料参数和模型,用于 AlGaAs/GaAs HEMT(高电子迁移率晶体管)的模拟。
  • 在这里,解释器被用来原型化一个与组分相关的 AlGaAs 电子迁移率模型。
  • 该解释函数与 AlGaAs 的内置模型对应,两者可进行对比。
  • 示例由以下部分组成:
    1. 使用 Atlas 语法构建设备和网格
    2. 指定材料区域,包括一个渐变的 AlGaAs 异质结
    3. 定义电极、掺杂、材料和模型参数
    4. 使用 C-Interpreter 函数描述与组分和掺杂相关的电子迁移率
    5. 模拟 Id-Vds 特性
    6. 使用 TonyPlot 显示结果

输入文件内容

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
# (c) Silvaco Inc., 2019
go atlas
#
# SECTION 1: 网格
#

mesh

x.mesh loc=0.0 spac=0.2
x.mesh loc=0.4 spac=0.2
x.mesh loc=0.9 spac=0.07
x.mesh loc=1.6 spac=0.07
x.mesh loc=2.1 spac=0.2
x.mesh loc=2.5 spac=0.2

y.mesh loc=0.0 spac=0.01
y.mesh loc=0.055 spac=0.001
y.mesh loc=0.058 spac=0.001
y.mesh loc=0.3 spac=0.05

#
# SECTION 2: 定义了 AlGaAs 和 GaAs 区域
#
region num=1 material=GaAs y.min=0.055
# 定义了 Al 组分比例(x.composition=0.3)和渐变距离
region num=2 material=AlGaAs y.max=0.055 x.composition=0.3 grad.3=0.002
# 定义源漏栅极
elec num=1 name=source x.min=0.0 x.max=0.4 y.min=0.0 y.max=0.0
elec num=2 name=gate x.min=0.9 x.max=1.6 y.min=0.0 y.max=0.0
elec num=3 name=drain x.min=2.1 x.max=2.5 y.min=0.0 y.max=0.0
# 掺杂定义
doping uniform y.max=0.0530 n.type conc=1.e18
doping uniform y.min=0.0530 n.type conc=1.e14
#
# SECTION 3: 指定一些不同于默认值的材料参数
# 电子和空穴的 SRH 寿命(俘获时间),低场电子迁移率作为组分和掺杂的函数,将通过 C-Interpreter 进行计算
material taun0=1.e-9 taup0=1.e-9 f.conmun=hemtex01_interp.lib
material align=0.6 # 指定了能带对齐参数,取值 0.6 表示 60% 的能级台阶分配到导带

# 指定以下模型:带隙收缩、场依赖迁移率和 Shockley-Read-Hall 复合。# 在这里通过参数 carriers=2 指定了双载流子输运模型
model bgn fldmob srh
# 设定肖特基栅电极的功函数
contact name=gate workfun=4.87
#
# SECTION 4: 求解过程从零偏压或热力学平衡下的初始解开始,通过 TonyPlot 显示
#
solve init
save outf=hemtex01_0.str
tonyplot hemtex01_0.str -set hemtex01_0.set
#
# SECTION 5: Bias gate
# 指定了联合 Gummel-Newton 迭代法
method gummel newton trap itlimit=20 maxtrap=6
# 在输出结构文件中包含更多参数:导带和价带电势,以及电子和空穴迁移率。
output con.band val.band e.mobility h.mobility
# 将栅压升高到 -0.6 V
solve vgate=-0.0 vstep=-0.2 name=gate vfinal=-0.6
#
# SECTION 6: Drain ramp
#
log outf=hemtex01.log master
solve vdrain=0.05
solve vdrain=0.10
solve vdrain=0.125
solve vdrain=0.15
solve vdrain=0.20
solve vdrain=0.30
#
method newton trap itlim=20 maxtrap=6
# 通过扫描漏极电压至 5 V 来计算 Id-Vd 特性
solve vdrain=0.50 vstep=0.25 name=drain vfinal=5.0
tonyplot hemtex01.log -set hemtex01.set
#
quit

理解输入代码

  • go atlas调用/启动 ATLAS 器件模拟器,并让输入文件中的命令交由 ATLAS 来执行。

    用于构建器件结构、指定物理模型、设定边界条件和执行仿真,如果是别的模块,比如 go victorydevicego mixedmode,就会进入对应的模拟器环境。

  • mesh:声明开始定义网格。ATLAS 使用矩形网格(2D 时是 x-y 网格,3D 时还会有 z)。

  • x.mesh loc=0.0 spac=0.2:表示在 x 方向上定义网格分布, loc坐标位置spac=... 是该位置附近的 网格间距(步长),用于控制网格的密度。

  • region num=1 material=GaAs y.min=0.055:是 ATLAS 中定义器件区域 (region) 的语句,定义了 区域 1,材料为 GaAs,其在 y 方向上的下边界位于 y = 0.055 μm

    • region表示定义一个新的区域(通常是一个矩形区域,除非指定更多边界参数)。每个器件都由一个或多个 region 组成,不同 region 可以有不同的材料和掺杂。
    • num=1,给这个区域编号为 1,编号在后续的 dopingelectrodematerial 等语句中会用到,用来指明作用在哪个区域。
    • material=GaAs,定义该区域的材料为 **砷化镓 (Gallium Arsenide)**。这会告诉 ATLAS:在这个区域里用 GaAs 的材料参数(禁带宽度、介电常数、迁移率等),当然用户也可以再用 material 语句修改默认参数。
    • y.min=0.055,定义了该区域的 下边界 y 坐标 = 0.055。其他边界(如 y.max, x.min, x.max)如果没有在同一行给出,会在别的 region 语句或默认值中定义。
  • region num=2 material=AlGaAs y.max=0.055 x.composition=0.3 grad.3=0.002:定义了 ATLAS 中的 **第二个区域 (region)**,区域材料设为 **AlGaAs (砷化铝镓)**,是一种常见的 III-V 族化合物半导体。

    • x.composition=0.3
      • 表示在这个区域里,Al 组分 = 0.3 → 即 Al₀.₃Ga₀.₇As。ATLAS 会根据组分比例自动插值材料参数(如带隙、电子迁移率等)。
    • grad.3=0.002
      • grad.n 表示沿某个方向的 **成分渐变 (grading)**。
      • 这里的 grad.3 一般指 y 方向 (第 3 个坐标) 的组分渐变速率。
      • 值为 0.002,意味着 Al 组分在 y 方向上按 0.002/μm 的速率逐渐变化。
      • 换句话说:不是一个 abrupt(突变)的异质结,而是一个 graded heterojunction,更接近真实外延工艺(减少界面缺陷,缓解应变)。
      • Silvaco ATLAS 里,grad.n 中的数字对应坐标轴方向:
        • grad.1 → 沿 x 方向 的成分渐变(composition grading in x-axis)
        • grad.2 → 沿 z 方向 的成分渐变(composition grading in z-axis,主要用于 3D 模拟)
        • grad.3 → 沿 y 方向 的成分渐变(composition grading in y-axis)
        • 2D 模式 下,它默认平面是 x-y,而把 y 定义为 第 3 个坐标。在 3D 模式 下,它的坐标顺序是 **(x, z, y)**,也就是:
          • x:横向
          • z:纵向(等效于 2D 的宽度方向)
          • y:垂直方向(通常是厚度/外延生长方向)
  • elec num=1 name=source x.min=0.0 x.max=0.4 y.min=0.0 y.max=0.0:在 ATLAS 中定义器件电极

    • elec

      • 表示定义一个电极(electrode),用于施加偏压或作为边界条件。
    • num=1

      • 电极编号为 1,方便在后续设置偏压、功函数或接触模型时引用。
    • name=source( / gate / drain)

      • 电极名称为 source,表示 HEMT 或 MOSFET 的 源极
    • x.min=0.0 x.max=0.4

      • 电极在 x 方向的范围从 0.0 μm 到 0.4 μm。
    • y.min=0.0 y.max=0.0

      • 电极在 y 方向的位置,通常 y=0 表示底部接触(或者是二维截面下的线性电极)。

      • y.min=y.max 表示电极厚度在模拟中被视为零厚度线(2D 平面模拟常用)。

  • doping uniform y.max=0.0530 n.type conc=1.e18:定义掺杂 (doping)

    • doping
      • 定义一个掺杂区域,指定类型、浓度以及空间范围。
    • uniform
      • 表示该区域内掺杂浓度 均匀,不是梯度掺杂。
    • y.max=0.0530
      • 掺杂区域的 上边界为 y = 0.053 μm。
      • 如果没有指定 y.min,ATLAS 会默认从区域的下边界(通常为 y=0 或器件最底部)开始。
    • n.type
      • 表示这是 n 型掺杂(电子为主要载流子)。
    • conc=1.e18
      • 掺杂浓度为 1 × 10¹⁸ cm⁻³。
  • material taun0=1.e-9 taup0=1.e-9 f.conmun=hemtex01_interp.lib材料定义 (material) 语句

    • 进入 材料参数定义语句。在 ATLAS 中,每个 region 都有一个材料(如 Si, GaAs, AlGaAs),这里可以通过 material 修改默认参数,或调用用户自定义模型。

    • taun0=1.e-9

      • 电子 SRH 寿命(Shockley-Read-Hall electron lifetime)
      • taun0 定义电子在陷阱复合过程中的平均寿命。
      • 这里是 1×10⁻⁹ 秒 (1 ns) → 表明材料中缺陷比较多,电子复合很快。
    • taup0=1.e-9

      • 空穴 SRH 寿命,与 taun0 对应。
      • 同样设为 1 ns,说明电子和空穴在该材料里复合速率对称。

      👉 这两个参数会直接影响载流子寿命、复合速率,以及电流-电压特性。

    • f.conmun=hemtex01_interp.lib

      • f.conmun 表示调用一个 C-Interpreter 用户自定义函数 来计算 **低场电子迁移率 (mobility)**。
      • hemtex01_interp.lib 是外部库文件名,里面写了用户定义的函数(通常是 .c 文件编译成的 .lib 或者 ATLAS 内部可解释的 C 脚本)。
      • 用途:替代内置迁移率模型,让迁移率依赖于 合金成分 (composition) 和 **掺杂浓度 (doping)**。
  • material align=0.6 : 设置 能带对齐 (band alignment) 参数

    • align 用来指定 导带/价带对齐的方式,主要影响 异质结 (heterojunction) 的能带偏移。
    • 当两个不同材料(如 GaAs / AlGaAs)相接时,导带和价带的能带差异需要人工指定,否则模拟器只会用默认值。
    • align=<value> 定义了能带对齐系数:
      • 0.0 → 全部能带偏移分配到 **价带 (valence band offset)**。
      • 1.0 → 全部能带偏移分配到 **导带 (conduction band offset)**。
      • 0.6 → 表示 60% 的能带偏移给导带,40% 给价带
    • 不同的异质结器件(HBT、HEMT、量子阱)对导带/价带偏移比例非常敏感。
    • 比如 HEMT 更关心 二维电子气 (2DEG) 的导带深度,align 值直接决定电子气的密度。
  • model bgn fldmob srh:定义 **物理模型 (physical models)**,告诉模拟器在计算载流子输运时需要考虑哪些物理效应。在模拟器件时,考虑 **带隙收缩 (bgn)电场依赖迁移率 (fldmob)**、以及 缺陷复合 (srh) 三个物理效应

    • bgn
      • 表示启用 带隙收缩 (Band Gap Narrowing) 模型。
      • 在高掺杂半导体里,杂质能级与载流子相互作用会导致带隙变窄,影响载流子浓度与器件电流。
      • 常见于重掺杂的 GaAs、Si、Ge 等器件模拟。
    • fldmob
      • 表示启用 **电场依赖迁移率模型 (Field-dependent Mobility)**。
      • 在高电场区域,载流子迁移率会下降(速度饱和效应)。
      • 这个模型对 MOSFET、HEMT 等高场器件尤为重要。
    • srh
      • 表示启用 Shockley–Read–Hall (SRH) 复合模型
      • 描述缺陷(陷阱态)引起的复合过程。
      • 对亚阈值电流、载流子寿命、暗电流分析非常重要。
  • contact name=gate workfun=4.87 :是 Silvaco ATLAS 里对 电极 (contact) 的定义。

    • contact
      • 定义一个接触电极。
    • name=gate
      • 说明这是 栅极 (gate) 电极。
      • 名字要和你之前在 elec 语句里定义的 name=gate 保持一致。
    • workfun=4.87
      • 指定这个接触的 功函数 (Work Function) 值,单位是 **电子伏特 (eV)**。
      • 功函数是金属栅电极决定器件势垒高度的重要参数。
      • 这里设为 4.87 eV,相当于一个典型金属(如 Pt、Au 或特定栅材料)的功函数。
      • 源极 (source)、漏极 (drain) 一般用欧姆接触(低电阻接触),不需要指定功函数。
      • 栅极 (gate) 往往是 肖特基接触,需要定义功函数来决定栅控特性(阈值电压、势垒高度)。
  • solve init

    • 求解器在零偏(热力学平衡)下的初始稳态解

      换言之:计算器件在没有外加偏压时的电势、能带、载流子分布、费米能级等场量。这通常作为后续偏压扫描(如栅压、漏压)或瞬态仿真的初始解。

    • 提供收敛且物理合理的初始条件,避免直接在非平衡下求解时发散或收敛困难。

    • 用于检查器件结构、掺杂和边界条件是否正确(可用 TonyPlot 查看初始分布)。

  • save outf=hemtex01_0.str

    • 告诉 ATLAS 把当前计算得到的器件解(电势分布、载流子浓度、能带等所有场量)保存下来
    • 保存的结构文件(后缀通常用 .str,表示 structure)。这个文件包含了网格信息 + 区域定义 + 掺杂分布 + 当前求解得到的物理量
    • 用途:
      1. 断点续算
        • 后续可以用 load inf=hemtex01_0.str 把这一步的解作为新的起点,继续加偏压或跑瞬态仿真。
        • 避免从头 solve init 再迭代,提高效率。
      2. 结果可视化
        • 可以用 TonyPlot 打开 .str 文件,查看能带、电势、载流子分布等。
      3. 流程衔接
        • 大型仿真常常分步执行,每个关键步骤保存一次结构文件,方便在不同偏压点之间切换。
  • tonyplot hemtex01_0.str -set hemtex01_0.set

    • tonyplot
      Silvaco 提供的图形化后处理工具,用于查看 .str.log.plt 等文件里的仿真结果。

    • hemtex01_0.str

      之前用 save outf=hemtex01_0.str 保存的器件结构文件,里面包含网格、材料区域、掺杂分布以及当时的解(电势、能带、载流子浓度等)。

    • -set hemtex01_0.set

      指定 TonyPlot 的显示设置文件,后缀 .set,里面保存了绘图习惯(例如:要显示的物理量、电势还是能带、配色方案、坐标范围等)。

      • 如果不加 -set,TonyPlot 默认用系统设置显示。
      • .set 文件可以快速复现之前的图像风格。
  • method gummel newton trap itlimit=20 maxtrap=6

    • Silvaco ATLAS 中指定数值求解方法的设置命令
    • method
      声明接下来的参数是选择仿真中使用的数值求解算法。
    • gummel
      表示采用 Gummel 迭代法:逐方程(如泊松方程、电子、空穴连续性方程)分步求解,通常在初始条件或低偏压时更稳定。
    • newton
      表示采用 牛顿迭代法(Newton-Raphson):一次性联立所有方程,收敛速度快,但对初值敏感。
      • gummelnewton 同时指定时,ATLAS 会先用 Gummel 迭代获得一个稳定初解,再切换到 Newton 提高收敛速度。
    • trap
      表示启用 陷阱态相关方程(如深能级陷阱或缺陷的占据方程),在存在 SRH 复合中心或缺陷态时必须打开。
    • itlimit=20
      每个偏置点的最大迭代次数上限,超过 20 次仍未收敛就报错/停止。
    • maxtrap=6
      陷阱态方程最大允许的耦合数(即最多考虑 6 个陷阱能级)。
  • output con.band val.band e.mobility h.mobility

    • Silvaco ATLAS 中的输出设置,指定在仿真结果文件(.str 结构文件或日志文件)里要保存和显示哪些物理量
    • output
      声明接下来列出的物理量需要被保存,以便后续在 TonyPlot 或其他工具中可视化
    • con.band
      输出 导带能量分布 (Conduction band edge)。
      可以用于观察能带弯曲、势垒高度、量子阱深度等。
    • val.band
      输出 价带能量分布 (Valence band edge)。
      con.band 一起可以显示带隙、带偏移、能带对齐等情况。
    • e.mobility
      输出 电子迁移率分布 (Electron mobility)。
      能看到不同区域因掺杂、应力或材料组成导致的迁移率变化。
    • h.mobility
      输出 空穴迁移率分布 (Hole mobility)。
      e.mobility 对应,用于分析空穴在器件中的传输特性
  • solve vgate=-0.0 vstep=-0.2 name=gate vfinal=-0.6

    • Silvaco ATLAS 中的电偏压扫描设置,用来控制在 gate 电极 上逐步施加电压,并求解对应的器件特性。

    • solve
      指令关键字,告诉 ATLAS 要进行一次或一系列偏置求解。

    • vgate=-0.0
      设置 初始的栅极电压为 -0.0 V(也就是 0 V)。

      注意:这里写成 -0.00.0 在数值上没有区别。

    • vstep=-0.2
      电压扫描步长,每次在 gate 上递减 0.2 V。

    • name=gate
      指定要施加电压的电极名称是 gate,对应前面 elec name=gate 定义的接触。

    • vfinal=-0.6
      扫描的终止电压为 -0.6 V。

    • 这条命令会让 ATLAS 在 gate 上执行:

      • 0 V 开始,
      • 每次减 0.2 V
      • 直到 -0.6 V
      • 在每个电压点进行一次器件数值求解。

      也就是说,求解点依次是:
      0.0 V → -0.2 V → -0.4 V → -0.6 V

    • 这种扫描通常用于:

      • 提取 Id–Vg 曲线(栅压控制特性);
      • 观察 沟道开启/关断行为
      • 研究 阈值电压 Vth 和迁移率变化。
    • 优点

      • 简洁,只需一行即可实现等步长扫描。
      • 程序自动生成电压点:0.0, 0.05, 0.10, …, 0.30。
      • 特别适合 大范围、规则步长 的扫描。
    • 缺点

      • 只能用等步长;
      • 遇到收敛困难时,可能在某些点跳不过去,而人工逐点控制更灵活(可插入小步长过渡)
  • log outf=hemtex01.log master

    • Silvaco ATLAS 中的日志输出控制,用来指定仿真过程中要记录的结果文件。
    • log
      启动日志输出功能,ATLAS 会把仿真过程中的计算结果(电流、电压、收敛情况等)记录到一个 .log 文件。
    • outf=hemtex01.log
      指定日志文件的输出文件名,这里是 **hemtex01.log**。
      • 里面会保存偏置点、电流值、功率、收敛信息等。
      • 后续可以用 TonyPlot 打开 .log 文件绘制 I–V 曲线。
    • master
      表示把所有电极的电流/电压信息同时输出到这个日志文件(而不是只输出一个电极的结果)。
      • 如果不加 master,默认只输出主要的电极信息。
      • 加了 master 后,可以直接用它来画完整的 I–V 特性。
  • solve vdrain=0.05 
    solve vdrain=0.10 
    solve vdrain=0.125 
    solve vdrain=0.15 
    solve vdrain=0.20 
    solve vdrain=0.30
    
    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

    - 这几行命令是 **Silvaco ATLAS** 中对 **drain 电极** 逐步加电压的求解过程,用来提取 **Id–Vd 特性曲线**

    - **`solve`**
    表示在给定偏置条件下对器件进行数值求解

    - **`vdrain=...`**
    给 **drain 电极** 施加对应的电压值。

    - ATLAS 会在这些电压下分别求解电子分布、电流等物理量。

    - **优点**

    - 可以灵活选择不等步长(比如 0.100.1250.15),适合在某些电压范围需要更细分时使用。
    - 每个电压点完全可控,方便插入特殊电压点进行测试。

    - 麻烦、冗长,不适合大范围电压扫描。

    不易复用,稍微换一个范围就要手工修改

    -



    ### C-Interpreter内容

    ```c
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <ctype.h>
    #include <malloc.h>
    #include <string.h>
    #include <template.h>
    /*
    * -----------------------------------------------------------------
    * ATLAS Parser Function Template
    * ATLAS Version 5.2.0.R
    * c 1993 - 2000 SILVACO International.
    * All rights reserved.
    * -----------------------------------------------------------------
    */

    /*
    * Composition, temperature and doping dependent electron mobility
    * Statement: MATERIAL
    * Parameter: F.CONMUN
    * Arguments:
    * xcomp composition fraction x
    * ycomp composition fraction y
    * temp temperature (K)
    * nd net concentration of donors
    * na net concentration of acceptors
    * *mun electron mobility
    */

    int conmun(double xcomp,double ycomp,double temp,double nd,double na,double x,double y,double taun,double *mun)
    {
    double mu0, ntot;
    ntot = nd+na;
    if(xcomp < 0.429)
    mu0 = (8000.0-1.818e4*xcomp);
    else if(xcomp < 0.46)
    mu0 = (90.0 + 1.145e5*(xcomp-0.46)*(xcomp-0.46));
    else if(xcomp < 0.5)
    mu0 = (90.0 + 3.75e4*(xcomp-0.46)*(xcomp-0.46));
    else
    mu0 = (200.0-2.0/(xcomp-0.46));

    *mun = (mu0*(0.34+0.66/(1.0+pow(ntot/9.85e16,0.553))));

    return(0); /* 0 - ok */
    }

这个函数主要用于 根据材料组成、温度和掺杂浓度计算电子迁移率(electron mobility)


1. 头文件部分

1
2
3
4
5
6
7
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <malloc.h>
#include <string.h>
#include <template.h>
  • 标准 C 库的头文件:

    • <stdio.h>:输入输出
    • <stdlib.h>:标准库函数
    • <math.h>:数学函数(例如 pow
    • <ctype.h>:字符处理
    • <malloc.h>:动态内存分配
    • <string.h>:字符串操作
  • <template.h>:这是 SILVACO 提供的 ATLAS 函数模板库,里面定义了各种求解器相关函数接口。


2. 函数声明和注释

1
2
3
4
5
6
7
8
9
10
11
12
/*
* Composition, temperature and doping dependent electron mobility
* Statement: MATERIAL
* Parameter: F.CONMUN
* Arguments:
* xcomp composition fraction x
* ycomp composition fraction y
* temp temperature (K)
* nd net concentration of donors
* na net concentration of acceptors
* *mun electron mobility
*/
  • 这是 ATLAS 用于自定义材料函数的标准注释格式。

  • 说明该函数是 材料属性函数,用于计算电子迁移率 mun

  • 输入参数:

    • xcomp, ycomp:半导体的化学成分(如 AlxGa1-xAs 的 Al 组分)
    • temp:温度,单位 K
    • nd:施主浓度(donor)
    • na:受主浓度(acceptor)
  • 输出参数:

    • *mun:电子迁移率

3. 函数定义

1
2
3
4
int conmun(double xcomp,double ycomp,double temp,double nd,double na,double x,double y,double taun,double *mun)
{
double mu0, ntot;
ntot = nd+na;
  • 定义函数 conmun,返回 int(一般返回 0 表示正常)。
  • ntot = nd + na; 计算总掺杂浓度。

4. 根据组成 xcomp 计算零掺杂迁移率 mu0

1
2
3
4
5
6
7
8
if(xcomp < 0.429)
mu0 = (8000.0-1.818e4*xcomp);
else if(xcomp < 0.46)
mu0 = (90.0 + 1.145e5*(xcomp-0.46)*(xcomp-0.46));
else if(xcomp < 0.5)
mu0 = (90.0 + 3.75e4*(xcomp-0.46)*(xcomp-0.46));
else
mu0 = (200.0-2.0/(xcomp-0.46));
  • 根据 xcomp 的不同区间,选择不同的经验公式计算 **材料本征迁移率 mu0**。

  • 这是典型的 分段经验公式

    • xcomp < 0.429:线性衰减
    • 0.429 ≤ xcomp < 0.46:二次函数
    • 0.46 ≤ xcomp < 0.5:另一条二次函数
    • xcomp ≥ 0.5:非线性反比函数

这些公式通常来源于实验数据拟合,针对特定半导体材料(可能是 GaAs 或 AlGaAs)。


5. 考虑掺杂浓度对迁移率的影响

1
*mun = (mu0*(0.34+0.66/(1.0+pow(ntot/9.85e16,0.553))));
  • 这是典型的 掺杂依赖迁移率公式

    • ntot 是掺杂浓度

    • pow(ntot/9.85e16,0.553) 是掺杂抑制因子

    • 整体公式表示迁移率随掺杂增加而下降:

      • ntot 很小,mun ≈ mu0
      • ntot 增大,mun 显著下降

6. 返回值

1
2
	return(0);                /* 0 - ok */
}
  • 返回 0 表示函数成功执行,没有错误。

✅ 总结

  1. 这是一个 半导体电子迁移率计算函数,考虑了:

    • 化学成分(composition)
    • 掺杂浓度(donor/acceptor)
  2. 温度 temp 在这个函数里没有被使用,如果想加入温度依赖,需要在公式中加入温度因子。

  3. 使用 经验分段公式处理不同 xcomp 区间。

  4. 掺杂浓度影响通过 ntot 和幂函数来模拟迁移率下降。

  5. 输出是 *mun,用于 TCAD 仿真材料模型。


模拟结果

器件结构 漏极电压/电流
hemtex01 hemtex01_result