ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

0603、0805、1206封装设计全解析:AD与Allegro实战指南

0603、0805、1206封装设计全解析:AD与Allegro实战指南 1. 被动元件封装设计的基础认知1.1 为什么0603、0805、1206是绕不开的三大主流封装搞硬件设计的人不管你是画原理图还是做PCB Layout只要涉及到电阻、电容、电感这类被动元件0603、0805、1206这三个尺寸几乎是每天都要打交道的。我刚入行那会儿师傅扔给我一个元件库说“先把这三个封装搞明白剩下的慢慢来”当时还不以为然后来踩了几次坑才发现这话一点不夸张。这三个封装尺寸都属于表面贴装器件SMD的范畴数字直接对应元件的物理尺寸。0603的意思是长0.06英寸、宽0.03英寸换算成毫米大约是1.6mm×0.8mm0805对应2.0mm×1.25mm1206对应3.2mm×1.6mm。这个命名规则来自英制单位虽然现在大家都用公制了但行业里还是习惯叫0603、0805、1206。为什么这三个尺寸能成为主流核心原因就两个字平衡。0603在小型化和可制造性之间找到了最佳平衡点手焊勉强能操作贴片机效率也高所以消费电子里用得最多。0805比0603大一圈焊接难度明显降低功率承受能力也上去了工业控制和汽车电子里很常见。1206则是大功率场景的首选电阻能到1/4W甚至更高电容的容值和耐压也能做得更大。注意不同厂家对同一封装的焊盘推荐尺寸可能有细微差异比如Yageo和Murata的0603电容焊盘建议就不完全一样。做库的时候一定要以你实际使用的品牌规格书为准不能随便找个通用库就往上怼。1.2 封装设计资料到底包含哪些内容很多人以为“封装设计资料”就是画个焊盘图形其实远不止。一套完整的封装设计资料至少包含以下几个层面焊盘图形Footprint包括焊盘尺寸、间距、形状这是最核心的部分丝印轮廓Silkscreen元件本体的外框标识方便目视检查阻焊开窗Solder Mask焊盘周围的阻焊层开口影响焊接质量助焊层Paste Mask钢网开孔的依据直接关系到锡膏量3D模型用于结构干涉检查和装配验证元件属性位号、值、耐压、功率等参数信息在AD和Allegro这两个主流EDA工具里这些内容的组织方式不太一样。AD用的是集成库Integrated Library或者数据库库Database LibraryAllegro用的是Padstack加Symbol的组合方式。后面我会分别展开讲。1.3 不同EDA工具下的封装设计思路差异AD和Allegro在封装设计上的哲学差异挺大的理解这一点能帮你少走很多弯路。AD的思路是所见即所得你在PCB库里直接画焊盘、放丝印、设规则所有东西都在一个界面里搞定。好处是直观上手快适合中小型项目和快速迭代。坏处是库管理比较松散项目多了容易乱。Allegro的思路是分层管理Padstack定义焊盘本身的物理属性尺寸、钻孔、层叠Symbol定义元件的逻辑属性引脚编号、位号、丝印。一个Padstack可以被多个Symbol复用改一个Padstack所有引用它的Symbol全部更新。这套机制在大型企业里非常吃香因为能保证库的一致性但学习曲线确实陡。我个人的经验是如果你做的是消费类电子产品团队规模不大AD的效率更高如果你在通信设备、服务器、汽车电子这类对可靠性要求极高的领域Allegro的严谨性值得你花时间去学。2. 0603、0805、1206封装的关键参数与计算逻辑2.1 焊盘尺寸的确定原则与计算公式焊盘尺寸不是拍脑袋定的背后有一套成熟的工程计算逻辑。核心原则是焊盘要足够大以保证焊接强度但不能太大导致元件偏移或立碑。以0603电阻为例元件本体尺寸是1.6mm×0.8mm端头电极宽度通常在0.3mm左右。行业通用的焊盘设计公式是这样的焊盘长度 端头电极宽度 0.25mm外侧延伸 0.15mm内侧延伸焊盘宽度 元件宽度 0.1mm两侧各延伸0.05mm焊盘间距 元件长度 - 2×端头电极宽度 2×内侧延伸按这个公式算下来0603电阻的典型焊盘尺寸大约是长0.75mm、宽0.9mm、间距0.9mm。当然不同厂家的推荐值会有微调比如Panasonic的0603焊盘间距推荐0.85mm而Yageo推荐0.9mm。封装类型元件尺寸(mm)焊盘长度(mm)焊盘宽度(mm)焊盘间距(mm)06031.6×0.80.70-0.800.85-0.950.85-0.9508052.0×1.250.90-1.001.30-1.401.00-1.1012063.2×1.61.10-1.201.70-1.801.60-1.70提示上表是通用推荐值实际项目中建议直接调用元件厂家提供的规格书中的推荐焊盘尺寸。如果找不到可以参考IPC-7351标准里面有针对不同密度等级Most、Nominal、Least的详细推荐。2.2 阻焊层与助焊层的参数设置阻焊层和助焊层的设置经常被新手忽略但它们对焊接良率的影响非常大。阻焊开窗一般比焊盘单边大0.05mm到0.1mm。太小了会导致焊盘边缘被阻焊覆盖影响焊接太大了会导致相邻焊盘之间的阻焊桥变窄容易连锡。对于0603这种小间距封装阻焊开窗建议单边0.05mm而1206可以放宽到0.1mm。助焊层钢网开孔的尺寸通常和焊盘一致但对于大焊盘需要做缩孔处理。比如1206的焊盘面积较大如果钢网开孔和焊盘一样大锡膏量会过多容易导致元件偏移。一般建议钢网开孔面积是焊盘面积的80%到90%可以通过缩小开孔尺寸或者做网格分割来实现。在AD里阻焊和助焊层的设置是在Pad属性里直接指定的有个“Solder Mask Expansion”和“Paste Mask Expansion”的选项。Allegro里则是在Padstack Editor里分别定义每一层的尺寸相对繁琐但更灵活。2.3 不同功率等级下的封装选型依据选封装不能只看尺寸功率承受能力是关键约束。同样封装的电阻和电容功率等级差异很大。0603电阻的额定功率通常是1/10W0.1W0805是1/8W0.125W1206是1/4W0.25W。但这不是绝对的比如Vishay的某些0603电阻能到0.2W而一些低成本厂家的1206可能只有0.2W。选型的时候一定要看规格书里的降额曲线环境温度超过70°C之后功率承受能力会明显下降。电容这边更复杂因为还要考虑耐压和容值。0603的MLCC电容通常耐压50V以下容值最大到10uF左右0805能到100V、22uF1206可以做到200V甚至更高容值也能更大。如果你需要一个1uF/100V的电容0805可能勉强能做但1206更稳妥。我个人的经验法则是功率留50%余量耐压留30%余量。比如电路里实际功耗是0.08W那就选0805的1/8W电阻不要用0603的1/10W硬扛。长期高温工作环境下余量还要再放大。3. AD中的封装库建设实操3.1 从零开始创建0603电阻封装在AD里创建封装我习惯用PCB Library面板而不是在PCB文件里直接画。这样库文件独立管理项目迁移的时候不会丢。具体步骤是这样的打开ADFile → New → Library → PCB Library新建一个PCB库文件在Components区域右键 → New Blank Component命名为R0603放置焊盘Place → Pad按Tab键设置属性第一个焊盘设置Designator为1Layer为Top LayerShape为RectangularSize X0.75mmSize Y0.9mm第二个焊盘设置Designator为2位置X0.9mm相对于第一个焊盘设置阻焊和助焊层在Pad属性里Solder Mask Expansion设为0.05mmPaste Mask Expansion设为0mm画丝印Place → Line在Top Overlay层画元件轮廓注意丝印不能压在焊盘上设置参考点Edit → Set Reference → Location一般设在元件中心这里有个细节很多人不注意焊盘的Shape选择。对于0603这种小封装矩形焊盘Rectangular比圆形焊盘Round更好因为矩形焊盘的边缘能提供更好的焊接强度。但如果是BGA或者细间距器件圆形或八角形焊盘更合适。注意AD默认的焊盘阻焊开窗是0.1mm单边对于0603来说太大了容易导致相邻焊盘连锡。建议手动改成0.05mm。这个参数在Pad属性的Solder Mask Expansion里改。3.2 0805和1206封装的快速复制与修改有了0603的基础做0805和1206就快多了。我的做法是直接复制0603的封装然后改参数。在PCB Library面板里右键点击R0603 → Copy然后Paste重命名为R0805。接着修改焊盘尺寸和位置焊盘长度改为0.95mm宽度改为1.35mm焊盘间距改为1.05mm丝印轮廓相应放大1206同理焊盘长度1.15mm宽度1.75mm间距1.65mm。但这里有个坑丝印的线宽。0603的丝印线宽一般用0.12mm0805和1206可以用0.15mm。如果丝印线太粗会占用宝贵的PCB面积太细了又印不清楚。我一般统一用0.12mm除非板子空间特别充裕。另外复制封装的时候记得检查焊盘编号。电阻电容都是两端器件编号1和2没问题但如果是排阻或者多引脚器件编号错了整个封装就废了。我见过有人复制封装后忘了改编号结果打样回来发现元件焊反了查了半天才发现是库的问题。3.3 集成库的编译与版本管理单个封装做好之后需要编译成集成库才能在设计中使用。AD的集成库Integrated Library把原理图符号和PCB封装绑定在一起用起来很方便。编译步骤File → New → Project → Integrated Library然后把原理图库和PCB库都加进去右键 → Compile Integrated Library。编译成功后会在项目输出目录生成一个.IntLib文件。但集成库有个问题版本管理麻烦。每次修改封装都要重新编译而且旧版本的项目如果引用了旧库更新后可能会出问题。我的做法是给库文件加版本号比如R0603_V1.2每次修改都递增版本号并在库文件的Description字段里写清楚修改内容。对于团队协作更推荐用数据库库Database Library或者SVN/Git管理库文件。数据库库的好处是所有人从同一个数据库调用元件保证一致性SVN/Git的好处是能追溯每次修改出问题能回滚。4. Allegro中的封装设计流程4.1 Padstack Editor中焊盘的创建要点Allegro的封装设计从Padstack开始。打开Padstack Editor或者Allegro PCB Editor里的Padstack Designer新建一个Padstack命名为PAD0603R。关键参数设置Units选Millimeter别用Mil容易搞混Padstack类型选Surface Mount因为是SMD器件Layer在Begin Layer和End Layer都设置焊盘尺寸Shape选RectangleWidth0.9mmHeight0.75mm然后设置Solder Mask层在Mask Layer里Solder Mask Top的尺寸比焊盘单边大0.05mm即1.0mm×0.85mm。Paste Mask Top的尺寸和焊盘一致或者略小0.02mm。Allegro的Padstack有个好处是可以保存成模板下次做类似封装直接调用改改尺寸就行。我一般会建一个Padstack模板库把常用的0603、0805、1206、SOT-23、QFN等封装的Padstack都做好用的时候直接调。提示Allegro 17.4之后的版本对Padstack Editor做了大改界面和16.6差别很大。如果你看的是16.6的教程在17.4里可能找不到对应的菜单。建议先确认自己用的版本再找对应的教程。4.2 Symbol创建与引脚映射Padstack做好之后在Allegro PCB Editor里创建Symbol。File → New → Package Symbol然后Setup → Design Parameters设置单位和栅格。放置引脚Layout → Pins选择刚才做的Padstack放到指定位置。0603电阻的两个引脚间距是0.9mm所以第一个引脚放在(0,0)第二个放在(0.9,0)。然后画丝印Add → Line在Package Geometry → Silkscreen_Top层画元件轮廓。Allegro的丝印层管理比AD严格必须放在正确的层里否则出光绘的时候会丢。设置位号Layout → Labels → RefDes在Silkscreen_Top层放置位号文字一般放在元件中心或者上方。Allegro的Symbol有个Place_Bound_Top层用来定义元件的占位区域做DRC检查的时候会用到。这个区域一般比元件本体大0.2mm左右确保元件之间不会干涉。4.3 从Padstack到Symbol的完整流程演示我拿一个实际的0805电容封装来走一遍完整流程创建PadstackPadstack Editor → New → 命名PAD0805C → Surface Mount → Rectangle → Width 1.35mm, Height 0.95mm → Solder Mask单边0.05mm → Paste Mask同焊盘 → Save创建SymbolAllegro PCB Editor → File → New → Package Symbol → 命名C0805 → Setup → Design Parameters → Units: Millimeter → 栅格设0.05mm放置引脚Layout → Pins → 选择PAD0805C → 引脚1放(0,0)引脚2放(1.05,0)画丝印Add → Line → 层选Package Geometry/Silkscreen_Top → 画一个矩形框比元件本体大0.1mm放置位号Layout → Labels → RefDes → 层选Silkscreen_Top → 放在元件上方设置Place BoundAdd → Rectangle → 层选Package Geometry/Place_Bound_Top → 画一个比元件大0.2mm的矩形保存File → Save As → 保存为C0805.dra生成PSM文件File → Create Symbol → 生成C0805.psm文件这个才是PCB设计时实际调用的文件整个流程走下来熟练的话5分钟能搞定一个封装。但第一次做的时候可能会卡在层设置或者引脚编号上多试几次就顺了。5. 封装设计中的常见问题与避坑指南5.1 焊盘尺寸偏差导致的焊接不良焊盘尺寸偏差是最常见的问题表现就是立碑Tombstone或者偏移。立碑是指元件一端焊上了另一端翘起来像墓碑一样立着。根本原因就是两端焊盘的锡膏量或热容量不一致。造成焊盘偏差的原因有几个一是库文件本身尺寸就不对二是PCB加工时蚀刻偏差三是钢网开孔不对。我的排查顺序是先查库文件再查钢网最后查PCB加工。如果库文件没问题钢网也没问题那就要考虑热平衡设计。比如一个0603电阻一端连着大铜皮另一端只连一根细线回流焊的时候大铜皮散热快两端温度不一致就容易立碑。解决办法是在大铜皮那端加隔热焊盘Thermal Relief或者调整两端焊盘的连接方式。注意立碑问题在0603和0402封装上特别常见0805以上就好很多。如果你做的是高密度板建议在DFM检查阶段就让工厂帮忙看一下焊盘设计。5.2 丝印压焊盘引发的DFM问题丝印压焊盘是新手最容易犯的错误。丝印是印在阻焊层上面的如果丝印压到了焊盘焊接的时候锡膏会跟丝印油墨混在一起导致虚焊或者焊点发黑。AD里有个DRC检查叫“Silkscreen Over Component Pads”可以自动检测这个问题。Allegro里也有类似的检查在Manufacturing → Silkscreen里。但工具检查只能发现明显的压焊盘有些边缘重叠可能检测不出来还是要靠目视检查。我的做法是丝印轮廓比元件本体大0.1mm但比焊盘内边缘小0.05mm。这样既能看清元件轮廓又不会压到焊盘。对于0603这种小封装丝印线宽用0.1mm就够了太粗了反而占地方。5.3 Allegro中cell read-only错误的处理方法用Allegro的时候经常会遇到“cell read-only”的错误意思是封装被锁定了不能修改。这个问题的原因通常是库文件被其他项目引用或者文件权限设置不对。解决方法分几步首先检查文件属性确保不是只读然后在Allegro里用Tools → Padstack → Modify Padstack看看能不能修改如果还不行就把封装另存为新名字改完再替换。还有一种情况是库路径设置问题。Allegro的库路径在Setup → User Preferences → Paths → Library里设置如果路径指向了一个只读的网络驱动器也会报这个错。把库文件复制到本地硬盘再改就行。我个人的习惯是所有库文件都放在本地工作目录用Git做版本管理。这样既不会出现权限问题又能追溯修改历史。团队协作的时候每个人从Git拉取最新库文件改完提交冲突了手动合并。5.4 常见问题速查表问题现象可能原因排查方法解决方案元件立碑焊盘尺寸不对称/热平衡差检查库文件焊盘尺寸调整焊盘或加隔热焊盘焊点连锡阻焊开窗过大/间距太小检查阻焊层设置缩小阻焊开窗元件偏移锡膏量过多/钢网开孔过大检查助焊层设置缩小钢网开孔丝印模糊丝印线宽太细/压焊盘目视检查丝印层调整线宽和位置Allegro报read-only文件权限/库路径问题检查文件属性和路径复制到本地或改权限3D模型干涉模型尺寸不对/放置位置偏在3D视图里检查调整模型或位置6. 封装库的维护与跨工具迁移6.1 AD与Allegro封装库的互相转换实际工作中经常遇到AD和Allegro之间互相转换的需求。比如公司原来用AD现在要换Allegro或者客户给的库是Allegro格式但你自己用AD。AD转AllegroAD可以导出Allegro格式的PCB文件但封装库不能直接转。我的做法是在AD里把封装导出成DXF或者STEP格式然后在Allegro里导入重新创建Padstack和Symbol。这个过程比较繁琐但能保证精度。Allegro转ADAllegro可以导出DXFAD导入DXF后重新创建封装。或者用第三方工具比如Ultra Librarian、SamacSys这些工具支持多种EDA格式的互相转换。但转换后的封装一定要仔细检查特别是焊盘尺寸和层设置很容易出错。提示跨工具迁移封装库的时候建议先做几个样品封装打样验证后再批量转换。我见过有人批量转换了几百个封装结果打样回来发现焊盘全部偏了0.1mm整批板子报废。6.2 版本管理与团队协作规范封装库的版本管理是个容易被忽视但非常重要的问题。我的经验是库文件必须纳入版本控制系统不管是Git、SVN还是公司内部的PLM系统。命名规范也很重要。我一般用“封装类型_尺寸_版本号”的格式比如R0603_V1.2、C0805_V2.0。每次修改都在Description里写清楚改了什么谁改的为什么改。团队协作的时候建议指定一个库管理员负责审核所有人的库修改请求。库管理员不一定是技术最强的但一定要最细心的。我见过太多因为库文件被误改导致整批板子出问题的案例。6.3 封装库的自动化检查脚本Allegro支持Skill脚本可以写脚本自动检查封装库的规范性。比如检查焊盘尺寸是否在合理范围内、丝印是否压焊盘、阻焊开窗是否过大等。一个简单的Skill脚本示例; 检查焊盘尺寸是否在合理范围内 axlCmdRegister(check_pad_size check_pad_size) defun(check_pad_size () let((padList pad) padList axlDBGetDesign()-pads foreach(pad padList when(pad-width 0.5 || pad-width 2.0 axlMsgPut(Warning: Pad %s width out of range: %f pad-name pad-width) ) ) ) )AD这边可以用脚本Script或者OutJob做批量检查但功能没有Allegro的Skill那么强大。如果团队规模大建议上DFM检查工具比如Valor、CAM350能在出Gerber之前发现大部分封装问题。我个人的习惯是每次新做一批封装先跑一遍自动化检查再人工抽查几个关键封装。自动化检查能发现80%的问题剩下20%靠经验。7. 从封装设计到实际生产的衔接7.1 出Gerber前必须检查的封装相关项出Gerber是PCB设计的最后一步也是最容易出问题的一步。封装相关的检查项包括焊盘尺寸是否与规格书一致阻焊开窗是否合适丝印是否压焊盘助焊层是否与焊盘对齐3D模型是否与实际元件匹配元件间距是否满足组装要求我一般会做一个Checklist每项打勾确认。特别是第一次用的封装一定要逐个检查。我见过有人出Gerber前没检查结果打样回来发现某个封装的焊盘间距错了0.5mm整批板子报废。7.2 钢网开孔与封装设计的匹配钢网开孔直接决定了锡膏量而锡膏量又直接影响焊接质量。对于0603、0805、1206这些封装钢网开孔一般遵循以下原则开孔面积 焊盘面积 × 80%~90%开孔形状与焊盘一致但可以做圆角处理对于大焊盘如1206可以做网格分割避免锡膏过多钢网厚度也很关键。一般用0.12mm或0.15mm的钢网0603用0.12mm0805和1206可以用0.15mm。如果板子上有细间距器件如QFN、BGA钢网厚度要相应减薄。注意钢网开孔是PCB设计和SMT生产的交界点建议在设计阶段就跟工厂沟通好钢网参数。有些工厂会提供钢网开孔建议直接采用能省很多事。7.3 打样验证与批量生产的差异打样和批量生产在封装设计上的要求不一样。打样的时候可能手工焊接对焊盘尺寸的容忍度大一些批量生产用贴片机对焊盘精度要求高得多。打样阶段可以接受手工补焊所以焊盘稍微大一点小一点问题不大。但批量生产的时候焊盘尺寸偏差0.05mm就可能导致贴片偏移或者立碑。所以打样验证通过的封装在批量生产前还要再确认一遍。我的做法是打样阶段用标准焊盘尺寸批量生产前根据工厂的工艺能力做微调。比如工厂的贴片精度是±0.05mm那焊盘间距就要留出相应的余量。8. 个人实操心得与建议做了这么多年硬件设计封装库这件事给我的最大教训就是别偷懒别将就。我见过太多人为了赶进度随便找个库就用结果后面调试的时候发现各种问题返工的时间比做库的时间多十倍。我的建议是花一周时间把常用的封装库认认真真做一遍。0603、0805、1206的电阻电容SOT-23的三极管SOD-123的二极管QFN和QFP的IC这些常用的封装都做好以后做项目直接调用效率高得多。另外库文件一定要备份。我习惯用Git管理库文件每次修改都提交出问题能回滚。本地再存一份云端再存一份三重保险。别问我为什么这么谨慎丢过库的人都知道那种痛。最后分享一个小技巧做封装的时候把元件的规格书PDF一起存到库文件旁边。下次用的时候直接打开规格书核对参数不用再去网上找。这个习惯帮我省了很多时间也避免了很多因为规格书版本不对导致的错误。
返回列表