Skip to content

Chapter 37: Kinetic Monte Carlo ReRAM

本章介绍如何通过提供与 kinetic Monte Carlo (KMC) 引擎的接口,在微观层面研究 resistive random access memory (ReRAM) 结构。

启动仿真与指定粒子

通过在 Physics 部分的 Traps 语句中指定 KmcReram 来启动 ReRAM 仿真。例如:

javascript
Physics{
    Traps(( KmcReram ))
}

缺陷通过 Sentaurus Device 命令文件的 KMCDefects 部分中的规格包含在 KMC-ReRAM 仿真中。缺陷可定义为导电粒子(使用关键字 Filament)或非导电粒子(使用关键字 Particle)。Sentaurus Device 支持三种不同类型的粒子和灯丝。

粒子或灯丝可以具有基本属性,例如名称以及与其他粒子或灯丝的关系。粒子之间的关系可以是以下之一:

  • 默认的非交互关系表示不同类型的缺陷可以位于同一位置。
  • 排他关系(由关键字 Exclude 定义)表示不同类型的陷阱不能位于同一位置。
  • 共享容量关系(由关键字 ShareCapacity 定义)表示不同类型的陷阱可以位于同一位置,但总数不能大于容量。

以下示例定义了氧、带电荷的空位和不带电荷的空位。不带电荷的空位是导电粒子,不能与其他类型的粒子共享同一位置:

javascript
Physics{
    KMCDefects(
        Particle1(
            Name="Oxygen"
            Exclude(Filament1)
        )
        Particle2(
            Name="Vacancy2+"
            Exclude(Filament1)
        )
        Filament1(
            Name="Vacancy0"
            Exclude(Particle1 Particle2)
        )
    )
}

其中:

  • KMCDefects/Particle{i}KMCDefects/Filament{i} 语句定义粒子类型。由关键字 Filament1Filament2Filament3 定义的粒子是导电粒子,被考虑用于电导方程。
  • KMCDefects/Particle{i} 语句中:
    • Name 指定粒子的名称。默认值:空字符串。
    • Exclude 指定要排除的粒子列表。
    • ShareCapacity 指定具有共享容量关系的粒子列表。

缺陷容量

在三维中,粒子容量由 ParticlesPerVolume{i}FilamentsPerVolume{i} 定义:

其中 ParticlesPerVolumeFilamentsPerVolume 是在参数文件中指定的绝缘体属性(默认值:SiO2 为 4.40e22,HfO2 为 5.54e22,ZrO2 为 5.55e22,单位为 cm⁻³)。

读取缺陷

缺陷可以从其他 ReRAM 计算生成的 TDR 文件加载。要从 TDR 文件加载缺陷,可在 File 部分使用 InitialDefects 关键字:

javascript
File { InitialDefects = "defects_readin.tdr" }

预存缺陷规格

为了更真实地模拟 forming 过程,Sentaurus Device 可以对 preexisting 缺陷进行建模。可以使用 Conc 随机生成 Particle{i}Filament{i} 缺陷,它设置缺陷密度。

KMC 事件

基于定义的缺陷,您可以定义 ReRAM 操作期间的 KMC 事件(过程)。表 190 列出了支持的物理事件。

表 190:支持的物理事件

物理事件描述相关方程
Diffusion粒子移动到相邻元胞。
Bulk generation or recombination一个或两个粒子类型在某一位置或相邻位置生成。
Interface generation or recombination一个或两个粒子类型在界面生成或复合。
Filament growth or recession粒子和灯丝之间的转换。

对于事件速率,使用通用表达式:

其中:

  • 是事件的最大速率(关键字 Frequency;默认值为 0.0)。
  • 是激活能(关键字 Ea;默认值为 0.0)。
  • 是分子偶极子(关键字 Dipole;默认值为 0.0)。
  • 是电场。

Location of KMC Events

KMC 事件的位置在创建 Physics 部分时指定。

Particle or Particle Pairs Involved in KMC Events

必须在 Physics 部分中指定参与 KMC 事件的粒子或粒子对。

对于生成或复合事件,必须定义 FrenkelPair 选项。

Parameters of KMC Events

对于每个 KMC 事件,在命令文件中指定关键字 FrequencyEaDipole

Diffusion Events

扩散事件可以为任何粒子定义。以下是 Particle1 扩散事件的规范示例:

javascript
Diffusion(Particle1(Frequency=1e10 Ea=0.4 Dipole=1e-8))

Generation and Recombination Events

生成和复合事件可以为粒子对定义。Frenkel 对是一对两个粒子。

javascript
FrenkelPair1(Particle1(Region="Titanium") Particle2(Region="HfO2"))
Generation(FrenkelPair1(Frequency=1e10 Ea=0.7 Dipole=1e-7))
Recombination(FrenkelPair1(Frequency=1e10 Ea=0.3 Dipole=1e-7))

Filament Growth and Recession Events

灯丝生长和退火事件可以为任何灯丝定义。

javascript
FilamentGrowth(Filament1(Frequency=1e9 Ea=0.6 Dipole=1e-7 Particle2))
FilamentRecession(Filament1(Frequency=1e9 Ea=0.55 Dipole=1e-7 Particle2))

Seeds for Filament Growth

灯丝生长可以从 preexisting 灯丝粒子、电极或界面开始。

javascript
Physics (Electrode = "anode") {
    KMCDefects(
        FilamentSeeds(Filament1)
    )
}

KMC 仿真空间与数学设置

典型的 ReRAM 计算需要在 Math 部分中使用 KMC 语句。例如:

javascript
Math {
    KMC (
        MinLocation = (0.00, 0.00, 0.00)
        MaxLocation = (0.02, 0.02, 0.02)
        CellLength = 0.0005
        [AlignCellsToRefLocation]
        [RefLocation = (0.0, 0.0, 0.0)]
        RandomSeed = 1
        TargetParticle(Filament1)
        UseKMCTimeStep
        MaxTrapNumberChange = 1
        MaxTrapNumber = 100
    )
    CurrentCompliance(
        Contact = "anode"
        minval = -1e-7
        maxval = 1e-7
    )
}

KMC 仿真空间

使用 Math 部分中的以下关键字定义 KMC-ReRAM 仿真使用的 Sentaurus Device 结构部分:

  • MinLocation 指定 KMC 计算的最小位置。
  • MaxLocation 指定 KMC 计算的最大位置。
  • CellLength 设置由 MinLocationMaxLocation 定义的 KMC 区域的网格大小。

Random Seed

KMC 仿真是随机的。指定大于零的固定 RandomSeed 可获得与下一次仿真相同的结果。

KMC Time Step Control

KMC 事件速率取决于电场和温度。使用 UseKMCTimeStep 选项可指示 KMC 仿真器使用正确的时间步更新场。

TargetParticle 语句可用于选择 KMC 仿真器监控的粒子。

Current Compliance

ReRAM 通常使用电流 compliance 操作。电流 compliance 限制 forming 和 setup 过程中的最大电流。

javascript
CurrentCompliance(
    Contact = "anode"
    MinVal = -1e-7
    MaxVal = 1e-7
)

Specifying the Material

在参数文件中指定 KMC-ReRAM 仿真的绝缘体属性:

javascript
Material = "HfO2" {
    FilamentParameter {
        SigmaDef1 = 0.001   # [S/cm]
        Sigma = 1e-8        # [S/cm]
        KappaDef1 = 0.1     # [W/cm/K]
        Kappa = 0.1         # [W/cm/K]
        ParticlesPerVolume1 = 4e22  # [cm^-3]
        FilamentsPerVolume1 = 4e22  # [cm^-3]
    }
}

Specifying the Field and Temperature

当选择 TDDB 选项时,默认情况下会开启 ConductanceEquationHeatEquation 选项。稳态电导方程为:

带有 Joule 加热的稳态热方程为:

Transient Calculation for ReRAM

要在电极上扫描偏压,在 Transient 语句中使用 Goal 语句中的选项。

Current in ReRAM Operations

Conduction Current

当求解电导方程时计算传导电流。

Trap-Assisted Tunneling Calculation

要激活陷阱辅助隧穿计算,请指定:

javascript
KMCDefects(TrapAssistedTunneling)

要与 ReRAM 过程定义的粒子和灯丝链接,请使用 kmcmim1kmcmim2 选项。

Simulation Output

Current and Particles

电流与偏压的关系图,或灯丝数量与偏压的关系图,保存在 .plt 文件中。

图片:/sentaurus-ref/public/images/sdevice/ch37_fig84.png

Event and Particle Statistics

指定 PrintMIMEventStatistics 以在每个 Sentaurus Device 时间步后将 MIM 事件统计打印到标准输出。

Defect and Field Visualization

可在命令文件的 Plot 部分使用 ReRAMParticle 选项设置粒子图的生成。

图片:/sentaurus-ref/public/images/sdevice/ch37_fig85.png

ReRAM Example

对于此示例,ReRAM 的结构如图 85(左)所示。ReRAM 包含四层:顶层是 HfO2,底层是钛,中间两层是 HfOx 和 TiOx。

javascript
# mim_3d.cmd
File {
    Grid    = "reram_structure_msh.tdr"
    Plot    = "reram_3d_thin"
    Current = "reram_3d_thin"
    Output  = "reram_3d_thin"
    Param   = "reram_3d.par"
}
Plot {
    VertexIndex
    ReRAMParticle
    ReRAMPotential
    ReRAMTemperature
    ReRAMField
    ReRAMCurrent
}
Electrode {
    {name="cathode" voltage=0.0 Material="TiN"}
    {name="anode"   voltage=0.0 Material="TiN"}
}
Physics {
    Temperature=298
    Traps(( KmcReram ))
    KMCDefects(
        ConductanceEquation
        HeatEquation
        Particle1(Name="Oxygen")
        Particle2(Name="Vacancy")
        Filament1(Name="ImmobileVacancy")
    )
}
Physics (Material = "HfO2") {
    KMCDefects(
        Diffusion(Particle2(Frequency=1e10 Ea=0.4 Dipole=2e-7))
        FilamentGrowth(Filament1(Frequency=1e9 Ea=0.4 Dipole=2e-7 Particle2))
        FilamentRecession(Filament1(Frequency=1e9 Ea=0.5 Dipole=2e-7 Particle2))
    )
}
Physics (Material="HfOx") {
    KMCDefects(
        FrenkelPair1(Particle1(Region="Oxide") Particle2(Region="Oxide") SameSite)
        Generation(FrenkelPair1(Frequency=1e8 Ea=0.8 Dipole=2e-7))
        Recombination(FrenkelPair1(Frequency=1e9 Ea=0.3 Dipole=0e-7))
        Diffusion(Particle1(Frequency=1e10 Ea=0.4 Dipole=-2e-7))
        Diffusion(Particle2(Frequency=1e10 Ea=0.4 Dipole=2e-7))
        FilamentGrowth(Filament1(Frequency=1e9 Ea=0.4 Dipole=2e-7 Particle2))
        FilamentRecession(Filament1(Frequency=1e9 Ea=0.5 Dipole=2e-7 Particle2))
    )
}
Math {
    KMC (
        CurrentCompliance (Contact = "anode" maxval = 1E-8)
        MinLocation = (0.00, 0.00, 0.00)
        MaxLocation = (0.02, 0.02, 0.02)
        CellLength = 0.0005
        UseKMCTimeStep
        MaxTrapNumberChange = 1
        MaxTrapNumber = 1000
        TargetParticle(Filament1)
    )
}
Solve {
    Coupled (iterations=100) {Poisson Contact}
    Quasistationary (
        InitialStep=0.1 MinStep=1e-3 MaxStep=0.5
        Goal {Name="anode" Voltage=0.0}
    ) { Coupled { Poisson Contact} }
    Transient (
        InitialTime=0 FinalTime=0.015 Increment=1.2 InitialStep=0.001 MaxStep=1e30
        Goal{Name="anode" Voltage=3.0}
    ) { Coupled { Poisson Contact } }
}

Example: TiN/HfO2/Ti/TiN/HfOx/TiOx ReRAM

javascript
Material = "TiN" {
    Bandgap {
        WorkFunction = 4.4
        FermiEnergy = 6.0
    }
    FilamentParameter {
        SigmaDef1 = 1e4
        Sigma = 1e4
        KappaDef1 = 0.2
        Kappa = 0.2
    }
}

Material = "Titanium" {
    Bandgap {
        WorkFunction = 4.4
        FermiEnergy = 6.0
    }
    FilamentParameter {
        SigmaDef1 = 1e3
        Sigma = 1e3
        KappaDef1 = 0.1
        Kappa = 0.2
        ParticlesPerVolume1 = 5e22
    }
}
Material = "HfOx" {
    FilamentParameter {
        SigmaDef1 = 1
        Sigma = 1e-11
        KappaDef1 = 0.1
        Kappa = 0.1
        ParticlesPerVolume1 = 1.5e22
        ParticlesPerVolume2 = 1.5e22
        FilamentsPerVolume1 = 1.5e22
    }
    KMC_MIM_Transport {
        metun    = 0.2
        medos    = 0.2
        mcb      = 1.16
        mvb      = 2.5
        HuangRhys = 17.0
        PhononEnergy = 0.070
        OpticalPermittivity = 5.6
        PhononFrequency = 1e13
        tau0 = 1e-10
        nu_max = 1e14
        EA = 3.00
        p0 = 5.2
    }
    Epsilon {
        epsilon = 21.0
    }
    Bandgap {
        Chi0 = 2.4
        Eg0 = 5.8
    }
}
Material = "TiOx" {
    FilamentParameter {
        SigmaDef1 = 0.01
        Sigma = 0.01
        KappaDef1 = 0.1
        Kappa = 0.1
        ParticlesPerVolume1 = 5e22
    }
    Bandgap {
        WorkFunction = 4.7
        FermiEnergy = 11.7
    }
}
Material = "HfO2" {
    FilamentParameter {
        SigmaDef1 = 0.01
        Sigma = 1e-11
        KappaDef1 = 0.1
        Kappa = 0.1
        ParticlesPerVolume2 = 1.5e22
        FilamentsPerVolume1 = 1.5e22
    }
    KMC_MIM_Transport {
        metun    = 0.2
        medos    = 0.2
        mcb      = 1.16
        mvb      = 2.5
        HuangRhys = 17.0
        PhononEnergy = 0.070
        OpticalPermittivity = 5.6
        PhononFrequency = 1e13
        tau0 = 1e-10
        nu_max = 1e14
        EA = 3.00
        p0 = 5.2
    }
    Epsilon {
        epsilon = 21.0
    }
    Bandgap {
        Chi0 = 2.4
        Eg0 = 5.8
    }
}

KMC 仿真空间和数学设置

KMC 仿真空间

使用 Math 部分中的以下关键字定义 KMC-ReRAM 仿真使用的 Sentaurus Device 结构部分:

  • MinLocation 指定 KMC 计算的最小位置。
  • MaxLocation 指定 KMC 计算的最大位置。
  • CellLength 设置由 MinLocationMaxLocation 定义的 KMC 区域的网格大小。

随机种子

KMC 仿真是随机的。指定大于零的固定 RandomSeed 可获得与下一次仿真相同的结果。

KMC 时间步控制

KMC 事件速率取决于电场和温度。使用 UseKMCTimeStep 选项可指示 KMC 仿真器使用正确的时间步更新场。

Current Compliance

ReRAM 通常使用电流 compliance 操作。电流 compliance 限制 forming 和 setup 过程中的最大电流。

字段和温度规格

当选择 TDDB 选项时,默认情况下会开启 ConductanceEquationHeatEquation 选项。

稳态电导方程为:

带有 Joule 加热的稳态热方程为:

ReRAM 瞬态计算

要在电极上扫描偏压,在 Transient 语句中使用 Goal 语句中的选项。

ReRAM 操作中的电流

传导电流

当求解电导方程时计算传导电流。

陷阱辅助隧穿计算

要与 ReRAM 过程定义的粒子和灯丝链接,请使用 kmcmim1kmcmim2 选项。

仿真输出

电流和粒子

电流与偏压的关系图,或灯丝数量与偏压的关系图,保存在 .plt 文件中。

事件和粒子统计

指定 PrintMIMEventStatistics 以在每个 Sentaurus Device 时间步后将 MIM 事件统计打印到标准输出。

缺陷和场可视化

可在命令文件的 Plot 部分使用 ReRAMParticle 选项设置粒子图的生成。

基于 Sentaurus TCAD 官方文档构建

代码块