我是靠谱客的博主 贤惠季节,最近开发中收集的这篇文章主要介绍timequest静态时序分析学习笔记之基本概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一章 基本概念

1.1延迟因素

  第一,FPGA芯片内部的一些固有延迟,包括建立时间Tsu、保持时间Th和数据存入寄存器到输出管脚时间Tco,这些时间是由FPGA芯片决定的,不同的FPGA芯片这些延迟时间不一样。(如图1)

  第二,路径延迟,包括时钟路径延迟和数据路径延迟,这两种延迟都与设计的逻辑有关,而最主要的延迟还是数据延迟,所以好的代码设计非常重要。(如图1)

 

图一 FPGA芯片内部

  第三、外部延迟因素,即FPGA与外部IC进行数据交互的延迟因素,包括外部IC建立时间Tsu_ext、外部IC保持时间Th_ext、外部IC从时钟到来到数据输出到管脚的延迟Tco、外部数据延迟、时钟到IC芯片的延迟、时钟到FPGA芯片的延迟,这些延迟因素timequest都没法自己知道,必须通过设计者弄清这些延迟是多少,然后通过约束命令告诉timequest才行。(如图2)

 

图2 FPGA与外部IC

1.2建立时间和保持时间、建立关系值和保持关系值

  建立时间:指时钟到达寄存器之前数据在输入管脚达到稳定所需要的最小时间。

  保持时间:指时钟到达之后数据在输入管脚保持稳定所需要的最小时间。

  建立关系值:目的寄存器锁存沿(latch clock)-源寄存器启动沿(launch clock)。数据在第一个时钟沿从源寄存器发出去,在第二个时钟沿存入目的寄存器,建立关系值就是指这两个时钟的距离。

  保持关系值:上一个latch clock - 源寄存器的当前launch clock。(如图3)

 

建立关系值和保持关系值

1.3建立余量和保持余量

1.3.1建立余量计算

 

图 4

    Data Arrival Path = Launch Edge + src_clk_dly + src_reg_uTco + data_delay 

    Data Required Path = Latch Edge + dst_clk_dly 

  由于还得满足在latch clock到来之前数据在目的寄存器达到稳定所需要的最小时间Tsu,所以建立余量公式如下:

    Setup slack = Data Required Path - Data Arrival Path - Tsu

  而在timequest分析里面,它把延迟因素Tsu放在了Data Required Path里面,所以Data Required Path公式可以这样:

    Data Required Path = Latch Edge + dst_clk_dly - Tsu

  最终根据timequest得到的公式:

    Setup slack = Data Required Path - Data Arrival Path(timequest_userGuide page 32)

  现在我们看timequest是如何来分析setup slack

 

图5 建立余量波形图

  通过图5建立余量波形图我们可以知道setup relationship,data arrival time ,data required time,setup slack以及一些其它的延迟参数。

 

图6 建立余量波形数据路径

  然后我们通过data path分析中可以知道data arrival path和data required path的值,看最后一行,data arrival path的值是17.826ns,data required path的值是25.544ns,根据公式可以求得setup slack是7.718ns,当然我们添加约束命令后,这些计算都是timequest自己做的事,与设计者无关。

 

图7

  如图7的第一行的slack的值,它刚好等于图6 data required path的值e减data arrival path的值,在这里我们可以看到每一条路径的建立余量,源寄存器和目的寄存器,启动沿,锁存沿,建立关系值,时钟抖动和数据延迟。

1.3.2保持余量计算

  在说公式前先看timequest的具体分析报告

 

图 8 保持余量波形图

  注意看图8launch clock和latch clock的位置,还有slack的值,然后再看图9的data arrival path和data required path最后一行的值。

 

图 9

  通过这两张图可以知道:hold slack = data arrival path - data required path

    Data Arrival Path = Launch Edge + src_clk_dly + src_reg_uTco + data_delay 

    Data Required Path = Latch Edge + dst_clk_dly + Th

  但是这里的latch clock 是目的寄存器的上一个锁存沿。

    hold slack = data arrival path - data required path

  建立余量与保持余量的Data Arrival Path的计算是一样的,不同的是建立余量Data Required Path的Latch Edge是当前锁存沿,而保持余量data required path的Latch Edge是上一个锁存沿。

 1.3.3外部延迟计算

  我们可以把FPGA芯片和板上IC芯片想象成两个寄存器,不过timequest自己不知道他们之间的延迟,所以需要设计值通过约束命令来告诉它。

  外部器件参数:Tsu_ext=外部器件的Tsu,Th_ext=外部器件的Th

  板上的数据延迟:

    Max_fpga2ext=FPGA输出到外部器件管脚的最大延迟;

    Min_fpga2ext=FPGA输出到外部器件管脚的最小延迟;

    set_output_delay -max = Tsu_ext + Max_fpga2ext 

    set_output_delay -min = -Th_ext + Min_fpga2ext 

  对于输入约束

  外部器件参数:Tco_ext=外部器件的Tco,minTco_ext=外部器件最小的Tco

  板上的数据延迟:

    Max_ext2fpga = 从外部器件输出到FPGA管脚的最大延迟。 

    min_ext2fpga = 从外部器件输出到FPGA管脚的最小延迟。

  板上时钟延迟:

    Max_clk2fpga = 板上时钟到FPGA的最大延迟

    min_clk2fpga = 板上时钟到FPGA的最小延迟

    Max_clk2ext = 板上时钟到外部器件的最大延迟

    min_clk2ext = 板上时钟到外部器件的最大延迟

    set_input_delay -max = Tco_ext + Max_ext2fpg 

    set_input_delay -min = minTco_ext + min_ext2fpga 

  上面的公式没有把时钟skew考虑进去。考虑进去后的公式应该是这样的:

  对于输出约束

    set_output_delay -max = Tsu_ext + Max_fpga2ext - (min_clk2ext - Max_clk2fpga) 

    = Tsu_ext + Max_fpga2ext - (min_clk_skew) 

  即:最大输出延迟 外部器件建立时间+FPGA到外部器件的最大延迟时间 (最小板上时钟到外部器件的延迟-最大板上时钟到FPGA的延迟)=外部器件建立时间+FPGA到外部器件的延迟时间 最小时钟偏移。

    set_output_delay -min = -Th_ext + min_fpga2ext - (Max_clk2ext - min_clk2fpga) 

    = -Th_ext + min_fpga2ext - (Max_clk_skew) 

  即:最小输出延迟 外部器件保持时间+FPGA到外部器件的最小延迟时间 (板上时钟到外部器件的最大延迟-板上时钟到FPGA的最小延迟)=外部器件建立直接+FPGA到外部器件的延迟时间 最大时钟偏移。

对于输入约束:

    set_input_delay -max = Tco_ext + Max_ext2fpg - (min_clk2fpga - Max_clk2ext) 

    = Tco_ext + Max_ext2fpg - (min_clk_skew) 

  即:最大输入延迟 外部器件Tco + 外部器件到FPGA的最大延迟-最小时钟偏移。

    set_input_delay -min = minTco_ext + min_ext2fpga - (Max_clk2fpga - min_clk2ext)22 

    = minTco_ext + min_ext2fpga - (Max_clk_skew) 

  即:最小输入延迟 最小外部器件Tco + 外部器件到到FPGA的最小延迟-最大时钟偏移。

  如下面框图:

 

图 10

  注意:由于对于外部时钟的延迟信息还可以通过set_clock_delay告诉FPGA,所以在做约束的时候不要重复用这两种约束添加外部时钟的延迟信息。

 

参考资料:

  1.FPGA那些事儿--TimeQuest静态时序分析REV7.0.pdf

  2.TimeQuest_User_Guide.pdf

转载于:https://www.cnblogs.com/Oursbuzouxunchanglu/p/3957473.html

最后

以上就是贤惠季节为你收集整理的timequest静态时序分析学习笔记之基本概念的全部内容,希望文章能够帮你解决timequest静态时序分析学习笔记之基本概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部