; Using DF-ISE coordinate system for structure generation
(sde:set-process-up-direction "+z")
;----------------------------------------------------------------------
; Structure definition
;----------------------------------------------------------------------;
(sdegeo:set-default-boolean "BAB")
(sdegeo:create-polygon (list
(position 2.0 0.0 0)
(position 2.1 3.13 0)
(position 2.7 3.13 0)
(position 2.8 0.0 0)
(position 2.0 0.0 0))
"PolySi" "R.PolyGate")
(sdegeo:fillet-2d (find-vertex-id (position 2.1 3.13 0)) 0.2)
(sdegeo:fillet-2d (find-vertex-id (position 2.7 3.13 0)) 0.2)
(sdegeo:create-polygon (list
(position 1.98 0.00 0)
(position 2.08 3.22 0)
(position 2.72 3.22 0)
(position 2.82 0.00 0)
(position 1.98 0.00 0))
"Oxide" "R.Gox")
(sdegeo:fillet-2d (find-vertex-id (position 2.08 3.22 0)) 0.2)
(sdegeo:fillet-2d (find-vertex-id (position 2.72 3.22 0)) 0.2)
(sdegeo:create-polygon (list
(position 2.00 0.02 0)
(position 1.50 0.02 0)
(position 1.30 0.22 0)
(position 0.00 0.22 0)
(position 0.00 -0.18 0)
(position 1.30 -0.18 0)
(position 1.50 0.00 0)
(position 2.00 0.00 0)
(position 2.00 0.02 0))
"Oxide" "R.LOCOS")
(sdegeo:fillet-2d (find-vertex-id (position 1.3 0.22 0)) 0.15)
(sdegeo:fillet-2d (find-vertex-id (position 1.3 -0.18 0)) 0.15)
(define xmin 0.0)
(define ymin 0.0)
(define xmax 4.8)
(define ymax 70.0)
(sdegeo:create-rectangle
(position 2.8 -0.3 0.0 ) (position 3.1 0.0 0.0 ) "Oxide" "R.Spacer" )
(sdegeo:create-rectangle
(position 0.0 0.0 0.0 ) (position 2.8 -0.3 0.0 ) "PolySi" "R.PolyCont" )
(sdegeo:create-rectangle
(position 0.0 0.0 0.0 ) (position xmax ymax 0.0 ) "Silicon" "R.Si" )
(sdegeo:define-contact-set "Emitter" 4 (color:rgb 1 0 0 ) "##" )
(sdegeo:define-contact-set "Collector" 4 (color:rgb 1 0 0 ) "##" )
(sdegeo:define-contact-set "Gate" 4 (color:rgb 1 0 0 ) "##" )
(sdegeo:define-2d-contact (find-edge-id (position 3.5 0.0 0.0)) "Emitter")
(sdegeo:define-2d-contact (find-edge-id (position 3.5 ymax 0.0)) "Collector")
(sdegeo:define-2d-contact (find-edge-id (position 1.0 -0.3 0.0)) "Gate")
;----------------------------------------------------------------------
; Profiles
;----------------------------------------------------------------------;
; - Substrate
(sdedr:define-constant-profile "Const.Substrate"
"PhosphorusActiveConcentration" 1e+15 )
(sdedr:define-constant-profile-material "PlaceCD.Substrate"
"Const.Substrate" "Silicon" )
(sdedr:define-constant-profile "Const.PolyGate"
"PhosphorusActiveConcentration" 1e+21 )
(sdedr:define-constant-profile-material "PlaceCD.PolyGate"
"Const.PolyGate" "PolySi" )
(sdedr:define-refeval-window "BaseLine.pbody" "Line"
(position 3.0 0.0 0.0)
(position 5.0 0.0 0.0) )
(sdedr:define-gaussian-profile "Impl.pbodyprof"
"BoronActiveConcentration"
"PeakPos" 0.1 "PeakVal" 1e20
"ValueAtDepth" 1e17 "Depth" 2
"Erf" "Length" 0.1)
(sdedr:define-analytical-profile-placement "Impl.pbody"
"Impl.pbodyprof" "BaseLine.pbody" "Positive" "NoReplace" "Eval")
(sdedr:define-refeval-window "BaseLine.nplus" "Line"
(position 3.0 0.0 0.0)
(position 3.7 0.0 0.0) )
(sdedr:define-gaussian-profile "Impl.nplusprof"
"ArsenicActiveConcentration"
"PeakPos" 0.0 "PeakVal" 1e21
"ValueAtDepth" 1e17 "Depth" 0.5
"Erf" "Length" 0.1)
(sdedr:define-analytical-profile-placement "Impl.nplus"
"Impl.nplusprof" "BaseLine.nplus" "Positive" "NoReplace" "Eval")
(sdedr:define-refeval-window "BaseLine.fieldstop" "Line"
(position 0.0 70.0 0.0)
(position 5.0 70.0 0.0) )
(sdedr:define-gaussian-profile "Impl.fieldstopprof"
"ArsenicActiveConcentration"
"PeakPos" 0.0 "PeakVal" 1e19
"ValueAtDepth" 1e15 "Depth" 3.0
"Erf" "Length" 0.1)
(sdedr:define-analytical-profile-placement "Impl.fieldstop"
"Impl.fieldstopprof" "BaseLine.fieldstop" "Negative" "NoReplace" "Eval")
(sdedr:define-refeval-window "BaseLine.collector" "Line"
(position 0.0 70.0 0.0)
(position 5.0 70.0 0.0) )
(sdedr:define-gaussian-profile "Impl.collectorprof"
"BoronActiveConcentration"
"PeakPos" 0.1 "PeakVal" 1e20
"ValueAtDepth" 1e17 "Depth" 0.5
"Erf" "Length" 0.1)
(sdedr:define-analytical-profile-placement "Impl.collector"
"Impl.collectorprof" "BaseLine.collector" "Negative" "NoReplace" "Eval")
;----------------------------------------------------------------------
; Meshing
;----------------------------------------------------------------------;
(define ds 1)
(sdedr:define-refinement-size "global" (/ 2.5 ds) (/ 10.0 ds) (/ 2.5 ds) 0.1 0.1 0.1 )
(sdedr:define-refeval-window "global" "Rectangle" (position -1e5 -1e5 0) (position 1e5 1e5 0.) )
(sdedr:define-refinement-placement "global" "global" (list "window" "global" ) )
(sdedr:define-refinement-size "active_domain" 2.0 5.0 0.5 0.02 0.02 0.05 )
(sdedr:define-refinement-material "active_domain" "active_domain" "Silicon")
(sdedr:define-refinement-function "active_domain" "DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-function "active_domain" "MaxLenInt" "R.Si" "emitter" 0.002 2 "UseRegionNames")
(sdedr:define-refinement-function "active_domain" "MaxLenInt" "R.Si" "thermo_left" 0.025 2 "UseRegionNames")
(sdedr:define-refinement-function "active_domain" "MaxLenInt" "R.Si" "thermo_right" 0.025 2 "UseRegionNames")
(sdedr:define-refeval-window "active" "Rectangle" (position xmin ymin 0.0) (position xmax ymax 0.0) )
(sdedr:define-refinement-size "active" 1.0 5.0 1.0 0.03 0.02 0.5)
(sdedr:define-refinement-placement "active" "active" "active")
(sdedr:define-refinement-function "active" "DopingConcentration" "MaxTransDiff" 1)
;; Trench Bottom
(sdedr:define-refeval-window "RW.TrBot"
"Rectangle"
(position 1.0 1.8 0.0 )
(position 3.0 4.0 0.0 ))
(sdedr:define-refinement-size "Ref.TrBot"
0.1 0.5
0.05 0.05)
(sdedr:define-refinement-function "Ref.TrBot"
"DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-placement "RefPlace.TrBot"
"Ref.TrBot" "RW.TrBot" )
;----------------------------------------------------------------------
; Meshing Offseting
;----------------------------------------------------------------------;
(define nlevels 10)
(define factor 1.5)
(sdedr:offset-block "material" "Silicon" "maxlevel" nlevels)
(sdedr:offset-interface "region" "R.Si" "R.Gox" "hlocal" 0.0015 "factor" factor)
(sdedr:offset-interface "region" "R.Gox" "R.PolyGate" "hlocal" 0.01 "factor" factor)
(sdedr:offset-interface "region" "R.Gox" "R.Si" "hlocal" 0.003 "factor" factor)
;----------------------------------------------------------------------
; Saving BND file
(sdeio:save-tdr-bnd (get-body-list) "@tdrboundary/o@")
; Save CMD file
(sdedr:write-cmd-file "@commands/o@")
(system:command "snmesh -offset n@node@_msh")
在sentaurus里什么意思,详细解释每一句代码的意思
这段代码是一个用于在Sentaurus TCAD软件中创建和设置半导体器件模拟的脚本。Sentaurus TCAD 是用于半导体器件设计和模拟的工具,它允许用户定义器件的几何结构、材料属性、掺杂浓度分布等,并通过脚本自动执行这些任务。下面是对每句代码的详细解释:
### 1. 设置坐标系
```lisp
(sde:set-process-up-direction "+z")
```
这行代码设置了处理方向为+z轴,这通常用于定义器件的垂直方向。
### 2. 设置默认的布尔运算类型
```lisp
(sdegeo:set-default-boolean "BAB")
```
这行代码设置了默认的布尔运算类型为"Back And Both"(BAB),这是一种处理几何形状交集和并集的策略。
### 3. 创建多边形结构
```lisp
(sdegeo:create-polygon (list
(position 2.0 0.0 0)
(position 2.1 3.13 0)
(position 2.7 3.13 0)
(position 2.8 0.0 0)
(position 2.0 0.0 0))
"PolySi" "R.PolyGate")
```
这行代码创建了一个多边形,使用的材料是"PolySi"(多晶硅),这个多边形被用在了"R.PolyGate"区域。
### 4. 倒角处理
```lisp
(sdegeo:fillet-2d (find-vertex-id (position 2.1 3.13 0)) 0.2)
(sdegeo:fillet-2d (find-vertex-id (position 2.7 3.13 0)) 0.2)
```
这两行代码对多边形的顶点进行倒角处理,倒角半径为0.2。
### 5. 创建其他多边形和矩形结构
```lisp
(sdegeo:create-polygon (list
(position 1.98 0.00 0)
(position 2.08 3.22 0)
(position 2.72 3.22 0)
(position 2.82 0.00 0)
(position 1.98 0.00 0))
"Oxide" "R.Gox")
```
```lisp
(sdegeo:create-rectangle
(position 2.8 -0.3 0.0 ) (position 3.1 0.0 0.0 ) "Oxide" "R.Spacer" )
```
```lisp
(sdegeo:create-rectangle
(position 0.0 0.0 0.0 ) (position 2.8 -0.3 0.0 ) "PolySi" "R.PolyCont" )
```
```lisp
(sdegeo:create-rectangle
(position 0.0 0.0 0.0 ) (position xmax ymax 0.0 ) "Silicon" "R.Si" )
```
这些代码创建了多个几何形状,包括多边形和矩形,每个形状都被分配了不同的材料和区域名称。
### 6. 定义接触集
```lisp
(sdegeo:define-contact-set "Emitter" 4 (color:rgb 1 0 0 ) "##" )
(sdegeo:define-contact-set "Collector" 4 (color:rgb 1 0 0 ) "##" )
(sdegeo:define-contact-set "Gate" 4 (color:rgb 1 0 0 ) "##" )
```
这些代码定义了三个接触集:发射极、集电极和栅极。
### 7. 定义2D接触
```lisp
(sdegeo:define-2d-contact (find-edge-id (position 3.5 0.0 0.0)) "Emitter")
(sdegeo:define-2d-contact (find-edge-id (position 3.5 ymax 0.0)) "Collector")
(sdegeo:define-2d-contact (find-edge-id (position 1.0 -0.3 0.0)) "Gate")
```
这些代码在特定位置定义了2D接触。
### 8. 定义掺杂轮廓
```lisp
(sdedr:define-constant-profile "Const.Substrate"
"PhosphorusActiveConcentration" 1e+15 )
```
这些代码定义了不同的掺杂轮廓,包括恒定掺杂和高斯分布掺杂。
### 9. 网格划分
```lisp
(sdedr:define-refinement-size "global" (/ 2.5 ds) (/ 10.0 ds) (/ 2.5 ds) 0.1 0.1 0.1 )
```
这些代码定义了全局和特定区域的网格细化级别。
### 10. 偏移处理
```lisp
(sdedr:offset-block "material" "Silicon" "maxlevel" nlevels)
```
这些代码对不同材料界面进行偏移处理。
### 11. 保存BND文件和CMD文件
```lisp
(sdeio:save-tdr-bnd (get-body-list) "@tdrboundary/o@")
```
```lisp
(sdedr:write-cmd-file "@commands/o@")
```
这些代码保存了边界文件和命令文件,以便进行进一步的模拟。
```lisp
(system:command "snmesh -offset n@node@_msh")
```
这行代码执行了一个系统命令来生成网格。
这个脚本涉及了从基本的几何形状创建到复杂的网格划分和掺杂分布定义的多个步骤,是半导体器件模拟中的一个典型流程。