Sentaurus TCAD: 功能强大,为主流半导体工艺器件仿真软件。从工程角度看待问题。
Silvacon TCAD: 简单易用,其deckbuild 如一般的编程程序调试器(pycharm,VS等)无异。
共同点: sprocess、sdevic 与 athena、atlas都是TCL语言。相互比较学习,往往事半功倍。
问题: 工艺中的NPN 三极管的 Gumml 曲线与输出特性曲线模拟
1. 仿真的结构图形
npn器件符号如下。
模拟二维器件结构如下图
Sentaurus仿真工艺后结构
Silvaco仿真工艺后结构
从图像看:Sentaurus的P区(boron 注入) 掺杂的默认配色方案,形象一些。
2. 直接代码(内有注释,深入体会需要细看。)
Sentaurus sprocess (模拟出工艺结构的部分)
#-----------------------------------
# 2D NPN Vertical Bipolar Transistor by dls
#-----------------------------------
math coord.ucs
line x location= 4.0<um> spacing= 0.1<um> tag= SubTop
line x location= 5.0<um> spacing= 0.1<um>
line x location= 6.0<um> spacing= 0.7<um> tag= SubBottom
line y location= 0.0<um> spacing= 6.00<um> tag= SubLeft
line y location= 18.0<um> spacing= 6.00<um>
line y location= 18.5<um> spacing= 0.50<um>
line y location= 30.0<um> spacing= 0.50<um> tag= SubRight
# Global Mesh settings for automatic meshing in newly generated layers
# --------------------------------------------------------------------
grid set.normal.growth.ratio.2d= 1.1 set.min.normal.size= 50<nm>
mgoals accuracy= 2e-5
# Define layout masks
# -------------------
# (Note: n-type emitter is also used as contact to collector.)
# Masks are listed in the order they are used.
# Masks for front end processing .....
mask name= Sinker segments= {-1 22 24 35} negative
mask name= Base segments= {-1 1.5 13 35} negative
mask name= Emitter segments= {-1 2.5 8 22 24 35} negative
# Masks for back end processing .....
mask name= Contact segments= {-1 3.5 7 10 12 22.5 23.5 35}
mask name= Metal segments= {-1 2 8 9 13 22 24 35} negative
region Silicon xlo= SubTop xhi= SubBottom ylo= SubLeft yhi= SubRight
init concentration= 1e+15<cm-3> field= Boron
AdvancedCalibration
# Buried layer
# ------------
deposit material= {Oxide} type= isotropic time= 1 rate= {0.025}
implant Antimony dose= 1.5e15<cm-2> energy= 100<keV>
etch material= {Oxide} type= anisotropic time= 1 rate= {0.03}
# Epi layer
# ---------
deposit material= {Silicon} type= isotropic time= 1 rate= {4.0} Arsenic concentration= 1e15<cm-3>
diffuse temp= 1100<C> time= 60<min>
struct tdr= n@node@_vert_npn1
# Show the final profiles
# -----------------------
SetPlxList {BTotal SbTotal AsTotal PTotal}
WritePlx n@node@_Buried.plx y=5.0
# Sinker (beginning of 2D problem)
# --------------------------------
###
refinebox Silicon min= {0 20.0} max= {3.0 26.0} xrefine= {0.25 0.25} yrefine= {0.25 0.25}
grid remesh
###
deposit material= {Oxide} type= isotropic time= 1 rate= {0.05}
photo mask= Sinker thickness= 1
implant Phosphorus dose= 5e15<cm-2> energy= 200<keV>
strip Photoresist
diffuse temp= 1100<C> time= 5<hr>
struct tdr= n@node@_vert_npn2
# Base
# ----
# Refine the mesh in the base region before the base implant.
refinebox Silicon min= {0 0.2} max= {1.5 14.4} xrefine= {0.1 0.1 0.2} yrefine= {0.1 0.2 0.1}
grid remesh
photo mask= Base thickness= 1
implant Boron dose= 1e14<cm-2> energy= 50<keV>
strip Photoresist
diffuse temp= 1100<C> time= 35<min>
struct tdr= n@node@_vert_npn3
# Emitter
# -------
# Refine the mesh in the emitter region before the emitter implant.
photo mask= Emitter thickness= 1
implant Arsenic dose= 5e15<cm-2> energy= 55<keV> tilt= 7 rotation= 0
strip Photoresist
diffuse temp= 1100<C> time= 25<min>
struct tdr= n@node@_vert_npn4
# Show the final profiles
# -----------------------
SetPlxList {BTotal SbTotal AsTotal PTotal}
WritePlx n@node@_Final.plx y= 5.0
WritePlx n@node@_Sinker.plx y= 23.0
# Back end
# --------
etch material= {Oxide} type= anisotropic time= 1 rate= {0.055} mask= Contact
# Reset the mgoals params to lower mesh requirements above silicon.
grid set.normal.growth.ratio.2d= 20.0 set.min.normal.size= 300<nm>
mgoals accuracy= 2e-5
deposit material= {Aluminum} type= isotropic time= 1 rate= {1.0}
etch material= {Aluminum} type= anisotropic time=1 rate= {1.1} mask= Metal
contact point x= -0.5 y= 5.0 name= emitter replace
contact point x= -0.5 y= 10.0 name= base replace
contact point x= -0.5 y= 23.0 name= collector replace
struct tdr= n@node@_vert_npn5
exit
Sentaurus sdevic (模拟出器件特征曲线的部分)
Electrode {
{ Name= "emitter" Voltage= 0.0 }
{ Name= "base" Voltage= 0.0 }
{ Name= "collector" Voltage= 0.0 }
}
File{
Grid = "n1_vert_npn5_fps.tdr"
Plot = "@tdrdat@"
Current = "@plot@"
Output = "@log@"
Parameter = "@parameter@"
}
Physics {
Hydro(eTemperature)
Mobility(
eHighFieldsaturation(CarrierTempDrive)
hHighFieldSaturation
DopingDep
)
Recombination(
SRH
Radiative
Auger
)
EffectiveIntrinsicDensity( OldSlotboom)
}
Plot{
*-Carrier Densities:
eDensity hDensity
* EffectiveIntrinsicDensity IntrinsicDensity
* eEquilibriumDensity hEquilibriumDensity
*-Currents and current components:
Current/Vector eCurrent/Vector hCurrent/Vector
* ConductionCurrent/Vector DisplacementCurrent/Vector
eMobility hMobility
eVelocity hVelocity
*-Fields, Potentials and Charge distributions
ElectricField/Vector
Potential
eQuasiFermi hQuasiFermi
SpaceCharge
*-Driving forces
eGradQuasiFermi/Vector hGradQuasiFermi/Vector
eEparallel hEparallel
eENormal hENormal
* eEffectiveField hEffectiveField
*-Temperatures
LatticeTemperature
eTemperature hTemperature
*-Generation/Recombination
SRHRecombination Band2Band AugerRecombination RadiativeRecombination
* AvalancheGeneration eAvalancheGeneration hAvalancheGeneration
TotalRecombination
eLifeTime hLifeTime
SurfaceRecombination
*-Doping Profiles
Doping
DonorConcentration AcceptorConcentration
*-Band structure
BandGap
BandGapNarrowing
ElectronAffinity
ConductionBandEnergy ValenceBand
*-Composition
xMoleFraction * yMoleFraction
*-Traps
eTrappedCharge hTrappedCharge
eGapStatesRecombination hGapStatesRecombination
*-Tunneling
* BarrierTunneling eBarrierTunneling hBarrierTunneling
* eDirectTunnel hDirectTunnel
}
Math{
Extrapolate
RelErrControl
Digits=5
NotDamped=200
Iterations=20
RelerrControl
ErReff(Electron) = 1.e8
ErReff(Hole) = 1.e8
}
Solve {
* Initial Guess
Coupled ( Iterations= 100 ) { Poisson }
Coupled { Poisson Electron Hole eTemperature}
* Initial base ramp
Quasistationary (
InitialStep= 1e-5 Increment= 1.5
Minstep= 1e-8 MaxStep= 0.2
Goal { Name= "collector" Voltage=3.0 }
){ Coupled { Poisson Electron Hole eTemperature } }
* Base and Collector ramp
NewCurrentFile="Gummel_"
Quasistationary (
InitialStep= 1.0e-3 Increment= 1.5
Minstep= 1e-8 MaxStep= 0.04
Goal { Name= "base" Voltage=1.0 }
){ Coupled { Poisson Electron Hole eTemperature }
}
* work flow
}
Solve {
Coupled(Iterations=100){ Poisson }
Coupled{ Poisson Electron Hole }
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="base" Voltage=0.96 }
){ Coupled {Poisson Electron Hole } }
Set( "base" mode current )
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="base" Current=1e-8 }
){ Coupled {Poisson Electron Hole } }
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="base" Current=1e-4 }
){ Coupled {Poisson Electron Hole }
Save(FilePrefix="n@node@_Ib" Time=(0.0;0.5;1) NoOverWrite )
}
NewCurrentPrefix="Ib0_"
Load(FilePrefix="n@node@_Ib_0000")
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="collector" Voltage=3.0 }
){ Coupled {Poisson Electron Hole}
}
NewCurrentPrefix="Ib1_"
Load(FilePrefix="n@node@_Ib_0001")
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="collector" Voltage=3.0 }
){ Coupled {Poisson Electron Hole}
}
NewCurrentPrefix="Ib2_"
Load(FilePrefix="n@node@_Ib_0002")
Quasistationary (
InitialStep=0.01 Increment=1.3
MaxStep =0.2 MinStep = 1e-6
Goal{ Name="collector" Voltage=3.0 }
){ Coupled {Poisson Electron Hole}
}
}
Silvaco athena&atlas 一起来
# (c) Silvaco Inc., 2019
go athena
# Title by dls
# First run: Through emitter
line x location=0.0 spac=0.2
line x location=5.0 spac=0.05
line x location=10.0 spac=0.05
line x location=23.0 spac=0.05
line x location=30.0 spacing=0.3
line y location=4.0 spac=0.05
line y location=5.0 spac=0.1
line y location=6.0 spac=0.2
init silicon orientation=100 c.boron=1e15 space.mul=1.5 two.d
# Buried layer(掩埋层)
Deposit Oxide Thickness=0.025 div=10
Implant Antimony Dose=5E15 Energy=100
Etch Oxide Thickness=0.03
# epi layer(外延层)
Epitaxy Temperature=1050 Time=1 Growth.Rate=4.0 div=40 C.Arsenic=1e15
Diffusion Temperature=1100 Time=60
#
# 防止注入损伤二氧化硅层
Deposit Oxide Thickness=0.05 div=10
# 集电极的注入
deposit photoresist thick=1.0 div=10
etch photoresist start x=22 y=1
etch continue x=24 y= 1
etch continue x=24 y= -2
etch done x=22 y=-2
implant phos dose=5e15 energy=200
etch photoresist
Diffusion Temperature=1100 Time=300
# 基极的注入
deposit photoresist thick=1.0 div=10
etch photoresist start x=1.5 y=1
etch continue x=13 y= 1
etch continue x=13 y= -2
etch done x=1.5 y=-2
implant boron dose=1e14 energy=50
etch photoresist
Diffusion Temperature=1100 Time=35
# 发射极的注入
deposit photoresist thick=1.0 div=10
etch photoresist start x=2.5 y=1
etch continue x=8 y= 1
etch continue x=8 y= -2
etch done x=2.5 y=-2
etch photoresist start x=22 y=1
etch continue x=24 y= 1
etch continue x=24 y= -2
etch done x=22 y=-2
implant arsenic dose=5.0e15 energy=55 tilt=7 rotation=0
etch photoresist
Diffusion Temperature=1100 Time=25
# 刻蚀oxide
etch oxide start x=3.4 y=1
etch continue x=7 y= 1
etch continue x=7 y= -2
etch done x=3.5 y=-2
etch oxide start x=10 y=1
etch continue x=12 y= 1
etch continue x=12 y= -2
etch done x=10 y=-2
etch oxide start x=22.5 y=1
etch continue x=23.5 y= 1
etch continue x=23.5 y= -2
etch done x=22.5 y=-2
# 形成金属PAD
Deposit Aluminum Thickness=1.0 div=10
etch Aluminum start x=-1 y=1
etch continue x=2 y= 1
etch continue x=2 y= -3
etch done x=-1 y=-3
etch Aluminum start x=8 y=1
etch continue x=9 y= 1
etch continue x=9 y= -3
etch done x=8 y=-3
etch Aluminum start x=13 y=1
etch continue x=22 y= 1
etch continue x=22 y= -3
etch done x=13 y=-3
etch Aluminum start x=24 y=1
etch continue x=35 y= 1
etch continue x=35 y= -3
etch done x=24 y=-3
electrode name=emitter x=5 y=-0.5
electrode name=base x=10 y=-0.5
electrode name=collector x=23 y=-0.5
structure outfile=tmp_01.str
tonyplot tmp_01.str
# Implant and drive-in the antimony buried layer.
go atlas
models bipolar print
material taun0=1e-6 taup0=1e-6
solve init
method newton trap
solve init
solve vcollector=0.1 vstep=0.1 vfinal=3.0 name=collector
solve vbase=0.1
log outf=bjtex10.log
solve vbase=0.001 vstep=0.01 vfinal=1.0 name=base
extract name="Vth1" x.val from curve(abs(v."base"),abs(i."collector")) where y.val=1e-5
extract name="Vth2" x.val from curve(abs(v."base"),abs(i."collector")) where y.val=5e-5
extract name="Vth3" x.val from curve(abs(v."base"),abs(i."collector")) where y.val=1e-4
tonyplot bjtex10.log
#IC/VCE with constant IB
#ramp Vb
log off
solve init
solve vbase=0.025
solve vbase=0.05
#
solve vbase=0.1 vstep=0.01 vfinal=0.9 name=base
#
#
## switch to current boundary conditions
#
contact name=base current
#
## ramp IB and save solutions
solve ibase=1.e-6
save outf=bjtex04_1.str master
solve ibase=5.e-5
save outf=bjtex04_2.str master
solve ibase=1.e-4
save outf=bjtex04_3.str master
#
#
#
## load in each initial guess file and ramp VCE
load inf=bjtex04_1.str master
log outf=bjtex04_1.log
solve vcollector=0.0 vstep=0.02 vfinal=3.0 name=collector
#
load inf=bjtex04_2.str master
log outf=bjtex04_2.log
solve vcollector=0.0 vstep=0.02 vfinal=3.0 name=collector
#
load inf=bjtex04_3.str master
log outf=bjtex04_3.log
solve vcollector=0.0 vstep=0.02 vfinal=3.0 name=collector
# plot results
tonyplot -overlay bjtex04_1.log bjtex04_2.log bjtex04_3.log
quit
3. Gumml 曲线对比
Ve&Vc=0 时, Ic=1e-5A 时:
- Vbase(sentaurus): 0.744v
2)Vbase(silvaco): 0.731v
两种模拟相差不大,在网格化误差范围内。
4. 输出特性曲线Ic-Uce
如图:基极电流为5e-6时,Sentaurus 模拟的电流191uA,而Silvaco为168uA,不同软件是有些差别的。
5. 总结
两个不同TCAD软件有不同之处:如 X,Y坐标的定义,参数变量的使用,模型参数的提取方面;但是在使用语言,求解的逻辑等方面有很大的相识性。各位看官,如有课题、毕设、项目难点,欢迎骚扰!