WG中PCB的前仿真的步骤:DxDesigner画原理图——〉Expedition布局——〉CES指定IBIS模型——〉CES指定网络的拓扑结构——〉ICX Pro前仿真。我们来看图说话。
对于下面这样一个已经完成布局的PCB,从Expedition的工具栏中选择CES
在CES的窗口中见的选项卡中,选择Parts
例如对SDRAM的走线进行前仿真,就需要制定CPU、SDRAM以及其他连接在数据总线上的器件的IBIS模型。相应的模型可以在器件的官方网站上下载到。在Parts里选中要指定模型的器件。
在弹出的窗口中按照步骤1、2、3(后续图片中的1、2、3、4亦表示步骤)选择IBIS模型文件
选好后就OK,重复以上步骤直到把要进行仿真的信号所连接的所有器件的IBIS模型都选上。有的IBIS文件中含有多个器件的模型,选择你需要的
在SDRAM信号设计的时候往往会使用电阻对信号进行阻抗匹配,这时候SDRAM布线的拓扑结构就会变成下面这样
这个电阻也必须包含到前仿真中去。但是在实际设计中,往往有很多需要匹配的信号,所以一般是使用排阻的。但是默认情况下,CES是不认识排阻的,这需要设置。选择Setup菜单下的Settings…
在弹出的窗口中选择Discrete Component Prefixes选项页,将你所用的排阻前缀输入(如RM),然后确认
随后你就会发现CES把你的排阻认为是串行器件了。顺便提下,如上面这张图所示,CES会把这些已经定义前缀的器件识别为串行器件。识别为串行
器件有好处也有坏处,好处是对于真正用于阻抗匹配等目的的器件,前后的网络会被归为一个网络进行识别(CES在原来的网络名后面加上“^^^”符号,将两
个网络合并);坏处是很多功能性质的电阻,如运放中设定放大比例的电阻两端的网络也会被归为一个网络识别,这时候就需要把下面这张图中所示的钩号去掉。
接下来,点击Parts边上的Nets选项卡,选择SDRAM的信号
随后配置网络拓扑结构。对于SDRAM的控制线来说,它们不连接在SDRAM之外的其他上,因此其拓扑结构一般都是之前描述的这种:
对于一般的地址线而言,往往需要连接除SDRAM芯片之外的其他器件,如NOR Flash,其拓扑结构可能是这样的
我建议将NOR Flash连接在一个SDRAM的之后,因为如果再搞短桩Y型分支,那么将会有3组分支线,布线就很困难了。当然,连接在哪里要根据前仿真的结果来调整,我提供的这种连接对于某些器件应该会有问题。
下面要把SDRAM的信号定义成上面这2种拓扑结构中的一种,在Nets列表里找到Topology这一列,点击下拉列表。对于SDRAM时钟信号SDCK这种串联阻抗匹配电阻的拓扑结构而言,选择Complex。
随后点击工具栏上的Netline
order按钮(这个按钮左边的几个按钮可以定义其他不同的拓扑结构,与上图列表中对应,依次是MST、Chained、T、Star、HTree、
Custom,这些不同拓扑结构的含义可以Google下或者参看Mentor WG CES的手册)
出来这样一个对话框
之前已经提到SDRAM的地址和控制信号应当是短桩Y型分支,如果还有别的器件就连接在SDRAM之后。先说明下,因为定义了排阻为串行期间,
所以CES自动的将CPU到排阻的连接识别出来并列在管脚对列表里了;管脚列表里蓝色背景的部分是已经在管脚对列表中存在的管脚。随后就需要定义Y型分
支,点击Y型分支拓扑结构图标,再依次点击信号源管脚和两个负载管脚,如下图所示
在管脚列表中就会出现如下显示
这说明已经定义了一个Y型分支。定义之后的Y型分支可以删除和修改,具体细节请看CES手册。随后点击对话框下面的那个复选
框,“Automatically create pin pairs from
from-tos”,确定,CES的Nets列表中,刚才定义的Net下就出现如下图所示的内容
那些L:VP_T_1_1_1181, L:D19-38之类的东西就是产生的拓扑结构描述。
刚才已经提到SDRAM的地址线因为还需连接其他器件,拓扑结构的设置还需要有一步添加自定义管脚对。以地址线A2举例,同样选择其为Complex结构
然后选择工具栏上的Netline order,在出现的对话框中将CPU和SDRAM之间的连接配置为Y型分支,如下图所示
随后配置和NOR Flash芯片的连接,先点击“From pin / pin set”下面的文本框,然后依次点击SDRAM和NOR Flash的管脚,再点击右边的下箭头,如下图
于是一个自定义的Pin Pair就出现了,同时管脚列表中对应的管脚背景色也会变蓝,显示这个管脚被指派过了。
需要注意的是,NOR Flash连接在那个SDRAM器件的管脚上是没有要求的,但是为了走线方便,还是建议连接在理NOR Flash相应管脚较近的SDRAM器件上。
接下来同样选中“Automatically create pin pairs from from-tos”复选框,确定,A2的拓扑结构就配置好了。
这里还需要提一个概念——Virtual Pin(虚拟管脚),这是WG为了方便对拓扑结构的管理而设定的一种虚拟的控制点。还是用图来说明,对于SDRAM的连接拓扑结构
WG把图中红圈标示的那个分支点分立出来,当作一个可以控制的元素Virtual
Pin,这个元素可以移动、定位;一个Y型分支的拓扑结构就拆分成了各个元件到这个Virtual
Pin连接的结构。刚才我们看到的“VP_T_1_1_1181”就是Virtual Pin,它在PCB设计的时候是这样显示的:
Protel / DXP、PADS是没有这种功能的,PADS只能通过Matchlength Pin
Pair来实现类似的功能,但对于SDRAM不太适用。不仅WG,强大Alergo也有这个功能。说了这么多,Virtual
Pin的作用其实就一句话,用来做Y型分支的两个分支等长——因为没有Virtual Pin,去哪里设置等长规则,怎么检验等长的情况?
接下来设定PCB层叠,不指定PCB的层叠,前仿真中的阻抗参数的计算是根本没有意义的。选择CES工具栏上的Stackup Editor
出现下面的窗口,这个东西比较傻瓜式了,我就不做保姆式指导了。需要指定的东西有,PCB每一层的铜厚,相临两层之间的绝缘层厚度和介电常数,
参考面(电源层、地层)是哪几层等。PCB的厚度和介电常数等参数需要向PCB厂家索取,参考面的位置可以Google下,看看大多数人用的层叠方法。
有了以上的工作,前仿真就可以进行了,右键选择需要仿真的网络,例如SDCK,在弹出菜单中选择“Display Net in”——〉“ICX Pro Explorer”
出现以下窗口
这就是我们进行前仿的软件了。可以看到,在中间的黑色背景区域是器件管脚、传输路径以及其他器件(如阻抗匹配电阻)的连接拓扑结构——这也就是
我们刚才设定的那些东西。图中绿色那些短棒就是传输路径,双击它可以修改长度;这个长度应由PCB布局决定。在CES中选择菜单“Data”——〉
“Actuals”——〉“Upadate All”命令将PCB的数据导入CES之后
在Nets的列表里可以看到Manhattan Length这一项的数值出现了
这个数值的含义是布局完成之后目前PCB上这一网络所有飞线(用直线连接管脚的线)长度之和。一般来说把这个数值乘以1~2之间的一个数,就是
最后的布线长度。你可以把这些数值输入到ICX Pro
Explorer中去。对于含有拓扑结构的网络,应当把拓扑结构的每一段都输入到相应的传输线上去。你可以在PCB上试着移动Y型分支点即Virtual
Pin的位置,然后更新Manhattan Length,看看是先分支的拓扑结构前仿的效果好,还是后分支的。
ICX Pro Explorer也是一个比较傻瓜式的软件,用一用很快就会了,我就不介绍了,给大家看个仿真结果
这是AT91SAM9263和K4S561632K-UC75组成的存储器系统,阻抗匹配电阻为22欧,SDRAM时钟在133MHz下的仿真波形。
这是一个非常麻烦的部分,我研究了很久,转载请注明来自EE小站。在介绍规则设置之前,先介绍下SDRAM线长匹配的原则。
一般来说,SDRAM的地址线是这样的拓扑结构
SDRAM的控制线是这样的拓扑结构
不同地址线之间,需要保证单路分支的长度匹配,即AB+BC或AB+BD相等;同时,需要保证同一地址线的两个分支相等,即BC=BD。不同控
制线之间,需要保证单路分支的长度匹配,即ab+cd+de或ab+cd+df相等;同时,需要保证同一控制线的两个分支相等,即de=df。在控制线和
地址线之间,同样需要保证单路分的支长度匹配,即AB+BC=ab+cd+de或AB+BC=ab+cd+df或AB+BD=ab+cd+de或
AB+BD=ab+cd+df。
而软件统计的结果,地址线的长度为AB+BC+BD+D’E;控制线的长度为ab+cd+de+df。统计的内容都不一样,怎么做匹配
呢?有2种方法,使用公式、使用Pin
pair。使用公式的好处是无论有没有阻抗匹配电阻,都可以很清晰的看到线长匹配的误差,这对手工布线非常有帮助,但是过程极其繁琐。使用Pin
Pair的好处是很简单,不用输入很长的公式,但是对于有阻抗匹配电阻的信号,不能看到匹配误差,需要自己计算。
先说公式方法
记住,软件统计的是所有线段长度之和;我们需要控制的仅仅是所有地址线的AB+BC、所有控制线的ab+cd+de这些长度都相等
(BC=BD、de=df这两个条件在设定Y型分支拓扑结构之后,布线器会自动地做到,于是将上面的那些表达式简化成等价的AB+BC和ab+cd+de
这两个)。因为SDRAM的时钟是最重要的信号,选择时钟线的长度作为参考,时钟线的单路分支长度为ab[时钟]+cd[时钟]+de[时钟](Blog
没有办法表示下标,用[]来修饰)。则对于其他信号,如地址线,理论上约束的内容应该是AB[地址]+BC[地址] =
ab[时钟]+cd[时钟]+de[时钟]。软件统计的是所有线段长度之和,对于某一地址线,其长度应该是AB[地址]+BC[地址]+BD[地
址]+D’E[地址]。因此,公式约束的内容就变为 AB[地址]+BC[地址] = ab[时钟]+cd[时钟]+de[时钟]+
BD[地址]+D’E[地址]。
很复杂,来看个例子,对于一个含有匹配电阻的时钟信号,EBI0_SDCK,其拓扑结构如下所示
其中VP_T_3_5_1336为Virtual Pin。它的单路分支长度按WG
CES的语法,应写成\D1\-\C5\@\RM2\-\7\ +
\RM2\-\2\@\VP_T_3_5_1336\-\VP_T_3_5_1336\ +
\RM2\-\2\@\D19\-\38\,当然最后一项是\RM2\-\2\@\D20\-\38\也可以。
确定了时钟的长度,接下来用它来约束其他地址线、控制线的长度。以EBI0_A3为例,其拓扑结构如下所示
由于软件统计EBI0_A3的长度为上面4个Pin
Pair线段长度之和,因此在EBI0_A3单段分支的基础上(这段长度和EBI0_SDCK的单段分支长度相等),需要加上\D19\-\24\@
\D21\-\25\ +
\D1\-\C9\@\D20\-\24\这段长度,当然第二项是\D1\-\C9\@\D19\-\24\也可以。所以限制EBI0_A3的长度为,
\D1\-\C5\@\RM2\-\7\ + \RM2\-\2\@\VP_T_3_5_1336\-\VP_T_3_5_1336\ +
\RM2\-\2\@\D19\-\38\ + \D19\-\24\@\D21\- \25\ + \D1\-\C9\@\D20\-\24+/-200th,当然倒数第二项是\D1\-\C9\@\D19\-\24\也可以,最后的+/-200th是控制的误差长度。然后把这个公式填到
EBI0_A3后面的Formula中去。
对于有阻抗匹配电阻的信号,如nEBI0_CAS
由于软件统计nEBI0_CAS的长度为上面4个Pin
Pair线段长度之和,因此在nEBI0_CAS^^^单段分支的基础上(这段长度和EBI0_SDCK的单段分支长度相等),需要加上\RM1\-\3
\@\D20\-\17\或\RM1\-\3\@\D19\-\17\的长度。所以限制nEBI0_CAS的长度为,\D1\-\C5\@\RM2\-
\7\ + \RM2\-\2\@\VP_T_3_5_1336\-\VP_T_3_5_1336\ + \RM2\-\2\@\D19\-\38+ \RM1\-\3\@\D19\-\17+/-200th,当然倒数第二项是\RM1\-\3\@\D20\-\17\也可以,最后的+/-200th是控制的误差长度。
按照上面的步骤把所有SDRAM信号线都操作一遍,是不是会崩溃?
下面介绍用Pin Pair的方法
给地址线、控制线建立这样的Pin Pair,例子如下:
EBI0_SDCK^^^信号
EBI0_A3信号
这和之前的Pin Pair不同,这些Pin
Pair是手工生成的,也就是说,在制定这些信号的拓扑结构的时候,不选择“Automatically create pin pairs from
from-tos”复选框。然后,选中这一信号,通过菜单Edit>Pin Pair>Add Pin
Pairs来手工添加,如下面两张图片所示。
这样,只需要关心信号最开始是从哪个芯片的哪个管脚出来的,最后到哪个芯片的哪个管脚里去,有多少个单路分支,添加多少个Pin
Pair,中间的阻抗匹配电阻、Virtual Pin全部可以忽略;最后再在Pin Pair的Match列用同一名字约束就可以了,如下所示
控制信号也一样
需要说明的是,上面这张图头三个Pin Pair是用来方便手工布线的。因为Pin
Pair如果穿越了器件(对于信号路径穿越阻抗匹配电阻这种情况而言),Pin
Pair的长度在CES里是显示不出来的——至少目前我还没有找到什么办法可以让它显示出来——这对手工布线来说非常不方便;但是自动布线却没有任何问
题,Expedition可以正常的完成Tune(自动长度调整)操作。
也许你有些疑惑,既然Pin
Pair这么定义了,怎样才能看到自定义拓扑结构呢?把菜单中Filters>Levels>FromTos选项钩起来,就可以看见了,如下
图所示。需要说明的是,Pin Pair仅仅是一种虚拟的连接关系,拓扑结构是用FromTos这种物理连接关系确定的。