TimeQuest快速入门实例及时序查看

合集下载

时序分析基础与时钟约束实例3

时序分析基础与时钟约束实例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使用教程(中文版)

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

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时序余量计算

图解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静态时序分析学习笔记之命令约束第⼆章约束命令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 时序分析流程和方法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

阿东带您学习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开发工程师。

图解Setup Time时序余量计算

图解Setup Time时序余量计算

一图胜千言。

Quartus II7.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视图。

时序分析与时序约束

时序分析与时序约束

时序分析与时序约束(基于TimeQuest Timing Analyzer)一、基础篇:常用的约束(Assignment/Constraints)分类:时序约束、区域与位置约束和其他约束。

主要用途:1、时序约束:规范设计的时序行为,表达设计者期望满足的时序条件,指导综合和布局不同阶段的优化算法等。

简而言之就是规范和指导的作用。

倘若合适的话,它在综合、影射、布局布线的整个流程中都会起指导作用,综合器,布线器都会按照你的约束尽量去努力实现,并在静态时序分析报告中给出结果。

2、区域与位置约束:指定芯片I/O引脚位置以及指导实现工具在芯片中特定的物理区域进行布局布线。

3、其他约束:主要作用:1、提高设计的工作频率:通过附加时序约束可以控制逻辑的综合、映射、布局和布线,以减少逻辑和布线的延时。

其实,综合后的结果只是给出你的设计一个大概的速度范围,布线后的速度比综合后给出的结果要低,这是因为综合后只有器件的延时,而布线后除了器件的延时还要加上布线上的延时。

至于低多少就看设计者的约束能不能很好的指导布线器进行优化了。

2、获得正确的时序分析报告:在QuartusII 中,内嵌的是静态时序分析工具(STA, Static Timing Analysis),他的作用就是设计进行评估,只有在正确的输入时序约束的情况下,才能得到可靠的报告。

同时也是做FPGA设计时是必须的一个步骤,事实上大家一般都已经做了这一步,我们在FPGA加约束、综合、布局布线后,会生成时序分析报告,设计人员会检查时序报告、根据工具的提示找出不满足setup/hold time的路径,以及不符合约束的路径,这个过程就是STA。

此外,STA是相对于动态时序仿真而言的,它通过对每个时序路径的延时分析,计算出最高的设计频率(fmax),发现时序违规(Timing Violation)。

注意:静态时序分析仅仅聚焦于设计时序性能的分析,而不会涉及逻辑性能。

在STA中主要分析的路径有:时钟路径,异步路径,数据路径。

TimeQuest实例:基本源同步输出

TimeQuest实例:基本源同步输出

TimeQuest实例: 基本源同步输出这些实例介绍了采用Synopsys设计约束(SDC)来约束源同步输出时序的两种方法。

如果要约束源同步输出时序,必须采取方法规定相对于FPGA时钟驱动输出的输出延时。

生成时钟您可以在 FPGA 时钟输出端口建立一个生成时钟。

生成时钟自动计算与源时钟的延时。

必须进行以下三种约束来约束图 1 中简单电路的输出。

•基本时钟驱动 clk_in 端口•clk_out 端口的生成时钟•data_out 端口的输出延时约束,相对于 clk_out 端口的生成时钟。

图1.带有生成时钟的源同步约束以下 SDC 命令对输出进行约束。

# Define the input clockcreate_clock -period 10 -name clk_100 [get_ports clk_in]# Apply a generated clock to the output of the PLLcreate_generated_clock -name pll_output \-source [get_pins inst|altpll_component|pll|INCLK[0]] \[get_pins inst|altpll_component|pll|CLK[0]]# Apply a generated clock to the clk_out portcreate_generated_clock -name clk_out \-source [get_pins inst|altpll_component|pll|CLK[0]] \[get_ports clk_out]set_output_delay -clock clk_out 1.200 [get_ports data_out]-reference_pin选项-reference_pin选项是Altera专用SDC扩展,简化了对源同步输出的约束。

TimeQuest快速入门实例及时序查看

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工具的例程。

timescale使用

timescale使用

timescale使用Timescale是一个开源的时间序列数据库,它是基于PostgreSQL构建的,并支持标准的SQL查询语言。

Timescale专注于处理高容量的时间序列数据,以及实时和历史数据的查询和分析。

以下是关于Timescale的使用的一些详细信息。

1.安装和配置Timescale是一个扩展,需要在已经安装了PostgreSQL的环境中使用。

可以通过源代码安装,或者使用预编译的二进制文件。

安装过程与安装PostgreSQL类似,但需要注意Timescale版本与PostgreSQL版本的兼容性。

安装完成后,还需要进行一些配置,例如设置默认数据库、启用Timescale扩展等。

2.创建和管理分区表Timescale通过使用分区表来处理大量的时间序列数据。

分区表将数据根据时间范围划分为多个子表,以提高查询性能。

可以使用标准的SQL语句来创建和管理分区表,例如使用"CREATE TABLE"语句创建主表和子表,使用"CREATE FOREIGN TABLE"语句创建与主表关联的子表等。

3.时间序列数据的插入和查询使用Timescale插入时间序列数据非常简单,只需要将数据按照时间顺序插入即可。

可以使用标准的SQL语句,例如"INSERT INTO"语句插入单行数据,或者使用批量插入功能插入多行数据。

查询时间序列数据也很方便,可以使用标准的SQL查询语句,例如"SELECT"语句,还可以使用特定的Timescale扩展函数,例如"TIME_BUCKET"函数将时间序列数据按照时间粒度进行分桶。

4.数据保留策略和数据压缩Timescale提供了灵活的数据保留策略,可以根据需求设置数据的保留时间。

可以通过设置分区表的保留期限、保留策略和过期时间等参数来管理数据的保留。

此外,Timescale还提供了数据压缩功能,可以通过设置压缩策略和压缩参数来减少存储空间和查询时间。

TimeQuest

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四个进程。

FPGA时序约束--TimeQuest基础

FPGA时序约束--TimeQuest基础

FPGA时序约束—TimeQuest基础分类:FPGA相关2012-02-19 11:20 830人阅读评论(0) 收藏举报时序约束的目的是:规范设计的时序行为,表达设计者所期望满足的时序条件,指导综合和布局布线阶段的优化算法等,作用:提高系统设计的fmax、得到正确的时序分析报告一、 TimeQuest分析流程二、 TimeQuest分析步骤1. 在工程编译之前,先要选择时序分析工具,这里选择TimeQuest工具:Setting/Timing Analysis Setting/Use TimeQuest Timing Analyzer during compilation选项2. 加入SDC文件,可以先运行TimeQuest编写SDC文件或者先建立一个空的SDC文件(按照个人习惯),也可以加入TCL文件,这里和SDC文件是等价的,当然用TCL工具会更加方便。

3. 开始编译QuartusII的整个工程4. 启动TimeQuest工具此图为TimeQuest的开始界面,1) Generate timing netlist:右键Start产生时序网表2) Read in SDC File :读取在之前加入SDC文件,便于在SDC文件中在继续加入其他的约束3) 打开SDC文件就可以加入自己要加的约束了4) 在Constraints里有一些加入约束的工具,可以一步一步的加入当然,这里有个先后时序,有的人经验比较丰富的,先建立SDC文件,然后再Timequest 中看分析结果,或进一步优化约束,作为入门可以在TimeQuest中加入约束,然后再编译再查看分析结果。

5)查看分析结果在Report是中查看Setup Hold等分析结果根据报告分析时序违规路径,具体的SDC文件编写和时序分析在后面的博文中会陆续讲到。

TimeQuest用户说明材料

TimeQuest用户说明材料

JAQLEUNGTimeQuest用户手册原文:TimeQuest User Guide(By: Ryan Scoville)秋哥小刀2017/5/11本译文包括原文的大部分内容,由于翻译水平有限,建议在阅读本译文后能够研读原文。

目录第一章译文说明 (1)第二章入门 (2)1. 片内时序 (2)2. I/O 时序 (2)3. 时序分析结果 (7)第三章时序分析基础 (1)1. Setup、Hold、Recoverry和Removal概念基础 (1)2. 默认时序关系 (2)3. 多周期 (2)4. 最大和最小延时 (2)5. Recovery和Removal (2)第四章SDC约束 (2)第五章TimeQuest界面 (3)第六章时序模型 (3)第七章Quartus II与时序约束 (3)第八章SDC与分析脚本的TCL语法 (3)第九章常用结构与电路 (3)第十章实例 (3)第十一章杂谈 (3)第一章译文说明在翻译过程中,很多专业术语使用直译的方式往往不易理解,但选择的中文词汇又怕引起歧异,所以在这里罗列了这些词汇的准确英文拼写。

在阅读过程中,若是出现难以理解的语句,请首先对照相关词汇的英文词组以读者的思维重新理解,或是直接阅读英文原文的相关章节。

第二章入门本章的编写目的是为了让用户可以更快速地上手操作时序约束。

以下内容将涉及到多个主题,以帮助用户快速理解和应用时序约束技术,关于这些主题的详细内容将在后续章节中讲解。

建议所有用户通读本章并确认已完全理解本章内容。

本章的最后一节为时序分析结果,理解时序分析结果是进行时序约束不可或缺的一部分。

如果不能读懂时序分析报告,将不具备对片上时序和I/O时序约束的能力。

所以,推荐在本章学习过程中能够始终结合时序分析结果进行阅读。

1.片内时序编译项目成功并启动TimeQuest,然后就可以输入时序约束命令了。

如果项目中尚未添加SDC文件,可通过菜单File->New来新建一个.sdc文件。

timestamp 用法

timestamp 用法

timestamp 用法一、概述Timestamp 是用于表示时间戳的数据类型,通常用于记录时间信息。

时间戳可以表示某个时间点或时间段,常用于数据记录、日志记录、时间比较等场景。

二、基本用法1. 创建时间戳:可以使用系统时间函数或第三方库来创建时间戳。

例如,在MySQL 中可以使用 NOW() 函数获取当前时间作为时间戳;在 Python 中可以使用datetime 模块的 datetime.now() 方法获取当前时间作为时间戳。

2. 时间戳比较:可以使用比较运算符(如 ==、>、<、>=、<=)对时间戳进行比较,判断两个时间点或时间段是否相等或存在先后关系。

3. 时间戳转换:可以将时间戳转换为其他时间单位,如秒、分钟、小时、天等。

可以使用 datetime 模块的 timedelta 对象进行转换。

4. 时间戳排序:可以将时间戳列表进行排序,按照时间顺序排列。

可以使用Python 中的 sorted() 函数或列表对象的 sort() 方法进行排序。

三、常见操作1. 插入时间戳:可以将时间戳插入到数据库表中,用于记录数据发生的时间。

2. 查询时间戳:可以根据时间戳查询相关数据,如按照时间范围查询、按照指定时间查询等。

3. 时间戳过滤:可以使用时间戳进行数据过滤,如按照时间段过滤、按照最早/最后时间过滤等。

4. 时间戳统计:可以根据时间戳进行数据统计,如按照时间段统计数据量、按照最早/最后时间统计数据量等。

四、注意事项1. 时间戳的精度:时间戳通常以秒为单位,但有些系统可能以毫秒或微秒为单位记录时间戳。

需要根据具体情况进行判断和转换。

2. 时间戳的稳定性:时间戳应具有稳定性和可靠性,避免因系统故障或异常情况导致时间戳不准确或丢失。

3. 时间戳的兼容性:不同系统或不同数据库可能使用不同的时间戳格式和标准,需要确保时间戳的兼容性和可移植性。

五、示例代码以下是一个简单的 Python 代码示例,用于创建时间戳、比较时间戳和转换时间戳:```pythonimport datetime# 创建时间戳timestamp = datetime.datetime.now()print("当前时间戳:", timestamp)# 比较时间戳old_timestamp = datetime.datetime(2023, 3, 15, 10, 30, 0)new_timestamp = datetime.datetime(2023, 3, 15, 10, 45, 0)if old_timestamp > new_timestamp:print("旧时间戳晚于新时间戳")else:print("旧时间戳早于或等于新时间戳")# 将时间戳转换为其他单位seconds = timestamp.total_seconds() # 转换为秒数minutes = timestamp.minute # 获取分钟数hours = timestamp.hour # 获取小时数days = timestamp.day # 获取天数```以上是《timestamp 用法》文档的全部内容,希望对您有所帮助。

promql timestamp用法

promql timestamp用法

promql timestamp用法PromQL(Prometheus Query Language)是用于查询和分析Prometheus监控系统中的时间序列数据的查询语言。

在PromQL中,可以使用一些函数来处理时间戳(timestamp)相关的查询。

以下是一些PromQL中处理时间戳的用法:1. time() 函数:- `time()` 函数用于获取当前时间戳。

例如,`time()` 返回当前的Unix时间戳,以秒为单位。

time()2. timestamp() 函数:- `timestamp(vector instant-vector)` 函数用于获取时间序列的时间戳。

该函数接受一个瞬时向量 (instant-vector)作为参数,返回该向量中每个时间序列的时间戳。

timestamp(my_metric)3. offset() 函数:- `offset(vector range-vector, scalar offset)` 函数用于将时间序列的时间戳向前或向后移动。

`range-vector` 是一个时间范围内的向量,`offset` 是时间戳的偏移量。

offset(my_metric[5m], 1h)上述示例将 `my_metric` 的时间序列向前移动1小时。

4. time() 函数的过滤:- `time()` 函数可以与比较操作符一起使用,用于过滤具有特定时间戳的数据。

my_metric{time() > 1642000000}上述示例选择时间戳大于1642000000的 `my_metric` 数据。

这些是PromQL中处理时间戳的一些基本用法。

PromQL还支持许多其他时间序列操作和函数,具体用法取决于你的查询需求。

在使用PromQL时,可以查阅Prometheus文档以获取更详细的信息和示例。

Xilinx-Timing-Analyzer使用札记

Xilinx-Timing-Analyzer使用札记

Xilinx Timing Analyzer使用札记虽说当初刚接触FPGA的时候学的是ISE,但是真正深入学习还是在Quartus II平台上。

现在项目需要,又得重新来玩转ISE了,虽说QII和ISE很多东西是相通的,不过还是有那么点操作上的差异在里头。

用惯了TimeQuest的特权同学折腾起这个Xilinx Timing Analyzer也是一愣一愣的,好不适应。

花了点时间在Help上,还好这个Help的说明还是蛮到位的。

列几个常用的技巧或者说是简单的操作以及特权同学遇到的问题在这里和大家一起学习和探讨。

1.四种时序分析查看方式。

在同等条件下,其实这四种查看方式得到的时序报告结果是一致的,因为它是基于一个时序结果进行的。

如图1所示,工具栏上的这四个时序分析按钮分别代表了(从左到右):序号功能1根据时序约束产生的时序分析报告。

2自动产生的时序分析报告。

在同等的时序约束条件下,那么该报告的结果肯定和1的结果是大同小异的。

3用户指定的路径的时序报告,主要是路径端点的时序报告。

4用户指定的路径的时序报告,主要是时钟或者IO的时序报告。

图12.打开Xilinx Floorplanner或Xilinx FPGA Editor后,在详细时序报告中点击任何一条路径或者net等,这里点击了Data Path:dsp_addr<10> to uut dspc/Mtridata dsp_out_dbr_5(如图2),相应的可以看到其在F loorplanner(如图3)或FPGA Editor中的位置(如图4)。

图2图3图43.在查看unconstrained path ayalysis时,遇到了一些问题,clk是FPGA片外晶振输入的时钟,从PAD输入后直接连到DLL,而不直接钟控任何寄存器。

但是在unconstrained path报告中却出现了clk到内部所有寄存器的路径。

详细的查看这些路径,发现这些路径无外乎是内部DLL输出的两个使用到的时钟的路径。

看懂时序波形图

看懂时序波形图

时序分析和时序约束在很多朋友看来是FPGA设计中的“高级”技术,是可以“明天再学”的功课。

想一想,我们设计的每一个正确运行的数字电路在每一个ps内都正在我们有意或者无意设定的时序约束范围内运行着——时序分析这门所谓“高级”的技术,体现的正是数字电路运行的基本原理。

我们今天放弃学习的科目,正是我们最需要学习的“基本”技术。

我学习时序分析和约束只是刚刚入门。

从我学习时序分析的经历看来,学习使用时序分析工具并不难,有文档可以参考,有例子可以实践,EDA工具本来就是方便设计者使用的,好学好用是理所应当的;理解时序分析的概念和原理确实有一定难度,强记几个公式不难,依样画葫芦把数值代入公式得到与时序分析结果相符的数值也是小学水平,可是在实践中,却总是难以理清这些数值之间的关系,“打哪儿指哪儿”容易,“指哪儿打哪儿”太难。

知其然而不知其所以然,这是我最初面对那些时序分析计算结果时的感受。

带着这样的感受,我一直徘徊在时序分析技术的门外。

直到最近一段时间以来,才逐渐摆脱了这种不踏实、不自信的感受。

这是得益于反复观察和分析TimeQuest中的Waveform视图。

从这一自学过程中,总结出学习时序分析原理的一个关键点:在脑海中建立时序分析公式与实际电路物理属性之间的映射关系。

建立了这种映射关系,才能理解时序分析公式的意义和来历,才能做到知其所以然,才能做到定性和定量地分析电路的时序性能。

时序波形图是建立这一映射关系的好帮手。

波形图对于理解电路运行时序的重要性,恐怕所有做过仿真的朋友都深有体会。

为什么波形图如此重要,因为硬件电路是并行运行的。

即使一个最简单的同步电路中也会有两个以上的信号在同时变化和相互作用。

人脑并不擅长处理并行过程,这需要太多的内存来记忆中间变量,需要太多的循环来更新这些变量。

人的注意力很难保持太长时间,稍不留神,头脑中的并行仿真过程就失败了。

这也是为什么我们需要仿真工具的原因,保留我们的精力去做更重要和更具创意的事,让电脑代替人脑做我们不擅长的工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档