FPGA时序知识点(基本方法总结就两点:1.降低时钟频率2.减小组合逻辑延迟(针对Setup Slack公式来的)

1.我们说的所有时序分析都是建立在同步电路的基础上的,异步电路不能做时序分析(或者说只能做伪路径约束(在设伪路径之前单bit就打拍,多bit就异步fifo拉到目的时钟域来))。——FPGA 设计中寄存器全部使用一个时钟的设计是同步设计电路,FPGA 设计寄存器使用多个时钟的设计是异步设计电路。

异步电路由于使用的时钟不同,导致上游寄存器的输出数据进入下游寄存器的时间是任意的,这非常可能导致不满足下游寄存器的建立时间要求和保持时间要求,从而导致亚稳态。同样的原因,由于两者时钟不同,所以也不法建立对应的模型来分析异步电路是否能满足时序要求

2.时序分析和时序约束的关系:

先有时序约束(告诉EDA工具你的时钟频率要求等),后有时序分析(1.静态2.动态)。

3.时序收敛:

时序收敛就是你改作业的过程,把不及格的作业通过改、抄等手段给改到合格的过程就是时序收敛。

4.

组合逻辑:组合逻辑电路的毛刺现象几乎是不可避免的

时序逻辑:时序逻辑电路解决了组合逻辑电路无法解决的毛刺问题,将电路的行动全部置于统一的行动之下----时钟。

5.

高级的FPGA芯片其建立时间和保持时间会比低级的FPGA芯片较小,这也是其能运行频率更高的原因。——如果建立时间或者保持时间的要求无法被满足,那么就会发生亚稳态现象。此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间Tmet(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关

6.

四种基本的时序路径的第四种——FPGA管脚到管脚:通常是纯组合逻辑电路类似于直通处理

7.源寄存器与目的寄存器之间其采样时间相差一个时钟周期。

  • 发射沿(Launch Edge) :是源寄存器采样的时间点,也是时序分析路径的起点
  • 锁存沿(Latch Edge):是目的寄存器采样的时间点,也是时序分析路径的终点

8.Data Arrival Time(数据到达时间)Data Arrival Time = launch edge(一般是0时刻点) + Tclk1(FPGA的时钟管脚--布线--IBUF(这个是缓冲的,每个管脚都会自动添加,增加驱动能力)--布线--BUFG(全局时钟网络,可以减少时钟到不同寄存器之间的Skew,一般时钟管脚都会添加)--布线--源端寄存器时钟端口。从上图可以看到,把每一条细小的路径叠加后,时钟从IO口到源端寄存器的时间是 4.392ns。) + Tco +Tdata【数据路径则是数据从源端寄存器的D端到目的寄存器的D端的路径,也就是Tco +  Tdata。Tco等于0.379ns,接下来的所有net+2个CARRY4则是组合逻辑的延迟即Tdata,计算得到Tco +  Tdata = 1.625ns。】——Tclk1+Tco+Tdata=6.017ns

 

9.数据需求到达的时间:Data Required Time = latch edge + Tclk2(如下图) - Tsu

 

10.数据需求时间--保持时间:Data Required Time = latch edge + Tclk2 + Th

11.Setup Slack=Data Required Time-Data Arrival Time  则说明数据在规定的时间内达到了目的寄存器;反之,则认为数据并没有在规定的时间达到目标,此时REG2锁存的数据很有可能是亚稳态状态。(平时我们大多都是通过减少Tdata来使得时间裕量为正,以此实现设计的时序收敛。)

12.Hold Slack = Data Arrival Time - Data Required Time  如果Hold Slack为正,则认为数据在被锁存的时候有足够多的稳定时间,是有效的;反之则认为数据可能是亚稳态状态。

13.主时钟(Primary Clock)——约束如果记不住语句可以通过GUI界面来产生约束文件

主时钟通常有两个来源:(1)板级时钟(主要是晶振)通过输入端口进入FPGA;(2)FPGA的GT收发器的输出管脚(如恢复时钟)。

14.

  • WNS:最差负时序裕量 (Worst Negative Slack)
  • TNS :总的负时序裕量 (Total Negative Slack),也就是负时序裕量路径之和
  • WHS :最差保持时序裕量 (Worst Hold Slack)
  • THS :总的保持时序裕量 (Total Hold Slack),也就是负保持时序裕量路径之和            

15.

  • de4d35df19a24e479bce68a1c1ba9ef4.png (1242×312)
  • 可以看到WNS为8.370ns,这表示这个工程中最差的那条时序路径的建立时间裕量是8.370ns,所以该设计是时序收敛的。如果时序不收敛,那么肯定是有WNS为负。
  • 而TNS为0代表不存在建立时间裕量为负的时序路径,这也表示设计是收敛的。如果设计不收敛,那么必然存在1条或多条建立时间裕量为负的时序路径,作为路径之和的TNS也就一定是一个负数。

16.我们最需要关注的是intra-clock paths下sys_clk的setup和hold,这把具体的时序路径都穷举出来了:

  • slack:建立时间裕量
  • level:逻辑级数,这里1就表示在两个寄存器之间仅存在1个组合逻辑器件
  • fanout:表示从这一点连接到了几个目的端点,fanout = 1就表示连接了1个目的端点
  • from to:表示是哪两者之间的时序

点击schematic(两个寄存器之间的东西就表示level数,如图为2level)

17.

 

 slack:裕量,具体到这条路径就是建立时间裕量,裕量为8.370ns,表示这条路径是满足时序要求的
source:源端寄存器,即时序分析的起点,发射沿(Launch Edge)
destination:目的端寄存器,即时序分析的终点,锁存沿(Latch Edge)
path group:时序分析的时钟来源
path type:路径类型,此路径为建立时间的分析
requirement:时序要求,设定为100MHz,所以就是10ns
data path delay:组合路径的数据延时,包括组合逻辑器件的延时(logic)和布线延时(route)
logic levels:逻辑级数,即两个寄存器之间存在多少级组合逻辑
clock path skew:时钟到达目的寄存器和源寄存器之间的时间差值
clock uncertainty :时钟的不确定度,包括skew和jitter
 

你可能感兴趣的:(fpga开发)