写在前面

昨天忙完开题相关事宜,今天正式开始毕设的实践部分,计划每天写一写今日的任务和进度,属于日记型的个人进度记录,并记录一些思路、困难、解决办法等,若对您有帮助,非常荣幸;若没有帮助,也请勿喷;如果对我的问题等有什么建议,畅所欲言啦!万分感谢。

一、失败的尝试

按照原计划,今天仿真明希的论文《3D 硅像素探测器的研究与制造》中二维硅像素传感器的结构,如图1所示

图1 平面硅探测器单像素剖面图

根据参数比例,估算了器件的大小,在仿真的过程首先遇到了因网格点过多导致的仿真错误

Error: Too many nodes generated.

Change mesh and try again.

中文解释:生成节点太多

解决:改变网格(调疏)重试

修改后进行仿真,由于器件太大,仿真速度很慢,tonyplot生成的器件需要加载很久才能显示,网格结构甚至不能出现。而且对于一些基本的操作还是不熟练,所以,打算先用小器件来熟悉一些工艺和器件仿真的代码,先实现小器件结构和相关特性的仿真,之后再找师兄要具体的器件参数。

二、简单PN结击穿特性仿真

  1. 器件结构

参考示例2即diodeex_02

  1. 击穿电压图像:

Nb=5e17

Nb=1e18

Nb=5e18

Nb=1e19

Nb=5e19

掺杂浓度

击穿电压

5.00E+17

5

1.00E+18

3.5

5.00E+18

2

1.00E+19

1.85

5.00E+19

1.63

和理论相符,随着掺杂浓度提高,击穿电压降低,但不符合经验公式。

三、深入理解器件仿真和工艺仿真的区别

不能混用

例如 器件仿真(go atlas)时不能使用deposit 等工艺流程

工艺仿真中遇到了一个难题

如何在器件背面进行高浓度离子注入

简单找了手册,教程,例子等,都没有找到背面离子注入的例子

四、继续学习例子

mos工艺仿真(athena)

init orientation=100 c.phos=1e14 space.mul=2

1.初始化的衬底:晶向100;掺入磷,浓度为1e14 ;全局网格间距(spacing)倍数为2(网格变稀疏)

diffus time=30 temp=1000 dryo2 press=1.00 hcl=3

2.扩散:干氧氧化生成SiO2,即栅氧层 :扩散总时间:30min;氛围的温度:1000℃;扩散的气体氛围:干氧氧化;指定气氛的分压:单位是atm,默认值是1

etch oxide thick=0.02

3.刻蚀:刻蚀掉表面0.02um的氧化层

1、3对比:

implant boron dose=8e12 energy=100 pears

4.离子注入 注入硼(P型);注入剂量:8e12;注入离子的能量100,单位KeV,注入后杂质浓度的峰值位置和注入能量有关;离子注入所选择的模型,pears指的是泊松分布。具体区别可仿真离子,如下:

离子注入:高斯分布、泊松分布、SVDP方法分布的区别

分析:感觉峰值处很接近,SVDP拖尾长

diffus temp=950 time=100 weto2 hcl=3

5.扩散:湿氧氧化,温度:950℃;时间100min;湿氧环境:生成速率快,但是致密度没有干氧好,用作隔离;氧化剂气流中HCL的百分比,用于去除Na杂质离子

diffus time=50 temp=1000 t.rate=4.000 dryo2 press=0.10 hcl=3

6.低压扩散:从结果来看是让杂质激活,均匀分布。时间=50min;温度=100℃;t.rate:温度是变温时,设定温度的变化率;扩散的气体氛围是干氧;压力=0.1atm;hcl在气流中占比3%

diffus time=220 temp=1200 nitro press=1

7.扩散:感觉也是杂质激活,在氮气氛围下。时间=220min;温度=1200℃;氮气氛围下;压力=1atm

diffus time=90 temp=1200 t.rate=-4.444 nitro press=1

8.扩散:氮气氛围变温(减少)扩散。 时间=90mn;温度=1200;温度变化率=-4.444;氮气氛围;常压。

etch oxide all

9.刻蚀:刻蚀全部的氧化层 all:指定的材料全部被刻蚀

diffus time=20 temp=1000 dryo2 press=1 hcl=3

10.扩散:干氧氧化,生成栅氧,这是真的。 扩散时间:20min;温度:1000;干氧;常压;HCL占比3%

etch oxide all

11.刻蚀 不明白为什么又要刻蚀掉

diffus time=11 temp=925 dryo2 press=1.00 hcl=3

12.扩散生长栅氧化层 时间=11min;温度=925;干氧氧化;常压;3%

extract name="gateox" thickness oxide mat.occno=1 x.val=0.05

参数提取 栅氧厚度,<QSTRING>:tonyplot中可以显示的量都可以作为该参数,gateox在tonyplot中显示了,但不好人工读取,因此可以提取出。命名为gateox,实时输出行会显示gateox=……;<value_single_line>厚度;材料存在位置是1区,应该指的是硅?;x的值在0.05附近?

结果:

gateox=100.164 angstroms (0.0100164 um) X.val=0.05

implant boron dose=9.5e11 energy=10 pearson 

13.离子注入:硼(P型) ;注入剂量:9.5e11;注入能量:10KeV;泊松分布

depo poly thick=0.2 divi=10 

14淀积多晶硅 电极材料:多晶硅;淀积厚度:0.2um;divisions 外延层纵向网格点数,默认为10

etch poly left p1.x=0.35

15.刻蚀多晶硅,区域:x=0.35以左全部的多晶硅。被刻蚀的材料:多晶硅;LEFT,RIGHT,ABOVE,BELOW:梯形刻蚀,刻蚀区域需由相应的 P1.X,P1.Y 和P2.X,P2.Y 指定;P1.X,P1.Y,P2.X 和 P2.Y:left/right/above/below 刻蚀的位置(μm),p1 参数不可省;

method fermi compress
diffuse time=3 temp=900 weto2 press=1.0

氧化多晶硅:好像必须得加这个数值分析方法,应该是多晶硅和硅的差别导致的

16、扩散 湿氧氧化。时间3min,温度:900;湿氧环境;常压

implant phosphor dose=3.0e13 energy=20 pearson

17.离子注入磷 (n型) 注入剂量:3e13;能量:20KeV;泊松分布

注入前后对比

depo oxide thick=0.120 divisions=8

18.淀积氧化层,作为隔离用 ,厚度为0.12um;分为8份。

etch oxide dry thick=0.120

19.刻蚀掉厚度为0.120um的氧化层。DRY:刻蚀表面形貌不变,整体下降 THICKNESS 大小,如果 ANGLE 和 UNDERCUT设定了,则表面形貌会受其影响;干法刻蚀的刻蚀厚度

implant arsenic dose=5.0e15 energy=50 pearson 

20.离子注入砷 。 注入剂量5e15,能量=20KeV;泊松分布

好像是可以调整阈值电压

method fermi compress
diffuse time=1 temp=900 nitro press=1.0

21.和多晶硅氧化一样,先设置这样的数值方法。扩散(应该是砷粒子的激活特有的格式)时间:1min;温度:900;氮气环境;常压。

前后对比

etch oxide left p1.x=0.2

22.刻蚀x=0.2以左的氧化层,来淀积漏区电极。

前后对比

deposit alumin thick=0.03 divi=2

23.淀积铝。厚度=0.03um,分成两份

前后对比

etch alumin right p1.x=0.18

24.刻蚀金属铝。x=0.18的右侧

对比

提取特性:

extract name="nxj" xj silicon mat.occno=1 x.val=0.1 junc.occno=1

2.提取结深:xj:结深;silicon:材料;材料编号1;给出x轴、y轴的位置;结存在位置

结果:

nxj=0.174286 um from top of first Silicon layer X.val=0.1

nxj=0.101934 um from top of first Silicon layer X.val=0.3

extract name="n++ sheet rho" sheet.res material="Silicon" mat.occno=1 x.val=0.05 region.occno=1

3.提取方块电阻。命名为n++方块电阻;硅材料,材料位置1,x=0.05;区域标号1

n++ sheet rho=29.0936 ohm/square X.val=0.05

x=0.05处,是重掺杂的n+区

extract name="ldd sheet rho" sheet.res material="Silicon" \
    mat.occno=1 x.val=0.3 region.occno=1

4.提取方块电阻。和上一条区别在于位置是x=0.3处的

ldd sheet rho=2176.81 ohm/square X.val=0.3 LDD区域 :为减弱热电子效应做的轻掺杂区

x=0.3处电阻明显大于x=0.1,从上图可看出x=0.3处掺杂浓度低

extract name="chan surf conc" surf.conc impurity="Net Doping" \
    material="Silicon" mat.occno=1 x.val=0.45

5.提取沟道表面(电子)浓度。net doping x=0.45

chan surf conc=3.7235e+016 atoms/cm3 X.val=0.45

extract start material="Polysilicon" mat.occno=1 \
    bias=0.0 bias.step=0.2 bias.stop=2 x.val=0.45
extract done name="sheet cond v bias" \
    curve(bias,1dn.conduct material="Silicon" mat.occno=1 
outfile="extract.dat"

6.这是提取一个范围的值。材料:多晶硅;偏置步长0.2,从0增加到2;x的位置为0.45;方块电导随多晶硅偏置变化。可见,达到阈值电压后,栅压越大,电导越大。导通后类似电阻

extract name="n1dvt" 1dvt ntype vb=0.0 qss=1e10 x.val=0.49

7.提取一维阈值电压?体电压为0;表面电荷QSS=1e10;x的位置在0.49um

n1dvt=0.610322 V X.val=0.49

structure mirror right

结构操作:可以保存和导入结构,也可以对结构做镜像或上下翻转。结构向右镜像(left,right,top,bottom)上下:flip.y

结构上下反转

找到办法了,可以进行背面掺杂了 得来全不费工夫

electrode name=gate x=0.5 y=0.1
electrode name=source x=0.1
electrode name=drain x=1.1
electrode name=substrate backside

电极定义:栅极:指定一个材料的一个点即可,这样该材料就整个是一个电极,(0.5,0.1)是多晶硅所在位置,因此多晶硅就是栅极;源极;漏极;背面是衬底(体电极?Vb)

注意和go atlas不同,电极定义在最后,而atlas好像是一开始就定义了

structure outfile=mos1ex01_0.str

结构操作 保存当前结构到结构文件

tonyplot  mos1ex01_0.str -set mos1ex01_0.set

显示当前结构。一直不太明白 -set .set什么意思

总之就设置显示格式,显示一张图时应该没什么重要性

还得专门复习一下tonyplot,回头写一篇Tonyplot各种”花里胡哨(bu'shi)神奇“的专栏。

刚将-set.set删除重新显示了一下

第一幅图是有net doping的详细显示,第二幅没有,或许这就是区别吧

go atlas

器件仿真

models cvt srh print 

物理模型的选取 models和impact都可以进行物理模型的选取,可以调取的模型固定

有无print好像并没有什么区别奥

书上说:相应器件类型的默认模型,由于有 print 参数,所以在 DeckBuild 输出窗口将会列出此仿真模型及其参数。

models mos print

models bipolar prin

ATLAS> models cvt srh print

Mesh

Type: non-cylindrical

Total grid points: 1613

Total triangles : 3034

Obtuse triangles : 78 (2.57086 %)


contact name=gate n.poly
#定义接触 栅极是n型多晶硅,没指出的其他的是欧姆接触,如金属铝与n+
interface qf=3e10
#表面电荷3e10
method newton
#牛顿数值方法
solve init
#计算初始值(电流密度啥的)
# Bias the drain 
solve vdrain=0.1 
#给个漏极电压Vd=0.1,计算值
# Ramp the gate
log outf=mos1ex01_1.log master
solve vgate=0 vstep=0.25 vfinal=3.0 name=gate
save outf=mos1ex01_1.str
#改变栅压,看电流变化,这是转移特性,能得到开启电压
# plot results
tonyplot  mos1ex01_1.log -set mos1ex01_1_log.set

# extract device parameters
extract name="nvt" (xintercept(maxslope(curve(abs(v."gate"),abs(i."drain")))) \
    - abs(ave(v."drain"))/2.0)
#提取阈值电压,通过计算公式计算得到
extract name="nbeta" slope(maxslope(curve(abs(v."gate"),abs(i."drain")))) \
    * (1.0/abs(ave(v."drain")))
#提取斜率
extract name="ntheta" ((max(abs(v."drain")) * $"nbeta")/max(abs(i."drain"))) \
    - (1.0 / (max(abs(v."gate")) - ($"nvt")))
#提取Ntheta 总之就mos管的重要参数,想知道的话需要复习半导体物理与器件
quit

上述三个提取结果:

报错了

ATLAS> tonyplot mos1ex01_1.log

ATLAS> #-set mos1ex01_1_log.set

ATLAS> # extract device parameters

ATLAS>

EXTRACT> init infile="mos1ex01_1.log"

Can't read file 'mos1ex01_1.log': No such file or directory

EXTRACT> extract name="nvt" (xintercept(maxslope(curve(abs(v."gate"),abs(i."drain")))) - abs(ave(v."drain"))/2.0)

initialization has not been performed

EXTRACT> extract name="nbeta" slope(maxslope(curve(abs(v."gate"),abs(i."drain")))) * (1.0/abs(ave(v."drain")))

initialization has not been performed

EXTRACT> extract name="ntheta" ((max(abs(v."drain")) * $"nbeta")/max(abs(i."drain"))) - (1.0 / (max(abs(v."gate")) - ($"nvt")))

initialization has not been performed

EXTRACT> quit

tonyplot mos1ex01_1.log -set mos1ex01_1_log.set

试一试这句话加不加set的区别

看过了,没有什么区别,一样的曲线

找到了这些设置文件,用记事本打开是这样的:

确实是没找到.log文件

还找到了工艺过程图保存的路径:

就在事例库附近

.log文件的丢失导致的报错就先记录在这里了。这个例子就先结束了

基本上每局都看懂了,但是整体上一些重复步骤的功能啥的还不明白,还有反推的过程是难点,现在一步一步正着来能看懂,但给我器件,让我来做工艺流程,可是个大难点。不过这个能力是一定要慢慢感悟和掌握的,我看许老师和师兄师姐可以利用设计的工艺流程来申请一些专利,还是很有创新空间的。何况本科做的也不好,工艺方面学到的微乎其微,还好没直接到工艺线上,就先拿这仿真软件练手喽,期待以后的流片。

写在最后

以前用word记录每日学习心得,不过还是感觉CSDN的平台更好,有写日记的感觉,还有和人交流的感觉,应该还会有栏目之类的,帮助我分类,日后看起来也方便。

也不用过于追求格式,实时云端更新,不会像word记录,之后可能不怎么翻,写在这上边,还是有仪式感的,想着可能会有人看,有人点赞,会很开心。虽然我基础很差,但熟能生巧,加油鸭!

能够记录一下每日学过的,就像以前复习理论课抄PPT一样,记下来总归不一样,虽花的时间多,但印象很深刻。而且刚开始需要记得多,之后懂得多了就会越来越少!

今天有了点小小的进展,按理说应该是第三部分的内容,但最后才有,就写到这吧。

先不请教别人,我仿真的思路就是大致按照比例,仿真简单的二维单像素PIN传感器结构,遇到的困难是,网格设置不好,而且对于工艺流程还不够熟练,所以贸然进行仿真只会白费力气,心疼我电脑!

所以这时候我想的是缩小器件,不是等比例,而是有点夸张的,就是厚度也缩小到几微米。刚好就能用上examples里边的diodeex_01,但是遇到了一个问题,他是器件仿真(go atlas),更复杂一点的多次淀积、刻蚀的区域实在难画。然后我直接想着用depo语句,结果报错,搜了好久,发现它是工艺仿真的语句,不能和器件仿真混用,同时器件仿真的doping也不能和工艺仿真混用。

然后就果断换了工艺仿真,感觉depo、etch更加灵活一些。但立马遇到了另外一个问题。这些工艺都是在器件表层处理的,那我PIN结构的衬底的N+怎么处理呢?想了半天,找了很久,连连叹气,都没找到解决办法。一度以为是rotation呢,但他其实是注入的角度(没看清楚是谁和谁的夹角)

(后来这个问题就“得来全不费工夫”的被解决啦,开心)

因为这个问题一筹莫展,就想着毕竟现在基础还不扎实,每天除了做课题,还是要学习一些知识,现在就是工艺仿真喽。

这时的思路是继续仿真工艺流程的示例,就开始找了MOS管的一个工艺仿真流程,逐行逐字逐句来看,遇到模块,就去查阅唐龙谷老师的silvaco简明学习教程,受益匪浅,比当初看懂了更多,也能看懂了,比如一些格式,还找到了用户手册,也在网盘下载的资料里,虽然是英文,随着知识知道的越多,应该会更有帮助。唐老师的书可能对一些细碎语法描述的少。

上边是一天的思路和一些碎碎念,下边说一下今天在课题推进方面的进展

目前的代码:(边改边tonyplot,所以代码不完善,后边还没动)

# (c) Silvaco Inc., 2013
go athena

line x loc=0.00 spac=0.5
line x loc=3.00 spac=0.2
line x loc=5.00 spac=0.25
line x loc=7.00 spac=0.25
line x loc=9.00 spac=0.2
line x loc=12.00 spac=0.5
#
line y loc=0.00 spac=0.1
line y loc=1.00 spac=0.1
line y loc=2.00 spac=0.2
line y loc=5.00 spac=0.4

init silicon c.phosph=5e16 orientation=100 space.mul=2 two.d
#diffuse time=10 temp=950 weto2 press=1.00 hcl.pc=3
depo oxide thick=0.56 div=5
etch oxide start x=3 y=0
etch continue x=3 y=-7
etch continue x=9 y=-7
etch done x=9 y=0.0

implant boron dose=1e14 energy=40  
#应该还差一个热退火

depo material=aluminium thick=0.7 div=5
etch material=aluminium left p1.x=2.5
etch material=aluminium right p1.x=9.5
tonyplot
#structure flip.y
tonyplot
implant phos dose=1e14 energy=40 pearson tilt=7  
save outf=diodeex01_0.str
tonyplot diodeex01_0.str -set diodeex01_0.set


model    conmob  fldmob  srh  auger  bgn 
contact    name=anode workf=4.97

solve      init

method newton

log   outfile=diodeex01.log
solve      vanode=0.05  vstep=0.05  vfinal=1  name=anode
tonyplot diodeex01.log -set diodeex01_log.set
quit


自动记录的过程图:

细节还没深究(哪些工艺做几遍,离子注入后的退火等)

总之做到了这里

上下翻转前后!!!开心,激动

反转后注入!终于等到这个结果啦,明天继续,并完善工艺流程的细节!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐