ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Allegro PCB板框与Cutout设计实战:从DXF导入到Gerber输出避坑指南

Allegro PCB板框与Cutout设计实战:从DXF导入到Gerber输出避坑指南 1. 板框设计的第一道坎Design_Outline到底该怎么画1.1 为什么板框层总是出问题干PCB Layout这行的都清楚板框Board Outline是整个设计的物理边界所有器件布局、走线、铺铜都得在这个框里进行。Cadence Allegro 17.2里负责这个事的就是Design_Outline层属于Board Geometry类下面的子类。听起来简单画个闭合图形就完事了但实际项目中出问题的概率高得离谱。我见过太多案例结构工程师给的是DXF文件导入Allegro之后线条断断续续或者圆弧变成了折线又或者板框画好了铺铜的时候死活铺不进去报错说“Shape not within outline”还有更离谱的板子都投出去打样了工厂反馈说外形文件有问题铣刀路径走不了。这些问题追根溯源八成都是Design_Outline层没处理好。为什么这个层这么容易翻车核心原因在于Allegro对板框的闭合性和连续性要求极其严格。它不像Altium Designer那样对线条容差比较宽容Allegro要求Design_Outline必须是一个完整的、无断点的闭合轮廓。哪怕有一个微米级的缺口后续的铺铜、DRC检查、Artwork输出都会出问题。而且17.2版本对DXF导入的处理逻辑和16.x有差异很多从老版本转过来的工程师会在这里踩坑。另一个容易被忽视的点是Design_Outline和Package_Geometry里的Place_Bound_Top是两码事。前者定义的是PCB的物理外形后者定义的是器件的占位区域。有些新手会把两者搞混在Design_Outline层画了器件的轮廓结果板厂收到文件直接懵了。1.2 从零开始画一个标准板框先说最基础的手动绘制流程。打开Allegro 17.2在右侧的Find面板里只勾选Shapes或者Lines取决于你用哪种方式画然后在Options面板里设置Class:Board GeometrySubclass:Design_OutlineLine width: 建议设为5mil0.127mm这个宽度只是显示用不影响实际板框尺寸用Add Line或者Add Rectangle命令画一个闭合图形。这里有个细节如果你用Add Line画到最后一条边时右键选择Done之前Allegro会自动闭合起点和终点。但如果你手动点了两次同一个点反而可能产生重叠线段后续DRC会报错。注意画板框时不要用Add Shape命令。虽然Shape也能画矩形但Design_Outline层用Line更规范后续修改和检查都方便。画完之后必须做一次闭合性检查。操作路径Tools → Reports → 选择“Shape/Line Outline Check”或者直接用Display → Status查看。如果板框有缺口Status里会显示“Unclosed outline”之类的提示。另一个土办法是用Z-Copy功能复制板框到Route Keepout层如果复制出来的形状是完整的说明原板框没问题。对于圆弧和倒角Allegro 17.2提供了Add Arc和Add 3pt Arc命令。建议用Add 3pt Arc通过三个点确定圆弧比圆心半径的方式更直观。画圆弧时要注意圆弧和直线连接的地方必须严格重合不能有肉眼看不见的微小间隙。我通常会把捕捉功能打开Setup → User Preferences → Grids里设置Snap to Grid确保连接点精确对齐。1.3 DXF导入板框的正确姿势实际项目中板框大多来自结构工程师的DXF文件。导入流程看似简单但坑最多。第一步在Allegro里新建一个brd文件或者打开现有的。然后File → Import → DXF。在弹出的对话框里DXF file: 选择你的DXF文件DXF units:必须和结构工程师确认清楚是mm还是mil还是inch。选错了整个板子尺寸就废了Class: Board GeometrySubclass: Design_Outline勾选“Use DXF layer names”或者手动指定层映射导入之后不要急着高兴。先做三件事检查线段连续性用Display → Measure测量关键尺寸和结构图对比。然后放大看每个连接点DXF转换过程中经常出现微小断点。检查圆弧质量DXF里的圆弧导入Allegro后可能变成多段折线。如果圆弧看起来像多边形需要在导入设置里调整“Arc/Circle conversion”的精度参数。删除多余元素DXF里经常包含标注、中心线、文字等不需要的东西导入后要手动删掉只保留板框轮廓。如果导入后发现线条有断点最笨但最可靠的办法是用Delete命令删掉有问题的线段然后用Add Line手动补上。别嫌麻烦这比后面铺铜报错再回来查要省时间得多。2. Cutout层的本质不是所有“挖洞”都叫Cutout2.1 Board Cutout和Route Keepout的区别这是Allegro新手最容易混淆的概念之一。Board Cutout在Board Geometry类下的Board_Cutout子类定义的是PCB上真正要挖掉的区域比如螺丝孔、定位孔、异形开槽。这些区域在板厂加工时会被铣刀直接切掉没有PCB材料。而Route Keepout在Route Keepout类下定义的是禁止走线的区域但PCB材料还在。比如器件下方的禁布区、天线净空区这些地方不能走线但板子还是完整的。两者的视觉表现也不一样Board Cutout在Allegro里显示为实心填充区域通常用斜线填充而Route Keepout显示为空心轮廓。关键原则Board Cutout画在Board Geometry/Board_Cutout层不是Design_Outline层。有些工程师图省事直接在Design_Outline层画个圆表示螺丝孔这是大错特错。板厂CAM工程师看到Design_Outline层有多个独立图形会以为你要做拼版或者异形板直接打电话来确认。2.2 螺丝孔和异形开槽的Cutout画法标准螺丝孔的Cutout画法确定螺丝孔尺寸。M3螺丝的过孔一般是3.2mm直径M2.5是2.7mm。但Cutout的直径要比螺丝直径大0.2-0.3mm留出公差。在Options面板设置Class Board GeometrySubclass Board_Cutout。用Add Circle命令画圆圆心坐标根据结构图确定。画完之后用Display → Status检查确保Cutout区域没有和Design_Outline重叠或者超出板框。异形开槽比如USB接口的避位槽、电池连接器的让位槽稍微复杂一些。通常是用Add Line或者Add Shape画出槽的形状然后确保它是闭合的。这里有个技巧先用Route Keepout画出形状确认位置和尺寸无误后再用Z-Copy复制到Board_Cutout层。这样做的原因是Route Keepout的编辑和移动更灵活而Board_Cutout一旦画错后续DRC和Artwork都会报错。画Cutout时还要注意内角处理。铣刀是圆形的无法加工出绝对直角的内角。如果Cutout有直角内角板厂会默认加一个铣刀半径的圆角。如果你需要精确控制内角形状要么在设计时就加圆角推荐R1mm以上要么在加工说明里注明“清角”要求。2.3 Cutout对铺铜和DRC的影响Board Cutout区域会自动阻止铺铜。当你用Shape → Rectangular或者Polygon铺铜时Allegro会自动避开Cutout区域并在周围留出一定的间距由Shape的Clearance参数决定。但这里有个常见问题Cutout边缘的铺铜间距不够。默认情况下Allegro对Board Cutout的Clearance可能是0导致铺铜直接贴着Cutout边缘。板厂加工时铣刀会有公差可能切到铺铜造成短路或者外观不良。建议在Constraint Manager里设置Board Cutout的Clearance为8-10mil0.2-0.25mm。DRC检查时Board Cutout相关的错误主要有两类错误代码含义解决方法Cutout to OutlineCutout超出板框或与板框重叠调整Cutout位置或尺寸Cutout to Route走线进入Cutout区域删除或修改走线Cutout to Place器件放置到Cutout区域移动器件3. 实操全流程从结构图到可加工文件3.1 前期准备与层设置检查在开始画板框之前先做一次层设置检查。Allegro 17.2默认的层配置可能不包含某些子类需要手动添加。操作路径Setup → Subclasses。在Board Geometry下面确认以下子类存在Design_Outline必须Board_Cutout必须Dimension可选用于标注尺寸Outline有些版本用来画装配轮廓如果找不到Board_Cutout点击“Add”按钮手动添加。同样在Route Keepout下面确认有“All”或者具体的层。另一个重要设置是单位。Setup → Design Parameters → Design里User Units建议设为Millimeter精度设为4位小数。这样和结构图对接时不容易出错。如果结构图是mil单位导入DXF时再转换不要在Design Parameters里来回切换。3.2 板框绘制与Cutout添加的完整步骤假设我们做一个100mm x 80mm的板子四角R5圆角两个M3螺丝孔一个USB避位槽。步骤一画板框1. 设置Grid为1mmSnap to Grid开启 2. Add RectangleOptions里ClassBoard GeometrySubclassDesign_Outline 3. 起点(0,0)终点(100,80) 4. 用Edit → Vertex命令对四个角做R5圆角 - 选中矩形右键选择“Vertex” - 在角落处右键选择“Fillet”输入半径5mm 5. 用Display → Measure确认尺寸步骤二画螺丝孔Cutout1. 确定螺丝孔位置比如(10,10)和(90,70) 2. Add CircleClassBoard GeometrySubclassBoard_Cutout 3. 圆心(10,10)半径1.6mm直径3.2mm 4. 重复画第二个孔 5. 用Z-Copy把Cutout复制到Route Keepout层作为禁布区步骤三画USB避位槽1. 确定槽的位置和尺寸比如板边中间宽12mm深8mm 2. Add ShapeClassBoard GeometrySubclassBoard_Cutout 3. 画出槽的轮廓确保闭合 4. 检查槽和板框的关系槽应该从板边向内延伸与板框相交 5. 用Shape → Edit → Vertex调整槽的内角圆角步骤四DRC检查与修复1. Tools → Quick Reports → DRC Report 2. 查看是否有Cutout相关错误 3. 如果有“Cutout to Outline”错误检查Cutout是否超出板框 4. 如果有“Unclosed outline”错误用Display → Status定位断点 5. 修复后重新运行DRC直到无错误3.3 Artwork输出时的注意事项板框和Cutout最终要输出到Gerber文件。在Artwork设置里Design_Outline层输出到“OUTLINE”或者“BOARD_OUTLINE”Gerber文件Board_Cutout层输出到“CUTOUT”或者“ROUT”Gerber文件如果板厂要求还需要输出Route Keepout层作为参考重要提示有些板厂只认Design_Outline层把Cutout也画在这一层。这种情况下需要在加工说明里明确标注哪些区域是挖空的。但更规范的做法是分开输出让板厂CAM工程师自己判断。Artwork参数设置参数建议值说明FormatGerber RS274X标准格式UnitsMillimeter和设计单位一致Integer places4精度Decimal places4精度Suppress不勾选保留所有元素输出后用CAM350或者GC-Prevue打开Gerber文件检查。重点看板框是否闭合、Cutout位置是否正确、有没有多余的线条。4. 常见错误与排查技巧实录4.1 板框不闭合的三种典型情况情况一DXF导入后线条有微小断点这是最常见的。DXF文件在转换过程中由于精度问题原本连接的两条线可能变成两个独立的线段端点之间有0.001mm的间隙。肉眼看不出来但Allegro认为不闭合。排查方法用Display → Status如果显示“Unclosed outline”然后用Zoom Window放大到可疑区域。或者用Tools → Reports → “Line Outline Check”生成报告。修复方法用Edit → Vertex命令选中断点附近的线段拖动端点到重合位置。或者直接用Delete删掉问题线段重新画。情况二圆弧和直线连接处不连续Allegro对圆弧和直线的连接要求很严格。如果圆弧的端点和直线的端点没有精确重合就会报错。修复方法用Add 3pt Arc重新画圆弧确保起点和终点捕捉到直线的端点。或者用Edit → Change命令把圆弧改成直线段如果圆弧半径很大的话。情况三板框有重叠线段有时候画板框时不小心画了重复的线段或者DXF导入时产生了重叠。Allegro会认为板框有“自相交”问题。排查方法用Display → Status或者用Tools → Reports → “Self-Intersection Check”。修复方法用Delete命令删掉重叠的线段只保留一条。4.2 Cutout导致铺铜失败的排查思路铺铜时如果报错“Shape not within outline”或者“Cannot create shape”八成是Cutout的问题。第一步检查Cutout是否闭合和板框一样Cutout也必须是闭合图形。用Display → Status检查。第二步检查Cutout是否超出板框如果Cutout有一部分在板框外面铺铜时会报错。用Display → Measure测量Cutout边缘到板框的距离。第三步检查Cutout的Clearance设置在Constraint Manager里找到“Shape to Board Cutout”的Clearance设置。如果设为0铺铜会紧贴Cutout边缘可能导致DRC错误。建议设为8-10mil。第四步检查Cutout是否和Route Keepout冲突如果Cutout区域同时有Route Keepout铺铜时会优先避开Route Keepout可能导致铺铜形状异常。4.3 板厂反馈的常见加工问题板厂反馈可能原因解决方案外形文件有断线Design_Outline不闭合检查并修复断点铣刀路径异常Cutout和Outline层混淆分开输出Gerber螺丝孔位置偏移Cutout坐标错误对照结构图重新确认板边毛刺Cutout离板边太近调整Cutout位置留出安全间距内角无法加工Cutout有直角内角加R1mm以上圆角4.4 独家避坑经验分享经验一永远保留一份“干净”的板框在项目文件夹里单独存一个brd文件只包含板框和Cutout不包含任何器件和走线。每次修改板框时先在这个干净文件里改确认无误后再更新到主设计文件。这样做的好处是避免误删其他元素也方便版本管理。经验二用Skill脚本自动检查板框闭合性Allegro支持Skill脚本可以写一个简单的脚本来检查Design_Outline层是否闭合。网上有现成的脚本可以下载或者自己写一个。核心逻辑是遍历所有线段检查端点是否重合。经验三DXF导入前先在CAD里清理结构工程师给的DXF文件往往包含很多不需要的图层和元素。在导入Allegro之前先用AutoCAD或者免费的CAD查看器打开删掉标注、中心线、文字等只保留板框轮廓。这样导入后省事很多。经验四Cutout的尺寸要留公差螺丝孔Cutout的直径要比螺丝直径大0.2-0.3mm。比如M3螺丝Cutout直径做3.2-3.3mm。太小了螺丝装不进去太大了影响外观和强度。经验五板框层不要画任何标注有些工程师习惯在Design_Outline层画尺寸标注或者文字说明。这些元素会输出到Gerber文件里板厂CAM工程师可能会误认为是板框的一部分。标注应该画在Dimension层或者Manufacturing层。经验六定期用3D视图检查Allegro 17.2支持3D视图View → 3D View。画完板框和Cutout后切换到3D视图看一眼能直观地发现板框是否闭合、Cutout位置是否正确。这个功能比2D检查高效得多。经验七和板厂确认Cutout加工能力不同板厂的铣刀直径不同最小能加工的槽宽也不同。一般来说最小槽宽是1mm最小圆角半径是0.5mm。如果设计中有更小的Cutout需要提前和板厂确认能否加工。经验八保留设计日志每次修改板框或Cutout都在设计日志里记录修改日期、修改内容、修改原因。这样后面出问题时可以追溯也方便团队协作。4.5 常见问题速查表问题现象可能原因快速排查方法解决方案铺铜报错“Shape not within outline”板框不闭合Display → Status修复断点DRC报“Cutout to Outline”Cutout超出板框测量距离调整Cutout位置Gerber文件板框显示异常层设置错误用CAM350查看重新输出Gerber板厂反馈外形有断线Design_Outline有缺口放大检查连接点重新画板框螺丝孔位置不对Cutout坐标错误对照结构图修改Cutout坐标铺铜紧贴Cutout边缘Clearance设为0Constraint Manager设为8-10mil3D视图显示板框异常板框有重叠线段3D视图检查删除重叠线段DXF导入后尺寸不对单位设置错误测量关键尺寸重新导入选对单位5. 进阶技巧提高板框设计效率的方法5.1 用Z-Copy快速创建关联层Z-Copy是Allegro里非常实用的功能可以把一个层的图形快速复制到另一个层。在板框设计中常用的Z-Copy操作有Design_Outline → Route Keepout/All创建板边禁布区Board_Cutout → Route Keepout/All创建Cutout禁布区Design_Outline → Package Keepout/All创建板边禁放区操作路径Edit → Z-Copy。在Options面板里选择源层和目标层设置好偏移量如果需要的话然后点击要复制的图形。技巧Z-Copy时可以设置“Contract”或者“Expand”参数让目标层的图形比源层大或者小一定的距离。比如把Design_Outline复制到Route Keepout时设置Expand20mil这样禁布区就比板框大20mil确保走线不会太靠近板边。5.2 用Skill脚本批量处理Cutout如果板子上有很多螺丝孔或者定位孔手动画Cutout效率很低。可以写一个Skill脚本批量生成Cutout。一个简单的Skill脚本示例生成圆形Cutoutprocedure(createCutoutCircle(centerX, centerY, radius) let((cutout) cutout axlDBCreateCircle(centerX:centerY, radius, BOARD GEOMETRY/BOARD_CUTOUT) axlDBAddProp(cutout, list(CUTOUT_TYPE SCREW_HOLE)) ) )这个脚本会在指定坐标创建一个圆形Cutout并添加一个属性标记为螺丝孔。实际使用时可以批量调用这个函数传入不同的坐标和半径。5.3 板框设计的版本管理板框修改是PCB设计中最频繁的变更之一。做好版本管理可以避免很多混乱。建议的做法每次修改前备份把当前的brd文件另存为“项目名_板框_v1.0.brd”修改后存为“v1.1”。用Git或者SVN管理如果团队有版本控制工具把brd文件纳入管理。Allegro的brd文件是二进制格式Git diff看不了但可以记录版本历史。维护一个变更记录表用Excel或者Markdown记录每次修改的内容、原因、影响范围。版本日期修改内容修改人备注v1.02024-01-10初始板框张三100x80mmv1.12024-01-15增加USB避位槽张三槽宽12mmv1.22024-01-20调整螺丝孔位置李四根据结构更新5.4 和结构工程师的协作要点板框设计不是PCB工程师一个人的事需要和结构工程师紧密配合。以下是我总结的协作要点第一明确坐标系结构图和PCB的坐标系必须一致。通常以板子左下角为原点但有些结构图以中心为原点。导入DXF前一定要确认清楚。第二确认单位mm还是mil这个必须在导入前确认。我遇到过结构图标注是mm但DXF文件实际是mil的情况导致板子尺寸差了25.4倍。第三确认公差结构图上的尺寸是理论值实际加工有公差。比如板子外形标注100mm实际加工可能是99.8-100.2mm。Cutout的位置和尺寸也要考虑公差。第四确认干涉区域板子上的螺丝孔、连接器开槽等要和结构件确认是否有干涉。最好让结构工程师提供3D模型在Allegro的3D视图里做干涉检查。第五变更要及时同步板框有任何修改都要及时通知结构工程师确认。反过来结构有变更也要及时更新PCB。5.5 板框设计检查清单在投板之前用这个清单做最后检查[ ] Design_Outline层是闭合的无断点、无重叠[ ] Design_Outline层没有多余的标注、文字、中心线[ ] Board_Cutout层所有Cutout都是闭合的[ ] Cutout没有超出板框[ ] Cutout的Clearance设置正确建议8-10mil[ ] 螺丝孔Cutout尺寸正确比螺丝大0.2-0.3mm[ ] 异形开槽的内角有圆角R≥1mm[ ] 板框尺寸和结构图一致[ ] 单位设置正确mm[ ] Artwork输出设置正确[ ] Gerber文件用CAM工具检查过[ ] 3D视图检查无异常[ ] 和板厂确认过加工能力[ ] 版本号和变更记录已更新6. 从实战案例看板框设计的坑6.1 案例一DXF导入导致的板框断线去年做一个工控板项目结构工程师给了一个DXF文件板框是带圆角的矩形四个角有R10圆角。导入Allegro后Display → Status显示“Unclosed outline”。放大看四个圆角处发现圆弧和直线连接的地方有微小断点。排查过程用Display → Measure测量断点间隙发现只有0.0005mm。这个间隙肉眼完全看不出来但Allegro认为不闭合。解决方案用Edit → Vertex命令选中圆弧端点拖动到直线端点重合。四个角都处理一遍总共花了10分钟。如果重新画板框至少要半小时。经验总结DXF导入后一定要做闭合性检查不要等到铺铜报错再回来查。6.2 案例二Cutout层混淆导致的加工问题另一个项目板子上有一个电池座避位槽。我在Design_Outline层画了槽的轮廓以为这样板厂就能加工出来。结果板厂反馈说外形文件有多个独立图形问是不是要做拼版。问题原因Design_Outline层应该只包含板子的外轮廓Cutout应该画在Board_Cutout层。我把两者混在一起了。解决方案把槽的轮廓从Design_Outline层移到Board_Cutout层重新输出Gerber。板厂收到后确认没问题。经验总结Design_Outline和Board_Cutout必须严格分开不要图省事混在一起。6.3 案例三Cutout Clearance不足导致短路一个电源板项目板子上有多个螺丝孔Cutout。铺铜时没有设置Cutout的Clearance导致铺铜紧贴Cutout边缘。板厂加工后铣刀切到了铺铜造成电源短路。问题原因Constraint Manager里“Shape to Board Cutout”的Clearance默认为0。解决方案把Clearance设为10mil重新铺铜。同时检查所有Cutout边缘的铺铜间距确保大于8mil。经验总结Cutout的Clearance一定要设置建议8-10mil。这是很多新手容易忽略的点。6.4 案例四圆弧精度不足导致外观不良一个消费电子项目板框有多个装饰性圆弧。DXF导入后圆弧变成了多段折线看起来像多边形。板厂加工后板边有明显的棱角外观不良。问题原因DXF导入时“Arc/Circle conversion”的精度参数设置太低圆弧被近似成折线。解决方案重新导入DXF把精度参数调高比如设置“Max chord length”为0.01mm。或者用Add 3pt Arc手动重画圆弧。经验总结对外观要求高的板子圆弧精度一定要调高。导入后放大检查确保圆弧平滑。6.5 案例五板框层多余元素导致CAM错误一个通信板项目我在Design_Outline层画了一些尺寸标注方便自己查看。输出Gerber时忘了删掉板厂CAM工程师把标注也当成了板框的一部分导致铣刀路径异常。问题原因Design_Outline层包含了非板框元素。解决方案把标注移到Dimension层重新输出Gerber。以后养成习惯Design_Outline层只画板框不画任何其他东西。经验总结Design_Outline层要保持“干净”只包含板框轮廓。标注、文字、中心线都应该放在其他层。7. 工具与资源推荐7.1 常用检查工具CAM350查看Gerber文件的标准工具可以检查板框闭合性、Cutout位置、层对齐等。GC-Prevue免费的Gerber查看器功能比CAM350简单但足够检查板框。Allegro 3D ViewAllegro自带的3D视图可以直观检查板框和Cutout。Skill脚本可以自己写脚本自动检查板框闭合性、Cutout尺寸等。7.2 学习资源Cadence官方文档Allegro PCB Designer User Guide里面有板框设计的详细说明。Cadence社区有很多工程师分享的板框设计经验和Skill脚本。PCB设计论坛国内的EDA365、硬件工程师论坛等有很多实战案例。板厂加工说明不同板厂的加工能力不同建议提前索取加工说明文档。7.3 板厂沟通模板投板时建议在加工说明里包含以下信息板框层Design_OutlineGerber文件OUTLINE.gbr Cutout层Board_CutoutGerber文件CUTOUT.gbr 板厚1.6mm 表面处理沉金 螺丝孔2个M3直径3.2mm 避位槽1个USB槽宽12mm深8mm 特殊要求Cutout内角加R1mm圆角这样板厂CAM工程师一看就明白减少沟通成本。8. 最后分享几个实操心得板框和Cutout看起来简单但实际项目中出问题的概率很高。我做了这么多年PCB设计踩过的坑总结下来就是几句话第一Design_Outline层只画板框不要画任何其他东西。标注、文字、中心线统统放到其他层。这是铁律。第二Cutout画在Board_Cutout层不要和Design_Outline混在一起。两者职责不同混在一起板厂会懵。第三DXF导入后一定要做闭合性检查。不要等到铺铜报错再回来查那时候可能已经改了很多东西排查起来更麻烦。第四Cutout的Clearance一定要设置。建议8-10mil这是血的教训。第五投板前用3D视图检查一遍。很多2D看不出来的问题3D视图一眼就能发现。第六和板厂确认加工能力。最小槽宽、最小圆角半径、铣刀直径这些参数不同板厂不一样提前确认避免返工。第七做好版本管理。板框修改频繁没有版本管理很容易乱。第八保留设计日志。每次修改都记录后面出问题可以追溯。这些经验都是实际项目中积累的希望对做Allegro PCB设计的同行有帮助。板框和Cutout是PCB设计的基础基础打好了后面的布局布线才能顺利进行。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进