☰
800G CPO硬件设计实战:从SerDes链路到热仿真的关键问题
2026/10/6 18:23:32 网站建设 项目流程

1. 开局先聊清楚一件事:CPO到底解决了什么,以及800G时代的真实需求

先说个我自己的判断,这两年凡是做光模块硬件的人,几乎没人能绕开CPO这个话题。从400G到800G,单通道速率从50G逐步往100G、200G推进,传统可插拔光模块的处境越来越尴尬:面板宽度有限、散热空间有限、信号完整性损耗预算有限,再想靠QSFP-DD或者OSFP塞进更高密度的交换机,PCB走线的物理极限会先卡住你。CPO(Co-Packaged Optics,共封装光学)把光引擎直接和交换芯片放进同一个封装基板,本质上是用封装级互连替代板级长走线,把电信号从交换芯片到光引擎的传输距离从十几厘米缩短到几厘米甚至更短。这个思路在800G时代不是“要不要做”的问题,而是“谁先做得稳”的问题。

我参与过的一款800G CPO参考设计,最初是从400G方案改过来的。原以为就是把SerDes速率提高、光引擎换一下、电源多加几路,结果真正动起来才发现,电路设计层面的坑远比想象中密集。这篇文章不打算给你讲教科书式的原理,而是把我实际踩过、拆过、仿真过的几个关键问题摊开讲:SerDes链路预算怎么做才不翻车、电源树要怎么布局才能扛住光引擎的动态电流、PCB叠层和过孔残桩能把眼图吃掉多少、热仿真数据怎么和你的电源与SI设计互相制约,以及最后DFT和耦合对准为什么是量产最头疼的环节。

这篇文章适合谁看?正在做CPO或类CPO封装项目的高速硬件工程师、想把光模块方案切换到共封装架构的系统架构师,以及刚入行但对SerDes、电源完整性和热仿真怎么协同工作特别好奇的硬件新人。如果你是那种只看了几篇概念文章、觉得CPO就是把光模块焊在芯片旁边的状态,那我建议你先把我下面写的SerDes预算部分读两遍,这一块最容易被忽略,也最容易被想当然。

说句实在话,CPO设计的难点从来不在于“光”本身,而在于“电”和“热”怎么一起伺候好。光引擎的工作特性决定了它比传统可插拔模块对电源纹波更敏感、对热更敏感、对信号路径的阻抗连续性更敏感。后面所有章节的技术细节,最终都绕不开这三个字:敏感、敏感、还是敏感。

2. 电路设计的第一个坑:SerDes链路预算与重定时器(retimer)取舍

2.1 先搞懂CPO里SerDes到底在传什么速率

从400G到800G这个跨度,最核心的变化就是SerDes速率上一台阶。400G时代主流的方案是单通道50G PAM4,8个通道凑400G;到了800G,如果还是8路,单通道就要跑到100G PAM4,如果是16路,那就是单通道50G跑两倍通道数。这里有个最实在的工程问题:通道数翻倍意味着基板布线资源翻倍、电源引脚翻倍、封装尺寸和热仿真都要重来;速率翻倍则意味着链路损耗预算、串扰预算、反射预算全部要按指数级严苛的指标重新算。

我做的这个项目起初选的是8路100G PAM4方案,逻辑上很性感,因为光引擎和交换芯片之间的DIE-to-DIE接口数量最少,基板走线压力小。但真正打开链路预算表的时候才发现,8路100G对基板材料、过孔背钻、连接器(如果还有的话)的要求会苛刻到让人头皮发麻。后来改成了16路50G PAM4,虽然布线资源占用变大,但每一个通道的SI余量都明显舒服了,而且在热仿真和电源动态响应上都更好收拾。这里给个最直白的经验:不要看着速率越高越兴奋,800G设计里“够用”比“超前”值钱得多。

2.2 链路预算要算哪些东西,怎么算

链路预算是CPO电路设计里第一个必须较真的地方。我习惯用一套完整的预算表格来做,把每一段物理路径的损耗、反射、串扰、抖动都列出来,然后逐项加总,最后看眼高眼宽余量。以16路50G PAM4为例,从交换芯片的TX引脚到光引擎的RX输入,中间至少经过:

  • 交换芯片封装内走线(C4 bump到BGA ball),典型0.5~1.5dB
  • 封装基板(即CPO的有机基板或硅基板)走线,这取决于走线长度和基板材料,50G PAM4下25mm走线在MEGTRON6上约1.0~1.8dB
  • 光引擎的基板进入段,包含过孔和阻抗不连续点,约0.5dB
  • 整个链路中还有耦合电容(AC coupling cap)带来的损耗,每颗高质量0402电容约0.1~0.3dB

把这些加总,8路100G方案下整个链路预算通常要控制在12dB以内(包含各种噪声和抖动代价),而16路50G方案可以放到15~18dB,这个差距在实际调试时是完全不同的体验。100G PAM4的接收端对眼图闭合容忍度很低,你必须加CTLE和DFE来打开眼图,但这些均衡器要吃功耗,也会带来额外的码间干扰补偿极限问题。50G PAM4则留给后端均衡更大的余量,甚至在少量场景下可以依赖线性直驱(LPO,Linear-drive Pluggable Optics的CPO变体)设计,简化解码和功耗。

2.3 retimer到底放不放,放哪一段,实测经验

这是好多团队吵过架的话题。传统可插拔光模块方案里,主机板上可以加retimer来重塑信号,但在CPO共封装架构里,交换芯片到光引擎的链路那么短,加retimer反而有一种“脱裤子放屁”的嫌疑。但是,当你做800G CPO时,如果光引擎本身不带DSP,只是线性驱动方案(线性光引擎),那么从主机板到交换芯片之前的PCB走线部分仍然需要有一种手段来均衡。

这里必须区分两种链路:一种是“外部接口到交换芯片”,这段通常还是板级走线,长度可能到10~20英寸,需要强大的均衡;另一种是“交换芯片到光引擎”,这段在封装基板内,长度很短。很多人把这两段混为一谈,然后跑去问要不要retimer,其实真正需要retimer的通常只有前一段。

我给一个实际用下来比较稳的组合:外部接口部分如果系统侧还用PCB走线连接物理层PHY,那就在接口处加retimer或者把均衡功能集成到PHY里;而芯片到光引擎的封装内链路,优先使用交换芯片自带的SerDes TX均衡和光引擎RX的CTLE来cover,不建议再引入retimer,因为封装基板内的retimer需要额外供电、额外热源,还会增加延迟,对于本身就是短距的CPO来说是纯负收益。

要用一句话总结:CPO场景下retimer是“能不加就不加”,除非你确认光引擎RX端的均衡能力不够,否则它只会给你增加热密度和功耗预算的压力。

3. 电源树设计:从“够用”到“能用”的差距到底在哪

3.1 光引擎电源域的特殊性

很多做数字电路出身的硬件工程师第一次碰CPO,都会低估电源设计的难度。光引擎里面不仅有TIA(跨阻放大器)、驱动器的模拟电路,还有微控制器、温度传感器、MPD(监控光电二极管)的偏置电路。最要命的是,这些电路对电源噪声的容忍度极低。TIA的输出直接决定接收灵敏度,如果电源纹波耦合到TIA的供电端,灵敏度立刻劣化,表现在系统上就是误码率上升、接收功率预算撑不住。

以我们这款800G CPO为例,光引擎的模拟电源域要求纹波通常要控制在10mV以内(甚至更严),而数字电源域可以放宽到30~50mV。如果按传统可插拔模块的设计思路,给整个模块供一路0.8V然后靠LDO局部降噪,确实能解决一部分问题,但在共封装架构里,光引擎和交换芯片靠得很近,开关电源的开关噪声和交换芯片的数字开关噪声很容易通过共享的供电网络耦合进来。所以电源树设计的第一原则是:把所有模拟敏感电源域和数字噪声源物理隔离,包括PCB层、过孔区域、磁珠位置、甚至参考地平面的分割。

3.2 PDN阻抗目标怎么定

PDN(Power Distribution Network,供电网络)设计本质上是做阻抗控制。一个常见误区是只按最大电流算直流压降,而忽略交流阻抗。光引擎的TIA和驱动器的瞬态电流变化很快,特别是突发模式或高摆幅驱动时,瞬态电流的变化率(di/dt)很吓人。PDN的交流阻抗一旦在某个频段上出现尖峰,纹波就会顺着供电网络传到敏感模拟电路。

我的习惯是先把光引擎的瞬态电流模型拿到,然后定义PDN目标阻抗。一个粗略的方法:如果允许的纹波是10mV,瞬态电流变化是1A,那么从电源模块输出到负载点的整个供电网络阻抗,在关注频段内应该低于10mΩ(10mV / 1A = 10mΩ)。这个目标看似简单,真做起来相当难,因为你要在封装基板、焊球、PCB走线、过孔、去耦电容多个维度同时压阻抗。

实际操作中,我会用“分层去耦”的思路布局:第一层是封装基板上的高密度小容值电容(比如0.1uF、0.01uF X7R),用来压低高频阻抗;第二层是PCB上的中容值电容(比如1uF、4.7uF)放在BGA焊盘背面附近;第三层是板级大容值电容(比如100uF钽电容或聚合物电容)负责中低频瞬态响应。这三层缺一不可,少了任何一层,你去看PDN阻抗曲线都会发现某个频段凸起,对应的纹波问题会在系统测试中暴露出来。

3.3 电源时序和软启动,别在最后一刻才想起来

还有一个特别容易被忽略但极容易出问题的细节:供电时序。CPO系统里面交换芯片、光引擎、SerDes、时钟芯片各自的供电轨很多,上电时序如果不对,轻则器件进入闩锁状态,重则直接损伤光引擎内部的激光器驱动电路。激光器的偏置电路尤其敏感,如果驱动器的电源已经起来而偏置电源还没稳定,激光器可能短时间内流过非预期电流,这个在可靠性测试里是会死芯片的。

我一般控制上电时序的方法是:先用CPLD做时序控制,把所有电源轨按“先数字后模拟、先低压后高压、先核心后IO”的顺序打开。比如Core电源先上、然后SerDes的AVDD、再然后光引擎的VCSEL驱动电源、最后激光器偏置电源。每一级之间延迟至少1~2ms,避免同时切换造成的大电流冲击。

软启动也不可忽略。电源模块的软启动时间如果太短,上电瞬间的浪涌电流会造成输入电源跌落,严重时甚至拉垮同一块单板上其他电路的供电。我的习惯是把软启动时间设置在3~5ms,并通过示波器抓取每一路上电波形确认无过冲。这个工作看起来琐碎,但量产阶段出现的很多“死机”“不启动”问题,最终都能在电源时序这块找到根源。

4. 信号完整性设计:过孔残桩、耦合与谐振,都是怎么吃掉你的眼图的

4.1 封装基板走线:材料、线宽、间距的三角关系

CPO的信号完整性设计核心战场已经从PCB转到了封装基板。我们用过的基板材料有两类:ABF(Ajinomoto Build-up Film)和MEGTRON6类的高速材料。ABF在常规BGA封装里用得很多,损耗中等,价格相对友好;MEGTRON6或类似材料在高速SerDes场景下损耗更低,但加工难度和成本更高。做800G时,如果你走的是8路100G方案,基板材料基本锁死到MEGTRON6级别,ABF的损耗会很吃紧;16路50G方案则还能在ABF和MEGTRON6之间犹豫一下。

线宽和间距也在基板设计里互相拉扯。更宽的线意味着损耗更低但布线密度下降,更难在有限的基板面积里把16对差分线布出来。更宽的间距意味着串扰更小但对基板尺寸要求更高,直接推高成本。我在这款设计里最终采用了差分线宽/间距7.5mil/7.5mil(约190μm/190μm)的折中方案,配合参考地平面优化,在50G PAM4下预算内做到了单端16dB的链路预算余量。有条件的团队建议在基板设计阶段就做全链路S参数仿真,别省这个时间。

4.2 过孔残桩:一个只能靠背钻解决的“定时炸弹”

基板内走线总会有需要换层的时候,而过孔就是信号完整性最大的变数。尤其糟糕的是Stub(残桩),也就是过孔钻完之后,从信号层到目标层之间那段没有连接任何线路的多余过孔段。残桩在高频下会形成阻抗不连续,并在特定频率上产生谐振,而这个谐振频率恰恰可能落在你信号带宽附近。

50G PAM4的信号基频在25GHz左右,100G PAM4则到50GHz以上。这个频率段里,哪怕只有5~10mil的残桩,都会在S参数上看到明显的回波损耗恶化和谐振坑。解决办法有两个方向:一个是做背钻(back drilling),把不用的过孔段钻掉;另一个是从设计上就减少换层,所有高速信号尽量走同一层。

实操中我见过最多的问题,是背钻精度不够导致残桩还是留了2~3mil,实际效果大打折扣。这里给一个经验值:背钻后的残桩长度应该控制在8mil以内,如果基板厚度允许,最好做到5mil以内。在仿真阶段就要把背钻深度公差代入模型做最坏情况分析,不要用理想值去骗自己。

4.3 串扰控制:间距、隔离地过孔、以及“我踩过的耦合坑”

CPO基板上的差分线间距非常近,16对或者8对高速线并行走线,串扰控制不好就会在接收端看到明显的眼图垂直方向收窄。串扰分为近端串扰(NEXT)和远端串扰(FEXT),在高速PAM4信号里,FEXT对眼图闭合的贡献尤其明显,因为远端串扰会叠加在信号上且幅度随耦合长度增加而上升。

我之前在一个400G项目的测试中发现,两对相邻差分线之间只要间距小于3倍线宽,远端串扰就能把眼高吞掉接近15%。后来加了一排接地过孔(ground via fence)在两组差分线之间,串扰改善明显,但同时接地过孔阵列也会占据宝贵的基板面积,而且如果过孔排列不当反而会形成新的谐振腔。这里需要微调仿真参数来确定过孔间距和排列方式,一般建议接地过孔间距小于信号上行波长的1/20,对于25GHz大约0.6mm以内。

另外一个容易踩的坑是参考平面不连续。高速差分线跨过电源平面的分割槽时,回流电流会被迫绕行,产生严重的共模噪声和辐射,这在眼图上表现为随机抖动变大。我的经验是:所有高速差分信号一定要保证完整的参考地平面,不可避免要跨分割时,必须在分割处就近放置缝合电容(stitching capacitor),让回流电流有低阻抗路径。

4.4 谐振与封装模式:别让你的基板变成一个谐振腔

封装基板里有很多层,电源平面和地平面之间就构成一个天然平板电容,但同时也可能在某些频率上形成谐振模式。如果你的SerDes工作频率或者它的谐波恰好在谐振频率附近,你会在电源网络上看到明显噪声增强,这个噪声再耦合到信号线上,眼图立刻劣化。

解决手段除了前面说的分层去耦电容,还有很重要的一条:在基板设计阶段对电源/地平面布局做谐振分析。通常用场仿真工具提取整个PDN的谐振模式,然后在仿真中看到电压分布热点,在这些热点位置放置去耦电容来抑制谐振。这个工作在800G CPO里几乎是必须的,因为工作频率高,基板尺寸也大,谐振模式数量明显增多,光靠经验去猜电容位置纯粹是赌运气。

5. 热仿真数据解析:我实测的几组结果和对应的设计折中

5.1 热源模型怎么建立才靠谱

做CPO热仿真,第一件事是把热源拆清楚。整个封装体内有几大热源:交换芯片本身(几百瓦级别)、光引擎里的驱动芯片和TIA、基板上的电源转换损耗、以及激光器(VCSEL或硅光方案里的激光器)自身的热耗。每个热源的功率密度、面积、位置都不相同,必须分别建模,不能笼统地设一个“总功耗”。

我用Flotherm搭了一个简化模型,把交换芯片设成块状热源(尺寸17.5mm x 17.5mm,功耗280W),光引擎一共四个,每个里包含driver和TIA热源(合计约10W),再加上电源模块的热耗,整个封装体的总热耗约320W。这里面有个容易被忽视的点:光引擎和交换芯片之间的距离如果太近,交换芯片的热会通过基板横向传播到光引擎区域,导致光引擎温度升高,而光引擎的光电性能对温度极其敏感,VCSEL的斜率效率和阈值电流随温度变化很明显。

5.2 实测热仿真数据:几个关键场景的结果

我整理了我们项目里几个关键场景的热仿真结果,这些数据都是在环境温度55℃、风速3m/s的机箱条件下跑的:

场景交换芯片功耗(W)光引擎功耗(W)芯片结点温度(℃)光引擎基板温度(℃)最大温差(℃)
400G低速模式1802482.474.67.8
800G满载-原始布局2804096.888.28.6
800G满载-优化布局12804094.381.512.8
800G满载-优化布局22804093.779.813.9

看这个表能得出几个重要信息。第一,交换芯片结点温度在800G满载时逼近97℃,这已经非常接近硅器件通常125℃结温上限的一半以上了,考虑长期可靠性,降频运行几乎是必然的。第二,光引擎基板温度从74.6℃升到88.2℃,对光引擎的性能影响很大,尤其是激光器的波长漂移和调制效率变化。第三,优化布局(把光引擎放得更靠近出风口或热通孔区域)能显著降低光引擎基板温度,但同时拉大了与交换芯片的温差,热机械应力风险上升。

5.3 热仿真数据如何反哺电路设计

热仿真如果做出来不好看,第一反应不要是加风扇或者加散热器,而是先回去看电源效率。CPO整个封装体功耗里很大一部分是电源转换损耗,如果电源效率从85%提到92%,总热耗能降下来一大截。比如我们原来用三路独立的buck给光引擎供电,每路效率88%左右,后来换成两路高效率buck加一路低噪声LDO组合,整体热耗下降了约7W,散热压力立刻缓解不少。

热仿真还能指导电源PCB布局:发热大的电源芯片应该靠近散热路径放置,但又要远离光引擎的敏感模拟电路。这个矛盾经常让布局工程师头疼。我的做法是:电源芯片放在基板边缘靠近散热通孔区域,光引擎放在另一侧,两者之间用一组接地过孔和电源滤波电路做隔离带。既有隔离效果,又在热通路上。

这里我特别想强调:热仿真的价值不只是“出一份报告”,而是帮你在SI、PI、热三者之间找到折中点。比如基板走线要短要宽,但太宽会阻挡散热通孔的布置;去耦电容要靠近引脚,但电容太大又会影响基板热阻。这些都需要反复迭代,最终拿出来的很可能不是每一项最优的设计,而是综合下来最可靠的。

6. 可测试性与量产良率:DFT和耦合对准,最容易拖延交付进度的两件事

6.1 为什么CPO的DFT比传统模块难做十倍

CPO共封装之后,光引擎已经和交换芯片在同一个封装体内了,传统的“先测交换芯片、再测光模块、最后联调”的流程全部被打乱。你不能用常规的QSFP-DD测试治具去测光引擎,因为它已经没有可插拔接口了。这时必须提前设计DFT(Design For Test)方案。

我遇到的最实际问题是光引擎内部的TIA输出信号怎么测试。共封装基板上留测试焊盘(probe pad)是可以的,但50G PAM4信号在probe点测的时候,探针本身的寄生电容和电感就会加载到信号路径上,导致测试到的眼图和实际工作状态差别很大。针对这个,我们的做法是设计一条独立的环回测试路径,在光引擎输入端加入一个测试用信号源,然后通过片上环回把电信号引出来,在静态测试阶段验证SerDes的TX/RX功能,光路的插损和光纤耦合对准则单独使用光学测试设备验证。

建议所有做CPO设计的团队,在项目Kickoff阶段就把DFT方案纳入设计评审范围,而不是等板子打样回来才发现“没法测”。

6.2 光纤耦合对准:精度、工艺、以及一条非常隐晦但致命的坑

光纤耦合对准是CPO量产阶段最大的工艺变量。光引擎里每一个通道的光都需要和光纤阵列(fiber array)或波导进行耦合对准,这个对准精度通常在亚微米级别。电路设计在这里能做的不多,但有几件事工程师必须提前考虑。

首先,基板上要预留对准标记(alignment mark),而且这些标记不能和高速走线、参考地平面冲突。其次,耦合区域附近不能放置高发热元件,否则热膨胀会导致对准偏移,产品在温度循环测试里容易偶发性能劣化。最后,光纤阵列的固定胶水(通常是紫外固化胶)固化时会带来微小收缩,这个收缩量虽然极小,但在亚微米对准精度的尺度上可能就是致命的。我们遇到过一批样品的灵敏度测试结果陆续超标,排查到最后发现是胶水固化工艺的紫外光强度不够导致收缩不一致。

这块给硬件工程师的建议是:尽早和工艺工程师、封装厂对齐对准方案,PCB/基板设计要为耦合工艺留出足够空间和机械支撑,不要把光纤阵列直接悬空贴在基板表面,时间长了一定会有应力问题。

6.3 量产测试覆盖率:哪些测试必须做,哪些可以省

量产测试是一道成本关。CPO封装体的成本极高,任何一颗不良品流到系统集成阶段再被发现,整体损失都会放大很多倍,所以测试覆盖率不能太低。我的经验是以下几项测试必须做:常温Full-loop误码率测试(覆盖SerDes和光引擎链路)、高温下的灵敏度测试(确认温度余量)、电源纹波测试(确认PDN工作正常)、以及激光器工作电流和背光监控二极管的读数校准(确认激光器健康状态)。

可选的测试包括:全温度范围的误码率扫测(时间太长,抽样即可)、单通道极致压力测试(通过软件配置PRBS31、加大抖动源来摸底极限余量)。有些团队喜欢在量产阶段跑很长时间的长时间稳定性测试来证明设计余量,但从成本和产能角度出发,这种测试更适合在Design Validation阶段做足,量产阶段只保留抽测即可。

最后说一个几乎每个人都踩过但我们花了很久才彻底解决的坑:光纤耦合后的清洁工艺。耦合点附近总是残留微量有机污染物,在激光器工作发热时,这些污染物会缓慢挥发并沉积在VCSEL出光面或光纤端面上,导致光功率缓慢下降。这个问题在传统模块里也有,但在CPO共封装架构里,清洁难度大得多,返工代价也大得多。建议从BOM选型阶段就选择低挥发、耐高温的胶水和清洁剂,并在DFM评审时把清洁工序纳入产线流程。

7. 写在最后的一点体会

我做这个800G CPO项目最大的收获不是把眼图调开、把温度压住,而是想明白了一件事:CPO这类把多个不同工艺、不同敏感度的器件放进同一个封装的架构,所有问题都是相互缠绕在一起的。SI排布影响热分布,热分布反过来改变材料损耗特性,电源纹波会被基板谐振放大,谐振又和去耦电容的摆放位置强相关。你不可能像传统板级硬件设计那样,把“电源”“信号”“结构散热”分给三个团队各管一段,最后再拼起来就完事。

所以我的建议是:如果你决定做CPO,从一开始就建立一个跨电源、SI、热、工艺、测试的联合评审机制。每一个设计决策都会在上述几个维度里有连锁反应,这一点上CPO比传统可插拔光模块苛刻得多。

如果真的要说一句最核心的经验,那就是:在设计的每一个关键节点,都逼自己问一句“如果这个参数到量产时偏了20%,我还能不能兜住”。只要这个答案始终是肯定的,你的设计大概率不会在产线上出大乱子。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询