缘魁上海网站建设,泉州快速建站模板,怎样设计一个网页页面,静态网页报告Sde 方便处理rule check相关的问题。同时也能让使用者进一步了解器件结构、掺杂和引线等基本操作。Sde用于搭建结构#xff0c;重新优化网格#xff0c;提供.mesh文件供后面Sdevice仿真#xff0c;主要包含以下几部分#xff1a;
第一部分#xff1a;
Scheme BasicsDefi…Sde 方便处理rule check相关的问题。同时也能让使用者进一步了解器件结构、掺杂和引线等基本操作。Sde用于搭建结构重新优化网格提供.mesh文件供后面Sdevice仿真主要包含以下几部分
第一部分
Scheme BasicsDefining Simple Variables and Data Types(定义简单变量和数据类型)
第二部分
Create Structure (结构搭建)Doping(掺杂)Contact Definition(引线定义)Mesh Definition(网格定义)Save File(保存文件)
Scheme Basics
The scripting language of Sentaurus Structure Editor is based on Scheme, which is a LISP-like programming language that differs significantly from most widely used programming languages. A working knowledge of Scheme is needed to create Sentaurus Structure Editor scripts for parameterized devices. (Sentaurus Structure Editor的脚本语言基于Scheme,与大多数广泛使用的编程语言有很大不同, Scheme是一种类似lisp的编程语言。为参数化器件创建Sentaurus结构编辑器脚本需要Scheme的工作知识
A Scheme command is enclosed in parentheses(Scheme命令包含在括号中): (Scheme command)All text in a line after a semicolon is treated as a comment(分号后面一行中的所有文本都被视为注释): ; This is a comment (Scheme command) ; This is also a commentA Scheme command can extend over several lines(Scheme命令可以延伸到多行): (beginning of Scheme command continuation of the same Scheme command end of the Scheme command)Several Scheme commands can be on a single line多个Scheme命令可以在一行中: (first Scheme command) (second Scheme command) (…)
Defining Simple Variables and Data Types(定义简单变量和数据类型)
Integers and floating-point numbers are treated as numbers. Declare and define a numeric variable with整数和浮点数被视为数字。声明并定义一个数字变量: (define i 3) (define pi 3.141593)Strings are enclosed in double quotation marks. Declare and define a string with字符串用双引号括起来。声明并定义一个字符串: (define W “Hello World”)Characters are preceded by a single quotation mark. Declare and define a character with(字符前面有一个单引号。声明并定义一个字符) (define CHAR a)Use the variable name to reference a variable(使用变量名引用变量): i pi W CHAR Update an existing variable with: (define j 1) (set! j ( j 1)) Use define when a variable is introduced for the first time. Use set! to alter an existing variable(首次引入变量时使用define。使用Set更改现有变量。).
Create Structure(结构创建)
sdegeo:set-default-boolean “ABA”设置默认布尔行为参数布尔值可以是以下任意预定义值(默认行为决定如何处置重叠区域“ABA”: 减去已有区域中的重叠区域.sdegeo:set-default-boolean “BAB”设置默认布尔行为参数布尔值可以是以下任意预定义值(默认行为决定如何处置重叠区域从新创建的区域中减去所有现有区域.(sdegeo:create-rectangle) : 创建2D矩形区域 (sdegeo:create-rectangle v1 v2 material-name region-name). This Scheme extension 向模型添加一个2D矩形。通过指定两个相对的角点来定义矩形。 如果生成的矩形与现有区域重叠新插入区域和重叠区域的拓扑决定于布尔公式。 “material-name”设置为区域材质region-name设置为区域名称。(sdegeo:create-rectangle(position 0 0 0)(position 30 5 0) “Silicon” “SUB”), 表示创建一个矩形区域材料是硅名称是SUB。 Position确定了对角线的位置坐标就确定了区域的位置和大小。材料有Silicon(硅)、Oxide(氧化层)、SiO2(二氧化硅)、Alumimum(铝)和PolySi(多晶硅)等。 (sdegeo:create-polygon): 多边形区域画法比如阶梯场板、阶梯多晶硅栅、LOCOS场氧、STI隔离等需要把多边形的每个点顺序列出来并且最后一个点要与第一个点重合。(sdegeo:create-polygon (list (position 8 29.5 0)(position 8.8 30 0) (position 63.2 30 0) (position 64 29.5 0)(position 8.8 29 0)(position 8 29.5 0)) SiO2 gox)
Doping(掺杂)
器件结构设计完成后架子就搭好了接着需要对确定的区域进行掺杂。
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-refeval-window RefEvalWin_SUB Cuboid(position 0 0 0)(position 30 5 0)):确定位置并确定掺杂类型Cuboid表示恒定掺杂
(sdedr:define-constant-profile ConstantProfileDefinition_SUB BoronConcentration 1.8e15)确定掺杂的元素是硼形成P型半导体掺杂浓度是1.8e15
sdedr:define-constant-profile-placement ConstantProfilePlacement_SUB ConstantProfileDefinition_SUB RefEvalWin_SUB在网格命令文件中穿件恒定掺杂轮廓定义的Ref/Eval窗口放置
另一种掺杂方式是线性掺杂或者叫解析掺杂高斯掺杂这里是用Line表示。 (sdedr:define-refinement-window RefEvalWin_nsd1 Line (position 26 10 0)(position 30 10 0))当采用线性掺杂时这里的总坐标是不变的也就是确定一条线段基线沿着这条线往两侧延伸掺杂浓度由高到低模拟离子注入及退火过程掺杂区域命名为nsd1。
(sdedr:define-analytical-profile)创建用户定义的分析函数该函数描述网格命令文件中的掺杂
(sdedr:define-analytical-profile-placement)在网格命令文件中创建形貌分析面定义的位置。 (sdedr:define-analytical-profile-placement AnalyticalProfilePlacement_nsd1 nsd1 RefEvalWin_nsd1 Both NoReplace Eval) 这一句除了nsd1一般不需要修改。
(sdedr:define-gaussian-profile nsd1 ArsenicConcentration PeakPos 0 PealVal 4.5e20 ValueAtDepth 1e15 Depth 0.5 Erf Factor 0.5)这个地方的gaussian表示掺杂类型为高斯掺杂即线性掺杂nsd1是自定义的区域名称与上面保持一致ArsenicConcentration表示砷元素掺杂即形成N型半导体Peakpos是Peakposition的意思是指掺杂浓度的最大值与基线的距离这里的0指掺杂浓度最大值就是在基线。最大浓度PeakVal是4.5e20,最小浓度ValueAtDepth是1e15,扩散深度Depth是0.5微米,横向扩散因子Factor是0.5,。这里的横向扩散因子越大扩散越明显越小越接近恒定掺杂。Both表示的是沿着基线向两侧扩散当两侧都是硅那么会形成两侧的扩散如果是在硅表面进行扩散由于另一侧没有Si材料那就是基本的离子扩散类似于例子注入退火等还有Positive是往正的方向扩Positive是往反方向扩散。
Contact(电极)
掺杂之后就定义接触电极在仿真中电极也叫接触 (sdegeo:define-contact-set “anode” 4 (color:rgb 1 0 0) “##”) (sdegeo:set-current-contact-set “andoe”) (sdegeo:define-2d-contact-(list (car (find-edge-id(position 2 20 0)))) “anode”)
(sdegeo:define-contact-set )定义电极名字并初始化支持数据 Syntax: (sdegeo:define-contact-set name [edgeThickness Color] | [Color facePattern])
最后三个参数是可选的可以按照任意顺序给出。如果电极组名称已经存在则将被新的定义替换“Color” 参数是RGB颜色对象例如 (color:rgb 0 1 0)。color:rgb命令接收三个实数参数每个参数的范围为[0,1]对于边电极(2D)使用edgeThickness和Color参数。对于面电极(3D)使用Color和facePattern参数。如果在参数列表中指定了未使用的参数则将忽略该参数 (sdegeo:set-current-contact-set)设置当前活动电极组的名称
“anode”电极名称边缘厚度默认是4rgb(red green blue)后面的表示颜色。
这里面只要在铝或者想要定义电极的地方边缘取一个点就行就会形成一个接触。 定义电极的另一种方式是把铝包起来要把点定义在铝的内部(body)任一点而不是边缘(edge)命令是: (sdegeo:define-contact-set “drain” 4 (color:rgb 1 0 0) “##”) (sdegeo:set-current-contact-set “drain”) (sdegeo:set-contact-boundary-edges(list(car(find-body-id(position 20 11 0))))“drain”) 这个坐标是在铝内部任一点这种电极定义方法对于铝、多晶硅都是可以的但是对于衬底、硅表面电极接触的定义就要用上面的边缘接触。
(sdegeo:set-contact-boundary-edges)将活动(active)电极组(set)名称附着到指定实体(specified body)的所有边
This Scheme extension 将选定区域的所有边定义为电极并使用活动电极集(active contact set)和选定实体的名称。或者可以在参数列表中指定主体列表(body list)。在这种情况下将忽略(sde:selected-entities)并从指定的实体列表中提取边缘列表。
为了防止金属影响仿真结果很多接触的定义都是把金属删除了只保留接触命令是(sdegeo:delete-region(list(car(find-body-id(position 0 -0.1 0))))),(0 -0.1 0)是金属铝或者PolySi的任一点即可把电极金属去除只保留Contact,这句命令一般紧随该电极之后。
(sdegeo:delete-region)删除指定的一个或多个区域, 包括Ref/Eval窗口主体
Mesh(网格)
没有网格定义掺杂就无法正常显示。Sdevice仿真就是将Sde或Sprocess建立出来的图形进行网格化形成网格文件二进制文件,根据某处网格点的数据如浓度、坐标代入到软件被调用的半导体器件方程如泊松、迁移率等方程从而计算出器件的电学特性所以网格才是Sde的灵魂。 (sdedr:define-refeval-window RefEvalWin_1 Rectangle (position 0 50 0)(position 600 -50 0)),这表示需要优化的区域这个矩形区域需要大于器件的区域。 sdedr:define-refinement-size “RefinementDefinition_1” 5 5 1 1,这里的5 5 1 1分别表示网格在X方向的最大长度Y方向的最大长度X方向的最小长度Y方向的最小长度。如果想要增大Y方向网格密度则应减小Ymax和Ymin. (sdedr:define-refinement-placement RefinementPlacement_1 RefinementDefinition_1 RefEvalWin_1) (sdedr:define-refinement-function RefinementDefinition_1 DopingConcentration MaxTransDiff 1),这两行一般不作修改。 如果想对某一区域优化网格即对某一区域进行加密。比如栅氧、PN结交界面、金属和硅的接触面、二维电气等可以再加一个网格定义的矩形区域名称可以把Win1改成Win2名字是自定义的。(sdedr:define-refeval-window “RefEvalWin_2” “Rectangle” (position 0 7 0)(position 600 12 0),修改position,改成只想优化的矩形区域。(sdedr:define-refinement-size “RefinementDefinition_2” 0.8 0.8 0.3 0.3),把网格改小数字与数字之间有空格即可1个空格和n个空格没差别。(sdedr:define-refinement-placement “RefinementPlacement_2” “RefinementDefinition_2” “RefEvalWin_2”).(sdedr:define-refinement-function “RefinementDefinition_2” “DopingConcentration” “MaxTransDiff” 1),记得把所有的Win1改成Win2不然无效。若要加三个区域的网格就把这四行整体复制改成position坐标和第二行 0.8 0.8 0.3 0.3 这4个数字同时把所有的Win2改成Win3…
Save File(保存文件))
(system:command snmesh nnode_msh)
(sde:build-mesh nnode)上述命令会调用Snmesh这个工具进行Mesh Generation,即生成网格文件一般用于后续的Sdevice运行node可以自动读取当前运行节点的节点序号。 通过以上的保存命令运行成功后可以得到两张图一个是bnd.tdr没有掺杂信息的一个是有掺杂信息的_msh.tdr图。 此外运行Sde之前记得选Properties改成Batch模式不然会出现一个Sentaurus Structure editor窗口特别费时间。如果想看网格数量双击运行成功的节点往上翻Points之前的数字就是网格数。 遇到运行出错双击节点点击左下状态栏有个.err的点进去查看。
特殊案例
《1》拐角优化
Sde搭建的结构棱角突出与实际不符会导致电场集聚需要在棱角处做圆润化处理。
(sdegeo:create-polygen (list (position 8 29.5 0)(position 8.8 30 0)(position 63.2 30 0)(position 64 29.5 0)(position 63.2 29 0)(position 8.8 29 0)(position 8 29.5 0)) SiO2 gox)优化的命令紧随上面的多边形创建命令 (sde:define-parameter filter-radius 10 0.0 0.0),这里的10是圆润化的程度越大会越圆润可以用0.1和0.01两个运行试试。写出需要圆润化的坐标像LOCOSSTI底部等转弯处。
(sdegeo:fillet-2d(find-vertex-id(position 8.8 30 0.0)) fillet-radius)
(sdegeo:fillet-2d(find-vertex-id(position 8.8 29 0.0)) fillet-radius)
(sdegeo:fillet-2d(find-vertex-id(position 63.2 30 0.0)) fillet-radius)
(sdegeo:fillet-2d(find-vertex-id(position 63.2 29 0.0)) fillet-radius)《2》宏定义变量
变量的定义有两种第一种是在外面添加这个变量并赋值程序里的变量用L1这样的格式另外还有一种就是在命令开头定义如(define CP 1), (define R1 20)
《3》Sde命令四则运算
( a b)表示a加b (- a b)表示a减b (* a b)表示a乘b (/ a b)表示a除以b (/ (* (- a b) c) d),表示[(a-b)xc]/d
除了加减乘除tcl语言还提供了开方sqrt,求对数log等运算。
《4》循环语句
(do ( ( i 0 ( i 1))) (( i R1)) (begin (define REGION1 (string-append “region” (number-string i))) (sdegeo:create-rectangle (position ( 11 (* i CP)) 9 0.0) (position ( 11.5 (* i CP)) 11 0.0) “Aluminum” REGION1))) 这是画20个矩形的操作材料是铝CP和R1是上面提到的1和20.上面的命令表示i从0开始一共循环20次第一次矩形对角线是(11,9)(11.5, 11)第二次矩形对角线是(12,9)(12.5 11),第三次矩形对角线是(13,9)(13.5,11)…第20次矩形对角线是(30,9)(30.5 11),当iR20不执行操作跳出循环。
《5》cur剪切语句
搭建好的结构如果只想要对器件局部进行仿真可以用下面的命令把想要的区域给剪切出来。命令的位置放在Doping之前后者Meshing之前也行但一定要搭建好的结构区域之后。命令是: (sdegeo:2d-cut(position 40 20 0)(position 80 -40 0))保留由Position定义的矩形框内的器件区域。
《6》添加新材料
有时Sde默认的材料里不包括我们想要的新材料比如高K介质HfO2,如果需要添加新材料使用如下方法。在Project目录下添加Datexcodes.txt文件修改Datexcodes.txt文件添加新材料HfO2文件内容如下: Material{ HfO2{ label “HfO2” group Insulator color #a68262,#ff1744 }} 这里的group代表的是材料类型分为导体conductor、半导体Semiconductor和绝缘体Insulator等。
注
ACIS 是两种最流行的几何内核之一为许多CAD、CAM、CAE 和 AEC 软件提供支持。它已有 30 多年的历史最初创建于 80 年代目前由 SpatialDassault Systemes 的一部分开发。与任何其他 3D 几何内核一样它以数据结构的形式为工程和设计应用程序提供基础以表示 3D 模型和各种几何算法以对其进行操作。为了在建模会话之间保存和加载 3D 模型它公开了一种持久性格式称为ACIS-SAT或简称为 SAT。它曾经是一种开放格式在 2000 年代左右具有公开可用的规范但后来的修订版不是。ACIS 文件有两种风格 - 文本 (SAT) 和二进制 (SAB)