一图胜千言。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
用户401004 2012-7-19 10:15
用户1000403 2011-7-27 10:57
用户1316125 2011-3-28 22:40
ash_riple_768180695 2010-6-24 13:14
用户127286 2010-6-24 11:07
用户142049 2008-11-17 23:12
用户111215 2008-1-28 13:47
难怪我在6.0中没有找到波形图
ash_riple_768180695 2008-1-26 22:37