上一章把 Cadence SiP Layout 的定位和准备工作讲完了,这个工具到底是做什么的、和 Allegro PCB Design 有什么区别、工艺库文件要准备到什么程度。说白了,第一章解决的是"能不能开工"的问题,这一章直接回答"怎么画出来"。
我见过不少人卡在同一个地方:库文件照着教程建好了,Allegro 也会用,但一进入 SiP Layout 就不知道鼠标往哪儿点了。这其实不怪你,SiP Layout 的设计对象不是一块普通 PCB,而是一个封装体,里面同时存在裸芯片(die)、无源元件、基板走线和键合金线,工作逻辑和普通 PCB Layout 有本质差异。你没法拿着画 PCB 的那套习惯硬套,必须重新适应。
这篇文章就按真实项目的推进顺序走一遍:先整理库,再建工程和定基板尺寸,然后放 die、连 wire bond 和走线,最后跑 DRC、出制造数据。整个流程走完,你手上就会有一份能交到封装厂的全套设计文件。如果你已经建好库、装好工具,但卡在下一步不知道从哪下手,这篇就是给你准备的。
1. 建工程前的库整理:symbol、padstack 和网表缺一不可
1.1 为什么 SIP 设计的时间一半花在库上
很多从 PCB 转过来的人,第一次打开 SiP Layout 就被库管理搞懵了。PCB 的封装库相对固定,0805 就是 0805,QFP-48 就是 QFP-48,库里调出来就能用。SIP 不一样,里面放的"元件"主要是裸芯片,每颗 die 的 pad 数量、pad 位置、外形尺寸完全不一样,几乎不存在"通用封装"这回事,每一颗 die 的库都得单独准备。
在 Cadence SiP 环境里,一个可以被放到画布上的器件,背后要准备三类库文件:Symbol 负责画布上的图形表达,Padstack 负责焊盘在每一层金属上的物理结构,Device 负责器件逻辑定义,尤其决定网表导入时能不能匹配上。这三样东西必须彼此对应:Symbol 里的引脚编号要和 Device 里列出来的一致,Padstack 文件名又要在 Symbol 引脚属性里被正确引用。任何一环对不上,后面就会出现"导入网表失败""找不到引脚""焊盘变形"这些怪问题。
我自己的习惯是:拿到新库之后,先在库编辑器里把 Symbol 逐个打开,检查每一个引脚的编号和方向;再到 Padstack Editor 里从 TOP 到 BOTTOM 逐层过一遍。别嫌麻烦,SIP 的库检查比 PCB 严格得多,因为基板制造是微米级的,一个 padstack 的内层属性设计错了,Gerber 发出去就是整板报废。
1.2 三个必须检查的库文件:附检查清单
为了不空谈,我列一张自己常用的检查清单,新库进来时照着勾一遍,基本能拦住 90% 的低级问题:
| 文件 | 扩展名 | 检查重点 | 常见错误 |
|---|---|---|---|
| Symbol | .dra / .psm | 引脚编号、pin direction、Assembly 层外形、Place Bound | 引脚编号重复或缺失、方向全写成 passive |
| Padstack | .pad | TOP 焊盘尺寸、SolderMask 开窗、内层 Thermal/Anti-pad、钻孔类型 | 内层只有 Default 形状、阻焊开窗和焊盘一样大 |
| Device | .txt | 引脚数量、引脚名、类型(IN/OUT/IO/POWER) | 引脚数和 Symbol 不一致、类型全写成 passive |
补充一句,很多 Foundry 给的 die 库并不是 Cadence 原生格式,而是 DXF 或 GDS 转过来的。转完以后概率最高的问题是 pad 坐标有偏移、尺寸单位不统一(mil 和 μm 混着用)。批量转换之后,一定要用"测量相邻两个 pad 间距"的方式抽查,别只看整体图形对不对,这种东西肉眼很容易忽略。
1.3 把现有 PCB 封装库改造成 SiP 库的两个思路
经常有人问:手上有现成的 Allegro 封装库,能直接拿来用在 SiP 里吗?我的答案要分开说。如果是把某个普通 SMT 元件(比如 0402 电容)拿进 SiP 设计,直接导入库文件、确认 padstack 路径没问题就能用。
但如果想复用的是一颗"die 模型",那就必须改造了。做法是:打开 Symbol 编辑器,把器件类型从 IC 改成 DIE,把引脚改成 die pad 需要的形态,再补上 DIE 类下的外形和装配信息,比如封装厚度、装配高度,最后重新生成 Device 文件,确认引脚类型和后续网表匹配。这一步不能跳过,否则后面 Wire Bond 编辑器里会找不到 die 的引脚,或者 bond finger 和 die pad 完全对不齐。我到现在都记得第一次做 SiP 时,为了赶进度直接用了 PCB 的 die symbol,结果 Wire Bond 编辑器弹出 "pin not found",查了一下午才发现是引脚类型问题。
2. 创建 SIP 工程:基板尺寸、层叠结构和活动类的概念
2.1 基板尺寸先估算再画:一个粗算公式
工程新建之后,第一个要回答的问题就是基板做多大。基板尺寸不是拍脑袋定的,它受到三个方向约束:die 和无源元件的总面积、键合或倒装的工艺边框、外部引脚(BGA 球、QFN 引脚)占用的区域。
对 wire bond 型 SIP,可以先套一个粗算公式:封装体边长 ≥ die 边长 + 2 ×(键合环带宽度 + 引脚区宽度)。举个例子,一颗 5mm×5mm 的数字 die,键合环带(bond finger 加金丝拉出空间)单边大约留 0.8~1mm,BGA 引脚区单边再留 1~1.5mm,那么粗算出来就是:5 + 2 × (1 + 1.2) ≈ 9.4mm,圆整到 10mm。这只是第一版估计,等布线走完发现信号出走困难或者铺铜被割裂,再往上调。
定义基板外形时,一般画成矩形或带倒角的矩形,BGA 封装还要求在 Outline 层标出 Mark 点和防呆方向标记。别小看这些细节,封装厂贴装、测试、焊接到 PCB 都要靠这些标记来定位。
2.2 层叠结构怎么选:1+2+1、2+2+2 的真实含义
SiP 基板层叠写法一般写"积层层数 + 芯板层数 + 积层层数",比如 1+2+1、2+2+2。1+2+1 表示上下各 1 层积层,中间是 2 层芯板,总共 4 层金属;2+2+2 就是 6 层。这个写法和 PCB 的"几层板"不是一个逻辑,它更强调哪几层是 build-up 出来的、哪几层是芯板。
怎么选?低复杂度、I/O 不多、一片 die 加几个电容的应用,1+2+1 就够用了;如果需要完整的参考平面、多个信号层、die 与 die 之间互连复杂,我一般建议 2+2+2。层数越多,成本不是线性上升而是指数级上涨,所以没有需求就别硬上高层数。
在新建工程时,系统会让你逐层定义金属层名称、介质厚度、材料。我建议把金属层名称直接定义成和后续 Gerber 输出一致的命名,比如 TOP、INNER1、INNER2、BOTTOM,省得后面 Artwork 输出时映射困难。介质厚度和介电常数在后面做 PI/SI 仿真时直接影响提取结果,先填个靠谱的数据总比后补强。
2.3 活动类和子类:Cadence 图层逻辑一讲就通
热词搜索里反复出现"活动类和子类",很多刚上手的人被这个界面概念绊住脚。其实可以理解成 Cadence 里的图层管理是两层结构:Class 是大分类,Subclass 是子分类,两者组合起来才确定一个具体图层。
在 SiP 设计里,最常用的组合是:
- ETCH / TOP、ETCH / BOTTOM:顶层和底层走线铜皮。
- ETCH / INNER1、ETCH / INNER2:内层走线铜皮。
- PACKAGE GEOMETRY / DIE:die 的外形和 pad 位置图形。
- PACKAGE GEOMETRY / PLACE_BOUND:元件的放置边界。
- BOARD GEOMETRY / OUTLINE:基板外形线。
- VIA CLASS / 默认:过孔定义和归属层。
Options 面板里的 Act Class 和 Act Subclass 决定了你当前所有绘制操作落在哪个图层上。激活的是 BOARD GEOMETRY / OUTLINE,画线就是在画基板框;激活的是 ETCH / TOP,画线就是在画顶层走线。很多人画线工具打开了,画完却看不到,或者一移动元件就发现"线长在元件上了",大概率就是活动和类子类切错了。
我建工程时会顺手把各层显示配色表设好:etch 层用亮色,silkscreen 用暗色,Assembly 用浅色。这样切来切去不会看混,视图问题解决掉,效率能提升不少。
3. 放置 die:位置规划与位号管理
3.1 裸片调入与位号分配:U1、U2 别乱排
基板框和层叠定义好以后,下一步就是把 die 放上去。操作和 Allegro 放元件类似:从 Component 列表里选中从库调入的 die symbol,放到画布上,然后移动、旋转、对齐。
这里有一个容易忽略的点:位号(RefDes)管理。die 一般命名为 U1、U2,后面的电阻电容用 R、C 前缀,和 PCB 设计习惯保持一致。如果网表是 EDA 工具生成的,位号已经存在;如果是手工布板,需要自己安排位号,批量重排时最好按行按列的顺序,这样生成的 BOM、装配图、测试文档看起来都清楚。
还有个小细节:有些 die 需要在 Assembly 层上标出第一引脚方位,因为 die 的 pad 往往是四周排列,没有明显极性。如果你只是把 die 转了 90 度却忘了更新 Assembly 标识,贴片机装的时候极有可能装反。
3.2 摆 die 的原则:信号流、热源、线长三角
die 怎么摆,直接决定后面 wire bond 好不好打、走线顺不顺、散热够不够、甚至信号质量好不好。我把这些年用下来的经验归纳成三条:
第一,信号流优先。两颗互连量大的 die 应该靠近放置,让连接它们的走线和 bond wire 尽量短。比如基带 die 和存储 die 之间往往有几十根并行线,如果摆在基板的两端,中间走线要绕满整个基板,层数、过孔、串扰全都上来了,布局就彻底被动了。
第二,热源别扎堆。功耗高的 die 要错开,不要在基板中央堆成一个小热岛。基板背面一般会铺热焊盘和散热孔阵列,布局阶段就要把这些区域留出来,别让 die 把散热铜皮位置占掉了。
第三,线长即噪声。高速信号、时钟、敏感模拟信号相关的 die 要尽量靠近外部引脚区,拉低引线电感和回流路径长度。搜索词里提到的"版图电流镜匹配",虽然更多是模拟 IC 版图概念,但封装级也有同样的"对称思维":如果两个 die 之间需要做差分或参数匹配,它们在基板上的位置、朝向、走线长度要尽量对称,而不是随手一放完事。
3.3 被动元件的放置:去耦电容贴电源脚是铁律
SIP 基板上除了 die,通常还会放去耦电容、上拉电阻这些无源元件。位置摆放有明确的优先级,尤其是去耦电容。它的作用是给 die 的电源引脚提供低阻抗交流回路,所以离 die 的电源脚越近越好,我一般控制在 0.5mm 以内。
这个道理和 PCB 上每个电源脚旁边放一个 0.1uF 电容完全一样,只是 SIP 里面尺寸更小、距离更敏感。回路越长,寄生电感越大,去耦效果就越差,高速下甚至起反作用。
上拉电阻、串阻这类器件则可以放在信号路径的适当位置,没必要贴着 die。Cadence 里有 Room 约束和自动摆放功能,但我更建议手动先把关键去耦电容摆完,再让自动摆放处理非关键器件。没有任何约束的自动摆,基本不考虑信号流和热分布,后期布线会让你非常痛苦。
4. 金丝键合与布线:SIP 版图的核心环节
4.1 wire bond 还是 flip chip:先想清楚再动手
die 放完之后,最大的岔路口来了:用 wire bond 还是 flip chip。这两条路在 Cadence SiP 里的操作路径完全不同,工艺、成本、性能也更不一样,必须在布线之前就定下来。
Wire bond 用金丝或铜丝把 die 的 pad 连到基板上的 bond finger,再通过基板走线连到外部引脚。优点是成本低、适用面广,缺点是 I/O 数量受限于 die 四周的 pad 间距,而且金丝本身有寄生电感,高频场景下瓶颈明显。
Flip chip 是把 die 翻转,通过 bump(凸点)直接焊到基板焊盘上,再从焊盘用 RDL 扇出。优点是 I/O 密度高、寄生参数小,适合高速高密度互连,缺点是 die 需要额外的 bump 工艺处理,成本高出一截。
工具操作上,wire bond 需要先安排 bond finger 的位置,再逐根或批量生成金丝,注意线弧和间距;flip chip 则需要先生成 bump 阵列,再走布线扇出到引脚。如果你做的是射频、光模块这类对寄生敏感的封装,我的建议是首选 flip chip,后面在信号完整性上会省心很多。
4.2 bond finger 设计与 bond wire 编辑实操
如果你是第一次做 wire bond 型 SIP,bond finger 设计是最容易出问题的地方。bond finger 是基板侧的焊盘,金丝一头焊在 die pad,一头焊在这里。工艺上,bond finger 的宽度一般在 50~70μm,长度 150~250μm,相邻 finger 间距不小于 50μm。实际取值务必和封装厂的工艺能力表核对,不同厂家、不同键合机台的能力差异挺大。
在 Cadence 里接金丝,打开 Wire Bond 编辑器(不同版本菜单位置有差异,一般在 Manufacture 或 Wire Bond 菜单下),流程大致是:
- 在 die 的 pad 和基板 bond finger 之间建立连接关系。
- 选择键合类型和线径,比如 25μm 金丝、球形焊(ball bond)。
- 设置线弧参数:线弧高度、水平长度、折线形状。
- 批量生成后,切到 3D 视图检查金丝之间、金丝与模封区边界之间的间距。
线弧高度非常重要。模封总厚度如果是 0.8mm,金丝最高点至少要低于模封顶部 0.1~0.15mm,否则塑封时金丝会被压塌或者外露。具体数值让封装厂确认,不同模具、不同材料差很多,这个不是软件能替你决定的。
4.3 布线规则与铜皮优先级:把 Constraints 用起来
走线和铺铜规则决定整个设计能不能落地。SIP 基板的线宽线距通常在微米级,比如默认线宽 50μm(约 2mil)、异电位最小间距 40~50μm,这些值要提前在 Constraints 里设好。别等画完线才想起来规则没设,到那时候 DRC 一排山倒海地报错,你会崩溃的。
关于铺铜,搜索词里那条"cadence 铜皮 优先级"是很多人被坑过的地方。同一层上的多个 Shape 如果有重叠区域,Cadence 默认后画的会盖住先画的,这时候就要调整 Shape 的优先级,让电源铜皮和地铜皮的挖空关系符合设计意图。
我个人的做法:先铺大面积地铜皮,再铺电源铜皮,并把电源铜皮优先级设高一级,这样它会自动挖空下方重叠的地铜区域。如果发现铜皮边界变得很奇怪,"铜皮被吃掉了",先检查优先级是不是反了,再检查两个 Shape 是否真的有重合。这类问题 DRC 不一定能直接报出来,最后只能靠眼睛扫,很费时间,不如一开始就规划好。
还有一点,封装厂会提供最小铜皮宽度、最小间距这些工艺能力参数,一定要在画铜皮之前拿到。否则你画了一个自认为很漂亮的 20μm 宽铜皮,基板厂做不出来,来来回回沟通又浪费时间。
5. DRC验证与高亮点选:常见报错和解决办法
5.1 SIP 版图的 DRC 和 PCB 的 DRC 不是一回事
SiP Layout 的 DRC 引擎和 Allegro 同源,所以用过 PCB 的人会觉得界面很熟悉。但 SiP 的规则范围宽得多:除了常规间距、线宽,还有 die 相关规则、bond wire 间距规则、bump 间距规则。这些非传统规则在默认状态下有可能没开启,你不主动开,它就不给你报,这是很危险的。
跑 DRC 之前,先在 Constraints 里把需要检查的项目全部打开。我建议分两阶段跑:布局完成时先跑 Placement DRC,重点查元件干涉、die 是否出界、离基板边太近;布线完成后再跑全量 DRC,重点查间距、连接性、同一网络的连通性。分步跑的好处是错误数量可控、定位容易,不会一次性报几百个错,看都看不过来。
5.2 "电大尺寸"警告:不是软件抽风,是路径太长
搜索热词里有一条英文报错,大意是 port 2 的两个 layout pin 之间的距离在电气上偏大。这种警告一般不是 Layout 阶段 DRC 报的,更多是后续仿真提取时冒出来的。它的含义是:两个引脚之间的走线长度相对于工作频率的波长来说太长了,不能再按集总参数处理,这条路径已经具备传输线特性。
见到这个警告,不要觉得是软件在无理取闹。正确的思路是:要么重新规划引脚位置,缩短关键路径;要么给这段路径做阻抗控制,保证回流参考完整。在做高速 SIP 时,类似"路径电大"的判断非常关键,它提醒你信号完整性不是把线画通就结束的。
5.3 高亮与选中网络的技巧:别在几十个网络里迷路
SiP 设计里网络多、die 多,想快速确认某个电源网络或时钟网络到底经过哪些地方,高亮功能是最好的工具。Cadence 里快速选中同一个网络的技巧是:先用高亮命令按网络名高亮,然后在 Find 面板勾选 Pin、Via、Shape 等类型,再点击网络上的任意一个元素,软件就会选中该网络的全部连接。
选中之后,你可以整体查看长度、统一改线宽、检查连通性,也可以单独导出这个网络的长度报告。我自己的习惯是:布局检查用临时高亮,看完就清理干净;对时钟、高速差分、关键电源网络,单独建立网络分组,持续高亮。这样打开任何一个视图,重点网络一眼就能识别,不会在几十个网络里迷失。
6. 输出制造数据:光绘、钻孔与下游协同
6.1 Gerber 和 ODB++:和封装厂确认格式再导出
设计完成不代表结束,数据能不能被封装厂顺利接收才是最后的标准。SiP 基板制造数据我强烈建议用 ODB++ 格式,它把层叠、钻孔、元件、网络信息打包在一个文件夹里,不容易丢层。Gerber(RS-274X)也常用,但对层的配置要求更严格,漏一个 Mask 层就是一批报废板。
在 Artwork 里配置 Film 时,每一层都要单独设置:ETCH/TOP、MASK/TOP、SILKSCREEN/TOP、DRILL 等。不要自己从头配,最好直接找封装厂要一份他们的 Artwork 模板,导入后确认一下层名映射就行。我自己配错过一次 Mask 层,导致阻焊开窗全部反了,后面上机验证才抓出来,教训很深刻。
钻孔文件输出时,特别注意盲埋孔和激光孔的层对关系。SiP 基板常用激光盲孔,层对范围写错的话,基板厂制板时根本做不出你要的孔结构。
6.2 从 SIP 封装到 PCB 工具:让封装走出孤岛
SIP 封装做出来之后,从来不是孤立的,它最终要焊接到一块 PCB 上,装进一个完整的系统里。所以从 SiP 设计导出封装模型给 PCB 工具使用,是很常见的需求。
在 Cadence 体系内,SiP 封装可以生成封装 symbol 给 Allegro PCB Editor 直接调用。如果下游是 Altium Designer,搜索词里有人问过"cadence 的 pcb 如何转换 AD 的 pcb 格式",通常做法是在 Cadence 里导出中间格式,再由 Altium 的导入向导转换过来,转换后重新映射层名和封装信息,大部分图形和网络信息都能保住。
最后说一个我自己的体会:SIP Layout 这个工具,真正难的不是软件操作,而是对自己画的封装有没有物理认知——金线能不能打上去、基板厂做不做得出这个线宽、模封会不会压到线弧。每次画完一版,花十分钟用 3D 视图转一圈,把剖面打开看一眼,能省掉后面无数轮和工艺厂的沟通成本。这比任何快捷键都值钱。