FPGA静态时序分析(笔记)

2019-04-12  本文已影响0人  JOYBrenda

一、概念

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)开始计算的时钟延迟。

上一篇下一篇

猜你喜欢

热点阅读