cadence PCB布线仿真资料.docx
《cadence PCB布线仿真资料.docx》由会员分享,可在线阅读,更多相关《cadence PCB布线仿真资料.docx(25页珍藏版)》请在冰豆网上搜索。
cadencePCB布线仿真资料
Cadence_SPB16.2入门教程——PCB布线
看了之后对于一个需要画DDR2的新手实在帮助良多,可能更多的人需要,所以分享在这里
PCB布线
4.1PCB层叠结构
层叠结构是一个非常重要的问题,不可忽视,一般选择层叠结构考虑以下原则:
·元件面下面(第二层)为地平面,提供器件屏蔽层以及为顶层布线提供参考平面;
·所有信号层尽可能与地平面相邻;
·尽量避免两信号层直接相邻;
·主电源尽可能与其对应地相邻;
·兼顾层压结构对称。
对于母板的层排布,现有母板很难控制平行长距离布线,对于板级工作频率在 50MHZ以上的(50MHZ以下的情况可参照,适当放宽),建议排布原则:
·元件面、焊接面为完整的地平面(屏蔽);
·无相邻平行布线层;
·所有信号层尽可能与地平面相邻;
·关键信号与地层相邻,不跨分割区。
基于以上原则,对于一个四层板,优先考虑的层叠结构应该是:
·S←信号
·G←地平面
·P←电源层
·S←信号
对于一个六层板,最优的层叠结构是:
·S1←信号
·G1←地平面
·S2←信号
·G2←地平面
·P←电源层
·S4←信号
对于一个八层板,有两种方案:
方案 1:
方案2:
·S1←信号 S1←信号
·G1←地平面 G1←地平面
·S2←信号 S2←信号
·G2←地平面 P1←电源层
·P←电源层 G2←地平面
·S3←信号 S3←信号
·G3←地平面 P2←电源层
·S4←信号 S4←信号
方案2主要是比方案1多了一个电源层,在电源比较多的情况下可以选择方案2。
对于更多层的结构也是按照上面的原则来定,可以参考其它的资料。
下面以SMDK6410核心板(设计为八层板)来设置层叠结构,包括规则设置,PCB布线等。
打开程序->CadenceSPB16.2->PCBEditor,然后打开在第3 章布局好的PCB文件。
点击工具栏的 图标按钮,或者选择Setup->Cross-section 菜单,如图4.1所示。
图4.1 层叠结构设置
弹出LayoutCrossSection对话框,如图4.2所示。
图4.2LayoutCrossSection对话框
由于电路板是用手工建立的,所以在CorssSection中只有Top层和BOTTOM层,需要手工来增加6个层,并调整层叠结构。
在SubclassName一栏前面的序号上点击鼠标右键,弹出一个菜单,如图4.3所示。
图4.3 增加层
可以选择AddLayerAbove在该层上方增加一层,可以选择AddLayerBelow在该层下方增加一层,还可以选择RemoveLayer 删除该层。
在走线层之间还需要有一层隔离层。
最后设置好的八层板的层叠结构如图4.4所示,采用的是方案2的层叠结构。
图4.4 设置好的八层板层叠结构
SubclassName一列是该层的名称,可以按照自己的需要来填写。
Type 列选择该层的类型,有三种:
·CONDUCTOR:
走线层;
·PLANE:
平面层,如GND平面;
·DIELECTRIC:
介电层,即隔离层。
Material列设置的是该层的材料,一般根据实际PCB板厂提供的资料来设置。
Thickness设置的是该层的厚度,如果是走线层和平面层则是铜皮的厚度。
Conductivtl设置的是铜皮的电阻率。
DielectricConstant列设置介电层的介电常,与Thickness列的参数一起都是计算阻抗的必要参数。
LossTangent列设置介电层的正切损耗。
NegtiveArtwork设置的是该层是否以负片形式输出底片,表示输出负片,表示输出正片。
在这个板中,POWER1与GND2采用负片形式。
设置好后点击OK 关闭对话框。
4.2 布线规则设置
布线约束规则是PCB布线中很重要的一步工作,规则设置和好坏直接影响到PCB信号的好坏和工作效率。
布线规则主要设置的是差分线,线宽线距,等长匹配,过孔等等。
下面一步一步设置这些规则。
约束规则在约束管理器中设置。
选择菜单 Setup->Constraints->ConstraintManager。
或者直接点击工具栏上的图标按钮打开约束管理器,如图4.5所示。
图4.5 打开约束管理器
打开约束管理器后的界面如图4.6所示。
图4.6 约束管理器
可以看到界面包含了两个工作区,左边是工作簿/工作表选择区,用来选择进行约束的类型;右边是工作表区,是对应左边类型的具体约束设置值。
在左边共有6个工作表,而一般只需要设置前面四个工作表的约束就可以了,分别是Eelctrical、Physical、Spacing、SameNetSpacing。
分别对应的是电气规则的约束、物理规则的约束,如线宽、间距规则的约束(不同网络)、同一个网络之间的间距规则。
为了能更好的使用约束管理器,先做一点基本概念的解释。
4.2.1 对象(object)
对象是约束所要设置的目标,是具有优先级的,顶层指定的约束会被底层的对象继承,底层对象指定的同样约束优先级高于从顶层继承下来的约束,一般尽量在顶层指定约束。
最顶层的对象是系统system,最底层的对象是管脚对pin–pair。
对象的层次关系依次为:
系统(system)->设计(Designe)-> 总线(bus)->网络类(netclass)->总线(bus)-> 差分对(differentialpair)-> 扩展网络/网络(Xnet)-> 相对或匹配群组(Matchgroup)-> 管脚对(Pinpair)
(1)系统(system)
系统是最高等级的对象,除了包括设计(比如单板)之外,还包括连接器这些设计的扩展网络、互连电缆和连接器。
(2)设计(Designe)
设计代表一个单板或者系统中的一块单板,在多板结构中,每块板都是系统的一个单独的设计。
(3)网络类集合(netclass)
网络类集合可以是总线、网络扩展网络、差分对及群组匹配的集合。
(4)总线(bus)
总线是管脚对、网络或者扩展网络的集合。
在总线上获取的约束被所有总线的成员继承。
在与原理图相关联时,约束管理器不能创建总线,而且总线是设计层次的,并不属于系统层次。
(5)差分对(differentialpair)
用户可以对具有差分性质的两对网络建立差分对。
(6)扩展网络/网络(Xnet)
网络就是从一个管脚到其他管脚的电子连接。
如果网络的中间串接了被动的、分立的器件比如电阻、电容或者电感,那么跨接在这些器件的两个网络可以看成一个扩展网络。
如图4.7所示,网络net1、net2 和net3组成一个扩展网络。
图4.7Xnet
(7)相对或匹配群组(Matchgroup)
匹配群组也是网络、扩展网络和管脚对的集合,但集合内的每个成员都要匹配或者相对于匹配于组内的一个明确目标,且只能在【relativepropagationdelay】工作表定义匹配群组,共涉及了三个参数,目标,相对值和偏差。
如果相对值没有定义,匹配群组内的所有成员将是绝对的,并允许一定的偏差。
如果定义了相对值,那么组内的所有成员将相对于明确的目标网络。
·目标:
组内其他管脚对都要参考的管脚对就是目标,目标可以是默认的也可以是明确指定的管教对,其他的管脚对都要与这个目标比较。
·相对值:
每个成员与目标的相对差值,如果没有指定差值,那么所有成员就需要匹配,如果此值不为0,群组就是一个相对匹配的群组。
·偏差:
允许匹配的偏差值。
(8) 管脚对(Pinpair)
管脚对代表一对逻辑连接的管脚,一般是驱动和接收。
Pinpair 可能不是直接连接的,但是肯定存在于同一个网络或者扩展网络中。
4.2.2 建立差分对
本设计中共有三对差分线信号,分别是DDR内存时钟信号、USBOTG数据信号、USBHOST 数据信号。
在约束管理器中选择Objects->Create->DifferentialPair,如图4.8所示。
图4.8 建议差分对
弹出CreateDifferentialPair对话话,如图4.9所示。
图4.9CreateDifferentialPair对话框
在左上角的下拉框中选择Net,然后在下面的列表框中找到DDR 内存芯片的两个时钟信号网络分别是XM1SCLK、XM1SCLKN 在列表框中双击这两个网络或者单击选中后点按钮加到右边的Selections编辑框中。
在DiffPairName编辑框中输入差分对的名字:
DDRCLK,然后点击Create按钮。
点击Close关闭对话框。
其它的两个差分对用同样的方法建立,这里就不重复了。
最后点击左边Eelctrical工作表下的Net->Routing,在右边的工作表中就可以看到设置好的三个差分对。
如图4.10所示。
图4.10 设置好的差分对
4.2.3 差分对规则设置
建立好差分对后,还需要建立一个专门于差分对的电气规则。
首先点击左边工作表选择区中的Eelctrical工作表下的EelctricalConstraintSet->Routing->DifferentialPair,然后选择菜单Objects->Create->EelctricalCSet,如图 4.11所示。
图4.11 差分对规则设置
弹出CreateElectricalCSet对话框,如图4.12所示。
在ElectricalCSet编辑框中输入该约束规则的名称:
DIFF_FAIR,点击OK关闭对话框。
图4.12CreateElectricalCSet对话框
这时候在右边的工作表内我看看到多了一个DIFF_PAIR约束规则,如图4.13所示。
图4.13 增加的DIFF_PAIR规则
下面给这个差分对约束规则设置参数。
差分对约束规则参数主要有以下几个:
·UncoupledLength:
差分对网络中的不匹配的长度。
即不能按差分对走线的总长度。
·MinLineSpacing:
最小的线间距。
·PrimaryGap:
差分对最优先选择的线间距(边到边间距)。
·PrimaryWidth:
差分对最优先选择的线宽。
·NeckGap:
差分对在Neck模式下的线间距(边到边间距),用于在布线密集区域内切换到Neck模式,这时差分走线的线间距由PrimaryGap设定的值切换到该值。
·NeckWidth:
差分对在Neck模式下的线宽,用于在布线密集区域内切换到Neck模式,这时差分走线的线宽由PrimaryWidth设定的值切换到该值。
最后设置的差分线规则约束参数如图4.14所示。
图4.14 设置好的差分线约束参数
由于布线密度大走线空间有线,所以差分线的间距采用1W原则(线边到线边),如果空间允许,可采用3W原则。
分别设置了Primary 模式和Neck模式下的线宽和线间距为(5mil,5mil),(3.15mil,3.15mil)。
Neck模式主要用于从CPU芯片扇出时候的线宽线间距。
设置好差分线约束规则后,将该约束规则应用到刚才建立的两个差分信号上,点击左边工作表选择区中的Eelctrical工作表下的Net->Routing在右边的工作表中找到刚才建立的三个差分对,在ReferencedElectriclCSet列中选择刚设置好的差分对约束规则DIFF_PAIR,如图4.15所示。
图4.15 将差分对约束规则应用到差分对上
4.2.4CPU与DDR内存芯片走线约束规则
CPU与DDR内存之间的信号速度都很高,对信号完整性要求很高,需要对时序严格的匹配,以满足信号波形的完整性。
布线要求如下:
(1)DDR时钟线,要求差分布线,并要求精确控制差分对的走线等长误差,控制在20mil以内。
由于DDR内存使用两片,所以时钟线走线要采用T形或者Y形拓扑结构。
阻抗控制在100Ω,长度比地址线长。
(2)DDR数据线,CPU的数据总线宽度为32位,使用两片16位的DDR内存与之连接,所以然CPU的数据线为分两组,DATA0-DATA15,DQS0、DQS1,DQM0、DQM1 为一组;DATA16-DATA31,DQS2、DQS3,DQM2、DQM3为一组。
两组的所有信号线需要严格等长匹配,误差控制在50mil以内。
由于布线密度大空间有限,信号间距采用1W 原则(线边到线边),如果空间足够应选择3W原则,DDR数据线与其它的信号线必需要足够的间距,至少要保证3W的间距。
阻抗控制在60Ω以内。
(3)DDR地址线与其它控制线,DDR地址线与其它控制线为一组,需严格等长匹配,误差控制在100mil以内,走线长度比DDR 数据线长。
采用T形或者Y形拓扑结构。
以上约束需要从电气、线宽和间距上分别设置不同的规则,现先讲Electrical工作表下的规则设置。
点击左边工作表选择区中的Eelctrical工作表下的EelctricalConstraintSet->Routing工作表,选择菜单Objects->Create->EelctricalCSet 建立两个规则(名称分别为DDR_DQ,DDR_ADDR),过程参考4.2.3小节,建立好的规则如图4.16所示。
图4.16 建立DDR约束规则
参数不需要设置。
然后点击左边工作表选择区中的Eelctrical 工作表下的EelctricalConstraintSet->Routing->RelativePropagation工作表,鼠标放在右边刚才建立的两个规则(DDR_DQ,DDR_ADDR)上,点击右键,在弹出的菜单中选择Create->MatchGroup,如图4.17所示。
图4.17 建立DDR等长匹配规则
在弹出的CreateElectricalCSetMatchGroup对话框中输入名称MATCH_LENTH,如图4.18 所示。
点击OK关闭对话框。
图4.18CreateElectricalCSetMatchGroup对话框
在PinPairs列的下拉框中选择LongestPinPair,Scope列选择Class,Delta:
Tolerance列中先点击下面的按钮,选择单位为mil,然后在编辑框中输入:
0mil:
100mil(0mil:
50mil)。
最后如图4.19所示。
注意,只有在RelativePropagation工作表下才能建立这个规则。
图4.19DDR 等长匹配群组参数
接下来设置等数据线与地址线的等长匹配。
先建立两个名称分别为DDR_DATA,DDR_ADDR的NetClass。
点击左边工作表选择区中的Eelctrical 工作表下的Net->Routing->RelativePropagation工作表。
在右边的工作表区中同时选中网络XM1DATA0-XM1DATA31,XM1DQM0-XM1DQM2,XM1DQS0-XM1DQS2(选中后会这些网络名会反色显示),点击鼠标右键,弹出一个菜单项,选择Create->NetClass。
如图4.20所示。
图4.20 建立DDR_DATANetClass
弹出CreateNetClass对话框,如图4.21所示。
输入名称DDR_DATA,点击OK关闭对话框。
图4.21CreateNetClass对话框
建立DDR_ADDR的过程也一样,同时选中网络XM1ADDR0-XM1ADDR15,XM1CASN、XM1CKE0、XM1CSN0、XM1RASN、XM1WEN 后右键Create->NetClass。
其它就不重复了。
然后将上一步建立的两个电气规则DDR_DQ,DDR_ADDR分别应用到DDR_DATA,DDR_ADDR两个NetClass上。
在右边的工作表区内,分别点击DDR_DATA,DDR_ADDRNCls 的ReferencedElectricalCSet 编辑框,分别选择DDR_DQ,DDR_ADDR。
这时候,约束管理器自动建立了两个MachGroup(MATCH_LENTH_DDR_ADDR,MATCH_LENTH_DDR_DATA),如图 4.22所示。
图4.22 等长匹配
由于CPU的地址线和其它的一些控制信号被两片DDR内存芯片共用,所以还需要建立一个管脚对(PinPair)匹配组来约束等长匹配。
在右边工作表区内将DDR_ADDRNetClass展开,在XM1ADDR0 网络上点击右键,弹出一个菜单项选择Create->PinPair。
如图 4.23所示。
图4.23 建立PinPair
弹出CreatePinPairsofXM1ADDR0 对话框,如图 4.24 所示。
在左右两个编辑框中分别列出了该网络上的所有元件的引脚(Pin),对于每个一XM1ADDRx网络,都有三个Pin。
所以每一个XM1ADDRx 网络都需要建立两对管脚对,即CPU-DDR1,CPU-DDR2。
在左边的编辑框点点击U15,H24(Out),右边的编辑框中点击U16,J8(In),然后点击Apply按钮,即建立了U15,H24 与U16,J8 两个管脚的PinPair。
接着在左边的编辑框点点击U15,H24(Out),右边的编辑框中点击U17,J8(In),然后点击Apply 按钮。
又建立了U15,H24 与U17,J8 两个管脚的PinPair。
点击OK 后关闭对话框。
在工作表区可以看到,在XM1ADDR0 网络下多了两个PPr(PinPair)U15,H24:
U16,J8,U15,H24:
U17,J8。
如图4.25所示。
用同样的方法为DDR_ADDRNetClass 的每一个网络建立两个管脚对。
然后将刚才建立的所有管脚对选中,点击右键,弹出的菜单项中选择Create->MatchGroup。
如图4.26所示。
图4.24CreatePinPairs对话框
图4.25XM1ADDR0网络上的两个PinPair
图4.26 建立管脚对匹配群姐
在弹出的CreateMatchGroup对话框中输入名称:
MATCH_PPR_ADDR。
点击OK关闭对话框。
如图4.27所示。
图4.27CreateMatchGroup对话框
在工作表区可以看到增加了一个 MATCH_PPR_ADDR 的MGrp,点击Delta:
Tolerence编辑框,将匹配值修改为0mil:
100mil。
即误差控制在100mil内。
如图4.28所示。
图4.28MATCH_PPR_ADDR匹配群组
4.2.5 设置物理线宽和过孔
点击约束管理器左边工作表选择区里的Pysical工作表,然后再点击Pysical->ConstraintSet->AllLayer工作表。
在右边的工作表中可以看到已经有一个默认的规则了(名称为DEFAULT),这个规则是建立电路板的时候allegro自动生成的,所有的网络的线宽如果没有特别指定,都是默认使用这个规则,所以要把这个规则的参数修改一下。
这个板子如果没有特别要求的走线都将采用4mil的线宽,所以把DEFAULT规则的线宽都改成4mil。
改好后的DEFAULT规则如图4.29所示。
图4.29DEFAULT规则参数
在线宽约束规则中一般只要填写 MinLineWidth,NeckMinWidth,DifferentialPair 下的MinLineSpaceing,PrimaryGap 和NeckGap。
最后要设置PCB中需要用到的过孔,点击Vias的编辑框,如图4.30所示。
图4.30 添加VIA
弹出EditViaList对话框,如图4.31所示。
图4.31EditViaList 对话框
把Showviasfromthelibrary复选框勾上,在左边的Selectaviafromthelibraryorthedatabase下面的列表框中就会列出你设置的库路径中的所有焊盘过孔,如果没有请检查你设置的库路径是否正确,参考112.2小节。
在左边的列表框中找到你需要添加的过孔双击后该过孔就会出现在右边的列表框,在右边有三个按钮,点击Remove可以删除一个已选择的过孔。
点击Up或者Down可以改变已选的过孔的上下位置,一般把用得最频繁的那个过孔放在最顶的位置,这样,当在布线的时候需要添加过孔会默认选择最顶的那个过孔,可以提高效率。
选择好以后,点击OK关闭对话框。
可以看到在工作表中Vias 列的编辑框内就出现在刚才选择的过孔,如图所示。
图4.32 添加好的过孔
另外一点,由于这个板子需要用到盲埋孔,盲里孔是用过孔生成的,在后面的章节讲。
下面增加两个线宽约束规则,点击菜单 Objects->Create->PhysicalCSet 如图4.33所示。
下面增加两个线宽约束规则,点击菜单 Objects->Create->PhysicalCSet 如图4.33所示。
图4.33 新增线宽约束规则
弹出CreatePhysicalCSet对话框,在PhysicalCSet编辑框内输入规则名称3.15MIL_WIDTH(另一个10MIL_WIDTH)点击OK 关闭对话框。
图4.34CreatePhysicalCSet对话框
在右边的工作表中可以看到增加的两个约束规则,并且参数与 DEFAULT是完全一样的,如图4.35所示。
图4.35 新增的两个线宽约束规则
其中3.15MIL_WIDTH约束规则将用于S3C6410BGA封装扇出时候的线宽(3.15mil),因为BGA内部的空间有限,不可能采用更大的线宽,将这个约束规则应用到一个区域规则中,放在后面的章节讲。
而10MIL_WIDTH可用于需要加粗的网络,比如电源网络,我们将这个规则应用到一些电源网络上。
如果有需要还可以增加更多的线宽约束。
下面要修改3.15MIL_WIDTH 和10MIL_WIDTH 两个约束规则的参数,将3.15MIL_WIDTH 约束规则