第三章 工具使用

这里我通过几条约束命令来讲解timequest工具的简单使用。

3.1 creat_clock约束命令

  相关代码:

图27

  第一步,在quartus ii软件tools下来菜单中找到timequest timing analyze选项并打开,出现如图27的会话框:

图 28

  报告窗口:通过这个窗口,我们可以知道timequest都执行了哪些任务。

  任务窗口:通过这个窗口,让timequest执行你要求的任务,比如点击report clocks,timequest就会在信息显示窗口你都约束了哪些时钟。

  控制台:可以输入tcl命令让timequest执行相应任务。

  信息显示窗口:timequest把当前任务的结果信息显示在该窗口。

  第二步,点击任务栏中的create_timing_netlist 或者在点击主菜单的netlist下拉菜单的create_timing_netlist选项,选择后面这种方式会出现如图28的会话框:

图29

  首先看最左边的input netlist有post-fit和post-map之分,post-fit更接近物理结果(有优化),post-map更接近原型(没有优化)。右边的delay model有slow-corner和fast-corner之分,slow指timequest分析很糟糕的情况,比如FPGA工作在环境很差的情况下的模型,fast指timequest分析FPGA工作在正常的环境下,更接近实际的一种情况。Zero IC delays会无视一些网标基本单位的延迟。

  通常情况下,我们会选择post-fit和slow-corner组合,如果在这样的情况下,设计都满足时序要求,那么我们的设计会更可靠。其实任务窗口中的create_timing_netlist默认就是这种组合,所以我们点击这个选项就可以了。

  第三步,建立好网表以后,我们来创建第一条约束命令。

图30

这里对输入时钟clk进行了约束,时钟周期40ns,时钟名clk,点击run后,我们找到主菜单的constrants下拉菜单的 write SDC file选项并点击生成名为t1.out.sdc的SDC文件。

  第四步,添加SDC文件,点击quartus ii里面主菜单assignments下拉菜单的setting选项弹出如图29的会话框,在会话框里找到timequest timing analyze选项,把SDC文件添加进来。

图31

  第五步,双击timequest timing analyzer任务窗口中的report clocks,然后在信息显示框里面可以看到我们刚刚约束的时钟,如图31:

图32

  生成SDC文件的方式有几种,我用的是自己比较喜欢的一种方式。

  在第二章说过 creat_clock还可以约束虚拟时钟,这种时钟不是FPGA内部使用的,它们是外部IC的时钟,在对I/O约束时要用到这样的时钟。由于之前已经生成了SDC文件,后面在添加约束命令的时候通过quartus ii软件主菜单edit选项下拉菜单的insert cronstrain选项中添加,这样添加的话命令就会直接添加进SDC文件里面,每次添加命令后,如果想要在timequest timing analyzer进行分析的话,必须从新加载SDC文件才行。如图33所示,依次双击Reset Design、Read SDC File、Update Timing Netlist即可。

图33

  通过creat_clock创建虚拟时钟,我这里创建了两个虚拟时序:ext1_clk和ext2_clk。看SDC文件和timequest timing analyzer信息显示框有什么变化,如图34:

图34

看type那列,ext1_clk和ext2_clk的类型是virtual。

3.2 creat_generated_clock

  通过代码可以知道,这里的时钟有第二章讲creat_generated_clock约束命令作用时的1,2,4条,sys_clk对应第1条作用,ext_div2对应第4条作用,ext_clk1和ext_clk2对应第2条作用。然后我们通过creat_generated_clock会话框对这3种进行约束,如图35:

SDC文件相应的约束命令

图35

  如图36,在任务窗口双击report clocks后观察信息显示窗口的时钟情况,这里能看到每一个被约束的时钟,它们各自的周期、频率、类型,源时钟等。

图36

  如图37,在任务窗口双击report timing后观察信息显示窗口的时钟情况,这里可以看到timequest都分析了哪些路径,可以发现,输入Din到rData1和rData2到输出Dout之间的路径没有分析,那是因为timequest在分析的时候都是分析两个寄存器间的路径,而不是分析寄存器到管脚的路径,FPGA管脚都是与外部IC打交道,所以这里需要添加set input delay和set output delay约束,timequest才能分析这些路径。

图37

现在来看看这几条命令都分别约束的哪几个时钟:

  约束pll,对应sys_clk: derive_pll_clocks

  约束ext_div2 : create_generated_clock -name ext_div2 -source [get_pins {pll0_m1|altpll_component|pll|clk[0]}] -divide_by 2 [get_keepers {ext_div2}]

  约束ext_clk1和ext_clk2: create_generated_clock -name ext_clk1 -source [get_keepers {ext_div2}] [get_ports {ext_clk1}]

  create_generated_clock -name ext_clk2 -source [get_keepers {ext_div2}] [get_keepers {ext_div2}]

3.3小结

  这章通过两个约束命令讲了如何使用timequest分析工具,由于在第二章里面对每条约束命令的含义都讲过了,我想通过对这两个约束命令的学习,也能添加其它约束命令和分析了,想要对工具有更多的了解,建议阅读TimeQuest_User_Guide.pdf,这上面讲得很清楚。

转载于:https://www.cnblogs.com/Oursbuzouxunchanglu/p/3957768.html

timequest静态时序分析学习笔记之工具使用相关推荐

  1. 【软件分析/静态程序分析学习笔记】2.中间表示(Intermediate Representation)

    写在前面的话 本渣有幸成为南京大学软件学院研究生,在前往仙林校区蹭课的时候偶然发现了这门宝藏课程,听了以后感觉深有收获,但又因为课程难度较大,国庆假期归来发现遗忘较多,因此开了一坑来记录自己对每节课知 ...

  2. 【软件分析/静态程序分析学习笔记】7.指针分析(Pointer Analysis)入门

    写在前面的话 本渣有幸成为南京大学软件学院研究生,在前往仙林校区蹭课的时候偶然发现了这门宝藏课程,听了以后感觉深有收获,但又因为课程难度较大,国庆假期归来发现遗忘较多,因此开了一坑来记录自己对每节课知 ...

  3. 数据分析学习笔记——数据可视化

    数据分析学习笔记系列--数据可视化 总第45篇 ▼ 写在前面: 本篇来源于书籍<数据之美-一本书学会可视化设计>的学习后整理所得.全篇主要围绕数据可视化的5个步骤展开,其中重点内容是第三步 ...

  4. STA静态时序分析——学习笔记

    STA静态时序分析--学习笔记 静态时序分析简介及基本知识 PT流程以及分步骤讲解 2.1 设计STA环境 2.2 指定STA库文件 2.3 读取Netlist文件 2.4 读取SPEF文件 2.5 ...

  5. 数据分析学习笔记(二)数据分析三思维七技巧

    数据分析学习笔记(二) What 三种核心思维 结构化 公式化 业务化 Why 数据分析的思维技巧 象限法 多维法 假设法 指数法 二八法 对比法 漏斗法 总结 How 如何在业余时间锻炼分析能力 好 ...

  6. 数据分析学习笔记(四)Excel

    数据分析学习笔记(四)Excel 为什么要学习Excel Excel的学习路径1 Excel的必知必会 Excel的常见函数 什么是函数 常见函数 文本清洗函数 关联匹配函数 逻辑运算函数 计算统计函 ...

  7. github 思维导图开元软件_画思维导图记笔记的工具软件

    思维导图是很多人在做笔记的时候都会用到的一种记录方式,使用思维导图可以简单有效的表达发散性思维,能够协助人们在各种因素间平衡展开思考,从而提升自己笔记的含金量和工作效率,有没有画思维导图记笔记的工具软 ...

  8. Python数据分析学习笔记:使用SciKit-Learn进行数据规范化

    Python数据分析学习笔记:使用SciKit-Learn进行数据规范化 数据规范化是数据挖掘的一项基础工作.不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果 ...

  9. Python数据分析学习笔记:计算向量夹角

    Python数据分析学习笔记:计算向量夹角 通过计算两个向量夹角了解两个向量之间的相关性. # 计算向量夹角import numpy as npdef included_angle(a, b):a_n ...

最新文章

  1. AI基础架构Pass Infrastructure
  2. android 百度导航滑动会异常,百度导航Android版问题集
  3. 【利好工具】JavaScript及时运行调试工具
  4. WCF Security userName/Password
  5. json-ajax-jsonp-cookie
  6. 不断线一键安装lnmp包
  7. Python爬虫之(八)数据提取-Beautiful Soup
  8. python正则匹配中文_python 正则表达式匹配中文-阿里云开发者社区
  9. 第三周阶段性小结——Object对象、String类、StringBuffer、StringBuilder、System、Runtime、Date...
  10. 解决Hbase的几个常见bug
  11. 沉浮二十载,奥飞成也萧何败也萧何?
  12. 【解决】解决每次打开Office 2013都提示配置进度的解决方法
  13. python学习视频
  14. 哈尔·埃尔罗德《早起的奇迹》读书笔记
  15. 基于ML或DL的iot ddos detection 文献整理
  16. Android开发笔记(一百四十一)读取PPT和PDF文件
  17. linux如何显示文件后缀名,如何在win7系统中显示文件后缀名、扩展名
  18. 如何通便清肠快速见效_如何排毒清肠通便
  19. 微软Surface Go 体验:可以当平板使用的便携笔记本电脑
  20. 设计模式(十):模板方法模式

热门文章

  1. Visual Studio 2017 linux C++
  2. go语言 error
  3. Flask Oauth
  4. C++ 深拷贝和浅拷贝
  5. tesseract win 训练
  6. spark java foreach_Spark Java使用DataFrame的foreach/foreachPartition
  7. mysql数据库高可用_MySQL数据库高可用
  8. 拼写检查工具是android,拼写检查工具框架  |  Android 开发者  |  Android Developers...
  9. 备份域控制器AD 保护的最佳实践(第 1 部分)
  10. 搭建网站-Disczu