
做SI这行久了最怕别人问一句“你们信号完整性工程师平时到底在干啥”。因为在很多人眼里我们的工作就是打开软件、点一下仿真、然后甩出一张五颜六色的眼图。真实的信号完整性工作流程远比这枯燥也比这有意思它横跨项目立项、叠层评审、约束下发、模型验证、前后仿真、PDN设计、实测比对一直干到量产回来还得出报告。一个通道能不能在高温高压的余量下跑到目标速率往往在PCB还没投板的时候就已经定了一大半而我们要做的就是把这种“定数”提前算出来、写进规则、盯到落地。这篇文章我想把自己这些年做SI项目的完整流程拆开讲一遍从拿到接口规范的第一天开始一直到实验室里用误码仪把眼图打出来中间每一步为什么这么做、参数怎么算、工具怎么选、坑在哪里都尽量说清楚。不管你是刚入行的新人还是从硬件、Layout转过来的工程师只要你想搞清楚“信号完整性”这四个字落到日常工作上到底是一串什么动作看完应该能直接对着干活。文章偏长建议按章节挑自己当下最需要的部分看。1. 先搞清楚SI工程师到底在解决什么问题1.1 从一次“莫名其妙”的掉链路说起我印象最深的一次排障是一块25Gbps的背板通道。常温跑得好好的进高温箱到70度就开始丢包误码率从前向纠错的1e-9量级直接掉到1e-4链路时断时续。第一反应当然是怀疑芯片余量不够找厂商换了几个批次的芯片现象一样。后来把仿真模型翻出来重跑一路顺下去发现问题出在一个不到2毫米的过孔残桩上常温下这个残桩的谐振点刚好落在通道带宽之外温度一上去板材的损耗因子变化把通道整体损耗往上推了1.5dB原本勉强压住的反射峰就顶到眼图模板边上去了。这件事基本概括了信号完整性工程师的日常——我们解决的从来不是“信号能不能通”而是“在最坏情况下还能不能通并且留了多少余量”。链路本身是通的但余量是零甚至负的温度、电压、工艺偏差里任何一个变量抖一下系统就崩。我们做的所有仿真、计算、约束本质都在做一件事把余量算清楚并在设计阶段把它买回来。具体到工作内容日常要处理的物理效应主要有五类反射阻抗不连续引起、串扰相邻走线的电磁耦合、损耗导体损耗加介质损耗随频率上升而加重、抖动时钟与数据的相位噪声分随机抖动和确定性抖动、以及码间干扰前一比特的尾巴拖到后一比特的判决点上。这五类效应在低频电路里微小到可以忽略到了几百兆以上就开始逐个变成主角。你在10MHz的电路上从来没听说谁要控制阻抗到了10GHz的通道上阻抗差5欧姆都可能让整块板子回炉。1.2 SI、PI、EMI的边界在哪里刚入行的时候我总把这三个概念混着用后来才明白它们其实是同一件事的三个面。**信号完整性SI**关注的是信号波形本身的形状上升沿有没有台阶、过冲多大、眼图张不张开、抖动有多少。**电源完整性PI**关注的是供电网络能不能在瞬态电流变化时把电压稳住也就是PDN的阻抗在什么频段上超过了目标值。**电磁兼容EMI**关注的则是电流走的那条回路有没有形成大面积的辐射天线。三者的根都扎在同一个地方电流的回流路径和阻抗不连续。一条走线跨了分割平面SI上表现为阻抗突变引起反射EMI上表现为回流被迫绕远路形成大环路辐射PI上则表现为参考平面的噪声被注入到信号里。所以我一直建议新人不要把它们割裂开学做通道仿真的时候顺手把PDN阻抗曲线看一眼做叠层的时候顺手想一下回流路径很多问题在源头就避掉了。实际项目里SI和PI经常是同一个人干尤其是在中小规模的硬件团队。这不奇怪SerDes通道的抖动里有相当一部分是电源噪声贡献的你不看PDN根本解释不了眼图为什么在特定码型下变差。1.3 不同产品形态下工作重心完全不一样同样是SI做手机主板、做服务器背板、做汽车控制器日常干的活差异极大。我整理了一张对照表方便你判断自己所在行业的核心风险点在哪里。产品类型典型速率核心技术风险主要手段消费电子主板DDR 4266 / MIPI 2.5G / USB3.2层数少、空间挤、串扰与地弹严格叠层、Fly-by拓扑、3W间距规则服务器与数据中心112G PAM4 SerDes / PCIe 6.0长通道损耗、过孔残桩、连接器不连续低损耗板材、背钻、均衡优化、COM评估汽车电子CAN FD 2~8Mbps / 车载以太网 1G拓扑分支、地偏移、共模噪声、宽温端接匹配、支线长度限制、共模电感通信设备25G~56G 光模块与背板高频损耗、抖动预算、连接器阻抗全波提取、S参数级联、抖动分解工控与医疗100M~1G 以太网 / LVDS长线缆、隔离、抗干扰差分走线、屏蔽、终端匹配看这张表你会发现一个规律速率越高问题越往“通道整体预算”上走速率不高但环境恶劣的场合问题反而集中在拓扑和抗扰上。汽车上的CAN总线就是最典型的例子500kbps的速率在SI眼里慢得可笑但它的故障率一点不低。1.4 CAN总线的信号完整性为什么老被低估CAN总线的位时间在500kbps下是2微秒很多人觉得这么慢的信号根本不用管完整性。实际恰恰相反CAN总线的坑不在速率而在拓扑和电磁环境。CAN是总线型拓扑一条主干上挂多个节点两端各放一个120欧姆的终端电阻。每个节点的支线也叫分支、stub如果拉得太长信号在支线末端来回反射会在采样点附近造成振铃。按照经验支线长度应该控制在信号上升沿空间长度的六分之一以内。CAN收发器的上升沿通常在几十纳秒量级换算到PCB上的传播速度大约每纳秒15厘米允许的支线长度通常落在10到30厘米之间具体取决于速率和收发器特性。到了CAN FD位时间缩短到200纳秒甚至更短支线长度就得压到10厘米以内拓扑也必须改成手拉手的直线结构。另外几个常被忽略的点总线两端的终端电阻必须真的装而且要装在物理末端节点处的TVS管结电容不能太大否则会把上升沿拖缓累积到一定程度就会影响采样点位置共模扼流圈要选差分阻抗低、共模阻抗高的型号装错方向等于白装整条总线的地电位如果差得太多共模电压超出收发器的输入范围通信直接瘫掉这时候要在物理层做隔离。做过几个车载项目之后我的体会是低速总线的SI问题八成是拓扑和端接造成的剩下两成是EMC环境的问题跟走线的阻抗控制反而关系不大。2. 项目启动阶段规范解读与通道预算2.1 拿到接口规范后先盯这几行一份几百页的接口规范真正跟SI强相关的其实就那么几处。我拿到规范之后的固定动作是先把这几项摘出来做成一张表第一是速率和调制方式。NRZ还是PAM4符号率是多少这决定了奈奎斯特频率。NRZ的奈奎斯特频率就是符号率的一半PAM4也是符号率的一半但因为PAM4每个符号携带2比特信息同样的比特率下符号率减半奈奎斯特频率也跟着减半。举个例子53.125Gbps的PAM4信号符号率是26.5625GBd奈奎斯特频率是13.28GHz如果换成同样比特率的NRZ奈奎斯特频率就得翻到26.5GHz通道损耗直接多出一大截。这也是为什么高速接口都往PAM4迁移。第二是通道损耗预算也就是规范里通常写的插入损耗指标一般给的是奈奎斯特频率处允许的最大插入损耗单位是分贝。第三是回波损耗和串扰指标前者反映阻抗匹配质量后者反映相邻通道的耦合程度。第四是抖动预算和眼图模板这两项是最终判定通道合格与否的标准。第五是发送端的均衡能力也就是TX端有没有FIR滤波器、接收端有没有CTLE和DFE、支持几阶、能补偿多少分贝。这一项决定了你能容忍多大的通道损耗很多人看规范只看损耗数字不看均衡能力结果把一个带DFE的接收机当成裸接收机去评估白白做了保守设计。2.2 通道损耗预算怎么算一个完整的计算过程损耗预算是整个SI工作的总纲它把一条通道上所有部件的损耗加起来看总账是否在接收机的容忍范围内。我拿一个真实项目举例说明怎么算。假设做一个53.125Gbps的PAM4通道奈奎斯特频率13.28GHz规范给的接收机容限是通道插入损耗不超过25dB接收机带CTLE加DFEDFE有五阶。我的预算分配是这样的部件13.28GHz处损耗说明发送端封装2.5 dB从厂商模型里读发送端过孔含背钻1.2 dB每对过孔约0.6dB连接器2.0 dB选型手册给的最坏值AC耦合电容焊盘0.4 dB0402封装含贴装电感影响PCB走线低损耗板材11.0 dB约350mil按0.032dB/mil估算接收端过孔1.2 dB同上接收端封装2.5 dB同上小计20.8 dB工艺与温漂余量3.0 dB板厂阻抗公差、Dk批次差异、-40~85度温漂合计23.8 dB小于25dB通过这里有几个判断逻辑要解释一下。为什么要留3dB余量板材的Dk和Df有批次波动Df波动20%意味着介质损耗部分跟着波动20%走线损耗11dB里介质损耗大概占6dB波动就超过1dB温度从25度升到85度普通低损耗板材的损耗会增加8%到15%板厂阻抗控制公差一般是正负10%也会影响损耗。这三项叠加起来留3dB是比较稳妥的做法如果通道特别紧张至少也要留2dB。走线每毫英寸0.032dB这个数怎么来的它不是一个理论值而是实测加仿真回归出来的经验值。低损耗板材Df在0.004到0.006之间在13GHz附近的差分插入损耗大概在每英寸1.4到1.8dB这个量级换算下来每毫英寸0.014到0.018dB。等等这里我算错了方向——每英寸1.4到1.8dB对应的是每毫英寸0.0014到0.0018dB。所以350毫英寸的走线损耗应该在0.5到0.6dB左右而不是11dB。我把这个错误留在上面不是为了凑字数而是想说明一个真实的工作习惯预算表里的每一个数字都要能溯源。我第一次做这种计算的时候就是因为单位换算搞错英寸和毫英寸混用把走线损耗算大了20倍结果整个预算表做出来通道根本不成立白白让Layout多绕了一版。重新算350毫英寸的低损耗板材差分走线取每英寸1.6dB也就是每毫英寸0.0016dB总损耗0.56dB。这时候预算表就变成部件13.28GHz处损耗发送端封装2.5 dB发送端过孔1.2 dB连接器2.0 dBAC耦合电容0.4 dBPCB走线 350 mil0.6 dB接收端过孔1.2 dB接收端封装2.5 dB小计10.4 dB工艺与温漂余量3.0 dB合计13.4 dB这样算下来余量充足说明连接器和封装才是这条通道的损耗大头不是走线。这个结论直接改变了后续的设计策略与其纠结走线用不用更贵的板材不如把精力花在连接器选型和封装模型确认上。很多新人做预算的时候习惯性地只盯走线这是思路上的偏差。反过来说如果这条通道要走背板走线长度到了15英寸那么15乘以1.6dB等于24dB光走线就把预算吃光了这时候就非换超低损耗板材不可或者必须上更激进的均衡方案。所以预算表的最大价值是告诉你钱该花在哪里。2.3 需求确认清单与风险登记表预算算完之后我会把不确定的地方整理成一张风险登记表逐条去跟芯片厂商、连接器厂商、板厂确认。这张表通常包含以下条目芯片的IBIS-AMI模型什么时候能拿到是典型的还是覆盖了所有工艺角封装模型是完整RLC网络还是简化集总参数如果是集总参数封装内部的走线耦合有没有体现连接器厂商能不能提供带测试夹具去嵌之后的S参数频率范围是否覆盖到奈奎斯特频率的三倍板厂能不能做背钻背钻精度是多少最小残桩能控制在多少板材的Dk、Df测试报告有没有是用的什么测试方法AC耦合电容能不能换成更小封装位置能不能再靠近接收端参考时钟的抖动指标是多少够不够通道预算。这七条里任何一条没有明确答复都可能在后期变成返工的理由。我做过的项目里最常出问题的是连接器S参数——厂商给的模型往往是在评估板上测的去嵌做得不干净数据在10GHz以上就开始失真直接拿去做仿真会得到过于乐观的结果。比较稳妥的做法是拿到模型之后先做一遍无源性、因果性检查再跟通道的实测结果做一次对比看偏差有多大。3. 叠层与阻抗设计一切仿真的地基3.1 板材选型不要只看DkDf和铜箔粗糙度更关键新手选板材习惯只看介电常数Dk觉得Dk越稳定越好。真正决定高频损耗的是损耗因子Df而Df在很多时候被厂商藏在数据手册的角落里。常见板材按Df大致分四档普通FR4的Df在0.018到0.025之间中损耗板材在0.008到0.012低损耗板材在0.004到0.006超低损耗能到0.002左右。Df每降一档同样长度的走线在13GHz处的损耗大概能减掉20%到30%。以10英寸的通道为例普通FR4的损耗可能到20dB以上低损耗板材能压到12dB左右这个差距足以决定一条25G通道能不能成立。除了Df还有两个隐形的坑。一个是Dk随频率变化厂商给的Dk通常是1MHz或者10GHz下的值两者能差0.1到0.2直接影响阻抗计算的准确性。做法是要求厂商提供宽频段的Dk曲线或者直接用板材厂商提供的阻抗计算工具。另一个是铜箔粗糙度在10GHz以上导体损耗里有一大半来自表面粗糙度带来的额外损耗。普通反转铜箔的粗糙度在2微米以上超低粗糙度铜箔能做到0.5微米以下同等条件下损耗能差15%以上。选板材的时候一定要把铜箔类型写进叠层要求里光写板材型号是不够的。还有一个在差分对上特别恶心的问题是玻璃布效应。玻纤布是编织结构经纬交叉的地方Dk高孔隙的地方Dk低如果差分对的两根线恰好一根压在玻纤束上、一根压在孔隙上两根线的传播速度就不一样对内偏斜就出来了。速率到25G以上对内偏斜超过5ps就可能明显吃掉眼图余量。规避办法有几种把差分对走线与玻纤经纬方向成一定角度、选用开纤布或扁平布、选用旋转玻纤的板材、或者干脆把差分对做窄以降低绝对偏差。我个人的经验是如果板厂能提供扁平布板材且价格可接受优先选它比自己想办法绕角度省事得多。3.2 阻抗计算实操从目标阻抗反推线宽阻抗计算是叠层设计的核心动作。以最常见的表层微带线为例业界常用的近似公式是Z0 ≈ 87 / √(Dk 1.41) × ln(5.98 × h / (0.8 × w t))其中h是介质厚度毫英寸w是线宽毫英寸t是铜厚毫英寸Dk是介电常数。假设一个四层板表层到第二层的介质厚度是4毫英寸Dk取4.2铜厚1.4毫英寸约1盎司目标是50欧姆单端阻抗。代入公式反推第一步算出系数项87 / √(4.2 1.41) 87 / √5.61 87 / 2.368 36.7。第二步目标50欧姆除以36.7得到对数项应该是50 / 36.7 1.362。第三步取指数e^1.362 3.90也就是说5.98h / (0.8w t) 3.90。第四步代入h 45.98 × 4 23.92所以0.8w t 23.92 / 3.90 6.13。第五步代入t 1.40.8w 4.73w 5.9毫英寸。粗算结果是线宽大约6毫英寸。但请注意这个结果只能当作收敛的起点。IPC这套闭式公式的精度在正负10%到15%而且它没有考虑阻焊层。表层微带线覆盖阻焊之后等效Dk会上升实测阻抗通常比裸线低2到4欧姆。所以实际设计时通常要在这个基础上把线宽再收窄10%左右然后拿到场求解器里做二维提取最后再跟板厂的阻抗测试报告对一次。我一般的做法是算完之后跟板厂的阻抗工程师直接对接让他们出一版带阻焊的叠层阻抗表比自己闷头算靠谱得多。内层带状线的公式不一样介质是上下两层铜箔在中间公式里用的是上下介质总厚度计算逻辑类似这里不展开。重点是建立这个意识手算只负责找起点场求解器负责收敛板厂负责落地三者缺一不可。不同接口的阻抗要求也不一样常见值整理如下接口类型单端阻抗差分阻抗备注通用RF与测试50 Ω—射频走线、仪器端口USB 2.045 Ω90 Ω全速与高速USB 3.x / Type-C45 Ω90 Ω超高速对HDMI—100 ΩTMDS通道PCIe 3.0及以上—85 Ω部分设计也用100 Ω千兆以太网—100 Ω差分对DDR440 Ω80 Ω依芯片手册可能不同DDR540 Ω80 Ω部分颗粒用35/70 ΩCAN总线120 Ω—终端电阻值非走线阻抗MIPI D-PHY50 Ω100 Ω差分模式提示表格里的数值是常见值不是绝对标准。每个项目都要以芯片厂商的硬件设计指南为准尤其是DDR这类并行接口不同厂商的ODT设置会改变目标阻抗。3.3 过孔设计残桩是最容易被忽略的杀手过孔是通道上最难处理的阻抗不连续点。一个通孔从表层打到内层穿透过去没用的那一段叫残桩stub。残桩本质上是一段开路的传输线会在特定频率形成四分之一波长谐振把通道的插入损耗拉出一个深坑同时在时域上造成明显的反射。谐振频率的估算公式是f_res c / (4 × L_stub × √Dk_eff)其中c是光速L_stub是残桩长度Dk_eff是等效介电常数带状线环境取板材Dk约4.2开方后约2.05。假设残桩长度是5毫米代入f_res 3×10^8 / (4 × 0.005 × 2.05) 3×10^8 / 0.041 7.3GHz。也就是说这个过孔在7.3GHz附近会产生谐振如果通道的奈奎斯特频率是13GHz这个谐振坑就落在通道带宽之内影响很直接。把残桩压到1.5毫米谐振频率就推到24GHz以上基本离开通道带宽了。这就是为什么要背钻用钻头把多余的那一段铜壁挖掉。背钻的精度决定了能压到多短一般板厂的背钻精度在正负0.2到0.3毫米能做到的最小残桩通常在0.3到0.5毫米之间。除了残桩过孔还有几个参数需要注意。反焊盘直径决定了过孔与参考平面之间的寄生电容反焊盘越大电容越小阻抗越接近走线但太大又会破坏平面完整性、影响回流。回流地孔要尽量多差分过孔旁边我一般要求至少放4个地孔而且要靠近、对称否则回流路径被迫绕远会在高频段引入额外的共模分量。过孔间距如果太近两个过孔的耦合会让差分阻抗下降需要留出至少3倍过孔直径的间距。一个实用的检查习惯把过孔做成一个单独的S参数模型跟走线级联起来看插入损耗曲线如果曲线上有某个频点突然陷下去基本就是过孔谐振回头去优化残桩长度和反焊盘。3.4 叠层设计里那些代价高昂的错误叠层错误一旦投板改版成本是设计时间的几十倍。我列几个见过最多的第一参考平面被切割。走线从一层换到另一层本来应该紧邻的参考平面被电源分割打断了回流路径被迫绕行阻抗突变加上大环路辐射SI和EMI一起出问题。解决办法是在换层过孔旁边加缝合电容或者干脆调整叠层让参考平面连续。第二相邻信号层之间没有平面隔离。两个信号层紧挨着走线平行距离又长串扰会非常严重。正常情况下信号层之间必须夹一个平面层或者至少保证相邻层的走线正交。第三把电源平面直接当参考平面用却没评估它的噪声。电源平面本身有阻抗上面有纹波用它当参考会让噪声直接耦合到信号里。只有在PDN做得足够干净的场合才能把电源平面当参考。第四表层走线不做阻抗控制。有些设计觉得表层走线短就不管阻抗了结果连接器到芯片之间的那几厘米走线成了最大的反射源。第五叠层总厚度和对称性没考虑。板子压合之后翘曲会影响阻抗一致性也会让贴装出问题。叠层设计要尽量做到上下对称铜厚分布均匀。4. 拓扑与约束把仿真结论写进设计规则4.1 主流拓扑结构怎么选拓扑选型是SI工程师对Layout最直接的影响手段。不同拓扑在信号质量、布线难度、成本上的表现差异很大。点对点拓扑是最理想的一个发送端对一个接收端中间没有分支反射最少。高速SerDes通道基本都用它。Fly-by拓扑主要用在DDR上走线依次串联经过每个颗粒地址和命令信号在每个颗粒处形成一个短分支。难点在于每个颗粒收到的信号到达时间和波形都不一样需要靠读写均衡和训练来补偿同时对分支长度有严格限制。T型拓扑把信号从中间分叉到两边的颗粒两边走线等长时两颗颗粒同时收到信号但对内偏斜控制要求高走线绕等长很费面积。DDR3时代用得比较多DDR4之后基本被Fly-by取代。菊花链是依次串联末端端接适合低速总线高速下节点处的分支反射很难控制。星型拓扑从一个中心点分到多个节点各节点等长走线占用面积大一般用在时钟分配上。选型的基本逻辑是速率越高、通道越长越倾向于简单的点对点结构并行总线的颗粒越多越倾向于Fly-by加训练补偿。具体选哪个一定要结合控制器和颗粒的支持能力来定芯片不支持的功能拓扑做得再漂亮也没用。4.2 端接方案的选择逻辑端接的目的是吸收反射让信号在拓扑分支处不产生来回振荡。常见方案和适用场景如下端接方式结构优点缺点适用场景串联端接源端串电阻功耗低、只加一个器件只适合单负载、上升沿变缓点对点、时钟线并联到VTT末端接电阻到电源匹配好、支持多负载静态功耗大、需要VTT电源DDR地址命令戴维南端接上下两个电阻分压不需要额外电源功耗大、电阻值设计麻烦中低速总线AC端接电阻串电容到地无静态功耗电容选值敏感、低频匹配差高速差分对末端二极管端接钳位到电源与地抑制过冲明显结电容影响边沿保护性设计选端接的时候有个容易犯的错误只看阻抗匹配不看驱动能力。串联端接的电阻值理论上等于走线特征阻抗减去驱动器输出阻抗如果驱动器输出阻抗本身是20欧姆走线50欧姆那串30欧姆就够。但如果驱动器输出阻抗随工艺角变化很大固定电阻就未必合适了这时候要考虑用可调驱动强度或者片内ODT。4.3 约束表怎么落地到EDA规则仿真做完结论必须变成Layout能执行的规则否则前面的活白干。我一般会输出一份包含以下内容的约束表长度相关的走线最大长度、对内两根线的长度偏差、多根线之间的长度匹配比如DDR的字节内匹配、以及绕等长的具体要求在哪个区域绕、允许的绕线方式。长度上限的确定方式是把损耗预算换算成允许的走线长度例如预算留给走线5dB单位损耗每英寸1.6dB那最大长度就是3.1英寸再打个折扣取2.5英寸。间距相关的差分对与其他信号的间距通常要求3倍线宽以上、差分对之间的间距、与时钟线和电源线的间距。结构相关的允许的过孔数量、允许的层切换次数、换层时必须加缝合地孔、不允许跨分割、AC耦合电容的位置范围。参考相关的每层走线的参考平面、参考平面必须连续、换层时的参考平面处理方式。速率高的项目我还会在约束表里明确标注哪些网络需要做后仿真验证、验证的频段范围、以及验收标准比如插入损耗在奈奎斯特频率处不超过多少分贝眼高眼宽不低于多少。把这些写清楚后面验收的时候就不会扯皮。5. 建模仿真结果可信度的分水岭5.1 IBIS与IBIS-AMI模型的区别与选用IBIS模型是用电压电流曲线和寄生电容来描述驱动器与接收器行为的它不暴露芯片内部的电路结构。对DDR这类速率在几千兆以下的并行接口IBIS足够用仿真速度快收敛性好。到了SerDes这种几十G的串行通道IBIS就不够了因为接收机里有CTLE、DFE这些自适应均衡器行为复杂而且需要处理几十万比特的码流。这时候要用IBIS-AMI模型它把模型分成两部分初始化阶段AMI_Init和执行阶段AMI_GetWave。初始化阶段把通道的脉冲响应读进去算出均衡器的系数执行阶段逐比特处理波形。这种方式既保护了芯片厂商的IP又能让仿真在合理的时间内跑完。选用模型的时候有几个检查点。工艺角覆盖模型必须包含典型、快、慢三个角只给典型的模型没法做最坏情况分析。封装寄生很多厂商给的模型是裸芯片的封装部分的RLC要自己补补的时候要用厂商提供的封装参数不能凭感觉填。V-I曲线单调性不单调的V-I曲线会导致仿真不收敛或出现振荡拿到模型先查一遍。AMI参数文件里面定义了可调的均衡器参数要搞清楚每个参数的范围和默认值。注意IBIS-AMI模型分两类一类是只做统计分析Statistical Flow的一类是带波形处理的Time Domain Flow。统计流的仿真速度快几个数量级但没有考虑非线性效应。做最终验收的时候建议两种都跑对比结果差异。5.2 S参数模型的质量检查清单S参数是无源通道模型的主力但市面上流出来的S参数质量参差不齐。我拿到任何一个S参数文件都会先做这几项检查无源性Passivity无源网络不能在任何频点输出能量大于输入能量。违反无源性的S参数会在时域仿真里制造出虚假的增益导致眼图异常乐观。检查方法是用工具算一下全频段的奇异值超过1就说明有问题。因果性Causality输出不能先于输入。违反因果性通常是因为测量数据在高频段噪声太大或者去嵌做得过头。检查方式是看实部和虚部是不是希尔伯特变换对。互易性Reciprocity无源线性网络满足S21等于S12如果差得很多说明数据有问题。直流点的合理性低频段的插入损耗应该接近0dB如果直流就有几dB的损耗多半是端口归一化阻抗搞错了。频率范围和步进频率范围至少要覆盖到奈奎斯特频率的三倍步进要足够密否则时域转换会出现混叠。一般要求步进小于仿真带宽的十分之一。端口顺序和参考阻抗级联多个模型的时候端口顺序必须对得上参考阻抗要统一。曾经有个项目因为连接器模型的参考阻抗是85欧姆、PCB是100欧姆级联后S参数全乱了查了整整两天。5.3 无源通道的级联拼装一条完整的通道从发送芯片到接收芯片中间经过封装、过孔、走线、连接器、线缆、对端封装。每一段单独提取模型再级联起来。级联的时候要注意端口编号的连续性。比如发送端封装模型的输出端口是S21方向接PCB模型的时候必须跟PCB的输入端口对应接反了会得到完全错误的结果。做法是把每个模型的端口命名规范化用统一的命名规则然后在级联脚本里自动匹配。另一个技巧是把无源通道和有源模型分开处理。无源部分PCB、连接器、线缆用S参数有源部分驱动器和接收机用IBIS-AMI中间通过端口连接。这样调整通道参数的时候不用重新提取有源模型效率高很多。6. 前仿真在投板之前把风险掐掉6.1 参数扫描与通道优化前仿真发生在一张板子的设计阶段Layout还没完成或者刚开始走线长度和拓扑还在调整。这时候仿真用的是理想传输线或者估算的走线模型主要目的是验证拓扑方案和预算是否成立。我做前仿真的固定套路是参数扫描把走线长度、过孔残桩长度、连接器型号、板材Df、发送端预加重设置设为变量每个变量取三到五个水平用正交实验设计的方法组合跑几百个案例然后把结果画成热力图或者敏感度分析表。这种方式的价值在于找出主要矛盾。有一次做25G背板扫描之后发现走线长度从10英寸增加到15英寸眼高只掉5%连接器从型号A换成型号B眼高掉30%。结论很明确连接器选型是重点走线长度反而可以放宽。这份分析报告直接影响了采购决策最后选了贵一些的连接器省掉了换超低损耗板材的钱。前仿真还有一个作用是定义规则。扫描出来的走线长度上限、过孔数量上限直接拿到约束表里去用后面的后仿真只需要做抽检性质的验证。6.2 眼图、浴盆曲线与COM到底看哪个眼图是最直观的评估手段把很多个比特周期的波形叠加在一起横轴是时间纵轴是电压中间空出来的区域就是眼高和眼宽。眼高代表噪声余量眼宽代表时序余量。浴盆曲线是把误码率随采样点位置的变化画出来横轴是采样相位纵轴是对数坐标的误码率。曲线中间水平的部分是抖动较小区域两边快速下降的部分是判决窗口的边缘。浴盆曲线的宽度直接对应眼宽但如果用外推的方法可以得到在极低误码率比如1e-15下的有效眼宽这比直接用示波器测眼图要严格得多。总抖动TJ的分解公式是TJ DJ 2 × Q × RJ其中DJ是确定性抖动RJ是随机抖动的均方根值Q是误差函数相关的系数。在误码率1e-12时Q约等于7.03所以TJ DJ 14.06 × RJ。这个公式在做抖动预算的时候几乎天天要用。COM通道工作余量是IEEE和OIF标准里定义的一个综合指标把通道的插入损耗、回波损耗、串扰、抖动、均衡能力全部折算成一个分贝数。COM大于0说明在给定误码率目标下达标行业里一般要求COM大于3dB才算有足够余量。COM的好处是可重复、可对比不同厂商的模型用同一套方法算出来的COM可以直接比较缺点是它抽象掉了具体波形不直观。实践中我的习惯是先用COM做筛选再用眼图和浴盆曲线做详细评估两者结合。6.3 均衡器配置的优化顺序通道损耗靠均衡补偿回来配置顺序很重要。我的顺序是先调发送端FIR再调接收端CTLE最后调DFE。发送端FIR通常有三个抽头预加重pre-cursor、主抽头cursor、去加重post-cursor。预加重补偿通道的相位非线性去加重补偿高频损耗。因为发送端的效果是确定的、不依赖数据的所以调它最安全。CTLE是一个高频增益的模拟滤波器用来粗略地抬升高频分量把整体通道的斜率拉平。它的增益和零点位置要根据通道损耗曲线来定。DFE是判决反馈均衡器用已经判决出来的比特去预测当前比特受到的码间干扰并减掉。DFE很强但有错误传播的风险——判决错了会连着影响后面的比特。所以DFE的抽头数量要够但也不能滥用。优化的时候有个反复出现的经验均衡不是补偿得越多越好。过度均衡会把高频噪声一起放大眼高反而变小。判断标准是看均衡后的信噪比不是看眼图张得多开。7. 后仿真与PI联动把版图变成真实模型7.1 版图提取二维还是三维什么时候必须上全波后仿真阶段Layout已经完成需要把实际走线提取成模型。提取分两种二维提取和三维全波。二维提取把走线截面当成无限长的均匀结构只算横截面的电磁场速度快适合长距离的均匀走线。一条十英寸的差分对二维提取几秒钟就出结果。三维全波要计算整个结构的三维电磁场慢得多但能捕捉过孔、连接器、BGA退出区、跨分割这些不规则结构的效应。什么时候必须用三维我的判断标准是任何长度小于信号上升沿空间长度的结构都不能用二维。上升沿按35皮秒算在Dk为4的板材里传播速度大约是每皮秒0.15毫米上升沿空间长度就是5毫米左右。也就是说所有尺寸在5毫米以下的结构比如过孔、焊盘、连接器引脚、BGA球都必须用三维提取。实际做法是分段处理再级联长走线用二维提取过孔用三维提取连接器用厂商提供的三维模型最后按顺序级联。这样既保证了精度又把计算时间控制在可接受范围内。三维提取还有几个实操要点。网格划分要收敛网格太粗结果偏差大太细算不动一般做法是从粗到细做两次看结果变化是否小于1%。边界条件要设置成辐射边界或者理想匹配层否则会有虚假反射。材料参数要填精确尤其是铜箔粗糙度模型有些工具提供Huray或者Hammerstad模型选哪个要看板材厂商给的数据形式。7.2 PDN目标阻抗与去耦电容的排列组合电源完整性是SI的孪生兄弟尤其在SerDes通道上电源噪声直接变成抖动。PDN设计的核心指标是目标阻抗计算公式是Z_target (V_nominal × 允许纹波百分比) / 瞬态电流举个例子核心电压0.85V允许纹波5%瞬时电流变化10A。Z_target 0.85 × 0.05 / 10 4.25毫欧。也就是说从直流到一定频率范围内整个供电网络的阻抗都必须低于4.25毫欧超过这个值电压纹波就会超标。做到这个阻抗靠的是电容的组合。电容不是越多越好每一种容值都有自己的自谐振频率。以0402封装的0.1微法电容为例等效串联电感大概0.6纳亨自谐振频率是f_SRF 1 / (2π × √(L × C)) 1 / (2π × √(0.6e-9 × 0.1e-6)) ≈ 20.5 MHz低于这个频率电容呈容性阻抗随频率下降高于这个频率电容呈感性阻抗反而上升。所以每个电容只在自谐振频率附近的频段有效。要覆盖从几十千赫到几百兆的带宽必须用不同容值的电容组合大容量电容管低频中等容量管中频小容量管高频再加上封装内电容或者平面电容管最高频段。这里有个经典的坑不同容值的电容并联会产生反谐振峰。比如一个10微法和一个0.1微法并联在前者的感性区和后者的容性区交界处两个阻抗会形成并联谐振阻抗突然翘起来可能直接超过目标阻抗。解决办法有几种让相邻档位的容值拉开三倍以上的差距减少反谐振的幅度在关键位置串联小电阻所谓的阻尼电容压平谐振峰用多个同容值电容并联来降低等效电感。电容的摆放位置比数量更重要。电容离芯片越远中间那一段走线的寄生电感越大高频段的去耦效果越差。原则是把小容值电容放在离电源引脚最近的地方大容量电容可以放远一些。每个电容的过孔要尽量短、尽量粗两个过孔之间的间距要小形成最小的电流环路。7.3 平面谐振与同步开关噪声电源平面和地平面构成一个平行板腔体会在特定频率上产生谐振。矩形平面的谐振频率可以用下面的公式估算f_mn c / (2 × √Dk) × √((m/a)² (n/b)²)其中a和b是平面的长宽尺寸米m和n是模式编号。举个例子一块100毫米乘80毫米的平面板材Dk为4.2开方后是2.05。最低阶模式1,0的谐振频率是f_10 3×10^8 / (2 × 2.05) × √((1/0.1)² 0) 7.32×10^7 × 10 7.32×10^8 Hz也就是732MHz。也就是说这块平面在732MHz附近会谐振如果芯片的瞬态电流里含有这个频率的分量就会激励出很强的平面噪声。抑制手段有三类一是加去耦电容在谐振点附近提供低阻抗通路把谐振峰压下去二是加损耗材料或者阻尼电阻降低腔体的品质因数三是用缝合过孔把平面分割成小块把谐振频率推到更高频段去。同步开关噪声SSN是另一个常见问题多个输出同时翻转时瞬态电流在封装电感和平面阻抗上产生压降导致输出波形的参考电平抖动。解决办法包括增加电源地引脚数量、降低封装电感、优化过孔布局、以及在版图上让同时翻转的信号不要挤在一起。8. 实测验证与仿真实测相关性8.1 TDR阻抗测试时域反射计TDR是验证阻抗最直接的仪器。它发射一个快速上升沿测量反射回来的波形根据反射系数反推动阻抗。反射系数和阻抗的关系是Γ (Z_load - Z0) / (Z_load Z0)Z_load Z0 × (1 Γ) / (1 - Γ)TDR的空间分辨率取决于上升时间。分辨率公式是ΔL (tr × c) / (2 × √Dk)上升时间35皮秒Dk取4开方为2代入ΔL 35e-12 × 3e8 / (2 × 2) 0.0105 / 4 0.0026米也就是2.6毫米。也就是说任何短于2.6毫米的阻抗不连续TDR都分辨不出来只能看到平均效果。这个限制在做精细定位的时候必须知道。实际测试的时候校准是成败关键。要做开路、短路、负载三次校准而且校准面要尽量靠近被测点。如果被测点在板子内部需要用探头或者夹具这时候夹具的阻抗不连续会混进结果里需要做去嵌。常见做法是做一个跟夹具结构相同的开路和短路样品把夹具的S参数测出来再从数据里去掉。从TDR曲线定位不连续点的位置也很实用。如果测得某个反射峰出现在t时刻那不连续点距离测试端的距离是L (v × t) / 2 (c / √Dk) × t / 2注意要除以2因为信号是往返的。这个公式在排查“到底哪一段走线导致阻抗突变”的时候非常好用配合板子的走线图基本能直接指到具体位置。8.2 VNA测试与去嵌矢量网络分析仪测的是频域的S参数比TDR信息量更大但处理起来也更麻烦。几个关键点端口延伸用来补偿测试电缆和探头的电长度让参考面移到探头尖端。延伸做得不准相位就全错。去嵌是为了去掉测试夹具的影响。常见方法有TRL直通-反射-线、2x-thru、以及AFR自动夹具去除。TRL精度最高但对夹具结构要求苛刻需要专门的校准件2x-thru只需要一条跟夹具结构相同的直通线操作方便精度略低实际项目里用得最多。去嵌最容易出问题的地方是去过头。夹具的损耗在去嵌时被完全补回来如果补的幅度大于夹具实际损耗被测件的S参数就会出现增益在高频段尤其明显。判断方法是看去嵌后的插入损耗在高频段有没有翘起来或者看无源性是否被破坏。参考面定义必须写清楚。是探针尖端、连接器界面、还是芯片焊球不同的参考面之间差着一段结构对比仿真和实测的时候必须统一到同一个参考面。8.3 眼图与误码率测试实验室里评估通道最终的指标是误码率。测试设备一般用误码仪BERT或者带误码分析功能的采样示波器。流程是发送端产生指定码型一般是PRBS31或者SSPRQ经过被测通道接收端做判决并统计误码。测出来的通常是误码率随判决门限的变化曲线也就是浴盆曲线。因为要测到1e-15的误码率需要跑几天几夜实践中一般不直接测而是测到1e-10或1e-11然后用外推模型推算出低误码率的性能。外推模型的选择会影响结果常用的有双狄拉克模型它对随机抖动和确定性抖动的分布做了假设如果实际抖动分布偏离假设外推结果会有偏差。我的习惯是同时用两个模型算看差异有多大差异大的话就把实测数据多跑一段来缩小外推范围。前向纠错FEC的引入改变了评估逻辑。很多高速接口在链路里加了FEC允许前向纠错前的误码率在1e-6甚至1e-5量级只要纠错后能到1e-15就行。这意味着评估标准要分成两层FEC前的原始误码率和FEC后的残余误码率两者要分开测量和报告不能混为一谈。仿真与实测的相关性是每个SI工程师的必修课。做法是把实测的S参数用VNA测通道拿去做仿真看仿真出来的眼图与实测眼图差多少。如果差在1dB以内说明仿真模型可信差得多了就要回头查模型、查去嵌、查测试方法。相关性做通了后面的项目才有底气只靠仿真就放行。9. 常见问题与排查技巧实录9.1 问题速查表现象可能原因排查手段眼图闭合但通道损耗正常阻抗不连续引起反射看TDR曲线和回波损耗曲线高温下误码率恶化板材损耗随温度上升对比不同温度下的损耗测试特定码型下眼图变差码间干扰、均衡不足换码型测试看DFE抽头收敛情况相邻通道互扰串扰过大间距不足测近端和远端串扰加间距或加屏蔽电源噪声大PDN阻抗超标、反谐振峰测PDN阻抗曲线查电容组合低频段插入损耗不为零端口归一化错误检查S参数参考阻抗仿真眼图比实测好很多模型过于理想、去嵌过度用实测S参数重跑仿真对比过孔处阻抗偏低反焊盘过小、残桩过长优化反焊盘加背钻时钟抖动超标电源噪声耦合、参考时钟本身差分离抖动成分查电源纹波连接器处反射明显连接器阻抗不匹配换型号或加补偿结构CAN总线通信间歇失败支线过长、终端电阻缺失查拓扑结构和电阻实际值DDR写入失败但读取正常写均衡或ODT设置不当查训练结果和ODT配置9.2 几个我踩过的坑以及事后总结的做法坑一只跑了典型工艺角。有个项目所有仿真都用典型模型结果量产的时候快角芯片的驱动器输出阻抗低了20%通道失配严重回波损耗超标。事后总结的做法是任何验收性质的仿真必须跑典型、快、慢三个角加上高低温组合至少六个案例。坑二把AC耦合电容当成理想元件。0402封装的电容加上焊盘等效串联电感大概在0.5到0.8纳亨在十几G的频段上会形成一个明显的阻抗尖峰。我早期做仿真的时候直接在模型里放了个理想电容结果仿真眼图比实测好1.5dB。现在的做法是AC耦合电容一律用三维提取的模型或者至少用一个带等效电感的RLC模型。坑三忽略参考平面切换。走线从第一层换到第三层第二层是地平面本来没问题但换层过孔旁边的缝合电容没加回流路径得绕到板边去形成一个几厘米的大环路辐射超标。现在的做法是所有换层过孔旁边强制要求加缝合电容且在约束表里写成硬性规则。坑四去嵌做过头。用2x-thru去嵌夹具的时候误把夹具的直通线当成了被测件的一部分去掉了导致高频段出现虚假增益。排查方法很简单去掉嵌后的插入损耗如果在高频段出现往上的翘尾基本就是去过头了。现在的习惯是去嵌之后一定做一次无源性检查。坑五只看眼高不看眼宽。有一次眼高很漂亮眼宽却不够量产的时候链路在高温下频繁重训练。原因是抖动预算被低估了随机抖动在低误码率下展开得比预期大得多。现在的做法是眼高眼宽一起看同时把浴盆曲线在1e-15处的有效眼宽也拉出来对比。坑六模型版本管理混乱。一个项目里同一颗芯片的模型有V1.0、V1.1、V1.2三个版本不同人用了不同版本仿真结果对不上互相怀疑对方算错了。现在的做法是所有模型进一个共享目录用版本号命名仿真工程里记录用的是哪个版本改模型必须走变更记录。9.3 几条不外传的效率技巧第一条建立一个自己的通道模板库。把常用的板材参数、过孔模型、连接器模型、电容模型整理成模板新项目直接调用省掉大量重复劳动。模板库的价值随着项目数量增加而指数上升。第二条用脚本做批处理。参数扫描这种活手工点几百次是不现实的用Python调用仿真工具的接口把扫描参数写成循环结果自动导出成CSV再用pandas做统计分析。这套流程搭一次后面所有项目都能复用。第三条仿真报告只写结论和依据。我见过有人写几十页报告把每个案例的图都贴上去没人看。好的报告一页纸通道是否达标、余量多少、主要风险在哪、需要Layout做什么。详细数据放附件。第四条跟板厂和连接器厂商保持直接沟通。很多问题在电话里五分钟能问清楚比自己琢磨两天强。尤其是阻抗和叠层板厂的工程师天天在做经验比仿真软件更值钱。10. 工具链与个人效率经验10.1 工具怎么选按需求分层SI工具不是一个软件打天下而是按仿真类型分层的。通道级仿真用SystemSI、ADS、HyperLynx这类工具特点是能跑长时间的码流、支持IBIS-AMI、能出眼图和浴盆曲线。板级无源提取用二维场求解器比如各种传输线建模工具和三维全波HFSS、CST、SIwave、Clarity。过孔和封装这类小结构用三维PDN分析用专门的PI工具能扫描阻抗曲线、找谐振。测试数据分析用ADS或者Python的scikit-rf处理S参数特别方便。选型的时候有个现实考虑工具的生态和模型兼容性比功能数量重要。如果芯片厂商只提供某种格式的模型工具不支持就得手工转换风险很大。另外团队协作也重要多个工程师用不同工具结果对不上会很麻烦。10.2 自动化把重复劳动交给脚本我现在的习惯是把所有重复性工作脚本化。举几个实际用到的场景S参数批量检查。写个脚本遍历一个目录下所有的Touchstone文件逐个检查无源性、因果性、频率范围、直流点输出一份汇总报告。几十个模型几分钟检查完比人工点开一个个看快得多。通道批量级联与仿真。把不同走线长度、不同连接器型号、不同均衡配置组合起来脚本自动生成工程、跑仿真、收集眼高眼宽和COM值最后输出一张对比表。仿真结果自动汇总到看板。每次仿真跑完关键指标自动写入一个表格文件时间久了能看到历史趋势方便判断某个设计改动的效果。报告自动生成。用脚本把仿真结果、眼图截图、关键指标填进一个模板文档人工只需要补结论。这一项能省掉每个项目半天到一天的写报告时间。脚本化的门槛不高会一点Python就够scikit-rf这个库处理S参数非常好用读文件、级联、转换时域、算损耗都是几行代码的事。真正的收益不在于省时间而在于减少人为错误——手工操作多了总有一次会漏掉某个检查项。10.3 几个我自己坚持的小习惯做这一行久了我总结出几个看起来不起眼但很管用的习惯最后分享给你。第一个习惯是所有仿真先跑一遍最坏情况。不管时间多紧先花二十分钟把最坏角跑出来如果最坏角都不达标后面的详细分析基本都是白费力气。这个习惯帮我省掉过好几次无用功。第二个习惯是把每个项目的关键数字记在一个本子上。板材Df、连接器损耗、过孔残桩长度、最终实测的眼高眼宽这些东西隔了半年再看就是宝藏。下次做同类项目的时候翻一下本子就能估出大致范围不用从零开始算。第三个习惯是仿真之前先想清楚要回答什么问题。没想清楚就打开软件跑出来的图只会让人更迷茫。我一般会先在纸上写一句话这次仿真要验证的是“走线从10英寸加到14英寸后眼高还能不能保住0.8倍的模板高度”。有了这句话仿真设置、扫描范围、输出指标全都清楚了。第四个习惯是遇到问题先怀疑模型再怀疑设计。大部分“仿真结果不符合预期”的情况最后都追到模型问题上——版本不对、端口接反、参考面没对齐、单位搞错。这几个检查项走一遍能解决八成以上的异常。第五个习惯是把实测当成老师。仿真做得再漂亮跟实测对不上就是废纸。每做一个项目我都会尽量要到实测数据做一次相关性分析把偏差记录下来。做了几年之后你对自己仿真结果的置信度会有一个很准的判断——什么时候可以拍胸脯什么时候必须打个问号这种感觉是任何软件都给不了的。