ARTICLE DETAIL

资讯详情

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

Allegro 17.4 DRC全流程:从规则配置到错误排查的工程实战

Allegro 17.4 DRC全流程:从规则配置到错误排查的工程实战 1. 一次投板前 DRC 报错 160 个的真实回头路去年做一款三相电源控制板原理图检查完毕、布线拉通、丝印整理得干干净净板子视觉上挑不出毛病。发给加工厂之前我习惯性跑了一遍完整 DRC——结果跳出来 160 个错误。当时整个人是懵的因为在线 DRC 一直是开着的平时也没看到几个报错标记。冷静下来逐个点开 DRC Browser 才发现真正影响制造的只有零星几个其余全是规则配置的问题默认规则里丝印到焊盘的间距设得过于严苛导致大量丝印文字过近报错同网络间距规则没有单独设过SMD 焊盘和同网络的过孔被判定为违规还有几处铜皮孤岛是因为铺铜优先级配置不合理导致避让失败。这个经历让我彻底意识到Allegro 17.4 里的 DRC 并不是“点一下按钮等结果”那么简单而是一套从约束管理器、检查模式到错误浏览器的完整体系。配置错、模式错、解读错任何一个环节出问题要么误报一堆让你白忙要么漏报真错误让你带病投产。这篇文章就把 17.4 版本下 DRC 全流程梳理清楚。无论是初次接触 Allegro 的新手还是从 16.6 老版本升级上来的工程师看完之后应该都能独立完成从规则设置、检查执行到错误排查的完整闭环。我尽量把操作步骤写细同时把那些文档里不写、只有实际项目里才能踩到的坑一并讲清楚。2. 跑 DRC 之前规则体系才是真正的检查依据很多人一上来就点 DRC 检查结果报错一大堆或者什么都不报其实都没搞清楚一件事DRC 检查的依据是什么是你在约束管理器里定义的那些规则集。规则设得不对DRC 的结果就没有参考价值。2.1 四类核心约束你得知道管的是哪块地Allegro 17.4 的约束管理器Setup - Constraints - Constraint Manager里默认把规则分成四大体系约束类型管什么常见检查项Physical物理实现走线宽度、过孔类型、跨层切换、neck 线宽Spacing对象间距走线到走线、走线到焊盘、过孔到焊盘等Same Net Spacing同网络对象间距同一网络的引脚与过孔、铜皮与引脚之间Manufacturing制造工艺丝印到焊盘、min solder mask sliver、文字重叠Electrical电气规则差分对等长、总线匹配、相对传播延迟、阻抗要求我见过不少朋友只配了 Spacing 和 PhysicalManufacturing 和 Same Net 完全不碰。结果投板前 DRC 一跑丝印压焊盘、同网络铜皮贴死引脚这类问题全部偷偷漏过去板子做回来才发现一堆工艺隐患。记住DRC 只能检查你设置了规则的项目没设规则的范围它“看不到”哪怕设计已经严重违背可制造性常识。2.2 网络类和区域规则全局一套规则会害死人实际项目中整板不可能只有一套规则。电源板的走线间距和 BGA 扇出区的间距肯定不一样差分对的线宽和普通信号线也不应该一样。17.4 里处理这种差异的主流方式就是Net Class和区域规则。以我的习惯为例先给整个板子设一套默认 Spacing 规则比如 6mil 的 line-to-line、8mil 的 line-to-pad、8mil 的 pad-to-pad然后把电源网络和高压网络单独拉一个 Net Class间距提升到 20mil 甚至更高如果板上还有 AC 输入和 DC 输出相邻的区域再画一个 Route Keepout 或 Shape Keepout 区域配合区域规则把间距单独约束。这套做法比全局统一规则高效得多DRC 跑出来的结果也更贴近实际需求。设置区域规则时有一个经常被忽视的坑区域规则只有在对象完全落在区域内时才会生效如果是“部分跨越边界”的走线Allegro 会按照跨越那一段所在区域来判定。所以画禁止铺铜区、间距隔离区的时候一定要比实际需要多留出 10-20mil 的余量否则边缘处的 DRC 结果会和预期偏差很大。2.3 铜皮优先级和 DRC 之间的隐秘关联热搜词里很多人在搜“cadence 铜皮 优先级”“cadence 禁止铺铜区”这两个功能其实和 DRC 结果直接挂钩。铜皮优先级Display - Priority决定的是当两片不同网络的铺铜叠加时谁该避让谁。如果优先级设置反了高压网络铜皮没有让位低压网络铜皮被迫压线DRC 就会报出一片 area violation。这也是很多人把板子画完一铺铜就冒出几十个 DRC 错误的真正原因。处理顺序我建议是先设置铜皮优先级再铺铜最后跑 DRC。如果顺序反了铺完铜才发现避让错误改起来要回炉重做非常痛苦。具体的优先级参数设置可以参考 Al egro 帮助文档里关于 Shape 优先级的说明一般原则是“大网络让位给小网络”“高压让位给低压”“电源让位给信号”。每次涉及多层铜皮调整后务必重新执行 DRC 看结果。3. 完整运行 DRC 的操作流程模式、执行、报告一个不能少规则体系搭好之后才能真正开始跑 DRC。这一步如果菜单路径不熟或者清除了 DRC 标记整个检查过程就不完整后面排查错误会非常麻烦。3.1 在线 DRC 和批量 DRC两个模式分工不同Allegro 17.4 的 DRC 模式可以在 Setup - Constraints - Modes 里配置。左侧有一大排检查项每一项右侧都有下拉或者勾选选项你可以把某些规则设为 Online实时检查、Batch仅批量执行时检查或者 Off关闭。我的建议是物理规则和间距规则设 Online。这两类错误和布线操作强相关实时标记出来可以当场改。同网络间距规则设 Online因为这类错误一旦画完铜皮就会冒出来越早看到越好。制造规则和装配规则设 Batch。这些规则只在投板前有意义实时开着你会在布线过程中被丝印间距、文字重叠报错烦死。打开 Online DRC 后正常情况下操作时就能看到绿点、白圈之类的 DRC 标记实时出现。如果在编辑过程中一个标记都看不到先别庆幸大概率是 DRC 模式压根没开或者颜色设置里被隐藏了这个问题后面会说。3.2 投板前的全量检查执行步骤投板之前我通常会按照这个顺序走一遍全量检查在 Setup - Constraints - Modes 里点击 All On把所有检查项全部打开。注意“打开”包括两类一类是“检查项本身启用”另一类是“该检查项是否设置为 Batch/Online 模式”两个维度都得确认。打开 Display - Status 对话框看右侧 DRC Errors 部分的统计。如果 Total DRC Errors 不为 0先到下面各个分类里定位。点击 Status 对话框里的 Update DRC 按钮如果你用的版本没有这个按钮就刷新或者重新执行检查让 Allegro 重新计算一次当前设计确保统计数字是最新结果。打开 File - Export - Reports选择 Design Rules Check 报告导出。导出的报告包含每个错误的类型、坐标、涉及对象可以在图形界面跳转定位也可以发给同事协同排查。在 Display - DRC Browser 里逐条确认错误处理后再次刷新 Status直到 DRC Errors 全部清零。这套流程我称它为“投板前的三件套”模式全开、状态清零、报告导出。任何一个环节被跳过我都不会把板子发给加工厂。3.3 17.4 里特有的 DRC Browser比 16.6 好用十倍16.6 时代看 DRC 只能靠满板的标记和跑报告效率很低。17.4 的 DRC BrowserDisplay - DRC Browser是我最推荐大家用起来的功能。它把所有的 DRC 错误按类别、层、网络做成了列表支持多条件过滤和点击跳转。操作上很简单打开 DRC Browser 后左侧是错误分类树比如 Spacing、Physical、Electrical、Manufacturing右侧是符合当前条件的错误列表每一行都包含错误类型、约束名称、对象引用、所在的层、坐标。双击任意一行图形窗口就会缩放到该错误位置并把相关对象高亮出来。对于几百个错误的板子这个工具能节省大量时间。我通常会先用类别过滤把“可忽略的假错误”快速排除只保留真正需要手工处理的。用顺了之后你会发现以前害怕 DRC 报错现在反而希望它一次把问题全列出来因为排查效率真的非常高。4. 高频 DRC 错误逐一拆解每一个我都踩过光会说“跑 DRC”不够更重要的是能看懂错误、修对错误。这一节把 17.4 里最常见的 DRC 错误分类说明并给出对应的排查思路。4.1 间距类错误报错数量永远是最多的那一类间距类Spacing错误是 DRC 报错的主力常见的有 line-to-line spacing、line-to-pad spacing、pad-to-pad spacing、via-to-pin spacing。表面上看就是两个字“太近”但根因千差万别BGA 扇出区域过孔过于密集via-to-via 间距不够是最常见的。回到约束管理器检查 BGA 区域的规则是否和默认规则一致或者调整扇出参数的间距余量。模拟信号区域可能是人工推挤走线时把线靠得过近这种直接 Slide 拉出间距即可。焊盘之间间距报错但是视觉上看起来还行这种要怀疑规则设置本身过严比如默认 line-to-pad 设了 12mil 而工厂工艺只需 6mil会造成大量误报。适当调整规则后 DRC 会立刻清净。间距类错误排查时有一个技巧在 DRC Browser 里把错误按 Net 分组很多时候一片错误都是同一条关键网络在闹事比如某条敏感信号线被布得离电源太近一次改完这一条网络几十个错误同时消失。4.2 线宽类错误不只是“细了”这么简单Physical 规则里的 line width violation 看着很简单就是走线宽度不满足最小值或最大值。但实际项目里我遇到的线宽错误大约有一半不是因为线真的细了而是规则对象没匹配上。举个例子某条网络明明属于电源 Net Class规则要求 20mil 线宽但实际走线上有一部分是 10mil 连接焊盘neck 模式。如果约束管理器里 Physical 规则集的 Neck 选项没正确设置DRC 会认为那段 10mil 的线违反最小线宽而报错。这种情况并不是设计错误而是规则没有配置 Neck 允许值。排查思路先看错误提示里的 Constraint Name 和实际对象判断是“真违反”还是“规则对象不匹配”。真违反了就用布线编辑器改线宽或者用 Constraints 里的 Reroute 工具统一修正规则不匹配就去约束管理器改设置别去一根根改线。4.3 过孔类错误焊盘和过孔的关系要看清过孔类 DRC 错误通常集中在两类一是via-to-pin spacing即过孔离焊盘太近二是hole-to-hole spacing即过孔内部钻孔之间的间距不足。制造层面上过孔到焊盘的距离太近可能导致焊接时吃锡不良、焊盘剥离甚至塞孔破壁。处理办法首先看是不是器件引脚附近的空间实在有限如果是考虑改用 HDI 盲埋孔或者减小过孔尺寸如果空间充裕直接用 Slide 把过孔移开。还有一类过孔错误比较隐蔽限高区域的过孔报错。很多板子在结构件附近画了 Keepout但 Keepout 只限制了走线和铜皮没有限制过孔。此时 DRC 虽然不报错但板子做回来过孔顶到结构件整块报废。要避免这个问题除了规则设置最好在板框设计阶段就把 Keepout 范围画大并且对过孔单独设置 DRC 检查项。4.4 铜皮与孤岛错误铺铜高大上排查火葬场铜皮相关的 DRC 错误在列表里往往表现为 “shape to pin spacing” “shape to line spacing” 或 “unconnected copper”。前两种是铜皮和别的对象间距不足后一种就是孤铜orphan island。孤铜的成因很简单铺铜时铜皮被分割成不连接主铜皮的小块这些小块没有网络连接悬浮在板上。17.4 里铺铜参数设置没有选对或者修改过避让对象后孤铜会自动出现。处理方式在 Shape 菜单下找到Global Dynamic Shape Parameters动态铜皮参数把 Void Controls 里的 Orphans 选项设成 Remove Islands Again如果确认不需要保留孤铜然后对整板重新铺一次铜皮。注意此时需要进入 Shape 填充/更新流程让铜皮完全重算。清理完孤铜后再跑 DRC铜皮相关的错误通常会大幅减少。铜皮优先级导致的问题我在 2.3 里已经提过这里再补一句如果 DRC 报告里出现大面积 area violation 且集中在铜皮边界不要急着删除铜皮先检查一下整板铜皮优先级然后重新 Z-copy 或重新铺铜。4.5 未连接引脚和悬空线没有网络关系的“暗雷”“Unconnected pin”错误代表某些引脚根本没有连上网络或者引脚虽然有网络名但物理布线并没有通。这类错误通常也会在飞线ratsnest里体现但飞线密密麻麻时很容易看漏。排查技巧在 DRC Browser 里过滤 Network 为空的错误或者在图形里把飞线全部显示出来用 Set Net 命令高亮某一个网络看引脚是否被走线真实连通。有一个典型案例我在做一块四层板时某个去耦电容的地引脚看起来连上了过孔但实际只连到了表层的焊盘没有通过过孔连接到内层地平面DRC 报 Unconnected pin。当时用了高亮才看出来因为表层焊盘和过孔重叠在一起视觉上完全看不出断开。所以这类错误一定不要只看图形要结合 DRC Browser 里的对象引用逐个确认。4.6 丝印和制造类错误投板前最容易忽略Manufacturing 体系下的错误类型很多例如 silkscreen to pad spacing、silk to silk spacing、min solder mask sliver、text on component 等。这些错误在研发阶段经常被忽略但加工厂看到了一般都会反馈回来严重时直接影响生产质量。丝印压焊盘的问题我见过很多新手在摆放位号时随手一放结果标号骑在焊盘上。投板前 DRC 报出来一片丝印间距错误后最佳处理方式是重新调整文字位置而不是简单压小字宽。17.4 里可以选中所有丝印文字后用右键菜单里的 Reposition 或相关的自动排版功能让文字快速集中移动到器件体边缘再手工微调。如果只是追求 DRC 清零而把文字硬塞进器件本体后续做贴片时根本看不清位号。4.7 高频 DRC 错误一表速查错误类型常见根因快速处理line-to-line spacing布线太近或规则过严推挤走线/调整规则line-to-pad spacing焊盘附近走线太近Slide 调整走线via-to-pin spacing扇出过密/孔位偏差移动过孔或缩小过孔hole-to-hole spacing钻孔间距不足调整过孔位置/规则line width violation线真细了或 Neck 规则没配改线宽/配置 Neck 规则shape to line/pin spacing铜皮避让不够调整 Shape 全局或局部参数unconnected copper孤铜铺铜参数/避让变化删孤铜重铺/开启 Remove Islandsunconnected pin引脚没接上/视觉误导结合飞线与高亮逐个确认silkscreen to pad位号压在焊盘重排丝印文字位置min solder mask sliver阻焊桥宽度不足调整开窗/增大阻焊间距5. 定位和批量清除 DRC 错误的实操技巧错误列了一大堆真正动手清理时还得靠一套高效的实操方法不然几百个错误一个个点过去会崩溃。5.1 让 DRC 标记重新可见这不是废话很多工程师跑来问“为什么我 DRC 跑完没看到任何标记”十个里有八个是 DRC 标记的颜色被关了。Allegro 17.4 里DRC 标记的显示由 Color/Visibility 对话框控制一般在 “Board Geometry” 分类下的 DRC Error Markers以及 “Manufacturing” 下的 DRC 标记层。如果这里没勾选运行时再有多少错误也不会显示标记。建议一开始就把 DRC 标记层的颜色设成高对比度比如白色或亮黄色并单独分配一层方便后续随时开关。快捷键方面可以在 env 文件里单独绑定一个切换 DRC 标记显示的功能键我自己的习惯是绑定到 F10按一下看标记再按一下隐藏排查效率提升明显。5.2 按网络过滤从“大海捞针”变“按图索骥”在 DRC Browser 中除了分类过滤建议充分利用 Net 过滤条件。比如整板报错里有 40 个错误都集中在 TX_P 这个差分网络直接把过滤条件设为该网络瞬间得到一排错误列表。如果恰好是差分对问题一次性把这对差分线的等长和间距全部修好然后重新跑 DRC错误归零率相当高。还有一类过滤是按层过滤。双面板、四层板的不少 DRC 错误集中在内层区域比如地层铜皮的避让问题此时只看某一层的错误能有效避免跨层干扰。5.3 批量修复的两种典型场景批量修复不等于盲目批量。以我的经验真正适合批量修复的只有两类场景一是规则配置修正后重新计算。比如你把某个 Net Class 的间距从 8mil 放宽到 6mil设计上实际间距都满足 6mil此时不需要手工改任何对象直接在约束管理器里改规则然后运行一次 DRC原本报错的一批对象自动变成合规。保存规则和 DB Doctor 检查后整个板子的 DRC 统计会大幅改善。二是统一调整过孔或线宽。比如某条网络因为规则变化需要统一加宽可以使用全局编辑或 Route - Reroute 配合约束管理器把该网络的所有走线统一改成目标线宽。这种修改也要同步更新相关铜皮的安全间距否则铜皮避让会出问题。改完务必重新跑一次 DRC。5.4 DB Doctor 和文件检查错误清空前的最后一道保险经常有工程师清理完 DRC 后保存再打开发现标记数量变化或者某些错误“复活”。这不是玄学往往是数据库损坏或缓存问题。Allegro 17.4 自带一个数据库修复工具DB Doctor通常在开始菜单的 Cadence 工具组里也可在 Allegro 中通过文件菜单触发检查运行它会扫描当前数据库的完整性、修复图形和网络关联问题。我建议每次大规模修改布线或铺铜后都跑一次 DB Doctor再进行最终 DRC。很多“清了又回来”的 DRC 错误跑完 DB Doctor 再重新做一次数据库检查就能彻底解决。5.5 实际项目中的 DRC 清零标准DRC 清零是所有错误的最终目标吗答案是不一定。实际工程中有些 DRC 错误是规则设置过于理想化的产物比如最小线宽设成 5mil 但板上没有需要走 5mil 的区域部分对象处于规则边界导致反复报错。这类“假错误”如果经过确认不影响制造和信号质量可以在 DRC Browser 里右键标记为 Waived如果版本支持或者通过规则配置让它们不再出现。但要注意Waive 错误之前必须拿着报告和结构件、加工厂做过确认绝不能因为“看着不重要”就随手忽略。我的经验是投板前给自己列一个清单明确哪些 DRC 报错可以接受、原因是什么并把这个清单随设计文件一起归档。这样即使后续出现问题也有迹可循。6. 关于 DRC 的几句大实话最后分享一点个人体会。我见过太多工程师把 DRC 当成“投板前的仪式”——跑一遍看到零错误就放心发出去。但 DRC 归根到底只是一次“规则体检”它检查的是你设置过的那些规则而不是设计的全部合理性。信号完整性、电源完整性、可制造性、可维修性这些维度很多是 DRC 覆盖不到的。所以我把 DRC 定位成“锦上添花”更准确它保证你不犯低级错误但真正决定板子质量的还是你在布线、铺铜、结构设计上花的功夫。另外DRC 的学习过程比较枯燥尤其是 17.4 这种功能庞大的版本。我的建议是从自己的真实项目出发把每次 DRC 报错截图记录下来分类整理成自己的问题库。等积累了三五个项目你就会发现自己处理 DRC 的速度越来越快很多错误看一眼就知道该怎么改。这也是我从当年那个对着 160 个错误手足无措的工程师慢慢变成现在能够快速定位问题的人的原因。
返回列表