ARTICLE DETAIL

资讯详情

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

Cadence Allegro Module功能实战:多板拼版与DRC避坑指南

Cadence Allegro Module功能实战:多板拼版与DRC避坑指南 1. 拼版这件事为什么值得单独拎出来讲做硬件这行十几年我经手的板子少说也有几百块。单板设计再复杂只要原理图理清楚、布局布线按规矩来基本都能搞定。但一提到拼版很多工程师就开始头疼了。尤其是手头有好几块独立设计的小板功能各不相同却要合并到一张大板上交付生产的时候那感觉就像把几个不同尺寸的拼图硬塞进一个框里。Cadence Allegro在PCB设计领域的地位不用我多说用过的都知道它在高速布线和大规模设计上的优势。但它的Module功能说实话很多人平时画单板根本想不起来用。我第一次接触Module是在一个多板合并的项目里当时客户要求把电源板、控制板和接口板三块独立PCB合并成一张异形大板工期只有三天。如果按传统方式重新布局布线根本来不及。后来翻Allegro的文档发现Module功能天生就是干这个的——它能把一块已经设计好的PCB当作一个可复用的模块直接放置到另一块PCB上保留原有的布局、布线和网络连接。这篇文章就是把我这些年用Module功能做拼版的经验完整梳理出来。从思路拆解到具体操作从DRC避坑到实际案例全部是踩过坑之后总结的干货。不管你是刚接触Allegro的新手还是用了几年但没碰过Module的老手看完都能直接上手操作。尤其是那些经常需要做多板合并、模块复用、版本迭代的团队这套方法能帮你省下大量重复劳动的时间。2. 拼版思路与Module功能的核心逻辑2.1 传统拼版方式的三个致命伤在讲Module之前先说说传统拼版为什么让人痛苦。最常见的做法是新建一个PCB文件然后把各个子板的原理图整合到一起重新导入网表再手动布局布线。这种做法有三个绕不开的问题。第一个问题是重复劳动。每块子板在独立设计时已经完成了布局布线而且经过了DRC检查和信号完整性验证。合并时如果重新来一遍等于把之前的工作全部推翻。更麻烦的是重新布线很难保证和原来完全一致尤其是那些已经调过阻抗、等长的关键信号稍有偏差就得重新仿真验证。第二个问题是DRC灾难。多块板合并后网络数量暴增间距规则、线宽规则、过孔规则可能各不相同。如果规则没设好DRC报错能刷满整个屏幕。我见过最夸张的一次合并后DRC报了三千多条光分类整理就花了一整天。第三个问题是版本同步困难。如果子板后续有修改合并后的大板需要同步更新传统方式只能手动对照修改极易遗漏。而Module方式下子板修改后重新生成Module大板直接更新即可版本管理清晰得多。2.2 Module功能到底解决了什么问题Allegro的Module功能本质上是把一块PCB设计封装成一个可复用的“超级元件”。这个Module里包含了子板的布局信息、布线信息、网络连接、器件封装、甚至规则约束。当你把它放置到目标PCB上时Allegro会自动把这些内容全部还原出来就像把一块板子原封不动地“搬”到了另一块板子上。注意Module不是简单的复制粘贴。复制粘贴只保留图形元素网络连接和规则约束会丢失。Module保留的是完整的设计意图。这个功能的核心价值在于设计复用。对于拼版场景它意味着你可以让每块子板保持独立设计、独立验证最后通过Module机制合并到一起。子板的DRC在独立阶段就已经清理干净合并后只需要处理板间连接和全局规则工作量大幅降低。2.3 什么场景适合用Module拼版不是所有拼版都适合用Module。根据我的经验以下几种场景用Module效果最好。多块功能独立的子板合并比如电源板、控制板、接口板各自独立设计最后合并到一张大板上。每块子板内部网络复杂但板间连接少Module方式能最大程度保留原有设计。同一模块多次复用比如一张大板上需要放四个相同的传感器接口电路每个电路布局布线完全一致。做一个Module然后放置四次比手动复制四次快得多而且保证一致性。版本迭代中的模块更新产品升级时只改了某个子模块用Module更新可以精确替换不影响其他部分。团队协作中的设计交接不同工程师负责不同模块各自完成后生成Module由一个人统一合并。反过来如果子板之间网络连接非常密集或者需要重新规划层叠结构那Module方式就不太合适了老老实实重新设计反而更快。2.4 Module与相关概念的区分这里有必要澄清几个容易混淆的概念。Allegro里有Module、Reuse、Copy、Sub-drawing这几个功能用途完全不同。功能保留布局保留布线保留网络保留规则适用场景Module是是是是拼版、模块复用Reuse是是部分部分同板内复用Copy是是否否简单图形复制Sub-drawing是是否否局部图形导出Module和Reuse的区别在于Reuse通常用于同一块PCB内部的电路复用而Module是跨PCB文件的复用。Sub-drawing虽然也能导出布局布线但它不保留网络连接放置后需要手动重新分配网络拼版场景下基本不可用。3. Module拼版实操全流程拆解3.1 前期准备子板设计的规范化要求Module拼版能不能顺利很大程度上取决于子板设计阶段有没有做好规范。我总结了几条硬性要求建议在子板设计时就严格执行。第一网络命名要统一规划。如果子板A有个网络叫VCC_3V3子板B也有个网络叫VCC_3V3合并后Allegro会自动把它们连在一起。这有时候是想要的有时候不是。如果两块板的3.3V电源是独立的那就必须用不同的网络名比如VCC_3V3_A和VCC_3V3_B。我的习惯是在子板设计初期就给所有网络加前缀比如PWR_、CTRL_、IF_这样合并时一目了然。第二器件位号不能冲突。子板A有R1子板B也有R1合并后就会打架。解决办法是在子板设计时给位号加前缀比如电源板用PWR_R1、PWR_C1控制板用CTRL_R1、CTRL_C1。Allegro支持位号自动重编号但自动重编号后原理图和PCB的对应关系会乱不如前期就规划好。第三层叠结构要兼容。如果子板是四层板目标大板是六层板Module放置时层映射会出问题。最好让子板和目标板的层叠结构一致或者至少信号层和电源层的对应关系明确。我一般会在拼版前画一张层映射表确认每层的用途对应正确。第四规则约束要提前导出。每块子板的线宽、间距、过孔规则可能不同。生成Module时这些规则会一起带过去。如果目标板已有规则可能会冲突。建议在子板设计完成后把关键规则导出备份合并时根据实际情况决定是保留子板规则还是统一用大板规则。3.2 生成Module文件的关键步骤子板设计完成并通过DRC检查后就可以生成Module了。具体操作如下。首先打开子板的PCB文件确保所有器件已经放置到位布线完成DRC干净。然后选择菜单栏的Tools - Create Module弹出对话框。在对话框中需要设置几个关键参数。Module的原点位置很重要建议选择子板的左下角或者某个定位孔中心作为原点这样放置到目标板时坐标计算方便。Module的名称要有意义比如PWR_MODULE、CTRL_MODULE不要用默认的module1、module2。提示生成Module前建议先执行一次完整的DRC检查确保没有未布线的网络和间距违规。Module会把DRC问题一起带过去合并后再改很麻烦。选择需要包含在Module中的元素时默认是全选。但如果子板上有一些测试点或者临时标记不需要带到目标板可以在这里取消勾选。另外如果子板上有Keepout区域或者禁止布线区也要确认是否需要保留。点击OK后Allegro会生成一个.mdd文件这就是Module文件。默认保存在当前工程目录下建议统一放到一个专门的Module库目录里方便管理。3.3 在目标板中放置Module打开目标大板的PCB文件选择Place - Module找到刚才生成的.mdd文件。这时候鼠标上会附着整个Module的轮廓移动鼠标可以看到Module跟随移动。放置时有几个要点。坐标定位要准确如果子板在最终大板上有明确的安装位置建议先在目标板上画好定位孔或者外形框放置Module时用坐标输入精确定位。Allegro支持在放置时直接输入X、Y坐标比鼠标拖拽精确得多。旋转角度要注意。Module放置时默认角度是生成时的角度如果需要旋转可以在放置前设置旋转角度。但旋转后器件的位号文字方向可能会变需要手动调整。层映射是放置时的关键步骤。如果子板和目标板的层数不同Allegro会弹出层映射对话框。这里要仔细核对每一层的对应关系尤其是电源层和地层。映射错了会导致布线跑到错误的层上后果很严重。放置完成后Module内的所有器件、布线、网络都会出现在目标板上。这时候先别急着做其他操作立即执行一次DRC看看有没有明显的冲突。3.4 板间连接与全局规则处理Module放置完成后各子板还是相对独立的状态。接下来要处理板间连接。板间连接通常包括电源连接、地连接和信号连接。电源和地一般通过铜皮或者粗线连接信号连接则根据实际需求布线。这里有个技巧如果子板之间需要连接的信号不多可以在子板设计时就预留好连接器或者测试点合并后直接对接。全局规则的处理是拼版中最容易出问题的环节。每块子板可能有自己的规则集合并后需要统一。我的做法是先保留各子板的规则用DRC检查一遍看看哪些规则冲突。然后根据优先级决定保留哪套规则。通常线宽和间距规则以最严格的那套为准过孔规则根据实际工艺能力统一。注意规则冲突不要强行覆盖。比如子板A的最小线宽是4mil子板B是6mil如果统一改成6mil子板A的细线会全部报错。正确做法是保留子板A的4mil规则但在大板规则里设置区域规则让子板A所在区域使用4mil规则。3.5 拼版后的DRC清理策略拼版后的DRC清理是工作量最大的环节。我的策略是分三步走。第一步分类统计。先跑一次完整DRC把报错按类型分类。常见的类型有间距违规、线宽违规、未连接网络、孤岛铜皮等。统计每类有多少条心里有数。第二步批量处理。对于重复性高的报错比如同一区域的大量间距违规可以用Allegro的DRC浏览器批量定位逐个确认。有些报错是误报比如不同子板的丝印重叠这种可以忽略或者调整丝印位置。第三步重点排查。板间连接处的DRC要重点检查尤其是电源和地的连接。这些地方电流大线宽不够会导致发热甚至烧板。我一般会用Allegro的电流密度检查功能确认电源路径的线宽满足要求。4. DRC避坑技巧与常见问题实录4.1 网络名冲突导致的短路隐患这是拼版中最隐蔽也最危险的问题。两块子板如果有同名网络但实际不应该连接合并后Allegro会自动把它们连在一起DRC可能不会报错但实际电路就短路了。我踩过一次坑电源板和控制板都有一个网络叫GND合并后自动连在一起这本来没问题。但控制板还有一个网络叫VCC_5V电源板也有一个VCC_5V但电源板的VCC_5V是未经稳压的输入控制板的VCC_5V是稳压后的输出。合并后两个网络连在一起稳压芯片直接烧了。避免方法很简单子板设计时所有网络加前缀。电源板的网络统一加PWR_控制板加CTRL_接口板加IF_。合并后检查一遍网络列表确认没有意外合并的网络。4.2 位号重复的批量修改方法位号重复虽然不会导致电气问题但会影响装配和调试。Allegro提供了自动重编号功能但用之前要备份。操作路径是Tools - Rename - Renumber。在弹出的对话框中选择重新编号的范围和规则。我一般选择按位置重新编号从左上到右下这样位号分布有规律方便查找。提示自动重编号后原理图和PCB的位号对应关系会改变。如果后续需要对比原理图和PCB建议在重编号前导出位号对照表。如果不想自动重编号也可以手动修改。在Allegro中选中器件右键选择Properties修改Reference Designator即可。但器件多了手动改很累还是前期加前缀最省事。4.3 层叠不一致引发的布线错层子板是四层板目标板是六层板Module放置时如果层映射没设对子板的顶层布线可能跑到目标板的第三层去。这种错误DRC不一定能查出来因为布线本身是合法的只是位置不对。我的做法是拼版前先确认子板和目标板的层叠结构。如果层数不同在放置Module时仔细核对层映射对话框。通常信号层对应信号层电源层对应电源层地层对应地层。如果目标板有额外的层子板的布线不会自动映射过去需要手动调整。最稳妥的方式是让子板和目标板使用相同的层叠结构。如果做不到至少在拼版后逐层检查一遍确认没有布线跑错层。4.4 铜皮孤岛与散热焊盘的处理拼版后经常出现铜皮孤岛尤其是子板边缘和板间连接处。孤岛铜皮会影响信号完整性还可能造成焊接不良。处理方法是在Allegro中使用Shape - Delete Islands功能自动删除孤岛铜皮。但删除前要确认这些孤岛确实没有电气作用。有些孤岛是散热焊盘的一部分删了会影响散热。散热焊盘的处理要特别注意。子板上的散热焊盘在合并后可能需要重新连接到大板的铜皮上。如果散热焊盘的网络和铜皮网络一致Allegro会自动连接。如果不一致需要手动添加连接线或者调整铜皮网络。4.5 常见DRC报错速查表报错类型常见原因解决方法间距违规子板规则与目标板规则冲突设置区域规则保留子板原有规则线宽违规电源路径线宽不足加粗电源线或铺铜未连接网络板间连接遗漏检查网络列表补充连接孤岛铜皮子板边缘铜皮未连接删除孤岛或添加连接过孔丝印重叠子板丝印与目标板丝印冲突调整丝印位置或隐藏非必要丝印器件重叠Module放置位置冲突调整Module位置或旋转角度过孔违规过孔规则不统一统一过孔规则或设置区域规则4.6 拼版后的验证与输出DRC清理干净后别急着出Gerber。先做几项验证。网络连通性检查用Allegro的Report功能导出网络连接报告确认所有需要连接的网络都连通了不需要连接的网络没有意外短路。器件清单核对导出BOM和原理图的BOM对比确认器件数量和位号一致。层叠检查逐层查看确认没有布线跑错层铜皮没有孤岛。丝印检查确认所有器件的丝印清晰可见没有重叠遮挡。验证通过后就可以输出Gerber和钻孔文件了。输出前记得更新DRC报告确保最终版本是干净的。5. 实战案例三块子板合并的完整记录5.1 项目背景与子板概况去年接了一个工业控制器的项目客户要求把电源板、主控板和接口板合并到一张大板上。三块子板原本是独立设计独立生产的现在要整合成一张板以降低成本。电源板是四层板尺寸80mm x 60mm主要器件是开关电源芯片和功率电感。主控板是六层板尺寸100mm x 80mm有DDR3内存和高速差分信号。接口板是四层板尺寸60mm x 40mm主要是各种连接器和保护电路。三块板的层叠结构不同网络命名也没有统一规划位号更是各编各的。这是典型的“脏”子板拼版难度不小。5.2 拼版前的规范化改造面对这种情况直接生成Module肯定不行。我先做了一轮规范化改造。网络方面给电源板所有网络加PWR_前缀主控板加MCU_前缀接口板加IF_前缀。用Allegro的Edit - Net Logic功能批量修改网络名注意要同步修改原理图否则网表对不上。位号方面电源板加PWR_前缀主控板加MCU_前缀接口板加IF_前缀。同样用批量修改功能在PCB和原理图中同步执行。层叠方面以主控板的六层结构为基准把电源板和接口板都改成六层。电源板增加两个内层作为电源和地平面接口板也做同样处理。这样三块板的层叠结构统一Module放置时不会出现层映射问题。规则方面导出三块板的规则集对比后取最严格的线宽和间距规则作为全局规则。电源板的电源线宽要求最大单独设置区域规则。5.3 Module生成与放置过程规范化改造完成后分别打开三块子板的PCB文件执行Tools - Create Module。原点都选在板子的左下角定位孔中心Module名称分别为PWR_MOD、MCU_MOD、IF_MOD。生成Module时我特意检查了每个Module包含的元素。电源板的Module包含了功率电感和散热焊盘主控板的Module包含了DDR3的等长布线接口板的Module包含了连接器的定位孔。确认无误后保存。打开目标大板的PCB文件先画好外形框和定位孔。然后依次放置三个Module。电源板放在左侧主控板放在中间接口板放在右侧。放置时用坐标输入精确定位确保三块板的定位孔对齐。层映射对话框弹出时仔细核对每一层。信号层对应信号层电源层对应电源层地层对应地层。确认后点击OKModule内容全部还原到目标板上。5.4 DRC清理与板间连接放置完成后立即跑DRC报了一千多条。分类统计后发现大部分是丝印重叠和间距违规。丝印重叠是因为三块板的丝印在板间区域交叠。处理方法是调整丝印位置把非必要的丝印隐藏只保留器件位号和关键标识。间距违规主要集中在板间连接处。因为三块板的规则不同合并后有些布线不满足全局规则。我设置了区域规则让每块子板所在区域使用各自的规则板间区域使用全局规则。板间连接主要是电源和地。电源板输出5V和3.3V给主控板和接口板地用大面积铜皮连接。信号连接只有几根控制线手动布线即可。5.5 最终验证与交付DRC清理到零报错后做了几项验证。网络连通性报告显示所有网络连接正确没有意外短路。BOM对比确认器件数量和位号一致。逐层检查确认没有布线错层。输出Gerber前又跑了一次DRC确认干净。Gerber输出后用CAM工具检查了一遍确认没有缺失层和异常图形。最终交付的大板尺寸200mm x 120mm六层板三块子板的功能全部整合。客户收到后一次打样成功没有出现拼版导致的问题。6. 一些提高效率的实操心得6.1 建立Module库的长期价值如果团队经常做拼版或者模块复用建议建立一个Module库。把常用的电路模块比如电源模块、接口模块、传感器模块都做成Module存起来。新项目需要时直接调用省去重复设计的时间。Module库的目录结构可以按功能分类比如Power、Interface、Sensor、MCU等。每个Module文件命名要规范包含版本号和日期。定期更新维护确保Module和最新的设计规范一致。6.2 快捷键设置与批量操作技巧Allegro的快捷键可以大幅提高拼版效率。我常用的几个快捷键设置如下。生成ModuleFunckey cm tools create module放置ModuleFunckey pm place module运行DRCFunckey dr tools drc删除孤岛Funckey di shape delete islands批量操作方面Allegro的Find过滤器很好用。比如要批量修改所有电阻的位号可以在Find中只勾选Symbols然后框选所有电阻右键修改属性。6.3 团队协作中的Module管理规范多人协作时Module的管理要统一。建议指定一个人负责Module的生成和更新其他人只负责使用。Module文件放在共享目录版本号要清晰。子板修改后要及时重新生成Module并通知使用方更新。更新时注意备份原Module以防新版本有问题可以回退。6.4 拼版项目的文件管理建议拼版项目的文件比单板项目多管理要规范。我的习惯是建立以下目录结构。Project_Root项目根目录Sub_Boards子板设计文件ModulesModule文件Merged_Board合并后的大板文件Gerber输出文件Docs文档和报告每个子板目录下保留原理图、PCB、网表、DRC报告。Module目录下按版本号存放。合并后的大板目录下保留最终版本和DRC报告。这样文件清晰后续维护方便。拼版这件事说难不难说简单也不简单。Module功能用好了能省下大量重复劳动但前提是子板设计要规范DRC清理要细致。我这些年踩过的坑大部分都是因为前期没规划好后期花几倍时间补救。希望这篇总结能帮你少走弯路一次把拼版做干净。
返回列表