|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
首先声明,TCAD对于本人来说是副业,前几天小伙伴找我帮忙玩一下ESD,由于之前有些TCAD的经验就试着玩了一下,本人对ESD里理解还是很肤浅的,望各路大神指教。
关于ESD仿真,见过有些文章用medici的,silvaco还有例子。之前也用过medici做过SEL,但是用起来都不如sentaurus顺手。sentaurus是个入门时间比较长的东西,但是掌握了那些软件的相互关系,再改几个例子玩玩就能上手了,swb神器不解释
首先是器件建模,能拿到foundry厂recipe然后做sprocess大神可以高冷的嘲笑一下我等摸黑前进的苦逼了。我也曾经试过用sprocess跑过,但是实在是搞不定,感觉hold不住最后的mesh。根据我的实践,有两种自定义的方法:
第一种是process emulator,不知道的去sde手册里搜,一个很实用的工具,可以读版图,根据各层做掺杂,但是没有物理过程,相当于一个“伪”工艺仿真。好处就是根据版图做三维结构很方便。还可以根据版图做refinement,不过这一块我还没有玩过
第二个就是写sde的command file了。很多同志喜欢用sde手动画结构,我之前也手动画过,但是手动画的话在之后校准或者调参数会带来一些麻烦。我自己喜欢写好command file之后直接在sde里面mesh好,觉得做完结构再加一个snmesh来mesh还是太啰嗦了。关于mesh,根据我的仿真,加一个MaxTransDiff的refinement function,multibox一定要加一些。我见过暴力的直接整个结构按0.001来mesh,简直就是找死。之前我是小白的时候也试过把结深附近的全做成一个尺寸的mesh,作死不解释。还有就是定义结构的时候适当定义一些中间变量,会方便很多。顺便吐槽一下sde里面,做运算居然是(define A (+ B D) ) 这种丧心病狂的格式。最后要注意heatsink要做,而且衬底不能太薄以至于和真实的热血条件相差太大,几um就行。
最关键的就是sdevice了,江湖盛传用continuation才能仿出snapback,不过经本人的实践,continuation仿出来的结果和TLP做出来的差别比较大,用来定性分析一下还不错,我记得我仿的时候居然做出了9000K的温度,当时都吓出汗了。从来没试过加电压,估计很不容易收敛吧。我一般都是加一个TLP电流(比如在GGNMOS的drain加一个上升时间10ns,20mA,衰减时间140ns的电流)。这个方法结果是可以仿出来的,但是设置不好很容易不收敛。有关细节实在说太多了。sentaurus在这些地方很鸡贼,高端的全部都放在solvenet,想看例子就得交钱,没钱去扣手册估计得整个小半年才搞的清楚。在这里再膜拜一下有solvenet id的大神。具体来说解法用ILS就行了,有关热的和击穿的能加的都加上。
贴个某本书里面的脚本吧
* Electrothermal Simulation of a ggNFET (0.13 um CMOS)
* under TL Pulse conditions: duration 150 ns 5 mA/u
* specification of the electrodes con ect drain to a piecewise linear
* current source with 5 mA/u 1 ns risetime a d 150 ns duration
Electrode { {name="drain" voltage=0 current= ((0,5.e-15)(10.e-9,25e-3)(150e-9,1e-6))}
{ name="source" voltage=0.0 }
{ name="substrate" voltage=0.0}
{ name="gate" voltage=0 }}
* specification of thermodes pin metal connect on to 300 K
Thermode { {name= "heatsink" temperature=300}}
* specify file names
File {
*Input Files
Grid = "@tdr@"
* Output Files
Plot= "@tdrdat@"
Current="@plot@"
Output= "@log@"
}
* specify physical models
Physics { Recombination ( SRH(DopingDep) Auger Avalanche(vanOverstraeten))
Mobility ( DopingDependence CarrierCarrierScattering HighFieldSaturation(GradQuasiFermi) )
EffectiveIntrinsicDensity ( BennettWilson ) Thermodynamic }
* specify output values
plot { eDensity hDensity eCurrent hCurrent Totalcurrent
ElectricField Potential Doping SpaceCharge SRH Auger Avalanche EffectiveIntrinsicDensity
LatticeTemperature }
* numerical settings
Math {Derivatives Avalderivative NoCheckTransientError NewDiscretization RelErrControl
Digits=5 Number_of_Threads = maximum}
* specify equations to be solved
solve { Poisson
Coupled { Poisson Electron Hole }
Coupled { poisson electron hole temperature}
Transient (InitialStep=5e-13 MaxStep=1e-8 MinStep=1e-16 Increment=1.5 InitialTime=0 FinalTime=150e-9
plot { range=(0,150e-9) intervals=3} )
{ Coupled { poisson electron hole temperature}} }
这个是可以出结果的,但是收敛性一般,跑一组数据基本上最后都会红掉,但是snapback还是可以看得到的。
再贴个continuation的脚本,当时也是在eetop一个隐蔽的位置找到的
**********************SDEVICE*************************
File {
*Input Files
Grid = "@tdr@"
* Output Files
Plot= "@tdrdat@"
Current="@plot@"
Output= "@log@"
}
Electrode {
{ Name="source" Voltage=0.0 }
{ Name="drain" Voltage= 0 Resist=600}
{ Name="gate" Voltage=0 }
{ Name="substrate" Voltage= 0.0 }
}
Thermode{
{name="heatsink" Temperature=300 SurfaceResistance=0.01}
}
Physics {
Recombination (
SRH
Auger
Avalanche(Okuto)
)
Mobility (
DopingDependence
Enormal
HighFieldSaturation
PhuMob
)
Hydrodynamic(hTemperature)
}
Plot{
*--Density and Currents, etc
eDensity hDensity
TotalCurrent/Vector eCurrent/Vector hCurrent/Vector
eMobility hMobility
eVelocity hVelocity
eQuasiFermi hQuasiFermi
*--Temperature
eTemperature Temperature*hTemperature
*--Fields and charges
ElectricField/Vector Potential SpaceCharge
*--Doping Profiles
Doping DonorConcentration AcceptorConcentration
*--Generation/Recombination
SRH Auger * Band2Band
AvalancheGeneration eAvalancheGeneration hAvalancheGeneration
*--Driving forces
eGradQuasiFermi/Vector hGradQuasiFermi/Vector
eEparallel hEparallel eENormal hENormal
*--Band structure/Composition
BandGap
BandGapNarrowing
* Affinity
ConductionBand ValenceBand
* eQuantumPotential hQuantumPotential
eQuantumPotential
*--Gate Tunneling
* eBarrierTunneling hBarrierTunneling BarrierTunneling
* eDirectTunnel hDirectTunnel
}
Math {
DrForceRefDens= 1e12
Extrapolate
Digits=6
Notdamped= 50
Iterations= 15
CNormPrint
ErrRef(electron) = 1e5
ErrRef(hole) = 1e5
Number_of_Threads = maximum
}
Solve {
*- Creating initial guess:
Coupled(Iterations= 100 LineSearchDamping= 1e-4){ Poisson }
Coupled { Poisson Electron Hole hTemperature}
Continuation(
Name="drain"
Normalized
Increment= 2.0
Decrement= 2.0
InitialVstep= 0.01
Incrementangle= 30
Decrementangle= 60
MaxVoltage= 50
MinVoltage= 0
MaxCurrent= 0.5
MinCurrent= 0.0
Iadapt= 1e-11
){ Coupled { Poisson Electron Hole hTemperature}}
}
这个收敛性很不错的
机缘巧合看到的一个脚本,比较高端,收敛性很好,把干货都贴在下面了
Plot :
Doping # AcceptorConcentration DonorConcentration
Potential eQuasiFermi hQuasiFermi
# ConductionBandEnergy ValenceBandEnergy
ElectricField/Vector # eGradQuasiFermi hGradQuasiFermi
ConductionBand ValenceBand
eDensity hDensity SpaceCharge
eCurrent/Vector hCurrent/Vector Current/Vector
ConductionCurrent/Vector DisplacementCurrent/Vector
SRHRecombination SurfaceRecombination
AugerRecombination TotalRecombination
AvalancheGeneration eAvalanche hAvalanche eEparallel hEparallel
eIonIntegral hIonIntegral meanIonIntegral
EffectiveIntrinsicDensity IntrinsicDensity
eLifeTime hLifeTime eMobility hMobility
eVelocity/Vector hVelocity/Vector
LatticeTemperature Temperature # eTemperature hTemperature
TotalHeat RecombinationHeat hJouleHeat eJouleHeat
Math:
Method = ILS
transient = BE
Wallclock
Extrapolate
Derivatives
AvalDerivatives
Digits = 6
Iterations
= 20
Notdamped
= 50
RhsFactor = 1e20
Physics:
EffectiveIntrinsicDensity ( OldSlotboom )
Mobility ( DopingDep ( UniBo )
HighFieldSaturation ( GradQuasiFermi )
CarrierCarrier ( ConwellWeisskopf )
)
Recombination ( SRH ( DopingDependence TempDependence )
Avalanche ( UniBo2 GradQuasiFermi )
Auger
)
Thermodynamic
AnalyticTEP
看到这个还不知道sdevice command file怎么写的可以去面壁了
剩下的用SVisual或者inspect提参数有兴趣的大神自己研究一下吧
sde的脚本就不能给了,你懂的。不过跟着CMOS例子里面那个走一下基本上就OK了,不过例子里面是做一般然后最后mirror的,个人很不喜欢这种方法,这个例子也不太好改,当时我就怒写了一个全新的。
最后说一下环境,我64位i7 8G小本,虚拟机里给了4G内存
模型mesh出来差不多是这样的
The final mesh has:
9684 points.
19034 elements.
10 regions.
Max. connectivity = 10 located at (2.15244;1.88363)
minAngle: 0.0240401 maxAngle: 127.498
nVerts = 9684 nTris = 19034 nMats = 5
max connectivity (tris per node): 10
bmin: -0 -0
bmax: 5.58 2.10572
min edgeLength: 9.14551e-06 [near (2.15789 2.00572)]
min volume: 2.76866e-09 max volume: 0.00286863 Total volume: 11.2079
之前也有江湖传言说PC机的最多只能跑8000个point,还要跑大半天。我反正基本上不到一个小时搞定。仿3D的最好还是去工作站吧,或者顶配PC不用虚拟机
祝大家仿真多多收敛。顺便宣传一下一个群,33934490,里面有大神,你懂的
最后对ESD工程师致以崇高的敬意,我感觉ESD设计真是神出鬼没千变万化,辛苦了 |
|