1. 为什么我劝新手从Allegro 17.4开始学PCB设计
很多人第一次打开Cadence Allegro的时候,表情都是懵的。满屏的图标、菜单、工具栏,跟Altium Designer那种“点两下就能画完”的画风完全不一样。但如果你打算在消费电子、通信设备、工控主板这些行业里长期做硬件,Allegro基本是绕不过去的坎。我见过太多人装了软件之后卡在第一步——原理图建好了,网表导不进去;网表导进去了,封装又对不上;封装搞定了,铺铜又出问题;最后好不容易画完了,Gerber导出被板厂打回来三次。
这篇内容就是写给这些人的。我会把从原理图到Gerber的完整链路拆开,每一步告诉你为什么这么做、坑在哪里、怎么绕过去。不是官方文档的复读机,是我自己踩过的坑和带新人时反复验证过的路径。适合零基础想入门Allegro的在校生、从AD转过来的工程师、以及被公司要求用Allegro但没人带的新人。你不需要先学Cadence Virtuoso,也不需要懂仿真,只要会基本的电路常识和Windows操作,跟着走就能跑通全流程。
2. 开工前的环境准备与工程管理思路
2.1 安装与版本选择:为什么锁定17.4
Cadence的安装一直是新手的第一个噩梦。网上流传的各种安装包和补丁版本鱼龙混杂,我建议直接锁定17.4这个版本。原因很简单:它足够稳定,业界保有量大,绝大多数教程和Skill脚本都是基于17.2/17.4写的,遇到问题能搜到答案。16.6虽然经典,但界面和17.x差异较大,学了之后换版本又要重新适应。24.x太新,很多公司的库和流程还没跟上。
安装路径绝对不要带中文和空格,这是铁律。我见过有人装在D:\我的项目\Cadence下面,结果OrCAD Capture打开就报错,查了半天是路径编码问题。推荐D:\Cadence\SPB_17.4这种纯英文短路径。安装完成后,先别急着建工程,打开Capture CIS看看能不能正常启动,再打开Allegro PCB Editor确认License正常。如果启动时报“无法连接License Server”,大概率是环境变量CDS_LIC_FILE没配好,指向license.dat的完整路径即可。
注意:安装过程中关闭杀毒软件和Windows Defender的实时保护,Cadence的某些组件会被误杀,导致后续功能缺失。
2.2 工程目录结构:一开始就规范,后面少遭罪
新手最容易犯的错是把所有文件扔在一个文件夹里,原理图、PCB、Gerber、BOM混在一起。等到要改版或者归档的时候,根本分不清哪个是最终版。我建议在项目根目录下建这几个子文件夹:
- Schematic:存放
.dsn原理图文件和.opj工程文件 - PCB:存放
.brdPCB文件 - Library:存放自建的原理图符号库
.olb和PCB封装库.dra/.psm - Output:存放Gerber、钻孔文件、贴片坐标等生产文件
- Doc:存放设计说明、叠层要求、阻抗要求等文档
这样做的好处是,当你要把项目发给同事或者归档时,整个文件夹打包即可,不会漏文件。而且Allegro的库路径设置可以指向Library文件夹,换电脑后重新指定路径就行,不用一个个改。
2.3 库管理:别用自带库,自己建
Cadence自带的库质量参差不齐,而且很多封装不符合国内板厂的工艺能力。我的习惯是所有器件都自建符号和封装,哪怕是最普通的0402电阻。听起来麻烦,但一次建好之后,后面所有项目都能复用。原理图符号库用Capture CIS的Library Manager建.olb文件,PCB封装库用PCB Editor的Padstack Designer建焊盘,再用Package Symbol建封装。
建库的时候有个细节:焊盘命名要规范。比如一个0402电阻的焊盘,命名成R0402_0R6X0R7,表示焊盘尺寸0.6mm×0.7mm。这样看到名字就知道尺寸,不用打开文件查。封装的命名同理,R0402、C0603、SOP-8_3R9X4R9P1R27,把关键尺寸编码进去。这个习惯在器件多了之后能救命。
3. 原理图设计:从建库到网表输出的完整链路
3.1 原理图符号创建:管脚多的器件怎么搞
新手最怕建那种一百多个管脚的符号,比如STM32F103C8T6或者DDR4的颗粒。一个个手动画管脚,画到一半就眼花。我的做法是用Excel辅助:先在Excel里整理好管脚号、管脚名、电气类型(Input/Output/Power/Ground/Bidirectional/Passive),然后存成CSV。Capture CIS支持导入管脚列表,在Symbol Editor里选Place Pin Array,把CSV内容粘贴进去,一次性生成所有管脚。然后按功能分区摆放,比如电源区、时钟区、通信区,用矩形框隔开。
电气类型不能乱设。Power类型的管脚必须接电源网络,否则ERC检查会报错。Passive类型用于电阻电容这类无源器件。Bidirectional用于数据总线。如果设错了,网表导入PCB时会出现“器件未定义”或者“网络冲突”的报错。我见过有人把VCC管脚设成Passive,结果PCB里电源网络连不上,查了一下午。
实操心得:建符号时把管脚号字体设成
Fixed,管脚名设成Variable,这样改管脚名的时候不会影响管脚号的位置。另外,Pin Group功能可以把相关管脚编组,比如把DDR的DQ0-DQ7编成一组,布线时方便整体操作。
3.2 原理图绘制与ERC检查
画原理图的核心原则是信号流向清晰。从左到右,输入在左,输出在右,电源在上,地在下的传统布局依然适用。网络标签(Net Alias)要统一命名规范,比如VCC_3V3、GND、SPI1_MOSI、UART1_TX。不要用N12345这种自动生成的网络名,否则PCB里根本分不清哪根线是什么。
ERC(Electrical Rule Check)必须跑,而且必须清零。常见的ERC报错有:
| 报错类型 | 原因 | 解决方法 |
|---|---|---|
| 电源管脚未连接 | Power类型的管脚悬空 | 检查是否漏接电源网络 |
| 输出管脚短接 | 两个Output管脚接在一起 | 确认是否应该用Bidirectional |
| 网络只有一个节点 | 某个网络只连了一个管脚 | 检查是否漏画连线 |
| 器件位号重复 | 两个器件用了同一个位号 | 重新编号(Annotate) |
ERC通过后,执行Create Netlist,输出格式选Allegro,生成.tel网表文件。这个文件是原理图和PCB之间的桥梁,后面导入PCB就靠它。
3.3 网表导入PCB:第一次导入必看的报错处理
打开Allegro PCB Editor,新建.brd文件,然后File > Import > Logic,选择刚才生成的网表。第一次导入大概率会报错,常见的有:
- “Device not found”:PCB库里没有对应的封装。解决方法是在
Setup > User Preferences > Paths > Library里把封装库路径加进去,确保.dra和.psm文件都在。 - “Pin number mismatch”:原理图符号的管脚号和PCB封装的焊盘号对不上。比如原理图里管脚叫
1,2,3,PCB封装里焊盘叫A,B,C。回去改封装或者改符号,保持一致。 - “Net has no driver”:某个网络没有驱动源。检查原理图里是不是漏了上拉电阻或者电源标志。
导入成功后,所有器件会堆在PCB画布外面,用Place > Manually一个个摆进来。别急着摆,先做布局规划。
4. PCB布局布线:从叠层到铺铜的实战细节
4.1 叠层设置与阻抗计算
叠层是PCB的地基,定错了后面全白搭。四层板是入门标配:Top-GND-Power-Bottom。六层板一般是Top-GND-Signal-Power-GND-Bottom。层数越多,成本越高,但信号完整性越好。
叠层设置里最关键的是介质厚度和铜厚。板厂默认的芯板厚度是0.5mm或0.8mm,PP片(半固化片)有0.1mm、0.2mm等规格。你要根据板厂的工艺能力来填。比如嘉立创的JLC04161H-3313叠层,Top到GND的介质厚度是0.2mm,铜厚1oz(35um)。这些参数在板厂的官网都能查到。
阻抗计算用Allegro自带的Cross Section工具,或者用板厂的在线计算器。比如USB差分线要求90Ω差分阻抗,线宽和间距要根据叠层反推。我一般先用板厂的计算器算出线宽间距,再填到Allegro的约束管理器里。
注意:叠层设置好后,不要随意改层数或者介质厚度,否则所有阻抗和线宽都要重算。改版时如果只是改电路不改叠层,直接复用原来的
.brd文件另存即可。
4.2 布局:先大后小,先难后易
布局的顺序是:先放结构件(连接器、螺丝孔、按键),再放核心器件(MCU、DDR、电源芯片),最后放阻容感。结构件的位置由外壳决定,不能动。核心器件的位置影响布线难度,要优先考虑。
DDR的布局尤其讲究。DDR颗粒要尽量靠近MCU,走线长度越短越好。数据线(DQ)和地址线(ADDR)要分组,同组内走线长度差控制在±50mil以内。时钟线要包地处理,远离其他信号。电源引脚旁边必须放去耦电容,0.1uF和10uF搭配,越靠近引脚越好。
电源模块的布局要考虑散热。DC-DC芯片的电感、二极管、电容要紧凑排列,减少环路面积。反馈线(FB)要远离电感,否则会被干扰导致输出电压不稳。我见过一个反激式开关电源的板子,FB线从电感底下穿过,结果输出电压跳变,查了两天才发现是布局问题。
4.3 布线规则与约束管理器
Allegro的约束管理器(Constraint Manager)是核心工具,但新手往往不知道怎么用。基本流程是:先设物理规则(线宽、过孔),再设间距规则(线到线、线到焊盘、线到铜皮),最后设电气规则(阻抗、等长、差分)。
线宽设置:电源线要粗,一般1A电流对应1mm线宽(1oz铜厚)。信号线默认6mil,BGA区域可以降到4mil。过孔默认0.3mm孔径/0.6mm盘径,电源过孔可以加大到0.5mm/1.0mm。
间距规则:默认间距6mil,BGA区域可以降到4mil。高压区域要加大间距,比如220V交流电部分,间距至少2mm。铜皮到板边的距离至少0.5mm,否则铣板时铜皮会翘起。
差分对设置:在约束管理器里定义差分对,设好线宽、间距、阻抗。Allegro会自动检查差分对的等长和间距。USB、HDMI、PCIe这些高速信号必须做差分。
4.4 铺铜:优先级和避让的坑
铺铜(Copper Pour)是Allegro里最容易出问题的地方。铜皮优先级决定了哪块铜皮先铺、哪块后铺。优先级高的铜皮会覆盖优先级低的。比如GND铜皮优先级设1,电源铜皮设2,那么电源铜皮会避开GND铜皮。
铺铜的避让规则在Shape > Global Dynamic Params里设置。Thermal Relief(热焊盘)用于连接焊盘和铜皮,Anti-pad用于隔离过孔和铜皮。新手常犯的错是热焊盘的开口太小,导致焊接时散热太快,虚焊。一般开口宽度设0.3mm,连接桥宽度设0.3mm。
实操心得:铺铜后一定要跑
Shape > Verify,检查有没有孤岛铜皮(Isolated Copper)。孤岛铜皮没有电气连接,会产生天线效应,干扰信号。发现孤岛铜皮要么删掉,要么加过孔连接到主地平面。
5. Gerber导出与生产文件准备
5.1 Gerber导出:参数设置与常见报错
Gerber是板厂能看懂的唯一语言。Allegro导出Gerber的路径是Manufacture > Artwork。需要导出的层包括:
- Top:顶层线路
- Bottom:底层线路
- Soldermask_Top/Bottom:阻焊层
- Silkscreen_Top/Bottom:丝印层
- Pastemask_Top/Bottom:钢网层
- Drill:钻孔层
- Outline:板框层
每层的参数在Film Control里设置。Format选Gerber RS274X,这是最通用的格式。Units选Inch,精度选2:5(0.01mil分辨率)。Suppress选Leading Zero。这些参数板厂都认。
常见报错:“Photoplot has no outline”,说明板框层没加进去。“Undefined aperture”,说明有焊盘没有对应的D码。检查Padstack是否完整。“Film size too small”,说明画布尺寸小于实际板框,在Setup > Drawing Size里加大。
5.2 钻孔文件与贴片坐标
钻孔文件用Manufacture > NC > Drill Tape导出,格式选Excellon。钻孔文件要和Gerber的钻孔层一致,否则板厂会搞混。贴片坐标用Manufacture > Report导出,选Placement,格式选ASCII。坐标文件里包含位号、X坐标、Y坐标、旋转角度,贴片厂直接导入机器就能用。
注意:贴片坐标的原点要设成板框左下角,不要用默认的绝对原点。否则贴片厂要自己算偏移,容易出错。在
Setup > Change Drawing Origin里点板框左下角即可。
5.3 打包发给板厂:检查清单
发板厂之前,对照这个清单检查一遍:
| 检查项 | 要求 |
|---|---|
| Gerber层数 | 与叠层一致,不多不少 |
| 钻孔文件 | 与Gerber钻孔层一致 |
| 板框 | 闭合,无缺口 |
| 阻抗要求 | 单独文档说明 |
| 叠层要求 | 单独文档说明 |
| 表面处理 | 喷锡/沉金/OSP,明确 |
| 最小线宽/间距 | 与板厂工艺匹配 |
| 过孔盖油/开窗 | 明确 |
我一般会把Gerber、钻孔文件、叠层说明、阻抗说明打包成一个ZIP,命名成项目名_版本号_日期,发给板厂。板厂会做DFM检查,如果有问题会反馈,按反馈改就行。
6. 新手高频问题与排查技巧实录
6.1 网表导入失败:从报错到解决
网表导入失败是最常见的问题,没有之一。我整理了一个速查表:
| 报错信息 | 根本原因 | 解决步骤 |
|---|---|---|
| Device not found | 封装库路径不对或封装缺失 | 检查Library路径,确认.dra/.psm存在 |
| Pin number mismatch | 符号管脚号与焊盘号不一致 | 对比符号和封装的管脚号,改一致 |
| Net has no driver | 网络无驱动源 | 检查原理图电源标志和上拉电阻 |
| Duplicate reference | 位号重复 | 重新Annotate |
| Property missing | 器件缺少必要属性 | 检查Device文件是否完整 |
排查思路是从源头查起:先确认原理图ERC通过,再确认网表生成成功,再确认PCB库路径正确,最后确认封装与符号匹配。不要跳步,跳步只会浪费时间。
6.2 铺铜问题:优先级、孤岛、热焊盘
铺铜的问题集中在三个方面:
优先级冲突:两块铜皮重叠时,优先级高的覆盖优先级低的。如果发现电源铜皮被GND铜皮覆盖了,检查优先级设置。在Shape > Select Shape or Void里选中铜皮,右键Parameters,改Priority值。
孤岛铜皮:铺铜后跑Shape > Verify,如果有孤岛,要么删掉,要么加过孔连接到主地。孤岛铜皮在EMC测试时会产生辐射,必须处理。
热焊盘连接不良:热焊盘的连接桥太窄,焊接时散热太快。在Global Dynamic Params > Thermal Relief里把连接桥宽度从0.2mm加大到0.3mm,开口从0.2mm加大到0.3mm。
6.3 快捷键与Skill脚本:效率提升的野路子
Allegro的默认快捷键很少,但可以自定义。在Setup > User Preferences > Ui > Input里可以改快捷键。我常用的几个:
F2:Zoom FitF3:Zoom InF4:Zoom OutF5:Slide(推挤布线)F6:Add ConnectF7:DeleteF8:Move
Skill脚本是Allegro的杀手锏。网上有很多开源脚本,比如自动加泪滴、自动检查丝印压焊盘、自动导出Gerber。我常用的一个脚本是quick_gerber.il,一键导出所有Gerber层,省去每次手动设置的麻烦。脚本放在$CDSROOT\share\pcb\skill目录下,在allegro.ilinit里加载即可。
实操心得:Skill脚本不要贪多,装多了会拖慢启动速度。常用的三五个就够了。另外,脚本要从可信来源下载,有些脚本会改你的设计规则,导致DRC报错。
6.4 从Allegro转PADS:文件转换的注意事项
有些公司用PADS,需要把Allegro的文件转过去。转换路径是:Allegro导出.asc文件,PADS导入.asc。但转换过程中会丢失一些信息,比如铜皮优先级、差分对、约束规则。转换后必须重新检查:
- 铜皮是否完整
- 差分对是否还在
- 约束规则是否生效
- 焊盘是否变形
我一般建议不要直接转,而是把原理图网表和封装库重新导入PADS,重新布局布线。虽然费时间,但能保证设计质量。直接转的文件往往需要大量修复,反而更费时间。
7. 一些没人告诉你但很重要的经验
7.1 版本兼容:降版本的正确姿势
Allegro 17.4的文件在16.6里打不开,这是版本兼容问题。降版本的方法是:在17.4里File > Export > Downrev Design,选16.6格式,生成一个.brd文件。但降版本会丢失17.4的新功能,比如某些铜皮类型、约束规则。降版本后必须重新跑DRC,确认没有报错。
7.2 库的备份与迁移
库是硬件工程师的命根子。我建议每季度备份一次库,存到网盘或者移动硬盘。备份内容包括.olb符号库、.dra/.psm封装库、.pad焊盘库、allegro.ilinit配置文件。换电脑时,把这些文件拷过去,重新指定路径即可。
7.3 设计复用:改版时的偷懒技巧
改版时不要从头画。把旧版的.brd文件另存为新版本,然后File > Import > Logic导入新的网表。Allegro会自动匹配相同的器件,保留布局和布线。新增的器件会堆在画布外面,手动摆进来即可。改完后跑DRC,确认没有冲突。
7.4 与板厂沟通的话术
和板厂沟通时,不要说“随便”“你看着办”。要明确说:叠层要求、阻抗要求、表面处理、最小线宽间距、过孔工艺。比如:“四层板,Top-GND-Power-Bottom,JLC04161H-3313叠层,USB差分90Ω,表面处理沉金,最小线宽4mil,最小间距4mil,过孔0.3/0.6mm。”板厂一听就知道你是老手,不会糊弄你。
7.5 常见DRC报错的处理优先级
DRC报错不要慌,按优先级处理:
- 短路(Short):最高优先级,必须改。
- 间距(Clearance):次高,看是否影响生产。
- 线宽(Line Width):影响载流能力,必须改。
- 过孔(Via):影响工艺,看板厂能力。
- 丝印(Silkscreen):最低,压焊盘才改。
我一般先跑DRC,把短路和间距改完,再跑一次,再看线宽和过孔。丝印问题最后处理,因为不影响电气性能。
7.6 关于仿真:新手要不要学
Cadence的仿真工具(Sigrity、PSpice)很强大,但新手不要一上来就学。先把原理图、PCB、Gerber这条链路跑通,再学仿真。仿真是锦上添花,不是雪中送炭。我见过有人连封装都没建对,就去跑DDR仿真,结果仿真结果全是错的,浪费时间。
7.7 一个真实的踩坑案例
去年带一个新人做STM32F103C8T6的最小系统板。原理图画完,ERC通过,网表导入PCB,一切正常。布局布线花了三天,DRC也过了。导出Gerber发给板厂,板厂反馈说“钻孔文件与Gerber钻孔层不一致”。查了半天,发现是导出钻孔文件时选错了单位,Gerber用的是Inch,钻孔文件用的是mm。改过来重新导出,板厂确认没问题。板子回来焊接,发现复位按键按下去没反应。查原理图,发现复位按键的一端接GND,另一端接NRST,但NRST上拉电阻忘了放。补焊一个10K电阻,问题解决。
这个案例说明:细节决定成败。单位、上拉电阻、去耦电容,这些看起来不起眼的东西,往往是最容易出问题的地方。
7.8 关于Allegro Skill的进阶玩法
如果你已经能熟练跑通全流程,可以试试Skill脚本自动化。比如写一个脚本,自动检查所有器件的位号是否重复、自动在丝印层加版本号、自动导出BOM。Skill的语法类似C语言,网上有大量示例。我常用的一个脚本是自动加泪滴(Teardrop),在焊盘和走线连接处加泪滴,防止加工时断线。脚本代码不长,但能省很多手动操作的时间。
7.9 关于铜皮优先级的深入理解
铜皮优先级是Allegro里比较绕的概念。简单说:优先级高的铜皮先铺,优先级低的铜皮避让优先级高的。比如GND铜皮优先级1,VCC铜皮优先级2,那么VCC铜皮会避开GND铜皮。如果反过来,GND铜皮会避开VCC铜皮。实际项目中,一般GND铜皮优先级最高,因为地平面要完整。电源铜皮优先级次之,信号铜皮优先级最低。
注意:铜皮优先级不要设太多层,一般三层就够了。设多了容易乱,而且影响铺铜速度。
7.10 关于Allegro转PADS的补充
前面提到Allegro转PADS会丢失信息,这里补充一个技巧:转换前先把所有铜皮删掉,转过去之后再重新铺铜。因为铜皮的转换最容易出问题,删掉重铺反而更干净。另外,转换后的PADS文件要重新跑DRC,确认没有短路和间距问题。
8. 从入门到熟练的进阶路线
跑通一遍全流程之后,你算是入门了。接下来要提升的是设计质量和效率。我的建议是:
- 第一周:熟悉快捷键和约束管理器,把常用操作练成肌肉记忆。
- 第一个月:做三块板子,从简单的双层板到四层板,再到六层板。每块板子都跑完整流程,包括Gerber导出和板厂沟通。
- 第三个月:学Skill脚本,把重复性操作自动化。学仿真基础,用PSpice跑简单的电源仿真。
- 半年后:挑战高速信号设计,比如DDR3/DDR4、USB3.0、HDMI。学信号完整性基础,理解阻抗匹配、串扰、反射。
这个过程没有捷径,但每一步都有明确的路径。我见过太多人卡在第一步,装完软件就放弃了。其实只要跑通一次全流程,后面的路就顺了。Allegro的陡峭学习曲线是事实,但一旦跨过去,你会发现它比任何PCB工具都强大。
最后分享一个我自己的习惯:每做完一块板子,写一份设计总结。记录用了什么叠层、什么规则、遇到什么问题、怎么解决的。下次做类似项目时,直接翻总结,不用重新踩坑。这个习惯坚持了五年,现在我的总结文档已经成了团队的新人培训材料。