背景
在HSPICE SI仿真中,经常会遇到需要将多种激励码型合并级联起来的需求。例如在DDR接口中,希望将:PRBS7, Walk0, Walk1, Crosstalk, SSN等几种码型级联,共同激励通道,找到实际可能发生的worst pattern case。
实现方案
HSPICE中使用两种有源元件可以构造以上pattern:PAT和LFSR。其中PAT与PAT之间有原生语法支持直接级联,难点在于PAT和LFSR之间的级联,需要用到VCR(Voltage Control Resistor)元件来实现。
PAT与PAT级联
使用网状结构Pattern Source元件即可,语法如下:
Vxxx n+ n- PAT [(] vhi vlo td tr tf tsample PatName1 PatName2 ... [RB=val] [R=repeat] [)]
PatNameN: The name of the pattern defined by one or more .PAT commands
可以用.PAT预先定义好多种pattern,例如:
.PAT walk0_dq0 = b1111 b0111 b1111 b1111
.PAT walk0_dq1 = b1111 b1011 b1111 b1111
.PAT xtalk_dq0 = b0101 b1010 b1010 b1010
.PAT xtalk_dq1 = b1010 b0101 b1010 b1010
.PAT long1 = b1111 b1111
.PAT ssn_dq0 = b1111 b0000 b1111 b0000
然后直接包含在一个Pattern Source当中:
VDAT_DQ0 DQIN0 0 PAT (vhi vlo td tr tf ui walk0_dq0 xtalk_dq0 ssn_dq0 long1)
PAT与LFSR级联
使用一个控制信号控制两个VCR,等于0或高阻(如100Meg),并将两个源相加,即可得到期望输出,原理图如下图所示:
Gxxx n+ n- VCR PWL(1) in+ in- x1,y1 x2,y2, ... ,x100,y100
- n+/n-: Positive or negtive node of the controlled element
即上图中VCR的两端,这里+/-代表方向 - in+/in-: Positive or negtive controlling nodes. Specify one pair for each dimension
即上图中control信号的正负端 - x1,...,x100: Controlling voltage across the in+ and in- nodes. Specify x values in increasing or decreasing order
即指明当control信号为x1,...,x100时 - y1,...,y100: Corresponding element of x
即当control signal的值为x时,相应的y值(电阻值)
举例:
G001 source1 output VCR PWL(1) control 0 0V,100Meg 1V, 0
G002 source2 output VCR PWL(1) control 0 0V,0 1V, 100Meg
VCTRL control 0
其中source1为LFSR,source2为PAT,control为低频控制方波,仿真结果如下:
注意点1:tdelay
PAT和LFSR的语法中,tdelay的含义不同,他们之间会存在tr/2的时延,在某些应用下需要手动补偿掉。例如:DDR接口中,DQS采用PAT实现,DQ包含了PAT+LFSR,此时如果不将PAT和LFSR的tdelay时延补偿掉,则会在DQ眼图中间会有一股线破坏掉整个眼图。因此建议手动补偿掉:
.param tdelay_pat = td
.param tdelay_lfsr = tdelay_pat + tr/2
注意点2:开关切换状态
在VCR的定义中,只定义了控制信号control在0V和1V时的行阻值,没有定义在0V~1V之间处的阻值,因此在电阻开关切换时可能存在一些不期望存在的亚稳态,上述仿真波形中,在control的上升沿和下降沿也出现了相应的异常波形。解决方法是将两个source在切换状态时的码型设置为相同。
例如:LFSR以高电平1起始,那么在PAT的末尾增加一个长1码型,使得在切换时两个(或多个)source的状态相同,如下图所示。