1. 为什么我劝你从Allegro 17.4开始学PCB设计
如果你刚入行硬件工程师,或者从Altium Designer转过来想学Cadence Allegro,大概率会被它那套“反人类”的交互逻辑劝退。我当初从AD转Allegro的时候,光是找一个“移动器件”的按钮就花了十分钟——AD里直接拖拽就行,Allegro里你得先选Move命令,再去点器件,还得在Find面板里勾对选项,否则点半天没反应。但为什么还有那么多大厂在用Allegro?原因很简单:规则驱动设计。当你画过一块2000+网络的服务器主板,或者一块8层以上的高速差分板,你就会明白AD那套“先画再查”的流程有多容易翻车,而Allegro的Constraint Manager能在你动手之前就把线宽、间距、等长全部锁死。
这篇内容我打算用最笨的办法,把Cadence Allegro 17.4从零开始画板框、导网表、布局、一直到出Gerber的完整流程拆开揉碎讲一遍。不管你是学生做课程设计,还是刚入职的硬件助理,跟着走一遍至少能少踩我当年踩过的坑。特别是Gerber设置那部分,我会把几个容易导致板厂退单的隐藏选项单独拎出来说——这些细节你在官方文档里翻半天都不一定找得到,但板厂工程审核的时候一眼就能看出来。
先明确一下工具链:OrCAD Capture CIS 17.4负责原理图和网表导出,Allegro PCB Designer 17.4负责建板框、布局布线和出Gerber。这两个软件装在一起,License是分开的,打开的时候别搞混。另外,我默认你已经装好了软件,如果安装都还没搞定,那得先去找安装教程,那个话题展开又是几千字,这里不赘述。
提示:Allegro 17.4对中文路径极其敏感,工程目录、库路径、甚至电脑用户名都不要带中文和空格,否则导网表或者出Gerber的时候会报一些莫名其妙的错误,比如“Cannot open file”但文件明明就在那里。
2. 画板框之前,先把该准备的准备工作做扎实
2.1 新建工程与目录结构规划
很多人拿到项目直接打开Allegro就开始画,画到一半发现文件散落在桌面各个角落,最后打包发给板厂的时候漏了钻孔文件。我的习惯是在硬盘上建一个干净的项目根目录,比如D:\Project_SW6206,然后在里面分几个子文件夹:
01_Schematic:放OrCAD的DSN原理图文件02_PCB:放Allegro的BRD文件03_Lib:放自己画的封装库和焊盘库04_Gerber:出Gerber的时候自动生成到这里05_Datasheet:放芯片手册和参考设计
这个结构看起来简单,但等你同时跟三个项目的时候就知道好处了。Allegro的库路径设置里,把03_Lib加进去,以后换电脑只要把整个Project_SW6206文件夹拷走,所有封装都能找到,不会出现“找不到焊盘”的报错。
新建BRD文件的时候,Allegro会让你选一个模板。17.4自带几个模板,我一般选default_8_layer或者直接空白模板。注意,不要选带默认板框的模板,否则你后面自己画的板框会和模板里的重叠,删都删不干净。选空白模板,所有东西从零开始,心里最有数。
2.2 单位与精度设置——别等到出Gerber才后悔
在开始画板框之前,先把单位设对。Allegro默认可能是mil,但国内板厂和结构图一般用毫米。我的建议是:板框用毫米画,走线用mil。听起来很分裂,但这是最实用的做法。结构工程师给你的DXF文件是毫米,你直接用毫米画板框,尺寸对得严丝合缝;而走线的时候,线宽比如5mil、6mil,用mil更符合行业习惯。
设置路径:Setup -> Design Parameters -> Design标签页,在User Units里选Millimeters,精度设4位小数。然后Setup -> Design Parameters -> Display里,把Accuracy也改成4位。这样你画板框的时候输入100.5mm,它不会给你四舍五入成100.50或者101。
注意:单位改完之后,已经画好的元素不会自动换算。所以一定要在动手之前就设好,别画了一半再改,否则板框尺寸会乱掉。
2.3 层叠设置——板框画在哪个层
Allegro的层概念比AD复杂得多。AD里你画个框,选Keep-Out层或者Mechanical层就行。Allegro里,板框通常画在Board Geometry -> Outline层,而禁布区画在Package Geometry -> Keep-Out层。这两个层别搞混:Outline是板子实际切割的边缘,Keep-Out是禁止布线放器件的区域。
另外,17.4的Cross-section(层叠编辑器)里,你要提前把层数设好。比如SW6206这个案子,我打算用4层板:Top、GND、PWR、Bottom。在Setup -> Cross-section里,把Total Layers设成4,然后给每层分配类型。GND层选Plane,PWR层选Plane,Top和Bottom选Conductor。这样后面铺铜的时候,Plane层会自动用负片显示,省得你手动铺。
层叠厚度也要在这里设。板厂默认的1.6mm厚度,对应到每层就是:Top铜厚1oz(约35um),介质层约0.2mm,GND和PWR之间的芯板约1.0mm,Bottom铜厚1oz。这些参数板厂会根据自己的工艺调整,但你设的时候要有个大概,否则阻抗控制算出来对不上。
3. 从零画板框:直线、圆弧、倒角一个都不能少
3.1 用Add Line画基础矩形框
画板框最常用的命令是Add -> Line,在Options面板里选Board Geometry和Outline。然后直接在画布上点两个对角点,一个矩形就出来了。但这里有个细节:Allegro的Line命令默认是画线段,不是画矩形。你要画矩形,得用Add -> Rectangle,或者在Line命令下配合坐标输入。
我习惯用坐标输入,精确。比如板子尺寸是50mm x 40mm,原点设在左下角。那么:
- 在命令栏输入
x 0 0,回车,这是起点。 - 再输入
x 50 0,回车,画底边。 - 输入
x 50 40,回车,画右边。 - 输入
x 0 40,回车,画顶边。 - 最后输入
x 0 0,回车,闭合。
这样画出来的板框是四段独立的线段,但Allegro会自动识别它们构成一个闭合区域。你可以用Shape -> Compose命令把它们合成一个Shape,但一般不需要,只要首尾相连就行。
3.2 倒圆角和圆弧过渡
实际板子很少是纯直角,特别是手持设备,边角都要倒圆角。Allegro里倒圆角用Manufacture -> Drafting -> Fillet命令。在Options面板里设好半径,比如R3mm,然后依次点两条相邻的边,它就会自动倒角。
但Fillet命令有个坑:它只对Line段有效,对Arc段无效。如果你板框里已经有圆弧了,再倒角会报错。所以顺序很重要:先画直线段,把所有直角倒完圆角,最后再处理需要圆弧过渡的地方。
圆弧过渡用Add -> Arc命令。Options里选3-point模式,点起点、终点、弧上一点,就能画出任意圆弧。比如USB连接器那一边,经常需要一个大圆弧包住,用这个命令慢慢调。
3.3 从DXF导入板框——结构工程师最爱的方式
大多数时候,板框是结构工程师用CAD画好的,导出DXF给你。Allegro导入DXF的路径是File -> Import -> DXF。在弹出的对话框里,选好DXF文件,然后关键在DXF units里选Millimeters,Class选Board Geometry,Subclass选Outline。
导入之后,你可能会发现板框不在原点附近,或者比例不对。这时候用Move命令,在Find面板里只勾Shapes,把整个板框选中,移动到原点。如果比例不对,检查DXF导出的时候单位是不是搞错了,有时候结构工程师用英寸画的,导出DXF没改单位,你导入进来就大了25.4倍。
提示:导入DXF之前,先在CAD里把不需要的图层删掉,只保留板框轮廓线。否则导入进来一堆标注线、中心线,你还得手动删,很麻烦。
3.4 板框的闭合性检查
板框画完,一定要检查是否闭合。Allegro有个命令叫Shape -> Check,选Board Geometry/Outline层,它会告诉你这个Shape是否闭合。如果不闭合,后面铺铜会出问题,板厂切割也会报错。
另一个检查方法是看面积。用Tools -> Reports,选Shape Area,如果板框闭合,它会显示一个面积值;如果不闭合,面积显示为0或者报错。我一般两个方法都用一遍,确保万无一失。
4. 导网表:OrCAD和Allegro之间的那座桥
4.1 在OrCAD里设置网表输出
原理图画完,DRC检查通过之后,就可以导网表了。在OrCAD Capture里,选中工程根目录,点Tools -> Create Netlist。在弹出的对话框里,选Allegro标签页,然后注意几个关键设置:
Netlist File:默认是netlist.dat,不用改。Create PCB Editor Netlist:勾上。Create Flat Netlist:一般勾上,除非你做层次化设计。PCB Editor Board File:如果你已经有BRD文件了,可以在这里指定,但一般留空,后面在Allegro里导入。
点OK之后,OrCAD会在工程目录下生成一个allegro文件夹,里面有三个文件:pstxnet.dat、pstxprt.dat、pstchip.dat。这三个文件缺一不可,导网表的时候Allegro会同时读它们。
4.2 在Allegro里导入网表
打开你的BRD文件,在Allegro里点File -> Import -> Logic。在弹出的对话框里,Import logic type选Design,然后Input PCB Editor Board File不用管,关键是下面的Netlist路径,指向OrCAD生成的那个allegro文件夹。
点Import之后,Allegro会开始读网表。如果一切顺利,你会在命令窗口看到“Netlist import completed successfully”之类的提示。但大多数时候不会这么顺利,下面几种报错你大概率会遇到:
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
Cannot find device file | 某个器件的封装在库路径里找不到 | 检查Setup -> User Preferences -> Paths -> Library里的路径是否包含你的封装库 |
Pin count mismatch | 原理图符号的引脚数和PCB封装引脚数不一致 | 打开封装文件,数一下焊盘数量,和原理图符号对比 |
Duplicate pin number | 封装里有重复的引脚编号 | 检查焊盘编号,比如两个焊盘都叫1 |
Net has no driving pin | 某个网络没有驱动端 | 检查原理图,可能是某个器件的电源引脚没连 |
4.3 网表导入后的检查
网表导入成功之后,别急着布局。先做两件事:
第一,用Tools -> Reports,选Netlist Report,看看网络数量和原理图是否一致。如果少了几个网络,说明网表没导全。
第二,在Allegro里点Place -> Manually,看看器件列表里是不是所有器件都在。如果某个器件不在,说明它的封装没找到,或者网表里根本没这个器件。
注意:网表导入之后,如果你在原理图里改了东西,比如加了个电阻,必须重新导网表。Allegro不会自动同步,你得再走一遍
File -> Import -> Logic的流程。而且导入之前,最好把已经布局的器件位置记一下,因为重新导网表可能会打乱布局。
5. 布局:从飞线到模块化摆放
5.1 飞线分析——先看哪些器件必须靠近
网表导入之后,Allegro会自动显示飞线(Ratsnest)。这些飞线就是逻辑连接关系,告诉你哪些引脚之间有网络。布局的第一步,不是急着摆器件,而是看飞线密度。
我一般用Display -> Show Rats -> All把所有飞线显示出来,然后观察哪些区域的飞线最密集。比如SW6206这个案子,电源输入部分、芯片外围、输出部分,飞线会分成几个明显的簇。这些簇就是天然的模块划分依据。
另外,用Tools -> Quick Reports -> Ratsnest Report可以看每个网络的飞线长度。长度特别长的网络,说明两个器件离得太远,布局的时候要优先把它们拉近。
5.2 模块化布局——先大后小,先难后易
布局的顺序我总结为八个字:先大后小,先难后易。先把连接器、芯片、大电感这些占地方的器件摆好,再摆电阻电容这些小器件。
具体到SW6206这个电源芯片:
- 先把输入输出连接器放在板边,方向朝外,方便插拔。
- 把SW6206芯片放在板子中间偏上的位置,周围留出足够空间放外围器件。
- 输入电容紧贴芯片的VIN引脚,输出电容紧贴VOUT引脚,电感放在SW引脚旁边,走线越短越好。
- 反馈电阻分压网络靠近FB引脚,远离电感,避免噪声耦合。
- 最后摆电阻电容,按照飞线最短的原则,一个一个拉过去。
5.3 格点设置与对齐技巧
Allegro的格点(Grid)设置很讲究。布局的时候,我一般设两个格点:大格点50mil,小格点5mil。大格点用来摆芯片和连接器,小格点用来微调。
对齐器件用Edit -> Align命令,可以水平对齐、垂直对齐、等间距分布。比如一排电阻,先摆好第一个和最后一个,然后选中间的所有电阻,用Align -> Distribute,它们就会自动等间距排列。
提示:布局的时候,把Find面板里的选项只勾
Symbols,这样你点选的时候只会选中器件,不会误选到走线或者铜皮。这个习惯能省很多时间。
5.4 布局检查清单
布局完成之后,对照下面这个清单检查一遍:
- 连接器方向是否正确,有没有朝板内
- 芯片的散热焊盘下方有没有打过孔
- 大电感的下面有没有走敏感信号线
- 晶振是否靠近芯片,有没有包地
- 去耦电容是否紧贴电源引脚
- 板边器件是否留够了焊接空间
- 有没有器件重叠或者超出板框
6. Gerber设置:板厂最怕你漏掉的那几个选项
6.1 Gerber之前,先做DRC
出Gerber之前,必须跑一遍DRC。Tools -> Quick Reports -> DRC Report,看看有没有间距违规、线宽违规、未连接的网络。特别是未连接的网络,Allegro里叫Unconnected Pins,如果有,说明你的板子还没布通,出Gerber也是废的。
DRC通过之后,还要做一件事:更新DRC标记。Tools -> Update DRC,确保所有标记都是最新的。有时候你改了线宽,但DRC标记还是旧的,会误导你。
6.2 Artwork设置——层和底片的关系
Gerber在Allegro里叫Artwork。路径是Manufacture -> Artwork。打开之后,你会看到一个Film列表,每个Film对应一个Gerber文件。比如Top层、Bottom层、Solder Mask、Silk Screen、Drill等。
关键操作:
- 在
Available Films里,右键选Add,新建一个Film。 - 在
General Parameters里,设好Format为Gerber RS274X,Units选Millimeters,Decimal Places选4。 - 在
Film Options里,勾上Suppress Unconnected Pads,这个选项会去掉没有连接的焊盘,减小Gerber文件大小。 - 在
Layers里,把该层需要输出的元素勾上。比如Top层,要勾Pin、Via、Etch、Line、Text等。
6.3 避坑点一:Solder Mask层不要搞反
Solder Mask是阻焊层,板厂用它来开窗。Allegro里的Solder Mask是负片,也就是说,你画了东西的地方,板厂会去掉阻焊油,露出铜;你没画的地方,板厂会保留阻焊油。
很多人从AD转过来,习惯在Solder Mask层画开窗,结果画反了,板子做出来焊盘全被油盖住。正确的做法是:焊盘的开窗由焊盘本身决定,你在建焊盘的时候,已经设了Solder Mask的尺寸。出Gerber的时候,Solder Mask层会自动包含所有焊盘的开窗,你不需要额外画。
如果你要在某个区域额外开窗,比如测试点,那就在Solder Mask层画一个Shape,但记住,画的是开窗区域,不是阻焊区域。
6.4 避坑点二:Silk Screen不要压焊盘
丝印层压焊盘是板厂最讨厌的事情之一。因为丝印是印在阻焊层上面的,如果丝印压到焊盘,焊接的时候锡会沾到丝印上,导致虚焊。
出Gerber之前,用Display -> Color/Visibility,只显示Silk Screen和Pin,看看有没有丝印线穿过焊盘。如果有,用Edit -> Move把丝印移开,或者用Edit -> Delete删掉压焊盘的部分。
Allegro有个自动检查丝印压焊盘的工具:Manufacture -> Silkscreen,可以自动把压焊盘的丝印剪掉。但自动剪有时候会剪得很难看,我一般手动调。
6.5 避坑点三:钻孔文件要单独出
Gerber只包含铜层和阻焊丝印,钻孔信息要单独出一个NC Drill文件。路径是Manufacture -> NC -> NC Drill。在对话框里,选好Format(一般选Excellon),Units选Millimeters,然后点Drill。
钻孔文件里包含了所有过孔和通孔的坐标和孔径。板厂用这个文件来钻孔。如果你漏了钻孔文件,板厂会打电话问你,或者直接按Gerber里的过孔焊盘猜一个孔径,做出来可能插不进去。
注意:NC Drill的
Format里,Absolute和Incremental要选对。一般选Absolute,坐标是绝对坐标。如果选Incremental,坐标是相对上一个孔的增量,板厂读起来容易出错。
6.6 避坑点四:层叠报告和阻抗报告
如果你做了阻抗控制,比如USB差分线90欧姆,那出Gerber的时候要附上阻抗报告。Allegro里可以生成Cross-section Report,路径是Tools -> Reports -> Cross-section。把这个报告和Gerber一起打包给板厂,他们才知道你要控制哪些线的阻抗。
层叠报告也是同理,板厂需要知道每层的厚度和铜厚,才能算出阻抗。如果你没给,板厂就按默认的1.6mm和1oz铜厚做,阻抗可能对不上。
6.7 Gerber输出后的检查
Gerber出完之后,别急着打包。用CAM350或者免费的GC-Prevue打开检查一遍。重点看:
- 板框是否闭合,尺寸是否正确
- 焊盘是否齐全,有没有缺焊盘
- 丝印是否清晰,有没有压焊盘
- 钻孔是否和焊盘对齐
- 阻焊开窗是否比焊盘大(一般大4mil左右)
我见过有人出Gerber的时候,Top层和Bottom层搞反了,板子做出来所有器件都得反着焊。这种错误在CAM350里一眼就能看出来,但如果你不检查,直接发给板厂,那就等着重新打样吧。
7. 常见问题与排查技巧实录
7.1 网表导入报错“Cannot find device”
这个报错我遇到不下二十次。原因无非三种:封装库路径没设对、封装名字和原理图里写的不一致、封装文件损坏。
排查步骤:
- 在Allegro里点
Setup -> User Preferences -> Paths -> Library,看看padpath和psmpath里有没有你的库目录。 - 在OrCAD里,选中报错的器件,右键
Edit Part,看看它的PCB Footprint属性写的是什么名字。 - 去库目录里找这个名字的
.dra文件,看是否存在。 - 如果都存在,打开
.dra文件,用Tools -> Padstack -> Modify Design Padstack检查焊盘是否正常。
7.2 布局的时候器件选不中
Allegro的Find面板是万恶之源。如果你点一个器件没反应,99%是Find面板里没勾Symbols。把Find面板打开,只勾你需要选中的元素类型,其他全部取消。这个习惯能让你少砸几次键盘。
7.3 铺铜之后DRC报错一堆
铺铜之后,DRC可能会报很多间距违规。原因通常是铜皮和走线、焊盘之间的间距设得太小。在Setup -> Constraints -> Spacing里,把铜皮到走线的间距设成和走线到走线的间距一样,比如6mil。然后重新铺铜,DRC就干净了。
7.4 Gerber文件太大,板厂说打不开
Gerber文件太大,通常是两个原因:一是Format选错了,选成了Gerber 6x00而不是RS274X;二是Suppress Unconnected Pads没勾,导致很多空焊盘也被输出。
解决方法:在Artwork里,把Format改成Gerber RS274X,勾上Suppress Unconnected Pads,重新出Gerber。
7.5 板厂反馈“钻孔文件和Gerber不对齐”
这个问题的根源通常是单位不一致。Gerber用毫米,钻孔文件用mil,或者反过来。检查NC Drill的Units设置,确保和Artwork里的Units一致。另外,Format里的Decimal Places也要一致,比如都是4位。
8. 一些让我少加班的操作习惯
画完一块板子,导出Gerber只是第一步。真正让我少加班的,是下面这几个习惯:
第一,每完成一个阶段就存一个版本。比如画完板框存一个_outline.brd,导完网表存一个_netlist.brd,布局完成存一个_placed.brd。这样万一后面改崩了,可以回退到上一个版本,不用从头再来。
第二,把常用的快捷键设好。Allegro的快捷键在env文件里改。我一般把Move设成m,Copy设成c,Delete设成d,Show Element设成e。这几个命令用得最频繁,设好之后效率翻倍。
第三,出Gerber之前,把BRD文件另存一份。因为出Gerber的过程中,Allegro可能会修改一些参数,比如Artwork里的层设置。另存一份,保留一个干净的BRD,下次改板的时候从干净的版本开始。
第四,和板厂确认工艺能力。不同的板厂,最小线宽、最小孔径、最小间距都不一样。出Gerber之前,去板厂官网查一下他们的工艺能力表,确保你的设计在他们的能力范围内。比如嘉立创的普通工艺是6mil线宽、0.3mm孔径,如果你画了4mil线宽,他们做不了,会加钱或者直接退单。
第五,Gerber打包的时候,附一个说明文件。说明文件里写清楚:板子层数、板厚、铜厚、阻焊颜色、丝印颜色、表面处理工艺(沉金还是喷锡)、有没有阻抗控制。板厂工程看到这个说明,能少打几个电话问你。
最后再分享一个小技巧:Allegro 17.4里,按F5可以刷新屏幕,按F10可以切换飞线显示。这两个快捷键在布局的时候特别有用,F5刷新一下,有时候能解决一些显示bug;F10关掉飞线,看布局更清爽。