关于时序分析的示例,我们先用如下这张图分析:
外层大框表示FPGA芯片,内部是寄存器路径,框外部为晶振。
时序分析
如上图FPGA内部是一个寄存器到寄存器的关键路径,当差分时钟约束之后:
create_clock -name clk_main-period 10.0 -waveform {0 5} [get_ports clk_p]
FPGA是如何分析这条路径的建立时间是否满足时序要求的呢?
如下图:
我们对各个路径进行了标记:
路径计算
记住时序分析的一个原则是目的寄存器要能稳定的采样到源寄存器发送的数据;
Vivado对建立裕量的分析分三个步骤理解:
算出数据到达时间:Arrival time
具体是如何计算的呢?
从FPGA时钟端口入口开始,计算源时钟路径,即路径1的时间T1;在算出数据从源触发器到目的触发器数据端之间的延迟T2 + T3;
算出数据需求时间:Required Time
何为数据需求时间?即时钟到达目的寄存器的时刻,减去寄存器建立时间;
当然, 计算数据到达时间是以Launch edge为时间起点参考,表示数据延迟多久达到下一级寄存器,即如下蓝线时刻;
计算数据要求时间以Latch edge为参考,表示数据要在数据要求时间内达到均可,即黄线时刻以前到达均可。
时序图
将如上图的2时刻减去1时刻,即数据要求时间 减去 数据达到时间,即为建立时间裕量。
上图1和2之间的时间差即为裕量。
下面给出一副互联网上常见的图:
时序分析
相信大家也能看懂,这里的clk1以及clk2表示源寄存器以及目的寄存器的时钟端C,Tskew表示二者之间的相对关系;
从上图中可以得到建立时间裕量为:
delta = required time – arrival time = (T + Tskew – Tsu) – (Tco – Tdly)
delta>= 0才能满足时序,建立时序;
这就得到图中的时序关系:
Tco + Tdly <= T + Tskew – Tsu
这和Vivado中的时序分析也是一致的,只不过出发点不一样,Vivado以时钟起点为参考,这里以时钟相对关系为参考,二者殊途同归。
这篇文章就到这里,下一篇文章以实际示例为参考,看看Vivado的具体路径分析。
没有回复内容