一,概述

用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的操作。

1. 建立项目并加入相关设计文件

    不管做什么事情,都需要有一个目标或者说对象。我们用TimeQuest做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。所以首先是要建立一个Quartus II的项目,并把所有需要的设计文件都加入到项目中去。需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys Design Constraints(.sdc)的格式存在的。

2. 对项目进行预编译(initial compilation)

项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。做预编译的目的是为了生成一个initial design database,然后我们可以根据这个database用Timequest采用交互的模式生成时序约束。实际上,对于小的设计,编译时间并不是很长的话,完全可以不去区分预编译和全编译,需要编译的时候,直接做全编译就可以了,做全编译的话,可以生成一个post-fit的database,完全可以给TimeQuest使用。

3. 向设计中添加时序约束

在用TimeQuest做时序分析之前,必须要指定出对时序的要求,也就是我们通常所说的时序约束。这些约束包括时钟,时序例外(timing exceptions)和输入/输出延时等。

默认情况下,Quartus II 软件会给所有没有被下约束的时钟都设定为1GHz。没有任何的时序例外,也就是说所有的timing path都按1T去check。所有的输入/输出的延迟都按0来计算。这显然不符合绝大多数设计的时序要求,所以有必要根据设计的特性,添加必要的时序约束。

如上所述,时序约束主要包括三类:时钟,时序例外和输入/输出延迟。其中时钟和输入/输出延迟可以认为是在某种程度上增强时序设计的要求。而时序例外可以认为是在某种程度上降低时序设计的要求。比如说,仅仅设定一个时钟的频率为100MHz的话,这个时钟域里所有timing path都需要能工作在100MHz下。这显然是增强了时序设计的要求。可是如果在这个时钟域下面,有部分timing path是不需要做1T的check的,那么就可以通过添加时序例外来避免对这些timing path做1T的check,即降低了时序设计的要求。

在用TimeQuest做时序分析时,如果非常熟悉设计的构架和对时序的要求,又比较熟悉sdc的相关命令,那么可以直接在sdc文件里输入时序约束的命令。而通常情况下,可以利用TimeQuest GUI提供的设定时序约束的向导添加时序约束。不过要注意的是,用向导生成的时序约束,并不会被直接写到sdc文件里,所以如果要保存这些时序约束,必须在TimeQuest用write sdc的命令来保存所生成的时序约束。

4. 执行完整的编译

在设定好时序约束以后,就需要对整个设计进行完整的编译。在编译过程中,软件会优化设计的逻辑、布局布线等来尽可能满足所有的时序约束。

如果没有添加时序约束,那么软件在编译的时候,会按照默认的时序约束对设计进行优化,对于绝大多数的设计,都会报出来时序的问题,但因为默认的时序约束与设计本身的要求在绝大多数情况下,都是不同的,所以这些时序的问题也并不是设计本身的问题,并没有太多的参考价值,而且很多初学者也不会注意到这个问题。这样就把设计中很多潜在的时序问题给隐藏起来了,最终带来的可能就是系统运行的不稳定,甚至是完全不能运行。

5. 验证时序

当完成编译以后,我们就可以用TimeQuest来验证时序了。在时序分析的过程中,TimeQuest会分析设计中所有的timing path,计算每一条timing path的延时,检查每一条timing path是否满足时序约束,最后按照positive slack或negative slack来报告时序分析的结果。其中negative slack就表示对应的timing path不满足时序约束的要求(timing violation)。

如果遇到有不满足时序要求的情况,则可以根据对应的时序报告分析设计,确定如何优化设计使之满足时序约束。时序约束有任何变化的话,都需要重新编译设计。这个反复的过程可以让我们解决设计中的时序问题。

三,DAC7512控制器

DAC7512是一个具有三线串行接口的DAC。我们基于FPGA用Verilog语言实现了一个简单的DAC7512的控制器。下面是控制器的结构图:

DAC7512控制器由三个模块组成,PLL用来生成控制器所要的时钟C0(25MHz)和C1(50MHz),其lock信号用来做为控制器的异步reset。da_data模块生成要送往DAC7512的数据,其中DA_DATA为数据,DA_DATA_EN为数据有效信号,该模块使用C0时钟,整个属于C0时钟域。DAC7512模块用于将DA_DATA转换成符合DAC7512接口标准的串行数据并送给DAC7512,要用到C1(50MHz)和DA_SCLK(C1二分频,25MHz)两个时钟。

DAC7512控制器一共有四个输入输出端口。CLK_IN为PLL的基准时钟,为25MHz。DA_DIN,DA_SCLK和DA_SYNC为三线串口,都为输出端口。

由于C0,C1是由同一个PLL输出的,DA_SCLK是由C1经二分频得到的,三者之间是同步的,处于同一个clock group中。

DAC7512模块的详细设计资料可参照本博客中 “FPGA设计中DAC7512控制的Verilog实现” 的文章。不过要注意一点的是,在串行总线上,DA_DIN是在DA_SCLK的下降沿有效的。把DA_DIN设计为C1时钟域的信号,并控制其值只在DA_SCLK为高电平的时候发生变化。这样可以把DA_DIN与DA_SCLK之间的时序要求转换为DA_DIN在C1时钟域的时序要求,细节我们会在下面介绍

转载于:https://www.cnblogs.com/lifan3a/articles/4229962.html

用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (一)相关推荐

  1. 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解

    一,概述 用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具.采用工业标准--SDC(synopsys design con ...

  2. 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (三)

    上面已经把DAC7512控制器中所有的时钟都创建好了.下面我们再额外讨论一下关于时钟属性方面的一些问题和在做时序分析时的处理方法. 对于具有单一时钟的系统,设计和时序分析都相对简单.但是现在很多设计都 ...

  3. Quratus II TimeQuest timing Analyzer 中网表模型设置分析介绍

    在我们进行静态时序仿真时.第一步需要建立网表.网表的模型会直接影响到我们setup slack建立余量和hold slack 保持余量的结果. 1.点击netlist建立新网表. 2.在网表的设置中, ...

  4. FPGA时序约束和timequest timing analyzer

    FPGA时序约束和timequest timing analyzer FPGA时序约束 时钟约束 #************************************************** ...

  5. TimeQuest Timing Analyzer简单使用

    目录 时序约束错误 一:TimingQuest Timing Analyzer 二:TimeQuest_Timing Analyzer Wizard 软件版本:Quartus ii 13.0sp1 时 ...

  6. Quartus II 现有各版本之差异(方便选择), 以及 破解文件

    参考了: http://www.cnblogs.com/crazybingo/archive/2011/07/26/2117105.html <Quartus II 11.0 套件安装指南> ...

  7. FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇

    FPGA时序分析工具上手 今天课程主体:完成时序分析和约束的基本流程,认识用到的工具和软件. 1.利用Quartus II 查看运行最高频率 对于一个代码,问: 这个代码能够运行在多高的时钟频率. 这 ...

  8. Quartus II SDC文件建立流程

    Quartus II SDC文件编写教程 第一步: 打开TimeQuest Timing Analyzer,也可以点击图中1所示图标. 第二步:点击Netlist,点击Create Timing Ne ...

  9. Applying Multicycle Exceptions in the TimeQuest Timing Analyzer--Altera Note

    这是一篇关于multicycle exception的Note,文章很详细的介绍了End Multicycle Setup,End Multicycle Hold, Start Multicycle ...

最新文章

  1. KDD Cup 2021城市大脑赛题解析!报名倒计时3天
  2. OpenCV | OpenCV 图片换底色
  3. Spark的RDD依赖关系
  4. 【MVC】Controller的使用
  5. 主成分分析(Principal components analysis)-最大方差解释
  6. 安装 VMware Workstation Pro 16 并创建 ubuntu 20.04 虚拟机
  7. 用特征码秒杀各程序语言按钮事件
  8. [js] 写一个 document.querySelector 的逆方法
  9. 计算机教学改革主要内容,计算机教学改革主要内容和措施.doc
  10. 你所熟知的CI/CD工具都是有哪些?
  11. 1环境-企业级 Hyper-v 群集部署实验方案
  12. python处理rtf文档_python读取word文档的方法
  13. Vue 祖孙方法调用 祖父级方法在孙级调用 祖孙传参
  14. 斩不断、理还乱,论家事,别有一番滋味在心头。
  15. 2022 七校联合NewStarCTF 公开赛赛道 WEEK2|CRYPTO
  16. 计算机初级操作员试题汇编,计算机初级操作员试卷.doc
  17. android 类对象的存储,android - 以共享首选项存储和检索类对象
  18. php gps定位范围算法,基本的GPS卫星定位算法
  19. 用计算机弹音乐之声,弹响第一个音符
  20. 【06】【Tomcat】

热门文章

  1. 捍卫者usb管理控制系统_捍卫超模块化JavaScript
  2. 重构技巧分别能够解决哪些代码味道
  3. CSP 2019-09-1 小明种苹果 Python实现+详解
  4. Python 解决一行代码分成多行及多行代码放在一行
  5. 作为一名合格的前端开发工程师需要会哪些
  6. 系列四、SpringMVC响应数据和结果视图
  7. struts2 validate验证
  8. 异常-----Java compiler level does not match解决方法
  9. Java开发工具(Eclipse中内容辅助键的使用)
  10. LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium