BJT(sde) 解析
; Emulation Domain
(define Xmax 2.2) ; Width
(define Ymax 1.2) ; Depth
(sdepe:define-pe-domain (list 0.0 0.0 Xmax Ymax));Substrate definition
(define Nasub 1e16) ; Boron concentration
(define Zsub 2.0) ; Initial Substrate Height
(sdepe:add-substrate "material" "Silicon" "thickness" Zsub "region" "Substrate")
(sdepe:doping-constant-placement "DopSub" "BoronActiveConcentration" Nasub "Substrate"); Subcollector implant mask
(define Xb1 0.2) ;Beginning of base window
(define Xb2 1.2) ;End of base window
(define Xc1 1.5) ;Beginning of collector contact window
(define Xc2 2.0) ;end of collector contact window
(define Yc 0.8) ;Depth of contact
(sdepe:generate-mask "SUBC" (list (list Xb1 0.0 Xc2 Yc)))
(define Tre 0.5)
(sdepe:pattern "mask" "SUBC" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre);Subcollector implant
(define LatDiff 0.02)
(sdedr:define-gaussian-profile "SubCol" "PhosphorusActiveConcentration" "PeakPos" 0.0 "PealVal" 5e+19 "ValueAtDepth" Nasub "Depth" 0.5 "Gauss" "Length" LatDiff)
(sdepe: implant "SubCol")
(sdepe:remove "material" "Resist); Deposit Silicon epi layer
(define Tepi 0.3)
(define Ndepi 5e16)
(define SiEpi (sdepe:depo "material" "Silicon" "thickness" Tepi "type" "iso"))
(sde:add-material SiEpi "Silicon" "SiEpi")
(sdepe:doping-constant-placement "DopEpi" "ArsenicActiveConcentration" Ndepi "SiEpi"); Isolation mask
(sdepe:generate-mask "ISO" ;Protection mask
(list (list xb1 0.0 xb2 Yc)(list xc1 0.0 xc2 Yc))) (sdepe:pattern "mask" "ISO" "polarity" "light" "type” "aniso" "material" "Resist" "thickness" Tre)(sdepe:etch-material "material" "Silicon" "depth" Tepi) ;Trench etching
(sdepe:remove "material" "Resist");Fill trench
(define Ztop (sde-int:compute-zmax)
(sdepe:fill-device "material" "Oxide" "height" (+ Ztop 0.1)); CMP polish
(sdepe:polish-device "thickness" 0.1);Deposit screening oxide
(define Tscreen 0.03)
(sdepo:depo "material" "Oxide" "thickness" Tscreen); Collector contact implant mask
(sdepe:generate-mask "COL" (list (list Xc1 0.0 Xc2 Yc)))
(sdepe:pattern "mask" "COL" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre); Collector contact implant
(sdedr: define-gaussian-profile "ColCont" "ArsenicActiveConcentration" "PeakPos" 0.0 "PeakVal" 5e+19 "ValueAtDepth" 1e+17 "Depth" 0.5 "Gauss" "Length" LatDiff)
(sdepe:implant "ColCont")
(sdepe:remove "material" "Resist"); Base implant mask
(sdepe:generate-mask "BAS" (list (list Xb1 0.0 Xb2 Yc)))
(sdepe:pattern "mask" "BAS" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre); Base implant
(define Tbase 0.2)
(define Nabase 3e18)
(sdedr: define-gaussian-profile "Base" "BoronActiveConcentration" "PeakPos" 0.0 "PeakVal" Nabase "ValueAtDepth" Ndepi "Depth" Tbase "Gauss" "Length" LatDiff)
(sdepe:implant "Base")
(sdepe:remove "material" "Resist"); Emitter implant mask
(define Xe1 0.9)
(define Xe2 1.1)
(define Ye (* 0.7 Yc))
(sdepe:generate-mask "EMIT" (list (list Xe1 0.0 Xe2 Ye)))
(sdepe:pattern "mask" "EMIT" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre);Emitter implant
(define Temit 0.1)
(sdedr: define-gaussian-profile "Emitter" "PhosphorousActiveConcentration" "PeakPos" 0.0 "PeakVal" 1e+20 "ValueAtDepth" 1.0e18 "Depth" Temit "Gauss" "Length" LatDiff)
(sdepe:implant "Emitter")
(sdepe:remove "material" "Resist"); Emitter and collector contact holes mask
(define reset 0.05)
(sdepe:generate-mask "PCH"(list (list (+ Xe1 reset) 0.0 (- Xe2 reset) (- Ye reset))(list (+Xc1 reset) 0.0 (-Xc2 reset) (- Yc rest))))
(sdepe:pattern "mask" "PCH" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre);Etching emitter and collector contact holes
(sdepe:etch-material "material" "Oxide" "depth" Tscreen)
(sdepe:remove "material" "Resist"); Deposit PolySi
(define Tpoly 0.1)
(define POLYSI (sdepe:depo "material" "PolySi" "thickness" Tpoly))
(sde:add-material POLYSI "PolySi" "Poly")
(sdepe:doping-constant-placement "DoPoly" "ArsenicActiveConcentration" 1e20 "Poly"); Poly mask
(sdepe:generate-mask "POL" (list (list Xc1 0.0 Xc2 Yc)(list Xe1 0.0 Xe2 Ye)))
(sdepe:pattern "mask" "POL" "polarity" "light" "type" "aniso" "material" "Resist" "thickness" Tre); Etching poly
(sdepe:etch-material "material" "PolySi" "depth" Tpoly)
(sdepe:remove "material" "Resist");Fill
(define Ztop (+ (sde-int:compute-zmax) 0.05))
(sdepe:fill-device "material" "Oxide" "height" Ztop); Metal contact holes mask
(define Xbc1 ( + Xb1 0.1))
(define Xbc2 (+ Xbc1 0.4))
(sdepe:generate-mask "MET1" (list (list Xc1 0.0 Xc2 Yc)(list Xe1 0.0 Xe2 Ye)(list Xbc1 0.0 Xbc2 Ye)))
(sdepe:pattern "mask" "MET1" "polarity" "dark" "type" "aniso" "material" "Resist" "thickness" Tre);Etch metal contact holes
(sdepe:etch-material "material" "Oxide" "depth" (+ Tpoly 0.05))
(sdepe:etch-material "material" "Oxide" "depth" Tscreen)
(sdepe:remove "material" “Resist”);------------------------------------------------------------------
;Fill contact holes
(sdepe:fill-device "material" "Metal");----------------------------------------------------------------
;Contact definitions
(sdegeo:set-contact (find-face-id (position 0.01 0.01 0.0)) "substrate")
(define BCID (find-body-id(position (* 0.5 (+ Xbc1 Xbc2)) (* 0.5 Ye) (- Ztop 0.01))))
(sdegeo:set-contact BCID "base" "remove")(define ECID (find-body-id(position (* 0.5 (+ Xe1 Xe2)) (* 0.5 Ye) (- Ztop 0.01))))
(sdegeo:set-contact ECID "emitter" "remove")(define CCID (find-body-id(position (* 0.5 (+ Xc1 Xc2)) (* 0.5 Yc) (- Ztop 0.01))))
(sdegeo:set-contact CCID "collector" "remove");------------------------------------
;------------------------------------
; Meshing
;-----------------------------------
; Global
(define Ztop (sde-int: compute-zmax))
(sdedr:define-refeval-window "All_RW" "Cuboid"(position 0 0 0) (position Xmax Ymax Ztop))
(sdedr:define-refinement-size "All_RD" (/ Xmax 8.0) (/ Ymax 8.0) (/ Ztop 8.0)(/ Xmax 16.0)(/ Yma 16.0) (/ Ztop 16.0))
(sdedr:define-refinement-function "All_RD" "DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-placement "All_PL" "All_RD" "All_RW"); Top region
(sdedr:define-refeval-window "Top_RW" "Cuboid"(position Xb1 0 1.25) (position Xc2 Yc 2.3))
(sdedr:define-refinement-size "Top_RD" (/ Xmax 16.0) (/ Ymax 16.0) (/ Ztop 16.0)(/ Xmax 32.0)(/ Yma 32.0) (/ Ztop 32.0))
(sdedr:define-refinement-function "Top_RD" "DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-placement "Top_PL" "Top_RD" "Top_RW"); Base region
(sdedr:define-refeval-window "Base_RW" "Cuboid"(position Xb1 0.0 Zsub) (position Xb2 Yc (+ Zsub Tepi)))
(sdedr:define-refinement-size "Base_RD" (/ (+ Xb2 Xb1) 8.0) (/ Yc 8.0) (/ Tepi 8.0)(/ (+ Xb2 Xb1) 32.0)(/ Yc 32.0) (/ Tepi 32.0))
(sdedr:define-refinement-function "Base_RD" "DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-placement "Base_PL" "Base_RD" "Base_RW"); Active region
(sdedr:define-refeval-window "Active_RW" "Cuboid"(position 0.85 0.0 2.15) (position 1.15 0.6 2.3))
(sdedr:define-refinement-size "Active_RD" 0.02 0.08 0.02 0.01 0.04 0.01)
(sdedr:define-refinement-function "Active_RD" "DopingConcentration" "MaxTransDiff" 1)
(sdedr:define-refinement-placement "Active_PL" "Active_RD" "Active_RW"); Poly
(sdedr:define-refinement-size "Poly_RD" 99 99 (/ Tpoly 8.0)66 66 (/ Tpoly 9.0))
(sdedr:define-refinement-material "Poly_PL" "Poly_RD" "PolySi" );------------------------------------------------------------
; Meshing the device
;------------------------------------------------------------
(sde:build-mesh "n@node@")
注释符号
- 在Sde里,可以使用"#“、“;”用作注释符号。注释的语句变为棕色,但要注意:“#”连接关键字在jedit中变蓝的也不代表注释,如#set、#define、#if、#else等,需要注释需要在其前面加两个或以上的警号。所以在Sde中推荐使用专属注释标识符”;".
sdepe:define-pe-domain
定义工艺仿真的基本区域(base domain)
This Scheme extension为后续Procem操作提供仿真区间(simulation domain).这个参数列表包含了四个实数或实数对列表。
(Procem: Three-dimensional process emulator)
(sdepe: define-pe-domain {{X0 Y0 X1 Y1}|{Polygon}})
- 如果参数列表包含四个实数,则定义一个矩形,使用由四个数字构成的xy坐标当做仿真区间的两个对角
- 如果定义了实数对列表,则实数对定义了在xy平面仿真区间的顶点
- 如果使用多边形定义仿真区间,唯一的限制是这个多边形必须是简单连接的凸多边形
- 在z=0时,在xy平面定义区间。
sdepe:add-substrate
给器件增加初始衬底层
Syntax:
(sdepe:add-substrate "material" material "thickness" thickness ["base" base] ["region" region-name])
- This Scheme extension首先创建了器件的衬底层。调用这个函数之前,必须设置域边界(sdepe:define-pe-domain).
- 关键字"material"标识生成主体的DATEX材料/材质
- 关键字"base" 用于为衬底层底部Z坐标指定值。如果未指定"base",则衬底层底部按Z=0放置
- 关键字"region"为生成的衬底指定明确的区域名称。
sdepe:doping-constant-placement
定义并应用恒定掺杂
Sytax
(sdepe:doping-constant-placement name species concentration region-name)
This Scheme extension定义并将恒定掺杂应用于给定区域。在恒定掺杂的情况下,不需要单独的注入命令,如高斯掺杂分布的情况
sdepe:generate-mask
创建用于工艺流程的mask
Sytax
(sdepe:generate-mask mask-name polygon-list)
- This Scheme extension 用于Procem中定义mask. 定义的mask用于下一步的图形操作(不会删除使用过的mask)。每个mask定义成多边形列表。当多边形列表转化为mask时,首先每个多边形转换为sheet body. 然后执行包含检查(containment check),部分重叠转换后的sheet bodies被合并(united). 如果一个sheet body完全包含在另一个body内,它将从该片体中减去,并形成内部空隙。这样,就创建多个连接的mask sheet bodies.
- 单个mask多边形列表不能包含相交变,并且多边形顶点列表必须为每个多边形定义manifold sheet body.(不允许使用cutlines or dangling边). 如果顶点列表未闭合(not closed),转换器将自动闭合。多边形顶点列表中不允许零长度边(即,顶点之间的距离至少应为1.0e-06)。不同的masks可以有相交的多边形边界。如果mask包含矩形多边形,则只需指定此类多边形的两个相对角即可。每个多边形都定义为xy坐标列表。
- 参数"mask-name":由Scheme extension 创建的mask名称。生成的mask是一个2D sheet body. mask name属性将附加到mask body。如果已存在指定名称的mask,后续的操作将使用新创建的mask。参数多边形列表指定了生成mask的顶点。
sdepe:pattern
执行图形步骤
Sytax
sdepe:pattern "mask" mask-name "polarity" polarity ["type" depo-type] "material" material ["algorithm" depo-alg] "thickness" thickness ["step" nsteps] ["region" region] [PT keywords and values])
- This Scheme extension生成图案层
- “mask"关键字标识用于图案操作的mask
- "polarity"关键字定义mask极性。
由于图案层操作类似于沉积步骤,有关所用算法和类型的详细说明,请参见sdepe:depo
sdedr:define-gaussian-profile
在网格命令文件中创建高斯函数掺杂配置文件的设定
sdepe:implant
使用分析函数创建掺杂分布,模拟包括扩散在内的注入步骤
sdepe:remove
删除指定的区域或材质(material)
sde :add-material
将指定的材质和区域属性分配给body.
Syntax
sde:add-material body material-name region-name
- This Scheme extension 将材质(material)和区域属性指定给body,body由第一个参数定义。
- “material-name”参数必须是有效的DATEX名称。该名称在datexcodes.txt文件中定义。“material-name”参数被指定为body的材质(material)属性。当细分边界输出时,材质属性将是区域的材质。
- "region-name"属性定义细分边界输出中的区域名称。
sdepe:add-material
执行蚀刻步骤操作
sde-int:compute-zmax
sdepe:fill-device
使用指定的材料填充器件,直到达到指定的高度
sdegeo:set-contact
给指定的实体分配接触孔(active contact)
Syntax
(sdegeo:set-contact entity | entity-list [contact-name ["remove"]])
eg:
(sdegeo:set-contact (find-face-id (position 0.01 0.01 0.0)) "substrate")
- 如果未指定可选参数"contact-name",This Scheme extension将active contact附加到指定的实体(specified entity)
- 如果提供了参数"contact-name", "contact-name"将会被激活(如果不存才,则创建一个contact)。如果实体类型(entity type)为EDGE, 则定义2D contact;如果实体类型为FACE(并且实体属于三维实体),则将指定3D contact;如果实体是2D 实体(body),则将在实体的所有边上定义2D contact;如果实体是3D 实体(body),则将在实体的所有面上定义三维(3D)接触(contact).
- 可选参数"remove"使用时,将删除指定的实体(specified entitu)或实体列表(entity-list bodies),并且仅为牙印(imprinted)边或面定义contact
sdedr:define-refeval-window
定义可用作参考/评估窗口的几何区域
Sytax
(sdedr:define-refeval-window rfwin-name { single-shape | multi-shape })
- for single-shape:
- “Point”: 数据参数是一个位置
- “Line” “Rectangle” “Cuboid”,数据参数为两个相对的角位置。关键字"矩形"和"长方体"轴对齐
- “Polygon” 数据参数是位置列表(第一个和最后一个位置必须是相同)
sdedr:define-refinement-size
在网格命令文件中创建细化尺寸定义
Syntax
(sdedr:define-refinement-size definition-name max-x max-y max-z min-z min-y min-z)
sdedr:define-refinement-size
将优化函数添加到指定的优化
sde:build-mesh
生成细分的TDR边界输出和网格命令文件,并调用Sentaurus Mesh
Syntax
(sde:build-mesh [options] file-basename)
- 打印显示网格化成功或失败的消息。分别返回#t或#f以表明成功或失败。