在PCB设计这个行当里泡了这么多年,Allegro算是用得最久、踩坑也最多的工具了。要说哪个环节看着不起眼、实际最容易让人栽跟头,我一定投票给板框定义。别小看这一圈线——它决定了后续铺铜范围、DRC边界、装配尺寸、光绘层面出图,甚至后面打样厂照不照你的板子做,全看它靠不靠谱。规则矩形板还好,一旦碰上异形板、圆弧边、阶梯槽,再叠加DXF从结构那边导过来,问题就一串一串地来。这篇东西我不打算写成官方手册,纯以实战角度,把Allegro里板框定义的几种主流方式、异形板处理经验、以及DXF导入环节最容易踩的坑,一次性捋清楚。
这篇内容适合正在用Allegro做板子的硬件工程师、PCB Layout工程师,特别是被“板框线选不中”“单位怎么又不对了”“轮廓明明闭合却转不成shape”这类问题折腾过的人。无论你是刚接触Allegro的新手,还是已经被异形板折磨过的老手,下面这些操作路径和避坑经验,基本都能直接拿来用。
1. Allegro里板框到底指的是什么
1.1 板框层在Allegro中的真实身份
很多新手刚用Allegro时会懵:怎么有Design Outline、Board Geometry/Outline、Route Keepin、Package Keepin这么多跟“边”有关的东西,到底哪个才是板框?先说结论:真正决定最终PCB外形的那条闭合轮廓线,业内默认放在Board Geometry/Outline层,这个层在Allegro内部归属于Board Geometry这个大class。你给板厂出加工说明时,导出的“外形尺寸图”也是从这一层来的。Design Outline在16.6、17.2、17.4里也可以生成,但它更多是一种辅助设计边界,不如Board Geometry/Outline用得普遍。我这里统一以Board Geometry/Outline为准。
至于Route Keepin和Package Keepin,它们本身不是板框,而是你画完板框之后“为了让布线不超出板边、器件不贴到板边”而生成的约束区域。很多人把它们混为一谈,其实搞反了顺序——先有Outline,后有Keepin。Outline定义了物理边界,Keepin定义了约束边界。后面我会单独讲怎么从板框一键生成这两类Keepin,这里先建立概念就好。
1.2 板框定义影响范围远超你的想象
板框这一圈线影响的东西非常多,我列个不完全清单:铺铜边界(负片/正片铺铜是否超出板边)、走线DRC检测范围、元件放置范围、螺丝孔与定位孔的基准、光绘文件中的外形层、3D模型导出轮廓、拼板工艺边的预留。可以说,板框一错,下面所有环节全跟着错。
我之前遇到过一个Case:结构工程师给的DXF画的是“1:1 mm”图,我导入时在Allegro里也选了mm,但导入后量出来尺寸整整大了一圈。后来查出来是CAD图纸里实际单位是mil,而图框标题栏却写的“毫米”,一个单位选择失误,整板尺寸比例直接乱掉,连板框都差出一大截。这种错误很隐蔽,因为它不报错、不红绿,只有拿尺子去量才能发现。所以这篇文章我会反复强调同一件事:板框定义完成后,第一件事一定是尺寸复核,这不是走过场,是真能救命的习惯。
2. 规则板框的定义方法:从新建PCB到标准矩形
2.1 用Design Outline向导快速生成规则板框
如果你拿到的项目是一个标准矩形板、没有特殊缺口,最简单的方式就是用Allegro自带的向导,不需要自己拿线去画。操作路径是:Setup -> Outline -> Design Outline(不同版本菜单名略有差异,16.6叫Design Outline,17.x之后在“Setup -> Outline -> Design”下面也能找到)。点开后弹出一个对话框,里面你要填的无非三类信息:宽度、高度、原点坐标,单位会跟随当前画布的User Units。
举个例子,假设我们要做一块100mm x 60mm的板子,原点放在左下角。先把单位切到毫米:Setup -> Design Parameters -> Design -> User Units选中Millimeter。然后打开Design Outline对话框,Width填100,Height填60,Origin X填0,Origin Y填0,点击OK或Apply。Allegro会直接在Board Geometry/Outline层生成一个闭合矩形,准确地说,它是四条line/arc首尾相接的封闭轮廓,并且会自动把Route Keepin和Package Keepin一并生成到位。如果你在对话框里看到了“Create Route Keepin”、“Create Package Keepin”之类的选项,默认勾选即可。
这里有一个老工程师习惯用、但新人不一定注意的细节:向导生成的矩形轮廓角上默认是直角,但实际生产里绝大多数板子都会要求倒圆角,哪怕只是R0.5mm的小圆角,也强烈建议倒一下,因为直角处容易应力集中,PCB分板时也容易崩边。这个我放到后面的倒角小节里细说。
2.2 手动绘制加精确坐标的进阶玩法
向导毕竟只能生成规则矩形,很多时候我们要的“规则板”其实不是纯矩形——比如单边切了个斜角、一边是阶梯形,这种就不能指望向导了,得手动画。手动画也不难,关键是要掌握坐标输入法。
操作流程是这样的:先把活动层切到Board Geometry/Outline,用Add -> Line命令,然后在命令窗口里依次输入坐标点,比如x 0 0回车、x 100 0回车、x 100 60回车、x 0 60回车、x 0 0回车。每次回车都会生成一段线,坐标点之间自动连线,效率非常高。Allegro命令行支持绝对坐标输入,这是我认为最被低估的绘图方式——不用在界面上慢慢挪鼠标,输入即可定位,适合所有需要精确到0.01mm的场景。
有个新手容易犯的失误:画到最后一条线时没有回到起点,结果画出一个开口轮廓。解决方法是画完最后一点后,手动输入起点的坐标将其闭合,或者用Manufacture -> Drafting -> Join Line去连接首尾线段。画完闭合轮廓后,建议立刻用Display -> Highlight选一下轮廓线,看有没有断点、缺口。如果是多段线段,还可以用Shape -> Compose Shape把它们合并成一个封闭shape,方便后续做Z-copy或检查闭合性。手动绘制看起来比向导多几步,但它不受板形限制,L形、凹槽、斜切都能搞定。
2.3 用脚本和Skill批量生成同规格板框
如果你所在的团队经常做固定尺寸的模块板(比如常见的24mm x 48mm、30mm x 30mm),每次都手动画一遍其实很浪费时间。Allegro支持脚本录制和Skill脚本编写,一条很实用的路径是:手动画一次标准板框,同时执行File -> Script -> Record把操作录制下来,保存成一个.scr脚本。以后只要File -> Script -> Replay回放一遍,板框就自动画好了,尺寸完全一致。
更进一步的做法是写一个简单的Skill函数,参数化生成板框。比如从命令行调用generate_outline(100 60 0.5),函数内部根据宽度、高度、圆角半径自动创建对应轮廓线。对于需要频繁改版、快速试方案的场景,这种批量生成方式非常高效。当然这不是必须项——如果只是偶尔画一次板子,手动绘制完全够用。但我建议至少把Script方式学会,成本低、见效快。
3. 异形板框的画法与编辑技巧
3.1 直接在Allegro里画异形轮廓的三种组合方式
异形板框听着唬人,拆解下来无非是直线、圆弧、斜线这三种基本元素的排列组合。Allegro里画异形轮廓,我通常用三种方式组合:Add -> Line画直线段、Add -> Arc with 3 points三点画弧、以及Add -> Arc w/radius指定半径画弧。对于L形、T形这类带内凹的板框,直线段就够了;带弧形边的板框,在圆弧处用Arc命令,圆心和半径信息可以从结构图里直接拿到。
举个例子,一个带半圆头的板框,结构图上给的参数是“方头100mm x 60mm,左侧为R30半圆”。操作步骤是:用Arc w/radius画左侧半圆,命令输入时指定圆心(0,30),半径为30,起点在(0,0),终点在(0,60)。然后把从(0,60)到(100,60)、再到(100,0)、回到(0,0)的直线段补上。这样画出来的轮廓就是一个完整的闭合板框,没有多余曲面,也能被Allegro正确识别。核心是理解圆弧的圆心、半径与起终点,这比闷头拖鼠标靠谱得多。
3.2 倒角、倒圆角与外轮廓修整
画完直边的异形轮廓后,往往还要对外角做处理——要么倒角(C Chamfer),要么倒圆角(Fillet)。Allegro里相关命令在Manufacture -> Drafting -> Chamfer和Manufacture -> Drafting -> Fillet。这两个命令会要求你设置参数,比如倒角宽度、圆角半径,然后点选相交的两条线段,它会在交点处自动生成过渡线。
我个人的习惯是:外部直角一律R0.3mm以上,内部直角尽量加直倒角C0.2mm~0.5mm,如果没有特殊要求则圆角尺寸取整(0.5mm、1mm、2mm均可,属于SMT拼板常见值)。千万别把圆角设成“0.01mm”这种几乎等于直角的数值,放在生产端没有任何意义,反而容易让板厂在铣外形时产生误差。另外,用Fillet命令时要注意:两条线段必须在同一层、并且相交于同一个端点,如果两者之间有极微小间隙,Allegro可能会提示“cannot find intersect point”。这时先用Show Measure量一下端点间隙,再用Edit -> Vertex微调端点坐标,或者用Edit -> Delete删掉其中一段重新画,让两条线“真正相交”。
3.3 在板框上做切槽、缺口和沉板位
异形板里还有一种很常见的情况:板框本身是一个矩形,但边上有缺口、沉板位、USB接口槽位。很多新手遇到这种情况,直接在矩形轮廓上画一个闭合的小矩形,以为那就是“挖孔”——错,板框轮廓是一个单闭环,不能同时存在两个互不相交的闭合圈,否则Allegro不知道哪条才是外形边界。
正确的做法是:把原有轮廓线打断,沿着缺口路径重新连线,让整个轮廓变成“一条整体的多段线”,只是这条多段线在某些位置凹进去了。操作上,我先用Edit -> Delete删除缺口位置的原有直线段,再用Add -> Line或Add -> Arc w/radius补上缺口的内侧边界线。这样轮廓线依然是单一闭环,中间没有多余交叉,DRC、生产都能正常识别。比如一个矩形板右边界要开一个深5mm、宽8mm的沉板位,就把右边那条线从对应区间删掉,然后把上边界到右边界到内凹三边到下边界按坐标依次连接起来即可。这个技巧看着简单,但做错的人真的不少——尤其是从原理图库转过来的板框,经常出现多个闭环,后续钻孔文件都有可能跟着错。
4. DXF导入板框完整流程与避坑指南
4.1 CAD端准备:五个必须完成的动作
异形板框如果形状复杂、曲线又多,我强烈建议别在Allegro里硬画,直接从结构那边的DXF导入。但绝大多数人在导入环节栽跟头,根子其实是CAD端没准备好。奉劝大家,向结构工程师提需求时,把下面五件事一次性说清楚,省得来回扯皮:
第一,删除无关元素。CAD图纸里往往包含尺寸标注、中心线、文字说明、安装孔标记、元件位号等,这些统统要清干净,只保留板框轮廓线和需要的定位孔线。原因很简单:Allegro导入DXF时不会自动过滤,带进来的每一条线都会成为你后期筛选的负担;如果你不小心把尺寸线也弄到了Outline层,光绘里都会出现一段莫名其妙的线。
第二,板框线必须画在单一图层。这是最容易被忽视的一点。很多结构工程师习惯把外框、内腔、辅助线分层画,到了你这边就乱套。导入前让他们把所有外轮廓线统一放在一个图层,比如“OUT”层或“Board_Outline”层,你在Allegro里做层映射时只需要把这一层映射到Board Geometry/Outline就行,省心省力。
第三,用PLINE合并轮廓线。CAD里轮廓线如果是一段段彼此独立的LINE,导出DXF后Allegro看到的全是离散线段,后面做闭合处理非常痛苦。正确的做法是先用PE(Polyline Edit)命令,将外框的所有线合并为一条完整的闭合PLINE。如果轮廓里有Spline样条曲线,需要先用PE将其转成近似的Polyline,因为Allegro对Spline支持很差,转成Polyline后虽然会有一些细微折线,但至少不会丢线。
第四,单位统一并写进沟通记录。我前面提到过,CAD图纸单位混乱是最大的坑。你应该养成一个习惯:每次导入DXF前,先用CAD的UNITS命令查一下图纸真实单位,然后明确告诉对方你要的DXF是什么单位,并在文件名或邮件里标注“单位mm”或“单位mil”。如果对方给的是mil的图,你又按mm导,板框直接缩小或放大39.37倍,基本全毁。
第五,导出低版本ASCII格式DXF。在CAD里另存为时,文件类型选择“DXF”,版本选择2000/2004/2007均可,不要选最新版。Allegro对老版本DXF兼容性更稳定。同时建议保存为ASCII而非二进制,虽然二进制文件小,但在某些版本上会碰到读取异常。
4.2 Allegro端导入:层映射与单位设置的实战细节
CAD端准备完后,到Allegro这边就清爽多了。路径是File -> Import -> DXF,打开后先看右侧的Configuration选项。首先确认DXF units和当前PCB设计的单位一致,比如DXF是毫米,Allegro当前也应切到Millimeter,再选“Same as DXF file”或手动指定毫米。如果单位不一致,可以在这里直接换算,但我的建议是宁可先去改设计单位,也不要在这里强行换算,因为换算后的线条坐标经常出现你肉眼看不出的微小偏差,后续对齐麻烦。
接着是关键环节:Edit -> Layer Mapping。这里会列出DXF文件里所有图层,你需要把板框所在的那个DXF层映射到Allegro层的Board Geometry/Outline,把定位孔/非金属孔层映射到Board Geometry/Board_Cutout之类的层(没有的话可以新建一个临时层)。其余多余的层要么不映射、要么映射到一个临时层比如Board Geometry/DXF_TEMP。我在自己项目中习惯把所有非板框元素都丢进一个临时层,这样可以先核对信息,再按其内容决定是否清理。
设置完毕后点击Import,Allegro会在Console里输出导入结果。如果长时间没有反应,别急,大图纸首次导入可能要等一两分钟;如果卡死,多半是DXF文件包含异常实体,回CAD里再清理一次。导入完成后,按Display -> Color/Visibility把相关层打开,检查图形是否到位。这时大概率会遇到我下一小节要讲的“线太碎、单位不对、闭合不了”三大问题。
4.3 导入后的板框转换、闭合检查和尺寸校验
DXF导入完成后,你手里可能只是一堆line/arc,它们并不自动等于板框。需要做三个动作:合并、闭合、验尺寸。
合并用Manufacture -> Drafting -> Join Line,先把首尾靠近但没连续的多段线段连接成一条;如果线段之间存在微小间隙,Join命令有时候会失败,这时可以用Edit -> Delete删除那一小段,用Add -> Line补上精准的连接线。闭合则可以用Shape -> Compose Shape,选择所有轮廓线,Allegro会尝试把这些线生成一个闭合shape;如果弹出“Shape is not closed”之类的提示,说明轮廓中还有没接上的断口,需要用Show Measure逐段检查端点坐标。
尺寸校验是绝对不能跳过的一步。用Dimension -> Linear测量板框的长、宽、对角线,再量几个关键的定位孔坐标,和结构图逐项比对。这里我再分享一个实用技巧:可以先在CAD里量好基准尺寸(比如“宽度=100.00mm”,高度=60.00mm),导入后如果Allegro量出来是3937mil,那就说明单位混听了,赶紧重导。另外,用Display -> Highlight把轮廓线高亮显示,肉眼检查有没有多余的短线、交叉线、重复线,这些在实际生产中都可能导致铣边轨迹异常。
如果最终确认轮廓线闭合、尺寸正确,再把它正式作为板框使用:可以继续保持Board Geometry/Outline层的line形态(这是最常用的方式),也可以利用Setup -> Outline -> Generate from selected(版本不同名称略有差异)将其转化为带Route Keepin的完整结构。我个人推荐至少保留Board Geometry/Outline层的line轮廓,同时生成对应的Route Keepin和Package Keepin,三件套齐了,后面画板DRC才不慌。
4.4 我踩过的DXF导入坑
这部分算是我个人血泪总结,单独列出来,每条都是我真实遇到过的,值得收藏。
第一个坑:导入后线条带Net属性。DXF里的实线有时候会在Allegro中变成Cline(带网络名的线),而不是Line。一旦带Net,它可能被当成电气连线,导致板框附近出现短路DRC,极其迷惑。解决办法是选中这些线,用Edit -> Decompose或Edit -> Change把它们改成Line,具体操作要看版本:Decompose可以把cline变成line,Change可以把任意线改为没有网络的Line。
第二个坑:圆角变成多边形折线。DXF导入后,CAD里的圆弧有时是近似折线(尤其是经过Spline转Polyline后),看着曲度没问题,但到了Gerber导出后,板厂用传统铣床加工还能接受,用激光切割时那一点点棱角就会暴露出来。我的处理原则是:重要圆角尽可能在Allegro里重画,用之前的Fillet命令手动修整一遍。别嫌麻烦,异形板这钱省不了。
第三个坑:增量导入导致“旧线没删,新线叠叠乐”。结构图一旦有改版,很多工程师直接在新版上重导一遍,结果旧轮廓和新轮廓叠在一起,看着乱不说,还可能让Allegro认为有多个轮廓。正确做法是导入新版前,先把旧的Outline层内容备份后全部删除,或者把新版先导入到临时层,与旧版对比修改后再替换。我在团队里一直规定:除非只是微小改动(比如某个坐标从50.0改成50.2),否则一律整体替换,这样最干净。
第四个坑:原点不一致导致整板偏移。结构图的基准点往往和PCB设计原点不重合,导入后板框可能落在距离原点很远的坐标上。这时不要慌,Edit -> Move框选所有导入图形,在Options面板里选择“Move by x,y offset”或者在命令窗口输入相对位移,把某个基准点移到设计原点。有时候为了对齐,我会先固定一个定位孔为(0,0),再把结构图上对应孔位坐标作为参考做平移。记住,对不齐越大越容易出错,尤其是拼板、装配文件输出时,原点错一位都是大问题。
5. 板框定义后的配套设置与常见问题速查
5.1 Route Keepin、Package Keepin 的一次性生成
板框定义好了,别急着布线,先把两个Keepin生成出来。一个负责约束走线和铺铜,一个负责约束器件摆放,少了它们,你的DRC会漏掉很多板边问题。路径:Setup -> Outline -> Route Keepin -> Create,然后选择“From existing outline”或直接用闭合shape创建;同样操作再对Setup -> Outline -> Package Keepin -> Create执行一遍。如果之前没有生成shape,Allegro也会提示你是否基于选中的outline轮廓自动创建。
这里有个细节:Route Keepin一般比板框内缩一个值,常见做法是保持与板框一致、或者内缩0mm~0.5mm,具体看公司工艺规范。Package Keepin同样道理。如果你做的是高速数字板,可能还要单独为模拟区域、射频区域画子Keepin,那就不是本文重点了。反正记得一点:Keepin创建后,铺铜和布线被自动约束在范围内,板框外不再出现飞线或铜箔碎片。这比SVL后期清理省心得多。
5.2 板框相关的DRC报错与排查
板框常见DRC报错主要是三种:package to outline spacing、line to outline spacing、以及因为Outline层存在带Net对象导致的短路误报。
第一种,通常是器件丝印或本体贴到板边太近,不符合设定间距。先确认Package Keepin是否生成,如果生成了还报错,那就是器件摆放超出Keepin边界,可以手动微调。第二种,一般是走线或铜皮越过了Route Keepin,排查时可以高亮Line to Outline的DRC标记,再沿着轮廓逐个处理。第三种,多由DXF导入时线条带Net引起,前面已经讲过,直接Decompose去掉Net即可。
DRC报错发生之后,先不要急着挪器件、改线。我的排查顺序是:先看板框本身是否闭合、是否有重复线、是否有Net;再看Keepin是否与轮廓完全匹配;最后才去查器件和走线。很多DRC其实是板框自身不干净引起的,而不是布线问题。
5.3 高频问题速查表
| 问题现象 | 常见原因 | 解决方案 |
|---|---|---|
| 板框尺寸放大/缩小几十倍 | DXF单位与Allegro单位不一致 | 用UNITS确认CAD单位,Allegro侧重设单位并重新导入 |
| 板框线选不中、无法高亮 | 线在冻结/隐藏层,或层映射错误 | Display -> Color/Visibility打开对应层,确认层映射 |
| 轮廓看起来闭合,Compose Shape却报错 | 端点处有微小间隙或重复线 | Show Measure检查端点,用Join/Delete/Add Line修复 |
| 导入后线条带颜色但无法转换成Outline | 图形是Text/Block引用而非Line | CAD端炸开块(Explode),转成PLINE |
| 圆弧在导入后缺失或变形 | Spline未转Polyline | CAD端用PE命令转成Polyline,或Allegro内重画圆弧 |
| 旧版板框总有一小段残影 | 增量导入叠加未清理干净 | 整体替换前先删除旧Outline内容 |
如果你碰到表里没覆盖的情况,我的建议是把问题拆小:先确认单位、再确认层、再确认闭合性、再确认Net属性,按这个顺序排查,99%的板框问题都能定位到某一环。
最后再分享一个偏门但实用的经验:结构图修改频繁的阶段,我会先把每次导入的DXF都放到Board Geometry/DXF_TEMP层,然后在这个临时层上对照旧板框做差异检查。确定没问题了,再一次性把TEMP层的内容替换到Outline层。这样做的好处是,改版再频繁,正式板框层永远是干净的。毕竟板框是PCB的家,家里乱不乱,直接决定后面一段时间你的工作效率。