Difference: Tutorial5thTCADDay2 (6 vs. 7)

Revision 72021-05-23 - KojiNakamura

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

2日目(様々なサンプルプログラムとsdeの構築)

Line: 108 to 104
 
cd ~/work/Silicon/TCAD/Sentaurus/tutorials
mkdir tar_src
cd tar_src
Changed:
<
<
cp /home/kojin/work/Silicon/TCAD/Synopsys/tutorials/Simple2D.tar.gz .
>
>
cp /home/kojin/work/Silicon/TCAD/Synopsys/tutorials/Simple2D_Q2019.tar.gz .
 swb&

ここでワークベンチを立ち上げるとSimple2D.tar.gzと言うファイルを直接読み込むことが出来ます。

Line: 143 to 139
  (何となくわかるかと思いますが、わからないところは聞いてください。)

3次元の構造

Changed:
<
<
cd ~/work/Silicon/TCAD/Sentaurus/tutorials/tar_src
cp /home/kojin/work/Silicon/TCAD/Synopsys/tutorials/Simple3D.tar.gz .

swb&
>
>
cd ~/work/Silicon/TCAD/Sentaurus/tutorials/tar_src
cp /home/kojin/work/Silicon/TCAD/Synopsys/tutorials/Simple3D_Q2019.tar.gz .

swb&
  上でやったように、Simple3D のプロジェクトを保存してみてください。
Line: 169 to 163
  何を作っているのか見当は付きますか? NX x NY のピクセルマトリックスを作っていてそれぞれのピクセルにNplusのサイズの正方形をlistにしてそこから generate-maskでマスクを作っています。。
Changed:
<
<

(sdegeo:create-cuboid (position 0 0 0) (position LX LY TSUB) "Silicon" "Substrate")
(sdepe:pattern "mask" "MaskNplus" "polarity" "dark" "material" "Resist" "thickness" 1 "type" "aniso" "algorithm" "sweep" )

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat0_Res_bnd.tdr")
>
>
Q_2019のバージョンから、X軸が深さ方向に定義されるようになったので、X:深さ(TSUB) Y:幅(LX) Z:奥行(LY) の箱を作って マスクはX軸に垂直な面に生成されます。

(sdegeo:create-cuboid (position 0 0 0) (position TSUB LX LY) "Silicon" "Substrate")
(sdepe:pattern "mask" "MaskNplus" "polarity" "dark" "material" "Resist" "thickness" 1 "type" "aniso" "algorithm" "sweep" )

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat0_Res_bnd.tdr")
  ここで実際にものを置いていきます。最初のsdegeo:create-cuboidは直方体を作っています。
Line: 191 to 186
  n1_pat0_Res_dvs.tdr というファイルがある出来ていると思うのでSVidualで確認してみる。
Changed:
<
<
n1_pat0.png
>
>
3d1.png
 
(sdedr:define-gaussian-profile "Nplus" "PhosphorusActiveConcentration" "PeakPos" 0  "PeakVal" Dop_Nplus "ValueAtDepth" Dop_PSub "Depth" Nplus_Depth "Gauss"  "Factor" 0.8)

(sdepe:implant "Nplus" "flat")

(entity:delete (find-material-id "Resist"))

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat1_rmRes_bnd.tdr")

ここで先ほど作ったレジストの形にimplantを作成しています。

Line: 207 to 201
  最後の(sde:build-mesh "snmesh" " " "n@node@_msh") saveの直前に書いて残りをコメントアウトすれば見れるかもしれません。
Changed:
<
<
n1_pat1.png n1_pat2_msh.png
>
>
3d2-1.png 3d2-2.png
 
(define hh (entity:copy (find-mask "MaskNplus")))
(sde:attrib-remove hh "maskname")
(generic:add hh "maskname" "MaskContAl")
(sde:offset-mask "MaskContAl" -10)


(sdepe:pattern "mask" "MaskContAl" "polarity" "light" "material" "Aluminum" "thickness" 0.5 "type" "aniso" "algorithm" "sweep" )

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat2_DCcont_bnd.tdr")

ここではAlとN+のコンタクトを作っています。本当はもう一度マスクを作ればよいのですが、面倒なのでMaskNplusを10um小さくした新しいマスク MaskContAl を製作して同様にpatternを作っています。

ここまでの様子はn1_pat2_DCcont_bnd.tdrで見られます。

Changed:
<
<
n1_pat2.png
>
>
3d3.png
 
(sdepe:fill-device "material" "Oxide")

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat3_OxFill_bnd.tdr")

コンタクト以外の部分は酸化膜で覆っておきましょう。

n1_pat3_OxFill_bnd.tdrで確認できます。(見やすいようにZ軸を10倍スケールしてます。)

Changed:
<
<
n1_pat3.png
>
>
3d4.png
 
(define gg (entity:copy (find-mask "MaskNplus")))
(sde:attrib-remove gg "maskname")
(generic:add gg "maskname" "MaskTopAl")
(sde:offset-mask "MaskTopAl" 5.0)
(sdepe:pattern "mask" "MaskTopAl" "polarity" "light" "material" "Aluminum" "thickness" 0.5 "type" "aniso" "algorithm" "sweep" )

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat4_Al_bnd.tdr")

トップのアルミもマスクの再利用で作ります。N+より5umほど大きなアルミを作ってます。

結果はn1_pat4_Al_bnd.tdr で見れます。

Changed:
<
<
n1_pat4.png
>
>
3d5.png
 
(sdepe:fill-device "material" "Oxide")

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat5_OxFill_bnd.tdr")

こちらも酸化膜をFillしておきます。

Changed:
<
<
n1_pat5.png
>
>
3d6.png
 
(bool:unite (find-material-id "Oxide"))
(bool:unite (find-material-id "Aluminum"))
(sde:separate-lumps)
(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat6_Unite_bnd.tdr")

上の図で二段階にAlや酸化膜をpatterningしたので二つの別のパーツになってしまっています。

これを一つにするのが bool:unite というコマンドです。結果はこんな感じです。

Changed:
<
<
n1_pat6.png
>
>
3d7.png
  ここまでで構造体はできました。

ここからはシミュレーションに必要なコンタクトとn+以外のドープを行っていきます。

まずは表面のn+電極です。

Changed:
<
<
;;  making contact for Electrode
(
do ((i 0 (+ i 1))) ((>= i NY))
(
do ((j 0 (+ j 1))) ((>= j NX))
(sde:add-material (find-body-id
(position (+ (* j Lpixel_pitchX) (* 0.5 Lpixel_pitchX))
(+ (* i Lpixel_pitchY) (* 0.5 Lpixel_pitchY))
(+ TSUB 0.1)))
"Aluminum" (string-append "RAl" (number->string j) (number->string i)))
(sdegeo:define-contact-set (string-append "NplusElec" (number->string j)
(number->string i)) 4 (color:rgb 1 0 0 ) "##")
(sdegeo:set-current-contact-set (string-append "NplusElec" (number->string j) (number->string i)) )
(sdegeo:set-contact-boundary-faces (find-region-id (string-append "RAl" (number->string j) (number->string i)))
)
)
)

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat7_ContNp_bnd.tdr")
>
>
;;  making contact for Electrode
(
do ((i 0 (+ i 1))) ((>= i NY))
(
do ((j 0 (+ j 1))) ((>= j NX))
(sde:add-material (find-body-id
(position (- 0 0.7)
(+ (* j Lpixel_pitchX) (* 0.5 Lpixel_pitchX))
(+ (* i Lpixel_pitchY) (* 0.5 Lpixel_pitchY))
))
"Aluminum" (string-append "RAl" (number->string j) (number->string i)))
(sdegeo:define-contact-set (string-append "NplusElec" (number->string j)
(number->string i)) 4 (color:rgb 1 0 0 ) "##")
(sdegeo:set-current-contact-set (string-append "NplusElec" (number->string j) (number->string i)) )
(sdegeo:set-contact-boundary-faces (find-region-id (string-append "RAl" (number->string j) (number->string i)))
)
)
)

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat7_ContNp_bnd.tdr")
  見ると大体何をやっているかわかると思います。電極になる部分の一点を指定してfind-body-idをしてそれをcontact-setしています。

SVidualではマジェンダに表示されるので確認してみてください。

Changed:
<
<
n1_pat7.png

;; doping for backside
(sdedr:define-refeval-window "RefEval_PBack" "Rectangle" (position 0 0 0) (position LX LY 0))
(sdedr:define-gaussian-profile "DopPBack" "BoronActiveConcentration" "PeakPos" 0 "PeakVal" Dop_PPlus "ValueAtDepth" Dop_PSub "Depth" 5 "Gauss" "Factor" 0.8)
(sdedr:define-analytical-profile-placement "Place_PBack" "DopPBack" "RefEval_PBack" "Both" "NoReplace" "Eval")
>
>
3d8.png
;; doping for backside
(sdedr:define-refeval-window "RefEval_PBack" "Rectangle" (position TSUB 0 0) (position TSUB LX LY))
(sdedr:define-gaussian-profile "DopPBack" "BoronActiveConcentration" "PeakPos" 0 "PeakVal" Dop_PPlus "ValueAtDepth" Dop_PSub "Depth" 5 "Gauss" "Factor" 0.8)
(sdedr:define-analytical-profile-placement "Place_PBack" "DopPBack" "RefEval_PBack" "Both" "NoReplace" "Eval")
  ここでは裏面にp+をドープしています。これもガウス分布でドープしています。
Changed:
<
<
;; making contact for backside 
(sdegeo:define-contact-set "PBack" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:set-current-contact-set "PBack")
(sdegeo:set-contact-faces (find-face-id (position 0.1 0.1 0)))

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat8_ContBack_bnd.tdr")
>
>
;; making contact for backside 
(sdegeo:define-contact-set "PBack" 4 (color:rgb 1 0 0 ) "##")
(sdegeo:set-current-contact-set "PBack")
(sdegeo:set-contact-faces (find-face-id (position TSUB 0.1 0.1)))

(sdeio:save-tdr-bnd (get-body-list) "n@node@_pat8_ContBack_bnd.tdr")
  ドープした裏面をバイアスをかけるための電極に設定しています。

下側に電極ができたのを確認してみてください。

Changed:
<
<
n1_pat8.png
>
>
3d9.png
 
;;(entity:delete (find-material-id "Aluminum"))

シミュレーション自体にはAlは必要ないので消してしまってもよいのですが、あってもよいのでここはコメントアウトしています。

Changed:
<
<
;; doping for substrate
(sdedr:define-constant-profile "ConstantProfileDefinition_1" "BoronActiveConcentration" Dop_PSub)
(sdedr:define-constant-profile-material "ConstantProfilePlacement_1" "ConstantProfileDefinition_1" "Silicon")
;; mesh refinement for
(sdedr:define-refinement-size "RefinementDefinition_1" (* 0.1 LX) (* 0.1 LY) (/ TSUB 20.0) 0.5 0.5 0.5 )
(sdedr:define-refinement-placement "RefinementPlacement_1" "RefinementDefinition_1" (list "material" "Silicon" ) )
(sdedr:define-refinement-function "RefinementDefinition_1" "DopingConcentration" "MaxTransDiff" 1)
>
>
;; doping for substrate
(sdedr:define-constant-profile "ConstantProfileDefinition_1" "BoronActiveConcentration" Dop_PSub)
(sdedr:define-constant-profile-material "ConstantProfilePlacement_1" "ConstantProfileDefinition_1" "Silicon")
;; mesh refinement for
(sdedr:define-refinement-size "RefinementDefinition_1" (/ TSUB 20.0) (* 0.1 LX) (* 0.1 LY) 0.5 0.5 0.5 )
(sdedr:define-refinement-placement "RefinementPlacement_1" "RefinementDefinition_1" (list "material" "Silicon" ) )
(sdedr:define-refinement-function "RefinementDefinition_1" "DopingConcentration" "MaxTransDiff" 1)
  シリコン層にホウ素をドープしてその後メッシュを切っています。この切り方はシミュレーションの早さにもつながるので最適化が必要です。
Changed:
<
<
;(sdegeo:translate-selected (get-body-list) (transform:translation (gvector (- 0 (* 0.5 LX)) (- 0 (* 0.5 LY)) 0)) #f 0)
;(sdegeo:translate-selected (get-drs-list) (transform:translation (gvector (- 0 (* 0.5 LX)) (- 0 (* 0.5 LY)) 0)) #f 0)

(sde:build-mesh "snmesh" " " "n@node@_msh")
>
>
;(sdegeo:translate-selected (get-body-list) (transform:translation (gvector 0 (- 0 (* 0.5 LX)) (- 0 (* 0.5 LY)))) #f 0)
;(sdegeo:translate-selected (get-drs-list) (transform:translation (gvector 0 (- 0 (* 0.5 LX)) (- 0 (* 0.5 LY)))) #f 0)

(sde:build-mesh "snmesh" " " "n@node@_msh")
  translate-selectedは、軸をしふとさせるコマンドです。真ん中のピクセルの中心を(0,0)にしたいときはこれをやる必要があります。
Line: 289 to 272
  以上で完成です。最終的にこんなものが出来上がります。 n1_msh.tdrというファイルです。
Changed:
<
<
n1_msh.png
>
>
3d10.png
 

GDSファイルの読み込み

トランジスタとメタル構造

GDSファイルを読み込むことは難しくはないが、GDSの情報はあくまでも二次元のマスクなので(上の例で散々作ったMask)これを発展させてちゃんとした構造にする必要がある。

Changed:
<
<

cd ~/work/Silicon/TCAD/Sentaurus/tutorials/tar_src
cp ~kojin/work/Silicon/TCAD/Synopsys/tutorials/LOAD_GDS.tar.gz .
swb&
>
>
ここから先、Exampleが古くて新しいTCADのバージョンだとうまくいかないので、以下の環境設定をしてください。


source /home/software/scripts/common.sh
source /home/software/scripts/vdec-license.sh
source /home/software/scripts/synopsys2016sp2.sh
export STDB=~/work/Silicon/TCAD

cd ~/work/Silicon/TCAD/Sentaurus/tutorials/tar_src
cp ~kojin/work/Silicon/TCAD/Synopsys/tutorials/LOAD_GDS.tar.gz .
swb&
  前の例と同様にLGAD_GDSというプロジェクトを作って実行してみてください。
Line: 322 to 305
  load_gds.png
Changed:
<
<
ここまで終わったら演習問題 Tutorial4thTCADDay2Question をやってみてください。
>
>
ここまで終わったら演習問題 Tutorial5thTCADDay2Question をやってみてください。
 

(参考) HPK 6th mask の構造

Line: 358 to 340
 
META FILEATTACHMENT attachment="manual.png" attr="" comment="" date="1589640018" name="manual.png" path="manual.png" size="186671" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="pdfmanual.png" attr="" comment="" date="1621668952" name="pdfmanual.png" path="pdfmanual.png" size="441934" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="1173.png" attr="" comment="" date="1621671878" name="1173.png" path="1173.png" size="24941" user="KojiNakamura" version="1"
Added:
>
>
META FILEATTACHMENT attachment="3d1.png" attr="" comment="" date="1621772134" name="3d1.png" path="3d1.png" size="102720" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d2-1.png" attr="" comment="" date="1621772176" name="3d2-1.png" path="3d2-1.png" size="84072" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d2-2.png" attr="" comment="" date="1621772192" name="3d2-2.png" path="3d2-2.png" size="106043" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d3.png" attr="" comment="" date="1621772208" name="3d3.png" path="3d3.png" size="83668" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d4.png" attr="" comment="" date="1621772231" name="3d4.png" path="3d4.png" size="85145" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d5.png" attr="" comment="" date="1621772249" name="3d5.png" path="3d5.png" size="85717" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d6.png" attr="" comment="" date="1621772264" name="3d6.png" path="3d6.png" size="87303" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d7.png" attr="" comment="" date="1621772279" name="3d7.png" path="3d7.png" size="87157" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d8.png" attr="" comment="" date="1621772306" name="3d8.png" path="3d8.png" size="92129" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d9.png" attr="" comment="" date="1621772324" name="3d9.png" path="3d9.png" size="119004" user="KojiNakamura" version="1"
META FILEATTACHMENT attachment="3d10.png" attr="" comment="" date="1621772339" name="3d10.png" path="3d10.png" size="115859" user="KojiNakamura" version="1"
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback