TimeQuest快速入门
TimeQuest就一定要搞定 完整版

一、为什么一定要搞定为什么一定要搞定时序分析在ASIC设计中的重要性毋须多说(我也不甚了解)。
在FPGA设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束。
这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的。
好的时序约束可以指导布局布线工具进行权衡,获得最优的器件性能,使设计代码最大可能的反映设计者的设计意图。
花些功夫在静态时序分析上既可以保证设计质量,也可以促使设计者再认识自己的代码。
这后一点,对于我们这些逻辑设计初学者来说,尤为重要。
从门级(在Altera的FPGA 器件中是LE级)再认识自己的代码,可以更深入地体会语言的特点,也可以更深入地理解综合工具对语言的处理,对于设计能力的提高帮助很大。
TimeQuest是Altera在6.0版的软件中加入的具备ASIC设计风格的静态时序分析(STA)工具。
通过初步试用和观看网络教程,我感觉TimeQuest确实比Timng Analyzer 功能强大一些,而且使用界面比较友好,易于进行深入的时序约束和结果分析。
TimeQuest采用Synopsys Design Constraints(SDC)文件格式作为时序约束输入,不同于Timing Analyzer采用的Quartus Settings File(QSF)约束文件。
这正是TimeQuest 的优点:采用行业通用的约束语言而不是专有语言,有利于设计约束从FPGA向ASIC设计流程迁移;有利于创建更细致深入的约束条件。
二、时序分析基本概念时序分析基本概念以下内容译自Quartus II Version 10.0 Handbook, Volume 3:Verification的SectionII 7.3:Timing Analysis Overview部分。
TimeQuest需要读入布局布线后的网表才能进行时序分析。
读入的网表是由以下一系列的基本单元构成的:1. Cells:Altera器件中的基本结构单元(例如,查找表、寄存器、IO单元、PLL、存储器块等)。
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 管脚。
阿东带您学习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开发工程师。
颂拓说明书

中文 EN
目 录
第一章 概述...............................................................................................................................5 1.1 基本信息..................................................................................................................5 1.2 保养和维护. .............................................................................................................5 1.2.1 SuuntoObserver的保养..................................................................................5 1.3 防水.........................................................................................................................6 1.4 电池更换..................................................................................................................6 1.5 调节表带(ST和TT型号).......................................................................................8 1.6 主要功能(模式)....................................................................................................9 1.7 背景灯特点. .............................................................................................................9 1.8 按钮功能..................................................................................................................9 1.9 液晶屏显示. ...........................................................................................................10 1.10 度量和单位. .........................................................................................................11 1.10.1 设置或检查度量单位...................................................................................11 1.11 大气压传感校准(PRESSURE SENSOR CALIBRATION)................................12 第二章 时间(TIME)模式......................................................................................................13 2.1 设置时间和日历. ....................................................................................................13 2.2 记时计(CHRONOMETER)子模式.......................................................................14 2.2.1 如何使用记时计............................................................................................14 2.2.2 查看记时计存储器(Chronometer Memory)..................................................15 2.3 闹钟(DAILY ALARM)子模式. ................................................................................16 2.3.1 设置闹钟. .....................................................................................................17 第三章 高度计(ALTIMETER)模式. .........................................................................................17
TimeQuest快速入门实例及时序查看

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工具的例程。
Timex 数字手表说明书

TimeQuest User Guide 翻译

Section 1: Getting StartedCore Timing在编译工程以后,调用Timequest。
如果SDC文件没有创建,那么可以到File->New 选项创建一个新的SDC文件。
Constraining the Core with Four Commands每个 .sdc文件都应当以下面四个命令作为开头:∙- create_clock∙-derive_pll_clocks∙-derive_clock_uncertainty∙-set_clock_group前三个命令是重要的。
命令的细节描述可以通过-long_help帮助显示出来:∙create_clock -long_help∙derive_pll_clocks -long_help∙derive_clock_uncertainty -long_help∙set_clock_groups -long_helpcreate_clock当我们创建一个新的SDC文件,首先要做的就是约束输入FPGA端口的时钟信号,通过使用create_clock命令。
基本的格式如下: create_clock -name sys_clk -period 8.0 [get_portsfpga_clk]注意:1.上面的命令创建了一个周期为8ns的系统时钟sys_clk,并将该时钟连接到我们FPGA的时钟输入端口fpga_clk;2.Tcl和SDC是case-sensitive的,所以请确认fpga_clk 和我们设计的时钟参数相符合;3.该时钟在0ns时刻产生一个上升沿,具有50%的占空比,因而其下降沿在4ns处。
如果我们想产生不同占空比,或者添加一个时钟偏移offset,可以使用-waveform选项。
但很少需要这么做。
4.我们经常会去创建一个与端口port同名的时钟信号,这种做法是不合法的。
下面的例子:create_clock -name fpga_clk -period 8.0 [get_ports fpga_clk]现在有两个单元都有name叫做fpga_clk,一个是端口,一个我们定义的时钟。
TimeQuest

QSF是Quartus Settings File的缩写,包含了一个Quartus工程的所有约束,包括工程信息、器件信息、引脚约束、编译约束和用于Classic Timing Analyzer的时序约束。
SDC是Synopsys Design Constraints的缩写,该文件用于TimeQuest Timing Analyzer的时序约束和定制报告。
在TimeQuest中把Classic Timing Analyzer的约束语句转换为SDC是很容易的。
在Constraints菜单下,执行Generate SDC File from QSF即可。
上面这些文件可以分为五类:1. 编译必需的文件:设计文件(.gdf、.bdf、EDIF输入文件、.tdf、verilog设计文件、.vqm、.vt、VHDL 设计文件、.vht)、存储器初始化文件(.mif、.rif、.hex)、配置文件(.qsf、.tcl)、工程文件(.qpf)2. 编译过程中生成的中间文件(.eqn文件和db目录下的所有文件)3. 编译结束后生成的报告文件(.rpt、.qsmg等)4. 根据个人使用习惯生成的界面配置文件(.qws等)5. 编程文件(.sof、.pof、.ttf等)上面分类中的第一类文件是一定要保留的;第二类文件在编译过程中会根据第一类文件生成,不需要保留;第三类文件会根据第一类文件的改变而变化,反映了编译后的结果,可以视需要保留;第四类文件保存了个人使用偏好,也可以视需要保留;第五类文件是编译的结果,一定要保留。
在使用版本控制工具时,我通常保留第一类、第三类和第五类文件。
但是第三类文件通常很少被反复使用。
所以,为了维护一个最小工程,第一类和第五类文件是一定要保留的。
Quarutus II编译过程中,通常要顺序运行quartus_map、quartus_fit、quartus_asm、quartus_tan四个进程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TimeQuest快速入门简介本教程介绍用TimeQuest Analyzer进行时序约束和静态时序分析的必要步骤。
所用示例文件在\qdesigns\fir_filter文件夹下。
TimeQuest约束步骤下面的步骤描述了用TimeQuest对设计进行时序约束的步骤,每一步操作包含GUI和Command-line的操作方法。
第1步:在QuartusII中打开&建立工程启动QuartusII软件,在\qdesigns\fir_filter文件夹下打开工程compile_fir_filter.qpf。
第2步:设置TimeQuest Analyzer默认状态下,QuartusII使用Classic Timing Analyzer作为默认的时序分析工具。
需要在QuatusII中进行如下设置将TimeQuest Analyzer设为当前工程的时序分析器。
在【Assignment】菜单下单击【Settings】,在【Category】列表中展开【Timing Analysis Processing】,选择【Use TimeQuest Analyzer during compilation】,然后点击【OK】即可。
第3步:进行初始的编译在将时序约束应用到设计之前,需要为TimeQuest创建初始的数据。
初始数据是通过post-map结果产生的。
步骤如下:在【Processing】菜单栏下,选择【Start】/【Start Analysis&Synthesis】。
通过运行【Analysis&Synthesis】产生post-map数据。
还可以用post-fit网表来产生初始数据。
但是创建post-map数据所用时间更少,而且post-map数据对本设计示例工程来说已经够用。
第4步:启动TimeQuest Analyzer为了创建并验证时序约束,需要启动TimeQuest Analyzer。
在【Tools】菜单下,单击【TimeQuest Analyzer】启动TimeQuest Analyzer。
第5步:创建Post-Map时序网表在指定时序要求前,需要首先创建一个时序网表。
可以从post-map或post-fit 数据中创建时序网表(见第3步)。
利用post-map数据创建时序网表的方法为:在【netlist】菜单下,单击【Create Timing Netlist】,在弹出的对话框中,选择【Input netlist type】下的【Post-Map】,单击【OK】。
不能通过【Task】面板下的【Create Timing Netlist】命令来创建post-map网表。
在默认情况下,【Create Timing Netlist】需要post-fit数据。
第6步:指定时序要求在fir_filter设计中,需要定义两个时钟。
表1中列出了两个时钟的属性。
在【Constraints】菜单下,单击【Create Clock】,弹出【Create Clock】对话框。
按表1的要求进行设置。
并在【Targets】单击右侧按键打开【Name Finder】对话框,单击【list】,在列表中选择[clk],单击【OK】即可。
用同样的方法对[clkx2]进行设置。
默认情况下,时钟信号的占空比为50%。
第7步:更新时序网表当创建时序约束后,必需更新时序网表,将所有的时序要求应用于时序网表中。
用如下步骤将clk和clkx2的时钟约束更新到时序网表中。
在【Task】面板中,双击【Updata Timing Netlist】,即可更新时序网表。
第8步:保存Synopsys Design Constraints(SDC)文件在产生时序报告前,需要首先创建SDC文件。
在指定时序约束、更新时序网表后,应该创建一个SDC文件。
所有的时序约束被保持的SDC文件中。
后续如果不小心改写了时序约束,可以通过最初的SDC文件来重新恢复最初的时序设置。
最初的SDC文件可以被当做“Golden”SDC文件,因为它里面包含了设计最原始的时序约束。
创建SDC文件的步骤为:在【Tasks】面板中,双击【Write SDC File】,在弹出的【Write SDC File】对话框中输入文件名“Filterf.sdc”。
现在filterf.sdc文件中包含在第6步中设置的两个时钟的约束。
【Write SDC File】命令可以覆盖原来的SDC文件。
因此,推荐保存一个“Golden”SDC文件,可用通过文本编辑器来编辑此文件。
第9步:产生时序报告当更新时序网表后,可以为定义的两个时钟产生时序报告。
为了产生报告来验证所有的时钟被正确的定义且应用到合适的节点,在【Tasks】面板中双击【Report SDC】命令,弹出如图1所示的报告。
图1 Report SDC产生的报告TimeQuest Analyzer仅产生[Create Clock]报告是因为这是设计中仅有的时序约束。
当产生【Report SDC】报告后,还可以产生一个报告,里面包含了设计中所有时钟的信息,步骤为:在【Tasks】面板中,双击【Report Clocks】命令,弹出如图2所示报告。
图2 Report Clock产生的报告当产生【Report Clocks】报告后,可以用【Report Clock Transfers】命令来产生报告来验证所有的时钟-时钟传输的有效性。
此报告中包含了设计中所有的clock-to-clock的传输。
步骤为:在【Tasks】面板中双击【Report Clock Transfer】命令。
弹出如图3所示的报告。
图3 Clock Transfer报告【Report Clock Transfers】报告说明源时钟clk和目的时钟clkx2之间存在数据传输。
有9个实例是clk驱动源节点,clkx2驱动目的节点。
在fir_filter设计中,应该声明所有的clk-to-clkx2的时钟传输,即false paths。
在【Clock Transfers】报告中,在【From Clock】栏中选中[clk]。
右击,然后选择【Set False Paths Between Clock Domains】。
此命令将切断两个时钟域之间的路径。
当执行完以上命令后,TimeQuest会提示Clock Transfer报告过时了。
因为添加了新的时序约束,需要更新时序网表。
在【Tasks】面板中,双击【Update Timing Netlist】即可更新时序网表。
当执行【Set False Path】命令后,所有产生的报告被打上“Out of Date”的标号,说明说有的报告都已经不能包含当前的时序约束。
需要重新产生相应的报告。
当更新完时序网表后,可以用【Report SDC】命令来验证clock-to-clock之间被切断的传输。
在【Tasks】面板中双击【Report SDC】命令后,弹出如图4所示的报告。
图4 Report SDC弹出的报告图4的报告说明时钟约束和false paths被更正。
现在可以重新进行【Report Clock】和【Report Clock Transfers】来验证,两个时钟被移除的分析。
图5为【Report Clock Transfers】命令产生的报告。
图5 Clock Transfer的报告“User Cut”说明用户已经cut the clock domains。
第10步:保存约束到SDC文件当指定所有的时钟约束和false paths后,应该将时序约束保存到SDC文件中。
在【Tasks】面板中,双击【Write SDC File】,在弹出的对话框中输入文件名filtref.sdc即可。
当覆盖以前的sdc文件时,系统会提示是否覆盖。
第11步:执行Timing-Driven编译当保存SDC文件后,进行完全编译来优化布局来满足约束条件。
当进行完全编译之前,需要将SDC文件添加到工程中。
在QuartusII主界面中,单击【Project】菜单下的【Add/Remove Files In Project】,将SDC文件添加进去即可。
然后在【Processing】菜单下,单击【Start Compilation】进行编译。
当编译完毕后,TimeQuest Analyzer会产生一个报告包含时钟的建立和保持时间的检查。
第12步:在TimeQuest Analyzer中验证时序为了得到指定路径的详细时序分析,需要在TimeQuest Analyzer中查看时序分析结果。
执行完全编译后,需要重新启动TimeQuest,具体步骤见“第4步”。
需要产生新的时序网表、读取SDC文件、更新时序网表来为最新的编译产生报告。
为此,执行下面的操作:在【Tasks】面板中,双击【Create Timing Netlist】,【Read SDC File】,【Update Timing Netlist】。
当双击以上命令后,系统会自动建立时序网表。
时钟建立时间的检查确保register-to-register之间的数据传输不会违反在SDC文件中指定的约束。
通过产生时钟建立时间报告来验证时序。
通过双击【Tasks】面板上的【Report Setup Summary】命令来产生报告,如图5所示。
图6 Setup报告Clkx2时钟没有在【Summary Setup】中报告,是因为clk和clkx2之间的路径已经被剪掉。
当产生【Summary Setup】报告后,可以通过【Tasks】面板中的【Report Hold Summary】命令来产生保持时间的报告。
图7 Hold报告Slack栏为正,说明保持时间满足时序要求。
可以通过【Tasks】面板下【Macro】栏下的【Report All Summaries】命令来产生下列的报告:【Setup】,【Hold】,【Recovery】,【Removal】,【Minimum】,【Pulse Width】和【Clocks】。
在进行全面编译之前应该制定所有的约束和例外。
这可以保证Fitter对设计中的关键路径进行优化。
可以用【Tasks】面板中的【Report Unconstrained paths】命令来验证是否对fir_filter设计中所有的路径进行了约束。
图9 未进行约束的路径图9中显示出有些路径没有被约束。
为了对设计进行约束,所有的输出和输入端口必须被约束。
可以用【Set Input Delay】和【Set Output Delay】对话框来约束输入和输出的延时。
额外的约束被添加到设计中,可以创建一个新的SDC文件来保存输入输出约束,如inout.sdc。
添加输入/输出延时的步骤如下:在【Constraints】菜单中点击【Set Input Delay】,弹出【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}]同理在【Set Output 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}]至此,所有的端口都已经被约束。