ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从Aurora到SPEED2000:高速PCB信号完整性仿真全流程

从Aurora到SPEED2000:高速PCB信号完整性仿真全流程 芯片速率跑到10G、25G甚至56G以后PCB上走线的每一毫米都在跟时序和噪声较劲。几年前我们遇到设计反复改版、板子回来后眼图一塌糊涂的情况后来把整套板级完整性仿真流程跑通才把问题挡在投板之前。今天想着重聊聊Cadence Sigrity这套工具链里从Aurora协同环境到SPEED2000时域仿真的完整走法适合正在搭流程、或者手头有高速板卡项目要做的硬件、SI工程师。需要先说明一个容易混淆的点这里的Aurora不是Xilinx高速串行协议那个Aurora IP核而是Sigrity里负责把各个仿真工具串联起来的协同环境。与之搭配的SPEED2000则是Cadence Sigrity中的时域瞬态仿真引擎专门用来跑信号波形、眼图、电源纹波这类“看得见时间变化”的结果。把这两者之间的关系理顺再往下走就顺了。1. 为什么要把Aurora和SPEED2000串起来很多人接触Sigrity时第一个感觉是“工具好多”PowerSI、PowerDC、OptimizePI、SPEED2000、SystemSI每个名字都像独立软件。刚开始我也这么认为直到项目里需要反复在频域和时域之间倒腾数据才意识到这背后真正的价值是协同。1.1 先说清楚一个常见的混淆点Aurora在Cadence Sigrity里是一个集成化的流程交互环境。你可以理解成“控制台”或者“调度中心”PowerSI、SPEED2000这些工具被挂在这个环境下面共享同一个数据库、叠层信息、网络拓扑和器件模型。这样设计的好处很实际你不需要在每个工具里重新导入板卡文件、重新设置叠层仿真数据也能在不同工具之间自动传递。SPEED2000则是时域求解器。它和PowerSI这种频域求解器的关系就像一个是用频率扫仪看通道的“体检报告”另一个是用示波器看真实运行时的“心电图”。频域告诉你通道在哪个频点阻抗有问题、损耗多大时域告诉你实际跑码型时波形劣化成什么样、抖动多少、电源轨的纹波有没有超标。两者互补不能互相替代。另外一个高频搜索到的“aurora如何安装及在wps中使用”我猜应该是指Aurora在其他应用场景的安装使用问题跟Sigrity无关。这里不做展开还是把焦点放回板级SI/PI仿真。1.2 全流程拆解从叠层到眼图一个典型的高速板卡SI/PI仿真流程大体可以分成五个阶段。我整理了一张表方便大家对照理解每个环节的目的和产出阶段涉及工具主要输出关注点前期准备Aurora协同环境工程文件、叠层校验、模型映射数据一致性频域分析PowerSIS参数、Z参数、谐振模式阻抗剖面、插入损耗直流分析PowerDCIR drop、电流密度、电压分布电源网络直流健康度去耦优化OptimizePI去耦电容方案、PDN阻抗优化目标阻抗、自谐振频率时域验证SPEED2000波形、眼图、纹波、抖动信号与电源协同验证这张表看起来简单实际连锁反应很多。比如PowerSI提取的S参数不准确后面SPEED2000时域眼图大概率也是错的PowerDC发现某区域电流密度过高能提前暴露铜皮窄、过孔数量不足的问题。所以流程的核心不是某个工具用得有多溜而是每个环节的输入输出是否正确衔接。2. 从Aurora开始的工程搭建与前期准备既然Aurora是协同环境那流程的起点自然从这儿开始。很多新手上来就双击PowerSI图标想仿真很快会发现文件导入后模型全是问号叠层信息也不对。正确的操作是先进入Aurora把工程本身的基础打牢。2.1 创建工程与导入设计文件避开叠层地雷打开Aurora环境后新建工程的第一步是创建仿真工作区Workspace。这里要选择设计文件的来源常见的有Cadence Allegro的.brd文件、ODB格式以及第三方EDA导入。我的习惯是优先用原始版图文件因为叠层信息、过孔结构、铜箔信息最完整ODB虽然通用性好但偶尔会丢一些细碎的参数。导入之后第一件必做事项是查看叠层。高频设计里叠层参数直接影响仿真的准确性。介质材料的介电常数Dk决定了信号的传播速度损耗角正切Df决定了高频损耗而铜箔粗糙度则高估了高频走线损耗也不可忽略。特别是Dk很多板厂手册上给的是1MHz下的值到了5GHz、10GHz实际Dk可能低不少需要根据厂家提供的频率曲线输入。叠层检查完了还要确认过孔参数。高速差分过孔的反焊盘尺寸、Stub长度都会在频域上表现为谐振点如果叠层里设置得和实际做板不一致后续仿真提取的S参数会在高频段出现偏差。这里我的经验是每次换板厂或改叠层都要重新核对Aurora里的叠层文件别偷懒沿用旧工程。2.2 叠层、材料参数与模型映射这三件套模型映射就是把每个器件的电气行为模型关联到版图上的元件位号上。对于SI仿真来说最常用的是IBIS模型FPGA、DDR、SerDes芯片厂商一般都会提供。如果芯片是自制ASIC可能需要Spice子电路模型。映射时不只是简单选择文件还要检查Model名和Pin名是否与版图一致否则仿真器会报“unresolved reference”。用IBIS模型时特别注意要选择合适的V-T曲线、上升/下降时间版本并确认引脚间的对应关系。比如对DDR仿真地址线和数据线的驱动模型工作条件和负载可能不同需要在模型映射时分别指定。电源管脚的连接类型也要检查VDD、VSS是否定义为电源或地连接这会直接影响后面SPEED2000仿真时电源网络的解算。这一阶段最容易被忽视的是电容电阻这类无源器件。实际项目中去耦电容不能只填容值还要带上ESR和ESL否则高频下谐振特性完全对不上。Aurora里可以指定电容的S参数模型如果手头没有实测模型就要选择库中自带的等效模型并填写寄生参数尽量用厂家给的等效电路模型。2.3 为什么要先跑频域再跑时域我遇到过不少同事直接拿SPEED2000去跑高速信号然后抱怨结果不准。SPEED2000固然能做时域仿真但它需要通道模型也就是S参数。这个S参数从哪里来只有两个来源测量或者电磁仿真。在没有板子的设计阶段唯一可行的路径就是先用PowerSI对PCB走线、过孔做全波提取得到无源通道模型再交给时域仿真器叠加上收发器模型去跑。频域仿真还有一个独有的价值定位问题快。比如你看到S参数在某个频率出现明显下陷可以结合谐振分析功能快速定位到是哪一节走线或哪一组过孔引起的不需要像时域那样反复改变激励观察波形。这就是为什么完整流程里频域总是走在前面的原因。3. 核心环节PowerSI频域提参实操PowerSI是Sigrity里做全波电磁场仿真的主力作用相当于三维场求解器。它能把任意复杂平面、走线、过孔结构转成多端口的S参数或Z参数网络供后续时域仿真或其他系统级仿真使用。3.1 端口设置和仿真频率怎么定PowerSI的操作逻辑是指定哪些网络是信号、哪些是参考通常是GND然后在关键位置放置端口。端口设置有个核心原则端口必须放在参考地附近且端口参考导体必须明确。比如做差分走线提参最常用的是在差分对两端各放一对端口参考层选择最近的GND平面这样提取的差分S参数才互相解耦、没有歧义。频率范围怎么设这里教你一个经验估算方法先把驱动器的上升时间Tr10%-90%找出来最高有效频率约等于0.35/Tr。比如Tr70ps那频域至少要算到5GHz才能比较完整地覆盖方波的高次谐波通常还会向上取两倍余量即10GHz。实际设置PowerSI扫描范围时我一般从DC或者1MHz起扫到10倍基频或更高具体看信号速率12.5Gbps信号会扫到20GHz25Gbps则建议扫到40GHz以上。步长不能过大否则会漏掉谐振峰。建议采用对数扫频或者分段线性在电源网络的几十MHz到几百MHz区间用更细步长因为那个区域通常是PDN谐振的高发区。仿真频率上限设置得越高网格剖分就越细内存和耗时也成倍增长所以要根据信号实际情况做取舍。3.2 从仿真结果看哪些指标别只盯着S21提取完S参数好多新人只爱看S21插入损耗曲线数值越小越高兴但这样容易漏掉问题。我建议至少同时看三样东西。第一是回损S11。通道回损如果有很多起伏的尖峰通常意味着阻抗不连续这些反射能量会影响发射端的眼高尤其对PCIe这类对反射敏感的总线影响很大。第二是差分阻抗Zdiff。差分阻抗不仅是TDR里那个单调的线阻抗更重要的是在其整个有效频带内是否平坦。如果某个频段Zdiff明显偏离目标配合叠层和线宽检查能很快定位是参考层跨分割还是换层过孔间距过小。第三是近端/远端串扰如S41、S31等。对于邻近走线密布的高速板卡串扰往往是抖动增加的主要来源这部分问题在时域里查起来很费劲但在频域耦合度上看得一清二楚。PowerSI还支持整板谐振分析。跑完能看整个电源平面的谐振频率分布比如某个频点上板中心电压高、边缘低这就说明电源平面在这个频点形成了驻波需要改变去耦电容数量和位置来抑制。4. PowerDC与OptimizePI电源画像和去耦优化很多做SI的人对电源完整性不太上心觉得那是电源工程师的事。但高速板卡里信号完整性和电源完整性早已强耦合DDR和SerDes的抖动对PDN噪声异常敏感。所以完整流程里PowerDC做的直流分析和OptimizePI做的去耦优化是必不可少的环节。4.1 PowerDC直流压降分析怎么读图PowerDC主要用来计算直流场景下的IR Drop和电流密度。跑完后会生成整个电源网络的电压分布热力图。判断标准很简单从电源输出到负载芯片电源脚电压降落不能超过产品预算工业界一般控制在电源电压的3%-5%以内。对DDR这类需要精确参考电压的总线这个预算还得更紧。电流密度图很容易被忽略但它实际上暴露的是布线隐患。热图上如果有某个区域颜色接近红色说明那里电流太集中要么铜皮太窄要么过孔数量不足。这种问题如果不在设计阶段修掉板子回来后就是局部发热和长期可靠性隐患。PowerDC跑之前需要在Aurora里把电源网络的电压源、负载电流设置清楚。设置方法这么掌握电压源放在板卡电源入口比如DC-DC输出端或连接器供电pin负载电流则放在芯片电源脚上数值按芯片数据手册的功耗换算。别把负载电流设得太大也不建议只设一个总电流就完事精确到各电源脚分配电流结果才有参考价值。4.2 OptimizePI去耦方案别迷信电容数量去耦电容设计上最常见的问题是“拼数量”电源脚旁边一排排电容看着很踏实但高频性能未必好。OptimizePI的价值就是用算法找出最优的电容数量、容值和位置组合在满足PDN目标阻抗的前提下尽量减少电容用量。目标阻抗怎么定基本公式Ztarget (VDD × 纹波比例) / 瞬态电流。比如1.2V电源允许5%纹波瞬态电流5A那目标阻抗大概是12毫欧。OptimizePI里把这目标填进去选择候选电容库包含容值、ESR、ESL推荐用厂家实际模型软件会给出布局优化方案。另一个和去耦密切相关的概念是自谐振频率。电容在高频段因ESL影响变成感性失去去耦作用。小容值电容自谐振频率高用来滤高频大容值电容自谐振频率低用来压低频段。OptimizePI会自动在邻近芯片处布置小电容、在板边布置大电容模拟的正是不同谐振频率配合覆盖宽频段的效果。4.3 数据传递到SPEED2000之前要做什么PowerDC跑完后除了能出报告还有一个容易被忽略的用处给SPEED2000提供直流工作点。时域仿真开始时电源网络并不是瞬间从0V跳到目标电压而是在一个初始稳定电压上叠加噪声和毛刺。从PowerDC把直流解导入SPEED2000相当于给时域仿真一个“真实的启动状态”避免瞬态初始阶段人为振荡导致波形判断错误。从OptimizePI得到优化后的电容方案同样需要回填。也就是说你要把优化后的电容值、位置更新到版图或仿真工程中让PowerSI和SPEED2000用的都是“修正后”的电源方案这样时域结果才有意义。5. SPEED2000时域仿真实战真正看波形的环节SPEED2000是整个流程里结果最直观的环节。它能展示信号在通道里传输后的眼图、抖动、电源纹波等。对于硬件工程师来说调试时手上最想要的东西其实都可以从这里提前获得。5.1 激励源、探针与观测点的设置进入SPEED2000后先要建立仿真场景。常用的做法是在Aurora里发起SPEED2000仿真把前面PowerSI提取的S参数通道模型以及PowerDC得到的直流工作点都加载进来。激励源设置在驱动器侧。高速信号仿真时最常用的是PRBS码型因为它的频谱特性接近真实数据。码型长度一般用PRBS7到PRBS15对高速SerDes信号建议PRBS15以上因为码间干扰需要在更长随机序列下才能完整暴露。信号幅度、上升时间则按照驱动芯片的实际IBIS模型来软件可以直接调用你之前映射的IBIS模型管脚生成激励。探针放置在接收端管脚处除了电压探针还可以加电流探针。观测点除了接收端建议在通道中间和发射端也放一个。这样一旦眼图差你能分清是发射端出来的信号本身问题、通道损耗问题还是接收端反射问题。5.2 仿真参数该怎么定才靠谱SPEED2000的瞬态仿真参数核心是总时长和步长。总时长要足够覆盖码型重复周期这样眼图才能收敛出稳定的张开度。步长则和信号最高频率成分相关Nyquist采样定理只是底限工程上建议至少取信号最高频率的20到50倍做采样否则波形会失真。例如对10Gbps信号基频5GHz仿真步长至少要0.5ps量级总时长跑到几百纳秒才有几百个UI的眼图。电源纹波分析更麻烦因为要能看到低频段几十kHz到几MHz的动态响应总时长往往需要跑到几十微秒甚至几百微秒这时内存和计算时间都要心里有数建议只选关键区域做局部电源网络仿真整板跑容易撑爆。5.3 波形如何看眼图、抖动、电源纹波眼图是信号质量的最终裁判。观察指标主要是眼高、眼宽、抖动TJ、DJ、RJ和误码率预算。如果眼高接近数据手册最小输入灵敏度眼宽接近UI的0.5倍那就说明通道余量很紧张了要么改善端接要么降低损耗要么重新布线。电源纹波怎么看在SPEED2000里给芯片电源脚加电压探针仿真后看这个脚的电压瞬时波形。合格标准是峰峰值纹波控制在目标范围内比如1.2V电源纹波最好控制在50mV以内大致4%。如果纹波过大就要回到PDN看去耦电容是否充足、布局是否太远、平面谐振是否没压住。SPEED2000还擅长做通道优化措施的量化对比比如改变驱动端的摆率、增加接收端端接电阻、调整AC耦合电容位置每一种方案都跑一遍时域用眼图高度和抖动值来衡量改进幅度。这种“方案先仿真、后投板”的思路能省下大量的改版轮次。6. 高频踩坑实录问题、排查与优化上面说的都是流程顺利时的做法实际工程里没有不掉链子的。这一节我把自己反复踩过、也帮同事排查过的问题集中整理一下希望对大家有实际帮助。6.1 收敛失败和内存爆炸SPEED2000仿真在电源网络复杂或存在非线性模型时容易碰到不收敛。典型的报错是步长不断缩小算不下去。排查思路通常是先把步长放宽到正常值排除纯数值问题再检查模型里是否有极端参数比如ESR过小、激励上升时间过小到0最后检查负载电流变化是否过猛瞬态变化过大容易导致牛顿迭代发散。内存不足是PowerSI和SPEED2000都逃不过的问题。高频提取时如果板子很大端口特别多网格会非常巨大。解决办法有三个缩小仿真区域只提取关键通道比如一条PCIe通道或DDR总线的一Byte lane把全板整频段仿真拆成几个局部频段分段提取必要时打开分布式并行计算利用多台机器降低单机内存压力。6.2 波形毛刺与S参数异常有时SPEED2000跑出的波形上有很多短毛刺看起来像示波器上那种噪声尖峰。这类问题通常是模型设置引起的激励上升时间设得太陡产生了超出通道仿真范围的超高次谐波或者后续提取通道模型时端口附近参考地设置不一致导致虚警。S参数异常的表现主要有两种一种是在某些频点突然出现“尖刺”通常源于端口参考选择不当把两个参考地间的高阻抗路径串入另一种是插入损耗曲线整体偏大或偏小大概率是叠层里介质损耗因子或铜箔粗糙度设置与实际不符。教大家一个验证方法先用同一条重要走线用不同网格密度跑两遍如果结果一致性差多半是网格或端口设置问题如果一致但结果不合理再看叠层材料参数。6.3 模型层面最容易忽略的坑IBIS模型版本问题。现在很多芯片IBIS分了好几个版本比如IBIS 3.2、4.0、6.0等不同版本对差分引脚、V-I曲线定义不完全相同。SPEED2000导入后要检查是否有warning特别是引脚模型缺失时工具会默认用某个通用模型替代很多人没注意这个结果跑出来信号速度和实际芯片完全对不上。无源器件模型同样要留意。电容用理想容值模型时自谐振频率就是无穷大这在时域仿真的GHz频段毫无意义会严重低估电源噪声。建议哪怕没有厂家模型也要尽量使用包含ESR/ESL的等效模型高频率信号设计里这是底线。还有个容易忽略的是参考地网络。如果版图里VSS网络命名不统一比如芯片引脚叫GND、电容引脚叫VSS导致PowerSI提取时参考网络选错S参数就会出现很大的共模分量后期时域问题排查起来非常挠头。Aurora里有网络归类检查功能跑仿真前一定要把所有GND相关网络统一归类。6.4 一点经验总结流程化思维比单点工具更重要这套流程用下来我最大的体会是别把PowerSI、PowerDC、OptimizePI、SPEED2000当孤立的工具用它们在Aurora里是一套完整的链条。你会慢慢建立起一种习惯拿到一个新设计先想清楚要仿什么、用什么频率范围、看什么指标、结果如何验证而不是急着点仿真按钮。另一个很重要的事情是仿真结果的迭代管理。同一个设计可能因为DRC改动、电容调整、线长优化反复跑好几轮。建议在Aurora工程里给每一轮仿真命名标注版本、日期、修改点收紧输出结果的归档否则三个月后回来看根本分不清哪个工程对应哪个版本白白浪费时间。关于进一步扩展的一点想法最后再多说一句。我刚开始用这套流程时几乎把时间都花在按钮操作上后来才明白工具层面的熟练只是第一步真正值钱的是对信号完整性、电源完整性原理的理解和对设计规范的积累。比如知道目标阻抗怎么算、知道自谐振频率和电容布局的关系、知道眼图质量差时要往哪个方向排查这些才是跨项目复用的能力。如果你正在搭仿真流程或者手头有高速板卡要赶可以试着先按文章里的顺序走一遍最简版本只提取一条关键通道的S参数在SPEED2000里把眼图跑出来感受一下整体逻辑。把流程跑通之后再慢慢扩展到整板PDN优化。仿真的价值就是在最短的迭代周期里把设计风险提前暴露出来。希望这套流程能够帮你省下几次改版的钱和时间。
返回列表