草庐IT

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

Jie_MSD 2023-08-04 原文

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

  本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。

基础:MOS管 通过 栅极上所加的电压 控制 漏极与源极之间电流

MOSFET ( 金属氧化物半导体场效应晶体管,metal–oxide–semiconductor field-effect transistor)

  在栅-源极间加上正向电压,即VGS>0,则栅极和硅衬底之间的SiO2绝缘层中便产生一个栅极指向P型硅衬底的电场,由于氧化物层是绝缘的,栅极所加电压VGS无法形成电流,氧化物层的两边就形成了一个电容,VGS等效是对这个电容充电,并形成一个电场,随着VGS逐渐升高,受栅极正电压的吸引,在这个电容的另一边就聚集大量的电子并形成了一个从漏极到源极的N型导电沟道,当VGS大于管子的开启电压VT(一般约为 2V)时,N沟道管开始导通,形成漏极电流ID,我们把开始形成沟道时的栅-源极电压称为开启电压,一般用VT表示。

  总结:控制栅极电压VGS的大小改变了电场的强弱,就可以达到控制漏极电流ID大小的目的,这也是MOS管用电场来控制电流的一个重要特点,所以也称之为场效应管。

晶体管的栅极材料选用多晶硅,并采用自对准工艺

  让我们跳过 SiO2 生长和蚀刻步骤,假设我们有普通的 n 阱和 p 阱区域,看下图里版图绘制需要描述的栅极Gate、源极Source、漏极Drain与实际工艺的3D视图。

  栅极下方的薄栅极氧化物充当掺杂工艺的掩膜,防止在栅极区域(沟道)下方进一步掺杂。因此,此过程使栅极相对于源极和漏极自对准。由于这一切,源极和漏极不会在栅极下方延伸。从而降低寄生电容(Cgd和Cgs)。

  关于CMOS 工艺可详见本文:CMOS PROCESS FLOW 简化版总结 CMOS制造工艺流程 IC后端版图【VLSI】

栅极的材料为什么选用多晶硅(polysilicon)?

历史:早期的非对准工艺

  第一个用金属-氧化物-硅制造MOSFET是由Mohamed Atalla和Dawon Kahng在贝尔实验室于1960 年发明。他们使用硅作为沟道材料和非自对准铝(Al)栅极。

注意看上图,栅极区域与源漏区域之间有相当大的重叠区域

  从定义和掺杂 MOS 晶体管的源漏区开始,随后是定义晶体管薄氧化区的栅极掩模。通过额外的处理步骤,然后将在薄氧化物区域上形成铝的栅极。由于栅极掩膜相对于源漏掩膜不可避免的错位,因此需要在栅极区域与源漏区域之间有相当大的重叠区域,以确保薄氧化物区域能够桥接源极和漏极,即使在最坏的情况下未对准。

造成的问题

  1. 因此在栅极与源漏区域之间有相当大的重叠区域,导致栅极到源极和栅极到漏极的寄生电容很大。对性能产生最不利影响的重叠电容是栅漏寄生电容 Cgd,它通过众所周知的米勒效应将晶体管的栅源电容增加为 Cgd 乘以增益该晶体管所属的电路。其影响是晶体管的开关速度显着降低
  2. 由于栅极触点的材料是铝,但是铝无法承受源极和漏极结的常规掺杂所需的高温,这就限制了,必须得先做源漏,才能再做栅极。步骤在后一步,所以实际操作上就会造成对不准。
  • 实际上,解决方法是:用polysilicon换掉铝,如果多晶硅用作栅极材料,它就不会熔化。然后采用离子注入的方法掺杂。像铝金属之类的熔点比较低,承受不了离子注入,所以做不了自对准,高熔点的金属就可以。
  1. 早些时候,金属栅极的工作电压在3-5伏的范围内。但是,随着晶体管的规模缩小,这确保了器件整体的工作电压也被拉低。但是早期的铝材料的栅极工作电压有很高,在这样的条件下,具有如此高阈值电压的晶体管变得无法工作。所以想要一种可以灵活一点可以改变其工作的阈值电压,也为了低阈值电压(LVT)的MOS工艺,以提高MOS集成电路的速度和降低功耗
  • 由于多晶硅是一种半导体,它的工作功能可以通过调整掺杂水平来调节。与多晶硅相比,使用金属作为栅极材料导致了高阈值电压,因为多晶硅将与体硅通道具有相同或相似的组成。

解决方法:多晶硅(polysilicon)用作 栅极(gate)、自对准工艺的解释

  栅极下方的薄栅极氧化物充当掺杂工艺的掩膜,防止在栅极区域(沟道)下方进一步掺杂。因此,此过程使栅极相对于源极和漏极自对准。由于这一切,源极和漏极不会在栅极下方延伸。从而降低寄生电容(Cgd和Cgs)。

解释一下什么是晶体管里栅极的自对准工艺。

  多晶硅栅界定了有源区的边界,这样离子注入的时候,多晶硅区域挡住了离子,没有多晶硅的区域就被注入了离子形成了有源区,相当于离子注入的时候是自动对准有源区。

Explain the terms self-aligned as it applies to the gate of this transistor.

  Self-alignedensures that the gate is naturally and precisely aligned to the edges of the source and drain.

  The gate contact of the polysilicon mask defines the boundary of the active area, so that when the ion is injected, the high temperature resistant polysilicon area blocks the ions, and the area without polysilicon is injected with ions to form the active area, which is equivalent to ion injection when the active area is automatically aligned(self-aligned).

Why make the gate first before making source and drain?

  The misalignment of the gate of a CMOS transistor would lead to the unwanted capacitance which could harm circuit. So to prevent this “Self-aligned gate process” is preferred where gate regions are formed before the formation of source and drain using ion implantation.

Reference

  1. 浅谈MOS管的工作原理
  2. 什么是MOSFET?它的类型、工作原理、电路和应用
  3. Self-Aligned Gate
  4. WIKI-Self-aligned_gate
  5. 非常好的比较:Self-Aligned Gate MOSFET
  6. Why is the polysilicon gate CMOS process known as a self-aligned process?
  7. Why is polysilicon used as a gate contact instead of metal in CMOS?

有关晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】的更多相关文章

  1. ruby - 以元编程方式定义采用关键字参数的 Ruby 方法? - 2

    Struct让我创建一个新类,它接受参数并具有一些很好的语义。但是,参数不是必需的,它们的顺序需要引用定义:Point=Struct.new(:x,:y)Point.new(111,222)#=>Point.new(111)#=>我想要类似于Struct的东西,但它使用关键字参数代替:Point=StricterStruct.new(:x,:y)Point.new(x:111,y:222)#=>Point.new(x:111)#=>ArgumentError这可能看起来像这样:moduleStricterStructdefself.new(*attributes)klass=Class

  2. ruby - 我可以动态定义一个采用 block 的 Ruby 方法吗? - 2

    我知道我可以使用define_method在类上动态定义方法,并且我使用block的元数指定此方法采用的参数。我想动态定义一个接受可选参数和block的方法。在Ruby1.9中,这很容易,因为现在允许将block传递给block。不幸的是,Ruby1.8不允许这样做,所以下面的方法将不起作用:#Ruby1.8classXdefine_method:foodo|bar,&baz|putsbarbaz.callifblock_given?endendx=X.newx.foo("foo"){puts"called!"}#=>LocalJumpError:noblockgiven用yield替

  3. ruby-on-rails - Rails 中 url_for 的反义词是什么?采用路径并生成解释路径的函数? - 2

    脑子有点炸了....我如何从relative_path获取:controller和:action的散列?这基本上与url_for相反。在下面的示例中,“some_function”是我正在寻找的神秘函数名称...我知道这很简单,只是不记得或似乎无法在文档中找到它。像这样:some_function('/posts/1/edit')=>{:controller=>'posts',:action=>'edit',:id=>'1'} 最佳答案 Rspec有一个方法'params_for',它使用ActionController的路由方法将

  4. ruby - 在采用多个可选参数的方法中,除了第一个参数之外,如何指定? - 2

    我有这样的方法:deffoo(fruit='apple',cut="sliced",topping="icecream")#somelogichereend我怎样才能调用它,我只覆盖顶部参数但对其他参数使用默认值,就像这样foo('','','hotfudge')当然这不会按预期工作,但我只想为第三个可选参数提供一个值,并让前两个保持默认值。我知道如何使用散列来做到这一点,但他们是使用上述语法的快捷方式吗? 最佳答案 从Ruby2.0开始,您可以使用关键字参数:deffoo(fruit:'apple',cut:"sliced",to

  5. ruby - 如何将 FactoryGirl 与在初始化方法中采用散列的模型一起使用? - 2

    看起来很简单,但一直无法弄清楚如何让它发挥作用。在模型.rb中:defModelattr_accessor:width,:heightdefinitializeparams@width=params[:width]@height=params[:height]...在工厂文件models.rb中:FactoryGirl.definedofactory:modeldoheight5width7endend在工厂方法中设置属性会抛出错误wrongnumberofarguments(0for1)在没有Rails的情况下使用Ruby1.9.3,使用Factory.build。FactoryGi

  6. APP连接ESP8266——采用AT指令 - 2

    1.主要实验设备及器材1.1一块ESP8266(如图1)图1 ESP8266模块1.2一个USB转TTL模块(如图2)图2 USB转TTL模块2.测试ESP8266模块 2.1连接设备        WIFI模块与USB转TTL模块进行连接,连接实物图如图3所示,硬件连线框图如图4所示。图3 连接实物图图4 硬件连接框图2.2打开串口调试助手        本次实验使用的软件是XCOMV2.3,默认波特率为115200,停止位为1,数据位为8,校验位为None(如图5)。图5 XCOMV2.32.3输入测试指令AT        测试AT启动,返回OK(如图6)图6 AT测试2.4复位指令AT

  7. ruby - 使 Date#parse 采用美国格式而不是欧盟格式 - 2

    在1.9.2p0中,Date#parse采用UE格式。如果您不相信我,请查看format.rb,第1042行。无论如何,我怎样才能让它采用美国格式,以便:>Date.parse("10/4/2010")=>Mon,04Oct2010而不是4月10日。我已经试过了:classDatedef_parse_eu(str,e)_parse_us(str,e)endend但运气不好。还有其他想法吗? 最佳答案 Date.strptime是你想要的但不幸的是它看起来不像文档有日期格式字符串。我得到以下基于格式字符串的谷歌搜索的工作:1.9.2>

  8. Ruby Hash .keys 和 .values,可以安全地采用相同的顺序吗? - 2

    基本的irb测试表明RubyHash以匹配顺序返回.keys和.values。假设是这种情况是否安全? 最佳答案 是的。根据RubyDocsforHash,"哈希按照插入相应键的顺序枚举它们的值。"因此,如果以相同的方式创建哈希,您应该始终获得相同的哈希顺序。 关于RubyHash.keys和.values,可以安全地采用相同的顺序吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

  9. javascript - 当回调采用多个参数时如何 promise 一个函数 - 2

    有什么方法可以在回调接受两个以上参数的情况下promisify一个函数?一个例子是node的fs.read,回调的三个参数是err、bytes和data。data参数没有传递给then函数,所以这个记录未定义:varfs=require('fs');varPromise=require('bluebird');varopen=Promise.promisify(fs.open);varread=Promise.promisify(fs.read);open('test.txt','r').then(function(fd){varbuffer=newBuffer(1024);read(

  10. javascript - 当在当前对象中找不到对象时,Mustache js 会采用父对象范围 - 2

    根据mustacheRFCA{{name}}taginabasictemplatewilltrytofindthenamekeyinthecurrentcontext.Ifthereisnonamekey,nothingwillberendered.因此我期望这样:vartemplate='{{#anArray}}{{aString}}{{/anArray}}';varjson={"aString":"ABC","anArray":[1,{"aString":"DEF"}]};渲染后给我:"DEF"然而,mustache.js在父级范围内查找值。这给了我"ABCDEF"上下文是否真的意

随机推荐