文章目录
MIM 电容被称为极板电容,电容值较精确,电容值不会随偏压变化而变化。是 Mn 和Mn-1 (版图金属层数)金属构成的,利用上下层金属间的电容构成。电容值可以用上级板面积*单位容值来进行估算,上下极板接法不可互换,一般用于analog,RF 工艺。由于上下层金属在三维空间内搁着氧化层较远,因此会在上下层金属添加 MCT(TSMC的叫法是CTM)层次,并且用通孔进行连接上下层金属,以此来达到缩小极板间距,增加电容。如图1所示,上极板 MCT 为正极,下极板 Metal Top-1为负极,上极板的电位由 Metal Top 引出。由于 MCT 层的存在,Via并不能打到 Metal Top-1,实际只是用以连接Metal Top和MCT。
MOM电容指的是:如图1所示,finger 插指电容,即利用同层 metal边沿之间的C。为了省面积,可以多层metal叠加,PDK 中 metal 层数可以选择。一般只在多层金属的先进制程上使用,因为是通过多层布线的版图来实现的,但得到的电容值确定性和稳定性不如 MIM,一般可能会用在那种对电容值要求不高,只是用到相对比值之类的应用。上下极板接法可互换。

相同的单位面积容值,电容值 MIM < MOM,MIM 约是1/3 MOS电容值。
MOM 电容优势在于不需要额外 mask,MIM需要额外 mask 和工艺才能实现。
由于 MOM 电容的介质层一般采用二氧化硅,在 MOM 上施加不同的电压时,对介质层的耗尽极小,使其只有很小的电压系数。同时温度对二氧化硅以及MOM电容导电媒介的影响极小,也使其具有很好的温度系数。此外,MOM 电容的结构形式简单,仅包括金属互联层和互联层之间的氧化层,与常规的逻辑电路工艺以及模拟电路工艺相兼容,使其可以在不增加额外工艺的条件下获得具有更高电容密度的集成电容。
MIM 由平行板电容器的计算公式可知,较薄,且介电常数较高的介电层可以获得更高的单位面积电容。然而,过薄的介电层会显著增加电容极板之间的泄漏电流,高介电常数的介电层的选用成本较高,因此高介电常数的介电层材料的选择就成了工艺研发的一项重要工作。同时,两电极板之间的间距过小也会提高 MIM 电容的电压系数,降低了集成电容的线性度,这在模拟集成电路设计中会严重影响线性系统的稳定性,增加电路设计的难度。
100F/μm2的 MOM 电容的电容密度在随着频率的增加而逐渐增加,而此面积下的MIM电容的电容密度则比较稳定,且有较为缓慢的下降趋势。这说明在此面积下,MIM 电容的电容密度对频率不敏感,而MOM受频率的影响则比较大。所以我们通常说 MOM 稳定性不如 MIM 指的是频率的稳定性。如下图:


从图3.10中可以看出,MOM电容和 MIM 电容的自谐振频率会随着面积的增大而减小,并逐渐趋于稳定。同时 MOM 电容具有相对较高和稳定的自谐振频率。变化曲线如图3.10所示。
电容的品质因数在电容的自谐振点处达到最高,同时,品质因数:MOM > MIM。

越高级的工艺越倾向于使用 MOM 电容而不是 MIM 电容,为什么?从上述的几个角度可以看出,
(1)MOM 在单位面积容值上,MOM 更节省面积。
(2)工艺实现和电压系数上,MOM 电容优势在于不需要额外 mask,MIM需要额外 mask 和工艺才能实现。MIM 电压系数不好,影响线性度,而且成本高。
(3)MOM 电容具有相对较高和稳定的自谐振频率,随之带来品质因数较高。
综合以上原因,先进的工艺会更偏向使用 MOM 电容。
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
方法应返回-1,0或1分别表示“小于”、“等于”和“大于”。对于某些类型的可排序对象,通常将排序顺序基于多个属性。以下是可行的,但我认为它看起来很笨拙:classLeagueStatsattr_accessor:points,:goal_diffdefinitializepts,gd@points=pts@goal_diff=gdenddefothercompare_pts=pointsother.pointsreturncompare_ptsunlesscompare_pts==0goal_diffother.goal_diffendend尝试一下:[LeagueStats.new(
我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende
我正在尝试对某些帖子的评论使用简单的身份验证。用户使用即时ID和密码输入评论我使用“bcrypt”gem将密码存储在数据库中。在comments_controller.rb中像这样@comment=Comment.new(comment_params)bcrypted_pwd=BCrypt::Password.create(@comment.user_pwd)@comment.user_pwd=bcrypted_pwd当用户想要删除他们的评论时,我使用data-confirm-modalgem来确认数据在这部分,我必须解密用户输入的密码以与数据库中的加密密码进行比较我怎样才能解密密码,
我有一个rspec模拟对象,一个值赋给了属性。我正在努力在我的rspec测试中满足这种期望。只是想知道语法是什么?代码:defcreate@new_campaign=AdCampaign.new(params[:new_campaign])@new_campaign.creationDate="#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}"if@new_campaign.saveflash[:status]="Success"elseflash[:status]="Failed"endend测试it"shouldabletocreat