Hexo + Butterfly 搭建个人博客随记
Hexo + Butterfly 搭建个人博客随记
本地部署
首先得有一个GitHub账号
这里就不赘述如何注册一个GitHub账号了,如果大家能够科学上网想必能轻松完成。
打开你的repo,new一个名字叫YourName.github.io的repo。这里我演示的名字叫BlogDemo,大家也可以挑自己喜欢的。
注意这里可以下载安装GitHub Desktop,便于不想学git指令的小伙伴管理仓库。此外,需要将HTTPS和SSH对应的网址https://github.com/Loli-Eternally/BlogDemo.github.io.git和地址[email protected]:Loli-Eternally/BlogDemo.github.io.git记录下来,便于后面修改配置进行博客的部署。
下载安装好GitHub Desktop并启动后,cloneBlogDemo,URL地址为上面提到的https://github.com/Loli-Eternally/BlogDemo.github.io.git
这个时候我们的repo是空的,需要在本地将BlogDe ...
高速互连标准与规范
高速互连标准与规范
前言
最近看到很多关于 IEEE、OIF-CEI、802.3dj、800GAUI、CEI-224G 之类的名词,突然想起了以前看计算机网络的痛苦经历。各种标准名词看起来都很熟,但真的放在一起,又很难说清楚它们到底是什么关系。
之所以想整理这部分内容,是因为高速互连标准体系确实太杂了。偶尔去参加个技术论坛,或者听个厂商技术报告,里面全是 IEEE 802.3、OIF-CEI、224G SerDes、XSR、USR、VSR、KR、CR、DR、LR 这些词。内行人都要愣一下,外行就更听不懂了。
我写这篇文章的目的,就是希望把这一块的逻辑关系尽量理顺。以后即便我忘了,回头翻翻这篇文章,也能迅速想起来:OIF 是干什么的,CEI 是什么,IEEE 802.3 又是什么,Reach 等级和 800GBASE-DR4 这些命名到底是什么关系。
简单来说,高速互连标准不是一套孤立的标准,而是一整套从芯片电接口、封装、PCB、连接器、光模块,到以太网系统的分层规范体系。
高速互连体系结构
整个高速互连标准体系,可以先粗略理解成三层:
123456789101112131415161 ...
光电链路训练
光电链路训练
前言
遇到的困境
终于来到了最终关卡,是我这两年来一直想做,但却一直只做了个半吊子的工作——完整光电链路训练。
以前一直在找平台做这件事,有段时间用的是 ADS + VPI 平台,但问题是这个平台对链路训练的支持极差。它只负责计算波形输出,但输出的波形直接交给 Channelsim 中的 Rx 会出问题。
我曾花了很多精力解决这个麻烦,想将 VPI 导回 ADS 的波形重新用 ADS 中的 Rx 去均衡。但这么做不行,因为我这边的 IBIS-AMI 模型属于脉冲自适应型,而非波形自适应。"波形自适应"指的是模型在 AMI_GetWave 流式处理过程中,根据它看到的信号统计去调 CTLE/DFE 系数。
脉冲自适应 / pulse based:CTLE/VGA/FFE/DFE 的系数全部在 AMI_Init 里、根据通道冲激响应算好,AMI_GetWave 只是套用这套固定系数。必须有真实冲激响应,无法用 delta 跳过。
波形自适应型模型:系数是在 AMI_GetWave 里边处理波形边收敛的。这种才可以 delta-Init + 纯 GetWa ...
搭建EOE链路并实现系统仿真
搭建EOE链路并实现系统仿真
前言
前面已经分别对 MZM EOE 仿真和 ADS 中的 Ethernet Designer 做了简单介绍和入门,现在可以将两者融会起来,完成阶段性目标:
EOE链路的引入并完成系统仿真
搭建 EOE 链路
创建项目
新建一个项目 Workspace
为了省事儿,我们可以直接将案例搭建的 lib 直接调过来,这样很多基础组件和公用模块就不用从头开始了。
利用 MZM_behavioural_lib 构建好的模块
项目中可以看到之前 MZM EOE 链路的原理图和模块了。
需要注意的是,你对调用过来的 lib 进行的修改,是会同步到原项目的!也就是说,它不是复制,而是共享读写,修改前最好做个备份,免得把原 lib 给改坏了。
接着,我们需要对项目中引入的 lib 和原理图进行整理,要养成好习惯,将自己的项目整理的井然有序
右键点击项目根文件夹,新建几个 Folder,用来分类 Ethernet lib 和 MZM lib ,并建立一个 bak 文件夹将刚引入的一堆 cell 备份进去
这个时候 bak 文件夹里就是最初引进来的 lib,需 ...
ADS 中的 Ethernet Designer
ADS 中的 Ethernet Designer
—— 快速入门 System Designer for Ethernet
前言
近年来,随着人工智能对算力与带宽需求的持续提升,数据中心内部的互连架构正逐渐从传统中心化交换模式向更高带宽密度、更低延迟的点对点互连模式演进。以 NVLink、NVSwitch 为代表的新型高速互连技术,正在推动 ASIC 芯片之间形成更加紧密的协同计算网络。与此同时,工程领域对于链路信号完整性(SI)的关注也不断提升,人们更加关注眼图、BER、SNR 等关键指标在高速链路中的演化规律,并基于系统级仿真结果对器件与链路结构进行联合优化。
为了进一步提高服务器之间的信息传输效率,业界开始尝试以光互连替代传统铜缆互连,在数据中心层级构建高带宽、低功耗的光通信网络。目前广泛采用的方案通常通过可插拔光模块完成电口到光口的转换,但信号在 ASIC、封装基板与光模块之间的长距离电互连过程中会引入额外损耗与功耗,限制系统整体性能。因此,人们希望实现"光 I/O"架构,使信号从 ASIC 输出后即可直接完成光调制,并通过光纤进行高速信息交互,由此催生了 ...
MZM EOE 仿真
MZM EOE 仿真
今天研究一下 ADS 中的 EOE 链路仿真案例
前言
根据前面的了解,对于一个 EOE 链路而言,最基础的链路构成包含:
电信号源
载波光源
电光调制器
光纤
光电探测器
Tx 和 Rx 就不细说了,里面可能包含 Driver,TIA,VGA 以及各种 DSP 电路,这些都是 EOE 前后的组件。
以前我们在 VPI 中对 EOE 链路进行了仿真计算,但自从 ADS 出来 Photonics Designer Suite 后,可以考虑在 ADS 中对该链路直接计算了。
我们接下来以MZM_EOE_Simulation案例为例,详细分析 ADS 中的 EOE 链路仿真。
仿真器
首先分析该仿真案例的全局情况
包络仿真器具体工作原理和机制已经在前面的博客ADS 中的包络仿真器中介绍过了,这里仅针对当前仿真案例的情况进行描述。首先用一个变量与方程组件来集中管理包络仿真器里的参数,包括信号的波特率 15e9,仿真符号数 10000,环境带宽为 5 倍波特率。同时定义了载波频率 Freq[1] 与载波波长 lambda。仿真时间根据带宽和符号数来确定。
信源
...
离散时间PRBS源
离散时间PRBS源
前言
在进行链路仿真中会经常遇到各种 PRBS7、PRBS13、SSPRQ 等码型。这些码型在仿真中通常用算法来生成,而非直接存储调用。针对 ADS 中的 PRBS 码型生成器 VtLFSR_DT,我们大致了解一下码型的生成原理与设置指标。
信源生成器
VtLFSR_DT 是一个信源生成器组件,全名是 Vt(Voltage source in time domain)、LFSR(Linear Feedback Shift Register)、DT(Discrete Time)。这是一个离散时间数字源,需要输入的主要参数为 Vlow、Vhigh、Rate、Delay、Taps 和 Seed。
Vlow、Vhigh、Rate、Delay 不需要多说,无非就是高低电平,符号率与时延,决定了输出序列的大小、速率和相位。
问题主要集中在 Taps 和 Seed,这俩是啥?
为了彻底搞清楚这俩到底是什么,我们得从一个最基本的数学概念开始讲起,伽罗瓦域
群论与伽罗瓦域
伽罗瓦域的概念源自于群论,想必大家都听说过法国数学家伽罗瓦的故事,在他还只有十几岁的时候,他就发现了 n 次多项 ...
ADS 中的包络仿真器
ADS 中的包络仿真器
仿真器工作原理
仿真器是ENVELOPE,具体原理与 VPI 中保持一致,即慢变振幅近似下的等效基带变换。主要分析载波的时变振幅,因此得名包络仿真器。
包络仿真器的处理对象是时域调制信号,下面概述电路包络仿真过程的基本概念:
输入信号变换:
每个调制信号都可以表示为一个载波由一个包络调制而成,即 A(t)ejf(t)A(t)e^{jf(t)}A(t)ejf(t)。采样包络的幅值和相位用作谐波平衡分析的输入信号。
含时变包络的谐波平衡分析:
在每个时间步都会进行谐波平衡分析,该分析既包含基本的谐波平衡方程,也考虑时变包络的影响。此过程会生成一系列频谱用以表征不同时间步下电路的响应。电路包络通过具有时变系数的傅里叶级数提供电路的完整非稳态解。
这里需要详细说一下背后的原理
什么是谐波分析,谐波分析 = 用傅里叶分析专门研究“谐波”这一类频率成分,如果基波频率是 f0f_0f0,2f02f_02f0 就是二次谐波,3f03f_03f0 就是三次谐波,特别关注这一类整数倍频的方法就叫谐波分析。谐波平衡,就是在谐波分析的基础上,让电路满足 ...
求解器中的预处理器
求解器中的预处理器
Krylov 算法中的预处理器 Preconditioner
前言
Newton-Krylov 迭代法已经能求解绝大多数非线性电路方程组了,但遇到一些刚性电路(特征值量级差异巨大的电路,雅可比矩阵病态),一个器件时间常数纳秒级,一个器件时间常数毫秒级,且带有严重非线性,收敛还是会变得非常困难。
人们为了解决上述情况,提出了预处理器(Preconditioner)这个概念。预处理的本质定义就是
把原问题 Ax=bAx=bAx=b 变成一个更容易被 Krylov 收敛的问题。
数学原理
当求解器拿到一个大型方程组 Ax=bAx=bAx=b 的时候,它通常不会直接开解,而会先对方程组进行预处理
左预处理(常见)
M−1Ax=M−1bM^{-1}Ax=M^{-1}b
M−1Ax=M−1b
右预处理
AM−1y=b,x=M−1yAM^{-1}y=b,\quad x=M^{-1}y
AM−1y=b,x=M−1y
通过上述处理,能够使 M−1AM^{-1}AM−1A 的谱性质更好,从而更容易收敛。预处理之所以能够加速收敛,是因为
Krylov 迭代的收敛速度,近似取决于其 ...
非线性方程组求解器算法
非线性方程组求解器算法
总结一下电路仿真器中的非线性方程组求解器算法,即 Newton-Krylov 方法
算法概述
外层循环:非线性泰勒展开(牛顿法)
动作:面对复杂的非线性方程 F(x)=0F(x)=0F(x)=0,牛顿法确实是在当前点进行一阶泰勒展开。
结果:它丢掉了高阶项,将原本"弯曲"的非线性问题变成了"笔直"的线性方程 J⋅Δx=−F(x)J\cdot \Delta x=-F(x)J⋅Δx=−F(x)
内层计算:线性方程组求解(Krylov 迭代)
动作:现在我们手里有一个巨大的线性方程组。如果电路很大,我们不用"暴力"的高斯消元,而是用 Krylov 子空间迭代(如 GMRES)。
结果:它不存完整的 JJJ 矩阵,而是通过不断的"向量乘法"试探,快速求出 Δx\Delta xΔx
约束导向:弧长法加持(弧长约束)
动作:如果此时电路处于极端非线性区(比如增益压缩的拐点),直接按牛顿法的 Δx\Delta xΔx 跳过去可能会"脱轨" ...









