高速串行通道仿真
高速串行通道的理论基础
通道仿真是什么
老师,通道仿真是仿真什么的?
简单地说,就是将IC封装→PCB布线→连接器→电缆→连接器→PCB→IC这样的发送-接收间的整个传输路径用S参数连接,预测包含均衡器的眼图。
要把整个传输路径放在一起仿真吗? 不是分开看各个部分吗?
是的。例如PCIe 6.0是64GT/s的PAM4信号,奈奎斯特频率是16GHz。通道的插入损失可能超过30dB。要用CTLE+DFE来补偿这些损失,没有仿真根本无法实现这个设计。各部分的S参数要"级联连接",包括发送均衡器→通道→接收均衡器的完整系统要一致求解。
30dB是说信号减弱到原来的1/30左右吧。还能从这么弱的信号恢复信息?
准确来说是电压幅度比 $10^{-30/20} \approx 1/31.6$。奈奎斯特频率处的信号几乎消失了,通过均衡器来恢复。这就是"包含均衡器的设计验证"通道仿真必不可少的原因。
通道模型的构成与级联连接
把整个传输路径"级联连接"具体怎么做呢?
把各部分建模成2端口网络(S参数),按顺序连接。例如服务器背板是这样的:
| 组件 | 典型插入损失 @16GHz | S参数来源 |
|---|---|---|
| Tx IC封装 | 2~4 dB | 半导体供应商提供(IBIS-AMI) |
| PCB过孔+布线(发送侧) | 3~8 dB | 3D EM提取(HFSS等) |
| 背板连接器 | 1~3 dB | 连接器供应商提供或实测 |
| 背板布线 | 8~15 dB | 2D EM提取+传输线模型 |
| PCB过孔+布线(接收侧) | 3~8 dB | 3D EM提取 |
| Rx IC封装 | 2~4 dB | 半导体供应商提供(IBIS-AMI) |
各个部分用不同工具提取,最后全部连接起来,怎么连呢? 直接相乘吗?
S参数直接相乘不行。需要转换成T参数(传输矩阵)才能级联。对于2端口的情况:
S参数转换为T参数的公式是:
转换为T参数后相乘,然后再转回S参数,对吗?
对,三个步骤。ADS Sigrity这样的工具会自动完成这些计算。但要注意——各S参数的频率点不一致时需要插值,这个插值的精度会影响结果。特别是高频端的外推要特别小心。
S参数的数学原理
通道仿真中用什么S参数? S11、S21等这么多,要看哪个?
通道仿真中最重要的是这三个:
- $S_{21}$(插入损失):信号通过多少。频率越高衰减越大。直接表现通道的"难度"
- $S_{11}$(回波损耗):输入端反射多少。阻抗失配的指标。$|S_{11}| < -15\text{dB}$ 为目标
- $S_{\text{NEXT/FEXT}}$(串扰):相邻通道干扰。用多端口S参数评估
整个通道的传递函数怎么表示?
级联后的完整通道用一个传递函数 $H_{\text{ch}}(f)$ 表示:
包括均衡器的端到端传递函数是:
DFE是非线性处理,频域表达不了,要在时间域单独计算。
CTLE·DFE均衡器的原理
CTLE和DFE都叫"均衡器",区别是什么?
根本区别在于,CTLE是线性滤波,DFE是非线性反馈。
CTLE(连续时间线性均衡器)是一个高通滤波器,把通道衰减的高频提起来。传递函数形式是:
$f_z$ 是零频率(提升开始点),$f_p$ 是极点频率(提升上限)。零和极点之间的频带里高频增益增大。实践中常用多级CTLE,加10~15dB的提升。
提升高频的话,噪声也会放大吧?
对,这正是CTLE的弱点——噪声放大。所以才有DFE(判决反馈均衡器)。DFE用已经判决过的比特来抵消后续符号间干扰(ISI):
$\hat{d}[n-k]$ 是过去判决的比特值,$c_k$ 是DFE点击系数。重要的是,DFE不放大噪声——用的是判决结果(±1),能精确抵消信号成分。PCIe 6.0的DFE点击数能到10~24个。
过去的判决错了怎么办? 错误会传播吧?
提得好。这叫"错误传播"问题,是DFE的本质弱点。判决出错会导致后续ISI抵消也错,可能引发一连串错误。实际的SerDes用FEC(前向纠错码)来覆盖DFE的错误传播。通道仿真中正确建模这种错误传播对BER预测精度影响很大。
实践中还用Tx-FFE(前馈均衡器)。这是在发送端"预畸变"信号的方式,实现为FIR滤波器:
用前缀点击($a_{-1}$等)和后缀点击($a_1, a_2$等)提前抵消ISI。PCIe 5.0规定3点击,PCIe 6.0最多10点击的Tx-FFE。
统计眼图
"统计眼图"经常听到,和普通眼图区别是什么?
普通眼图是把实际比特流流过来,波形叠加画出来。这叫"逐比特仿真",直观但很慢。要验证$10^{-15}$的BER需要$10^{17}$个以上的比特,64GT/s下要花40分钟以上。
统计眼图分析是从脉冲响应计算出概率分布,直接求BER等高线的方法。
从脉冲响应怎么计算BER呢?
先求出脉冲响应,在采样时刻提取各点值。主光标 $p_0$ 和前后的值 $p_{-k}$(前ISI)、$p_k$(后ISI)。
各ISI项由随机比特(±1)加权,所以全ISI的总和是离散概率分布。N个ISI项的NRZ信号有$2^N$种组合。这个概率分布叠加上高斯噪声分布,就能直接得到各电压、各时刻的BER:
$P_i$ 是ISI组合 $i$ 的出现概率,$V_i(t)$ 是那个组合的接收电压,$\sigma_n$ 是噪声标准差。Q函数是正态分布的尾概率。计算只要几秒,就能评估$10^{-15}$级别的超低BER。
逐比特要40分钟,统计眼图几秒。差太大了! 那是不是只用统计眼图就行了?
统计眼图在线性通道+线性均衡器的范围内非常准确。但DFE的错误传播和PAM4的非线性效应是近似。实践中统计眼图做大量设计空间搜索,最后用逐比特精密验证几个最有希望的候选,这是标准做法。
COM(通道工作裕度)
COM是什么? 听说"COM大于3dB就合格"……
COM是IEEE 802.3定义的统一通道质量指标。均衡后的眼开口用噪声、抖动、串扰规范化,单位dB:
$A_{\text{signal}}$ 是DFE+CTLE均衡后眼开口的一半,$A_{\text{noise}}$ 是全部噪声、抖动、残留ISI、串扰的有效值。COM > 3dB是典型合格标准,意味着充分裕度达到目标BER(如$10^{-15}$)。
COM具体要输入什么参数?
COM计算的输入参数很多。主要的这些:
| 分类 | 参数 | 典型值(100GBASE-KR4) |
|---|---|---|
| 通道 | Thru S-parameter(.s4p) | 频率范围:DC~奈奎斯特×2 |
| 串扰 | FEXT/NEXT S-parameter | 所有干扰通道 |
| Tx-FFE | 点击数、点击约束 | 3点击,$c_{-1}+c_0+c_1 = 1$ |
| CTLE | DC增益、峰值频率 | 0~12 dB提升 |
| DFE | 点击数、点击约束 | 5~14点击 |
| 噪声 | $\sigma_{\text{Tx}}, \sigma_{\text{Rx}}$ | 规范书规定(mV rms) |
| 抖动 | DJ, RJ | DJ: 0.01UI, RJ: 0.01UI rms |
参数这么多……手算根本不可能。
所以需要自动化。IEEE 802.3委员会公开了官方MATLAB脚本(COM计算代码),成了业界标准。各供应商工具也都实现了这个算法。关键是,COM计算会自动优化Tx-FFE和CTLE参数,找最好的COM值。
高速串行通道的数值计算方法
脉冲响应的计算
统计眼图的出发点是脉冲响应,怎么计算?
三步骤:
- 频域构造传递函数:$H(f) = H_{\text{Tx-FFE}}(f) \cdot S_{21,\text{ch}}(f) \cdot H_{\text{CTLE}}(f)$
- IFFT(逆快速傅里叶变换)求脉冲响应 $h(t)$
- 把脉冲响应按UI(单位区间)宽度卷积积分得到数字脉冲响应 $p(t)$
或者直接用IFFT求阶跃响应 $s(t)$,然后 $p(t) = s(t) - s(t - T_{\text{UI}})$。
IFFT的时候要注意什么?
三点要注意:
- 因果性:IFFT后如果$t < 0$有响应,说明因果性违反。S参数不满足被动性时常见
- 频率分辨率:$\Delta f$ 太粗会有振铃。$\Delta f \leq 1/(4 \cdot N_{\text{UI}} \cdot T_{\text{UI}})$ 为目标
- DC分量:Touchstone文件的最低频率通常不是0Hz。DC外推方法(线性、常数)会影响结果
ISI计算与光标优化
脉冲响应出来后,ISI怎么计算?
把脉冲响应 $p(t)$ 按UI间隔采样,以光标位置为基准提取ISI项:
- 主光标 $h_0$:最大值点。这是"信号分量"
- 前缀 $h_{-1}, h_{-2}, \ldots$:主光标前的ISI。Tx-FFE补偿
- 后缀 $h_1, h_2, \ldots$:主光标后的ISI。DFE补偿
DFE补偿后残留ISI:
超过DFE点击数的远后缀ISI补不了。通道脉冲响应长(反射多)的话,即使增加DFE点击数也有极限。
IBIS-AMI模型的机制
IBIS-AMI模型在通道仿真中什么角色?
IBIS-AMI(算法建模接口)是半导体供应商在不公开IP的前提下,向客户提供SerDes算法的业界标准。两部分:
- IBIS模型:I/O缓冲的模拟电气特性(V-I曲线、C-V曲线)。SPICE模型的替代
- AMI模型:均衡算法作为DLL/SO(共享库)提供。黑箱
AMI模型有两种回调函数是吗?
学得不错。AMI模型有三个API函数:
- AMI_Init:初始化。参数设置和脉冲响应的线性处理(CTLE相当)
- AMI_GetWave:逐比特处理。时间域波形输入→均衡后波形输出(DFE、CDR等非线性处理)
- AMI_Close:终止处理
统计眼图只调AMI_Init。逐比特也调AMI_GetWave。AMI模型不支持AMI_GetWave的话,逐比特仿真就不行。
时间域 vs 统计分析
时间域仿真和统计眼图怎么选?
| 项目 | 统计眼图 | 逐比特(时间域) |
|---|---|---|
| 计算速度 | 秒~分 | 分~小时 |
| BER精度 | 可直接计算到$10^{-18}$ | 取决于比特数 |
| DFE建模精度 | 近似(不含错误传播) | 正确(含错误传播) |
| 非线性效应 | 有限 | 完全可建模 |
| PAM4支持 | 可以但精度需注意 | 准确 |
| 适用场景 | 设计空间搜索、筛选 | 最终验证、相关性确认 |
就是说统计眼图"筛选候选",逐比特"最终确认"?
正是。实践中统计眼图搜索数百~数千个通道配置,筛选出合格候选,最后只用逐比特精密验证几个案例。这个"漏斗形"工作流是业界标准。
IBIS-AMI模型的真心话——半导体供应商的本音
IBIS-AMI模型对半导体供应商是"必要之恶"。既保护设计IP又给客户仿真环境,但AMI模型的bug极难调试——DLL是黑箱,输出错了也看不到内部。用户问"御社的AMI模型为什么10dB通道眼图不开"时,供应商常回答"用我们参考通道再现试试"。实务工程师常用多厂商的AMI模型组合,问题发生时"到底是谁的模型有问题"的分离是最大课题。
高速串行通道的实际应用
分析工作流程
通道仿真的实际步骤教我一下。最开始怎么做?
标准工作流程是这样的:
- 收集通道模型:各部分Touchstone文件(.s2p/.s4p)。从IC供应商→封装设计者→PCB设计者→连接器供应商获取
- S参数质量检查:验证被动性、因果性、相反性。有问题则用修复工具修正
- 级联连接:读入通道仿真器,设置端口映射
- IBIS-AMI模型设置:读入Tx/Rx AMI模型,设置均衡参数
- 统计眼图分析:查看眼图和BER等高线。计算COM值
- 参数扫描:用蒙特卡洛扫描工艺偏差、温度、电压变化
- 最终验证:在最坏情形下进行逐比特仿真
S参数质量检查
S参数"质量检查"具体检什么?
通道仿真的结果完全依赖于输入S参数的品质。垃圾进垃圾出。要检查四项:
| 检查项 | 物理意义 | 判定标准 | 违反时影响 |
|---|---|---|---|
| 被动性 | 网络不产生能量 | 全特征值 $\leq 1$ | 仿真发散、非物理增益 |
| 因果性 | 输出不早于输入 | 群延迟全频率都为正 | IFFT时振铃、非因果响应 |
| 相反性 | $S_{ij} = S_{ji}$(被动元件) | $|S_{12} - S_{21}| < -40\text{dB}$ | 级联连接时端口失配 |
| DC连续性 | DC损失物理合理 | $S_{21}(0) \approx 0\text{dB}$(低损) | 脉冲响应DC偏移 |
违反了怎么办? 重新测量?
先试自动修复。Keysight ADS的"S-parameter Checker"或Ansys Circuit Designer的"Passivity Enforcement"功能可试。修复算法有Hammerstein-Wiener法、端口特征值裁剪法等。但大幅修复(> -0.01dB)说明原始数据有问题,应重新做EM仿真或实测。
均衡器参数的优化
Tx-FFE点击系数或CTLE提升值怎么决定?
实践的优化通常三阶段:
- 粗搜索(Grid Search):Tx-FFE全组合 × CTLE提升(0~15dB,1dB步长)总扫。各配置算COM或眼开口
- 精搜索:粗搜索最优解周围细扫
- 自适应优化:用实芯片的算法(LMS自适应等)收敛DFE点击
COM计算自动做这些,报"最优COM值"。但实芯片均衡器可能参数空间受限,所以要正确反映芯片规范约束很重要。
串扰的处理
串扰在通道仿真里怎么处理? 邻通道全影响吧?
串扰有两种:
- NEXT(近端串扰):返回发送端。全双工通信时有问题
- FEXT(远端串扰):到达接收端。直接减少通道裕度
多通道仿真时,受害通道周围所有干扰通道的S参数都要。用16端口以上大型Touchstone文件(.s16p等)
干扰通道的比特模式怎么设? 全组合是不可能吧?
统计眼图通常用"功率加算"近似。各干扰通道的串扰功率二乘加,当等效噪声处理。COM计算也用这个方法。要更精确的话,用逐比特给所有干扰通道流随机比特,但计算时间倍增。
高速串行通道的软件对比
主要工具对比
通道仿真用什么主要工具?
| 工具 | 供应商 | 优势 | IBIS-AMI支持 |
|---|---|---|---|
| Keysight ADS (Channel Simulator) | Keysight Technologies | 统计眼图·IBIS-AMI完整流程·COM自动计算 | 完整 |
| Cadence Sigrity SystemSI | Cadence Design Systems | Allegro PCB联动·EDA流程集成·大规模通道 | 完整 |
| Ansys SIwave + Twin Builder | Ansys Inc. | HFSS联动·3D EM-电路联合仿真 | 完整 |
| Synopsys HSPICE + VCS | Synopsys | SPICE精度·SerDes IP直接联动 | 完整 |
| Zuken SI Verify | Zuken | CR-8000联动·日本企业专属支持 | 支持 |
ADS和Sigrity是2大工具吧? 选哪个好?
用Cadence Allegro做PCB设计的话Sigrity无缝连接。多种通道的独立SI团队用ADS的灵活性更好。Ansys是从EM提取→电路→算法一体化的强项,HFSS→SIwave→Twin Builder的联动是卖点。
开源和免费工具
学生或个人用的免费工具有吗? 商用工具太贵了。
有几个:
- IEEE 802.3 COM MATLAB脚本:IEEE官方COM计算代码。需要MATLAB但业界标准实现
- skrf(Python):S参数读写、操作、级联的开源库。统计眼图需自己实现
- PyBERT:Python开源通道仿真器。不支持IBIS-AMI但基础统计眼图可用
- OpenEMS:开源EM求解器。S参数提取可以,通道仿真功能没有
Keysight ADS vs Cadence Sigrity——二大工具的定位差异
通道仿真的两大巨头Keysight ADS和Cadence Sigrity。ADS的IBIS-AMI支持·统计眼图·COM计算·AMI模型创建工具(SerDes Toolbox)一体化,提供串行链接设计完整流程。Sigrity的优势是PCB布局直接提取S参数和仿真联动的EDA流程,Cadence工具链(Allegro/OrCAD)用户压倒性占优。Ansys SIwave + Twin Builder近年加强IBIS-AMI支持,三方竞争在继续。
高速串行通道的先进研究
PAM4与通道需求的加剧
PAM4时代通道仿真怎么变了?
PAM4是4值信号,相比NRZ(PAM2)眼开口减少约1/3。同等通道损失下SNR恶化约9.5dB。PCIe 5.0(NRZ 32GT/s)→PCIe 6.0(PAM4 64GT/s)代际更新中,通道仿真的重要性飞跃提高了。
9.5dB的不利——相当严峻呢。怎么补?
三个方向的组合:
- 均衡高度化:DFE点击增加(14→24点击),Tx-FFE增加(3→10点击)
- FEC(前向纠错):PAM4世代必须。RS-FEC把Raw BER $10^{-4}$ 改善到$10^{-15}$
- 低损通道:低介电PCB材料(Megtron6→8),短布线,低损连接器
通道仿真包括FEC后的BER来评估裕度。
机器学习通道优化
最近通道仿真也用AI、机器学习了是吧……
两个方向研究中:
- 代理模型:从通道设计参数(布线宽度、间隔、过孔形状、存根长等)直接预测COM值的神经网络。一次COM计算需数分钟,推理毫秒级。可秒速评估万级布局变异
- 均衡自适应优化:强化学习让CTLE/DFE参数实时适应实际通道。特别是数据中心链接培训加速期待高
联合仿真——电磁场与电路的耦合
S参数只不够的场景有吗?
有。特别是这些情况需要3D电磁场和电路仿真耦合:
- 非线性通道效应:电源网络(PDN)的SSN(同步开关噪声)对SerDes电源影响
- EMI/辐射评估:高速信号泄漏电磁波是否满足EMC规范
- 芯片-封装-主板统一分析:IC内布线寄生到PCB连接器一贯分析
Ansys HFSS→SIwave→Twin Builder、Cadence Clarity→Sigrity→Virtuoso等厂商提供耦合流程。
高速串行通道的故障排除
眼图不开
仿真的眼图完全打不开。COM也是负数……
慌张别着急,按以下顺序查:
| 检查项 | 常见原因 | 对策 |
|---|---|---|
| S参数被动性 | EM提取网格不足·端口设置错 | 被动性强制修复 or 重新提取 |
| 频率范围 | 没覆盖奈奎斯特×2以上 | 扩大EM分析频率范围 |
| 均衡器设定 | CTLE/DFE无效·点击不足 | 启用均衡器·增加点击 |
| 串扰 | 异常大的串扰包含 | 确认端口映射·特定干扰源 |
| 阻抗失配 | 连接器·过孔处大反射 | TDR确认·过孔设计检视 |
一番多的原因何?
实务中最多的是S参数品质问题。其次是端口映射错误。差动对P/N反接,或多端口文件中受害-干扰通道号搞反。地味但"数据入口先可疑"是铁则。
S参数的质量问题
S参数被动性违反发生什么? 具体症状教下。
被动性违反时:
- 时间域仿真波形发散(振幅指数增大)
- 统计眼图眼开口非物理大(产生增益)
- 因果性违反时脉冲响应$t < 0$有分量(预测未来——物理不可能)
修复工具Keysight ADS的"S-Parameter Passivity Check"或Ansys Circuit的"Enforcement"。skrf(Python)也能被动性检查。
IBIS-AMI模型不匹配
IBIS-AMI模型也问题很多?
常见问题挙:
| 现象 | 原因 | 对策 |
|---|---|---|
| AMI模型加载不了 | 32bit/64bit不一致·OS非对应 | 向厂商要平台对应版 |
| Init结果vs GetWave结果差很大 | Init只提供线性近似 | 优先用逐比特结果 |
| DFE点击发散 | AMI模型自适应bug | 外部DFE设定覆盖·报告厂商 |
| 不同模拟器结果不合 | AMI参数解释差异 | 对比IEEE IBIS-AMI规范 |
厂商的AMI模型本当?
。珍。特初期版要注意。対策、(1)(理論値損失的)验证、(2)複数的結果比较、(3)的·修正履歴確認。「AMI模型、验证自分的責任」現場常識。
价值
详细
错误