TimeQuest快速入门实例及时序查看
时序分析基础与时钟约束实例3

时序分析基础与时钟约束实例(3)文中实例配套SF-CY3开发套件。
更多内容请参考《SF-CY3 FPGA套件开发指南》。
接着,我们要来实际应用这些理论,看看实际工程中如何对这些错综复杂的关系进行分析和处理。
如图所示,我们这个例程的分频计数实验中使用了一个时钟信号clk,每一次计数都是基于这个时钟的上升沿。
这个时钟哪里来?它的时钟频率如何确定?拍脑袋随便设?非也,咱做事一定要有依有据。
如图所示,我们的SF-CY3板载了一颗25MHz的有源晶振,通过管脚分配,我们便将这个时钟引入了设计中。
因此,我们这个设计的时钟便要约束为25MHz,即40ns的时钟周期。
好,下面我们就动手为这个实例添加时序约束。
如图所示,我们点击工具栏的一个闹钟模样的图标便可打开Quartus II内嵌的时序设计TimeQuest,我们接下来的时钟约束设置便是在该工具中完成的。
TimeQuest的主界面如图所示,首先需要新建一个sdc文件,然后在该文件中输入时钟约束脚本,或者使用GUI进行约束设置更新到sdc文件中。
点击菜单栏Netlist→Create Timing Netlisk,弹出的菜单中使用默认设置,点击OK便可。
接着进行时钟约束,点击菜单栏Constraints→Create Clock。
Clock name是我们随便给约束的信号起的名字,没有特别限制;Period为时钟周期,我们的时钟晶振是25MHz的,即40ns;Targets选择实际被约束的时钟管脚,点击改行最后面的按钮可以选择相应的管脚信号;SDC command无须设置,自动根据前面的设置生成,Waveform edges也无须设置,我们采用默认设置,即0ns时钟上升,20ns下降。
点击Run完成约束设置。
接下来,我们要依次点击主界面右下方task栏里的Update Timing Netlist和Write SDC File 选项,弹出的Write SDC File窗口如图所示,我们更改SDC file name为ex0.sdc,接着点击OK。
时序分析基础

时序分析基础
目的:对时序分析有一个完整的认识
如何核查工作时间
锁存比较锁存沿
设置和保持时间
数据和时钟到达时间
数据必须时间
设置和保持slack 分析I/O分析
恢复和消除
时序模型
respect
建立时间:
保持时间:
数据到达时间
时钟到达时间
必须包括外部装置和PCB时序参数
Stable:稳定
异步=同步?
列如:。
数据路径太长。
要求太短(不正确的分析)。
大的时钟偏移意味着门控时钟等。
Timequest 时序分析使用它们:。
计算slack方程。
术语:dd
详细的时序模型2种缺省的模型:慢速,快速慢速:显示慢的可能表现为任何一个单一的路径;时间慢的设备最高运行温度和VCCmin;快速:
为什么两个角落时间模型?第三种模型
产生FAST/SLOW网表:指定一个默认的时间模型,用于创建您的netlist,缺省是SLOW网表指定的时序快的netlist
具体的操作条件:执行时序分析不同延迟模型,再现现有时机的netlist;
优先已经产生的netlist;
目标:编译SDC文件为PLD简单的校验时序设计约束和复杂设计使用Timequest TA
Timequest 基本原理;时序约束;例子。
TimeQuest使用教程(中文版)

骏龙科技(西安办事处)
Vincent Song
Q2 2008
© 2008 Cytech Technology Ltd., Co
TimeQuest使用教程
简介 使用步骤 时序分析中的要点 设计实例 常见时序优化方法
© 2008 Cytech Technology Ltd., Co
加入任何新的约束后,需要更新时序网表 执行
Update_timing_netlist的tcl命令
Update Timing Netlist (任务窗或者Netlist菜单下)
© 2008 Cytech Technology Ltd., Co
22
5) 生成时序报告
验证时序要求,找到违规 (Violated) 检查全约束的设计,或者 忽略时序约束 使用控制窗输入tcl命令、 任务窗双击所需报告或者 Reports菜单下
高级时序要求----TimeQuest 提供全脚本功能,建立约束,生成报告,管理时
序分析流程。TimeQuest支持高级报告,并且能够建立定制报告。
© 2008 Cytech Technology Ltd., Co
4
TimeQuest软件及器件支持
QuartusII从6.0版本开始支持TimeQuest时序分析器
要保证setup时序满足slow model 要保证hold时序满足fast model 源同步接口设计中的要点
第三种模式 (slow, 0 º C)目前只有Stratix III和CycloneIII支持
© 2008 Cytech Technology Ltd., Co
TIMEQUEST TIMING ANALYZER

标签:用Quartus II Timequest Timing Analyzer进行时序分析:实例讲解 (一) 杂谈一,概述
用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。
采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。
在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time craft等STA软件是比较类似的。
用过prime time或time craft的朋友是非常容易上手的。
在这一系列的文章里,我将会拿一个DAC7512控制器的verilog设计作为例子,详细讲解如何使用TimeQuest进行时序设计和分析。
二,TimeQuest的基本操作流程
做为altera FPGA开发流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。
Altera推荐使用下面的流程来完成TimeQuest的操作。
图解Setup Time时序余量计算

一图胜千言。
Quartus II 7.2版的TimeQuest Timing Analysis工具中新添加了“波形察看”功能,可以帮助设计者更直观地理解特定路径上寄存器之间的时序关系。
对于时序分析初学者来说,理解时序分析的公式与实际器件的物理特性之间的对应关系是一大难点,这一难点也是掌握时序分析方法的关键点。
借助Time Quest的Waveform视图,再结合Quartus的其他视图工具,理解这一难点就容易多了。
下面就是一个简单的Setup Time时序分析的图解:图一:查看RTL Viewer。
图中start_sync引脚是本设计的输入引脚。
之所以命名为_sync,是因为在这个简化了的局部的设计中,start_sync虽然是FPGA 的输入引脚,但是可以认为在FPGA外部驱动这一引脚的电路是与本设计同步的。
对于start_sync信号,只要设置适当的input_delay约束,就可以进行时序分析。
另外,在图中还有一个引脚是ack_async,之所以命名为_async,是因为该引脚是一个异步输入引脚,在FPGA外部驱动这一引脚的电路与本设计的时钟关系不确定。
对于ack_async信号,没有必要进行时序分析(需要设置fal se_path约束),而且还需要进行跨时钟域信号传播的两级同步处理。
start_sy nc是本示例时序分析的起点。
图二:查看Technology Map Viewer。
图中具有双层结构的模块是FPGA器件一个Logic Cell的示意图,这个Logic Cell对应了设计中的sreg.01寄存器和其次态逻辑。
从该图中可以看出,典型的LC由实现组合逻辑的LUT(内层框内图形)和实现时序逻辑的REG(外层D触发器)构成。
本文举例进行时序分析的对象是从“FPGA输入引脚start_sync”到“sreg.01的REG寄存器D输入端”之间的路径。
图三:查看Chip Planner视图。
timequest静态时序分析学习笔记之命令约束

timequest静态时序分析学习笔记之命令约束第⼆章约束命令Timequest共包括13条约束命令(从timequest⼯具constrants下拉菜单可选的约束命令,实际不⽌这么多),分别是: Creat clock Creat generated clock Set clock lantency Set clock uncertainty Set clock groups Remove clocks Set input delay Set output delay Set false path Set multicycle path Set muximum delay Set minimum delay Set muximum skew各个约束命令说明2.1 Create_clock 两个作⽤:(page73) 1,约束从外部进⼊FPGA的时钟。
2,创建虚拟时钟,虚拟时钟是指外部IC芯⽚⽤到的时钟,它们不是FPGA内部的时钟域。
Create_clock不能⽤于约束FPGA内部的时钟。
(page74)在约束命令都是添加在SDC⽂件⾥⾯,所以们得先创建⼀个SDC⽂件,通过timequest的cronstraints下拉菜单的generated SDC file选项可以⽣成。
⽽我添加每⼀条命令都是通过quartus 的Edit下拉菜单insert constraint选项添加的。
我们选择通过quartus 的Edit下拉菜单insert constraint选项添加Create_clock约束命令,弹出如图11的会话框,Clock name 指你想约束的时钟名称,任意起,不过最好根据⾃⼰设计的模块起,便于分析阅读,不然时钟多了,⾃⼰都不知道哪个时钟是哪个模块的。
Period 约束时钟的周期 Rising 指时钟上升沿的开始时间 Falling 指时钟下降沿的开始时间图11 Targets 指你想约束的哪个FPGA 管脚。
PrimeTime 时序分析流程和方法

PrimeTime 时序分析流程和方法PrimeTime是Synopsys的一个单点的全芯片、门级静态时序分析器。
它能分析大规模、同步、数字ASICS的时序。
PrimeTime工作在设计的门级层次,并且和Synopsys其它工具整合得很紧密。
基本特点和功能:时序检查方面:建立和保持时序的检查(Setup and hold checks)重新覆盖和去除检查(Recovery and removal checks)时钟脉冲宽度检查(Clock pulse width checks)时钟门锁检查(Clock-gating checks)设计检查方面:没有时钟端的寄存器没有时序约束的结束点(endpoint)主从时钟分离(Master-slave clock separation)有多哥时钟的寄存器对层次敏感的时钟(Level-sensitive clocking)组合电路的反馈环(Combinational feedback loops)设计规则检查,包括最大电容(maximum capacitance)、最大传输时间(maximum transition)和最大扇出(maximum fanout)PrimeTime 时序分析流程和方法:在时序分析之前需要做的步骤:1、建立设计环境- 建立搜索路径(search path)和链接路径(link path)- 读入设计和库- 链接顶层设计- 建立运作条件、连线负载模型、端口负载、驱动和传输时间2、说明时序声明(约束)- 定义时钟周期、波形、不确定性(uncertainty)和滞后时间(latency)- 说明输入、输出端口的延时3、说明时序例外情况(timing exceptions)- 多周期路径(multicycle paths)- 不合法路径(false paths)- 说明最大和最小延时、路径分割(path segmentation)和失效弧(disabled arcs)4、进行分析和生成报告- 检查时序- 生成约束报告- 生成路径时序报告开始先建立目录并将PrimeTime本身所带的一个例子拷到新建的目录下,在下面的内容中将要用到这个例子。
阿东带您学习FPGA-TimeQuest静态时序分析 V1.1

阿东带您学习FPGA-TimeQuest静态时序分析V1.1阿东恒创科技2014/6/阿东带您学习FPGA-TimeQuest静态时序分析V1.1恒创科技阿东团队2014-06目录目录 (4)1写在前面 (6)2简介 (9)3为什么要做时序分析 (9)4时序分析的概念 (11)4.1同步逻辑时延模型 (11)4.1.1时钟抖动与偏斜 (12)4.1.2建立时间/保持时间 (13)4.1.3恢复时间/移除时间 (14)4.1.4Launch Edge&Latch Edge (15)4.1.5Data&Clock Time (15)4.2时序分析基本公式 (19)4.2.1建立时间(Setup Time)检查: (20)4.2.2保持时间(Hold Time)检查: (21)4.2.3多周期路径(Multicycle Paths)检查 (23)4.3Altera器件时序模型 (24)4.4基本单元与paths (26)4.5FPGA时序约束的几种方法 (28)5使用Timequest时序分析器约束分析设计 (30)5.1Timequest基础 (30)5.1.1时序约束和分析流程 (30)5.1.2Timequest GUI (32)5.1.3看懂时序波形图 (34)5.2时序约束 (35)5.2.1Clocks (37)5.2.2PLL clocks (42)5.2.3I/O (43)5.2.4False paths (50)4时序分析设计实例一-LED流水灯 (52)5.1LED流水灯功能框图 (52)5.2LED流水灯代码 (52)5.3LED流水灯时序分析 (53)5时序分析设计实例二-摄像头接口 (62)5.1摄像头简介 (62)5.1摄像头接口 (63)5.1摄像头接口时序 (63)6时序分析设计实例三-SDRAM (71)5.1SDRAM控制器功能框图 (72)5.2SDRAM控制器时序分析 (72)7写在最后 (76)8版权声明 (76)1写在前面作者简介:大家好,我们是阿东团队,都是有7年经验的高级FPGA&IC开发工程师。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.在quartus中对设计进行时序分析2.1TimeQuest 工具Quartus® II TimeQuest Timing Analyzer是一个功能强大的ASIC型时序分析工具,能够以工业标准方法论来约束,分析和报告用户设计中所有逻辑的时序性能。
这个工具是一个严格的静态工具,使用时不需要搭建硬件环境及进行调试。
本节将介绍如何使用Quartus II TimeQuest Timing Analyzer工具的图形化功能来约束,分析及报告设计中的时序结果。
使用这个工具,我们要指定初始时序信息,包括时钟,时序例外以及信号传输中的到达和要求的时间。
我们通过后缀名为sdc(Synopsys Design Constraints)的文件来指定时序要求,然后The Quartus II Fitter将优化逻辑布局等来满足我们的时序要求。
在时序分析过程中,Quartus II TimeQuest Timing Analyzer分析设计中的每一条时序路径,计算每条路径的延迟,检查是否存在时序违例,并且报告时序结果。
一旦发现时序违例,可以精确定位到违例路径的时序细节,然后用户约束它以纠正违例。
如果时序分析没有报告违例,那么恭喜你,在这个器件中的逻辑行为将与你的设计意图一致。
使用TimeQuest分析设计时序的一般步骤为:图使用TimeQuest分析设计时序的一般步骤第一次编译时我们需要得到没有设置约束的时序结果,有助于我们给设计添加约束。
第二次编译的时序需要把包含指定时序要求的文件(后缀为sdc 的文件)添加到工程文件中执行编译,这样工具就能够按照我们的时序要求来进行映射了。
2.2timequest快速入门示例下面我们按照altera公司所给的timequest快速入门教程示例来讲解该时序分析工具的大致用法。
使用的工具是目前使用最广泛的quartusII9.1版本提供的TimeQuest工具。
首先我们打开quartus工具的例程。
在quartus工具中选择File下的open project,选择qdesigns目录下的fir_filter工程。
打开后我们能够看到如图示的模块结构图。
图qdesigns目录下的FIR例程这个工程实现了一个FIR模块。
其输入端口为clk,clkx2,reset,newt,d[7:0];输出端口为follow,yvalid,yn_out[7:0]。
clkx2这个时钟是乘法器输出数据的寄存器触发时钟,而clk是整个模块其余部分的系统时钟。
对这个设计进行时序分析,首先需要在软件中设置timequest作为默认的时序分析工具。
以下为设置方法:在Assignments 菜单中,点击Settings,Settings 对话框出现后,在Category列表下选择Timing Analysis Settings,开启Use TimeQuest Timing Analyzer during compilation,选择OK。
设置好后,执行Start Analysis & Synthesis,对项目进行编译。
这一步建立了一个post-map的数据库,给给时序分析工具使用。
当然也可以给post-fit数据库,但是对于时序预估,post-map已经足够了,而且运行的时间会更短。
在tools菜单下,选择TimeQuest Timing Analyzer,启动TimeQuest工具。
此时自动打开的是当前的工程。
当出现"No SDC files were found in the Quartus Settings File and filtref.sdc doesn't exist. Would you like to generate an SDC file from the Quartus Settings File?" 对话框时,选择NO。
图timequest界面在Netlist菜单下点击Create Timing Netlist.在出现的对话框的Input netlist, 选择Post-Map. 点击OK。
完成这些步骤之后,我们就可以开始对设计指定时序上的要求了。
在软件界面的constraints菜单下,我们能够看到当前版本软件的所有可以指定的约束。
这里简要解释一下他们的功能。
第一部分是关于时钟的。
Create clock是用来指定系统中存在的时钟的信息,包括时钟的频率,占空比等。
可以指定多个时钟,或者给一个时钟指定多个频率分别进行时序分析。
Create generated clock是指定由输入时钟信号在FPGA内部生成的时钟,通常需要指定生成这个时钟的时钟源及生成关系。
Set clock latency和set clock uncertainty是指定时钟的输入延时以及时钟信号的不确定性,时钟间隙或者时钟转移的。
Set clock group是将设计中互斥的时钟放在不同的group里面,互斥的时钟可能是不同时钟域的,也可能是同一个时钟信号进行分析时指定了2种频率各自分析。
Remove clock是将之前指定的时钟从设计中移除。
第二部分是关于输入输出端口的。
只有约束了输入输出的时序,才是一个完整严谨的约束。
否则有些寄存器的时序无法进行分析。
第三部分是一些时序的例外。
包括False Path(忽略路径),Multicycle path(多周期路径),最大最小路径延时等。
菜单的第四部分支持从QSF 文件格式的标准时序分析器约束转换为TimeQuest 分析器的SDC 文件格式,将约束写入SDC文件,或者从SDC文件中读出时序信息。
图TimeQuest指定时序约束的界面接下来我们对FIR的设计指定时序要求。
首先是时钟。
FIR这个设计存在2个时钟,我们需要对时钟特性进行指定。
例子里面这两个时钟的要求为:Clk频率50 MHz,50/50占空比;clkx2为100 MHz,占空比是60/40。
在如下图所示的creat clk对话框中,可以指定时钟名称,Period是周期,默认单位ns;波形不填默认占空比50%,上升沿在前,否则时钟按照你指定的边沿时刻跳变,;targets 用来将指定的时钟与设计的端口进行匹配,最下面是显示将要添加进入SDC文件的命令行。
按照图中的示例指定clk与clkx2分别为50MHz和100MHz。
图指定设计中的时钟添加了时钟其实就可以在tasks框下的diagnosis里面快速查看时序报告了。
依次双击每一项,左上角report框中会出现相应的报告。
黑色字体的为时序正确的报告项,红色字体表示该项存在问题。
如下图所示,点击红色报告会出现问题的原因。
从图中可以看到,问题是因为有10个没有约束的输入端口,涉及了79条输入端口路径,以及10个没有约束的输出端口,涉及10条输出端口路径。
也就是说,时序工作认为一个完整的约束,每一个端口,每一条路径都需要指定时序要求,否则时序分析无法覆盖所有的触发器。
图快速报告时序结果及显示时序异常在clock transfers报告下,可以看到时钟转移路径。
FIR设计中不需要分析从clk 到clkx2的路径,因为他们是虚假路径。
因此需要设置false path。
在clk到clkx2路径上右击鼠标,选择set false path。
之后工具背景变成淡黄色,出现out of data水印。
整个分析结果需要update一次。
设置了时钟的约束,可以得到分析报告,还可以将指定的时序要求写入SDC 文件中。
双击Task窗口下的Write SDC File,填写自定义的文件名称,就可以将之前设置的约束写入后缀名的.sdc的文件中。
之后在TimeQuest的File目录下选择Open SDC文件,打开刚才自己命名的文件,就能够看到文本形式的时序约束信息,还包括使用的期间,创立工程的日期等。
这个SDC文件将添加到工程中重新执行编译,以约束映射及布局布线。
图SDC文件的内容除了指定时钟信号,完整的时序约束还需要Set input和output delay,这样可以指定外部器件以及板级的时序。
如果设定了这两项,TimeQuest将对整个系统执行静态时序分析。
设置输入输出的时序可以将信息写入新的SDC文件,也可以在之前的文件中继续添加时序信息。
在Constraints菜单下单击Set Input Delay,出现相应对话框。
按照如下输入,其余默认:Clock name: clkDelay value: 2Targets: [get_ports {d[0] d[1] d[2] d[3] d[4] d[5] d[6] d[7] newt reset}] 在Constraints菜单下单击Set Input Delay,出现相应对话框。
按照如下输入:Clock name: clkDelay value: 1.5Targets: [get_ports {yn_out[0] yn_out[1] yn_out[2] yn_out[3] yn_out[4] yn_out[5]yn_out[6] yn_out[7] yvalid follow}]这里的约束的意思是,将输入信号的到达触发器端口时间相对于时钟clk 的有效边沿的延时设置为2ns。
将输出端口的数据要求时间与给定时钟的延时设置为1.5ns。
这样再生成Unconstrained Paths Summary report,就可以看到未约束的路径数为0。
也就是所有的路径都得到了约束。
2.3查看时序报告添加了完整约束后将约束写入SDC文件。
这种我们就可以查看每一条指定的路径具体的时序结果了,当然也可以看到最差的时序路径是哪一条。
这里的报告非常多,甚至包括很多本书作者一时无法解释的报告项,读者需要自行尝试锻炼。
这里仅介绍customer report 下面的timing项的使用方法时序报告的理解。
选择了customer report 下面的timing,会出现如下对话框:图report customer timing对话框在这个对话框中,用户可以自行指定需要报告的时序路径,包括时钟域的,也可以指定特定node,还可以选择分析的是建立时间,还是保持,恢复以及移除时间;可以选择一次报告的时序路径数目等。
点击report timing之后,工具会将相应数量的时序路径按照时序余量由小到大排列出来。
如果存在时序违例,特定的路径将被标红并且放到列表的最前。
在出现的报告之中,有3个主要的框。
上面的一个框将所有路径结果以表格的形式列出。
下面的2个一模一样的对话框显示的是表格中选中路径的时序结果,2个显示框是为了方便对照着查看该路径的时序。
图特定路径时序结果报告这两个一样的对话框有4个子目录可以看到path summary,statistics,data path,以及waveform。