FPGA的时序

一:FPGA内部(寄存器到寄存器之间的)

1.Tskew=Tclk2(目的寄存器)-Tclk1

如为正——表示改善

如为负——表示恶化

2.关键路径——延时最长的路径

优化:不断拆解组合逻辑电路,用寄存器代替(流水线),因为其他的都基本不能改变。

3.

intra-clock paths:不能设置为伪路径,让EDA去分析。和组合逻辑是否优化有关(代码风格)

inter-clock paths:跨时钟问题,系统检查多半是不满足时序要求的,一般成熟工程都是做了同步处理的所以不用管了。直接设置伪路径。

4.false_patch

a.常量和伪常量:(不会变,就不会有亚稳态的时候)

b.跨时钟问题,系统检查多半是不满足时序要求的,一般成熟工程都是做了同步处理的所以不用管了。直接设置伪路径。

c.虽然做了打两拍/fifo隔离,时序还是会报错(因为异步肯定不满足建立时间和保持时间),告诉他不要检查这个路径,我已经做了隔离处理了(但是自己确保真的做了时序处理了)。

5.

不应该出现always@(posedge clk or negedge clk ),如果你TM想提升速率请把fclk提升(100M——200M),不要搞这种双沿的东西,都是单沿触发。

6.

D触发器时序问题——由于Tsetup,Thold不满足导致亚稳态(海思的芯片基本都是挂在这个地方,数字芯片内部只有0、1(它只认这两个东西)没有什么Z和X态)

7.个人猜想组合逻辑器件延迟(导致的竞争与冒险)比出发器的tco大不然怎么会做流水线呢?哈哈哈

8.

如下的always 块就是D触发器的时序(其实FPGA用到的基本就是D触发器)

9.

Tsetup_slack建立时间余量:需求达到的时间-实际到达的时间={T(一个时钟周期)+Tclk_2(时钟到达目的寄存器的延迟)-Tsu(建立时间)}-{Tclk_1(时钟到达源端寄存器的延时)+Tco+Tdate}

9.1Tsetup_slack就与f(系统)是强相关了——fmax=1/(T-Tsetup_slack)

10.

Thold_slack保持时间余量:实际到达源端寄存器的时间-需求达到源端寄存器的时间={T(一个时钟周期)+Tclk_1(时钟到达源端寄存器的延时)+Tco+Tdate}-{T(一个时钟周期)+Tclk_2(时钟到达目的寄存器的延迟)+Thold(保持时间)}

10.1Thold_slack就与f(系统)是无关了——应为上式把T约掉了

二:(FPGA与上游器件之间的)——源同步(如ADS42的LVDS与FPAG之间的数据交互)

1Input Delay(原理与FPGA内部之间寄存器之间的建立和保持时间一样只不过是PCB走线):可在vivado——edit contriant通过GUI设置

Input Delay是以上游芯片的时钟发送沿为参考,上游的输出数据到达FPGA的外部输入端口之间的延迟。

三:(FPGA与下游器件之间的)

2output Delay:

输出延时指的是从FPGA输出数据后到达外部器件时钟沿的延时时间,可以理解为在捕获沿到来时,数据已经存在的时间。

四:趋势(现在高速串行接口(jesd204B,SATA,PCIE)自动恢复时钟技术慢慢取缔——源同步接口(LVDS)有信道偏斜的缺点)

五:

从上面的Design Timing Summary中可以看出,WNS以及TNS是针对Setup Time Check的,而WHS以及TNS是针对Hold Time Check的,

六:

静态时序分析(STA)

STA不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少、覆盖率极高,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计。所以STA不仅是数字集成电路设计Timing Sign-off的必备手段,也越来越多地被用到设计的验证调试工作中。

七:

生成时钟分为两种。由PLL MMCM等专用时钟单元生成产生的时钟信号,Vivado会自动产生相关约束。还有一种是自定义生成时钟,一般为逻辑分频得到。

  时钟源是时钟端口:create_generated_clock -name clk_div -source [get_ports clk] -divide_by 2 [get_pins rega/Q] 意思是在rega单元的Q引脚上的时钟信号clk_div是由clk经过2分频得到的生成时钟。

八:VIVADO看综合后STA

8.1

条数最好选择100才能把所有路径穷尽出来,不然默认是10就会忽略掉一些路径。

 8.2

Design Timing Summary——包括最差和总的两个参数,点击直接展示路径

Clock Summary——包含了全部已创建的时钟信号。

Check Timing——部分则包含了未被约束的部分,我们可以根据该部分信息进一步添加必要的约束。

Intra-Clock Paths和Inter-Clock Paths——则分别描述了同步和异步电路时序路径的裕量参数

 8.3

level表示两个寄存器之间的组合逻辑器件

8.4

双击打开

解释一下:

  • source:源端寄存器,即时序分析的起点,发射沿(Launch Edge)
  • destination:目的端寄存器,即时序分析的终点,锁存沿(Latch Edge)
  • path group:时序分析的时钟来源
  • path type:路径类型,此路径为建立时间的分析
  • requirement:时序要求,设定为100MHz,所以就是10ns
  • clock path skew:时钟到达目的寄存器和源寄存器之间的时间差值
  • clock uncertainty :时钟的不确定度,包括skew和jitter

 8.5

本人觉得:原理图上的源端的时钟端口是错误的?怎么数据起始是从clk端开始的呢?

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值