常规的信号完整性仿真,只会包含传统的基于IBIS的芯片行为级模型,但高速串行总线在使用过程中,经常会由于传输信道或链路过长以及信号频率较高而造成信号衰减过大,接收端无法正确判别信号,因此,这类SerDes芯片都需要集成均衡或者加重等信号处理技术,AMI(Algorithmic Modeling Interface)模式是IBIS协会指定的解决此类均衡算法问题的专用模型,通俗讲,就是一堆数学公式,用到的功能比如预加重、去加重、前馈均衡、判决反馈均衡、时间线性均衡、时钟恢复等等。
AMI模型可以包含两种信号响应及处理的基本模式:
1. Impulse response (Init) only;
2. Waveform (Getwave) only;
其实还包括两者兼备的Dual模式,但是,实际产品设计中,很少会出现Dual的情况,因此不做讨论,这两种模式,代表了IBIS-AMI支持两种基本的仿真流:
1. 具有线性时不变(LTI)均衡算法模型的统计仿真流,简称为统计(statistical)模式;
2. 具有非线性或时变(NLTI)均衡特性的时域流,简称为逐比特(bit by bit)模式。
对于统计模拟处理,只使用下图中步骤1~3所示的功能块,模拟通道脉冲响应在步骤1中生成,并传递给Tx AMI_Init()和Rx AMI_Init()函数:
1. 如果函数的Init_Returns_Impulse设置为true,调用对脉冲响应应用信号处理并输出修改后的响应,这些处理函数在图中标注为hTEI(t)和hREI(t);
2. 如果函数的Init_Returns_Impulse设置为false,调用将不加修改地传递输入响应,Tx和Rx端均如是;
最后,EDA工具使用其标准统计模拟过程处理来自Rx AMI_Init()调用的过滤输出,整个过程是基于单次脉冲响应的算法处理,因此,也就不会产生时域波形。
使用AMI_Init()和AMI_GetWave()函数的各种组合,时域处理的模型交互场景将比统计模式更加丰富。
与统计模拟参考流一样,首先生成模拟通道响应,该响应可能与一定数量的串扰干扰组合成一个脉冲矩阵,并传递给Tx AMI_Init()函数。参考图示,均衡化可以在AMI_Init()或AMI_GetWave()调用中应用,而在AMI_GetWave()中应用滤波是首选,因为它可以支持NLTV算法。 在AMI_Init()函数执行后,EDA工具在步骤4和5中将激励波形应用于Tx AMI_GetWave()函数:
1. 如果Tx GetWave_Exists为false,则比特流b(t)将不变地传递到步骤6,在步骤6中,它可以与AMI_Init()调用中执行的过滤进行卷积;
2. 如果Tx GetWave_Exists为true,则均衡化在Tx AMI_GetWave()函数中应用,此时,从Tx AMI_Init()调用的hTEI(t)过滤将不会被使用,因此均衡化不会重复计算;
最后,如果Rx GetWave_Exists为true,则在步骤7中应用Rx均衡,再将模拟波形输出到EDA平台进行额外处理和查看。
因此,所有的信号流程均是在以上四种函数的true或false的选择下进行流通工作,因为可供选择的组合方式太多,如下图所示,这些选择乍一看使人困惑不解,但是,只要理解了AMI_Init()和AMI_GetWave()函数的含义,并且知道两者必有其一为true时,这些有限的选择项还是可以进行区分的,其次,实际的IBIS AMI模型中,也少有能够四个函数全部支持的情况,因此,选择将会进一步减少。
推荐的优选原则是:
1. 如果Tx和Rx端均支持Init_Returns_Impulse为true时,建议使用统计模式,因为其能够看到更低误码率的眼图分析结果;
2. 如果Tx和Rx仅其中一端的支持Init_Returns_Impulse为true时,建议使用时域处理,此时在AMI_GetWave()中应用滤波是首选。
参考文献:
1. Simulating High-Speed Serial Channels with IBIS-AMI Models, keysight
2. Understanding IBIS-AMI Simulations, DesignCon 2015.