hspice si仿真package model的那些事儿Word文件下载.docx

上传人:b****5 文档编号:18741036 上传时间:2022-12-31 格式:DOCX 页数:16 大小:1.12MB
下载 相关 举报
hspice si仿真package model的那些事儿Word文件下载.docx_第1页
第1页 / 共16页
hspice si仿真package model的那些事儿Word文件下载.docx_第2页
第2页 / 共16页
hspice si仿真package model的那些事儿Word文件下载.docx_第3页
第3页 / 共16页
hspice si仿真package model的那些事儿Word文件下载.docx_第4页
第4页 / 共16页
hspice si仿真package model的那些事儿Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

hspice si仿真package model的那些事儿Word文件下载.docx

《hspice si仿真package model的那些事儿Word文件下载.docx》由会员分享,可在线阅读,更多相关《hspice si仿真package model的那些事儿Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

hspice si仿真package model的那些事儿Word文件下载.docx

先给个概要:

1.[package][pin][packagemodel]的“爱恨情仇”

2.[packagemodel]的自述

3.用hspice调用package参数的区别

那我们就从[package]说起吧,首先来一段[package]的示例,图1

再来看一张[package]的介绍,图2

从图片中我们可以看出关于[package]的作用,它是定义关于R_pkg,L_pkg,C_pkg参数的一个字段,这里定义的参数是一个笼统的数,为什么说它是笼统的呢,是因为它只有一组数就把器件所有的PIN脚都包括了,这显然是为了图省事嘛,人家双胞胎生出来还有差异呢,凭啥你说这么多PIN脚的寄生参数都一样呢,这种参数模型仿出来的结果肯定和实际情况差的有点远。

一般大的IC厂家都不会只弄这么一组数来忽悠客户的,这样也太砸自己的招牌了。

于是乎,[pin]字段闪亮登场了。

按照惯例,先来看一张[pin]字段的例子,图3

接着看一下[pin]字段的introduction,图4

上图的描述里我们可以看出[pin]字段不仅仅描述了每个PIN脚的package参数,同时也描述了管脚的编号,管脚的信号名称,管脚的模型名称,包含的内容还是蛮多的。

由于[PIN]字段里的package信号具体到了每个管脚,不像[package]一组数据打天下,所以用它仿真出来的结果还算勉勉强强接近实际,所以大家看到的ibis模型里既有[package]字段数据,又有[pin]字段数据的比较多。

刚才说到为什么[pin]字段仿真出来的结果是勉勉强强接近实际呢,这是因为[pin]字段和[package]字段一样,仅仅用一阶的RLC电路来描述整个package的特性,可能在频率不太高的情况下可以做个参考,但是到了高频后这显然是不够的,PIN与PIN之间的耦合信息,IC内部的bondwire信息等等全部没有。

有人会说用3D全波电磁场建模可以解决问题,当然能这么做是最好了,可惜往往事与愿违,package的3D模型不是每个厂家都能提供的。

而让手头仅有的资源发挥出最大的作用是我们可以做的事情,同时ibis模型也祭出了绝招,那就是[packagemodel]!

!

这次我们不给示例,先看下[packagemodel]在IBIS5.0的spec里的说明,图5

大家看到这个说明几句话就结束了,都没看明白写的啥意思是吧,咱们暂时先不急,关于[packagemodel]的内容我们第2章在来详细说明,接下来我们该说说[package][pin][packagemodel]的“爱恨情仇”了。

看下面一段话,图6

这段话是来自[package]字段里的,它的意思是当[PIN]字段里要是定义了每个pin的package参数,那么以[PIN]字段里的信息为优先考虑,要是[packagemodel]字段也被定义了,那么同样[packagemodel]字段里的信息也优先于[package]字段的信息。

也就是说[packagemodel]>

[package]

[PIN]>

文中我没找到[packagemodel]与[PIN]的优先级顺序,要是哪位童鞋找到的话可以告知一下,在我自己的理解里当然是[packagemodel]>

[PIN],可惜现在找不到证据。

不过不打紧,软件调用的时候可以自己定义的,你愿意用哪个就用哪个。

上面说了这么多,我们明显看出来[packagemodel]在3个字段当中的优势,"

这是为什么呢"

(咳咳~,必须是小沈阳腔调)。

[packagemodel]究竟是何方神圣,它又有怎样的独门绝技。

2.[packagemodel]的自述

OK,广告回来了,[packagemodel]也该登场了,先看一段示例,因为太长我只截了一小部分,图7

是不是看的有点糊涂,有点不明白,没事,接下来我们进行逐一认识。

首先看一下[packagemodel]的介绍,图8

这段话的意思是在IBIS里定义了[packagemodel]后,[packagemodel]字段内容可以出现在.ibs文件里,也可以出现在一个单独的以.PKG为后缀名的文件里。

我们再看下[packagemodel]的整体结构,见图9

这里的第一行[DefinePackageModel]是什么意思呢,上面我们刚说了[packagemodel]字段内容可以出现在两种地方,当出现在.PKG为后缀名的文件里时它靠什么来和.ibs文件来联系呢,对,就是这个[DefinePackageModel],这里的keyword一定要和.ibs里定义的[packagemodel]名称是一致的,这样仿真软件才能根据这个名称找到正确的.PKG文件.

接下来3个字段[Manufacturer],[OEM],[Description]属于描述性质的,大家完全可以忽略,对仿真没有什么影响。

底下就是[NumberOfSections]了,看下图片说明,图10

[NumberOfSections]是描述了组成寄生参数桩线的最大分段数目,这个桩线是什么意思呢,它是连接硅圆焊盘和引脚之间的线,包含了bondwire,bondwir与pin之间的连线以及pin本身,它一般是由几段线组成,每段线的参数是不一样的,可能有的童鞋对这段IC内部的引线没有什么概念,下面给大家展示一张IC内部的3D的图形,应该就能明白不少了,图11

这个3D结构模型很清楚,黄色的是硅圆焊盘,淡青色的是PIN脚,PIN脚通过封装由IC内部伸出IC的外部为我们所用。

而里面的那些蓝色的线就是我们说的packagestub(寄生参数桩线),可以很明显的看出它是有弯曲的,不是一条直线下来的。

接下来是[NumberOfPins],这个看字面意思应该也能理解了,就是器件的引脚个数,不再多说.

底下是[PinNumbers],这个看起来和刚才的[NumberOfPins]是不是很像呀,但是它们的意思就差的远了,来看下它的介绍,图12

从介绍里可以看出,当前面的[NumberOfSections]要是有定义的话,那么这里就是给[NumberOfSections]做的一个详细信心,包括每段的长度啊,电感值,电容值,电阻值,分支信息等等,这里的东西还是蛮多的,我就不再展开多说,有兴趣的童鞋可以自己查阅下IBIS的spec。

说实话我自己从来都没看到过有哪家厂家会给出[NumberOfSections]和[PinNumbers]信息,可能这段会涉及到什么保密信息?

不太清楚,不过还是贴上一段示例给大家看下,spec上的,图13

上面那个例子包含了bondwire,第1段线的信息,第2段线的信息,还有分支的信息。

OK,终于到了[ModelData]了,这个是块大头,我们慢慢往下看,这个[ModelData]里包含了[ResistanceMatrix],[InductanceMatrix],[CapacitanceMatrix],翻译过来就是电阻矩阵,电感矩阵和电容矩阵。

先给个示例,图14

眼尖的童鞋可能发现了在[ResistanceMatrix],[InductanceMatrix],[CapacitanceMatrix]后面有Banded_matrix,Sparse_matrix和Full_matrix,这三个关键字的意思是解释了电容,电阻,电感矩阵的特点,分别表示为一维矩阵,多维矩阵和全矩阵(暂且我先这么翻译吧)。

这个是什么意思呢,底下解释。

首先得弄清楚电容,电阻,电感矩阵里到底有什么信息,首先看电组的,大家都知道电组是没有耦合效果的,所以它的矩阵里面只是能一维的(Banded_matrix),也就是说一个脚对应一个数,给个示范,图15

图里面的[row]应该是器件的管脚编号,另外还有个[Bandwidth]的关键字,说实话我也不太清楚是干嘛的,说明里面只是说只有[ResistanceMatrix]时才有效,是表示矩阵的带宽,哪位童鞋知道的也请告之一声。

接着我们看电感和电容的,电感和电容是有自感(自容)和互感(互容),所以说它们的矩阵只能是Sparse_matrix或者是Full_matrix,Sparse_matrix是多维矩阵,以我的理解来看,它是指定某个管脚和其他指定管脚的相互关系(要是理解不对大家可以提出来),给段示例,图16

以[row]为1时我们看,1和1之间的关系就是1脚的自容值,底下分别是1和2脚的互容值,底下类似.

再看Full_matrix,顾名思义嘛,就是有每一个管脚的自容(自感)信息和这个管脚对其他管脚的互容(互感)信息。

所以它只需要指定每个[row]的值。

这里打个比方,比如一个器件有10个脚,我们首先指定[ROW]为1脚,则这个[row]的数据肯定有10个,1_1,1_2,1_3...1_10,等[ROW]为2脚时,那么[row]的数据只有9个了2_2,2_3...2_10,因为2_1和1_2是同一个意思,前面已经定义过了,如此类推,到最后一个脚时那只有一个数据了。

给个例子,图17

这个例子里定义的电感矩阵为Full_matrix,一共器件有8个脚,所以[row]为1时有8个数据。

等[row]为8时则为1个数据了.

至此,[packagemodel]的内容基本都说完了,是不是觉得里面的东西比[package]和[pin]多的多呢,由于[packagemodel]内东西太多,所以不截图了,随后给大家一个例子下载。

现在总结下[packagemodel]的主要内容。

1.[NumberOfSections]和[PinNumbers]里定义了packagestub的信息,但是这两个字段平时在[packagemodel]很难见到,一般厂家都不去定义。

2.[ModelData]这里主要是电阻,电容和电感的矩阵,包含了电阻信息,自容自感和互容互感信息,当然仿真的精度肯定是Banded_matrix<

Sparse_matrix<

Full_matrix,一般厂家这块的信息还是蛮全的

最后还有一个地方自己仍比较模糊,就是[Bandwidth]仍不清楚它所表达的意思,哪位知道的童鞋可以指点一下,多谢。

俗话说,学以致用,说完了[packagemodel],[package]和[pin],底下就是如何在仿真中调用它们了。

要知后事如何,请听下回分解。

3.用hspice调用package参数的区别

上面啰啰嗦嗦了一大堆关于[packagemodel],[package]和[pin]的相关知识,底下咱们就得学以致用了。

对于用来说当然是仿真软件如何调用了,首先我们先来看下[package]和[pin]字段参数调用,因为[package]和[pin]字段参数都为一阶的RLC参数,所以放在一起说。

其实在hspice里对这种管脚对应好的RLC电路描述相信大家看到的比较多了,一般先用B-element来调用需要仿真的那个管脚对应的buffer,然后再用节点描述RLC电路,图18

或者将RLC电路定义成一个子电路来调用,图19

但是我们遇到了[packagemodel]怎么办,[packagemodel]里不仅有管脚的自容自感信息,也有互容互感信息,要是还用上一种方法显然不太管用,要是能有一个方法,让软件在仿真中自动去取PIN脚的封装信息就好了,既可以不用自己去写语句描述,也不用担心粗心出错,一举两得啊,到底有没有这样的方法呢,答案是肯定的,有!

可能对hspice比较熟悉的童鞋已经猜到了,这个方法就是.IBISComponentCommand,我们先看下这个语法的组成结构吧,见图20

第一行的'

ibis_name'

指的是这个示例的名字,简单的说就是起个名字吧,没什么好说的。

第二行的file指的是指定一个.ibs文件,这个也没啥说的。

第三行的component指的是.ibs文件中你要仿真的器件名称,因为.ibs文件里可能包含好几个器件,需要你手动选择下。

第四行的mod_sel和上面意思类似,因为一个管脚可能对应不同的buffer模型,你需要指定一个你想用的模型。

第五行的package我们需要着重说下,这个地方是重点,先来张截图,图21

截图是hspice的文档对这里package的说明,意思是这里的package有4个值可选,0指的是不调用任何package参数,1指的是用[package]字段里的RLC参数,2指的是用[pin]字段里的RLC参数。

3的话是最有意思了,我们分个小段开看下

3的后面有个(default)字样,因为package这项是可选项,你要是不对它进行定义的话,那么package的值就为3,那3究竟是说明什么意思呢:

上面说了,要是[PackageModel]被定义了的话,那么3指的是用[PackageModel]字段里的RLC参数,要是[PackageModel]没有定义,那么3指的就是[pin]字段里的RLC参数。

要是[pin]里也没有RLC参数的话,那么3指的就是[package]字段里的RLC参数。

这里我们也可以印证第一节得出来的结果,那就是这三个字段的调用优先级为[packagemodel]>

[pin]>

[package]。

第六行的typ其实就是对应了.ibs里的typmaxmin三组数,不再多说。

我们大致的把.IBISComponentCommand的结构描述了一遍,看到这里有的童鞋可能会迷糊了,你这个.IBIS仅仅调用的是一个整的器件信息,没有涉及到单个管脚的内容,我到底怎么样才能对单个管脚进行操作,或者说软件是怎样把单个管脚和它对应的package参数联系起来的。

这个大家先不要着急,咱们来看一个示例,图22

看了这个示例大家可能就有点明白了,我上面的红框圈起来的就是器件的实际管脚编号。

其实只要我们知道了单个管脚buffer的节点就可以对单个管脚进行操作了,用.IBIS调用的buffer节点和B-element是几乎一样的,但是有点微小的差别,那就是节点是由ibisname_PIN_nd组成,假设我要对ibis_name为'

pcomp'

的第U1管脚的“使能”节点进行操作,那这个节点名称就为pcomp_U1_en,其他节点都类似,给大家截图节点说明图,图23

其实常用的节点是ibis_name_PIN_i,ibis_name_PIN_o,ibis_name_PIN_en,ibis_name_PIN(pin脚的最终输出或者输入),要是还有哪个童鞋仍然看不懂的话,就需要恶补下buffer节点知识了。

OK,理论的说完了,咱们应该亲自实践下看这个方法好不好使,实践出真知嘛,底下我们来进行一个示例来验证下这种方法是否能够正常调用[packagemodel],由于带[packagemodel]的.ibs模型不是很好找,附件会为大家奉献一个。

(此.ibs模型由本论坛坛友fengjie19871128提供,在此表示感谢。

首先编写网表,图24

为了避免[package]的RLC参数对调用[packagemodel]的RLC参数时有影响,我们把.ibs文件中[package]的RLC参数都改为0或者NA,图25

然后为了和网表中package=0时的结果对比更明显些,我们将电容矩阵中的U1管脚自容数据从4.755e-13改成4.755e-12,图26

OK,一切就绪,开始跑仿真。

大家是不是仿真的时候很长,呵呵,确实是,跑出来的结果我们就可以看出来为什么要跑这么久,图27

图上可以看到软件把那些没有用到的管脚都跑了一遍,一共有105个脚,工作量当然大了,这里我没也发现啥好方法能有优化的,只能手动改.ibs文件了。

所以电脑不太好的朋友就得注意了,很可能会跑卡住的。

接下来在对比下package=3和package=0的波形,图28

图上面是package=3也就是调用[packagemodel]的RLC参数的波形,下图是不调用任何波形,能够明显看出来[packagemodel]的RLC参数确实在仿真结果中起到了作用,说明我们的调用方法是可行的。

本文到此基本上就结束了,在1楼附上示例网表和相关的.ibs文件供大家参考。

参考文档:

(I/OBufferInformationSpecification)IBISver5.0spec.pdf

doc_helpofHspcie:

hspice_si.pdf,hspice_cmdref.pdf

写在最后的话:

第一次写这么多字的文章,也花了不少心思,只是想提供一种方法供大家参考,使用仿真软件并不难,主要是在仿真过程中所涉及到的背景知识自己是否真正的明白和掌握。

这几天里总觉得帖子人气不够,可能大家对这个话题不感兴趣,或者是自己水平有限,写的比较烂。

不管怎么说,还是感谢大家的关注,要是这篇拙作真的能够给大家带来一些帮助的话那就实现了它的价值了。

本来还想和大家聊聊关于频域仿真时PORT的理解和使用心得,无奈年底较忙,计划只能暂时搁浅,待以后有时间再续。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1