EMX,PROC文件与电感的简单仿真

news2024/11/17 5:31:42

How To Write EMX PROC File

编写EMX工艺文件需要2方面的信息:

  1. GDSII layer number and type 映射到 layer name

这个信息可以从layermap文件中获取;EMX的manual有相应的介绍,这个过程十分基础且简单容易,简单说就是把GDSII中数字编号的layer转换成人眼认识的字符,例子中L代表layer number,T代表type;除此之外可以用GDSII中的布尔运算符来定义layer的几何关系,例如+ (union),* (intersection), ^ (exclusive-or, or symmetric difference), - (difference), and !(complement)。

与metal相关的操作常见有fill,fill表达式用来去除小于一定面积的几何形状,有些制程会填充dummy来满足density DRC的要求,如果想去除dummy金属来run EMX,可以使用fill来操作,例如define M1=fill(L39T0,3um)就会去除L39T0小于3um by 3um的形状,参数设为0为不简化。

在定义VIA的几何形状时,使用merge表达式更有效率,比如GDSII层次L48T1上的VIA 标准pitch=0.3um,可以写define contact = merge(L48T1,0.3um)。一般工艺的design rule会要求画很多VIA的阵列,而不是一个长长的大大的VIA,但是这对EMX来说不太友好,所以EMX会选择把VIA挨得比较紧的阵列拼接起来处理,上面提到的0.3um就是距离远近的判断,如果不想拼接,可以把这个值设为0。详情可以搜索EMX manual中的merge和--via-separation. 和VIA相关的操作还有count:有些工艺的VIA阻值通过ohm per via给出,那么EMX可以通过count操作来计算VIA阻值,例如:

define co=count(merge(L48T1,0.3um))

via poly m1 10ohm/via co

这不影响EMX识别VIA的几何特征,只是VIA的计算方法有所改变。

  1. 衬底堆叠信息和各层之间的厚度/介电常数/电导率/磁损耗角正切。

可以从ICT (QRC), ITF (STARRC)或者TSMC的IRCX文件中获取工艺信息手动编写(TSMC也提供parser脚本完成IRCX到PROC的转换,但是作为主宰一切的设计人员,同样需要review脚本产生的文件,避免踩坑)。

下面简单介绍如果编写层次和导体的描述。

EMX的manual在开篇就提供了一个简单的proc file example以及对应的堆叠关系。Proc file从底层向顶层描述堆叠信息。Layer之间是无缝堆叠的,而metal镶嵌在layer中,因此正确描述metal在layer中的位置就很关键,会影响到EMX的建模准确性。

这个例子很好的解释了一个关键表达式:offset; offset表达式通常用来确定金属的起始位置/结束位置,或者说下平面和上平面的位置;offset的逻辑是这样的,以offset定义前的最后一个layer的下平面作为起始点,加上之前所有offset数值之和的偏移量作为当前位置,那么例子中的第一个offset 0.6就意味着poly的起始位置为5um厚度介质的起始位置500um处+0.6um,第二个offset 1就是500um处+0.6um+1um;

和offset类似有position表达式,和offset表征相对值不同,position后的数值表示相对于之前最后一个layer起始位置的绝对距离。例如:layer xxx, offset 1.3um, position 1um将当前位置设置到了layer xxx起始点上方1um的高度。

如果工艺厂提供了ICT文件,可以直接使用QRC/EXT下的ictviewer + ictfile来观察层次关系,效果如下图所示。从图中可以清晰看到M7终止于layer IMD7d的起始点,可以认为M7淀积完成后去除光刻胶再填充IMD7c研磨了一下,M7的上表面和IMD7c一样平整,蚀刻/淀积的bottom位置也许很难保证,而CMP却可以保证金属的上表面位置,因此可以用position来描述这里的M7:

layer name IMD7d  

position -M7_thickness  #注意负号,这里相对于IMD7d的起始位置回退了M7厚度

conductor M7_thickness M7_RSH M7 #再加上M7厚度,最终M7IMD7d的起始点齐平

如何具体描述一个metal和一个VIA?当然所有信息都来自ITF或者ICT或者IRCX文件,这3个文件只是编写格式略有不同,内容基本一致。

一个简单的metal描述如下:

conductor thickness Resistive_val metalname,

e.g.: conductor 0.08 0.4 M1表示M1金属厚度80nm,方块电阻0.4ohm。如此简单似乎无须赘述,但是只要浏览ITF文件就可以看到thickness和阻值特性并非一个固定的值,先进制程下的金属厚度和金属density以及金属宽度width息息相关,而电阻率又和thickness以及width相关,因此ITF/ICT/IRCX给出了thickness变化量的求解方法,一般采用多项式拟合,而RHO/RSH则采用查找表。如何理解这些计算方法可以参考一篇博文https://ileonsun.github.io/understanding-itf/,或者阅读starrc的manual,博文中的内容贴在附页中。

对于一个详尽的proc文件来说,需要包含ITF文件中的所有conductor信息,而EMX也支持查找表的形式。不确定EMX是否支持计算density再计算thickness再计算Rsh的方式,width/spacing的查找表是支持的,如果前者不支持就需要人员或者脚本先计算好width/spacing的查找表,再录入到proc文件中。一个包含查找表的AP金属层定义如下:

Bias的定义具体可以参考EMX manual,其描述了在不同width/space时的真实线宽。

关于VIA的描述,manual上一段话可以很好地概括:

建议遵循这个例子去描述VIA,如果版图中有不规则的VIA,比如旋转45度的VIA,而没有定义general size的阻值信息(1.2e7 S/m),那么EMX就会报错VIA不是方形而找不到必须的阻值信息。

S/m到欧姆的计算法如下:电阻率=电导率的倒数,电阻=电阻率 x VIA的高度/截面积,VIA高度可以从堆叠信息中推算。试算了一下某28nm厚金属到铝的孔,高度775nm,边长2.56um,电导率2.8e6 S/m, 则电阻=0.775/(2.8*2.56^2)=0.042,和工艺文档吻合。

利用手写的某28nm的proc文件,metal和via只有中心值而不带查找表,EMX仿真一个PLL的电感,设计标称1.56nH,结果如下:

EMX还可以仿真传输线

备注一些PCB的参数:

一般单、双面PCB铜箔(覆铜)厚度约为35um(1.4mil),另一种规格为50um和70um。多层板表层厚度一般为35um=1oz(1.4mil),内层17.5um(0.7mil)。

一.不同介质厚度及其不同组合方式
序号理论厚度(MM)理论厚度(MIL)组合方式介电常数
10.051.97106*13.9
20.072.761081*14.2
30.083.2LPP1080*14.2
40.14106*23.9
50.124.72106+10804.2
60.124.722116*14.2
70.145.51080*24.2
80.156106*33.9
90.176.72116+1064.2
100.176.71080+106*24.2
110.197.51080+21164.2
120.197.57628*14.5
130.218.271080*34.2
140.229106*2+21164.2
150.249.457628+1064.5
160.249.452116*24.2
170.2610.247628+10804.5
180.2610.241080*2+21164.2
190.2911.427628+106*24.5
200.2911.422116*2+1064.2
210.3112.27628+21164.5
220.3112.22116*2+10804.5
230.33137628+1080*24.5
240.38157628*24.5
250.4316.937628+2116*24.5
260.4316.937628*2+1064.5
270.4517.727628*2+10804.5
280.519.697628*2+21164.5
290.5722.447628*34.5

附录Understanding ITF file:

至https://ileonsun.github.io/understanding-itf/可在线阅读

$$ 省略文件头和AP,M8比较有代表性。

$$ PS:itf中用$注释

DIELECTRIC PASS2               {THICKNESS=0.668210     ER=4.2 }

DIELECTRIC PASS1               {THICKNESS=0.071590     ER=7.1 }

DIELECTRIC IMD8c             {THICKNESS=0.778950     ER=4.2 }

DIELECTRIC IMD8b             {THICKNESS=0.051500     ER=7.1 }

DIELECTRIC IMD8a_A        {THICKNESS=0.055000     ER=4.2 }

$$ 上面5行说明AP/M8之间有5层绝缘层,THICKNESS为该层厚度,ER为该层相对介电常数ε。

$$ 介电常数ε也被称为电容率,理想金属导体的ε应该是正无穷。

$$ 金属导线的cap值就是和这些绝缘层的ε有关。

CONDUCTOR M8 {THICKNESS= 0.885450

    CRT1=3.890e-03 CRT2=-1.500e-07

           $$ 这两个值用来计算temperature variation时的电阻, temperature-dependent resistance 为T的二次多项式,如下:

                $$ R= CRT2*(T-T0)^2 + CRT1*(T-T0) + R0

    SIDE_TANGENT = 0.046869

                $$ 理想情况下,金属层的截面应该是规则矩形,但是沉积过程引起的偏差,可能会导致截面为梯形(上宽下窄或上窄下宽)

                $$ SIDE_TANGENT指的就是截面斜边偏移角度的正切值(tanΘ);正值表示上宽下窄,负值表示上窄下宽

                $$ 这里,我们可以计算得出M8截面是个底角2.68°的上宽下窄的梯形。

    POLYNOMIAL_BASED_THICKNESS_VARIATION {

                $$ 这部分描述的是工艺过程中M8后端偏差,该值是基于density和width的多项式

         DENSITY_POLYNOMIAL_ORDERS  { 4, 3, 2, 1, 0 }

                                 $$ 多项式中density的指数

         WIDTH_POLYNOMIAL_ORDERS  { 4, 3, 2, 1, 0 }

                                 $$ 多项式中width的指数

         WIDTH_RANGES {0.9 10.8000}

                                 $$ width分布,这里有两个值,所以下面的多项式系数有三组,分别对应width<=0.9, 0.9<width<10.8, width>10.8的情况

         POLYNOMIAL_COEFFICIENTS  {

             0    -2.09675E+01    4.71013E+01    -3.63903E+01    1.10754E+01 

             0    2.24127E+01    -5.02114E+01    3.88210E+01    -1.28144E+01 

             0    -7.76371E+00    1.73158E+01    -1.32161E+01    5.02100E+00 

             0    9.83830E-01    -2.18583E+00    1.54960E+00    -8.13606E-01 

             0    -3.44482E-02    7.69210E-02    -3.26943E-02    5.70675E-02 

         }

         $$ 多项式的系数,因为上面density/width指数都有5种,所以多项式有5*5=25项,表格分别为每项的指数,具体为:

         $$ delta_thickness =

         $$     0 * D^4W^4  +  -2.09675E+01 * D^3W^4 +  4.71013E+01 * D^2W^4  +  -3.63903E+01 * D^1W^4 +  1.10754E+01 * D^0W^4

         $$     0 * D^4W^3  +  2.24127E+01  * D^3W^3 + -5.02114E+01 * D^2W^3  +  3.88210E+01  * D^1W^3 + -1.28144E+01 * D^0W^3

         $$     0 * D^4W^2  +  -7.76371E+00 * D^3W^2 +  1.73158E+01 * D^2W^2  +  -1.32161E+01 * D^1W^2 +  5.02100E+00 * D^0W^2

         $$     0 * D^4W^1  +  9.83830E-01  * D^3W^1 + -2.18583E+00 * D^2W^1  +  1.54960E+00  * D^1W^1 + -8.13606E-01 * D^0W^1

         $$     0 * D^4W^0  +  -3.44482E-02 * D^3W^0 +  7.69210E-02 * D^2W^0  +  -3.26943E-02 * D^1W^0 +  5.70675E-02 * D^0W^0

                                 

         POLYNOMIAL_COEFFICIENTS  {

             省略

         }

         POLYNOMIAL_COEFFICIENTS  {

             省略

         }

    }

    RHO_VS_SI_WIDTH_AND_THICKNESS {

                $$ 这部分表示体电阻率(bulk resistivity),该值是基于width和thickness查表得到

    $$ 补充: 如何通过这一项计算RSH? RSH=RHO/THICKNESS=0.023ohm/sq

         WIDTH   { 0.3240 0.3600 0.3960 0.4320 0.4680 0.5400 0.7200 1.0800 1.3500 1.8000 2.7000 3.6000 4.5000 5.4000 6.7500 8.1000 9.0000 10.8000 }

         THICKNESS   { 0.5950 0.6800 0.7650 0.8500 0.9350 1.0200 1.1050 1.1900 1.2750 }

         VALUES  {

 0.0206 0.0204 0.0202 0.0201 0.0200 0.0198 0.0196 ...

 0.0205 0.0203 0.0202 0.0201 0.0200 0.0198 0.0195 ...

 0.0205 0.0203 0.0201 0.0200 0.0199 0.0197 0.0195 ...

 0.0204 0.0202 0.0201 0.0200 0.0199 0.0197 0.0194 ...

 0.0204 0.0202 0.0201 0.0199 0.0198 0.0197 0.0194 ...

 0.0204 0.0202 0.0200 0.0199 0.0198 0.0196 0.0194 ...

 0.0204 0.0202 0.0200 0.0199 0.0198 0.0196 0.0193 ...

 0.0203 0.0202 0.0200 0.0199 0.0198 0.0196 0.0193 ...

 0.0203 0.0201 0.0200 0.0199 0.0198 0.0196 0.0193 ...

           }

       }

    ETCH_VS_WIDTH_AND_SPACING  {

                $$ 这部分表示刻蚀宽度偏差。理想情况下,刻蚀的宽度就是mask留的宽度,但实际制造中,光刻和刻蚀会受到线宽和间距影响而引起偏差

                $$ 因此,实际的线宽应该是理想线宽减去两倍的刻蚀偏差,real_width=origin-2*etch_value

                $$ etch_value为正值时,说明线宽变窄,shrink; etch_value为负值时,说明线宽变宽,expansion

                $$ 实际线上电阻应该基于考虑etch后的真实线宽

                $$ etch_value通过spacing和width查表得到

         SPACINGS { 0.3600 0.5400 0.7200 0.9000 1.0800 1.3500 1.8000 2.2500 2.7000 3.1500 3.6000 4.0500 4.5000 4.9500 5.4000 }

         WIDTHS   { 0.3600 0.5400 0.7200 0.9000 1.0800 1.3500 1.8000 2.7000 3.6000 4.5000 5.4000 6.7500 8.1000 9.0000 10.8000 }

         VALUES  {

 -0.023150 -0.022300 -0.021450 -0.020650 -0.019800 -0.018950 -0.018100 -0.017300 -0.016450 -0.015600 -0.014800 -0.013950 -0.013100 -0.012250 -0.011450

 -0.014300 -0.013100 -0.011900 -0.010700 -0.009500 -0.008350 -0.007150 -0.006000 -0.004800 -0.003600 -0.002450 -0.001200 -0.000050 0.001150 0.002300

省略

           }

       }

 WMIN=0.36 SMIN=0.36

 $$ WMIN为min width;SMIN为min spacing

 CRT_VS_SI_WIDTH {

 $$ 上面说过temperature-dependent resistance,两个系数分别为CRT1和CRT2

 $$ CRT1/CRT2基于width查一维表得到

  (0.3900, 3.6490e-03, -8.5347e-07)  (0.4572, 3.6834e-03, -8.5317e-07) 省略

 }

}

总结:

芯片制造过程中的工艺偏差,会导致金属的宽度/厚度/形状发生偏差,继而导致RC的偏差。

thickness = origin - f(density,width)

width = origin - 2*f(spacing,width)

resistivity = f(width,thickness)

R= CRT2*(T-T0)^2 + CRT1*(T-T0) + R0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…

微信小程序 java springboot招聘求职应聘简历系统

应聘系统是基于微信小程序&#xff0c;java编程语言&#xff0c;mysql数据库&#xff0c;springboot框架&#xff0c;idea工具开发&#xff0c;本系统主要分为用户&#xff0c;企业&#xff0c;管理员三个角色&#xff0c;用户注册登陆小程序&#xff0c;查看应聘分类&#xff…

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…

低代码开发平台让数据应用不再复杂

当前&#xff0c;数据已成为实现经济高质量增长的关键要素&#xff0c;最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展&#xff0c;已成为数字经济时代企业塑造核心竞争力的关键。随着人机协同程度的日益提高&#xff0c;数据不再只是用来被动支持决…

没有设置密码,每次打开RAR文件却都要输密码?

有小伙伴说遇到这种情况&#xff1a;用WinRAR软件压缩RAR文件后&#xff0c;再次打开时显示需要输入密码&#xff0c;但自己压缩文件时并没有设置密码&#xff0c;后续不管几次压缩文件都需要密码&#xff0c;这是怎么回事呢&#xff1f; 其实&#xff0c;这很可能是之前设置压…

Echarts 折线图拐点超过某值突出显示,颜色变红

第015个点击查看专栏目录Echarts在折线图处理方面可以变得非常灵活&#xff0c;比如此示例&#xff0c;超过某值后&#xff0c;将节点的大小颜色文字都突出显示出来&#xff0c;关键点是在于处理回调函数&#xff0c;个性化每个值。文章目录示例效果示例源代码&#xff08;共15…

Linux/CenterOS 7.9配置汉化gitlab服务器

1.安装gitlab的依赖项 yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python2.启动postfix&#xff0c;并设置为开机启动 systemctl start postfixsystemctl enable postfix3.防火墙和selinux的设置 setenforce 0systemctl stop fire…

怎么从网上办大流量卡呢?具体步骤小编都给你写好的!

都知道网上的流量套餐便宜&#xff0c;但是你知道怎么从网上办理流量卡吗&#xff1f;接下来&#xff0c;跟着小编一块来了解一下吧。怎么从网上办大流量卡呢&#xff1f;提交申请→运营商审核→运营商制卡→运营商发货&#xff0c;这个流程你一定要知道&#xff01;具体步骤小…

《c语言深度解剖》--一套非常经典的笔试题

学习完c语言&#xff0c;需要对所学知识进行一个检测&#xff0c;下面有一套笔试题&#xff0c; 你有四十分钟进行检测&#xff0c;每道题五分&#xff0c;严格要求自己打分。 根据作者原话&#xff1a;在没有何提示的情况下,如果能得满分,那你可以扔掉本书了,因为你的水平已经…

【项目实战】32G的电脑启动IDEA一个后端服务要2min,谁忍的了?

一、背景 本人电脑性能一般&#xff0c;但是拥有着一台高性能的VDI&#xff08;虚拟桌面基础架构&#xff09;&#xff0c;以下是具体的配置 二、问题描述 但是&#xff0c;即便是拥有这么高的性能&#xff0c;每次运行基于Dubbo微服务架构下的微服务都贼久&#xff0c;以下…

认识 CSS pointer-events 属性

pointer-events 的基本信息 pointer-events 属性用来控制一个元素能否响应鼠标操作&#xff0c;常用的关键字有 auto 和 none pointer-events: none; // 让一个元素忽略鼠标操作 pointer-events: auto; // 还原浏览器设定的默认行为 规范定义 条目状态初始值auto可用值适用所…

【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成弹框修改数据

前言 这是继我另一个帖子就是单元格点击变成输入框后添加的功能 因为考虑到有些时候修改单元格的信息可能点击后要修改很多&#xff0c;那一个输入框不好用 所以这时候就需要一个弹框可以把所有表单都显示出来修改 所以这里就专门又写了一个demo&#xff0c;用于处理这种情况 …

深兰科技机器人商丘制造基地正式投产,助力商丘经济高质量发展

2月9日&#xff0c;深兰科技机器人商丘制造基地投产仪式在商丘市梁园区北航创新园隆重举行。商丘市人大常委会副主任、梁园区委书记张兵&#xff0c;梁园区区长薛天江、河南省装备制造业协会会长张桦&#xff0c;河南省机器人行业协会会长王济昌&#xff0c;深兰科技集团董事长…

使用ChatGPT和EZDML迅速高效生成可运行的软件系统原型

ChatGPT最近很热&#xff0c;其对程序员可以说影响极大&#xff0c;是不得不跟的潮流趋势&#xff0c;因此EZDML新版也把ChatGPT的支持加上了&#xff0c;可以在几分钟内按您的意思生成一个数据模型&#xff0c;再搭载使用EZDML自带的代码模板&#xff0c;能快速生成可真正运行…

基于FPGA的 SPI通信 设计(1)

引言 低速通信目前搞过 UART串口通信、IIC通信。其实 SPI 也算是中低速&#xff08;有时也可以用作高速通信&#xff09;串行通信的范畴&#xff0c;但是一直还没真正实现过&#xff0c;所以此系列就 SPI的协议以及FPGA设计作几篇博客记录。欢迎订阅关注~ SPI 标准协议 x1模式…

【软件测试】测试外包,我们该去吗?看看资深测试工程师的见解......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 外包的含义和目的&a…

2023年家族办公室研究报告

第一章 概况 家族办公室最早起源于古罗马时期的大“Domus”&#xff08;家族主管&#xff09;以及中世纪时期的大“Domo”&#xff08;总管家&#xff09;。现代意义上的家族办公室出现于19世纪中叶&#xff0c;一些抓住产业革命机会的大亨将金融专家、法律专家和财务专家集合…

MySQL数据库14——更新和删除数据

SQL里面使用UPDATE更新数据&#xff0c;删除使用DELETE语句。 Mysql要修改一下设置&#xff0c;才能更新&#xff1a; 在左上角菜单栏里面选择偏好栏&#xff0c;取消下面这个红框的勾选 更新单个字段的数据 如果运行环境为MySQL 则使用以下语句进行备份。 CREATE TABLE stu…

VS中scanf报错+extern关键字+常量+转义字符

目录 一、解决VS中scanf报错 二、extern关键字 三、常量 &#xff08;一&#xff09;C语言中的常量分为以下以下几种 1. 字面常量 2. const 修饰的常变量 3. #define 定义的标识符常量 4. 枚举常量 四、转义字符 &#xff08;一&#xff09;\? &#xff08;二&…

轻松解决Session-Cookie 鉴权(含坑)附代码

Session-Cookie 鉴权 cookie介绍 Cookie 存储在客户端&#xff0c;可随意篡改&#xff0c;不安全有大小限制&#xff0c;最大为 4kb有数量限制&#xff0c;一般一个浏览器对于一个网站只能存不超过 20 个 Cookie&#xff0c;浏览器一般只允许存放 300个 CookieCookie 是不可跨…