时序分析基础(Vivado)

时序分析基础

    • 一、时序模型
    • 二、时序分析中的基本概念
      • 1、发起沿与捕获沿
      • 2、数据到达时间
      • 3、时钟到达时间
      • 4、建立时间的数据需求时间
      • 5、保持时间的数据需求时间
      • 6、建立时间裕量
      • 7、保持时间裕量
    • 三、总结

本文参考《vivado从此开始—to learn vivado from here》高亚军编著

Vivado综合后的时序报告是可信的,也可在综合后添加时序约束后直接查看时序报告。

一、时序模型

一般时序模型由三部分组成,分别为:

  1. 发起寄存器
  2. 组合逻辑
  3. 捕获寄存器

由上述的时序分析模型的三个部分,构建出3部分时序路径,从而组成一个完整的时序分析路径。

  1. 源时钟路径(Source Clock Path)
  2. 数据路径(Data Path)
  3. 目的时钟路径 (Destination Clock Path)

所以,这个模型如下图所示:
时序分析基础(Vivado)_第1张图片

二、时序分析中的基本概念

1、发起沿与捕获沿

发起沿与捕获沿通常差一个时钟(大概时序分析工具默认发起沿的下一个时钟捕获数据),发起沿和捕获沿共用一个时钟的的时序模型如下图所示:
时序分析基础(Vivado)_第2张图片

  1. T c o T_{co} Tco:时钟输出时间,发起沿有效至数据出现在发起沿寄存器Q端所需时间。
  2. T s u T_{su} Tsu:捕获寄存器建立时间需求。
  3. T h T_{h} Th:捕获寄存器保持时间需求。

2、数据到达时间

以发起沿为时间基准点(通常定义是0时刻),数据达到时间为:
D a t a A r r i v a l T i m e = L a u n c h E d g e + T c l k a + T c o + T d a t a Data Arrival Time = Launch Edge +T_{clka} +T_{co}+T_{data} DataArrivalTime=LaunchEdge+Tclka+Tco+Tdata
如下图所示:
时序分析基础(Vivado)_第3张图片

3、时钟到达时间

时钟到达时间是指捕获寄存器的时钟:
C l o c k A r r i v a l T i m e = C a p t u r e E d g e + T c l k b Clock Arrival Time = Capture Edge + T_{clkb} ClockArrivalTime=CaptureEdge+Tclkb

4、建立时间的数据需求时间

数据必须提前一定时间在捕获寄存器之前稳定存在于数据端口。
D a t a R e q u i r e d T i m e ( S e t u p ) = C l o c k A r r i v a l T i m e − T s u − C l o c k U n c e r t a i n t y Data Required Time(Setup) = Clock Arrival Time -T_{su} -Clock Uncertainty DataRequiredTime(Setup)=ClockArrivalTimeTsuClockUncertainty

5、保持时间的数据需求时间

数据必须在时钟捕获沿之后依然稳定一段时间:
D a t a R e q u i r e d T i m e ( H o l d ) = C L o c k A r r i v a l T i m e + T h − C l o c k U n c e r t a i n t y Data Required Time(Hold) = CLock Arrival Time +T_h - Clock Uncertainty DataRequiredTime(Hold)=CLockArrivalTime+ThClockUncertainty

6、建立时间裕量

建立时间裕量指的是:数据在 T s u T_{su} Tsu之前的一段时间已经稳定
S e t u p S l a c k = D a t a R e q u i r e d T i m e ( s e t u p ) − D a t a A r r i v a l T i m e ( S e t u p ) Setup Slack = Data Required Time(setup) - Data Arrival Time (Setup) SetupSlack=DataRequiredTime(setup)DataArrivalTime(Setup)
如下图所示:
时序分析基础(Vivado)_第4张图片

7、保持时间裕量

保持时间裕量是指当前数据保持时间之后,下一数据到达之前的时间。
H o l d S l a c k = D a t a A r r i v a l T i m e ( H o l d ) − D a t a R e q u i r e d T i m e ( H o l d ) Hold Slack = Data Arrival Time(Hold)-Data Required Time(Hold) HoldSlack=DataArrivalTime(Hold)DataRequiredTime(Hold)
如下图所示:
时序分析基础(Vivado)_第5张图片

三、总结

将建立时间裕量和保持时间裕量放在一起分析:
时序分析基础(Vivado)_第6张图片建立时间决定了数据的最大延迟:
M a x D e l a y = T − T s u MaxDelay = T-T_{su} MaxDelay=TTsu
保持时间决定了数据的最小延迟:
M i n D e l a y = T h MinDelay = T_h MinDelay=Th
所以,建立时间和保持时间共同决定了数据的有效窗口。
进一步分析,系统时钟周期T需要满足:
T > = T c o + T l o g i c + T r o u t i n g + T s u − T s k e w T >= T_{co}+T_{logic}+T_{routing}+T_{su}-T_{skew} T>=Tco+Tlogic+Trouting+TsuTskew
一旦芯片确定( T c o T_{co} Tco T s u T_{su} Tsu由工艺决定),那么只能修改 T d a t a = T l o g i c + T r o u t i n g T_{data}=T_{logic}+T_{routing} Tdata=Tlogic+Trouting来提系统频率。 T l o g i c T_{logic} Tlogic取决于代码风格; T r o u t i n g T_{routing} Trouting和布局布线有很大关系。(同步设计不考虑时钟偏移)。

你可能感兴趣的:(FPGA)