Difference: Tutorial5thTCADDay3 (4 vs. 5)

Revision 52020-05-22 - AtlasjSilicon

Line: 1 to 1
 
META TOPICPARENT name="Tutorial4thTCADWorkshop"

3日目(デバイスシミュレーション)

Line: 89 to 89
  ただし、構造体をsdeで作った際に電極になる場所を作っておく必要があります。前回の sdegeo:define-contact-set を参照。
Changed:
<
<
Simple2D_des.cmdのなかでストリップ電極数(cathode1,2,3)+裏面(anode)の4つの電極を作って、それぞれを 0.0 Vに設定します。
>
>
Simple2D_des.cmdのなかでストリップ電極(cathode1,2,3)+裏面(anode)の4つの電極を作って、それぞれを 0.0 Vに設定します。
  eRecVelocity や hRecVelocityは再結合モビリティー(単位は cm/s)。
Line: 154 to 154
 

CurrentPlot section

Changed:
<
<

CurrentPlot {
eLifeTime(Maximum(material="Silicon"))
hLifeTime(Maximum(material="Silicon"))
eAvalanche(Maximum(material="Silicon"))
hAvalanche(Maximum(material="Silicon"))
}
>
>
基本的に結果のアウトプットは二種類あります。
  1. CurrentPlot : 拡張子が .plt のファイルで、各電極ごとに、Voltage, Current, Charge, Potencial等の情報が出力されます。svisual や inspectorで開くことができますが、ASCIIのテキストファイルなのでC++やPython、ROOTのプログラムで読み込むこともできます。
  2. 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

Changed:
<
<

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

}
>
>
デバイスシミュレータは(基本的には部分積分)方程式を各メッシュごとに、矛盾することなくイテレーション(反復)しながら解いていきます。

各 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

Changed:
<
<


Solve {

Poisson
plugin { Poisson Electron Hole }
Coupled { Poisson Electron Hole }

NewCurrent ="IV_"

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 } }

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("")

}
>
>
デバイスシミュレーションでなんの解を求めてもらうかを指定する場所です。ここの部分が最も大事です。
Solve {

   Poisson
   plugin { Poisson Electron Hole }
 Coupled { Poisson Electron Hole }

 NewCurrent ="IV_"    
                
   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 } } 

   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 {

Current/Vector
eCurrent/Vector
hCurrent/Vector
eDensity
hDensity
ElectricField /Vector
Potential
CurrentPotential
DopingConcentration
eMobility
hMobility
DonorConcentration
AcceptorConcentration
AvalancheGeneration

eAvalanche hAvalanche
eLifeTime hLifeTime


}







 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback