原创 TimeQuest就一定要搞定——图解Setup Time时序余量计算

2010-6-24 13:12 10512 9 15 分类: FPGA/CPLD

    一图胜千言。Quartus II 7.2版的TimeQuest Timing Analysis工具中新添加了“波形察看”功能,可以帮助设计者更直观地理解特定路径上寄存器之间的时序关系。 riple


    对于时序分析初学者来说,理解时序分析的公式与实际器件的物理特性之间的对应关系是一大难点,这一难点也是掌握时序分析方法的关键点。借助TimeQuest的Waveform视图,再结合Quartus的其他视图工具,理解这一难点就容易多了。 riple


    下面就是一个简单的Setup Time时序分析的图解: riple


    图一:查看RTL Viewer。图中start_sync引脚是本设计的输入引脚。之所以命名为_sync,是因为在这个简化了的局部的设计中,start_sync虽然是FPGA的输入引脚,但是可以认为在FPGA外部驱动这一引脚的电路是与本设计同步的。对于start_sync信号,只要设置适当的input_delay约束,就可以进行时序分析。另外,在图中还有一个引脚是ack_async,之所以命名为_async,是因为该引脚是一个异步输入引脚,在FPGA外部驱动这一引脚的电路与本设计的时钟关系不确定。对于ack_async信号,没有必要进行时序分析(需要设置false_path约束),而且还需要进行跨时钟域信号传播的两级同步处理。start_sync是本示例时序分析的起点。 riple


    图二:查看Technology Map Viewer。图中具有双层结构的模块是FPGA器件一个Logic Cell的示意图,这个Logic Cell对应了设计中的sreg.01寄存器和其次态逻辑。从该图中可以看出,典型的LC由实现组合逻辑的LUT(内层框内图形)和实现时序逻辑的REG(外层D触发器)构成。本文举例进行时序分析的对象是从“FPGA输入引脚start_sync”到“sreg.01的REG寄存器D输入端”之间的路径。 riple


    图三:查看Chip Planner视图。图中所示是start_sync所在的I/O Cell与sreg.01所在的Logic Cell之间的Inter-Cell延时,该延时值为3.940ns,在图六的时序分析计算公式中会引用。在图四和图五中分别给出了I/O Cell和Logic Cell的内部视图。 riple


    图四:查看start_sync输入引脚的I/O Cell。图中所示是start_sync所在的I/O Cell的Resource Property Editor视图。从图中可以看出,由于FPGA的I/O是可编程的,所以该Cell由输出电路和输入电路两部分组成。图中蓝色部分的起点是引脚的Pad所在之处,Pad的左边是输出电路,右边是输入电路。蓝色部分是实际使用到的电路——start_sync引脚的输入电路逻辑。这部分电路会引入一定的延时,在图六的时序分析计算公式中会引用。 riple


    图五:查看sreg.01寄存器的Logic Cell。图中所示是sreg.01所在的Logic Cell的Resource Property Editor视图。与图二相对应,该图中蓝色部分是实际使用到的电路——LUT + REG。其中四输入LUT部分和REG之前的选择电路会引入延时,在图六的时序分析计算公式中会引用。 riple


    图六:查看start_sync输入引脚与sreg.01寄存器的Report Setup Timing结果。该图是在TimeQuest中执行report_timing -from_clock {CLK} -to_clock {CLK} -from {start_sync} -to {try1:inst|sreg.01} -setup -npaths 10 -detail path_only -panel_name {Report Timing}命令得到的。从右上角开始,按照顺时针顺序分为四个部分。第一象限列出了时序分析所需要的各项参数取值;第二象限是时序分析结果的统计数据;第三象限是根据第一象限参数计算得到的时序分析结果;第四象限是波形图,详见图七。在该图中,我们主要关心第一和第三象限的内容。 riple 
    第一象限上半部分是Data Arrival Path各组成部分延时的详细列表。行3对应手工设置的Input_delay,2ns;行4对应I/O Cell内部电路的门延时,1.135ns;行5对应图三中示出的I/O Cell与Logic Cell之间的Inter-Cell线延时,3.940ns;6对应Logic Cell内部电路的门延时,0.238ns。(行4、行5、行6之和组成了图七中的Data Delay时间) riple 
    第一象限下半部分是Data Required Path各组成部分延时的详细列表。行1对应CLK的周期,10ns;行2对应时钟网络延时,2.389ns;行4对应REG的Setup Time,0.029ns。该Logic Cell的建立时间是一个正数值。 riple 
    第三象限给出了该路径的Setup Time Slack的计算结果。由Setup Time余量的计算公式(Data Required Time - Data Arrival Time)可以得出行6(12.360ns)与行5(7.313ns)之差为Slack计算结果:5.047ns。 riple



    图七:查看start_sync输入引脚与sreg.01寄存器的Setup Time Slack计算图解。该图示出了start_sync到sreg.01寄存器D输入端之间的时序关系。其中豆绿色部分是Setup Time Slack,Data Required Time由Input Delay和Data Delay组成,Data Arrival Time由Setup Relationship、Clock Delay和uTsu组成。这幅图清晰地示出了Launch Edge和Latch Edge的概念和相互关系,Data Required Time和Data Arrival Time的计算和相互关系,还有Clock Skew对时序的影响,以及“正”的Setup Time的特性。这幅图是对图六中的Timeing Report的直观解释。 riple


 


PS:在前面几篇关于Timing Analysis的文章中,我使用的TimeQuest工具还是7.2以前的版本,那时还没有察看waveform的功能。那时虽然把时序分析结果的统计数据采用扇形图表示,但是对于理解时序分析的原理没有什么太大的帮助。7.2版的这一改进还是非常有用的。 riple


 


相关链接:提高FPGA设计生产力的工具、技巧和方法指南(本文揭示了可视化技术在时序分析中的重要作用) riple


TimeQuest就一定要搞定——时序分析基本公式 riple


TimeQuest就一定要搞定——取值为负数的建立时间 riple


Quartus II 中Tsu/Tco 的约束方法

文章评论8条评论)

登录后参与讨论

用户401004 2012-7-19 10:15

上边既然是图解的过程,那为什么不顺便将所对应的工程文件传上来呢?没有工程文件即使你胡说我也不知道。。。

用户1000403 2011-7-27 10:57

第一张图绝对有问题, 灰色的寄存器输入和输出怎么能够直连呢?

用户1316125 2011-3-28 22:40

Data Required Time由Input Delay和Data Delay组成,Data Arrival Time由Setup Relationship、Clock Delay和uTsu组成 这句话是不是写反了 Data Arrival Time由Input Delay和Data Delay组成,Data Required Time由Setup Relationship、Clock Delay和uTsu组成

ash_riple_768180695 2010-6-24 13:14

第一个图的链接有问题,已经修复了。

用户127286 2010-6-24 11:07

弱弱的问一下 riple 这里提到的图形在哪里呀!我怎么找不到,能不能提示一下 小弟愚拙 向大师请教

用户142049 2008-11-17 23:12

真的很感谢riple,花大量的时间去剖析这些数据和图的内在关系,对timequest的理解又加深了一个层次,使我不再对timequest感到恐惧了,我相信在riple文章的指导下,我能把timequest搞定!

用户111215 2008-1-28 13:47

难怪我在6.0中没有找到波形图

ash_riple_768180695 2008-1-26 22:37

续完!
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
8
9
关闭 站长推荐上一条 /2 下一条