1. 板框不只是个框:它在Allegro里的真实身份
有一次我把板框定义错了,板子外形比结构图大了整整10毫米。更尴尬的是,铺铜和器件布局都已经按这个错板框做完了,最后只能抽一个通宵重新处理铜皮和坐标。从那以后我再也不敢小看板框这一步。在Allegro里,板框不是一个随手画画的矩形,它是整个PCB设计的机械边界,也是布局、铺铜、DRC和制造出图共同依赖的第一手数据。
1.1 板框同时管着布局、铺铜和制造的边界
Allegro里面板框的标准位置是 BOARD GEOMETRY/OUTLINE 这一层,Class 是 Board Geometry,Subclass 是 Outline。这是Cadence默认约定,也是出Gerber时板厂默认会去找的一层。如果画到了别的层,比如画到了 Mechanical 1 或者 ASSEMBLY_TOP 上,很多时候不是立刻报错,而是等到投板或者做结构装配时才发现问题,那时候返工成本已经上去了。
板框到底管了哪些事?首先是布局范围,Route Keepin 和 Package Keepin 通常都是根据板框内缩一定距离生成的,板框变了,这两个约束范围也要跟着变。其次是铺铜,Allegro里的Shape Pour不管是动态还是静态,外边界如果参考板框,那板框一变,铜皮范围就要重新拉。第三个是DRC,板框和铜箔、走线之间的距离是要满足制造工艺的,板框画错,这些检查全都失去基准。最后是制造,板厂数控铣外形就是拿着OUTLINE层的线段去生成走刀路径,线段断没断、宽度是多少、在不在正确层,直接影响成品能不能做出来。
1.2 板框画错的连锁反应
我见过不少新手把板框画成零线宽线段,屏幕上看着细线一条,感觉没什么问题。但到光绘输出时,零线宽线段在一些光绘格式下会直接丢失,板厂拿到的文件里根本没有外形。还有一种情况是板框画成了一个不闭合的环,比如四边只有三条线,Allegro的DRC未必会第一时间报出来,但出Gerber后板厂就会打电话来问外形边界到底在哪。
更隐蔽的问题是板框与原点位置关系混乱。有人建板时原点在0,0,但板框从100,100开始,后面做拼板、做坐标文件、和结构工程师对位时,所有坐标都带着一个大偏移,非常容易出错。这些问题单独看都不大,但叠加起来,就是"板框没定义好"导致的全流程痛苦。所以我习惯在项目一开始就先把板框认认真真定义清楚,后面每一步都踏实。
2. 规则板框三条路:手绘、坐标定尺寸、Z-Copy借形
规则板框通常指矩形、正方形、切角矩形这类能用规则工具完成的板形。在Allegro里定义这类板框,我最常用的是下面三种方式,按实际场景选即可。
2.1 先做两件小事:切单位和活性层
画板框之前,先统一单位。Allegro默认单位可能是Mil,但结构图纸一般用毫米,单位不一致是后面很多"板框看着不对"的根源。我一般在 Setup -> Design Parameters -> Design 标签下,把 User Units 改成 Millimeter,精度保留两位小数。这个设置会跟随设计文件保存,后面所有测量、坐标输入都以毫米为准,不会出现算来算去搞错单位的问题。
然后是设活性层。在右侧Options面板里,把PCB层的 Class 选成 Board Geometry,Subclass 选成 Outline,或者直接在旁边的层下拉框里找到 BOARD GEOMETRY/OUTLINE 并置为当前层。之后画的线段和矩形就会自动归到这层。这一步很多人会漏,画完才发现图形跑到了别的层,再整体改层很麻烦。
2.2 手绘矩形加命令行定位
矩形板框最直接的方法是用 Add -> Rectangle。但画之前记得在Options里把 Line width 设为一个非零值,我习惯设为0.2mm或者8mil。板厂对这个线宽本身不敏感,关键是光绘输出时线段不会丢,而且图形在屏幕上看得清楚。
画法上不要靠鼠标乱点,而是用命令行输入坐标。比如矩形左下角放在(0,0),右上角放在(100,80),操作是这样:点下 Add -> Rectangle 后,在命令行输入x 0 0回车,再输入x 100 80回车,矩形就精确定位了。Allegro的命令行支持这种x坐标输入,画线、画Text、放器件时都可以用。如果你用的版本没有 Rectangle 工具,可以用 Add -> Line 画四条边,首尾分别用坐标定位,效果一样。
2.3 Z-Copy快速借形
有些情况下,你手上已经有一个封闭图形,比如从结构部门拿来的DXF外形、或者之前画在某个机械层上的外形,想把它转成OUTLINE板框。这时候没必要重新描一遍,用 Edit -> Z-Copy 可以直接复制边界轮廓。
操作时,在Options里设置好目标层,Class 选 Board Geometry,New Subclass 选 OUTLINE,然后设置 Offset 和 Line width。Offset一般填0,线宽填0.2mm。接着选源图形,可以是Shape,也可以是闭合的线段。Z-Copy会按轮廓生成一份新图形到目标层。这个方法在"DXF导入后借形"上特别有用,后面第4章会再次用到。
3. 异形板框的构建思路:让圆弧和倒角老实听话
异形板框是很多人的痛点,比如L形板、C形板、带半圆弧边的板、带大圆角的电源板。其实Allegro画异形板框的核心就一句话:用Line和Arc把边界拼完整,不要求一定合成Shape。
3.1 直线加圆弧:异形板的基础画法
Allegro的 Add -> Line 可以画直线段,Add -> Arc 可以画三点圆弧。异形板常见的做法是先用直线把主要边界画出来,再在需要圆弧的地方用 Arc 连接相邻的两条直线。
Add -> Arc 出来的是三点圆弧模式,先点第一个端点,再点弧线上的一点,最后点另一个端点。实际操作时,为了让圆弧和相邻直线切得顺,最好借助坐标和Grid捕捉,否则圆弧端点会和直线端点差那么一点点,后面检查闭合时会很折磨人。如果你的异形板是由结构图给出的,强烈建议直接用第4章的DXF导入,别自己手工描圆弧,手工描出来的圆角和结构图上对不齐,后面装配很容易出问题。
3.2 圆角和倒角用哪个工具
如果只是给矩形或L形板加圆角,不用手工画弧,Edit -> Fillet 是更省事的办法。选中两条相邻直线段,给个半径值,Allegro会自动在两个线段之间生成一段圆弧,并且自动把直线剪切到切点位置。这个工具在做圆角矩形板框时非常好用:先画直角矩形,再对四个角分别做Fillet,半径填5mm或10mm,一个圆角板框就出来了。
Fillet出来的圆弧是真正的Arc对象,不是折线段,这对后续加工更友好。要注意的是,Fillet工具要求两条线段是相交的,而且必须在同一层。如果你的矩形是用 Add -> Rectangle 画的,可能没法直接Fillet,因为Rectangle工具生成的是一个闭合的整体图形而不是四条独立线段。这种情况要么先把矩形炸开,要么直接用Add -> Line画四条边再Fillet。不同版本对Rectangle对象的编辑方式有差异,我个人的习惯是:只要后续要改圆角,一律用Add -> Line画边框。
3.3 别急着Compose Shape:线段和Shape的取舍
很多教程会让你用 Shape -> Compose Shape 把板框变成一个Shape对象,认为这样才正规。但说句实话,板框在绝大多数场景下保持Line和Arc线段就足够了。线段形式的板框在后期修改时非常方便,想改哪一段直接Edit -> Delete,再重新画一小段就行。而一旦Compose成Shape,后面要调整外形就得用Edit -> Vertex去推顶点,操作繁琐得多。
Shape的主要用途是表示铺铜和开槽区域。比如一个非金属化槽,需要用 Shape 在 BOARD GEOMETRY/CUTOUT 上画出来,这样铺铜和DRC都会把槽当成边界处理。而OUTLINE层本身,我建议保持为线段集合,这是投板最通用、最稳定的形态。
3.4 用Compose Shape当闭合探针
虽然不建议把最终板框合成Shape,但Compose Shape是一个非常好用的"闭合探针"。想检查一个外形是不是完全封闭,可以试一下对OUTLINE层执行 Shape -> Compose Shape,如果能成功生成Shape,说明边界闭合;如果弹警告说边界不完整,它就会帮你定位缺口在哪儿。
用完之后直接 Undo 撤销,板框又回到线段状态,不影响使用。这个技巧我在日常检查中几乎每次都用,比肉眼盯着屏幕找缺角要靠谱得多。
4. DXF导入完整流程:把结构图请进Allegro
现代PCB设计里,板框很少是PCB工程师自己凭空画的,大多来自结构工程师的2D图纸。DXF是结构图和PCB工具之间最通用的交换格式。把DXF顺利导入Allegro并变成可用的板框,是每个layout工程师都要熟练掌握的操作。
4.1 CAD侧的准备比导入本身更重要
先说一个反复出现的现象:很多人在Allegro里导入DXF失败或导入后图形乱七八糟,第一反应是Allegro导入功能不好用,但实际上问题多半出在CAD侧的图纸不干净。
在CAD(AutoCAD)里,导出DXF前建议做几件事。第一,确认绘图单位,用 units 命令查看,是毫米还是英寸,记下来。第二,把所有Block都炸开(explode),因为Allegro的DXF导入对Block的支持有限,不炸开会导致图形丢失。第三,用PEDIT把相邻线段合并成连续的多段线,尤其是外形边界,最好是一条完整的闭合多段线。第四,如果文件里有很多重复对象,用OVERKILL命令清理。第五,把标注、文字、中心线这些非外形内容放到独立的层里,或者干脆删除,只保留外形几何。最后,导出时选择兼容性好的版本,比如AutoCAD 2000 DXF,避免太高版本带来的兼容问题。
这些准备看起来繁琐,但能省掉后续大部分清理时间。我见过一份DXF导进来后有一万多条碎线段,就是因为在CAD里没合并多段线,结果在Allegro里光清理线段就花了大半天。
4.2 Allegro里DXF导入选项逐个说清楚
导入操作很简单:File -> Import -> DXF,然后在弹出的对话框里选择文件。但对话框里的几个选项如果理解不到位,很容易出问题。
首先是DXF Units,这是最关键的一项。它告诉Allegro这份DXF图纸的长度单位是什么,选项一般有MM、MILS、INCH等。这里必须和CAD里的实际单位一致。比如CAD里用的毫米,这里就选MM;如果CAD图里实际是英寸但导出时没统一,这里选错,导入后板框尺寸会按比例缩放,最常见的就是25.4倍误差。
其次是Layer Mapping,也就是图层映射。DXF里的每个层名都可以映射到Allegro的Class和Subclass。默认映射可能会把全部内容都扔到某个机械层上,这不是我们想要的。建议手动把DXF的外形层映射到 Board Geometry/OUTLINE,如果是多层结构,把结构层映射到 Mechanical 1 或其他机械层。映射之后再点Import。
还有 Text 相关选项,比如Text Scale 和 Offset,这些通常用于PCB上的丝印信息导入,画板框时用不到,保持默认就行。如果你的结构图里包含大量文字和标注,而这些文字又不需要导入,最好在CAD里就删掉,能减少很多干扰。
4.3 导入后如何变成真正能用的板框
DXF导入进来后,图形可能落在你映射的OUTLINE层上,也可能因为映射不全落在别的层。先打开可见性,看下Result面板里的错误信息,确认导入数量,然后用 Display -> Measure 量一下长边,核对尺寸和原图是否一致。
如果图形没有直接落在OUTLINE层,不要重新画,找一个完整的封闭轮廓,用第2章提到的 Edit -> Z-Copy 把它借形到 BOARD GEOMETRY/OUTLINE 层。这也是我在实际项目里最常用的流程:DXF先导入到一个临时机械层,检查无误后再借形到OUTLINE。
还有一个问题要注意:DXF里的线段默认可能都是零线宽,导入Allegro后会显示成细线。如果这批线段要当板框用,就要统一改成非零线宽。最省事的办法是框选这些线段,在Options里批量改Line width,或者在Find面板里勾选Lines,再通过Edit -> Change属性统一设置线宽。改完之后,再用Compose Shape检查一次闭合性,确认无误后就可以用了。
5. DXF导入高频翻车现场:单位错乱、比例漂移与线段断裂
DXF导入的坑我基本都踩过一遍,下面这些是最高频的翻车现场,每一个都有具体的排查思路和解决办法。
5.1 25.4倍误差是怎么来的
最经典的一个问题是:板框导入后,整个板子尺寸大了25.4倍,或者小了25.4倍。原因几乎全是单位设置错位。CAD图纸本身可能是毫米,但导出的DXF文件头里写的是英寸,或者Allegro导入时在DXF Units下拉框里选错了,又或者CAD里图形虽然标着毫米但实际是按英寸画的。
判断方法很简单:导入后先用Measure量一下已知尺寸,比如板框长边应该是100mm,量出来却是2540mm,那就是被放大25.4倍了。这种时候千万不要试图用Edit -> Scale去硬缩放,Allegro里对零散线段做整体缩放很容易把坐标精度搞坏,而且缩放后圆弧、线段的位置可能漂移。
正确做法是:选中导入进来的图形,Delete删除,回到CAD里确认单位,重新导出DXF,再在Allegro导入时选对DXF Units。如果CAD里图形就是按英寸画的,而你又希望板框以毫米为单位,那就需要在CAD里先用SCALE缩放到毫米,再导出DXF。把单位问题解决在源头,比在Allegro里花时间硬调要可靠得多。
下面这张表是几种常见单位组合导致的误差,方便对照排查:
| 图纸实际单位 | Allegro导入时选错为 | 结果 |
|---|---|---|
| 毫米 | INCH | 放大25.4倍 |
| 英寸 | MM | 缩小为1/25.4 |
| 毫米 | MILS | 缩小为约1/39.37 |
| 英寸 | MILS | 放大约39.37倍 |
5.2 线段断裂和重复线段
DXF导入后,外形边界经常是一堆小线段拼起来的,有些线段首尾之间还差0.0001mm的微小缝隙,肉眼看不出来,但一到Compose Shape就报错。另外,重复线段也很常见,CAD里同一位置叠了两条线,导入后也会叠在一起,后续做DRC、出光绘都可能产生不确定行为。
处理思路分两步。第一步,搞定重复线段。如果图形简单,直接框选删除重叠部分就行;如果图形复杂,建议回到CAD用OVERKILL命令清理后再导出。第二步,解决微小断裂。判断哪些是真正断裂需要连起来的地方,可以用Compose Shape去试,报错信息会帮你定位。对于一些明明视觉上应该闭合但实际上存在微缝的线段,可以手动框选端点,用Edit -> Move或Edit -> Stretch把端点对齐,实在不行就删除那一小段,重新用Add -> Line连一次。
这些清理工作很磨人,所以我在4.1里反复强调CAD侧准备,目的就是把"线段碎裂"扼杀在导出前。一份在CAD里用PEDIT合并成一条闭合多段线的DXF,导入Allegro后是一整段完整的图形,几乎不需要额外清理。
5.3 圆弧变折线
另一个常见问题是,圆弧在DXF导入后变成了一段一段的直线,不再平滑。原因通常是CAD里用样条曲线(Spline)画的圆弧,或者导出时被软件离散成了多段线。Allegro虽然支持DXF中的Arc对象,但如果DXF里的"圆弧"本身就是若干小直线段,Allegro无法智能识别成真正的Arc。
如果这个圆弧是结构上的关键特征,比如一个需要嵌合外壳的圆角,那必须处理。手段有三个:一是在CAD里把Spline转成Polyline时提高段数,这样可以减少折线感,但仍不是真圆弧;二是在CAD里尽量用Arc命令画真正的圆弧对象,导出时选择支持Arc的DXF版本,Allegro导入后就能保留为Arc;三是在Allegro里手工重画关键圆弧段,用Add -> Arc按照原图近似位置重画,然后用Fillet匹配相邻直线。
从制造角度看,如果折线段的切段长度小于0.1mm,板厂铣出来的圆弧在视觉和精度上通常也能接受。但如果折线很明显,比如一段圆弧只有四五条线段拼成,铣出来的板边就呈多边形,这种必须处理。
5.4 导入后的一整套板框验证方法
导入并清理完板框之后,我一般会按下面这个顺序做一次完整验证,耗时最多十分钟,但能避免后面返工:
- 第一步,量尺寸。用Display -> Measure测量板框的长边和短边,对照结构图纸上的关键尺寸,确认没有25.4倍、1000倍这类比例错误。
- 第二步,查层。确认OUTLINE层上只有板框图形,没有导入进来的文字、标注、中心线等杂余对象。如有,删掉或移到其他层。
- 第三步,测闭合。用Shape -> Compose Shape试探性合成,成功则表示边界闭合,不成功则逐一修复断裂点。
- 第四步,看坐标。把鼠标移到板框左下角,看右下角坐标读数是否接近0,0;如果不接近,趁早用Setup -> Change Drawing Origin把原点移过去。
- 第五步,跑DRC。在没摆放任何器件之前,跑一次完整DRC,检查板框相关的间距错误。此时如果报错,基本都是板框本身的问题,修起来干净利落。
6. 板框完成后别急着布局:原点、标注和配套约束
板框画好、验证完了,很多人会立刻开始放器件。我的建议是,在放第一个器件之前,把下面这几件事做完,后面会省很多事。
6.1 把坐标原点钉在板框左下角
Setup -> Change Drawing Origin 可以把设计原点移动到板框左下角。操作很简单:执行命令后,用鼠标点击板框左下角端点,或者在命令行输入左下角的绝对坐标,原点就过去了。
为什么要做这一步?Allegro里所有器件的坐标、DXF对位、拼板数据、贴片机的坐标文件,都是以当前原点为基准的。如果原点不在板框上,输出坐标文件时每个器件都带一个固定的偏移量,和结构工程师对位会很痛苦。把原点放到板框左下角后,所有坐标值都直接对应板子上的真实位置,后面做装配图、拼板、导BOM坐标都顺。
6.2 尺寸标注和外形核对
接下来打开Dimension标注环境,给板框加上关键尺寸标注,比如外形长度、宽度、圆角半径,或者关键定位孔到板边的距离。这一步既是给自己看,也是留给后面审核的人看。标注完对照结构图逐项核对,能发现很多肉眼看不出来的细节错误,比如某条边比图纸短了0.5mm、某个圆角半径不一致等。
Allegro的Dimension环境里,线性标注和基准标注最常用。做板框尺寸标注时,不建议一次性标太多,挑结构图上标注过的关键尺寸来标就行,标注太多反而干扰视线。标注本身不会影响制造数据,但如果你的光绘输出时把Dimension层也加上,板厂就能直接看到你的外形要求,方便他们做最后核对。
6.3 板框画完后的三件套:Keepin、结构孔和锁定
板框确认后,第一件事是生成 Route Keepin 和 Package Keepin。一般用 Setup -> Areas -> Route Keepin,点击板框内侧边缘,画出比板框内缩0.5mm~1mm的范围,Package Keepin同理。这两个区域会在布局布线时帮Allegro自动约束器件和走线的边界,避免器件压到板边、走线距离板边过近。
第二件事是处理结构孔。电源板、控制板上常见的螺丝孔,如果是非金属化孔,通常直接画在BOARD GEOMETRY/CUTOUT层上用Shape表示,或者用一个机械Symbol放在对应坐标。如果螺丝孔位置会影响板框形状,比如是半孔或开口槽,这就要回到OUTLINE层去修改板框,把这部分槽形纳入外形边线。至于金属化安装孔,一般用Padstack做成的Mounting Hole Symbol放置,和板框层面关系不大。
第三件事是锁定。板框确认无误后,选中OUTLINE层上的所有线段,用Fix工具给它们打上锁定属性。锁定之后这些线段就不会被误删、误移。后面做其他操作时,即使框选范围大了些,也不会拖拽到板框。我个人的习惯是整板定稿前板框始终保持可编辑状态,直到布线和铺铜基本定型,再Fix,然后出光绘。太早锁定会影响改动,太晚锁定又容易误操作。
最后再分享一个我自己的小习惯:无论规则板还是异形板,我都坚持把板框放在BOARD GEOMETRY/OUTLINE层,保持线段形式,不随意Compose成Shape。理由很简单,线段形式的板框在修改、借形、出光绘时都最灵活,而且几乎不会踩到工具底层的兼容性问题。见过太多在板框上玩花活最后被反噬的案例了,板框这个环节,越简单越稳。