Matlab 由时域仿真结果计算 jitter 的脚本


这里简单谈下由时域仿真结果计算 jitter 的方法。

关于如何计算 jitter, 这里的方法主要分为两步,首先在 Cadence 仿真中得到时钟信号过零点时刻的数据,然后利用 matlab 对此数据处理,从而得到 clock jitter 以及时钟周期的直方图(histogram)。

对于过零点时刻的获取,主要可以通过 calculator 中的 cross 函数对 spectre 时域仿真的时钟信号的处理来得到,如下图中所示。

利用cadence calculator获取过零点

之后,可以将得到的数据列表导出为 CSV 文件(注意对数据设置合适的小数点位数),并利用 matlab 处理。

这里 Matlab 中的处理主要是利用过零点数据得到时钟周期,以此来计算其均值和标准差,具体的 matlab 脚本如下:

% calc the jitter from the data of the zero-crossing time

cross_time=csvread('jitter_data.csv', 1, 1); % reading data from the csv file

num=length(cross_time); % find the data length
i=1:num-1;

period(i)=cross_time(i+1)-cross_time(i); % calculate the period
Tc=mean(period); % the avergaed clk period
Jc=std(period); % the cycle jitter (period jitter)

k=1:length(period)-1;
DeltaT(k)=period(k+1)-period(k); % calculate the difference for 2 nearby period
Jcc=std(DeltaT);

%Jpp=max(period)-min(period); % peak-peak Cycle jitter

[n,xout]=hist(period,18); % plot the histogram
bar(xout,n);
title('Clock Period Histogram');
xlabel('clcok period');
ylabel('number')
%text(max(xout), max(n), sprintf('Tc=%.3e', Tc),'hor','right');
%text(max(xout), 0.85*max(n), sprintf('Jc=%.3e', Jc),'hor','right');
%text(max(xout), 0.8*max(n), sprintf('Jcc=%.3e', Jcc),'hor','right');
gtext(sprintf(' T=%.3e\n Jc=%.3e\n Jcc=%.3e', Tc,Jc,Jcc))

我们可以用以前介绍的抖动时钟的信号源来加以验证,在理想时钟引入 synchronous jitter (edge-to-edge jitter), 这里取 Jee=10ps, 则对应的 cycle-jitter Jc 约为14.1ps。

下图是实际利用 matlab 分析得到的 cycle-jitter 和周期的直方图,这里的 Jc=13.9ps, 可见还是比较接近的

周期时间的直方图


版权声明: 本站文章版权所有,转载须以超链接形式标明文章原始出处和版权信息。

Matlab 由时域仿真结果计算 jitter 的脚本》有5个想法

      1. 阳光de_角度

        cross函数指的是第n次穿过特定形式边沿阈值时的x坐标,图中所示的0.6指的是阈值即y坐标,“net2”应该是指pll或者是dll锁定以后输出时钟线,至于“cycle”我这个版本的cadence选了这个选项,但是表达式中显示不出来,最后想保存csv文件时,只得到一个数据。
        按照表达式的理解也是第一次到达0.6的时候x的坐标?而且你所说的过零点指的是超过零点时x的坐标吧,我的想法按照时钟幅度50%的阈值来作为jitter仿真标准。
        楼主,你的文章很好很强大很清楚

        回复
        1. windknows 文章作者

          1. cycle 只是为了在输出看到是第几个周期,实际没什么关系
          2. 只得到一个数据?或者你通过直接点‘cross’函数,里面有单此或多次的选项
          3. 可能表达有问题,这里就是用0.6V 电平判断时钟跳变

          回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注