美文网首页
FPGA静态时序分析(笔记)

FPGA静态时序分析(笔记)

作者: JOYBrenda | 来源:发表于2019-04-12 11:07 被阅读0次

    一、概念

    Launch_edge: 触发沿,触发时钟的上升沿延迟

    Latch_edge:锁存沿,锁存时钟的上升沿延迟,和触发沿相隔一个周期

    二者只是两个标记,之差等于一个时钟周期。 

    二、原理

    核心目的:某一个寄存器的数据传输不能受影响。这个数据要早来晚走。

    建立时间指的是数据不能来得太晚

    保持时间指的是数据不能走的太早

    数据建立要足够快,在时钟到来之前就准备好。

    又要足够慢,在上一个数据还没建立好之前这个数据不能到。

    假设我们又两个寄存器D1,D2,上升沿1,上升沿2

    上升沿1之前 : D1 = D2 = 0

    上升沿1 : D1 = 1 D2 = 0

    上升沿2 : D1 = 0 D2 = 1

    这是我们想要传送的结果——经过两个上升沿,把数据传给D2,最终D2应该是1.

    (我们要干的主要事情是,改变第一个寄存器的值,并且把值传递给第二个寄存器。)

    如果setup时间太长,第一个上升沿D2可以接受数据了,但数据还没到,结果D2只能是0。

    如果hold时间太短,D2已经在上升沿采样到1了,结果被D1的0给取代了,结果D2也是0.

    这两种情况都是数据传输失败。

    虽然理解原理的时候,我们解释了两个寄存器之间的数据传输,但实际上setup和hold都是针对同一个寄存器而言的。

    数据传送主要有4条路径

    Input pin/port -> Sequential element

    Sequential element -> Sequential element

    Sequential element -> Output pin/port

    Input pin/port -> Output pin/port

    四条不同的数据路径

    三、示例

    例子

    Data Arriving Time

    path1 : T_DAT = launch_edge + T_inputdelay + T_data

    path2 : T_DAT = launch_edge + T_clk + T_co + T_data

    path3 : T_DAT = launch_edge + T_clk + T_co + T_data + T_outputdelay

    Clock Arriving Time 

    T_CAT = latch_edge(T_cycle) + T_clk

    Data Require Time

    setup required time :T_SRT = T_CAT - T_setup - T_clku

    hold required time :T_HRT =  T_CAT - T_hold - T_clku

    Slack

    setup T_sSlacks = T_SRT - T_DAT 

    hold T_hSlack = T_DAT - T_HRT 

    几点说明:

    1.T_clk(T_clks + T_clkn)

    2.T_cycle = latch edge - launch edge 。所以CAT指的是一个时钟周期 + 时钟的两个延时

    3.只有T_data是可以改变的,通过改变组合逻辑来实现

    4.时钟到达时间是对于所有传输路径都是固定的,因为时钟是统一的

    5.在数据到达时间和时钟到达时间其中都有T_clk这个变量,如果不考虑skew(两个寄存器之间的时时钟偏差),这两个量应该是相同的,它不表示某一时刻的时钟数值,而是表示从一个共同的起点(launch/latch edge)开始计算的时钟延迟。

    相关文章

      网友评论

          本文标题:FPGA静态时序分析(笔记)

          本文链接:https://www.haomeiwen.com/subject/cykweftx.html