3日目(デバイスシミュレーション)
前回のSimple2Dの例題を走らせてみる。
まずは、Simple2Dのプロジェクトを開いてください。
cd ~/work/Silicon/TCAD/Sentaurus/tutorials/Simple2D
swb . &
node 27だけ実行してあったと思います。
その構造に相当するIVシミュレーション(node 45)も実行して前回同様、Inspectorを使ってIV_n45_des.plt を開いてみてください。
anodeの OuterVoltage をx軸に、anodeのTotalCurrentをy軸に指定してプロットを描くとしたの図(左)のようになります。
最初の例題で見たグラフとずいぶん違う形になっていますが、これは130V付近で電場の集中による雪崩増幅が起こったことを示唆しています。
一般的に、p-n 接合に大きな逆方向電圧がかけられると,接合は降伏現象(Break down)を起こし,大電流が流れます。
Y軸をログスケールにするともう少しわかりやすいかもしれません。上の方真ん中付近にある logYというボタンを押してみてください。
下の図(右)のようになります。(対数グラフになっているので縦軸は絶対値になっているので注意! (0,0)は右下です。)
130V付近までは依然見た様な電流電圧特性を示しますが、その後急に増えていることがわかります。
この降伏(Break down)が起こる電圧をBreak down voltageと呼びます。
Breakを起こしたときの電場分布と電子の密度分布を見てみましょう。
node 45で右クリック、 svisual で n45_des.tdrを開く。
(scaling : X to Y ratioを10くらいにして表面領域を拡大してみてください。)
電場分布 (Electric Field)や、電子密度(Electron Density)、衝突イオン化(Impact Ionization)などを見てみるとガードリングの付近で非常に電場が集中していることがわかります。
一般的に電子の持つ運動エネルギーがシリコンのバンドギャップを超えたとき、雪崩増幅が起こる。この電圧はシリコンであれば約300kV/cm以上である。(出典: SM.Sze. 『Semiconductor Device』3.7章「高電界効果」より)
電場分布をy軸に沿った軸でカットしてみると3e5V/cmを超えていることがわかります。
Simple2D のIVシミュレーションのコマンド
まず、デバイスシミュレーションに関しては膨大なオプションが準備されています。マニュアルは全1574ページ!!
もちろん今日だけで全部は説明できませんし、おそらく必要ないものがほとんどです。辞書的にマニュアルを使いながら理解してみてください。
IV_des.cmdという名前のファイルを見てみましょう。以下のコンポーネントからできています。
File {...}
Electrode {...}
Physics {...}
CurrentPlot {...}
Solve {...}
Plot {...}
File section
まず初めに入力ファイルや出力ファイルを指定する。
入力ファイルは Gridとparameter。
Gridでは sdeで作った構造体を読み込みます。Work Benchでdevice simulationを行おうとしているnodeの左にあるSimple2Dというsdeを実行したノードの番号は @node|Simple2D@で取得できます。
parameterはシミュレーションに使う細かいパラメータを設定しています。通常はsdevice.parというファイルが使われます。
出力ファイルはCurrentとPlot が結果になります。 outputでlogを出力します。
Current はすべてのシミュレーション(下のSolveで指定)の電気的な結果の値が詰まったファイルを出力します。
@plot
@でnode番号 + _des.pltという名前のファイルができます。
Plotはシミュレーション終了時の電気的な変数の情報を構造体の位置情報を込みで出力します。
File {
Grid = "n@node|Simple2D@_msh.tdr"
Current = "@plot@"
Plot = "@tdrdat@"
output = "@log@"
parameter = "@parameter@"
}
Electrode section
ここでは「電極」を指定します。IVなどのシミュレーションをする際にどこをGNDにどこを電位Vにするなどを指定する必要があります。
ただし、構造体をsdeで作った際に電極になる場所を作っておく必要があります。前回の sdegeo:define-contact-set を参照。
Simple2D_des.cmdのなかでストリップ電極(cathode1,2,3)+裏面(anode)の4つの電極を作って、それぞれを 0.0 Vに設定します。
eRecVelocity や hRecVelocityは再結合モビリティー(単位は cm/s)。
そのほかに直列に抵抗を入れたり、電流や電荷の境界条件や初期条件を入れることができる。
Electrode {
!(
for {set i 1} {$i<=@NumStripes@} {incr i} {
puts "\{name = \"cathode${i}\" voltage = 0.0 eRecVelocity=1e7 hRecVelocity=1e7 \}"
}
)!
{name = "anode" voltage = 0.0 eRecVelocity=1e7 hRecVelocity=1e7 }
}
Physics section
物理モデルを指定する。この部分は来週、再来週にまとめて話します。
Physics {
##AreaFactor=1e8
##Fermi
}
Physics (material="Silicon") {
Mobility(
DopingDep (Unibo)
HighFieldsat (GradQuasiFermi)
)
Recombination(
SRH(DopingDep TempDep)
Auger
##hAvalanche(UniBo) eAvalanche(UniBo)
hAvalanche eAvalanche
)
EffectiveIntrinsicDensity (OldSlotboom)
Traps(
(
name="state1" acceptor conc=@<fluence*1.613>@
Level FromConductionBand EnergyMid =0.42
eXsection=2E-15 hXsection=2E-14
##eJfactor=1.0 hJfactor=1.0
)
(
name="state2" acceptor conc=@<fluence*100.0>@
Level FromConductionBand EnergyMid =0.46
eXsection=5E-15 hXsection=5E-14
##eJfactor=1.0 hJfactor=1.0
)
(
name="state3" donor conc=@<fluence*0.9>@
Level FromValenceBand EnergyMid =0.36
eXsection=2.5E-14 hXsection=2.5E-15
##eJfactor=1.0 hJfactor=1.0
)
)
}
CurrentPlot section
基本的に結果のアウトプットは二種類あります。
- CurrentPlot : 拡張子が .plt のファイルで、各電極ごとに、Voltage, Current, Charge, Potencial等の情報が出力されます。svisual や inspectorで開くことができますが、ASCIIのテキストファイルなのでC++やPython、ROOTのプログラムで読み込むこともできます。
- Plot : 拡張子が .tdr のファイルで、構造体の各点での、電場や電流密度、衝突イオン化、粒子速度(モビリティー)などが出力されます。基本的にsvisualでしか開くことができません。
CurrentPlot sectionでは、1. の出力変数の設定を行います。基本的に何も書かなくてもVoltage, Current, Chargeなどの情報は出力されます。追加で出力したい変数を付け加えてください。
以下の例では電子や正孔の寿命、電子や正孔の雪崩増幅率に対して、各シミュレーションのポイントで(例えばIVシミュレーションだったら各電圧点で)Silicon中の最大値を出力します。
CurrentPlot {
eLifeTime(Maximum(material="Silicon"))
hLifeTime(Maximum(material="Silicon"))
eAvalanche(Maximum(material="Silicon"))
hAvalanche(Maximum(material="Silicon"))
}
Math section
デバイスシミュレータは(基本的には部分積分)方程式を各メッシュごとに、矛盾することなくイテレーション(反復)しながら解いていきます。
各 Iterationで適度に小さい誤差で数値が収束する必要があります。Math sectionでは数値解析の様々なオプションを設定します。
全部は説明しませんが、それぞれの項目が何を表しているかをSentaurus Device Usr Guide マニュアルのp.1432 Table 205を参照してください。
Math {
##CDensityMin=1e-100
Extrapolate
Derivatives
Avalderivatives
Digits=5
Notdamped=1000
Iterations=20
RelerrControl
ErrRef (electron)=1e6
ErrRef (hole)=1e6
RhsMin =1e-15
eMobilityAveraging=ElementEdge
hMobilityAveraging=ElementEdge
ParallelToInterfaceInBoundaryLayer (-ExternalBoundary)
##Method=Blocked
##SubMethod=ILS (set=1)
##Method=ILS (set=1)
Method=Pardiso
ILSrc = "
set(1) {
iterative( gmres(100), tolrel=1e-8, tolunprec=1e-4, tolabs=0, maxit=200 );
preconditioning( ilut(0.0001,-1), left );
ordering( symmetric=nd, nonsymmetric=mpsilst );
options( compact=yes, verbose=0, refineresidual=0 );
};
"
number_of_threads=4
}
Solve Section
デバイスシミュレーションでなんの解を求めてもらうかを指定する場所です。ここの部分が最も大事です。
初期条件、各シミュレーションステップでのコンディションを定義して解を見つけます。
Solve {
Poisson
plugin { Poisson Electron Hole }
Coupled { Poisson Electron Hole }
ここまでが初期条件の定義です。電極を定義した際の初期設定を使って、実際に電位等の設定をします。
Poissonは、非線形のポアソン方程式のみを使って解を計算するということを指定しています。特殊な設定を必要とする場合はここに書きます。
Coupled{} では、Electron (電流の連続方程式) がPoisson (ポアソン方程式) と完全にと結合していると考えるという意味です。静電容量で結合している場合はACCoupled{}を使います。
解は、前のステップからの推測値を初期条件にして計算します。
NewCurrent ="IV_"
保存する
CurrentPlotに接頭語"IV_"を付ける。
以下のQuasistationaryで定義されている部分で、初期状態から終状態までのシミュレーションステップを定義します。
文字通り、各ステップで、準定常(Quasi-stationary)状態に収束するまで計算します。
文法は Quasistationary (ステップとゴールの条件){考慮する方程式}のようなイメージです。
ステップの定義は
MaxStep,
MinStep,
InitialStepはそれぞれ最大のステップ、最小のステップ、最初のステップです。初期値からゴール値までをt=1とした時の割合で定義します。
つまり、Step 1e-5 とした場合は 1e5 回のステップを踏む必要があるのでとてつもない時間がかかります。
基本的にInitialStepでスキャンを始めて、収束しないようならステップサイズを小さくするという方針でステップを決めます。
ただし、収束した場合は、Increment分だけ大きなステップを使うことができるという意味です。
基本的にシミュレーション時間が長すぎる場合は、このステップが細かすぎる、もしくは、各点の収束がうまくいっていないために、小さなステップでやり直すという作業を繰り返しているからです。
より安定した電場ができる構造体に直すか、必要ない場合はステップを粗くしてみるとよいです。
Quasistationary ( DoZero
MaxStep =1 MinStep =1e-8 InitialStep =1e-5
Increment=1.6 Decrement=4.0
Goal { Name="anode" Voltage=@Vop@}
BreakCriteria {Current (Contact = "anode" minval = -1e-7 )}
)
{ Coupled { Poisson Electron Hole } }
system("")
}
Plot Section
ここでは、Plotファイルに出力する変数のリストを定義します。
Plot {
Current/Vector
eCurrent/Vector
hCurrent/Vector
eDensity
hDensity
ElectricField /Vector
Potential
CurrentPotential
DopingConcentration
eMobility
hMobility
DonorConcentration
AcceptorConcentration
AvalancheGeneration
eAvalanche hAvalanche
eLifeTime hLifeTime
}
--
Atlasj Silicon - 2020-05-21