quartus时序分析文档理解与翻译(1)
2014-08-06 23:40
549 查看
(1)TimeQuest Analyzer速速入门
看完这里,就可以按部就班的对我们的工程进行时序方面的设置和分析,并通过TimeQuest Analyzer来约束我们的设计。
怎样打开TimeQuest Analyzer就不说了。
TimeQuest Analyzer是一个独立的GUI应用 ,可以被独立于quartus软件打开。命令行操作忽略。
推荐的设计流程:可以最大化的TimeQuest Analyzer发挥的作用
1、创建工程,并完成设计;2、执行初次编译;3、制定时序要求;4、在此执行编译;5、查看时序结果。
(1)创建工程,并完成设计
完整的创建工程,你知道怎么做的,并加入已经有的SDC文件。
(2)执行初次编译
如果工程还从没有编译过,或者你压根就没有SDC文件并且想通过TimeQuest Analyzer来创建一个SDC文件,那么还请你在制定时序约束之前编译一下,以便生产出所需的database,你可以只通过执行Analysis and Synthesis来创建一个post-map的database,也可以通过执行full compilation来生成一个post-fit database。我想你知道生成post-map的database会更快一点,并且其实他对于创建初始的时序约束已经足够。不同的database决定了TimeQuest
analyzer产生的时序网标(timing netlist)的类型。
(如果使用了增量编译,在Analysis and Synthesis之后,必须执行merger操作)
(3)制定时序要求
在使用TimeQuest analyzer进行时序分析之前,我们必须制定好时序约束:设计中的时钟特性、时序例外和信号传输的到达和需求时间( arrival and required times),我们可以使用TimeQuest analyzer的一个时序设置向导——TimeQuest Timing Analyzer Wizard来一步步的进行时序约束的建立,然后使用GUI界面进行修改完善。
对于没有约束的clock信号,quartus默认设置约束为1Ghz——这点可以证明一个现象,在对一个时钟没有设置约束时,在进行了时序分析后居然有负的slack。
.sdc文件只能包含SDC命令;tcl命令一般用于修改时序网标或者控制编译流程,他们必须作为TCL脚本被运行(就想引脚约束的tcl一样,必须被运行才能生效)。在创建了时序约束后,使用新的约束更新一下时序网标,这是TimeQuest Timing Analyzer 根据新的约束分析时序,并去掉false path。
SDC文件在读取并执行时,按照书写的顺序进行,因此如果你要产生一个生成时钟,那么它所依赖的base clock 就必须在生成时钟约束之前创建。
(4)执行全编译
在创建了最初的时序约束(根据post-map网标)文件后,我们必须进行全编译整个工程,当编译完成后,就可以打开TimeQuest Timing Analyzer 验证时序结果,并生成设计中所有定义的时钟的时序的总体报告,时钟的建立和保持时间,恢复和去除时间报告(recovery and removal clock)
recovery time:是指对于寄存器的异步控制信号,例如异步清零信号而言。假设他在某个时刻有效清零了寄存器,并且在即将到来的下一个时钟沿到来之前t1时刻无效,如果想让寄存器在这个时钟沿正常工作(不被继续清零),t1存在一个的最小值,这个最小值就成为recovery clock(如果这个t1<recovery clock,那么这个异步清零就相当于还在生效,这个clock并不能让新的数据进入寄存器,寄存器保持被清零);----------用于异步控制信号的结尾。
removal time:也同样用于寄存器的异步控制信号;假设在某个时刻,异步清零信号有效,这个信号出现在了她上一个时钟沿后的t1时刻,如果t1<removal time,就是说她离上一个时钟沿太近,导致上一个时钟沿没有将数据写入到寄存器,removal time就是让上一个时钟沿有效的最小时间;——用于异步控制信号的起始。
(5)查看时序结果
TimeQuest Analyzer会检查设计中的时序路径,计算每个路径的传播延时,检查时序约束违例,以正负slack的形式报告时序结果,负的slack表示存在时序违例。如果在时序路径中遇到了这种违例,通过时序报告来查看并决定如何去优化我们的设计;在修改了约束后,我们必须再次执行全编译,这种迭代的过程帮助解决我们设计中的时序问题。
.qsf文件作为tcl脚本写的Quartus II Settings File,可以再其中设置包含.sdc文件。
看完这里,就可以按部就班的对我们的工程进行时序方面的设置和分析,并通过TimeQuest Analyzer来约束我们的设计。
怎样打开TimeQuest Analyzer就不说了。
TimeQuest Analyzer是一个独立的GUI应用 ,可以被独立于quartus软件打开。命令行操作忽略。
推荐的设计流程:可以最大化的TimeQuest Analyzer发挥的作用
1、创建工程,并完成设计;2、执行初次编译;3、制定时序要求;4、在此执行编译;5、查看时序结果。
(1)创建工程,并完成设计
完整的创建工程,你知道怎么做的,并加入已经有的SDC文件。
(2)执行初次编译
如果工程还从没有编译过,或者你压根就没有SDC文件并且想通过TimeQuest Analyzer来创建一个SDC文件,那么还请你在制定时序约束之前编译一下,以便生产出所需的database,你可以只通过执行Analysis and Synthesis来创建一个post-map的database,也可以通过执行full compilation来生成一个post-fit database。我想你知道生成post-map的database会更快一点,并且其实他对于创建初始的时序约束已经足够。不同的database决定了TimeQuest
analyzer产生的时序网标(timing netlist)的类型。
(如果使用了增量编译,在Analysis and Synthesis之后,必须执行merger操作)
(3)制定时序要求
在使用TimeQuest analyzer进行时序分析之前,我们必须制定好时序约束:设计中的时钟特性、时序例外和信号传输的到达和需求时间( arrival and required times),我们可以使用TimeQuest analyzer的一个时序设置向导——TimeQuest Timing Analyzer Wizard来一步步的进行时序约束的建立,然后使用GUI界面进行修改完善。
对于没有约束的clock信号,quartus默认设置约束为1Ghz——这点可以证明一个现象,在对一个时钟没有设置约束时,在进行了时序分析后居然有负的slack。
.sdc文件只能包含SDC命令;tcl命令一般用于修改时序网标或者控制编译流程,他们必须作为TCL脚本被运行(就想引脚约束的tcl一样,必须被运行才能生效)。在创建了时序约束后,使用新的约束更新一下时序网标,这是TimeQuest Timing Analyzer 根据新的约束分析时序,并去掉false path。
SDC文件在读取并执行时,按照书写的顺序进行,因此如果你要产生一个生成时钟,那么它所依赖的base clock 就必须在生成时钟约束之前创建。
(4)执行全编译
在创建了最初的时序约束(根据post-map网标)文件后,我们必须进行全编译整个工程,当编译完成后,就可以打开TimeQuest Timing Analyzer 验证时序结果,并生成设计中所有定义的时钟的时序的总体报告,时钟的建立和保持时间,恢复和去除时间报告(recovery and removal clock)
recovery time:是指对于寄存器的异步控制信号,例如异步清零信号而言。假设他在某个时刻有效清零了寄存器,并且在即将到来的下一个时钟沿到来之前t1时刻无效,如果想让寄存器在这个时钟沿正常工作(不被继续清零),t1存在一个的最小值,这个最小值就成为recovery clock(如果这个t1<recovery clock,那么这个异步清零就相当于还在生效,这个clock并不能让新的数据进入寄存器,寄存器保持被清零);----------用于异步控制信号的结尾。
removal time:也同样用于寄存器的异步控制信号;假设在某个时刻,异步清零信号有效,这个信号出现在了她上一个时钟沿后的t1时刻,如果t1<removal time,就是说她离上一个时钟沿太近,导致上一个时钟沿没有将数据写入到寄存器,removal time就是让上一个时钟沿有效的最小时间;——用于异步控制信号的起始。
(5)查看时序结果
TimeQuest Analyzer会检查设计中的时序路径,计算每个路径的传播延时,检查时序约束违例,以正负slack的形式报告时序结果,负的slack表示存在时序违例。如果在时序路径中遇到了这种违例,通过时序报告来查看并决定如何去优化我们的设计;在修改了约束后,我们必须再次执行全编译,这种迭代的过程帮助解决我们设计中的时序问题。
.qsf文件作为tcl脚本写的Quartus II Settings File,可以再其中设置包含.sdc文件。
相关文章推荐
- quartus时序分析文档理解与翻译(3) ——创建时钟和时钟约束
- quartus时序分析文档理解与翻译(4)——创建IO约束
- quartus时序分析文档自我理解与翻译(开题)
- quartus时序分析文档理解与翻译(2) ——一个设置约束的例程
- Introduction to C++ Programming in UE4——UE4官方文档翻译与理解(一)
- 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解
- 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (三)
- PIM协议翻译及深入理解分析(rfc2362第二章)
- 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (一)
- Dojo1.11官方教程文档翻译(5.7)理解 _WidgetBase
- AnimMontage(中文)——UE4官方文档翻译与理解
- 【翻译】基于Verilog设计的时序注意事项【Quartus II】【Digital Logic】
- MatConvnet工具箱文档翻译理解一
- [翻译] Quartus警告分析
- MatConvnet工具箱文档翻译理解四
- MatConvnet工具箱文档翻译理解五
- (转)让你彻底理解:静态时序分析
- 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (五)
- ALSA驱动分析,比ALSA官方文档好理解多了
- 苹果官方文档:理解和分析ios应用崩溃日志