一、协同设计概述:什么是封装协同设计、为什么需要协同设计、协同设计在时序收敛中的角色
1.1 什么是封装协同设计
封装协同设计,说白了就是芯片设计和封装设计不再各干各的。
传统流程里,前端把网表丢给后端,后端做完物理设计,再扔给封装厂。封装厂拿到数据,发现IO布局跟封装基板对不上,或者电源供电根本不够。这时候再回头改芯片,周期就拉长了。
我个人习惯把协同设计叫做“芯片-封装一体化设计”。它要求芯片团队和封装团队在项目早期就坐在一起,共享数据、对齐约束、迭代优化。你想想看,芯片的IO PAD位置、电源地分布、时钟走线,这些都会直接影响封装的布线难度和信号质量。反过来,封装的基板层数、Bump排列、RDL走线,也会限制芯片的面积和性能。
我遇到过最典型的例子:有个项目芯片面积已经定了,封装团队拿到后发现Bump pitch太小,基板根本扇出不了。最后只能加层数,成本直接翻倍。如果早期就做协同设计,这种问题完全可以避免。
1.2 为什么需要协同设计
这个问题我问过很多刚入行的工程师。他们的第一反应是:“以前不协同不也做出来了吗?”
嗯,这话放在10年前可能没错。但现在工艺到了7nm、5nm,芯片规模动辄几十亿晶体管,频率跑到3GHz以上。你再不协同,时序收敛就是噩梦。
我总结了几点核心原因:
- 互连延迟占比越来越高:先进工艺下,片上互连延迟已经占到总延迟的60%-70%。封装走线、RDL、TSV这些片外互连,同样贡献不小的延迟。如果不协同,你根本不知道封装会加多少延迟。
- 电源完整性互相影响:芯片的IR drop和封装的PDN阻抗是耦合的。封装供电不足,芯片内部电压波动,时序直接崩掉。我曾经有个项目,芯片仿真时序全过,封装一加上去,setup violation多了200多条。查到最后就是封装PDN电感太大。
- 信号完整性不可忽视:高速信号穿过封装,串扰、反射、损耗都会影响信号质量。信号质量差了,接收端的setup/hold margin就变小。你想想看,芯片内部STA跑得再好,封装一接上就废了。
- IO规划影响芯片面积:IO PAD的位置、间距、电源地比例,这些都要跟封装基板的Bump map对齐。否则芯片做出来,封装扇出不了,只能改芯片或者加封装层数。
1.3 协同设计在时序收敛中的角色
时序收敛,说白了就是让芯片所有路径的延迟都满足约束。但这里的“延迟”不只是芯片内部的cell delay和wire delay,还包括封装带来的额外延迟。
我习惯把时序路径分成三类:
| 路径类型 | 包含的延迟 | 协同设计的影响 |
|---|---|---|
| 片内路径 | cell delay + wire delay | 封装影响较小,但电源完整性会间接影响cell delay |
| 片内到片外路径 | cell delay + wire delay + IO delay + 封装走线延迟 | 封装走线延迟、IO模型精度直接影响时序 |
| 片外到片内路径 | 封装走线延迟 + IO delay + cell delay + wire delay | 封装信号完整性影响接收端setup/hold margin |
你看,后两类路径都跟封装直接相关。如果不做协同设计,你用的IO delay模型可能是理想值,封装走线延迟可能根本没考虑。这样跑出来的STA,跟实际芯片差了十万八千里。
我记得有个高速接口项目,DDR5的速率跑到了6400Mbps。芯片内部STA全绿,但系统级测试就是报错。后来我们用协同设计的方法,把封装基板的S参数模型提取出来,跟芯片的IO模型一起做联合仿真。结果发现封装走线的stub太长,导致信号反射严重,接收端的setup margin几乎为0。调整了封装走线后,问题就解决了。
1.4 协同设计的核心流程
下面这张图是我自己总结的协同设计流程,你可以看看整体框架:
这个流程看起来简单,但实际执行起来有很多细节。比如联合STA,你需要把封装的S参数转换成STA工具能识别的延迟模型。我一般用Synopsys的PrimeTime配合IC Compiler,把封装寄生参数反标到IO路径上。
这里给个简单的脚本示例,展示如何把封装延迟反标到STA中:
# 封装延迟反标示例(PrimeTime脚本)
# 假设封装寄生参数已提取为SPEF文件
set_annotated_parasitic -file package_parasitic.spef -keep_capacitive
# 设置IO路径的封装延迟
set_annotated_delay -from [get_ports DATA_OUT] -to [get_pins U_IO/OUT] \
-min 0.15 -max 0.25
# 检查反标结果
report_annotated_delay -from [get_ports DATA_OUT]
嗯,这里要注意:封装延迟的反标精度直接影响STA结果。我建议至少用S参数提取的RLC模型,不要用理想值。
1.5 小结
封装协同设计不是什么高深的理论,它就是一种务实的方法论。核心就三句话:
- 芯片和封装要一起设计,不要各干各的
- 时序收敛必须考虑封装带来的额外延迟和信号质量问题
- 早期介入、联合仿真、迭代优化,是加速时序收敛的关键
我在后续的章节里,会详细讲怎么建立芯片-封装联合模型、怎么做联合STA、怎么优化封装走线来改善时序。这些都是我这些年踩坑踩出来的经验,希望能帮你少走弯路。
可可精品资料库