第二章:芯片-封装-系统协同流程
各位工程师朋友,今天我们来聊聊协同流程。说实话,我刚入行那会儿,芯片设计、封装设计、系统设计这三拨人基本是各干各的。芯片设计团队把GDSII扔出去,封装团队拿到手一看——"这焊盘排列根本没法打线啊!"然后就是漫长的来回扯皮。
为什么会这样?因为传统流程里,每个环节都是串行的。你想想看,芯片设计阶段完全不考虑封装寄生效应,等到封装做好了才发现信号完整性有问题,这时候再回头改芯片,流片成本谁来担?
2.1 传统设计流程的痛点
我总结了一下,传统流程有三大痛点,每个都让人头疼:
- 信息孤岛:芯片、封装、PCB各用各的工具,各存各的数据。芯片设计用的.lib、.lef,封装设计用的.emn、.emp,系统设计用的.brd,这些格式之间基本不互通。
- 时序收敛靠运气:芯片内部时序分析只考虑片上变异(OCV),完全不考虑封装走线的寄生RLC。结果就是芯片仿真通过,装到系统里却跑不到目标频率。
- 迭代周期长:一次完整的芯片-封装-系统联合仿真,数据转换就要花掉两周。改一次设计,整个流程重来一遍,三个月就过去了。
核心问题:传统流程中,时序收敛是在芯片设计阶段"闭门造车"完成的。封装和系统的寄生效应,直到芯片回来、封装做完、板子贴好之后才暴露出来。这时候再想改芯片?门儿都没有。
我记得有个项目,芯片内部STA报告显示setup slack还有200ps,挺充裕的。结果封装做完,系统级仿真一跑,slack变成了负的50ps。查了半天,原来是封装基板上一段长走线的寄生电容把信号延迟拉大了。这种问题在传统流程里根本发现不了。
2.2 协同设计流程的引入
那怎么解决?说白了,就是把"串行"改成"并行"。芯片设计还没定型的时候,封装团队就要介入,提前评估封装方案对芯片时序的影响。系统团队也要提前给出PCB的走线约束。
我习惯把协同设计流程分成三个层次:
- 数据协同:建立统一的数据交换格式。芯片设计输出抽象的封装需求(焊盘位置、电源域分布、关键信号列表),封装设计输出寄生参数模型(RLCK),系统设计输出PCB走线约束。
- 工具协同:芯片、封装、系统使用同一套时序分析引擎。比如都用PrimeTime做STA,但封装和系统的寄生参数要反标到网表里。
- 团队协同:建立跨部门的"联合设计评审"机制。每周一次例会,芯片、封装、系统三方坐在一起,对着时序报告逐条过。
我的经验:数据协同是最容易实现的,买个EDA工具就行。但团队协同最难,因为涉及到部门墙和KPI考核。我建议先从"联合设计评审"做起,哪怕每周只花一小时,效果也比各干各的好十倍。
下面这张图展示了协同设计流程的核心逻辑:
2.3 关键里程碑定义
协同流程不能光喊口号,得有具体的检查点。我一般把项目分成四个里程碑:
| 里程碑 | 时间节点 | 交付物与检查项 |
|---|---|---|
| M0 需求对齐 |
项目启动后第2周 |
|
| M1 预评估 |
芯片RTL freeze前 |
|
| M2 联合仿真 |
芯片GDSII tapeout前 |
|
| M3 签核确认 |
芯片tapeout后、封装投板前 |
|
避坑指南:我曾经在一个项目中,M2阶段芯片STA报告显示setup slack还有80ps,封装团队说"没问题"。结果M3签核时,系统团队发现PCB走线比预期长了30%,额外增加了150ps的延迟。最后只能紧急改PCB layout,多花了两周时间。教训是什么?M2阶段一定要把系统PCB的走线约束写死,不能留"弹性空间"。
嗯,这里要注意一点:里程碑不是走形式。我见过很多团队,M0阶段随便开个会,大家口头说"没问题"就过了。结果到M2发现问题,回头改M0的决策,成本翻倍。我的建议是每个里程碑都要有正式的文档签核,哪怕只是邮件确认,也要白纸黑字写清楚。
另外,关键路径的时序预算分配是M0阶段最重要的事。我习惯的做法是:芯片内部占60%的时序预算,封装走线占20%,系统PCB占20%。当然这个比例要看具体工艺和封装类型。比如用2.5D封装,硅中介层的走线延迟很小,芯片可以多占一些预算。
好了,关于协同流程的引入和里程碑定义,我就讲这些。记住一句话:协同不是让三方做更多的事,而是让三方在正确的时间做正确的事。
可可精品资料库