1. 为什么Design_Outline和Cutout层值得单独拎出来讲
画PCB这件事,很多人把精力全花在布线和布局上,觉得板框嘛,随便画个矩形不就完了。我刚开始用Allegro的时候也是这个心态,结果第一次投板就被板厂退回来,说板框层有自交、有重复线段,没法提取外形。后来做异形板、做拼板、做带内部开槽的板子,才发现Design_Outline和Cutout这两层要是没搞明白,后面Artwork出Gerber、板厂加工、结构装配,处处都是坑。
这篇文章聊的就是Cadence Allegro 17.2里,Design_Outline和Cutout到底该怎么用,各自放在哪一层,常见的错误长什么样,以及怎么修。适合已经能画简单板子、但对板框和开槽处理还不够有底的Layout工程师,也适合从Altium Designer或PADS转过来、对Allegro的Class/Subclass体系还不太熟的朋友。核心关键词就几个:Cadence Allegro、Design_Outline、Cutout、PCB、Artwork,全文围绕这几个词展开,不跑题。
先说清楚一个基本概念。Allegro里没有“板框层”这个单独的说法,它是用Class和Subclass来管理所有元素的。板框属于Board Geometry这个Class下面的Design_Outline子类,而内部开槽、挖空属于Board Geometry下面的Cutout子类。这两个Subclass名字很像,功能也相关,但用途完全不同,混用就会出问题。很多人第一次接触Allegro,看到Class下面一堆选项就懵了,这很正常,我后面会一层一层拆开讲。
提示:Allegro 17.2的Class/Subclass体系和AD的Layer概念不是一一对应的,不要用AD的思维去套。AD里Keep-Out Layer、Board Shape、Board Cutout是分开的,Allegro里则统一归到Board Geometry下,靠Subclass区分。
2. Design_Outline和Cutout的本质区别与选型逻辑
2.1 两层各自管什么,为什么不能混
Design_Outline,直译就是设计外形轮廓,它定义的是整块PCB的物理边界。板厂拿到你的Gerber之后,第一件事就是找这一层,用它来铣外形、算尺寸、做V-Cut或者邮票孔。一块板子有且只能有一个闭合的Design_Outline,这是铁律。你可以画成矩形、圆形、L形、甚至带圆弧的异形,但必须是单一闭合轮廓,不能断开,不能自交,不能有重复线段叠在一起。
Cutout,直译是挖空、切除,它定义的是板子内部的镂空区域。比如螺丝孔周围的避空、天线区域的净空、大功率器件下面的散热开窗、连接器插拔的让位槽,这些都属于Cutout。Cutout可以有很多个,每个都是一个独立的闭合轮廓,分布在板子内部,不能和Design_Outline相交或重叠。
为什么不能混?因为板厂在CAM处理时,对这两层的解析逻辑完全不同。Design_Outline是“外边界”,Cutout是“内孔”。如果你把内部开槽画到了Design_Outline层,板厂会认为你的板子外形是个“回”字形,但外轮廓不闭合,直接报错。反过来,如果你把板框画到了Cutout层,板厂找不到外形,同样没法加工。我见过最离谱的案例是有人把螺丝孔画在Design_Outline层,结果板厂把整个板子铣成了一个圆环,功能全废。
2.2 什么场景该用Cutout,什么场景不该用
不是所有“洞”都要用Cutout。这里有个判断逻辑,我总结成一句话:贯穿板厚、需要物理挖空的,用Cutout;不贯穿或者只是电气禁布的,用Keepout或Package Keepout。
举个例子,M3螺丝孔,如果只是普通安装孔,不需要镀铜,那就在Design_Outline层之外单独画一个圆,放到Cutout层,板厂会把它铣穿。但如果这个螺丝孔需要接地,孔壁要镀铜,那就不能放Cutout,而应该放钻孔层(NC Drill),通过Padstack来定义。再比如,BGA下面的散热过孔区域,你不想让其他信号走进去,那是电气禁布,用Route Keepout,不是Cutout。还有,有些连接器的金属外壳需要沉板安装,板子要挖一个台阶,这种非贯穿的挖空,严格来说也不该用Cutout,而是用Outline层配合Z-Copy在相应层面做处理,或者直接和板厂沟通用铣槽工艺。
我个人的经验是,Cutout只用于完全贯穿PCB厚度、且不需要任何铜箔和基材保留的区域。只要有一丝犹豫,就先问自己:这个区域板厂是不是要把它整个挖掉?是,就用Cutout;不是,就找别的层。
2.3 选型背后的工艺约束
为什么Allegro要把Design_Outline和Cutout分得这么细?因为PCB制造工艺对“外轮廓”和“内轮廓”的处理精度、刀具路径、补偿方式都不一样。外轮廓铣边通常用大直径铣刀,走刀速度快,但转角半径受刀具限制;内轮廓挖空往往用小直径铣刀,甚至激光切割,精度高但速度慢。如果你把内轮廓画到外轮廓层,板厂的CAM工程师得手动帮你分离,遇到复杂的板子,人家直接退单,让你改好再发。
另外,Artwork出Gerber的时候,Design_Outline和Cutout通常要合并到同一张Gerber里,或者分别出两张,取决于板厂的要求。但不管怎么出,这两层的线条必须是零线宽或者极细线宽,因为板厂提取的是中心线,不是线条本身的宽度。如果你用0.2mm的线宽画板框,板厂提取出来的外形会比你预期的大一圈或者小一圈,具体取决于他们的补偿规则。这一点后面讲实操的时候会详细说。
3. 实操:从零画一块带内部开槽的板子
3.1 环境准备与单位设置
打开Allegro 17.2,新建一个brd文件。第一步永远是设单位和精度。我习惯用毫米,精度设4位小数。路径是Setup > Design Parameters,在Design标签页里,User Units选Millimeters,Accuracy选4。为什么是4位?因为板厂通常要求外形尺寸精确到0.01mm,4位小数留足余量,避免四舍五入误差。
然后确认栅格。画板框不需要太细的栅格,我一般设0.1mm或者0.05mm,方便对齐。路径是Setup > Grids,把Non-Etch的栅格打开,设成0.1mm。Etch层的栅格可以关掉,画板框用不上。
注意:Allegro 17.2默认可能用的是mil,如果你从别人那里拿到的brd文件是mil单位,直接改单位会导致所有元素尺寸缩放。正确做法是新建文件时就设好,或者用Scale命令整体转换,但转换后一定要复查关键尺寸。
3.2 在Design_Outline层画外轮廓
打开Color Dialog,找到Board Geometry > Design_Outline,给它一个醒目的颜色,比如亮黄色。然后选择Add > Line,在Options面板里,Class选Board Geometry,Subclass选Design_Outline,Line width设0(零线宽)。零线宽在Allegro里显示为最细线,但实际出Gerber时板厂按中心线处理,这是标准做法。
开始画轮廓。假设板子是个100mm x 80mm的矩形,四个角有R5的圆角。先用Line画四条直线段,坐标分别是(0,0)到(100,0)、(100,0)到(100,80)、(100,80)到(0,80)、(0,80)到(0,0)。画完是一个闭合矩形。然后倒圆角,用Manufacture > Drafting > Fillet,半径设5,依次点相邻两条边。倒完圆角后,原来的直角线段会被替换成圆弧,轮廓依然闭合。
这里有个细节:倒圆角之后,检查一下轮廓是否真的闭合。用Display > Status,或者直接点Tools > Reports > Shape Check。如果轮廓有断点,Status里会显示“Not Closed”。我遇到过有人倒圆角时不小心把某条边删了,结果轮廓开了个口子,自己没发现,出Gerber时板厂报错。
3.3 在Cutout层画内部开槽
假设板子中间要挖一个20mm x 10mm的矩形槽,用于安装某个连接器。切换到Board Geometry > Cutout层,同样给个醒目颜色,比如红色。用Add > Rectangle或者Add > Line画一个20x10的闭合矩形,位置放在板子中央。线宽同样设0。
画完之后,这个矩形就是Cutout。注意,Cutout的轮廓不能和Design_Outline相交。如果你把Cutout画到了板子边缘,和Design_Outline重叠了,板厂会认为你要把板子切成两半。我见过有人做拼板时,把V-Cut线画到了Cutout层,结果板厂直接把板子铣断了。
对于圆形开槽,比如螺丝孔避空,用Add > Circle,画一个圆,放到Cutout层。如果是异形开槽,用Line和Arc组合,确保闭合。
3.4 用Z-Copy快速复制轮廓到其他层
有时候你需要把Design_Outline复制到其他层,比如Route Keepout或者Package Keepout,用来做禁布区。这时候用Edit > Z-Copy。在Options面板里,Copy to Class选Route Keepout,Subclass选All,然后点一下Design_Outline的轮廓,Allegro会自动在Route Keepout层生成一个同样形状的禁布区。这个功能在做异形板的时候特别省事,不用手动再画一遍。
Z-Copy也可以用来把Cutout复制到其他层,但要注意,Cutout本身是Board Geometry下的,复制到Route Keepout时,形状会保留,但属性变了。如果你只是想让某个区域不能走线,用Z-Copy从Cutout复制到Route Keepout是可行的,但更规范的做法是直接画Route Keepout。
3.5 出Gerber前的检查清单
画完板框和开槽,别急着出Gerber。先做几项检查:
- 用Display > Status确认Design_Outline是Closed,Cutout也都是Closed。
- 用Tools > Reports > DRC,跑一遍DRC,看有没有“Outline not closed”或者“Cutout intersects outline”之类的报错。
- 用Display > Measure量一下关键尺寸,比如板子长宽、开槽位置,和结构图对一遍。
- 在Artwork里,确认Design_Outline和Cutout都正确添加到了Gerber层。通常板厂要求这两层合并到一张Gerber,或者分别出,具体看板厂的要求。
我一般会把Design_Outline和Cutout都加到Artwork的“OUTLINE”层里,Film Control里勾选Undefined Line Width,设成0.1mm或者0.15mm,这样出Gerber时线条有宽度,板厂能看清,但提取外形时还是按中心线走。
4. 常见错误与修复方法实录
4.1 板框不闭合,板厂无法提取外形
这是最高频的错误。表现是板厂回复“外形层有开口”或者“Outline not closed”。原因通常是画线时起点和终点没对齐,或者倒圆角时删掉了某段线。修复方法:用Display > Status查看,如果显示Not Closed,用Vertex命令(Edit > Vertex)找到断点,手动拖拽对齐。或者干脆删掉重画,用Add > Rectangle画一个完整矩形,再倒圆角,比用Line一段一段画更不容易出错。
实操心得:画板框尽量用Rectangle或Circle这种原生图形,少用Line拼接。原生图形天生闭合,不会出现断点。异形板再用Line+Arc组合,画完立刻用Shape Check验证。
4.2 Cutout和Design_Outline相交或重叠
表现是板厂说“内孔和外框相交”。原因通常是Cutout画得太靠边,或者拼板时V-Cut线画到了Cutout层。修复方法:用Display > Measure量一下Cutout边缘到Design_Outline的距离,确保至少留0.5mm以上的边料,否则板子强度不够,加工时容易崩边。如果是拼板,V-Cut线应该放在Board Geometry > Vcut层,不是Cutout层。
4.3 线宽设错导致外形尺寸偏差
前面提过,Design_Outline和Cutout的线宽应该设0。但有些人习惯设0.1mm或者0.2mm,觉得这样看得清楚。结果板厂提取外形时,按线条中心线走,但CAM补偿时可能按线宽内外偏移,导致最终板子尺寸比设计值大0.1mm或小0.1mm。对于精密板子,这0.1mm可能就是装配不进去的原因。修复方法:把所有Design_Outline和Cutout的线宽改成0,重新出Gerber。
4.4 重复线段导致CAM解析异常
表现是板厂说“外形层有重复线段”或者“Self-intersecting”。原因通常是复制粘贴时多贴了一份,或者Z-Copy时源和目标重叠。修复方法:用Edit > Delete,框选Design_Outline层,删掉所有线段,然后重新画一遍。或者用Tools > Reports > Shape Check,它会列出重复线段的位置,手动删除多余的。
4.5 螺丝孔放错层,板子被铣穿
这个错误我犯过一次。当时把M3螺丝孔画在了Cutout层,想着反正要挖穿。结果板厂把整个孔铣成了非金属化孔,但我的设计里这个孔是要接地的,孔壁需要镀铜。后来改成在Padstack里定义钻孔,放到NC Drill层,问题解决。所以再强调一遍:需要镀铜的孔,用Padstack+NC Drill;不需要镀铜、纯粹挖穿的,用Cutout。
4.6 Artwork里漏加Cutout层
表现是板子做回来,内部开槽没挖。原因是在Artwork里只加了Design_Outline,忘了加Cutout。修复方法:在Artwork的Film Control里,确认Board Geometry下的Design_Outline和Cutout都勾选了。有些板厂要求Cutout单独出一张Gerber,那就新建一个Film,只加Cutout层。
4.7 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 修复步骤 |
|---|---|---|---|
| 板厂说外形有开口 | 板框不闭合 | Display > Status看是否Closed | 用Vertex对齐断点或重画 |
| 板厂说内孔和外框相交 | Cutout太靠边 | Measure量距离 | 移动Cutout,留足边料 |
| 板子尺寸偏差0.1mm | 线宽非0 | 检查Line width | 改成0,重出Gerber |
| CAM报重复线段 | 复制粘贴多余 | Shape Check | 删除多余线段 |
| 螺丝孔被铣穿不镀铜 | 放错层 | 检查是Cutout还是NC Drill | 改用Padstack定义 |
| 内部开槽没挖 | Artwork漏加Cutout | 检查Film Control | 勾选Cutout层 |
| 异形板圆角处报错 | 圆弧不闭合 | Shape Check | 重新倒圆角或手动补线 |
5. 进阶技巧:异形板、拼板与Artwork输出
5.1 异形板的轮廓处理
异形板的核心难点在于轮廓复杂,容易不闭合。我的做法是先在AutoCAD或者结构软件里画好外形,导出DXF,然后Import > DXF到Allegro的Design_Outline层。导入后,用Shape Check验证闭合性。如果有断点,用Vertex手动连上。DXF导入的好处是尺寸精确,不用在Allegro里一点点描。
导入DXF时注意单位。AutoCAD默认可能是mm,Allegro也是mm,但有时候DXF里是inch,导入后尺寸会差25.4倍。导入前在DXF里确认单位,或者在Allegro导入时手动指定Scale。
5.2 拼板时的Cutout和V-Cut
拼板时,每块小板之间的连接方式有两种:V-Cut和邮票孔。V-Cut线放在Board Geometry > Vcut层,不是Cutout层。邮票孔则是用NC Drill打一排小孔,也不是Cutout。Cutout在拼板里只用于两种情况:一是小板内部本身有开槽,二是拼板边框需要挖空减重。千万别把V-Cut线画到Cutout层,否则板厂会把拼板直接铣散。
5.3 Artwork输出时的层管理
出Gerber时,我习惯建一个Film叫“OUTLINE”,里面只加Board Geometry > Design_Outline和Board Geometry > Cutout。Film Control里,Undefined Line Width设0.1mm,Format选Gerber RS274X,单位选mm,精度选4.5(4位整数5位小数)。这样出的Gerber,板厂能直接读。
如果板厂要求Cutout单独出,就再建一个Film叫“CUTOUT”,只加Cutout层。出完之后,用CAM350或者免费的Gerber查看器打开检查一遍,确认外形和开槽都在正确的位置。
提示:Allegro 17.2出Gerber时,如果Design_Outline层有零线宽的线段,Gerber里会显示为0宽度,有些板厂的CAM软件会忽略这些线段。所以Film Control里的Undefined Line Width一定要设一个非零值,比如0.1mm,确保Gerber里有可见的线条。
5.4 和板厂沟通的要点
最后,和板厂沟通时,主动说明板框和开槽的情况。比如:“外形层是Design_Outline,内部开槽在Cutout层,线宽0,请按中心线提取。”如果板厂有特殊要求,比如外形层要单独出、开槽要标注尺寸,提前问清楚。我一般会在Gerber压缩包里附一个Readme.txt,写明层对应关系和关键尺寸,省得来回扯皮。
6. 我踩过的坑和最后的小建议
做PCB Layout这些年,Design_Outline和Cutout这两层看着简单,但真要做好,得把工艺约束、软件操作、板厂沟通三件事都理顺。我踩过最大的坑是把一个异形板的轮廓用Line一段一段画,结果有个转角差了0.05mm没对齐,板厂说外形不闭合,来回改了两天。后来学乖了,能用Rectangle就用Rectangle,能用DXF导入就导入,绝不手动描复杂轮廓。
还有一次,客户要求板子内部挖一个L形槽,我画在了Cutout层,但忘了在Artwork里加进去,板子做回来没挖槽,只能报废重做。从那以后,我出Gerber前一定用CAM350打开检查一遍,确认每一层都在。
如果你刚开始用Allegro,建议先拿一块简单的矩形板练手,把Design_Outline和Cutout的画法、检查、出Gerber流程走一遍。熟练之后,再尝试异形板和拼板。遇到报错别慌,大部分问题都是闭合性、线宽、层放错这三类,按上面的速查表排查,基本都能解决。
最后分享一个小技巧:在Allegro里给Design_Outline和Cutout设不同的颜色,比如外形用亮黄,开槽用亮红,这样在复杂板子上一眼就能区分,不容易画错层。这个习惯我保持了五六年,省了不少返工时间。