Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
2日目(様々なサンプルプログラムとsdeの構築) | ||||||||
Line: 315 to 293 | ||||||||
![]() | ||||||||
Changed: | ||||||||
< < | HPK 6th mask の構造 | |||||||
> > | ここまで終わったら演習問題 Tutorial4thTCADDay2Question をやってみてください。 | |||||||
Changed: | ||||||||
< < | 以上のことを組み合わせるとHPKのセンサーもかなりちゃんと再現できます。 | |||||||
> > | (参考) HPK 6th mask の構造 | |||||||
Added: | ||||||||
> > | 以上のことを組み合わせるとHPKのセンサーもかなりちゃんと再現できます。 | |||||||
同じように走らせるとstructureができる。 | ||||||||
Changed: | ||||||||
< < | かなり時間がかかるので実際にこれを使うには構造を簡易化する必要がある。 | |||||||
> > | 構造を作るのにも、電場シミュレーションにもかなり時間がかかるので実際にこれを使うには構造を簡易化する必要がある。 | |||||||
![]() |
Line: 1 to 1 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
2日目(様々なサンプルプログラムとsdeの構築)はじめにちょっとした小技など | |||||||||||
Added: | |||||||||||
> > | マニュアルをみるSentaurus のマニュアルはインストールされたdirectoryの下にあります。 /home/software/synopsys/sentaurus/M_2016.12-SP2/tcad/M-2016.12-SP2/manuals/PDFManual/evince /home/software/synopsys/sentaurus/M_2016.12-SP2/tcad/M-2016.12-SP2/manuals/PDFManual/front.pdf WorkbenchのマニュアルやSentaurus Structure Editor やSentaurus Device をよく使います。 クリックすると詳しいマニュアルが出てくるので辞書代わりに使ってください。 ![]() | ||||||||||
プロジェクトのCleanupたとえば、最初のexampleで二つのノードを実行した後 | |||||||||||
Line: 85 to 98 | |||||||||||
既に作られたプロジェクトは、directoryをコピーするか、もしくはtar.gzでもらうとそのままワークベンチで開くことが出来ます。 | |||||||||||
Changed: | |||||||||||
< < | cd ~/work/Silicon/TCAD/Synopsys/tutorial | ||||||||||
> > | cd ~/work/Silicon/TCAD/Sentaurus/tutorials | ||||||||||
mkdir tar_src cd tar_src | |||||||||||
Changed: | |||||||||||
< < | cp ~kojin/work/Silicon/TCAD/Synopsys/tutorials/1stTCADWorkshop/Simple3D.tar.gz . | ||||||||||
> > | cp /home/kojin/work/Silicon/TCAD/Synopsys/tutorials/Simple2D.tar.gz . | ||||||||||
swb& | |||||||||||
Changed: | |||||||||||
< < | ここでワークベンチを立ち上げるとSimple3D.tar.gzと言うファイルを直接読み込むことが出来ます。 | ||||||||||
> > | ここでワークベンチを立ち上げるとSimple2D.tar.gzと言うファイルを直接読み込むことが出来ます。 | ||||||||||
Changed: | |||||||||||
< < | 読み込んだ場所のSimple3D.tar.gzをダブルクリックします。 | ||||||||||
> > | 読み込んだ場所のSimple2D.tar.gzをダブルクリックします。 | ||||||||||
Changed: | |||||||||||
< < | ![]() | ||||||||||
> > | ![]() | ||||||||||
どうやって開くか聞かれるのでSave Asで好きなところに保存します。 | |||||||||||
Changed: | |||||||||||
< < | ![]() | ||||||||||
> > | ![]() ![]() ![]() 半導体構造の構築 (sde)2次元の構造先ほど作ったSimple2Dの例で構造の作り方を見てみましょう。以下のファイルを開いてください。 ~/work/Silicon/TCAD/Sentaurus/tutorials/Simple2D/Simple2D_dvs.cmd 中身を見て何をやっているのかを理解してみましょう。 (何となくわかるかと思いますが、わからないところは聞いてください。)3次元の構造cd ~/work/Silicon/TCAD/Sentaurus/tutorials/tar_src上でやったように、Simple3D のプロジェクトを保存してみてください。 とりあえず node 1 を走らせて見てください。 svidual を使って n1_msh.tdrを開いてできた構造を確認してみてください。 Pixel3D_dvs.cmdの解説まずは長さや厚み等の定義(sde:clear)3Dのデバイスを製作するにはいろんな方法があります。ここではデバイスエミュレーションという方法を紹介します。gdsファイルを読み込んだりいろんなことができるからです。 プロセスシミュレーションほど細かい指定はできませんが、deposit やetchingが可能です。 まずは、マスクを作っていきます。 基本的には list と呼ばれる数字の配列で (x0 y0 x1 y1 x2 y2 x3 y3) のように点(x,y)を作り直線で結んだ形になります。 (define nplist (list)) (sdepe:generate-mask "MaskNplus" nplist )何を作っているのか見当は付きますか? NX x NY のピクセルマトリックスを作っていてそれぞれのピクセルにNplusのサイズの正方形をlistにしてそこから generate-maskでマスクを作っています。。 ここで実際にものを置いていきます。最初のsdegeo:create-cuboidは直方体を作っています。 そこに先ほど作ったMaskNplusというのをpatterningしています。N+のドープをするためにドープしたくない部分をレジストで覆います。 sdepe:patternというのは "mask" : マスクを指定 "polarity" : dark or lightを指定します。半導体プロセスと一緒でlightのマスクはマスク部分が透明、darkはマスク以外の部分が透明のマスクです。 "material" : patterningをするマテリアルです。今回はレジスト "type" : iso or anisoの選択です。したが平らなのであまり関係ないですが、下図のような違いがあります。 "algorithm" : 表面のoffsettingのアルゴリズム。 anisoの場合は sweepのみ。 ![]() ![]() (sdedr:define-gaussian-profile "Nplus" "PhosphorusActiveConcentration" "PeakPos" 0 "PeakVal" Dop_Nplus "ValueAtDepth" Dop_PSub "Depth" Nplus_Depth "Gauss" "Factor" 0.8)ここで先ほど作ったレジストの形にimplantを作成しています。 sdedr:define-gausian-profile でガウス分布に従うリンのドープを設定しています。 引数は大体想像がつくと思いますが、FunctionとFactorは側面の形状を決めています。 implantを作った後はresistを取っ払ってしまっています。ここまでのデバイスを n1_pat1_rmRes_bnd.tdrに保存しています。 見てみるとresistが消えています。ドープをしましたがこれはメッシュを切るまでわかりません... 最後の(sde:build-mesh "snmesh" " " "n@node@_msh") saveの直前に書いて残りをコメントアウトすれば見れるかもしれません。 ![]() ![]() (define hh (entity:copy (find-mask "MaskNplus")))ここではAlとN+のコンタクトを作っています。本当はもう一度マスクを作ればよいのですが、面倒なのでMaskNplusを10um小さくした新しいマスク MaskContAl を製作して同様にpatternを作っています。 ここまでの様子はn1_pat2_DCcont_bnd.tdrで見られます。 ![]() (sdepe:fill-device "material" "Oxide")コンタクト以外の部分は酸化膜で覆っておきましょう。 n1_pat3_OxFill_bnd.tdrで確認できます。(見やすいようにZ軸を10倍スケールしてます。) ![]() (define gg (entity:copy (find-mask "MaskNplus")))トップのアルミもマスクの再利用で作ります。N+より5umほど大きなアルミを作ってます。 結果はn1_pat4_Al_bnd.tdr で見れます。 ![]() (sdepe:fill-device "material" "Oxide")こちらも酸化膜をFillしておきます。 ![]() (bool:unite (find-material-id "Oxide"))上の図で二段階にAlや酸化膜をpatterningしたので二つの別のパーツになってしまっています。 これを一つにするのが bool:unite というコマンドです。結果はこんな感じです。 ![]() ;; making contact for Electrode見ると大体何をやっているかわかると思います。電極になる部分の一点を指定してfind-body-idをしてそれをcontact-setしています。 SVidualではマジェンダに表示されるので確認してみてください。 ![]() ;; doping for backsideここでは裏面にp+をドープしています。これもガウス分布でドープしています。 ;; making contact for backsideドープした裏面をバイアスをかけるための電極に設定しています。 下側に電極ができたのを確認してみてください。 ![]() ;;(entity:delete (find-material-id "Aluminum"))シミュレーション自体にはAlは必要ないので消してしまってもよいのですが、あってもよいのでここはコメントアウトしています。 ;; doping for substrateシリコン層にホウ素をドープしてその後メッシュを切っています。この切り方はシミュレーションの早さにもつながるので最適化が必要です。 ;(sdegeo:translate-selected (get-body-list) (transform:translation (gvector (- 0 (* 0.5 LX)) (- 0 (* 0.5 LY)) 0)) #f 0)translate-selectedは、軸をしふとさせるコマンドです。真ん中のピクセルの中心を(0,0)にしたいときはこれをやる必要があります。 (ただし、Alをremoveしていないと電極がシフトしない問題があります。ちょっとよくわかっていません。) 以上で完成です。最終的にこんなものが出来上がります。 n1_msh.tdrというファイルです。 ![]() GDSファイルの読み込みトランジスタとメタル構造GDSファイルを読み込むことは難しくはないが、GDSの情報はあくまでも二次元のマスクなので(上の例で散々作ったMask)これを発展させてちゃんとした構造にする必要がある。前の例と同様にLGAD_GDSというプロジェクトを作って実行してみてください。 SDEとSPROCESSの例が両方入っていますが、SDEの方を実行してみてください。 GDSファイルを読んでいる場所はここです。 (define GDSFILE "TCAD_PIXEL_v3.gds")GDSファイルにはマスクの数だけLAYERが入っています。その番号と名前をアサインしていって、最終的にそのマスクの点情報を.macファイルに書き出しているだけです。 GDSファイルを開ける人は見るとこんな感じになっています。 ![]() (define TSUB 7.0)もう何をやっているのか大体わかってきたかと思います。 最終的にはこんなものが出来上がってきます。 ![]() HPK 6th mask の構造 | ||||||||||
Changed: | |||||||||||
< < | 例えば以下の様にするとtutorial以下に直接 Simple3D というプロジェクトのdirectory が出来ます。 | ||||||||||
> > | 以上のことを組み合わせるとHPKのセンサーもかなりちゃんと再現できます。 | ||||||||||
Changed: | |||||||||||
< < | ![]() | ||||||||||
> > |
| ||||||||||
Changed: | |||||||||||
< < | OKをおすとSimple3DというDirectoryが開かれた状態になります。 | ||||||||||
> > | 同じように走らせるとstructureができる。 | ||||||||||
Changed: | |||||||||||
< < | ![]() | ||||||||||
> > | かなり時間がかかるので実際にこれを使うには構造を簡易化する必要がある。 | ||||||||||
Changed: | |||||||||||
< < | これで準備完了です。 | ||||||||||
> > | ![]() | ||||||||||
-- ![]() | |||||||||||
Changed: | |||||||||||
< < |
| ||||||||||
> > |
| ||||||||||
| |||||||||||
Line: 122 to 338 | |||||||||||
| |||||||||||
Added: | |||||||||||
> > |
|
Line: 1 to 1 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Added: | |||||||||||||||||
> > |
2日目(様々なサンプルプログラムとsdeの構築)はじめにちょっとした小技などプロジェクトのCleanupたとえば、最初のexampleで二つのノードを実行した後![]() [atlaspc7] ~/work/Silicon/TCAD/Sentaurus/tutorials/myexample % ls IV_-10_150_30_circuit_des.sav gcomments.dat n1_dvs.err n4_000000_des.tdr n4_des.log sde_dvs.cmd IV_-10_150_30_des.sav gexec.cmd n1_dvs.log n4_000001_des.tdr n4_des.out sde_dvs.prf IV_-20_150_30_circuit_des.sav gtree.dat n1_dvs.out n4_000002_des.tdr n4_des.plt sdevice_des.cmd IV_-20_150_30_des.sav gtree.dat.backup n1_dvs.sta n4_000003_des.tdr n4_des.sta sdevice_des.prf SVisualTcl.log gvars.dat n1_msh.cmd n4_000004_des.tdr n4_des.tdr usrdefvars.dat SVisualTcl.log.BAK n1_bnd.tdr n1_msh.log n4_000005_des.tdr pp1_dvs.cmd cmlog.txt n1_dvs.cmd@ n1_msh.tdr n4_des.err pp4_des.cmdこんな感じ。ほとんどは中間ファイルなのでgitにアップロードしたり、人に渡すときはいらない。 NodeのCleanupクリーンナップしたいノードで右クリック --> Cleanup Node Output そうすると中間ファイルが消えてノードが白くなる。プロジェクトのCleanupメニューの Project->Operation->Clean up そうすると中間ファイルが全部消えます。 プロジェクトを人に渡すときはこれをやってからtar.gzで圧縮して送ると親切。 ただしこれだけだと、*.savや*.logファイルは消えないので、rm -f *.sav *.log *.BAKをするともっと親切。 ワークベンチを使わない方法(Batch Tools)そもそも sde や sdevice, svisualなどはコマンドラインで使えます。preprocessが終わっていればそのままnXX_dvs.cmdなどが実行できます。cd ~/work/Silicon/TCAD/Sentaurus/tutorials/myexampleそのほか、 spp : プロジェクトのpre-processを走らせるコマンド gsub : jobをスケジューラにサブミットするコマンド gjob : 一つのjobつまり一つのnodeを走らせる方法 gcleanup : projectをクリーンアップする方法(クリーンアップに関しては次の章を参照) gtclsh : tclスクリプトを実行するコマンド などなど 例えば、 cd ~/work/Silicon/TCAD/Sentaurus/tutorials/myexample spp . gjob -verbose -job 1 . gjob -verbose -job 4 .とすることでmyexampleの node 1とnode 4が実行される。 構造を見たいときは、 svisual n1_msh.tdr色々見やすくしたりドープ量のプロットを見たりして遊んでみてください。 一度行った動作は、tcl (スクリプト言語)として logに残ります。 右下のSaveボタンで保存しておくと次回はそのtclスクリプトを実行するだけで同じプロットが作れます。 例えば、以下のファイルをコピーして実行してみてください。 cp /home/kojin/work/Silicon/TCAD/Sentaurus/tutorials/myexample/drawDoping.tcl . svisual drawDoping.tcl以下の図が得られるはずです。 ![]() 圧縮済みのプロジェクトを読み込む方法既に作られたプロジェクトは、directoryをコピーするか、もしくはtar.gzでもらうとそのままワークベンチで開くことが出来ます。cd ~/work/Silicon/TCAD/Synopsys/tutorial mkdir tar_src cd tar_src cp ~kojin/work/Silicon/TCAD/Synopsys/tutorials/1stTCADWorkshop/Simple3D.tar.gz . swb&ここでワークベンチを立ち上げるとSimple3D.tar.gzと言うファイルを直接読み込むことが出来ます。 読み込んだ場所のSimple3D.tar.gzをダブルクリックします。 ![]() ![]() ![]() ![]() ![]()
|