Sentaurus TCAD 学习记录1(影响Ioff Ion的参数)

在使用sentaurus TCAD的过程中,我们往往需要调试最后sdevice跑出来的Ion和Ioff大小。

调Ion和Ioff的目的:

1. 得到更好的器件性能;

2. 和实验中/文献中的IV曲线对上;

调Ion和Ioff的思路:

影响因素上看,往往可以从器件的几何结构,器件掺杂和物理模型三个方面讨论。

调试思路上看,为了校准IV,可以先调IV的shape,再校准Ioff,最后校准Ion

调Ion和Ioff的具体过程记录:

步骤一:用sde搭建器件

这里,我们以bulk CMOS为例。首先用sde搭建一个几何模型,如图所示:

具体实现代码如下:(其中包含了许多可以调整的几何参数,有兴趣的同学可以自己设置)

; Reinitializing SDE 
(sde:clear)

;Height of substrate
(define  Hsub @Hsub@);1
(display "Height of substate: ") (display Hsub) (display "um") 
(newline)
;Height of spacer
(define  Hsp  @Hsp@);0.1
(display "Height of spacer : ") (display Hsp) (display "um")
(newline)
;Length of total
(define  Lsub @Lsub@);1
(display "Length of substrate: ") (display Lsub) (display "um") 
(newline)
;Length of gate
(define  Lg @Lg@);0.06
(display "Length of gate: ") (display Lg) (display "um") 
(newline)
;Length of spacer
(define  Lsp @Lsp@);0.2
(display "Length of pacer: ") (display Lsp) (display "um") 
(newline)


;Length of oxide
(define  Lox @Lox@);0.2
(display "Length of ox: ") (display Lox) (display "um") 
(newline)

;oxide
(define  Tox @Tox@);0.04
(display "Thickness of oxide: ") (display Tox) (display "um") 
(newline)

;W
(define  W @W@);
(display "Width: ") (display W) (display "um") 
(newline)


(define Xsub (/ Lsub 2.0))
(define Ysub  Hsub)

(define Xsp (/ Lsp 2.0))

(define Xox (/ Lox 2.0))

(define Xg (/ Lg 2.0))

; set coordinate system up direction 
(sde:set-process-up-direction "+z")

; Selecting default Boolean expression 
(sdegeo:set-default-boolean "ABA")

; Creating rectangular regions  
(sdegeo:create-cuboid
  (position (- Xsub)  0  0.0) (position Xsub  Ysub   W) 
  "Silicon" "substrate"
) 

(sdegeo:create-cuboid
  (position (- Xox) (- Tox) 0.0) (position Xox  0.0   W) 
  "Oxide" "R.Gateox"
)

(sdegeo:create-cuboid
  (position (- Xsp) (- Hsp)   0.0) (position Xsp (- Tox) W) 
  "Nitride" "R.Spacer"
)

(define  Tox2 @Tox2@);0.0002
(sdegeo:create-cuboid
  (position (- (- Xg) Tox2) (- Hsp)   0.0) (position (+ Xg Tox2) (- Tox) W) 
  "Oxide" "R.Gateox2"
)
(sdegeo:create-cuboid
  (position (- Xg) (- Hsp)  0.0) (position  Xg (- Tox) W) 
  "Nitride" "R.Polygate"
)

(sdegeo:create-cuboid
  (position (+ Xox 0.285) 0  0.0) (position  (+ Xox 0.002) 0.001 W) 
  "Silicon" "R.del1"
)
(sdegeo:create-cuboid
  (position (- (- Xox) 0.285) 0  0.0) (position  (- (- Xox) 0.002) 0.001 W) 
  "Silicon" "R.del2"
)
(sdegeo:set-contact (find-body-id (position (+ Xox 0.1) 0.0005 (/ W 2))) "C.drain" "remove")
(sdegeo:set-contact (find-body-id (position (- (- Xox) 0.1)  0.0005 (/ W 2))) "C.source" "remove")  

;(sdegeo:delete-region(find-body-id (position (+ Xox 0.1) 0.0005 (/ W 2) )))
; Rounding edges
;(sde:define-parameter "fillet-radius" 0.08 0.0 0.0 )
;(sdegeo:fillet-2d (find-vertex-id (position -0.2 -0.2 0.0)) fillet-radius)
;(sdegeo:fillet-2d (find-vertex-id (position  0.2 -0.2 0.0)) fillet-radius)

; Defining contacts 

;(sdegeo:set-current-contact-set "C.source")
;(sdegeo:set-contact (find-face-id (position (- (- Xox) 0.05)  0 (/ W 2))) "C.source")  

;(sdegeo:set-current-contact-set "C.drain")
;(sdegeo:set-contact (find-face-id (position (+  Xox 0.05)  0.0 (/ W 2)))  "C.drain")  


;(sdegeo:set-contact (find-face-id  (position 0.0 (- Hsp) (/ W 2))) "gate" )
(sdegeo:set-contact (find-face-id (position  0.0  Hsub (/ W 2))) "C.substrate")
(sdegeo:set-contact (find-body-id (position 0.0 (- Hsp) (/ W 2))) "gate" "remove")


; Constant doping profile definions
(sdedr:define-constant-profile "Const.Bulk" "BoronActiveConcentration" @d_bulk@)
(sdedr:define-constant-profile-region "PlaceCD.Bulk"
  "Const.Bulk" "substrate")

(sdedr:define-constant-profile "Const.Poly" "ArsenicActiveConcentration" @d_poly@)
(sdedr:define-constant-profile-region "PlaceCD.Poly"
  "Const.Poly" "R.Polygate")



(define  L_dop_sd_g @L_dop_sd_g@);0.01

; S/D Imp
(sdedr:define-refeval-window "BaseLine.Source" "cuboid"  
 (position  (- (- Xg) L_dop_sd_g) @depth_sd@ 0.0)  (position (- Xsub) 0.0 W) )

(sdedr:define-refeval-window "BaseLine.Drain" "cuboid" 
 (position (+ Xg L_dop_sd_g) @depth_sd@ 0.0)  (position Xsub  0.0 W) )

(sdedr:define-gaussian-profile "Gauss.SourceDrain"
  "ArsenicActiveConcentration" "PeakPos" 0.0 "PeakVal" @d_sd@
  "ValueAtDepth" (* 0.1 @d_sd@) "Depth" @dep_sd@ "Gauss" "Factor" @G_factor@)

(sdedr:define-analytical-profile-placement "PlaceAP.Source"
 "Gauss.SourceDrain" "BaseLine.Source" "Both" "NoReplace" "Eval")

(sdedr:define-analytical-profile-placement "PlaceAP.Drain"
 "Gauss.SourceDrain" "BaseLine.Drain" "Both" "NoReplace" "Eval")

(define  ldd_dop @ldd_dop@);1e19
(define  ldd_l @ldd_l@);0.01
(define  ldd_h @ldd_h@);0.01


#if @ADD_LDD@ == 1
 ;LDD Imp
(sdedr:define-refinement-window "ldd.Source" "cuboid"  
 (position  (+ (- Xg) @ldd_l@) 0.0 0.0)  (position (- (- Xg) 0.05) @ldd_h@ W) )

(sdedr:define-refinement-window "ldd.Drain" "cuboid" 
(position  (- Xg @ldd_l@)  0.0   0.0)  (position (+ Xg 0.05)  @ldd_h@  W) )

(sdedr:define-constant-profile "ldd" "ArsenicActiveConcentration" @ldd_dop@ )

(sdedr:define-constant-profile-placement "ldd-place" "ldd" "ldd.Drain")
(sdedr:define-constant-profile-placement "ldd-place1" "ldd" "ldd.Source")
#endif

; Meshing strategies
(sdedr:define-refeval-window "RefWin.Global" "cuboid"
    (position (- Xsub)  0  0.0) (position Xsub  Ysub   W) )

(sdedr:define-refinement-size "RefDef.Global"
  0.1  0.1  
  0.04 0.04 
0.08 0.08 )

(sdedr:define-refinement-placement "Place.Global"
 "RefDef.Global" "RefWin.Global" )


(sdedr:define-refeval-window "RefWin.Active" "cuboid"
 (position (- Xox) -0.2 0 ) (position Xox 0.2 W))
(sdedr:define-refinement-size "RefDef.Active"
  0.06  0.06  
  0.05 0.05 
 0.1 0.1 )

(sdedr:define-refinement-placement "Place.Active"
"RefDef.Active" "RefWin.Active")



(sdedr:define-refeval-window "RefWin.channel" "cuboid"
  (position (- (- Xox) 0.1) 0 0) (position (+ 0.1 Xox) 0.3 W))

(sdedr:define-refinement-size "RefDef.channel"
  @refine_size_max@  @refine_size_max@ 
  @refine_size_min@  @refine_size_min@  
 0.1 0.1)

(sdedr:define-refinement-placement "Place.Global"
 "RefDef.channel" "RefWin.channel" )


; Saving the model
(sde:save-model "n@node@_geo")
; Build Mesh 
(sde:build-mesh "n@node@_msh")

sde中参数设置如下 

 步骤二:用sdevice给器件电流仿真激励
#define _CAR1_    Electron

#define _DG_     eQuantumPotential
#define _Vdd_    @Vd@	
#define _VdLin_  @Vg@

Electrode{
   { Name="C.source"    Voltage= 0.0 }
   { Name="C.drain"     Voltage= 0.0 }
   { Name="gate"       Voltage=0.0 Schottky Workfunction=@WF@}
   { Name="C.substrate"      Voltage= 0.0 }
}

File {
   Grid=   "@tdr@"
   Plot=   "@tdrdat@"
   Current="@plot@"
   Output= "@log@"
Parameter = "@parameter@"

}

Physics {
Fermi               
Mobility (
PhuMob
Enormal( @Enormal@) 
)

}



Plot{
*--Density and Currents, etc
VertexIndex
eJouleHeat
   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 Band2Band * Auger
   * AvalancheGeneration eAvalancheGeneration hAvalancheGeneration

*--Driving forces
   eGradQuasiFermi/Vector hGradQuasiFermi/Vector
   eEparallel hEparallel eENormal hENormal

*--Band structure/Composition
   BandGap 
   BandGapNarrowing
   Affinity
   ConductionBand ValenceBand
   eQuantumPotential hQuantumPotential
   
*--Stress related data
   StressXX StressYY StressZZ
   StressXY StressXZ StressYZ

}


Math {
  Extrapolate
  Derivatives
  RelErrControl
  Digits=5
  RHSmin=1e-10
  Notdamped=100
  Iterations=500
  DirectCurrent
  ExitOnFailure
  *Method=ParDiso
}   

Solve{
  #-initial solution:
  NewCurrentPrefix="init_" 
  Coupled(Iterations= 100 LineSearchDamping= 1e-4   ){ Poisson _DG_}
  Coupled { Poisson _CAR1_ _DG_ }

#----------------------------------------------------------------------#
#- IdVg 
#if @IdVd@ == 0
#----------------------------------------------------------------------#


  #-ramp drain
  Quasistationary(
     InitialStep= 1e-7
     MaxStep= 0.1 Minstep= 1.e-15
     Increment= 1.3
     Goal { Name="C.drain" Voltage=@Vd@ }
  ){ Coupled{  Poisson _CAR_ _DG_} }

  NewCurrentPrefix="IdVg_VdLin_" 
  #-ramp gate:
  Quasistationary(
     DoZero
     InitialStep= 1.e-8
     MaxStep= 0.01 Minstep= 1.e-15
     Increment= 1.3
     Goal{ Name="gate" Voltage=@Vg@ }
  ){ Coupled{  Poisson _CAR_ _DG_} }

#----------------------------------------------------------------------#
#- IdVd 
#else
#----------------------------------------------------------------------#

 Quasistationary(
      InitialStep= 1e-3 Increment= 1.25
      Minstep= 1e-5 MaxStep= 0.2 
      Goal{ Name="gate"  Voltage= 0 }
   ){ Coupled{ Poisson _CAR1_ _DG_ } }

   Quasistationary(
      InitialStep= 1e-3 Increment= 1.2
      Minstep= 1e-5 MaxStep= 0.2 
      Goal{ Name="gate"  Voltage= @Vg@ }
   ){ Coupled{ Poisson _CAR1_ _DG_ }
      Save(
        FilePrefix="n@node@" 
        Time=(Range=(0 1) Intervals= @<IdVd-1>@ )
        NoOverWrite
      )
    }

*- Vd sweeps 
!(
  for { set i 0 } { $i < @IdVd@ } { incr i } {
  set Number [format "%04d" $i]
  puts "
    NewCurrentPrefix=\"IdVd_${i}_\" 
    Load(FilePrefix=\"n@node@_$Number\")
    Quasistationary( 
      DoZero 
      InitialStep=1e-5 Increment=1.5 
      MinStep=1e-5 MaxStep=0.02 
      Goal \{ Name=\"drain\" Voltage= _Vdd_ \}
    )\{ Coupled \{ Poisson _CAR_ _DG_ \}
        CurrentPlot( Time=(Range=(0 0.25) Intervals=100; 
                           Range=(0.25 1) Intervals=30) )
   \}"
  }
)!
#endif







}

 对IV shape影响很大的因素有

首先对IV的shape进行调整, 对IV shape影响很大的因素有:

1. 功函数@WF@ :nmos功函数的范围要在4.0-4.5v之内,不然IV的shape会很奇怪。 笔者往往用WF来调整Ioff(Ion影响较小),对nmos,WF越大,Ioff越小。

2. 氧化层的厚度@Tox@: 一般来说,Tox越薄,跑出来的Ion越大,Ioff越小。(一般范围在0.8nm-8nm以内)

3. 各种掺杂::这个根据不同器件的文献找对应的参数或者问chatgpt即可。

bulk的掺杂@d_bulk@  S/D的掺杂@d_sd@ LDD的掺杂@d_ldd@ 【有时候会遇到Ioff降不下去的情况,这个时候可以考虑加一个轻掺杂LDD】

一般来说,可以根据这几个参数确定大概的IV shape,还有其他的参数可以细调。笔者下一篇再详细讨论。

邮箱:rujia_sj@sjtu.edu.cn

目前Vd=0.1V下的Vg-Id结果,环境温度在77K和300K下的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值