Introduction to EMX

EMX学习记录

Lecture Ⅰ EMX软件配置及其集成

预学习阶段:EMX和EXIR仿真教程

设置仿真精度,比如高精度ADC的设置:

image-20250323113629439

使用版本:EMX 6.1

首先找到如下的文件夹目录:

image-20250323115048584

其中包含配置文件:

image-20250323115131667

第一个配置文件emxconfig.il包含如下的重要内容:

路径配置EMX_interface_path

image-20250323115340271

多数配置采取默认配置,但以下几点要注意:

查看模型文件配置为evince

image-20250323115543190

查看诸如网格划分,电流分布的软件路径位于:

image-20250323115717592

临时文件的保存

image-20250323115837922

保存S参数的文件路径

image-20250323120045802

这样配置可以防止数据被清空导致S参数文件丢失。

黑箱参数配置为t

image-20250323120157295

如何加载EMX的这些脚本?

在virtuoso启动目录的.cdsinit文件中,.cdsinit文件的拷贝目录在:

image-20250323120504321

调用calibre的接口:这里的接口文件是calibre提供的,会调用calibre的接口。

image-20250323120631363

调用EMX的接口脚本:将上文提到的.il脚本加载进来即可。

image-20250323120739005

在.cdsinit当中,还可以定义字体,快捷键等。

打开ciw窗口以检测是否成功。当然还有license的配置。

衬底文件的位置:

image-20250323121237508

Lecture Ⅱ EMX仿真设置详解

image-20250323122033417

image-20250323122045129

首先是process-衬底文件,在process一栏按下回车,会弹出以下的窗口:

image-20250323122155189

对于衬底文件应该做响应的检查,点击X-section的scaled弹出以下的界面:

image-20250323122357874

image-20250323122408688

使用unscaled会查看到略缩图

options里面是设定温度,密钥等。

blackboxed cells作为屏蔽器件进行使用,以后会做介绍。

layout view 是查看gds文件转为emx后的层次效果,比如这个电感:

image-20250323123335329

在这个软件里面可以查看不同层次的情况(这里还没有tsmc65的衬底文件所以左边不对)

查看例子当中的巴伦的设置:

image-20250323124005141

可以查看对应的层次,端口,衬底等信息。

SUB两端有##号是因为label放的位置的原因,对仿真无影响。

放置端口,既可以放置PIN,也可以直接贴label

Edge mesh 一般设置为1,但是仿真mim电容等比较小的器件时需要相应减小,比如

为例和电容的finger大小匹配需要设置为0.1

Thickness默认参数就可以,它不同的设置与趋肤效应有关。

Via merge 是合并,会加快仿真速度,比如距离小于0.5um的过孔会被直接合并。

3D metals ,设置*号代表所有都视为3D

Signals添加label/pin,回车进行输入,其中的depth代表子电路的端口

ground代表参考平面,EMX默认添加GND端口,注意端口的顺序会影响symbol的生成

仿真频率设定仿真的频率范围

点击Advanced,弹出以下对话框:

image-20250323130842650

第一项,第二项是为过孔添加电容/电感模型(因为它们本身只包含电阻模型)若要全部添加则在框中添加*号即可。

第二项是设置边界条件,通常情况下端口要放在金属边沿处,但是如果定义了内部的端口,那么

电流直接从顶部注入而并非从边上注入。此处建议添加pin而不是label

size是internal label的尺寸,如果勾选下方的cadence pins 则是其尺寸。(建议pin)

合并端口不要勾选,否则会短接。

model一般使用RLC去拟合。

CPU的数量如果设置0代表最多使用32个CPU,-1则是使用服务器所有的CPU

memory设置:负数代表剩余值。具体见下图

image-20250323132433975

输出选择s参数,touchstone等均选默认

options可以实现多种功能,比如把网格划分导入matlab

image-20250323132547803

上述就是advanced options的大致介绍,接下来的选项:

其中的Type需要额外的关注。

image-20250323133057463

这里的Results也可以进行选择,比如mod的选择就是会去对S参数进行拟合。mc是蒙特卡洛仿真

仿真完成以后选择create model查看拟合的模型,create view生成symbol等

最下方的clean up会将临时文件清空

image-20250323134348755

image-20250323134335033

选择正确的端口后进行仿真,内建参数的结果如上图所示

生成模型,create model,拟合完成后选择new plot:

image-20250323134641241

可以看出拟合的效果是比较好的。

生成symbol , schemetic,spara均可:

image-20250323134844773

image-20250323134908599

image-20250323135156983

nport的S参数文件指向存储的spara数据文件。

Lecture Ⅲ 衬底文件的撰写--参考文件的选取

语法规则见用户手册。

需要用到的PDK提供的参数:

以SMIC013为例:首先找到工艺库对应的docs,打开SP文件(也即最右边的那个)

image-20250323135637072

找到目录当中的interconnections Models,对应了这里的第105页。

金属层信息:

image-20250323140056345

介质层的信息:

image-20250323140129941

整体展示:

image-20250323140152924

注意通孔的类型,比如CT通孔可能连接Poly也可能直接连接到NWELL。

查看方阻参数:

image-20250323140625861

对于射频电路等特殊电路,加厚层金属的信息:(在RM文件而并非SP文件)

image-20250323140937195

对应的电阻模型参数:

image-20250323141048573

对于寄生参数的文件:需要使用.ict文件,其目录见下:

image-20250323141224596

里面包含了金属层,介质层,过孔的信息:

image-20250323141417304

image-20250323141454427

另外需要注意的就是这个.itf文件了,它是按照晶圆的结构撰写的:(层次化)

image-20250323141552308

在calibre当中也有相应的文件:

image-20250323141757451

image-20250323141748562

与.ict文件区别在于,这里的顺序是反相的,从介质层开始定义。

有一些工艺没有.mipt文件,它的这个文件放在寄生参数的rule里面,比如有些TSMC的信息会放在最顶上被注释掉

65nm的信息如下:

image-20250323142514244

image-20250323142443364

总体而言,首先定义缩放率,单位,再定义各个层

image-20250323151425425

详细介绍:

层次定义

image-20250323151533457

如何找到层次定义?找到layermap文件(层次定义文件)定义了层号以及用途

image-20250323151702210

fill()函数与metal dummy有关,比如fillsize为1的时候,进行EMX仿真时会将其忽略,如果不想忽略任何版图上的东西,将fillsize设置为0即可。当然,也可以为每一层设定过滤参数。

image-20250323152129853

比如ALPA的类型是0,层号是83,则其是(Layer:83 Type:0)

对于金属层,比如M6层定义为drawing和dummy层

merge()函数,比如:

image-20250323152548262

代表将小于4um的过孔合并为一个层加快仿真速度。

由于CT(接触)有可能与AA层(有源区)接触,也有可能与GT层(poly)接触,因而要特殊处理

区分这两种过孔的技巧是,使用*(与运算)定义有源过孔dfCont以及多晶硅过孔polyCont

定义介质

image-20250323152948601

定义衬底,定义其厚度,介电常数,磁导率,电阻率(及其单位),这里是根据.mipt文件定义的

定义电阻率时可以定义温度特性

这里要特别注意layer层和conductor层的顺序,conductor层的与其上面定义的介质,两者的底面是处于同一起点的!

image-20250323153950536

如图,GT层的底面应当与ILD1a的底面处于同一高度!

定义空气层以及过孔层

image-20250323154315545

过孔的定义必须与前文的层次定义相同!

上述没有考虑到工艺的偏差参数(比如长度的偏差)

先进工艺的对比

事实上,对于先进工艺而言,proc文件需要更细致的定义,这里以smic40nm为例:

这里的.ict这是对金属m1的定义:这里定义了温度系数,电阻率,方阻(电阻率/厚度),可以看到,不同的宽度和间距

对应的电阻率是不同的,相应的方阻也不同,这里还定义了扩展偏差变量

image-20250323155055004

对应的.proc文件当中:

image-20250323155523582

这里的结果是方阻(最后除以了金属的厚度!)每一行是固定了宽度,改变了金属间距所得到的电阻率。

并且定义了边沿的偏差带来的影响:

image-20250323155727574

定义金属的各项参数时加入:

image-20250323155851853

比如像m5层,使用table变量达到电阻率的计算:(M5_res为table变量)

image-20250323160006825

对于过孔的定义,可以写成这种中括号的形式:

image-20250323160145999

这里定义了过孔的尺寸,过孔的电阻值以及过孔材料的电阻率

查看正确与否使用EMX当中的Scale即可。

特殊需求的解决

比如倒装工艺的解决方案:

image-20250323160455990

image-20250323160510090

这里要注意顺序不能错,要考虑倒装后是否层次顺序正确。

image-20250323160823936

这里的空气层要定义在底部。

image-20250323160903595

image-20250323160917145

Lecture Ⅴ 版图仿真以及黑盒的使用

基本仿真步骤

以这个圆形电感为例:

image-20250323162941900

这里为了防止AA,GT,M1的涡流,某些地方需要断开

其参数如下:

image-20250323163027683

首先定义信号端口:

image-20250323164524100

image-20250323164547989

再将衬底连起来,在上下添加pin:

image-20250323164708392

进行仿真设置,这里需要添加电感电容的特性,但是这样仿真量较大。

image-20250323165014559

最终得到电感的结果:

image-20250323165458668

可见感值结果相近,而Q值相差较大,从已有的工程经验来看,这个结果是可信的。

再进行模型的拟合,可见拟合效果较好。

image-20250323165844510

拟合出来的模型:

image-20250323165943185

image-20250323170055353

接下来,使用得到的spara进行仿真

首先建立电感的testbench,在其中新建config文件,并选用spectre作为模板::

image-20250323170818549

将schemetic替换为nport并保存:

image-20250323171109337

打开config文件,选择原理图查看,读取子电路发现确实是nport的模型。

image-20250323171217744

解决LVS检查不通过的方法--黑盒屏蔽

屏蔽方法可以将有源电路和无源部分分开,方便对无源电路进行仿真。

image-20250323171906515

进行仿真,loadstate的时候不要勾选model setup!

image-20250323172152204

得到AC仿真的结果(单端输入,差分输出):

image-20250323172232210

得到sp仿真的结果:

image-20250323172357335

匹配情况(Z-Smith)

image-20250323172428915

现在讨论不让器件生成网表以至于过不了LVS的情况:

首先选中巴伦,选中Edit-cellview将参数增加,注意nlAction不要写错了!

image-20250323211542305

根据layout短接其它的端口,但是正端和负端不能直接短接,方法是在两个输入之间接一个电阻

image-20250414202049230

设置黑盒子将LNA的版图全部屏蔽掉:

image-20250323212558464

image-20250323212459822

Lab:使用RFIC_GPT+EMX对电感进行仿真

使用PDK进行电感的仿真(28GHz)

从PDK中提取两个电感,其中一个为多圈电感,电感值在2nH左右,另一个为单圈电感,电感量在200ph左右,将其版图化简,导入电磁场仿真工具中进行仿真,将仿真得到的S参数与PDK的仿真结果进行对比,分别在一张图上画出电感量和Q值随频率得对比曲线。

培训报告中提交HFSS模型文件和仿真结果对比图。

首先使用工艺库当中的电感进行仿真,其参数如下图所示:

image-20250414150927361

如上图有:,

使用EMX仿真如下图所示:

image-20250414150904488

可见其仿真结果为: 与工艺库当中的结果大致相同。

下面对比了几款仿真软件对于同一个电感的仿真:首先使用RFIC_GPT和HFSS进行仿真:

image-20250323213618660

image-20250414152542644

image-20250323235922107

Cadence进行sp仿真如下:image-20250324000132913

image-20250324000115118

再使用EMX进行仿真:

image-20250414152157611