maodouzier的个人空间 https://blog.eetop.cn/1771218 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

2021-01-15

已有 1713 次阅读| 2021-1-15 15:31 |个人分类:sentaurus|系统分类:芯片设计| sentaurus, IGBT

这是本人发在CSDN上的一篇文章,由于CSDN做半导体的人比较少,因此希望可以在这个平台和大家多交流。

还是一个经典的IGBT结构,这是一个典型的N型IGBT,下面我将把一些相关的结构,和具体的写法用下面一幅图表达出来。

这里因为方便看,我们把器件的比例画的比较抽象。可以看到的是,这里有很多的距离参数是用一些变量名来写的,这也是sentaurus比silvaco方便的地方,有了变量名,随便改对变量的赋值,因此在以后修改器件的时候也会方便很多。下面为整个器件结构的代码。

```

(sde:clear)

(sdegeo:set-default-boolean "ABA")

(define Lg 13.5)

(define Lr 0.5)

(define Le 8)

(define Lj 3.5)

(define Lc 0.5)

(define Ls 12)

(define Lh 3)

(define Tg 0.05)

(define To 0.05)

(define Te 0.25)

(define Tw 0.5)

(define Td 140)

(define Tb 2)

(define Ti 3)

(define Tc 0.5)

;structure

;(sdegeo:create-rectangle

; (position (+ Lj Lc) Tc 0) (position Lj 0 0)

; "SiliconCarbide" "channel2")

;(sdegeo:create-rectangle

; (position (* -1 (+ Lj Lc)) Tc 0) (position (* -1 Lj) 0 0)

; "SiliconCarbide" "channel3")

;-drift

(sdegeo:create-rectangle

  (position (* (+ (+ Lg Lr) Le) -1.0) (+ Tg To) 0)   (position (+ (+ Lg Lr) Le) (+ (+ Tg To) Td) 0)

"SiliconCarbide" "R.Drift" )

;-Channel

;(sdegeo:create-rectangle

; (position Lj (+ Tc (+ To Tg)) 0) (position (* -1 Lj ) (+ To Tg) 0)

; "SiliconCarbide" "Channel")

;-well

(sdegeo:create-rectangle 

  (position (* (+ (+ Lg Lr) Le) -1.0) (+ Tg To) 0 )  (position (* -1.0 Lj) (+ (+ Tg To) Tw) 0 ) 

  "SiliconCarbide" "R.WellLeft" )

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ Tg To) 0 )  (position Lj (+ (+ Tg To) Tw) 0 ) 

  "SiliconCarbide" "R.WellRight" )

;-Source 

(sdegeo:create-rectangle 

  (position (* (+ (+ Lj Lc) Ls) -1) (+ Tg To) 0 )  (position (* (+ Lj Lc) -1.0) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.SourceLeft" ) 

(sdegeo:create-rectangle 

  (position (+ (+ Lj Lc) Ls) (+ Tg To) 0 )  (position (+ Lj Lc) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.SourceRight" )

;-high concentration well

(sdegeo:create-rectangle 

  (position (* (+ (+ Lg Lr) Le) -1) (+ Tg To) 0 )  (position (* (+ (+ Lj Lc) Ls) -1) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.HighConcentrationLeft" )

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ Tg To) 0 )  (position (+ (+ Lj Lc) Ls) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.HighConcentrationRight" )

;-Buffer Layer

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ (+ Tg To) Td) 0 )  (position (* (+ (+ Lg Lr) Le) -1) (+ (+ Tg To) (+ Td Tb) ) 0 ) 

  "SiliconCarbide" "R.Buffer" )

;-Injector

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ (+ Tg To) (+ Td Tb)) 0 )  (position (* (+ (+ Lg Lr) Le) -1) (+ (+ (+ Tg To) (+ Td Tb)) Ti) 0 ) 

  "SiliconCarbide" "R.Injector" )

;-Gate

;(sdegeo:create-rectangle

; (position  (+ Lj Lc)  0 0) (position (+ (+ Lj Lc) Lr) (+ Tg To) 0 )

; "SiO2" "R.SiO2Right" )

;(sdegeo:create-rectangle

; (position (* -1.0 (+ Lj Lc) ) 0 0) (position (* (+ (+ Lj Lc) Lr) -1) (+ Tg To) 0 )

; "SiO2" "R.SiO2Left" )

(sdegeo:create-rectangle

(position (+ Lj Lc) Tg 0) (position (* (+ Lj Lc) -1.0) (+ Tg To) 0 )

"SiO2" "R.SiO2Middle" )

;Contact

;-gate contact

(sdegeo:define-contact-set "gate"  4.0  (color:rgb 0.0 0.0 1.0 ) "##" )

(sdegeo:set-current-contact-set "gate")

(sdegeo:define-2d-contact (find-edge-id (position 0 Tg 0)) "gate" )

;-emitter contact

(sdegeo:define-contact-set "emitterleft"  4.0  (color:rgb 0.0 1.0 0.0 ) "##" )

(sdegeo:set-current-contact-set "emitterleft")

(sdegeo:define-2d-contact (find-edge-id (position (* -0.5 (+ (+ Lg Lr) (+ Le (+ Lg Lr)))) (+ Tg To) 0)) "emitterleft" )

(sdegeo:define-contact-set "emitterright"  4.0  (color:rgb 0.0 1.0 0.0 ) "##" )

(sdegeo:set-current-contact-set "emitterright")

(sdegeo:define-2d-contact (find-edge-id (position (* 0.5 (+ (+ Lg Lr) (+ Le (+ Lg Lr)))) (+ Tg To) 0)) "emitterright" )

;-collector contact

(sdegeo:define-contact-set "collector"  4.0  (color:rgb 0.0 0.0 1.0 ) "##" )

(sdegeo:set-current-contact-set "collector")

(sdegeo:define-2d-contact (find-edge-id (position 0 (+ (+ Tg To) (+ Ti (+ Td Tb))) 0)) "collector" )

;doping

;-Drift Doping

; - Common dopants: 

; "PhosphorusActiveConcentration" | "ArsenicActiveConcentration"

; | "BoronActiveConcentration" 

(sdedr:define-constant-profile "DriftDop" "PhosphorusActiveConcentration" 2e14)

(sdedr:define-constant-profile-region "Place.DriftDop" "DriftDop" "R.Drift")

;-channel

;(sdedr:define-constant-profile "ChannelDop" "PhosphorusActiveConcentration" 2e14)

;(sdedr:define-constant-profile-region "Place.ChannelDop" "ChannelDop" "Channel")

;-Well Doping

(sdedr:define-constant-profile "WellRightDop" "BoronActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.WellRightDop" "WellRightDop" "R.WellRight")

(sdedr:define-constant-profile "WellLeftDop" "BoronActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.WellLeftDop" "WellLeftDop" "R.WellLeft")

;-Source Doping

(sdedr:define-constant-profile "SourceLeftDop" "PhosphorusActiveConcentration" 1e20)

(sdedr:define-constant-profile-region "Place.SourceLeftDop" "SourceLeftDop" "R.SourceLeft")

(sdedr:define-constant-profile "SourceRightDop" "PhosphorusActiveConcentration" 1e20)

(sdedr:define-constant-profile-region "Place.SourceRightDop" "SourceRightDop" "R.SourceRight")

;HighConcentration Doping

(sdedr:define-constant-profile "HighConcentrationRightDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.HighConcentrationRightDop" "HighConcentrationRightDop" "R.HighConcentrationRight")

(sdedr:define-constant-profile "HighConcentrationLeftDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.HighConcentrationLeftDop" "HighConcentrationLeftDop" "R.HighConcentrationLeft")

;Buffer Doping

(sdedr:define-constant-profile "BufferDop" "PhosphorusActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.BufferDop" "BufferDop" "R.Buffer")

;Injector Doping

(sdedr:define-constant-profile "InjectorDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.InjectorDop" "InjectorDop" "R.Injector")

;-Mesh

(sdedr:define-refinement-window "W.Global" "Cuboid"

(position -200 -200 0)

(position 200 200 0)

)

(sdedr:define-refinement-size "R.Global"3 3 0  0.01 0.01 0)

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiliconCarbide"  0.01 1.5 "DoubleSide")

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiO2"  0.01 1.2 "DoubleSide")

(sdedr:define-refinement-placement "P.Global" "R.Global" "W.Global")

(sde:build-mesh "snmesh" "" "n@node@_msh")

```

sentaurus的代码书写比较有意思,结构仿真中代码的注释和器件特性提取中代码的注释所使用的符号完全不同,结构仿真中;为注释的符号。

我们来慢慢分析代码:

```

(sde:clear)

(sdegeo:set-default-boolean "ABA")

```

(sde:clear)这一句什么意思我也不知道,大概是清楚什么东西的意思,每次写之前加上就行了。

(sdegeo:set-default-boolean "ABA")这一句就比较关键了,这是确定下面结构书写顺序的一行,ABA的意思就是新的区域代替旧的区域,因为刚开始是使用silvaco,因此新的区域代替旧的区域个人来讲是比较习惯的,当然聪明的小伙伴已经知道了BAB是什么意思。

```

(define Lg 13.5)

(define Lr 0.5)

(define Le 8)

(define Lj 3.5)

(define Lc 0.5)

(define Ls 12)

(define Lh 3)

(define Tg 0.05)

(define To 0.05)

(define Te 0.25)

(define Tw 0.5)

(define Td 140)

(define Tb 2)

(define Ti 3)

(define Tc 0.5)

```

这就是之前所说的对变量的定义。

```

;structure

;(sdegeo:create-rectangle

; (position (+ Lj Lc) Tc 0) (position Lj 0 0)

; "SiliconCarbide" "channel2")

;(sdegeo:create-rectangle

; (position (* -1 (+ Lj Lc)) Tc 0) (position (* -1 Lj) 0 0)

; "SiliconCarbide" "channel3")

;-drift

(sdegeo:create-rectangle

  (position (* (+ (+ Lg Lr) Le) -1.0) (+ Tg To) 0)   (position (+ (+ Lg Lr) Le) (+ (+ Tg To) Td) 0)

"SiliconCarbide" "R.Drift" )

;-Channel

;(sdegeo:create-rectangle

; (position Lj (+ Tc (+ To Tg)) 0) (position (* -1 Lj ) (+ To Tg) 0)

; "SiliconCarbide" "Channel")

;-well

(sdegeo:create-rectangle 

  (position (* (+ (+ Lg Lr) Le) -1.0) (+ Tg To) 0 )  (position (* -1.0 Lj) (+ (+ Tg To) Tw) 0 ) 

  "SiliconCarbide" "R.WellLeft" )

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ Tg To) 0 )  (position Lj (+ (+ Tg To) Tw) 0 ) 

  "SiliconCarbide" "R.WellRight" )

;-Source 

(sdegeo:create-rectangle 

  (position (* (+ (+ Lj Lc) Ls) -1) (+ Tg To) 0 )  (position (* (+ Lj Lc) -1.0) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.SourceLeft" ) 

(sdegeo:create-rectangle 

  (position (+ (+ Lj Lc) Ls) (+ Tg To) 0 )  (position (+ Lj Lc) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.SourceRight" )

;-high concentration well

(sdegeo:create-rectangle 

  (position (* (+ (+ Lg Lr) Le) -1) (+ Tg To) 0 )  (position (* (+ (+ Lj Lc) Ls) -1) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.HighConcentrationLeft" )

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ Tg To) 0 )  (position (+ (+ Lj Lc) Ls) (+ (+ Tg To) Te) 0 ) 

  "SiliconCarbide" "R.HighConcentrationRight" )

;-Buffer Layer

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ (+ Tg To) Td) 0 )  (position (* (+ (+ Lg Lr) Le) -1) (+ (+ Tg To) (+ Td Tb) ) 0 ) 

  "SiliconCarbide" "R.Buffer" )

;-Injector

(sdegeo:create-rectangle 

  (position (+ (+ Lg Lr) Le) (+ (+ Tg To) (+ Td Tb)) 0 )  (position (* (+ (+ Lg Lr) Le) -1) (+ (+ (+ Tg To) (+ Td Tb)) Ti) 0 ) 

  "SiliconCarbide" "R.Injector" )

;-Gate

;(sdegeo:create-rectangle

; (position  (+ Lj Lc)  0 0) (position (+ (+ Lj Lc) Lr) (+ Tg To) 0 )

; "SiO2" "R.SiO2Right" )

;(sdegeo:create-rectangle

; (position (* -1.0 (+ Lj Lc) ) 0 0) (position (* (+ (+ Lj Lc) Lr) -1) (+ Tg To) 0 )

; "SiO2" "R.SiO2Left" )

(sdegeo:create-rectangle

(position (+ Lj Lc) Tg 0) (position (* (+ Lj Lc) -1.0) (+ Tg To) 0 )

"SiO2" "R.SiO2Middle" )

```

这里为对不同区域的定义,注意看我之前那张的X轴和Y轴的坐标的方向。这里的主要语句为(sdegeo:create-rectangle (position x y z) (position x y z) "material" "regionname")

这里的两个点的取值的话,一定要是一个矩形的对角线。

```

;Contact

;-gate contact

(sdegeo:define-contact-set "gate"  4.0  (color:rgb 0.0 0.0 1.0 ) "##" )

(sdegeo:set-current-contact-set "gate")

(sdegeo:define-2d-contact (find-edge-id (position 0 Tg 0)) "gate" )

;-emitter contact

(sdegeo:define-contact-set "emitterleft"  4.0  (color:rgb 0.0 1.0 0.0 ) "##" )

(sdegeo:set-current-contact-set "emitterleft")

(sdegeo:define-2d-contact (find-edge-id (position (* -0.5 (+ (+ Lg Lr) (+ Le (+ Lg Lr)))) (+ Tg To) 0)) "emitterleft" )

(sdegeo:define-contact-set "emitterright"  4.0  (color:rgb 0.0 1.0 0.0 ) "##" )

(sdegeo:set-current-contact-set "emitterright")

(sdegeo:define-2d-contact (find-edge-id (position (* 0.5 (+ (+ Lg Lr) (+ Le (+ Lg Lr)))) (+ Tg To) 0)) "emitterright" )

;-collector contact

(sdegeo:define-contact-set "collector"  4.0  (color:rgb 0.0 0.0 1.0 ) "##" )

(sdegeo:set-current-contact-set "collector")

(sdegeo:define-2d-contact (find-edge-id (position 0 (+ (+ Tg To) (+ Ti (+ Td Tb))) 0)) "collector" )

```

contact的写法就比较有意思了,sentaurus将contact定义为了一条线,因此,只要找到线上的任意一个点就可以了。也就是找到这条线的ID。

```

;doping

;-Drift Doping

; - Common dopants: 

; "PhosphorusActiveConcentration" | "ArsenicActiveConcentration"

; | "BoronActiveConcentration" 

(sdedr:define-constant-profile "DriftDop" "PhosphorusActiveConcentration" 2e14)

(sdedr:define-constant-profile-region "Place.DriftDop" "DriftDop" "R.Drift")

;-channel

;(sdedr:define-constant-profile "ChannelDop" "PhosphorusActiveConcentration" 2e14)

;(sdedr:define-constant-profile-region "Place.ChannelDop" "ChannelDop" "Channel")

;-Well Doping

(sdedr:define-constant-profile "WellRightDop" "BoronActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.WellRightDop" "WellRightDop" "R.WellRight")

(sdedr:define-constant-profile "WellLeftDop" "BoronActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.WellLeftDop" "WellLeftDop" "R.WellLeft")

;-Source Doping

(sdedr:define-constant-profile "SourceLeftDop" "PhosphorusActiveConcentration" 1e20)

(sdedr:define-constant-profile-region "Place.SourceLeftDop" "SourceLeftDop" "R.SourceLeft")

(sdedr:define-constant-profile "SourceRightDop" "PhosphorusActiveConcentration" 1e20)

(sdedr:define-constant-profile-region "Place.SourceRightDop" "SourceRightDop" "R.SourceRight")

;HighConcentration Doping

(sdedr:define-constant-profile "HighConcentrationRightDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.HighConcentrationRightDop" "HighConcentrationRightDop" "R.HighConcentrationRight")

(sdedr:define-constant-profile "HighConcentrationLeftDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.HighConcentrationLeftDop" "HighConcentrationLeftDop" "R.HighConcentrationLeft")

;Buffer Doping

(sdedr:define-constant-profile "BufferDop" "PhosphorusActiveConcentration" 1e17)

(sdedr:define-constant-profile-region "Place.BufferDop" "BufferDop" "R.Buffer")

;Injector Doping

(sdedr:define-constant-profile "InjectorDop" "BoronActiveConcentration" 1e19)

(sdedr:define-constant-profile-region "Place.InjectorDop" "InjectorDop" "R.Injector")

```

这里是对区域的掺杂,这个没必要知道每条语句什么意思,直接换名字就可以了。

```

;-Mesh

(sdedr:define-refinement-window "W.Global" "Cuboid"

(position -200 -200 0)

(position 200 200 0)

)

(sdedr:define-refinement-size "R.Global"3 3 0  0.01 0.01 0)

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiliconCarbide"  0.01 1.5 "DoubleSide")

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiO2"  0.01 1.2 "DoubleSide")

(sdedr:define-refinement-placement "P.Global" "R.Global" "W.Global")

(sde:build-mesh "snmesh" "" "n@node@_msh")

```

此处是对网格的定义,

(sdedr:define-refinement-window "W.Global" "Cuboid"

(position -200 -200 0)

(position 200 200 0)

这一句是限定一个三维的范围,在这个范围内,把器件装进去就可以了。

(sdedr:define-refinement-size "R.Global"3 3 0  0.01 0.01 0)

这句表示,X和Y方向的最大值为3,最小值为0.01。

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiliconCarbide"  0.01 1.5 "DoubleSide")

(sdedr:define-refinement-function "R.Global" "MaxLenInt" "SiliconCarbide" "SiO2"  0.01 1.2 "DoubleSide")

在材料的交界处最好把网格定义的密一些,在边界处向两边以1.5倍的速率增加。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 2

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 04:10 , Processed in 0.023446 second(s), 17 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部