ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Allegro差分对与间距规则实战:从识别到约束优先级

Allegro差分对与间距规则实战:从识别到约束优先级 1. 差分对在Allegro里到底是怎么被认出来的很多人第一次在Allegro 17.4里做差分走线卡住的地方根本不是怎么走而是软件压根不认为这是一对差分。你打开Constraint Manager发现Diff Pair那一栏是空的或者只有一半这时候你去走线它当然不会给你任何差分该有的行为——不会自动并排、不会联动、不会做等长。所以这一节我想先把差分对是怎么被识别出来的这件事讲透因为这是后面所有高级配置的地基。1.1 差分的物理本质与软件抽象之间的鸿沟从电气角度讲差分对就是两条走线它们传输的是一对幅值相等、极性相反的信号接收端取的是两者的差值。共模噪声在两条线上几乎一样一减就抵消了所以差分对天生抗干扰、EMI也低。这是教科书层面的理解但Allegro不是按电气意图来识别差分的它是按你告诉它的名字规则来识别的。Allegro识别差分对的核心逻辑是命名匹配。它默认认为如果两个网络的名称符合某种配对模式它们就是一对差分。最常见的模式是后缀_P/_N、/-、_p/_n。比如USB_DP和USB_DN或者PCIE_TX0_P和PCIE_TX0_N。软件在后台扫描所有网络名按规则配对配上了才在Constraint Manager里生成一个Diff Pair对象。这里有个非常容易被忽略的点配对是在网络名层面做的不是在你画的线层面做的。也就是说哪怕你手动把两根线画得再并排、再等长只要网络名不符合配对规则Allegro也不会把它们当成差分对来管理。反过来只要名字配上了哪怕你还没开始走线Constraint Manager里就已经有这对差分的规则槽位了。提示如果你接手的是别人画的板子第一步不是急着走线而是先去Constraint Manager的Net分类里看一眼确认差分对是不是已经被正确识别。很多差分走线不联动的问题根子就在这里。1.2 用Diff Pair规则向导批量建立差分对手动一个个建差分对在板子小的时候还行一旦有几十对比如一片DDR或者一组高速连接器手动建就是灾难。Allegro 17.4提供了Logic Assign Differential Pair这个功能但更高效的是在Constraint Manager里用Objects Create Differential Pair配合命名规则批量生成。具体操作路径是这样的打开Constraint Manager切到Physical或者Electrical工作表找到Differential Pair这一栏右键选择Create Differential Pair。在弹出的对话框里你可以指定匹配规则。比如你的网络命名是CH0_TXP/CH0_TXN那你就把规则设成以TXP结尾和以TXN结尾配对前缀部分自动作为差分对的组名。我个人的习惯是在原理图阶段就把差分命名规范定死并且写进团队的Checklist。因为一旦到了PCB阶段才发现命名混乱改网络名会牵动网表、牵动约束、牵动已经布好的线代价非常大。命名规范我一般推荐这种格式功能_通道号_极性例如HDMI_CLK_P、HDMI_CLK_N。这样配对规则简单可读性也好。批量创建之后一定要做一次核对。我见过有人批量建完差分对结果发现多出来几对莫名其妙的原因是有两个单端网络恰好也符合了配对规则。所以建完之后在Constraint Manager里按字母排序扫一遍确认数量对得上这是几分钟的事但能省掉后面几小时的排查。1.3 差分对识别失败的三种典型症状与排查顺序差分对没被识别出来症状通常有三种排查顺序我建议按下面这个链路走从最外层往最里层查症状最可能的原因排查动作Constraint Manager里Diff Pair栏完全为空命名规则不匹配或网表未更新检查网络名后缀重新导入网表只有部分差分对被识别个别网络命名不一致大小写、下划线逐个核对未识别网络的名称识别了但走线不联动差分对未启用或规则未生效检查Diff Pair的Enabled状态和规则优先级第一种情况最常见。Allegro默认的配对后缀是_P/_N如果你的命名是/-那默认规则就配不上。这时候要么改命名要么在创建差分对时自定义匹配规则。我倾向于自定义规则因为改命名风险更大。第二种情况往往是大小写问题。USB_DP和usb_dn在Allegro里是配不上的因为网络名是大小写敏感的。这种问题在多人协作的项目里特别多一个人用大写另一个人用小写合并网表后就出问题。第三种情况是规则层面的。差分对建好了但它的Enabled属性没勾上或者被更高优先级的规则覆盖了。Allegro的约束是有优先级的Class规则、Net规则、Diff Pair规则层层叠加谁优先级高谁说了算。这个后面讲规则优先级的时候会详细展开。2. 差分对的电气规则从能走到走得好差分对被正确识别之后接下来才是真正决定信号质量的部分——电气规则。很多人对差分规则的理解停留在设个线宽和间距但实际上Allegro的差分电气规则是一整套体系包括线宽、间距、等长、相位匹配、过孔规则等等。这一节我按重要性从高到低拆开讲。2.1 差分阻抗不是拍脑袋定的线宽与间距的联合计算差分阻抗是差分对最核心的电气指标。常见的差分阻抗有90欧姆USB、HDMI、100欧姆PCIe、以太网、85欧姆部分SATA应用。这个阻抗不是单根线的阻抗而是两条线作为一个整体的差分阻抗它由线宽W、线间距S、到参考层的距离H、铜厚T以及板材的介电常数Er共同决定。这里有个很多人搞混的概念差分阻抗和单端阻抗是两回事。你按50欧姆单端算出来的线宽直接拿来做100欧姆差分大概率是不对的。因为差分对的两条线之间存在耦合耦合会降低差分阻抗。所以间距越小耦合越强差分阻抗越低。实际计算的时候我一般用两种方式交叉验证。第一种是用Allegro自带的Cross Section编辑器在Setup Cross Section里定义叠层然后它会根据你的叠层参数给出阻抗估算。第二种是用独立的场求解器或者阻抗计算工具把叠层参数输进去算。两种结果如果差得不多比如5%以内我就认为可信如果差得多那一定是某个参数输错了比如介电常数用了低频值或者铜厚没算上 plating。举个具体的例子。假设是四层板顶层到内层的介质厚度H0.2mmEr4.3铜厚T0.035mm1oz。要设计100欧姆差分间距S先定成0.15mm约6mil用工具算下来线宽W大概在0.15mm左右。如果我把间距缩小到0.1mm为了维持100欧姆线宽就得相应减小因为耦合变强了。这个联动关系是必须理解的不能只改一个参数。注意阻抗计算里的H是到最近参考层的距离不是板厚。很多人把板厚当成H算出来的结果完全不能用。差分对必须有连续的参考平面参考平面断裂的地方阻抗会突变这是信号完整性的杀手。2.2 在Constraint Manager里配置差分线宽与间距算好了线宽和间距接下来要在Constraint Manager里落地。路径是Electrical工作表下的Differential Pair或者Physical工作表下的Differential Pair。这两个地方都能设区别在于Physical里设的是物理线宽间距Electrical里设的是电气约束比如阻抗目标。实际项目中我通常两个都设Physical保证制造可行Electrical保证电气达标。在Physical的Diff Pair表里你会看到几列关键参数Line Width差分对的线宽。这里可以设最小、最大、推荐值三个。Gap两条线之间的间距同样有min/max/推荐。Neck Width当差分对需要变细通过密集区域时的线宽比如穿过BGA逃逸区。我一般会把推荐值设成计算出来的目标值min设成目标值的80%左右max设成120%。这样在走线时有一定的容差空间但不会偏离太远。Gap的min值要特别注意不能小于PCB厂的最小间距能力否则做出来要么良率低要么直接做不了。常规工艺下6mil0.15mm是个比较安全的间距4mil0.1mm就需要确认板厂能力了。设置的时候有个细节Diff Pair的规则可以按Class设也可以按单个Diff Pair设。如果板子上所有差分对都是100欧姆那就建一个Class规则设在Class上所有成员继承。如果有不同阻抗要求的差分对比如USB2.0是90欧姆PCIe是100欧姆那就建多个Class分别设。我强烈建议用Class管理因为后期改规则的时候改一处就全生效不用一个个改。2.3 等长与相位匹配差分对内部的同步要求差分对的两条线信号是同时出发的如果一条长一条短到达接收端的时间就不一样差值信号就会失真。所以差分对内部要求等长更准确地说是要求相位匹配。在Allegro里差分对的等长约束设在Electrical工作表的Differential Pair下有个Phase Tolerance或者叫Dynamic Phase的选项。它管的是P线和N线之间的长度差。一般要求控制在5mil以内严格的可以到2mil甚至更小。这里要区分两个概念静态相位和动态相位。静态相位是走完线之后的总长度差动态相位是走线过程中实时的长度差。Allegro 17.4支持动态相位检查走线的时候会实时显示当前的长度差超了会变红。这个功能非常实用我建议一定要打开。打开动态相位显示的方式在走线状态下右键选择Dynamic Phase或者去Setup Constraints Modes里把动态相位检查打开。打开之后你走差分线的时候Allegro会在状态栏或者线上显示当前的相位差超差的部分会高亮。这样你就能在走线过程中及时调整而不是走完了才发现差太多要重来。等长的实现手段主要是蛇形绕线也叫绕等长。绕线的时候有个原则绕在长度不足的那一根上而不是两根都绕。而且绕线的幅度和间距要控制好绕得太密会引入额外的串扰和阻抗不连续。一般绕线的间距不小于3倍的线宽幅度不要太大宁可多绕几段小的不要绕一段大的。2.4 差分过孔与参考平面切换的处理差分对不可避免要换层换层就要打过孔。差分过孔的处理是很多人的盲区。两个过孔之间的间距、过孔的反焊盘大小、换层时的参考平面切换都会影响差分阻抗的连续性。首先是过孔间距。差分对的两个过孔应该尽量靠近间距和走线间距保持一致或者略小。过孔靠得近耦合就强阻抗过渡就平滑。如果两个过孔离得很远中间那段就相当于一段没有耦合的单端线阻抗会突变。其次是反焊盘Anti-pad。反焊盘是过孔和参考平面之间的隔离区它的大小直接影响过孔的寄生电容。反焊盘越大寄生电容越小但太大又会破坏参考平面的连续性。一般反焊盘的直径比过孔焊盘大8到10mil比较合适具体要看叠层和阻抗要求。最关键的是参考平面切换。如果差分对从顶层换到底层参考平面从GND换到了另一个GND那没问题两个GND之间要有足够的过孔连接 stitching via保证回流路径连续。但如果参考平面从GND换到了电源平面那就麻烦了回流路径会断信号质量会急剧下降。这种情况下要么在换层附近加缝合电容要么重新规划叠层避免这种切换。提示差分过孔的处理我一般会在Constraint Manager里单独建一个Via Class把差分过孔和普通信号过孔分开管理。这样在规则设置和DRC检查的时候可以针对差分过孔做特殊处理不会和普通过孔混在一起。3. 间距规则的高级玩法不只是离远点间距规则Spacing Rule是PCB设计里最基础也最容易被低估的约束。很多人对间距的理解就是线离线远一点但实际上Allegro的间距规则体系非常精细可以按网络、按Class、按区域、按层分别设置。用好了既保证电气安全又不会浪费宝贵的布线空间。3.1 Spacing规则矩阵谁和谁之间该留多少Allegro的间距规则是以矩阵形式存在的。你打开Constraint Manager的Spacing工作表会看到一个二维矩阵行和列都是对象类型比如Line、Via、Pin、Shape等交叉点就是它们之间的最小间距。这个矩阵是分层的你可以为每一层单独设一套也可以设一套全局的。矩阵里的对象类型主要有这几类Line走线Via过孔Pin焊盘Shape铜皮Hole机械孔Board Outline板框每一类还可以细分比如Line可以分成不同的Class。这就是间距规则强大的地方你可以让高压网络和低压网络之间保持很大的间距而同一组低压信号之间保持很小的间距。我举个实际项目的例子。一块工业控制板上面有220V的强电部分和5V的弱电部分。强电和弱电之间的间距要求至少8mm爬电距离而弱电信号之间只要6mil就够了。如果全局设8mm那弱电部分根本没法布线如果全局设6mil那强电部分就危险了。正确做法是建两个ClassHV和LV然后在Spacing矩阵里把HV到LV的间距设成8mmLV到LV设成6milHV到HV设成3mm。这样各取所需既安全又高效。设置间距矩阵的时候有个优先级规则要记住具体的覆盖笼统的局部的覆盖全局的。比如你给某个网络单独设了间距那这个设置会覆盖它所属Class的设置。这个优先级机制是Allegro约束系统的核心理解了它很多为什么我的规则没生效的问题就迎刃而解了。3.2 用Region和Room实现局部间距差异化整板统一间距规则有时候不够用因为板子上不同区域的密度和电气要求差别很大。比如BGA区域密度极高间距只能做到4mil而板边连接器区域空间充裕间距可以做到10mil以上。这时候就需要用Region或者Room来做局部规则。Region是在PCB上画一个区域然后给这个区域单独指定约束。操作路径是Shape Rectangular或者Polygon画一个区域然后在Constraint Manager里把这个区域和一套规则关联起来。Region的好处是灵活形状可以任意位置可以随时调整。Room则是从原理图带过来的概念它对应原理图里的一个功能块。在Allegro里Room可以自动把属于这个功能块的器件和网络圈在一起然后统一施加规则。Room的好处是和原理图同步原理图改了PCB里的Room也会跟着变。我个人的使用习惯是功能块级别的差异化用Room因为它是和设计意图绑定的临时的、局部的调整用Region因为它更灵活。两者可以叠加使用但要注意优先级Room的优先级一般高于Region具体可以在Constraint Manager里查看和调整。举个场景一块板子上有一个DDR3区域DDR3的线间距要求比普通信号小因为要控制阻抗和密度。我就在原理图里把DDR3相关的器件归到一个Room里然后在PCB里给这个Room单独设一套间距规则。这样DDR3的线可以走得很密而板子其他部分还是用常规间距互不干扰。3.3 差分对与其他网络之间的间距一个容易踩的坑差分对和普通信号之间的间距是很多人会忽略的地方。大家往往只关注差分对内部的间距Gap却忘了差分对作为一个整体和旁边的其他信号也要保持距离。这个距离如果不够会有两个问题。第一是串扰旁边的信号会耦合到差分对上虽然差分对抗共模干扰但差模干扰它是抗不了的。第二是阻抗影响旁边的铜如果离得太近会改变差分对的电磁环境进而影响差分阻抗。Allegro里设置差分对到其他网络的间距是在Spacing矩阵里把Diff Pair这个对象类型和其他对象类型比如Line的交叉点设一个值。这个值一般建议不小于3倍的差分对内部Gap。比如Gap是6mil那到其他信号的间距至少18mil。如果空间实在不够可以适当缩小但不建议小于2倍Gap。还有一个细节差分对到铜皮Shape的间距。铜皮如果是接地的离差分对太近会增加寄生电容影响阻抗如果铜皮是悬空的那更糟会形成天线效应。所以差分对到铜皮的间距一般设得比到普通信号更大一些我通常设成4倍Gap以上。注意差分对换层打过孔的地方过孔到旁边信号的间距也要检查。过孔的焊盘比走线宽如果按走线的间距来检查过孔处可能就违规了。所以Spacing矩阵里Via到Line的间距要单独设不能直接沿用Line到Line的值。4. 约束优先级与规则生效顺序为什么你的规则没起作用这是我在带新人的时候被问得最多的问题我明明设了规则为什么走线的时候软件不报错或者我设了间距为什么DRC检查通过了但实际间距不对十有八九问题出在约束优先级上。Allegro的约束系统是一个多层叠加的体系理解它的优先级顺序是进阶的必修课。4.1 约束的层级结构从全局到局部Allegro的约束优先级从高到低大致是这样的单个对象的约束比如某一个网络的间距Class约束一组网络的间距Region/Room约束区域约束全局默认约束Default规则高优先级的约束会覆盖低优先级的。也就是说如果你给某个网络单独设了间距那它就不受Class约束和全局约束的影响了。这个机制本身是合理的但问题在于很多人设了Class约束以为所有成员都生效了结果其中几个成员之前被单独设过约束优先级更高Class约束对它们就不起作用了。排查这类问题的方法在Constraint Manager里选中一个网络右键选择Show Effective Constraints或者类似的功能不同版本叫法略有差异它会显示这个网络当前实际生效的约束是哪一条、来自哪个层级。这个功能是排查约束问题的利器我几乎每次遇到规则不生效都会先用它看一眼。4.2 Class与Net的优先级实战案例我讲一个真实的案例。有一次做一个项目一组8根数据线我建了一个Class叫DATA间距设成6mil。走完线做DRC发现其中两根线和其他信号的间距只有4mil但DRC没报错。我一开始以为是DRC设置的问题查了半天没查出来。后来用Show Effective Constraints一看发现这两根线在之前的某个版本里被单独设过4mil的间距约束这个约束的优先级高于Class约束所以Class的6mil对它们不生效。把这两个单独约束删掉之后Class约束就正常生效了。这个案例的教训是约束要集中管理不要到处散落。我现在的习惯是所有约束都在Constraint Manager里统一设不在其他地方比如走线时临时改设约束。如果确实需要临时调整调完之后一定要记得恢复或者记录下来避免以后忘了。另外Class的成员管理也要注意。一个网络可以属于多个Class如果两个Class的约束冲突那就要看Class的优先级了。Class的优先级可以在Constraint Manager里调整顺序排在前面的优先级高。我一般会把关键信号时钟、差分、高速总线的Class排在前面普通信号的Class排在后面。4.3 DRC不报错的几种假象及排查方法DRC设计规则检查不报错不代表设计没问题。有几种情况会导致DRC漏报第一种是规则没启用。Constraint Manager里的每条规则都有一个Enabled开关如果没勾上规则就是摆设。这个开关有时候会因为误操作被关掉或者从别的项目导入约束时没带过来。排查方法是逐条检查关键规则的Enabled状态。第二种是DRC检查的范围没覆盖。Allegro的DRC可以按层、按区域、按对象类型来检查。如果检查范围设窄了某些区域就不会被检查到。比如你只检查了顶层底层就没查。排查方法是检查DRC的Setup里的检查范围设置。第三种是Online DRC和Batch DRC的区别。Online DRC是走线时实时检查Batch DRC是手动触发的全板检查。两者用的规则应该是一样的但有时候Online DRC因为性能原因会简化一些检查。所以走完线之后一定要跑一次Batch DRC以Batch的结果为准。第四种是规则本身设错了。比如你想设最小间距6mil结果在矩阵里填的是0.6mil单位搞错了那DRC当然不报错因为实际间距远大于0.6mil。这种错误很隐蔽排查方法是把规则值和实际测量值对比一下。我一般会在项目收尾阶段做一次规则审计把所有关键规则列出来逐条确认Enabled状态、数值、单位、适用范围。这个动作大概花半小时但能避免很多低级错误流到生产。5. 从规则到实操差分走线的完整流程与手感规则设好了接下来就是走线。Allegro的差分走线有一些特有的操作技巧掌握了能大幅提升效率。这一节我按实际走线的顺序把关键操作和手感分享出来。5.1 启动差分走线的正确姿势走差分线第一步是选中差分对。在Allegro里你可以直接在PCB上点选其中一根线然后右键选择Route Differential Pair软件会自动把配对的另一根也选上。或者用Route Connect然后在Options面板里把Diff Pair模式打开。走线的时候Options面板里有几个关键设置Line Width当前线宽一般会自动读取约束里的推荐值。Gap当前间距同样自动读取。Neck Mode是否允许变细。在密集区域比如BGA逃逸需要打开。Dynamic Phase是否显示动态相位建议打开。我个人的习惯是走差分线之前先把Options面板检查一遍确认线宽、间距、Neck设置都对。因为一旦开始走中途改这些设置会比较麻烦而且容易忘。走线的过程中Allegro会自动保持两根线的间距。你只需要控制其中一根通常是P线的路径另一根会自动跟随。遇到障碍物的时候你可以用Slide推挤功能让差分对整体绕开障碍而不是一根一根地绕。5.2 差分对的分叉与合并处理实际布线中差分对经常需要分叉——比如从连接器出来的时候是并排的到了BGA区域需要分开进入不同的焊盘。这个分叉的处理是有讲究的。分叉点应该尽量靠近接收端或发送端分叉后的两根线长度要尽量相等。分叉区域的间距会变大阻抗会变化所以分叉段要尽量短。如果分叉段太长就相当于一段没有耦合的单端线信号质量会下降。Allegro里处理分叉一般是先走差分对到分叉点然后用单端走线模式分别走两根线到目标焊盘。走单端的时候要注意保持两根线的长度一致可以用Delay Tune功能来调整。合并的情况类似两根单端线走到合并点然后切换成差分模式继续走。合并点同样要尽量靠近源端或终端。提示分叉和合并的区域我一般会在Constraint Manager里单独设一个Region把间距和线宽规则放宽一些避免DRC误报。因为这个区域的物理形态决定了它不可能完全符合差分对的规则。5.3 蛇形绕线与相位调整的实操细节当差分对的两根线长度不一致时需要绕线来补偿。Allegro的绕线功能在Route Delay Tune或者走线时右键选择Delay Tune。绕线的时候有几个参数要设Amplitude绕线的幅度也就是蛇形凸起的高度。Gap绕线之间的间距。Style绕线样式有Accordion手风琴式、Trombone长号式等。我一般用Accordion样式因为它比较紧凑占空间小。Amplitude一般设成3到5倍的线宽Gap设成3倍线宽以上。绕线的段数不要太多太多会增加损耗和串扰。绕线的位置也有讲究。最好绕在长度不足的那根线上而且尽量绕在靠近源端或终端的地方不要绕在中间。因为绕线会引入阻抗不连续靠近端接的地方影响相对小一些。调整相位的时候Allegro会实时显示当前的长度差。你可以一边绕一边看绕到差值进入容差范围就停。如果绕过头了可以用Slide把绕线拉开一点或者删掉重绕。5.4 走线完成后的自检清单差分对走完之后不要急着做下一对先做一次自检。我一般按这个清单过一遍检查项检查方法合格标准差分对是否完整在Constraint Manager里看Diff Pair列表所有差分对都有对应的走线线宽间距是否符合规则选中走线看Options面板或Info与约束推荐值一致相位差是否在容差内看Dynamic Phase显示或跑DRC小于Phase Tolerance设定值过孔是否成对目视检查换层处两个过孔靠近且对称参考平面是否连续检查换层处的平面无跨分割到其他网络的间距跑Batch DRC无Spacing违规这个清单看起来简单但每一条都对应着实际项目中出过问题的点。尤其是参考平面连续性和过孔成对这两条目视检查很容易漏但后果很严重。6. 那些年我在差分规则上踩过的坑规则和操作讲完了最后我想分享几个实际踩过的坑。这些坑在官方文档里基本不会写但都是真金白银换来的经验。6.1 单位陷阱mil与mm的混用Allegro支持mil和mm两种单位可以在Setup里切换。问题在于Constraint Manager里的单位是跟着全局单位走的如果你在mil模式下设了6然后切到mm模式那个6就变成了6mm而不是6mil。这个坑我踩过一次设间距的时候没注意单位结果设成了6mm走线的时候发现间距大得离谱查了半天才发现是单位问题。避免方法设约束之前先确认当前单位设完之后用Show Effective Constraints看一眼实际值。另外团队协作的时候统一单位规范要么全用mil要么全用mm不要混。6.2 差分对命名冲突导致的张冠李戴有一次项目里有两组差分对命名分别是CLK_P/CLK_N和CLK2_P/CLK2_N。批量创建差分对的时候匹配规则设的是以_P结尾和以_N结尾配对结果CLK_P和CLK2_N被配成了一对因为规则没有限定前缀必须相同。这个问题的根源是匹配规则太宽松。正确的做法是匹配规则要同时限定前缀和后缀比如前缀相同后缀分别是_P和_N。Allegro的创建向导里可以设这个但默认可能不是这样需要手动确认。排查方法创建完差分对之后按名字排序检查每一对的P和N前缀是否一致。不一致的就是配错了。6.3 动态相位打开了但没生效动态相位功能需要在两个地方都打开一个是Constraint Manager里的Phase Tolerance要设值另一个是走线时的Dynamic Phase显示要打开。只开一个是不够的。我有一次只设了Phase Tolerance没开走线时的显示结果走线的时候看不到实时相位差走完了跑DRC才发现超差只能重绕。后来我把这两个设置都写进了走线前的Checklist再也没出过这个问题。6.4 参考平面切换处的回流路径断裂这个坑是最隐蔽也最严重的。差分对从顶层换到底层如果参考平面从GND换到了另一个网络比如电源回流路径就断了。信号的回流电流找不到低阻抗路径就会绕远路形成大的回流环路导致EMI急剧恶化信号质量也会下降。这个问题在DRC里是查不出来的因为DRC只检查间距、线宽这些几何规则不检查回流路径。只能靠人工检查。我的做法是在叠层设计阶段就规划好让所有信号层的参考平面都是GND避免换层时参考平面切换。如果实在避免不了就在换层处加缝合电容给回流电流提供一条低阻抗路径。6.5 约束导入导出时的水土不服团队协作或者项目复用的时候经常需要把约束从一个项目导到另一个项目。Allegro支持约束的导入导出File Export Constraints但导入的时候有个坑如果两个项目的网络名不完全一致导入的约束可能匹配不上或者匹配到错误的网络上。我的做法是导入约束之后一定要用Show Effective Constraints抽查几个关键网络确认约束正确应用了。另外导入之前先备份当前约束万一导入出问题可以回滚。7. 写在最后的一点个人体会差分走线和间距规则这两件事看起来是Allegro的操作问题但本质上是对信号完整性和电磁兼容的理解问题。软件只是工具规则只是手段真正决定设计质量的是你对电流怎么流、噪声怎么耦合、阻抗怎么变化这些物理过程的理解。我刚开始做PCB的时候也是照着教程一步步设规则、走线但不知道为什么这么设。后来踩的坑多了回头再看那些规则才发现每一条背后都有物理原因。比如为什么差分对要等长因为不等长会导致相位差相位差会转化成共模噪声。为什么差分对到其他信号要保持距离因为距离近了会耦合耦合会破坏差分对的对称性。理解了这些设规则的时候就不是死记硬背而是知道该往哪个方向调。Allegro 17.4在差分和约束这块的功能已经相当完善了动态相位、Region规则、约束优先级这些机制用好了能大幅提升效率和设计质量。但工具再好也替代不了对原理的理解。我的建议是花点时间把信号完整性的基础补一补然后再回来用Allegro你会发现很多以前不理解的操作突然就通了。最后分享一个小习惯我每做完一块板子都会把这块板子的约束设置导出存档并且写一份简短的笔记记录这块板子用了哪些特殊的规则、为什么这么设、遇到了什么问题。下次做类似项目的时候直接参考这份笔记能省很多时间。这个习惯坚持了几年现在我的约束库已经相当丰富了新项目基本都是从旧项目改改就能用。
返回列表