Skip to content

第 6 章:掺杂与细化示例

本章介绍如何使用命令文件的 Definitions 和 Placements 节,以及如何使用 Offsetting 节生成层状网格。

简单二极管(Simple Diode)

本节介绍命令文件 diode.cmd,用于演示本章其余部分的示例。

维度无关部分

Title "minimal example: simple diode"
Definitions {
    # Profiles
    Constant "n-type region" {
        Species = "PhosphorusActiveConcentration"
        Value = 1e+18
    }
    Constant "p-type region" {
        Species = "BoronActiveConcentration"
        Value = 1e+17
    }
}

Definitions 节指定维度无关的数据,对于所有维度都无需修改即可使用。

维度相关部分(Placements)

Placements {
    # Profiles
    Constant "n-type region instance" {
        Reference = "n-type region"
        EvaluateWindow {
            Element = cuboid [(1 0 0), (2 3 2)]
        }
    }
    Constant "p-type region instance" {
        Reference = "p-type region"
        EvaluateWindow {
            Element = cuboid [(0 0 0), (1 3 2)]
        }
    }
}

EvaluateWindow 定义分布的有效域。对于 3D 情况,p-type region 的有效域是器件的下半部分。如果未定义 EvaluateWindow,则分布在整个器件域内有效。


细化与评估窗口

细化条件可以通过细化窗口来限制,可以是简单的矩形、多边形、多面体、region 或 material。

使用多边形细化

多边形细化窗口示例:

Definitions {
    Refinement "global" {
        MaxElementSize = (4, 4)
        MinElementSize = (.04 .04)
        RefineFunction = MaxTransDiff(Variable="DopingConcentration",
                                      Value=0.5)
    }
    Refinement "refpol" {
        MaxElementSize = (0.3 0.1)
    }
    Constant "bor" {
        Species = "BoronConcentration"
        Value=1e+17
    }
}
Placements {
    Refinement "global" {
        Reference = "global"
        RefineWindow = rectangle [(-2 -2), (14 14)]
    }
    Refinement "refpol" {
        Reference = "refpol"
        RefineWindow = polygon [(1 2) (0.75 2) ... (1 2)]
    }
    Constant "bor" {
        Reference = "bor"
        EvaluateWindow {
            Element = polygon [...]
        }
    }
}

使用复合元素

可以将多个几何元素组合成复合元素,用于定义弯曲的参考元素:

AnalyticalProfile "MyProfile" {
    Reference = "MyProfileReference"
    ReferenceElement {
        Element = {
            line [(-1 2), (4 2)]
            line [(4 2), (6 4)]
            line [(6 4), (7 4)]
        }
    }
}

所有组件必须彼此相邻,不能有间隙。


Region-wise 与 Material-wise 细化

Placements {
    Refinement "A" {
        Reference = "A"
        RefineWindow = region ["Ox_Region"]
    }
    Refinement "B" {
        Reference = "B"
        RefineWindow = material ["Oxide"]
    }
}

使用解析函数指定掺杂

使用 Eval 函数定义解析掺杂分布:

AnalyticalProfile "NoName_0" {
    Species = "DopingConcentration"
    Function = Eval(init="a=10",
                   function = "a*sin(x)*cos(y)",
                   value = 0)
    ReferenceElement {
        Element = line [(0 0), (10 10)]
    }
}

从 2D 截面创建 3D 分布

使用 sweepElement 将 2D 分布扩展到三维:

sweepElement {
    base = <2D Element>
    distance = <double>
}
sweepElement {
    base = <2D Element>
    vector = (x1,y1,z1)
}
sweepElement {
    base = <2D Element>
    path = [(x1,y1,z1)...(xn,yn,zn)]
}
sweepElement {
    base = <2D Element>
    angle = <double>
}

sweepElement 只能在 EvaluateWindow 语句中使用。


晶界解析分布与细化

使用 GeoPointCloud 和 MaxLenPointCloud

Definitions {
    Refinement "Refinement" {
        MaxElementSize = (0.2 0.2 0.2)
        MinElementSize = (0.01 0.01 0.01)
        RefineFunction = MaxLenPointCloud(
            fileName = "traps.txt",
            value = 0.025, factor = 1.2)
    }
    AnalyticalProfile "Traps" {
        Species = "PhosphorusConcentration"
        Function = Gauss(PeakPos = 0, PeakVal = 1, StdDev = 0.5)
        LateralFunction = Gauss(Factor = 0.0)
    }
}
Placements {
    Refinement "Refinement" {
        Reference = "Refinement"
    }
    AnalyticalProfile "Traps" {
        Reference = "Traps"
        ReferenceElement {
            Element = GeoPointCloud{"traps.txt"}
        }
    }
}

使用 GeoBrep 和 MaxLenInt

Definitions {
    Refinement "Refinement" {
        MaxElementSize = (0.2 0.2 0.2)
        MinElementSize = (0.01 0.01 0.01)
        RefineFunction = MaxLenInt(
            Interface("Silicon", "All"),
            Value = 0.025, doubleside, factor = 1.2,
            brep = "output.tdr")
    }
    AnalyticalProfile "buried n-channel" {
        Species = "PhosphorusConcentration"
        Function = Gauss(PeakPos = 0, PeakVal = 1, StdDev = 0.25)
        LateralFunction = Gauss(Factor = 0.3)
    }
}

界面细化

RefineFunction = MaxLenInt(Interface("Silicon","Oxide"),
                            Value = 0.02, Factor = 1.4)

常用选项

  • 细化所有界面:Interface("All","All")
  • 细化接触处:Interface("All","Contact")
  • 双面细化:DoubleSide

Offsetting 网格生成

简单示例

Offsetting {
    noffset {
        hlocal=0
    }
    noffset material "Silicon" {
        maxlevel = 5
    }
    noffset material "Oxide" {
        maxlevel = 5
    }
    noffset material "Silicon" "Oxide" {
        hlocal=0.002
        factor=1.5
    }
    noffset material "Oxide" "Silicon" {
        hlocal=0.002
        factor=1.5
    }
}
  • hlocal:第一层厚度(微米)
  • factor:层厚度增长因子
  • maxlevel:最大层数

使用 Cuts 局部化细化

使用 xCutsyCutszCuts 定义初始网格线:

AxisAligned { xCuts = (4.837 7.156) }

这在参数化结构变化时特别有用,可以保持其他区域的网格不变。


解析函数细化示例

使用一般解析函数指定细化:

Definitions {
    Refinement "Region_1" {
        MaxElementSize = (1 1)
        MinElementSize = (0.01 0.01)
        RefineFunction = MaxTransDiff(
            Variable = "ElectrostaticPotential",
            Value = 0.01)
    }
    AnalyticalProfile "Profile_1" {
        Species = "ElectrostaticPotential"
        Function = General(init="a=0.1",
                          function = "a*sin(x)*sin(y)",
                          value = 0)
    }
}
Placements {
    Refinement "Region_1" {
        Reference = "Region_1"
    }
    AnalyticalProfile "Profile_1" {
        Reference = "Profile_1"
        EvaluateWindow {
            Element = rectangle [(0 0), (9.43 9.43)]
        }
    }
}

3D 解析函数细化示例:

Function = General(init="a=0.1",
                   function = "a*x*x*y*y*z*z",
                   value = 0)

基于 Sentaurus TCAD 官方文档构建

代码块