
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层选PlanePWR层选PlaneTop和Bottom选Conductor。这样后面铺铜的时候Plane层会自动用负片显示省得你手动铺。层叠厚度也要在这里设。板厂默认的1.6mm厚度对应到每层就是Top铜厚1oz约35um介质层约0.2mmGND和PWR之间的芯板约1.0mmBottom铜厚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里选MillimetersClass选Board GeometrySubclass选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封装里有重复的引脚编号检查焊盘编号比如两个焊盘都叫1Net 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 RS274XUnits选MillimetersDecimal 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一般选ExcellonUnits选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设成mCopy设成cDelete设成dShow Element设成e。这几个命令用得最频繁设好之后效率翻倍。第三出Gerber之前把BRD文件另存一份。因为出Gerber的过程中Allegro可能会修改一些参数比如Artwork里的层设置。另存一份保留一个干净的BRD下次改板的时候从干净的版本开始。第四和板厂确认工艺能力。不同的板厂最小线宽、最小孔径、最小间距都不一样。出Gerber之前去板厂官网查一下他们的工艺能力表确保你的设计在他们的能力范围内。比如嘉立创的普通工艺是6mil线宽、0.3mm孔径如果你画了4mil线宽他们做不了会加钱或者直接退单。第五Gerber打包的时候附一个说明文件。说明文件里写清楚板子层数、板厚、铜厚、阻焊颜色、丝印颜色、表面处理工艺沉金还是喷锡、有没有阻抗控制。板厂工程看到这个说明能少打几个电话问你。最后再分享一个小技巧Allegro 17.4里按F5可以刷新屏幕按F10可以切换飞线显示。这两个快捷键在布局的时候特别有用F5刷新一下有时候能解决一些显示bugF10关掉飞线看布局更清爽。