拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cadence Allegro PCB封装制作全流程:从焊盘设计到生产验证

Cadence Allegro PCB封装制作全流程:从焊盘设计到生产验证

1. 封装制作前的底层逻辑与准备工作

1.1 为什么封装是PCB设计的“地基”

干硬件这行十来年,我越来越觉得,PCB封装制作这件事,表面看是画几个焊盘、拉几根线,实际上它决定了整个板子的电气性能、焊接良率,甚至量产成本。你原理图画得再漂亮,仿真跑得再顺,封装建错一个尺寸,板子回来就是一堆废片。尤其是现在器件越来越小,0201、01005的阻容满地跑,BGA引脚间距做到0.35mm甚至更小,手工算尺寸的时代早就过去了,但Cadence Allegro这套工具的逻辑,还是得从最底层理解起。

很多人刚接触Allegro的时候,习惯拿Altium Designer的思路去套,结果发现处处别扭。AD里画封装,放个焊盘、画个框,改改属性就完事了。Allegro不一样,它把焊盘(Padstack)、封装符号(Symbol)、**器件(Device)**这三层拆得很清楚。焊盘是独立的文件,封装是独立的文件,器件又是另一个概念。这种设计一开始让人觉得繁琐,但当你需要批量替换焊盘、或者同一个封装对应不同器件的时候,就知道它的好处了。

提示:如果你是从AD转过来的,先把“焊盘即封装”的思维扔掉。在Allegro里,焊盘是焊盘,封装是封装,两者通过Pad Designer和PCB Editor分别管理。

1.2 建库前的环境确认与单位设置

动手之前,有几件事必须先确认好,不然做到一半发现单位错了,返工能让你崩溃。

第一,确认你的Allegro版本和补丁。16.6和17.4的界面差异不小,17.4之后很多菜单项挪了位置,快捷键也有变化。我见过有人照着16.6的教程在17.4上找菜单,找了半小时没找到。所以先确认版本,再找对应教程。

第二,单位设置。Allegro默认可能是mil,也可能是mm。国内大部分消费电子用mm,但很多射频板、高速板还是用mil。我的习惯是,建库之前先统一成mil,因为大部分器件手册给的尺寸都是mm,但焊盘补偿习惯用mil来算,转换起来1mm≈39.37mil,心里有数就行。具体操作:在PCB Editor里,Setup → Design Parameters → Design,把User Units改成Mils,Accuracy设成2(小数点后两位),这样精度够用,又不会因为位数太多导致文件臃肿。

第三,库路径规划。别把所有封装都扔在一个文件夹里,后期找起来要命。我的习惯是按器件类型分:/lib/resistor、/lib/capacitor、/lib/ic、/lib/connector,每个下面再分/pad和/symbol。这样后期维护、备份、迁移都方便。

1.3 焊盘设计标准的快速查阅方法

0201焊盘设计标准尺寸这个问题,网上搜出来的答案五花八门。我一般直接翻IPC-7351标准,但那个文档太厚,实际工作中我总结了一个快速估算方法:

对于0201(0.6mm×0.3mm)的阻容,焊盘宽度通常取0.3mm到0.35mm,焊盘长度取0.35mm到0.4mm,两个焊盘之间的间距取0.4mm左右。但这不是死数,得看你的工艺能力。如果板厂蚀刻精度一般,焊盘可以稍微放大0.02mm;如果是高密度板,就按标准来。

更靠谱的做法是,直接找器件厂商的推荐焊盘图。比如Murata、TDK的官网,每个型号都有Recommended Land Pattern,照着画基本不会错。如果找不到,就按IPC-7351的Nominal值来,别自己拍脑袋。

注意:焊盘尺寸不是越大越好。焊盘太大,回流焊时器件容易漂移;焊盘太小,焊锡量不够,虚焊风险高。这个平衡点,得靠实际打样来验证。

2. 焊盘制作的核心细节与参数计算

2.1 Pad Designer的界面逻辑与关键参数

打开Pad Designer,界面看起来简单,但每个参数背后都有讲究。我按顺序说:

Layer页面是核心。对于表贴焊盘,你只需要在Begin Layer和Default Internal Layer里填尺寸。但注意,Allegro的焊盘是分层的,Top层和Bottom层可以不一样,虽然大多数情况一样。对于通孔焊盘,还要填Internal Layer,也就是孔壁的铜厚。

Parameters页面里,Drill Size是钻孔直径,通常比成品孔径大0.1mm到0.15mm,给电镀留余量。比如成品孔0.3mm,钻头就用0.4mm或0.45mm。这个余量给多少,得问板厂。有些板厂能力强,0.1mm就够了;有些小厂,你得给到0.15mm甚至0.2mm。

Thermal Relief和Anti Pad是给负片层用的。现在很多板子用正片,这两个参数用得少,但如果你用负片铺铜,就得认真填。Thermal Relief的开口宽度,一般是焊盘直径的0.5倍到0.7倍,太小了散热不够,太大了连接强度不够。

2.2 表贴焊盘与通孔焊盘的尺寸计算实例

拿一个0402的电容举例。器件手册给的焊盘推荐是:焊盘宽度0.55mm,焊盘长度0.6mm,间距0.9mm。转换成mil:宽度约21.65mil,长度约23.62mil,间距约35.43mil。

在Pad Designer里,我一般会取整:宽度22mil,长度24mil,间距35mil。为什么取整?因为Allegro里输入整数比小数方便,而且这点误差对0402来说完全可以接受。

再拿一个通孔器件举例,比如2.54mm间距的排针。成品孔径通常1.0mm,钻孔1.1mm到1.2mm。焊盘直径一般是孔径的1.8倍到2倍,所以焊盘直径取2.0mm到2.2mm。如果空间允许,我取2.2mm,焊接更牢固。如果空间紧张,取1.8mm也能用,但手工焊接时容易掉焊盘。

实操心得:通孔焊盘的焊盘直径,不要小于孔径的1.5倍。我见过有人为了省空间,焊盘只比孔大0.2mm,结果过波峰焊时,焊锡直接顺着孔流走了,根本焊不上。

2.3 焊盘补偿与SMD焊盘隔热设计

SMD焊盘隔热设计这个问题,很多人忽略。表贴焊盘如果直接连到大铜皮上,回流焊时热量散得太快,焊盘温度上不去,容易冷焊。解决办法是在焊盘和铜皮之间加隔热连接,也就是Thermal Relief。

在Allegro里,如果你用负片铺铜,Pad Designer里设置Thermal Relief就行。如果用正片铺铜,就得在PCB Editor里,对铺铜设置Thermal Relief连接方式。具体操作:Shape → Global Dynamic Params → Thermal Relief,选择连接方式,设置开口宽度。

我的经验是,对于0402以下的器件,隔热开口宽度取焊盘宽度的0.5倍;对于0603以上的,取0.6倍到0.7倍。开口太窄,散热不够;开口太宽,连接强度不够,回流焊时器件容易立碑。

2.4 焊盘命名规范与库管理

焊盘命名,我见过各种奇葩的,比如pad1、pad_0402、p0402_22_24。我的建议是,命名要能一眼看出尺寸和类型。比如SMD0402_22X24,表示表贴0402,焊盘22mil×24mil。通孔的就用TH_1R0_2R2,表示通孔,孔径1.0mm,焊盘2.2mm。

这样命名,后期在PCB Editor里替换焊盘时,一眼就能找到。而且,如果你用Allegro的Skill脚本批量处理,命名规范了,脚本也好写。

提示:焊盘文件的后缀是.pad,封装文件的后缀是.dra和.psm。.dra是绘图文件,.psm是编译后的符号文件。每次改完.dra,记得在PCB Editor里File → Create Symbol,重新生成.psm,不然改动不生效。

3. 封装符号制作的全流程拆解

3.1 新建封装文件与栅格设置

打开PCB Editor,File → New,选择Package Symbol,给个名字,比如R0402。然后设置栅格。我的习惯是,栅格设成5mil,因为大部分焊盘间距都是5mil的整数倍。如果做细间距器件,比如0.4mm间距的QFN,栅格就设成1mil或者0.5mil。

栅格设置:Setup → Grids,把Non-Etch和All Etch都设成5mil。如果做BGA,可能需要设成1mil。栅格太粗,放焊盘时对不准;栅格太细,移动起来太慢。这个得根据器件类型灵活调整。

3.2 放置焊盘与引脚编号映射

放置焊盘:Layout → Pins,在Options里选择Padstack,然后点焊盘位置。对于0402,两个焊盘间距35mil,所以第一个放原点,第二个放(35,0)。

引脚编号:放完焊盘,要给每个焊盘分配引脚号。Layout → Pin Numbers,或者直接在放焊盘的时候,在Options里填Pin Number。对于电阻电容,一般就是1和2。对于IC,就得按手册的引脚定义来。

这里有个坑,错误:pcb封装usr:usb16对于具有管脚映射的元件无效-非数字管脚编号b8。这个报错的意思是,你的封装里用了非数字的引脚编号,比如B8、A1这种,但你的器件(Device)文件里没有做引脚映射。解决办法是,在PCB Editor里,Logic → Part Logic,把引脚编号映射到器件引脚上。或者,在建封装的时候,就用数字编号,然后在原理图里做映射。

注意:BGA封装经常用字母+数字的引脚编号,比如A1、B2。建封装时,引脚编号可以写A1、B2,但必须在Device文件里做好映射,不然导入网表时会报错。

3.3 丝印外框的绘制与线宽选择

丝印外框,看起来简单,但细节不少。首先,线宽选多少?我的习惯是,丝印线宽取6mil到8mil。太细了,板厂印不出来;太粗了,占用空间,而且容易和焊盘重叠。

丝印外框的尺寸,一般比器件本体大0.2mm到0.3mm。比如0402的器件,本体是1.0mm×0.5mm,丝印外框就画1.2mm×0.7mm。这样既能框住器件,又不会压到焊盘。

画丝印:Add → Line,在Package Geometry → Silkscreen_Top层画。画的时候,注意不要穿过焊盘。如果空间紧张,丝印可以断开,但不要压在焊盘上。因为丝印是绝缘的,压在焊盘上会影响焊接。

allegro丝印被删除了这个问题,我遇到过几次。原因通常是,在PCB Editor里,不小心把Silkscreen_Top层关掉了,或者用Delete命令时,选错了层。解决办法是,在Color Dialog里,把Silkscreen_Top打开,然后重新画。如果丝印被删了但封装文件还在,可以重新打开.dra文件,重新画丝印,再Create Symbol。

3.4 器件高度与Place Bound的设置

Place Bound是给布局用的,表示器件的占位面积。对于0402,Place Bound就画成和丝印外框一样大。对于高度,在Package Geometry → Place_Bound_Top层,画一个Shape,然后设置高度属性。

设置高度:选中Shape,Edit → Properties,添加PACKAGE_HEIGHT_MAX和PACKAGE_HEIGHT_MIN,填上器件的高度值。这个值在后期做3D预览和装配检查时很有用。

实操心得:Place Bound不要画得太大,不然布局时器件之间会报错,明明可以放下的位置,因为Place Bound重叠而放不了。一般比器件本体大0.1mm就够了。

3.5 原点设置与封装保存

原点设置很关键。我的习惯是,把原点设在器件的几何中心。对于0402,两个焊盘间距35mil,原点就设在(17.5,0)。这样布局时,器件的中心就是原点,旋转、对齐都方便。

设置原点:Setup → Change Drawing Origin,点一下中心位置。然后File → Create Symbol,生成.psm文件。保存.dra文件,封装就建好了。

注意:原点不要设在焊盘上,不然布局时对齐很麻烦。也不要设在器件外面,不然旋转时器件会跑偏。

4. 封装验证、导入与常见问题排查

4.1 封装自检与DRC检查

封装建完,别急着用,先自检。我一般做这几件事:

第一,用Padstack检查焊盘尺寸。在PCB Editor里,Tools → Padstack → Modify Design Padstack,看看焊盘尺寸对不对。

第二,用DRC检查。Tools → Quick Reports → Design Rules Check,看看有没有间距违规、丝印压焊盘等问题。

第三,用3D预览。View → 3D View,看看器件高度、焊盘位置对不对。虽然Allegro的3D预览不如专业3D软件,但检查基本尺寸足够了。

4.2 从原理图导入封装与网表同步

cadence 封装导入pcb这个流程,我走过多遍。步骤是:

  1. 在原理图里,给每个器件指定封装名。比如电阻指定R0402,电容指定C0402。
  2. 在PCB Editor里,导入网表。File → Import → Logic,选择网表文件。
  3. 如果封装路径不对,会报错。解决办法是,在Setup → User Preferences → Paths → Library里,把封装库路径加进去。
  4. 导入后,检查器件是否都放进来了。如果有缺失,看报错信息,一般是封装名不对,或者封装文件不在库路径里。

orcad关联allegro这个问题,关键是网表格式。OrCAD导出的网表,要选Allegro格式,不是其他格式。在OrCAD里,Tools → Create Netlist,选Allegro,然后导出。

4.3 常见报错与排查速查表

报错信息原因解决办法
错误:pcb封装usr:usb16对于具有管脚映射的元件无效-非数字管脚编号b8封装用了非数字引脚编号,Device文件没做映射在Part Logic里做引脚映射,或改用数字编号
allegro cell read-only封装文件被设为只读,或者被其他进程占用检查文件属性,关闭其他Allegro进程
allegro铜皮只有轮廓铺铜时选了Outline模式,或者铜皮被设为静态改铺铜模式为Solid,或更新铜皮
cadence瞬态仿真不收敛仿真参数设置不当,或者模型有问题调整仿真步长,检查模型参数
allegro丝印被删除了误操作删除了Silkscreen层,或者层被关闭重新打开层,重新画丝印

4.4 封装替换与版本兼容处理

allegro替换单个封装这个操作,我经常用。步骤是:在PCB Editor里,Place → Update Symbols,选择要替换的封装,然后点Refresh。如果替换后焊盘不对,可能是焊盘文件没更新,重新生成.psm就行。

allegro文件版本降低这个问题,Allegro不支持直接降版本。如果高版本文件要在低版本打开,只能导出ODB++或者DXF,然后在低版本里重新导入。但这样会丢失一些属性,所以尽量统一版本。

提示:团队协作时,最好统一Allegro版本和补丁号。我见过因为版本不一致,封装打开后焊盘错位的情况,排查了半天才发现是版本问题。

4.5 快捷键设置与效率提升技巧

allegro pcb快捷键设置这个,我建议把常用的命令设成快捷键。比如:

  • F2:Move
  • F3:Copy
  • F4:Delete
  • F5:Add Connect
  • F6:Slide

设置方法:在PCB Editor里,Tools → Utilities → Keyboard Commands,或者直接改env文件。env文件在$HOME/pcbenv目录下,用文本编辑器打开,加上alias F2 move这样的行就行。

allegro skill脚本,如果会写的话,能大幅提升效率。比如批量改焊盘、批量加丝印,用Skill脚本几秒钟搞定。不会写也没关系,网上有很多现成的脚本,下载下来改改就能用。

5. 从封装到生产的最后几公里

5.1 出光绘文件前的封装检查清单

allegro出光绘文件之前,封装必须检查到位。我一般列个清单:

  • 焊盘尺寸对不对,有没有按IPC标准补偿
  • 丝印有没有压焊盘,线宽够不够
  • Place Bound有没有设,高度对不对
  • 原点在不在中心,旋转方不方便
  • 引脚编号和原理图对不对得上
  • 有没有多余的层,比如Assembly层有没有画

这个清单过一遍,基本能避免大部分生产问题。

5.2 封装库的维护与团队协作

封装库不是建完就完了,得维护。我的习惯是,每个封装建完后,在库里加个说明文件,写清楚这个封装的来源、尺寸依据、建库人、建库日期。这样后期别人用的时候,心里有数。

团队协作时,库的版本管理很重要。我一般用Git或者SVN管理库文件,每次改动都提交,这样出问题了能回溯。

5.3 从封装到PCBA的工艺对接要点

封装建得再好,工艺跟不上也白搭。所以建库的时候,得和板厂、贴片厂沟通。比如:

  • 最小线宽线距是多少
  • 最小孔径是多少
  • 焊盘补偿给多少
  • 丝印最小线宽是多少

这些参数,每个厂都不一样。我一般建库前,先问清楚合作板厂的工艺能力,然后按他们的能力来建库。这样打样一次过,省时省力。

实操心得:我见过有人按IPC标准建库,结果板厂工艺达不到,焊盘太小,蚀刻不出来。所以,标准是参考,实际得看板厂能力。

5.4 个人建库习惯与效率工具推荐

最后分享几个我个人的习惯:

第一,建库时,把常用的焊盘和封装做成模板。比如0402、0603、0805的阻容,建一次,以后直接复制改名字就行。

第二,用Excel管理封装库。每个封装一行,记录名称、尺寸、来源、备注。这样找起来快,也方便交接。

第三,定期备份库文件。我一般每周备份一次,存到网盘或者移动硬盘。封装库丢了,重新建能让你怀疑人生。

第四,多逛论坛。吴川斌的博客里有很多Allegro的教程和脚本,虽然有些老了,但思路值得参考。还有Cadence的官方论坛,遇到问题搜一下,基本都能找到答案。

建库这件事,说难不难,说简单也不简单。关键是细心、耐心,加上一点经验积累。我刚开始建库的时候,一个0402的封装建了半小时,还建错了。现在五分钟搞定,而且一次过。所以,多练,多踩坑,自然就熟了。

返回列表