ARTICLE DETAIL

资讯详情

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

Allegro 17.4约束管理器实战:线宽与等长规则设置详解

Allegro 17.4约束管理器实战:线宽与等长规则设置详解 1. 为什么约束管理器才是PCB设计的真正分水岭画PCB这件事入门容易精通难。很多人用Allegro 17.4已经能熟练摆放器件、拉线、铺铜但一到高速信号或者有严格阻抗要求的板子就抓瞎——线拉完了发现等长差太多阻抗对不上时序余量不够回头改布局又牵一发动全身。这个问题的根源往往不在布线技巧本身而在于没有把**约束管理器Constraint Manager**用起来。Allegro 17.4的约束管理器是整个设计流程的规则中枢。它管的不只是线宽和等长还包括间距、差分对、阻抗、过孔选择、时序裕量等等。你可以把它理解成PCB设计的“交通法规”没有它线随便拉能不能跑起来看运气有了它每一条线的宽度、间距、长度都在规则框架内设计质量才有确定性。这篇文章面向的是已经能完成基本PCB布局布线、但对约束管理器还停留在“知道有这个功能但不太会用”阶段的工程师。我会从线宽约束的物理依据讲起到等长规则的建立和验证再到实际项目中常见的坑和排查方法把Allegro 17.4约束管理器的核心用法串成一条完整的实操链路。不管你现在做的是消费电子、工控板还是通信设备这套方法论都能直接套用。2. 约束管理器的整体设计思路与核心逻辑2.1 约束驱动设计先定规则再动手很多人的设计习惯是先把器件摆好、线拉完最后再来检查规则。这种“先做后查”的流程在低速板上问题不大但在有DDR、高速差分、多电源域的设计里返工成本极高。约束驱动设计Constraint-Driven Design的核心思想是反过来的在布局之前就把电气规则定义清楚让工具在布线过程中实时约束你的操作。Allegro 17.4的约束管理器支持两种规则入口一种是通过原理图端Capture CIS预置规则另一种是直接在PCB Editor的约束管理器里手动创建。前者适合规则明确、团队协作的场景后者适合快速迭代、单人开发的场景。我个人的习惯是混合使用——电气相关的核心规则如差分阻抗、时序等长在原理图阶段就定义好物理相关的规则如线宽、间距在PCB阶段根据实际叠层调整。这样做的理由是电气规则跟网络拓扑强相关改起来牵涉面广越早定越好物理规则跟板厂工艺和叠层相关很多时候要等叠层确认后才能最终敲定。2.2 约束管理器的物理架构Allegro 17.4的约束管理器本质上是一个规则数据库它把设计中的所有约束分成几个大类约束类别管什么典型应用场景Physical物理规则线宽、过孔、走线层所有信号线Spacing间距规则线到线、线到焊盘、线到铜皮所有网络Electrical电气规则阻抗、等长、差分、时序高速信号Same Net Spacing同网络内的间距焊盘出线、过孔避让每个大类下面又按照网络类Net Class、总线Bus、差分对Diff Pair、XNet等维度来组织。理解这个层级关系很重要因为规则的优先级是从具体到通用——你给某个网络单独设的规则会覆盖它所属网络类的规则。2.3 为什么选择在Allegro 17.4里做约束管理市面上的PCB工具不少Altium Designer、PADS、嘉立创EDA各有拥趸。但说到约束管理器的精细程度Allegro确实是独一档的。17.4这个版本相比之前的16.x在约束管理器的交互体验上做了不少改进比如规则搜索更快、表格编辑更顺手、实时DRC反馈更及时。具体来说Allegro 17.4约束管理器的优势体现在几个方面一是支持规则覆盖Rule Override可以在不修改原始规则的前提下临时调整某段走线二是XNet功能可以穿透被动器件追踪完整路径这对做等长非常关键三是实时DRC在布线过程中就能发现违规不用等最后检查。这些特性组合起来让约束管理器从一个“事后检查工具”变成了“过程控制工具”。3. 线宽约束从电流承载到阻抗控制的完整推导3.1 线宽到底怎么定电流、温升与工艺的三重约束线宽是约束管理器里最基础也最容易被忽视的参数。很多人定线宽就是“信号线6mil电源线20mil”这样凭经验拍脑袋但实际上线宽的确定需要同时满足三个条件载流能力、阻抗要求、板厂工艺能力。先说载流。铜箔的载流能力跟线宽、铜厚、允许温升都有关系。业界常用的经验公式是IPC-2221标准里的公式I k × ΔT^0.44 × A^0.725其中I是电流安培ΔT是允许温升摄氏度A是铜的截面积平方密耳k是常数外层走线取0.048内层取0.024。举个例子1oz铜厚约1.37mil线宽10mil截面积就是13.7平方密耳。如果允许温升10°C外层走线的载流能力大约是I 0.048 × 10^0.44 × 13.7^0.725 ≈ 0.048 × 2.75 × 6.85 ≈ 0.90A也就是说10mil线宽、1oz铜厚的外层走线在10°C温升限制下大约能过0.9A。如果你需要过2A要么加宽线宽要么加厚铜箔要么走内层但内层散热差k值更小同样截面积下载流反而更低。这里有个常见的误区有人会问“0.05mm线宽能过多大电流”。0.05mm约等于2mil这个线宽在1oz铜厚下截面积只有2.74平方密耳按上面的公式算下来载流不到0.3A。所以0.05mm线宽只能走信号绝对不能用来走电源。3.2 在约束管理器里创建线宽规则理解了线宽的物理依据接下来看怎么在Allegro 17.4里落地。打开约束管理器Setup → Constraints → Constraint Manager在Physical分类下找到All Layers或具体的走线层。创建线宽规则的标准流程是这样的在Physical Constraint Set里新建一个规则集命名为“Power_2A”之类的有意义的名字设置Line Width的Minimum、Maximum和Default值。Minimum是DRC的下限Maximum是上限Default是实际布线时的默认值把这个规则集分配给对应的网络类或单个网络这里有个实操细节Minimum值不要设得太激进。有些工程师为了“保险”把Minimum设成跟Default一样结果稍微有一点线宽变化就报DRC。合理的做法是Minimum设为板厂能做到的最小线宽比如4milDefault设为你实际需要的宽度比如10milMaximum设为Default的1.5到2倍给布线留一些弹性空间。3.3 阻抗控制线宽的参数计算高速信号线的线宽不能只看载流还要看阻抗。以常见的50Ω单端阻抗为例在FR-4板材介电常数约4.3、1oz铜厚、介质厚度5mil的条件下用微带线模型计算线宽大约需要9.5mil。如果介质厚度变成8mil线宽就要加到15mil左右才能维持50Ω。这个计算过程在Allegro里可以通过Cross Section编辑器来完成。在Setup → Cross Section里定义好叠层结构每层的铜厚、介质厚度、介电常数然后约束管理器里的阻抗规则会自动关联到叠层参数。当你修改线宽时工具会实时显示对应的阻抗值。注意叠层参数一定要跟板厂确认后再填入。不同板厂的半固化片Prepreg和芯板Core的介电常数和厚度都有差异用错参数算出来的线宽是不准的。3.4 线宽规则的优先级与覆盖机制Allegro 17.4的规则优先级是这样的单个网络的规则 网络类的规则 全局默认规则。这个机制在实际项目中非常有用。比如你有一个网络类叫“DDR_DATA”默认线宽4mil但其中某几根线因为要穿过密集区域需要临时缩小到3.5mil你就可以单独给这几根线设一个规则覆盖。操作方法是在约束管理器里选中目标网络右键选择“Create → Physical Constraint Set”然后新建一个规则集并应用。被覆盖的网络在表格里会显示为不同的颜色方便识别。但要注意规则覆盖不要滥用。如果一块板上到处都是覆盖规则维护起来会非常痛苦。我的经验是覆盖规则的数量控制在总网络数的5%以内超过这个比例就应该考虑重新划分网络类了。4. 等长约束从拓扑结构到绕线实操4.1 等长不是“长度相等”这么简单等长匹配是高速并行总线设计中最核心的约束之一。但很多人对等长的理解停留在“把线拉到一样长”这个层面忽略了几个关键问题等长是相对于什么参考允许多大的误差绕线补偿加在哪里首先等长的参考对象通常是时钟信号或者选通信号。比如DDR3的数据线DQ是相对于数据选通信号DQS做等长的地址线ADDR是相对于时钟CLK做等长的。在Allegro的约束管理器里这个关系通过Relative Propagation Delay规则来建立。其次等长误差Tolerance的确定需要根据时序预算来算。以DDR3-1600为例一个时钟周期是1.25ns数据窗口大约0.6ns扣除建立保持时间、抖动、串扰等余量后留给等长的误差可能只有±25mil左右。这个值不是拍脑袋定的是要根据芯片手册的时序参数和实际走线的传播速度来计算的。信号在PCB上的传播速度大约是6mil/ps外层微带线到7mil/ps内层带状线。如果等长误差是±25mil对应的时间误差就是±3.6ps到±4.2ps。这个精度要求对布线来说已经相当紧张了。4.2 在约束管理器里建立等长规则Allegro 17.4里建立等长规则的入口在Electrical分类下的Relative Propagation Delay。具体步骤如下首先确认你的网络已经正确分组。DDR的数据线通常按字节分组DQ0-DQ7 DQS0为一组这个分组可以在原理图里通过Bus定义也可以在PCB里手动创建Match Group在Relative Propagation Delay里新建一个Match Group把需要等长的网络加进去选择一个参考网络通常是时钟或选通信号设置Target长度和Tolerance在规则表格里可以看到每根线的实际长度和与目标的偏差这里有个关键设置Delta:Tolerance。Delta是相对于参考网络的目标偏差值Tolerance是允许的误差范围。比如Delta设为0Tolerance设为25mil意思就是每根线的长度必须在参考长度±25mil以内。4.3 XNet穿透被动器件的等长追踪实际项目中高速信号路径上往往串有电阻或电容比如DDR的端接电阻。如果只按网络名做等长工具只会计算电阻到芯片这一段电阻另一边的走线就被忽略了。这时候就需要用到XNet功能。XNet的原理是把被动器件电阻、电容、电感视为透明把器件两端的网络合并成一个逻辑网络。在约束管理器里XNet会自动识别串联器件并创建对应的XNet网络。你只需要对XNet做等长规则工具就会把整条路径的长度都算进去。创建XNet的方法在约束管理器的Net分类下找到目标网络右键选择“Create → XNet”工具会自动搜索该网络上的串联器件并生成XNet。如果自动识别不准确也可以手动指定器件。实操心得XNet创建后原来的网络名会变成XNet的子网络。在布线时你仍然操作的是原始网络但等长检查会自动按XNet的总长度来算。这个机制在做DDR端接电阻匹配时特别有用。4.4 绕线补偿的实操技巧知道了哪根线短了、短了多少接下来就是绕线补偿。Allegro 17.4提供了Delay Tune功能Route → Delay Tune可以自动生成蛇形绕线。绕线的时候有几个参数需要关注Amplitude蛇形线的幅度也就是绕出去的宽度。幅度越大单位长度内补偿的长度越多但占用的空间也越大Gap蛇形线之间的间距。这个值必须满足3W规则间距至少是线宽的两倍否则会产生串扰Max Length单段蛇形线的最大长度我的经验是Amplitude一般设为线宽的4到6倍Gap设为线宽的3到4倍。比如4mil线宽Amplitude设16-24milGap设12-16mil。这样既能有效补偿长度又不会引入明显的串扰。绕线的位置也有讲究。补偿应该加在信号的接收端附近而不是发射端。原因是信号从发射端出发经过绕线区域时会产生额外的寄生电容和电感如果绕线靠近发射端这些寄生参数会影响信号的上升沿如果靠近接收端信号已经基本稳定影响相对较小。另外蛇形线不要绕得太密。有些人为了在有限空间里补偿足够的长度把蛇形线绕得非常紧凑结果线间耦合严重反而恶化了信号质量。宁可多占一点空间也要保证绕线质量。5. 差分对与间距约束的联动设置5.1 差分对的约束逻辑差分信号在约束管理器里是一个独立的管理维度。差分对的约束包括三个方面差分阻抗、对内等长、对间间距。差分阻抗的设定跟单端阻抗类似也是通过Cross Section关联叠层参数来计算。常见的差分阻抗有90ΩUSB、100Ω以太网、PCIe、85Ω部分DDR差分时钟。在约束管理器里差分对的阻抗规则会自动关联到线宽和间距——你改了线宽工具会提示阻抗变化反之亦然。对内等长Intra-Pair Skew是指差分对两根线之间的长度差。这个值通常要求很严一般控制在5mil以内高速信号甚至要求2mil以内。在约束管理器里差分对的等长规则在Electrical → Differential Pair里设置。对间间距Inter-Pair Spacing是指不同差分对之间的距离。这个值至少要满足3W规则高速差分对之间建议保持5W以上以减少串扰。5.2 差分对创建的实操流程在Allegro 17.4里创建差分对有两种方式一种是在原理图里定义差分对通过Diff Pair属性另一种是在PCB里手动创建。手动创建的步骤在约束管理器的Electrical → Differential Pair里点击“Create → Differential Pair”然后从网络列表里选择正负两根线。工具会自动识别命名规则比如DDR_CLK_P和DDR_CLK_N也可以手动指定。创建完成后需要给差分对分配规则集。规则集里要设置线宽、间距、阻抗、等长误差等参数。这里有个细节差分对的线宽和间距是联动的。如果你改了线宽间距可能需要相应调整才能维持目标阻抗。Allegro 17.4的约束管理器会在你修改参数时实时显示计算出的阻抗值方便你判断是否满足要求。5.3 间距规则的层级设计间距规则Spacing Constraint是约束管理器里最复杂的部分之一因为它涉及的组合非常多线到线、线到焊盘、线到过孔、线到铜皮、过孔到过孔……每一种组合都可以单独设规则。我的建议是分层设计间距规则全局默认规则设置一个通用的最小间距比如6mil。这个规则适用于所有没有特殊要求的网络网络类规则给电源网络、高速信号网络分别设置更严格的间距。比如电源对电源的间距可以设8mil高速信号对高速信号的间距设12mil单个网络规则对特别敏感的网络如时钟、模拟信号单独设置间距这样分层的好处是规则清晰、易于维护。如果所有网络都用同一个间距规则要么太松导致密度上不去要么太紧导致DRC报错满天飞。在Allegro 17.4里间距规则的设置入口在Spacing → All Layers。你可以按网络类、总线、差分对等维度来组织规则。表格里的每一个单元格代表一种组合的间距值填好后工具会自动应用。注意间距规则的优先级也是从具体到通用。如果你给某个网络单独设了间距规则它会覆盖网络类和全局规则。所以设置完规则后一定要用Constraint Manager的“Analyze”功能检查一下有没有冲突。6. 约束管理器的验证与问题排查实录6.1 DRC验证让工具帮你找问题规则设好了线也拉完了接下来就是验证。Allegro 17.4的DRCDesign Rule Check可以在布线过程中实时运行也可以在最后做一次全板检查。实时DRC的好处是发现问题早、修复成本低。你可以在Setup → Constraints → Modes里开启“On-Line DRC”这样每次布线操作后工具都会自动检查。但实时DRC会消耗一定的系统资源如果板子很大、规则很复杂可能会感觉卡顿。这时候可以关掉实时DRC改用批量检查。批量DRC的入口在Tools → Quick Reports → DRC Report或者在Constraint Manager里点击“Analyze → DRC”。检查完成后违规项会显示在DRC列表里双击可以定位到具体位置。6.2 常见DRC违规与排查方法在实际项目中最常见的DRC违规集中在以下几类违规类型典型原因排查方法线宽违规布线时手动改窄了线宽检查该网络的Physical规则确认Default值是否被覆盖间距违规走线太靠近焊盘或铜皮用Show Element查看具体间距值对比Spacing规则等长违规绕线不足或绕线位置不对在Constraint Manager里查看实际长度与目标的偏差差分对违规对内等长超差或阻抗不匹配检查差分对的Skew规则和Cross Section参数过孔违规过孔类型不在允许列表里检查Physical规则里的Via List设置排查DRC的时候我习惯先用Show Element快捷键F4点选违规位置看看工具报的具体数值是多少然后跟规则里的设定值对比。很多时候问题不是规则设错了而是布线时不小心改了参数。6.3 等长验证的实操细节等长验证是约束管理器里最常用的功能之一。在Constraint Manager的Relative Propagation Delay表格里你可以看到每根线的实际长度、目标长度、偏差值。表格里会用颜色标注状态绿色表示在容差范围内黄色表示接近边界红色表示超差。但这里有个容易踩的坑工具显示的长度是走线中心线的长度不是信号的实际传播延迟。如果走线经过了不同的层比如从外层换到内层传播速度会不一样实际延迟跟物理长度会有偏差。Allegro 17.4支持Z-axis Delay计算可以在Cross Section里设置每层的传播速度工具会自动把物理长度换算成时间延迟。要开启这个功能需要在Constraint Manager的Analysis Modes里勾选“Z-axis Delay”。开启后等长表格里会同时显示物理长度和时间延迟两个维度判断等长是否满足要求会更准确。6.4 规则冲突的排查与解决约束管理器里的规则多了难免会出现冲突。比如你给某个网络设了线宽规则又给它所属的网络类设了不同的线宽规则工具会按优先级选择但有时候结果不是你想要的。排查规则冲突的方法是在Constraint Manager里选中目标网络右键选择“Show → Effective Rules”工具会显示当前实际生效的规则来源。如果发现生效的规则不是你预期的那个就顺着优先级链往上找看看是哪一级的规则覆盖了你的设置。解决冲突的原则是尽量在高层级解决问题不要用覆盖规则来打补丁。如果发现某个网络类的规则不合理就改网络类的规则而不是给每个网络单独设覆盖。覆盖规则多了后期维护会非常痛苦。7. 约束管理器在实际项目中的经验总结7.1 规则模板的复用如果你经常做类似的设计比如同一平台的多个项目建议把约束规则做成模板。Allegro 17.4支持把Constraint Manager里的规则导出为CSV文件下次做新项目时直接导入省去重复设置的麻烦。导出的方法是在Constraint Manager里选择“File → Export → Constraints”选择要导出的规则类别保存为CSV。导入时选择“File → Import → Constraints”选择对应的CSV文件即可。但要注意导入规则后一定要检查叠层参数。因为阻抗规则是跟叠层绑定的如果新项目的叠层跟旧项目不一样导入的线宽规则可能不满足阻抗要求。这时候需要根据新的叠层重新计算线宽。7.2 与板厂的沟通要点约束管理器里设的规则最终是要板厂能实现的。所以在设规则之前一定要跟板厂确认几个关键参数最小线宽、最小间距、最小过孔、铜厚、叠层结构。特别是阻抗控制线一定要把叠层结构和阻抗要求明确告诉板厂让他们确认能否实现。有些板厂的半固化片型号有限可能无法精确匹配你设计的介质厚度这时候就需要调整线宽来适配。我的习惯是在约束管理器里设好规则后导出一份约束报告Constraint Report连同Gerber文件一起发给板厂。这样板厂能清楚知道哪些线需要阻抗控制、哪些线需要等长匹配避免生产出来的板子不符合设计要求。7.3 约束管理器的性能优化对于大型设计比如层数多、网络多、规则复杂的板子约束管理器可能会变得很卡。这时候可以做一些优化关闭不必要的实时DRC检查改用批量检查减少规则覆盖的数量尽量用网络类来管理定期清理不再使用的规则集如果板子特别大可以考虑把设计拆分成多个模块分别做约束管理另外Allegro 17.4的约束管理器支持规则缓存可以把常用的规则集缓存到本地加快加载速度。这个功能在Setup → Constraints → Cache里设置。7.4 从约束管理器看设计流程的改进用了约束管理器之后我的设计流程发生了明显变化。以前是“布局→布线→检查→返工”现在是“定规则→布局→布线实时约束→验证”。后者的效率明显更高因为大部分问题在布线过程中就被工具拦住了不用等到最后才发现。但这个流程也有一个前提规则本身要是正确的。如果规则设错了工具会“忠实地”执行错误的规则结果可能比没有规则还糟糕。所以花时间理解每一条规则的物理意义比急着动手布线更重要。8. 几个容易被忽略的约束管理器细节8.1 Same Net Spacing的妙用Same Net Spacing是约束管理器里一个不太起眼但很实用的功能。它管的是同一个网络内部的间距比如焊盘出线时的颈缩、过孔与走线的避让、铜皮与走线的连接等。默认情况下Same Net Spacing的规则比较宽松因为同网络的东西本来就连在一起没必要严格限制。但在某些场景下比如BGA出线时焊盘之间的走线如果间距太小会导致蚀刻不干净这时候就需要设置Same Net Spacing规则来约束。设置方法在Spacing → Same Net Spacing里针对不同的对象组合如Pad到Line、Via到Line设置最小间距。这个值通常比普通间距规则小一些但也不能太小一般建议不小于4mil。8.2 约束管理器的快捷键设置Allegro 17.4的约束管理器支持自定义快捷键可以大幅提升操作效率。常用的快捷键包括打开约束管理器默认没有快捷键建议设为CtrlShiftC切换规则类别可以用Tab键在Physical、Spacing、Electrical之间切换搜索网络CtrlF输入网络名快速定位应用规则CtrlA把当前规则应用到选中的网络快捷键的设置入口在Setup → User Preferences → Ui → Bindkeys。你可以把常用的操作绑定到顺手的键位上减少鼠标点击次数。8.3 约束管理器与Skill脚本的结合如果你会写Allegro Skill脚本可以进一步扩展约束管理器的功能。比如写一个脚本自动检查所有差分对的等长是否满足要求或者批量修改某个网络类的线宽规则。Skill脚本操作约束管理器的核心API是axlDBGetConstraint和axlDBSetConstraint。通过这些API可以读取和修改规则数据库里的参数。具体的用法可以参考Allegro的Skill开发文档这里就不展开了。但要注意Skill脚本修改规则后一定要手动验证。脚本执行的结果不一定符合预期特别是涉及规则优先级的时候很容易出现覆盖错误。建议脚本执行后用Constraint Manager的“Analyze”功能做一次全面检查。8.4 约束管理器的版本兼容性Allegro 17.4的约束管理器跟16.x版本有一些不兼容的地方。如果你从16.x升级到17.4打开旧设计时可能会发现部分规则丢失或显示异常。这是因为17.4的规则数据库结构做了调整。处理方法是打开旧设计后先在Constraint Manager里做一次“File → Export → Constraints”把规则导出为CSV然后新建一个17.4的设计把CSV导入进去。导入后逐条检查规则是否正确特别是阻抗和等长相关的规则因为这些规则跟叠层绑定最容易出问题。另外如果你需要把Allegro的设计转到其他工具比如PADS约束规则通常无法直接转换。这时候需要手动在新工具里重建规则或者用工具自带的转换功能尽量保留规则信息。转换后一定要做一次完整的DRC检查确保规则没有丢失。9. 约束管理器实战中的几个真实案例9.1 DDR3等长匹配的完整流程之前做过一个DDR3-1600的项目数据线有64根分成8个字节组每组8根DQ加1对DQS。等长要求是DQ相对于DQS的偏差在±20mil以内DQS相对于时钟的偏差在±50mil以内。我的操作流程是这样的首先在原理图里把DQ和DQS定义成Bus然后在PCB的Constraint Manager里创建Match Group。每个字节组一个Match Group参考网络设为对应的DQS。Tolerance设为20milDelta设为0。布线的时候先用Delay Tune把每根DQ的长度调到跟DQS接近然后再做精细调整。这里有个技巧先绕短线再绕长线。因为短线需要补偿的长度多绕线占用的空间大先绕短线可以避免后面空间不够。长线只需要微调放在最后处理。全部绕完后在Constraint Manager里检查等长表格确保所有DQ都在绿色范围内。然后做一次全板DRC确认没有其他违规。最后导出约束报告连同Gerber一起发给板厂。9.2 差分对阻抗不匹配的排查有一次做USB 3.0的板子差分阻抗要求90Ω但打样回来的板子测试发现阻抗只有82Ω。排查过程是这样的首先确认叠层参数是否跟板厂实际使用的一致发现板厂用的半固化片介电常数是4.5而我设计时用的是4.3。介电常数变大了阻抗就偏低。解决方法有两个一是调整线宽把差分对的线宽从5mil加到5.5mil二是调整间距把对内间距从7mil加到8mil。我选择了调整间距因为线宽改了会影响布线密度。调整后在Constraint Manager里重新计算阻抗确认达到90Ω后重新出Gerber。这个案例的教训是叠层参数一定要跟板厂确认后再填入Cross Section。不同板厂的板材参数差异很大用错参数算出来的阻抗是不准的。9.3 约束管理器规则丢失的恢复还有一次遇到一个诡异的问题打开一个之前做好的设计发现Constraint Manager里的规则全部消失了。排查后发现是因为设计文件被意外保存成了旧版本格式规则数据库不兼容。恢复方法是从备份文件里找到最近一次的Constraint Export CSV重新导入。如果没有备份就只能手动重建规则了。从那以后我养成了一个习惯每次完成规则设置后立即导出CSV备份。这个操作只需要几秒钟但关键时刻能省下几个小时的重建时间。10. 约束管理器之外的配套技能10.1 叠层设计对约束管理的影响约束管理器里的很多规则都跟叠层绑定所以叠层设计是约束管理的前置工作。叠层设计要考虑的因素包括信号层数、电源层数、介质厚度、铜厚、板材类型等。对于高速设计通常建议把高速信号走在内层带状线因为内层有参考平面屏蔽阻抗更稳定串扰更小。但内层走线的传播速度比外层慢做等长的时候要注意这个差异。叠层设计完成后要在Allegro的Cross Section编辑器里准确填入每层的参数。这些参数会直接影响约束管理器里的阻抗计算和等长计算所以一定要填对。10.2 封装设计对约束管理的影响封装的焊盘尺寸、引脚间距、散热焊盘等参数会影响约束管理器里的间距规则和线宽规则。比如BGA封装的焊盘间距很小出线时线宽和间距都要相应缩小这时候就需要在约束管理器里给BGA区域的网络设置更严格的规则。另外封装的引脚长度也会影响等长计算。有些封装的引脚内部长度差异很大比如某些连接器做等长的时候要把封装内部的长度也算进去。Allegro 17.4支持在封装里定义Pin Delay约束管理器会自动把这个延迟加到总长度里。10.3 约束管理器与仿真工具的联动约束管理器里设的规则最终目的是保证信号完整性。如果条件允许可以在规则设好后做一次信号完整性仿真验证规则是否合理。Allegro 17.4可以和Sigrity等仿真工具联动把约束管理器里的规则直接导入仿真环境。仿真的结果可以反过来指导规则的调整。比如仿真发现某根线的过冲太大可能是线宽太宽导致阻抗偏低这时候就可以在约束管理器里调整线宽规则。这种“规则→仿真→调整规则”的迭代流程是高速设计的最佳实践。11. 写在最后约束管理器这个东西刚上手的时候会觉得繁琐——要设那么多规则还要理解每个参数的物理意义。但用熟了之后会发现它其实是PCB设计里最省时间的工具。因为大部分设计错误都能在布线阶段被拦住不用等到打样回来才发现问题。我个人的体会是花在约束管理器上的每一分钟都能在后期调试和返工上省下十分钟。特别是做高速板子的时候约束管理器不是“可选项”而是“必选项”。最后分享一个小技巧如果你不确定某个规则该怎么设可以先设一个宽松的值布完线后看DRC报告根据违规情况逐步收紧。这种“迭代收紧”的方法比一开始就追求完美规则要实际得多也更适合新手入门。
返回列表