ARTICLE DETAIL

资讯详情

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

Allegro板型层叠结构设置全攻略:从踩坑到实战

Allegro板型层叠结构设置全攻略:从踩坑到实战 我一开始做 Allegro 的时候总觉得层叠结构设置是个“后面再说”的事情反正先画板再看也不迟。直到有一块 0.5mm BGA 的板子布线、扇出、电源分割全做完了板厂打样回来一测表层 50Ω 阻抗全偏到 60Ω 以上原因发现得特别尴尬——Cross-section 里参考层到表层的介质厚度填深了 0.1mm线宽计算跟着整体偏差。从那以后我彻底改掉这个习惯任何 Allegro PCB 项目板型、板框、叠层结构必须先定死再谈其他。今天这篇就围绕 Allegro 里板型层叠结构设置这件事把我从踩坑到理顺的完整经验讲清楚。很多人一听到“层叠结构”第一反应是“去 Setup 里把层数和厚度填上不就行了”。真没这么简单。层叠设置串联着阻抗计算、平面分割、负片出光绘、以及后续转 PADS 或导出 DXF 时都会出问题的层映射关系。这篇适合正在学 Allegro 的硬件工程师也适合那些已经画过几块板但总觉得“叠层是板厂的事”的同行——看完你就知道叠层这步偷懒后面要花好几倍时间补。1. 先把板框、外形和叠层这三件事拆开看1.1 我吃过亏的一次“先布线后补叠层”大多数初学者会把“板型”理解成板框外形把“层叠”理解成有几层铜然后直接忽略两者之间的耦合关系。实际上Allegro 里的板型层叠结构设置是两件事一个是在平面坐标系里把板的物理外形画出来一个是在 Z 轴方向把每一层铜箔和介质层按顺序叠起来。前者管“这块板长什么样”后者管“每一层是什么材料、多厚、正片还是负片、参考层在哪”。我吃过一次亏有一块控制板外形不复杂当时偷懒直接用 Line 画了个闭合框就开始布局没有去 Setup 里生成真正的 Design Outline。结果后面做平面层分割的时候Allegro 无法正确识别板内区域动态铜皮到处乱跑螺丝孔附近更是死活做不出想要的避让。后来查了半天才发现板框只是几条线段并没有被软件当成一个封闭 Shape。1.2 Allegro 里板型正确的建立顺序现在我做新板子板型建立顺序基本固定结构工程师发 DXF先File Import DXF导入到 Board Geometry / Outline 这个 Subclass。用Setup Outlines Design Outline选择外部轮廓生成标准板型。通过Edit Z-copy把外形复制到 Route Keepin 和 Package Keepin留出走线区和布局区。这一步做完Allegro 才知道“板子实际边界在哪儿”。别小看这个动作后面不管是铺铜、挖槽、生成工艺边还是做阻抗设计都要依赖这个 Shape 而不是几条 Line。1.3 螺丝孔、定位孔在叠层里不该有的“隐藏影响”还有一个常见问题就是螺丝孔。很多人问 Allegro 24.1 里螺丝孔怎么做其实核心不是“放一个孔”那么简单而是你的叠层必须为它准备好避让空间。如果螺丝孔用的是普通 PTH 焊盘在一个负片平面层上没有单独设置 anti-pad或者铺动态铜皮时没给机械孔做避让板厂光绘出来就会出现“孔边缘离铜皮太近”“定位孔边上有一圈毛刺”这种问题。这跟叠层有什么关系关系大了。螺丝孔的焊盘穿越所有导电层每一层的正片/负片属性不同避让方式就不同。负片层靠 padstack 里的 anti-pad 做避让正片层靠 Shape 的 Clearance 或者 Void 做避让。你如果只在叠层里看到一层“铜”和“介质”的表格却不知道每个内层到底是 CONDUCTOR 还是 PLANE那螺丝孔迟早给你上一课。2. Cross-section 编辑器里每一列到底在管什么2.1 从菜单到界面容易看漏的字段Allegro 的层叠编辑入口在Setup Cross-section界面打开之后是一个类似表格的结构每一行代表一层左侧显示层名右侧一堆字段。很多人第一次打开就懵其实核心字段也就那么几个Subclass Name、Type、Material、Thickness、Conductivity、Dielectric Constant、Loss Tangent、Negative Artwork、Shield、Width 和 Impedance。这里最容易看漏的是右手边的 Width 和 Impedance 两列。它们不是摆设而是 Allegro 根据你填的叠层参数、选择的目标层、以及当前线宽实时算出的参考阻抗。换句话说你完全可以在 Cross-section 里先做一个初步的“线宽—阻抗”验证不需要一上来就开 Polar 或 Sigrity。字段之间的关系是动态的你改了某一层介电常数下面的铜箔层和介质层的位置不变但算出的阻抗会变你改了介质厚度阻抗也会跟着变。所以每次填完叠层我都要再从头到尾扫一遍这些字段而不是填完就不管了。2.2 Type、Material、Thickness 的设置逻辑Type 这个字段决定了这一层是正片布线层还是负片平面层。Allegro 里常见的 Type 有 CONDUCTOR、PLANE、DIELECTRIC 三种。CONDUCTOR 就是普通走线层也叫“正片层”你画什么光绘出来就是什么PLANE 通常给电源或地平面用默认一整层都是铜靠 anti-etch 或负片方式挖空DIELECTRIC 是绝缘介质层不导电用来隔开上下两层铜。Material 字段不光是“起个名字”它直接影响电磁参数。铜箔一般填 Copper介质层按实际板材填 FR-4、Rogers、Megtron 等。Thickness 要特别注意单位Allegro 默认显示的是 mil 还是 mm取决于你的 Setup 单位。铜箔厚度更常见的是盎司1oz 对应约 35μm0.5oz 约 17.5μm2oz 约 70μm。别直接把板厂说的“外层 1oz 成品铜厚 1.4mil”当成 0.035mm 填进去还要考虑电镀加厚那部分。2.3 正片负片与铜厚出光绘前的两个隐患正片和负片这个事很多工程师画板时无所谓等到 Gerber 出来才傻眼。Cross-section 里每个导电层都有对应的 Negative Artwork 属性。如果你把信号层设成 CONDUCTOR出光绘一般走正片如果你把内层电源层设成 PLANE那出 Gerber 时应该走负片。一旦叠层 Type 设置和 Artwork 里 Film 的正负属性对不上Gerber 打开就是“该有的线消失了、该空的铜却还在”的诡异现象。铜厚这个细节也容易出问题。Cross-section 里填的 Thickness 究竟是“基铜厚度”还是“成品铜厚”不同板厂理解不同。即便是同一块板表层和内层铜厚也可能不一样表层常常要做电镀加厚到 1.5oz内层保持 1oz。你如果图省事全部填 1oz板厂打样时按实际叠层做内层没问题表层阻抗线宽就不对。正确做法是直接拿板厂反馈的成品叠层表一格一格照着填。3. 手把手配置一版8层板叠层3.1 从模板开始还是手动逐层加Allegro 自带一些叠层模板但我的习惯是模板可以拿来起步但一定不要直接按模板出图。原因很简单模板里那些材料参数是通用值不是你这家板厂的生产参数。你真正需要的是板厂针对你这个板厚、层数、铜厚给的那张层压结构表。没有这张表叠层填得再整齐后面阻抗全是虚的。手动建叠层时我一般先从板厂给的图里数清楚“几层铜、几层介质”然后在 Cross-section 里用 Add Layer 逐层加。比如一个 8 层板导电层通常是 8 行每一对导电层之间有一行 DIELECTRIC总共 7 行介质。不要少加介质层否则两层铜会紧挨着阻抗直接崩。3.2 各层的参数参考值附表格下面是一个简化的 8 层板叠层示例。注意这只是一个示意结构具体厚度和材料一定要以板厂实际叠层表为准。从 TOP 到 BOTTOM 共 8 个导电层、7 层介质铜厚统一按 1oz 示例。层名TypeMaterialThickness说明TOPCONDUCTORCopper35μm顶层布线主要信号层Diel1DIELECTRICFR-4 PP100μm表层到 GND01 的介质GND01PLANECopper35μm地平面负片层Diel2DIELECTRICFR-4 Core200μm芯板SIG02CONDUCTORCopper35μm第二信号层Diel3DIELECTRICFR-4 PP200μm半固化片PWR03PLANECopper35μm电源平面负片层Diel4DIELECTRICFR-4 Core200μm芯板SIG04CONDUCTORCopper35μm第三信号层Diel5DIELECTRICFR-4 PP200μm半固化片GND05PLANECopper35μm地平面负片层Diel6DIELECTRICFR-4 Core200μm芯板SIG06CONDUCTORCopper35μm第四信号层Diel7DIELECTRICFR-4 PP100μm底层到 GND05 的介质BOTTOMCONDUCTORCopper35μm底层布线这个表填到 Cross-section 里只是第一步。每一个 DIELECTRIC 行的 Dielectric Constant 和 Loss Tangent 你也要填上否则高层信号完整性分析没有参考数据。FR-4 的 Dk 一般填 4.2 到 4.5 之间的某个值Df 填 0.015 到 0.02 左右。具体用多少要跟板厂确认是哪个等级的 FR-4。3.3 差分线、单端线分别该盯哪些层叠层配好之后差分线和单端线关心的事情不太一样。单端线最关心的是这条线到最近参考平面的距离和介质 Dk。表层走线参考相邻内层平面内层走线要看上下两个参考平面。带状线结构下如果上下介质不对称Allegro 算出来的阻抗会偏向介质更薄、耦合更强的那一侧。所以内层走线尽量让上下参考层距离对称差分线还要额外注意线与线之间的间距。差分对在 Cross-section 里看的是“同层耦合 对地耦合”的平衡。如果你把差分线布在表层但表层和参考平面之间的距离过厚差分线之间耦合太强地耦合太弱就很容易出现“单端阻抗偏了、差模阻抗却看着还行”的情况。等到了 SI 仿真阶段你会发现串扰和共模噪声都压不住。叠层阶段就要先确认哪几层用于差分走线然后让这一层和参考层之间的介质厚度尽量匹配目标阻抗。4. 叠层数据和阻抗计算的联动4.1 为什么说叠层先定、线宽才有意义Allegro 画线时线宽是你在 Options 面板里手填的。但“这条线该填多少宽度”不是拍脑袋拍出来的它取决于叠层。同样都是 50Ω 单端线L1-L2 之间介质厚度 4mil 的板子和 5mil 的板子线宽可能差 1 到 2mil。这个差别在短线上无所谓跑到高速信号上就是干扰和反射的区别。我自己做板卡的时候一定会先跟板厂把叠层定下来让板厂用他们的实际压合参数算一版线宽推荐值。然后把推荐值填进 Allegro 的 Constraint Manager 里的 Physical 约束再开始布线。如果在布线中途改叠层不是不能改而是所有已经布好的线的阻抗都需要重新评估。这也是为什么我一直强调叠层要最先定。4.2 在 Allegro 里反推线宽的具体做法如果不想每一步都开外部工具Cross-section 里的 Width 列可以直接帮你做初算。过程大概是先在叠层表里把目标层、参考层、介质厚度和 Dk 填好然后在 Width 列里试填一个线宽看旁边的 Impedance 值离 50Ω 还是 90Ω 更近。多试几次就得到一个初步线宽。再用这个线宽去建立一个 Physical Constraint Set把它设成默认线宽。但这只是初算。对于 10Gbps 以上高速链路我还是会拿 Polar Si8000 或 Allegro Sigrity 做一次更完整的仿真因为真实板材的 Dk 随频率变化玻璃布编织效应、阻焊层厚度、铜箔粗糙度都会影响实际阻抗。Allegro 的 Cross-section 适合快速迭代不适合替代最终仿真。4.3 FR4 与高频材料的 Dk/Df 取值陷阱材料参数这块我见过最多的问题就是把板材商规格书上的 Dk 直接填进去。规格书上的 Dk 通常是在 1MHz 或 1GHz 下测的但实际工作频率可能到 5GHz、10GHz。FR-4 的 Dk 在高频下会下降Df 会上升如果你拿着低频 Dk 去算高频阻抗结果会偏乐观。常见材料参考如下但最终要以板材厂提供的数据和板厂实测为准材料Dk 典型值Df 典型值常见用途普通 FR-44.2~4.50.015~0.02低频、常规数字板高 Tg FR-44.0~4.30.01~0.015可靠性要求高的板子中损耗 FR-43.9~4.10.005~0.0110Gbps 以下高速Rogers RO4350B3.480.0037射频、微波Megtron 63.3~3.50.002~0.00325Gbps 以上高速还有一个容易忽略的是 PP 和 Core 的 Dk 可能不一样。同一块板子信号层之间的介质如果是半固化片跟芯板的树脂含量不同Dk 就有差异。Allegro 的 Cross-section 里每一行 DIELECTRIC 都可以单独填 Dk一定要分开填别只把第一层介质填了就全板通用。5. 层叠检查与常见翻车现场5.1 用 DRC 和报告查什么问题叠层填完之后我不会马上开布局。我会先跑一遍 DRC 和叠层检查重点看三件事层数是否和 PCB 板厂确认的一致每一层 Type 是否合理有没有出现层名重复或空介质层。Allegro 的 DRC 能帮你查平面层连通性、间距、布线断路这些问题但叠层参数本身的“合理性”DRC 不一定能提示。比如你把介质厚度填成 0DRC 不一定报错但阻抗计算会跑出离谱值。所以我检查时更依赖肉眼扫一遍 Cross-section 表格以及把板厂叠层表并排对比。如果公司内部有 skill 脚本也可以做成一键检查层名、材料、铜厚、Dk 是否和模板一致省很多事。5.2 叠层改了板子跟着动的几个连锁反应设计中途改叠层我最怕的不是重新填表格而是后续连锁反应。最常见的几种情况调整了某一层介质厚度所有参考该介质层的走线阻抗都变了但线宽不会自动更新需要重新计算。把某一层从 CONDUCTOR 改成 PLANE这层上原本布好的走线会变得非常尴尬因为平面层默认整层铜再走线就是和铜皮打架。删掉一层介质或一层铜可能引起层名错位所有关联到旧层名的规则、差分对约束、平面网络分配全部要重新对。改板厚后过孔的长度变了如果你用的是固定焊盘栈过孔阻抗和寄生效应对高速信号的影响也要重新评估。我现在的原则是层叠结构一旦确认除非板厂那边有不可抗拒的工艺问题否则绝不在布线中途随意改。所有叠层变更都要走一次完整的“确认—仿真—规则更新—重跑 DRC”流程。5.3 allegro转格式、导出DXF/光绘时的层映射叠层设置和转格式的关系很多人要等做文件交接时才遇到。比如 Allegro 转 PADS最常出的问题就是内层平面映射错误。Allegro 里 GND 层是 PLANE 负片转到 PADS 后如果不做层类型映射可能会变成普通布线层导致那一层全是铜却没有网络分配板厂看着就傻。导出 DXF 给结构工程师时也一样DXF 只保留几何信息叠层厚度和材料不会自动带过去。所以每次导 DXF 我都会单独导一份“层叠说明文档”写明每一层的层名、材料和厚度请结构工程师在 3D 模型里按这个参数复核干涉。至于出光绘Artwork Control Form 里每一层 Film 必须和 Cross-section 的 Subclass 一一对应。负片平面层如果没有把 Film 设成 Negative会得到一整层的正片铜完全不是你想要的样子。这就是为什么我每次出 Gerber 前都要复查一遍层叠表格和光绘 Film 设置而不是“直接出完发板厂”。6. 我自己的检查清单和一点经验6.1 每次层叠设置完后我都做哪几步确认我现在每块板子叠层设置完固定会按下面这个清单过一遍先拿板厂叠层表核对 Cross-section 里每一层 Type 是否和表中一致。再核对铜厚表层、内层、参考层分别填的多少单位有没有混用。核对介质层数量和顺序特别是 PP 和 Core 的位置。逐一检查 Dk/Df至少保证高速信号所在的介质层不是默认值。用 Width 列试算一组单端和差分阻抗记录线宽推荐值。把推荐值填进 Constraint Manager 的 Physical 约束。检查所有平面层的 Negative Artwork 属性、以及 padstack 中相关孔的 anti-pad 设置。最后出 DRC确认没有平面层断路和间距问题。这套清单看着繁琐但每次执行完都很踏实。尤其是高速板叠层就是整个设计的地基。你不想在布线完成后因为参考层填错而把所有走线宽度重推一遍。6.2 多板互连、叠层对比时的小技巧如果你在同一套项目里有多块板比如背板和子板叠层很容易因为各填各的而出现层数对不上、板材不一致、阻抗不匹配的问题。我的习惯是做一个“叠层对照表”按信号速率和板厚把几块板的叠层参数放在一起看。比如背板的高速差分走线层用了哪个材料子板对应连接器出来的走线层最好也用相近的结构否则连接处阻抗突变会很明显。另外从旧板子复制叠层确实快但别直接无脑复制。板厂可能改过工艺板材批次可能不同旧板子的 Dk 和厚度在新批次里未必还准确。复制完成后我一定把新板子的板厂叠层表再手动核对一遍看到材料名和厚度完全一致才放心。最后说一个小技巧叠层设置完我会把 Cross-section 窗口截图存到项目目录并和板厂的叠层确认单放在同一个文件夹。这样等板子回来做阻抗测试或者后续改版时先拿这个截图跟测试结果对比再决定要不要动线宽、间距或介质厚度。很多“莫名其妙”的阻抗问题回头一看其实都是叠层参数和实际板子不一致导致的。把这关把住后面能省掉大部分返工时间。
返回列表