dunestar
Newbie level 3
Hi Folks,
I am trying to simulate a Schottky barrier device in Synopsys TCAD Sentaurus. Everything works fine, if I am neglecting the Schottky Barrier Lowering model. When I turn the model on, I got convergence problems. What should I do to correct this problem? Here is the source code of the device in TCAD.
STRUCTURE SOURCE CODE
;; geometry (in um)
;; -----------------------------------------------------------------------------
;; create body
(sdegeo:create-rectangle (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (/ @tch@ 2) 0) "Silicon" "body")
;; create oxide thickness top
(sdegeo:create-rectangle (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (+ (- 0(/ @tch@ 2)) -@tox@) 0) "SiO2" "t_oxide_top")
;; create oxide thickness bottom
(sdegeo:create-rectangle (position 0 (/ @tch@ 2) 0) (position @lgate@ (+ (/ @tch@ 2) @tox@) 0) "SiO2" "t_oxide_bottom")
;; ref/eval windows for doping
;; -----------------------------------------------------------------------------
;; window define body_p
(sdedr:define-refeval-window "RefEvalWin_body_p" "Rectangle" (position 0 (/ @tch@ 2) 0) (position @lgate@ (- 0(/ @tch@ 2)) 0))
;; window define source
(sdedr:define-refeval-window "RefEvalWin_s" "Rectangle" (position 0 (/ @tch@ 2) 0) (position 0.01 (- 0(/ @tch@ 2)) 0))
;; window define drain
(sdedr:define-refeval-window "RefEvalWin_d" "Rectangle" (position (- @lgate@ 0.01) (/ @tch@ 2) 0) (position @lgate@ (- 0(/ @tch@ 2)) 0))
;; type of the doping
(sdedr:define-constant-profile "body_p" "BoronActiveConcentration" 1e15)
;; placement of the doping
(sdedr:define-constant-profile-placement "RefEval_constant_body_p" "body_p" "RefEvalWin_body_p")
;; window define oxide thickness top
(sdedr:define-refeval-window "RefEvalWin_oxide_thickness_top" "Rectangle" (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (+ (- 0(/ @tch@ 2)) -@tox@) 0))
;; window define oxide thickness bottom
(sdedr:define-refeval-window "RefEvalWin_oxide_thickness_bottom" "Rectangle" (position 0 (/ @tch@ 2) 0) (position @lgate@ (+ (/ @tch@ 2) @tox@) 0))
;; ref/eval windows for mesh
;; -----------------------------------------------------------------------------
;; mesh define body_p
(sdedr:define-refinement-size "mesh_body_p" (/ (+ 0 @lgate@) @mesh_body_div_x@) (/ (+ 0 @tch@) @mesh_body_div_y@) 0 (/ (+ 0 @lgate@) (/ @mesh_body_div_x@ 2)) (/ (+ 0 @tch@) (/ @mesh_body_div_y@ 2)) 0)
;; mesh placement body_p
(sdedr:define-refinement-placement "RefEval_body_p" "mesh_body_p" "RefEvalWin_body_p" )
;; ref/eval windows for mesh at source junction
;; mesh define source/drain fine
(sdedr:define-refinement-size "mesh_sd" (/ (+ 0 @lgate@) (* @mesh_body_div_x@ 4)) (/ (+ 0 @tch@) (* @mesh_body_div_y@ 4)) 0 (/ (+ 0 @lgate@) (/ (* @mesh_body_div_x@ 4) 2)) (/ (+ 0 @tch@) (/ (* @mesh_body_div_y@ 4) 2)) 0)
;; mesh placement body_p
(sdedr:define-refinement-placement "RefEval_s" "mesh_sd" "RefEvalWin_s" )
(sdedr:define-refinement-placement "RefEval_d" "mesh_sd" "RefEvalWin_d" )
;; mesh define oxide_top_bottom
(sdedr:define-refinement-size "mesh_oxide_top_bottom" (/ (+ 0 @lgate@) @mesh_ox_div_x@) (/ (+ 0 @tox@) @mesh_ox_div_y@) 0 (/ (+ 0 @lgate@) (/ @mesh_ox_div_x@ 2)) (/ (+ 0 @tox@) (/ @mesh_ox_div_y@ 2)) 0)
;; mesh placement oxide_top
(sdedr:define-refinement-placement "RefEval_oxide_top" "mesh_oxide_top_bottom" "RefEvalWin_oxide_thickness_top")
;; mesh placement oxide_bottom
(sdedr:define-refinement-placement "RefEval_oxide_bottom" "mesh_oxide_top_bottom" "RefEvalWin_oxide_thickness_bottom")
;; contacts
;; -----------------------------------------------------------------------------
;; define contacts source_drain_gate
(sdegeo:define-contact-set "source_n" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:define-contact-set "drain_n" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:define-contact-set "gate_top_bottom" 4 (color:rgb 1 0 0 ) "##")
;; placement contacts source
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0 0 0)))) "source_n")
;; placement contacts drain
(sdegeo:define-2d-contact (list (car (find-edge-id (position @lgate@ 0 0)))) "drain_n")
;; placement contacts gate_top
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0.008 (+ (/ @tch@ 2) @tox@) 0)))) "gate_top_bottom")
;; placement contacts gate_bottom
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0.008 (+ (- 0(/ @tch@ 2)) -@tox@) 0)))) "gate_top_bottom")
;; mesh
;; ------------------------------------------------------------------------------
;; mesh built
(sde:build-mesh "snmesh" "-a tdr -c boxmethod " "n@node@")
DEVICE MODEL SOURCE CODE
File {
*- Input Files
Grid = "@tdr@"
*- Output Files
Current = "@plot@"
Plot = "@tdrdat@"
Output = "@log@"
}
Electrode {
{ Name="source_n" Voltage = 0.0 Schottky Barrier = @phi_Bn@ }
{ Name="drain_n" Voltage = 0.0 Schottky Barrier = @phi_Bn@ }
{ Name="gate_top_bottom" Voltage = 0.0 }
}
Physics {
Fermi
EffectiveIntrinsicDensity( BandGapNarrowing ( OldSlotboom ))
}
Physics( Electrode="source_n" ){ Recombination (BarrierTunneling) BarrierLowering}
Physics( Electrode="drain_n" ){ Recombination (BarrierTunneling) BarrierLowering}
Plot {
eDensity hDensity eCurrent hCurrent
Potential SpaceCharge ElectricField
eMobility hMobility eVelocity hVelocity
Doping DonorConcentration AcceptorConcentration
eQuasiFermi hQuasiFermi ConductionBand ValenceBand
eBarrierTunneling hBarrierTunneling
}
Math {
Extrapolate * off by default
RelErrControl * on by default
Derivatives
Iterations = 100
}
Math( Electrode = "source_n" ) {
Nonlocal( Length = 1e-5 )
Digits( NonLocal ) = 5
EnergyResolution( NonLocal ) = 0.0001
}
Math( Electrode = "drain_n" ) {
NonLocal( Length = 1e-5 )
Digits( NonLocal ) = 5
EnergyResolution( NonLocal ) = 0.0001
}
Solve {
*- Build-up of initial solution:
Coupled( Iterations = 100 ){ Poisson }
Coupled{ Poisson Electron Hole }
*- Bias drain to target bias:
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "drain_n" Voltage = @Vds@ }
){ Coupled{ Poisson Electron Hole } }
*- Bias gate to target bias
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "gate_oben_unten" Voltage = @Vgs_min@ }
){ Coupled{ Poisson Electron Hole } }
*- Bias gate to target bias
NewCurrent = "DC_TransferChar_"
*- Bias gate to target bias:
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "gate_oben_unten" Voltage = @Vgs_max@ }
){ Coupled{ Poisson Electron Hole }}
}
THX dunestar
I am trying to simulate a Schottky barrier device in Synopsys TCAD Sentaurus. Everything works fine, if I am neglecting the Schottky Barrier Lowering model. When I turn the model on, I got convergence problems. What should I do to correct this problem? Here is the source code of the device in TCAD.
STRUCTURE SOURCE CODE
;; geometry (in um)
;; -----------------------------------------------------------------------------
;; create body
(sdegeo:create-rectangle (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (/ @tch@ 2) 0) "Silicon" "body")
;; create oxide thickness top
(sdegeo:create-rectangle (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (+ (- 0(/ @tch@ 2)) -@tox@) 0) "SiO2" "t_oxide_top")
;; create oxide thickness bottom
(sdegeo:create-rectangle (position 0 (/ @tch@ 2) 0) (position @lgate@ (+ (/ @tch@ 2) @tox@) 0) "SiO2" "t_oxide_bottom")
;; ref/eval windows for doping
;; -----------------------------------------------------------------------------
;; window define body_p
(sdedr:define-refeval-window "RefEvalWin_body_p" "Rectangle" (position 0 (/ @tch@ 2) 0) (position @lgate@ (- 0(/ @tch@ 2)) 0))
;; window define source
(sdedr:define-refeval-window "RefEvalWin_s" "Rectangle" (position 0 (/ @tch@ 2) 0) (position 0.01 (- 0(/ @tch@ 2)) 0))
;; window define drain
(sdedr:define-refeval-window "RefEvalWin_d" "Rectangle" (position (- @lgate@ 0.01) (/ @tch@ 2) 0) (position @lgate@ (- 0(/ @tch@ 2)) 0))
;; type of the doping
(sdedr:define-constant-profile "body_p" "BoronActiveConcentration" 1e15)
;; placement of the doping
(sdedr:define-constant-profile-placement "RefEval_constant_body_p" "body_p" "RefEvalWin_body_p")
;; window define oxide thickness top
(sdedr:define-refeval-window "RefEvalWin_oxide_thickness_top" "Rectangle" (position 0 (- 0(/ @tch@ 2)) 0) (position @lgate@ (+ (- 0(/ @tch@ 2)) -@tox@) 0))
;; window define oxide thickness bottom
(sdedr:define-refeval-window "RefEvalWin_oxide_thickness_bottom" "Rectangle" (position 0 (/ @tch@ 2) 0) (position @lgate@ (+ (/ @tch@ 2) @tox@) 0))
;; ref/eval windows for mesh
;; -----------------------------------------------------------------------------
;; mesh define body_p
(sdedr:define-refinement-size "mesh_body_p" (/ (+ 0 @lgate@) @mesh_body_div_x@) (/ (+ 0 @tch@) @mesh_body_div_y@) 0 (/ (+ 0 @lgate@) (/ @mesh_body_div_x@ 2)) (/ (+ 0 @tch@) (/ @mesh_body_div_y@ 2)) 0)
;; mesh placement body_p
(sdedr:define-refinement-placement "RefEval_body_p" "mesh_body_p" "RefEvalWin_body_p" )
;; ref/eval windows for mesh at source junction
;; mesh define source/drain fine
(sdedr:define-refinement-size "mesh_sd" (/ (+ 0 @lgate@) (* @mesh_body_div_x@ 4)) (/ (+ 0 @tch@) (* @mesh_body_div_y@ 4)) 0 (/ (+ 0 @lgate@) (/ (* @mesh_body_div_x@ 4) 2)) (/ (+ 0 @tch@) (/ (* @mesh_body_div_y@ 4) 2)) 0)
;; mesh placement body_p
(sdedr:define-refinement-placement "RefEval_s" "mesh_sd" "RefEvalWin_s" )
(sdedr:define-refinement-placement "RefEval_d" "mesh_sd" "RefEvalWin_d" )
;; mesh define oxide_top_bottom
(sdedr:define-refinement-size "mesh_oxide_top_bottom" (/ (+ 0 @lgate@) @mesh_ox_div_x@) (/ (+ 0 @tox@) @mesh_ox_div_y@) 0 (/ (+ 0 @lgate@) (/ @mesh_ox_div_x@ 2)) (/ (+ 0 @tox@) (/ @mesh_ox_div_y@ 2)) 0)
;; mesh placement oxide_top
(sdedr:define-refinement-placement "RefEval_oxide_top" "mesh_oxide_top_bottom" "RefEvalWin_oxide_thickness_top")
;; mesh placement oxide_bottom
(sdedr:define-refinement-placement "RefEval_oxide_bottom" "mesh_oxide_top_bottom" "RefEvalWin_oxide_thickness_bottom")
;; contacts
;; -----------------------------------------------------------------------------
;; define contacts source_drain_gate
(sdegeo:define-contact-set "source_n" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:define-contact-set "drain_n" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:define-contact-set "gate_top_bottom" 4 (color:rgb 1 0 0 ) "##")
;; placement contacts source
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0 0 0)))) "source_n")
;; placement contacts drain
(sdegeo:define-2d-contact (list (car (find-edge-id (position @lgate@ 0 0)))) "drain_n")
;; placement contacts gate_top
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0.008 (+ (/ @tch@ 2) @tox@) 0)))) "gate_top_bottom")
;; placement contacts gate_bottom
(sdegeo:define-2d-contact (list (car (find-edge-id (position 0.008 (+ (- 0(/ @tch@ 2)) -@tox@) 0)))) "gate_top_bottom")
;; mesh
;; ------------------------------------------------------------------------------
;; mesh built
(sde:build-mesh "snmesh" "-a tdr -c boxmethod " "n@node@")
DEVICE MODEL SOURCE CODE
File {
*- Input Files
Grid = "@tdr@"
*- Output Files
Current = "@plot@"
Plot = "@tdrdat@"
Output = "@log@"
}
Electrode {
{ Name="source_n" Voltage = 0.0 Schottky Barrier = @phi_Bn@ }
{ Name="drain_n" Voltage = 0.0 Schottky Barrier = @phi_Bn@ }
{ Name="gate_top_bottom" Voltage = 0.0 }
}
Physics {
Fermi
EffectiveIntrinsicDensity( BandGapNarrowing ( OldSlotboom ))
}
Physics( Electrode="source_n" ){ Recombination (BarrierTunneling) BarrierLowering}
Physics( Electrode="drain_n" ){ Recombination (BarrierTunneling) BarrierLowering}
Plot {
eDensity hDensity eCurrent hCurrent
Potential SpaceCharge ElectricField
eMobility hMobility eVelocity hVelocity
Doping DonorConcentration AcceptorConcentration
eQuasiFermi hQuasiFermi ConductionBand ValenceBand
eBarrierTunneling hBarrierTunneling
}
Math {
Extrapolate * off by default
RelErrControl * on by default
Derivatives
Iterations = 100
}
Math( Electrode = "source_n" ) {
Nonlocal( Length = 1e-5 )
Digits( NonLocal ) = 5
EnergyResolution( NonLocal ) = 0.0001
}
Math( Electrode = "drain_n" ) {
NonLocal( Length = 1e-5 )
Digits( NonLocal ) = 5
EnergyResolution( NonLocal ) = 0.0001
}
Solve {
*- Build-up of initial solution:
Coupled( Iterations = 100 ){ Poisson }
Coupled{ Poisson Electron Hole }
*- Bias drain to target bias:
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "drain_n" Voltage = @Vds@ }
){ Coupled{ Poisson Electron Hole } }
*- Bias gate to target bias
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "gate_oben_unten" Voltage = @Vgs_min@ }
){ Coupled{ Poisson Electron Hole } }
*- Bias gate to target bias
NewCurrent = "DC_TransferChar_"
*- Bias gate to target bias:
Quasistationary(
InitialStep = 0.01 Increment = 1.35
MinStep = 1e-9 MaxStep = 0.02
Goal{ Name = "gate_oben_unten" Voltage = @Vgs_max@ }
){ Coupled{ Poisson Electron Hole }}
}
THX dunestar