3日目(デバイスシミュレーション)前回のSimple2Dの例題を走らせてみる。まずは、Simple2Dのプロジェクトを開いてください。 | ||||||||
Added: | ||||||||
> > | ||||||||
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)は右下です。) ![]() ![]() ![]() Simple2D のIVシミュレーションのコマンドまず、デバイスシミュレーションに関しては膨大なオプションが準備されています。マニュアルは全1574ページ!! もちろん今日だけで全部は説明できませんし、おそらく必要ないものがほとんどです。辞書的にマニュアルを使いながら理解してみてください。 IV_des.cmdという名前のファイルを見てみましょう。以下のコンポーネントからできています。 | ||||||||
Deleted: | ||||||||
< < | ||||||||
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![]() | ||||||||
Deleted: | ||||||||
< < | ||||||||
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)。 そのほかに直列に抵抗を入れたり、電流や電荷の境界条件や初期条件を入れることができる。 | ||||||||
Added: | ||||||||
> > | ||||||||
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物理モデルを指定する。この部分は来週、再来週にまとめて話します。 | ||||||||
Added: | ||||||||
> > | ||||||||
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基本的に結果のアウトプットは二種類あります。
| ||||||||
Deleted: | ||||||||
< < | ||||||||
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を参照してください。 | ||||||||
Deleted: | ||||||||
< < | ||||||||
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デバイスシミュレーションでなんの解を求めてもらうかを指定する場所です。ここの部分が最も大事です。 | ||||||||
Added: | ||||||||
> > | 初期条件、各シミュレーションステップでのコンディションを定義して解を見つけます。 | |||||||
Solve { Poisson plugin { Poisson Electron Hole } | ||||||||
Changed: | ||||||||
< < | Coupled { Poisson Electron Hole } | |||||||
> > | Coupled { Poisson Electron Hole } | |||||||
Changed: | ||||||||
< < | NewCurrent ="IV_" | |||||||
> > | ここまでが初期条件の定義です。電極を定義した際の初期設定を使って、実際に電位等の設定をします。 | |||||||
Deleted: | ||||||||
< < | Quasistationary ( DoZero MaxStep =1 MinStep =1e-8 InitialStep =1e-5 Increment=1.6 Decrement=4.0 Goal { Name="anode" Voltage=-120} BreakCriteria {Current (Contact = "anode" minval = -1e-7 )} ) { Coupled { Poisson Electron Hole } } | |||||||
Changed: | ||||||||
< < | Quasistationary ( DoZero | |||||||
> > | Poissonは、非線形のポアソン方程式のみを使って解を計算するということを指定しています。特殊な設定を必要とする場合はここに書きます。 | |||||||
Added: | ||||||||
> > |
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 | ||||||||
Changed: | ||||||||
< < | Plot { Current/Vector eCurrent/Vector hCurrent/Vector eDensity hDensity ElectricField /Vector Potential CurrentPotential DopingConcentration eMobility hMobility DonorConcentration AcceptorConcentration AvalancheGeneration eAvalanche hAvalanche eLifeTime hLifeTime } | |||||||
> > | ここでは、Plotファイルに出力する変数のリストを定義します。 | |||||||
Added: | ||||||||
> > | Plot { Current/Vector eCurrent/Vector hCurrent/Vector eDensity hDensity ElectricField /Vector Potential CurrentPotential DopingConcentration eMobility hMobility DonorConcentration AcceptorConcentration AvalancheGeneration eAvalanche hAvalanche eLifeTime hLifeTime | |||||||
Added: | ||||||||
> > | } | |||||||
-- ![]()
|