ADS 中的 Ethernet Designer

—— 快速入门 System Designer for Ethernet

前言

近年来,随着人工智能对算力与带宽需求的持续提升,数据中心内部的互连架构正逐渐从传统中心化交换模式向更高带宽密度、更低延迟的点对点互连模式演进。以 NVLink、NVSwitch 为代表的新型高速互连技术,正在推动 ASIC 芯片之间形成更加紧密的协同计算网络。与此同时,工程领域对于链路信号完整性(SI)的关注也不断提升,人们更加关注眼图、BER、SNR 等关键指标在高速链路中的演化规律,并基于系统级仿真结果对器件与链路结构进行联合优化。

为了进一步提高服务器之间的信息传输效率,业界开始尝试以光互连替代传统铜缆互连,在数据中心层级构建高带宽、低功耗的光通信网络。目前广泛采用的方案通常通过可插拔光模块完成电口到光口的转换,但信号在 ASIC、封装基板与光模块之间的长距离电互连过程中会引入额外损耗与功耗,限制系统整体性能。因此,人们希望实现"光 I/O"架构,使信号从 ASIC 输出后即可直接完成光调制,并通过光纤进行高速信息交互,由此催生了 LPO(Linear-drive Pluggable Optics)、NPO(Near-Packaged Optics)以及 CPO(Co-Packaged Optics)等热门研究方向。

在这一背景下,能够覆盖完整 E-O-E(Electrical–Optical–Electrical)链路的系统级联合仿真工具变得尤为重要。十分荣幸获得 ADS 官方试用机会,并对我个人认为目前在光电联合仿真领域中极具工程价值的工具 —— System Designer for Ethernet 进行了深入学习。

System Designer for Ethernet 是基于 ChannelSim 构建的全链路光电联合仿真平台,能够对完整高速链路进行双向、多通道、时频联合系统仿真。其优势不仅在于实现了 EIC 与 PIC 的跨域协同建模,更在于能够同时对多路高速信号的传播、串扰、均衡与演化过程进行统一监测与分析,可视为当前高速互连与信号完整性领域的重要系统级解决方案之一。

仿真模块

可以认为,System Designer for Ethernet 是 ChannelSim 通道仿真的跨 PIC 增强版。其主要模块包括:

  1. 以太网宿主,Ethernet Host(发射端,必需)
  2. 以太网模组,Ethernet Module(接收端,必需)
  3. 中继器,Repeater(中继端,可选)
  4. 前布局,Pre Layout(子电路原理图,可选)
  5. 后布局,Post Layout(提取的行为模型,例如 S 参数,可选)
  6. 总线设计器,Bus Designer(传输线/过孔模型,需要叠层,可选)
  7. 以太网传输线,Ethernet Bus TLine(传输线模型,需要叠层,可选)
  8. 以太网示波器,Ethernet Probe(示波器,必选)
  9. 光链路,Optical Link(分 VPI 光链路和 ADS 自己的 Photonic Designer 链路,可选)

剩下的都是些求解器或数据相关的配置控件。

单向传输

为了更快上手该工具箱,先不着急对每个模块和控件进行分析。我们可以先从纯电系统入门,了解系统搭建的基础操作。

环境设置与仿真器

创建了一个顶层原理图之后,第一件事就是将 Ethernet Setup 和 Ethernet Simulator 丢上去。

环境与仿真器设置

这里我设置的是 40 Gbps 的 PAM4 信号。BatchSim Setup 是批处理仿真的变量设置,我们先不管。

信号类型与速率设置

仿真器我们先选择 Bit-by-Bit 模式,因为我们先从纯电系统入门,等了解基本操作后再将 EOE 组件放入。那个时候再选择 EOE 选项。

仿真器设置

S 参数的导入

其实这里不仅可以直接导入 S 参数,还能导入一个 schematic。我为了方便快速入门,就先从 S 参数开始。

这里导入 S 参数选择后布局 Post Layout。

后布局引入S参数

选择 Data File:

后布局选项1 后布局设置2

目前并没有现成可用的 Touchstone 格式的 S 参数,因此我们现做一个。

新建一个 cell,在 schematic 中仿一个传输线的 S 参数,设置如下:

S参数仿真

仿真得到 S 参数(S21)结果为:

S参数结果

由于这里添加了 SPOutput 控件,可以将仿真得到的 S 参数直接输出在当前 data 文件夹。

回到前布局模块中设置好 S 参数,点击下一步:

S参数设置

接下来到最关键的地方:参考位号与线路连接设置。

设置框长下面这个样子(其余模块也有类似的设置,原理都一样,搞明白这个就学会了八成):

参考位号与路径设置

为了将这一块儿讲明白,我们从最基本的电路仿真逻辑开始。

  1. 电学仿真中,有一个基本概念:参考方向。每个器件都有一个自己的参考方向,正极 “+” 与负极 “-”。在这个参考方向下,如果其中电流方向与参考方向相同(从 + 到 -),则电流数值为正,否则为负。
  2. 此外,还有一个基本概念:节点。器件与器件之间用线连接起来,如果你需要测两个器件之间的电势,就得从中间引出一条测试线。也就是说,多个器件的引线汇聚于一个线头,这个线头就是节点。
  3. 将上述两个概念,从电路层级迁移到系统层级,就是这里提到的参考位号和线路连接方向。其中参考位号对应参考节点,线路连接方向对应电流/信号方向,或者说是 Host 到 Module 方向。
  4. 在系统级层面上,Host 类比正电荷,Module 类比负电荷。信号从 Host 发出,再由 Module 收集,可以看作电场从正电荷发射,再汇集于负电荷,电场方向也就是信号前向 Forward(FWD)方向。因此,若信号是从 Module 往 Host 方向传输的,则定义方向为后向 Backward(BWD)。

这里结合我们目前的单向传输情景,需要为 Post Layout 模块分配参考位号(Ref Des)和通道类型(Lane Type)。考虑到我们用的 s4p 通道模型,单向左入右出的差分信号,且引脚排序左奇右偶。因此 TermG1 和 TermG3 对应左侧 U1 节点,TermG2 和 TermG4 对应右侧 U100 节点。TermG1 和 TermG3 属于一对 p n 差分线,TermG2 和 TermG4 属于一对 p n 差分线,方向都是 Host 到 Module 的前向 FWD。据此可填写上面的设置框信息:

设置结果

点击 Finish,后布局模块就设置好了(别的选项非必要暂时不讲)。

发射端模块

由于是单向传输情景,发射端模块就是 Ethernet Host 模块:

发射端模块

此时双击 Ethernet Host,就能发现这里能选定一个下拉菜单了(没有先放通道模块,这里是无法选定的!):

选定通道模块

点击 next,我们就要进行通道设置了。这里需要设置三个地方:

Host通道设置

这里设置位号 Ref Des 是为告诉 Host 它接的是哪个节点。由于前面设置后布局通道时,引入了 U1 和 U100 两个节点:

引入的两个节点

因此设置 Host 时,就要告诉它自己引出的节点名字是这两个中的哪一个。所以你不先在通道中写好节点名称,这里是无法设置的!考虑到 Host 作为终端,在系统层面上只能引出一个节点,因此给 U1 设置 Y,U100 会自动变成 N,反之亦然。

另外两个地方是设置是否计算前向仿真,和发射端 AMI 模型的。需要注意的是,只有在前面设置 Post Layout 时,选了那些 FWD_P/N 的,这里才能拉下来设置 Y,因此这里你是没法计算 BWD 仿真的,只能计算 FWD!至于发射端 AMI 模型,随便找个其它的案例弄俩 AMI 模型拷到 data 文件夹里,注意要将 .ami、.ibs 和 .dll 三个文件都拷贝过来!

前向与后向仿真设置

Model Setup 选项卡先不管,直接 Finish 完成 Host 的设置。

接收端模块

接收端模块用的 Ethernet Module:

接收端模块

这里的设置与 Host 端大同小异,就只是换了个节点和方向:

Module通道设置

示波器模块

这是最后一步,添加你想观测的数据节点和数据类型。模块用的 Ethernet Probe:

示波器模块

直接来到 Select Signal 将所有节点实例添加进去:

添加所有节点实例

然后来到 Select Measurement 将要测的数据类型添加进去(这里我只添加了眼图测量):

添加眼图测量

然后 Finish,完成所有设置。

连接模块

Ctrl+w 开始连线,将 Host,Post Layout 和 Module 连起来:

连线后的总原理图

每连一次线,都会跳出来一个 Connect HSD Smart Components 设置框。这里我们直接 Connect All 就行了,因为我们在设置 Host 和 Post Layout 的时候,已经通过 Signal ID(FWD_P/N)将信号都对接好了:

Connect HSD

由于我们是单向仿真,U1 的 BWD 部分引脚是未考虑的,不用管。

仿真结果

这里我们按照信号从 Host 出发,经过 U1,U100,最后从 Module 的 Rx 输出的顺序画眼图:

单向传输眼图演化

双向传输

S 参数导入

双向传输,需要 snp 文件包含一对输入差分,一对输出差分,一对反向输入差分,一对反向输出差分。所以一共需要四个单端输入,四个单端输出,就是一个 s8p 文件。

为了方便,我们直接复制前面单向传输的传输线模型:

s8p参数提取

这样就可以直接导出一个 s8p 的 touchstone 文件。

通道设置

接着修改通道,将 S 参数替换,并修改参考位号与通道类型:

更新后布局参考位号与通道类型

值得注意的是,更换 S 参数就需要重新输入这些设置,如果引脚太多就会很麻烦。因此,第一次设置好了可以将文件存下来,下次切换回 S 参数的时候能直接加载,非常便捷。

Host 与 Module 设置

回到 Host 设置,此时 BWD 选框就能下拉了,将这里改成 Y 即可:

Host里设置BWD为Y

同样的操作,将 Module 中的 BWD 也设置为 Y。

Ethernet Probe

可以看到 Ethernet Probe 这里已经有了所有正向反向的数据信息了,全部勾选上:

双向节点数据与类型

模块连接

确定双向仿真后,连接的所有引脚就都能选上了:

双向连接

仿真结果

双向传输眼图演化

第一行的是正向传输眼图演化,Host 到 Module 的情况。第二行的是反向传输眼图演化,Module 到 Host 的情况。可以看到,正向传输与前面单向仿真的结果保持一致,且由于 Host 和 Module 都用的同一组 Tx/Rx 模型,S 参数对称,因此正向反向结果一致。

总结

这次仅做了一个最小的纯电互连模型,了解了 System Designer for Ethernet 的大致操作,后面就是在这个基础上添砖加瓦。例如用一个 Pre Layout,纯电子原理图替代 Post Layout,甚至更进一步的,添加 Photonic Designer 光电子原理图,提高整个系统的层次与复杂度。