FPGA时序分析工具上手

今天课程主体:完成时序分析和约束的基本流程,认识用到的工具和软件。

1.利用Quartus II 查看运行最高频率

  • 对于一个代码,问:

    • 这个代码能够运行在多高的时钟频率。
    • 这个代码所描述的逻辑电路最高运行在多少频率的时钟
    • 这个代码所描述的逻辑电路在Cyclone IV E(65nm) 这个系列器件上能最高运行在多少频率的时钟
    • 这个代码所描述的逻辑电路在Cyclone IV E的EP4CE10F17C8(65nm) 这个器件上能最高运行在多少频率的时钟?
  • 可有时序分析软件告知答案(问题以最后一个为标准) TimeQuest Timing Analyzer

图1 TimeQuest时序分析工具

  • 时序分析一定是基于某个逻辑设计特定器件(该器件需要具体到一个特定型号的特定速度等级)上经过布局布线之后的网表(该网表包含了设计中每一个逻辑具体在该器件的什么资源上实现,而且还包括该资源在器件内的具体位置,还包含信号从每个节点传输到下一个节点的具体延迟时间)。
  • 时序分析不是对代码进行分析,而是对真实的门级传输路径进行分析

  再由目的寄存器能够正确的接收源寄存器发射过来的数据条件:Slack = Tclk + Tskew - Tsu - Tco - Tdata >= 0可知,当数据传输时间不变时,Tclk越小,即*时钟频率越高,时钟周期就越小,则Slack越容易接近零,甚至小于零。总存在一个零界点使得Slack等于零。此时对应的Tclk就是最高频率。

图2 时序分析最高频率

  Clocks: 这一项是显示当前的设计中有哪些时钟。由图二右侧界面可知,此例中时钟约束频率为1GHZ(但是实际你可能只会给他50MHZ,这是软件报告的设计中的时钟信号的约束频率),则是因为如果用户没有对时钟信号加约束,软件就会自动和对分析出的是时钟信号加约束,这个约束会按照最大的可能来约束(应该就是最大时钟频率),也就是设置时钟频率为1GHZ。会用1GHZ来对此例中的逻辑电路进行分析。

2.三种时序模型

  • 由图二左侧中时序分析的列表还可知:

    • Slow 1200mV 85C Model:芯片内核供电电压1200mV,工作温度85度情况下的慢速传输模型。
    • Slow 1200mV 0C Model:芯片内核供电电压1200mV,工作温度0度情况下的慢速传输模型。
    • Fast 1200mV 0C Model:芯片内核供电电压1200mV,工作温度0度情况下的快速传输模型。
  • 传输指的是数据传输速率,比如Tdata,Tco。所以高速传输时序更好(但是当传输速度变快是,这时候就要考虑另一个问题——保持时间余量)。

2.1 Slow 1200mV 85C Model

  当分析建立时间余量的时候,使用Slow 1200mV 85C Model模型来分析。

图3 第一种时序模型

  由图3右侧结果可知,Fmax=242.42MHZ。这说明这个代码所描述的逻辑电路在Cyclone IV E EP4CE10F17C8(65nm) 这个器件以及芯片内核供电电压1200mV,工作温度85度情况下的慢速传输模型下能最高运行的时钟为242.42MHZ。这说明如果我们实际输入时钟频率为50MHZ,在这种情况下,输入时钟频率是满足条件的。

  但是!软件并不知道我们实际的输入时钟(如果你没给软件约束),它会认为实际输入的时钟频率为Clocks中约束的频率1GHZ。所以它认为这种情况下不满足时钟输入条件,1GHZ>Fmax=242.42MMHZ,因此这一项报错(变红)。

那么软件是如何判断此情况下的最高时钟频率呢???

图4 路径分析

  先看图4,途中共有4条寄存器路径。分析设计的时序路径的时候,一般是以寄存器到寄存器分析的,不跨寄存器分析。不然图中应有5条寄存器路径。再从四条路经中选出最长的路径,假设是从上到下的第二条,那么这条路径在途中这个逻辑电路中,就是属于最坏路径。因为它Tdata最长,最容易坏事,导致Slack不足。

2.1.1 最坏路径

  软件计算最高时钟频率的时候,是根据最坏路径的建立时间余量来计算的。

图5 最坏时序路径分析

  点击图5界面左侧的Worst—Case Timing Paths(最坏时序路径),由界面右侧可知,里面都是在此情况下,并且输入的时钟频率(软件认为他是1GHZ)的情况下,有这么多条会导师Slack小于零的情况,其中最坏路径就是第一条(红色矩形框框住的),这就是此模型情况下的最坏路径。软件也正是根据这条路径才算出了此情况下Fmax的值(此时最坏路径也能刚好满足数据传输条件Slack=0)。

2.1.2 时钟约束

但是因为实际输入时钟可能只有50MHZ,现在软件却用1GHZ来分析,分析的结果也没啥意义。那我们就希望软件用输入频率50MHZ来分析,这该怎么办?这时候就需要用到时钟约束了

  1. 首先打开Tools栏中的TimeQuest Timing Analyzer。即打开TTA软件。

  2. 创建时序网表,Tasks 中的Create Timing Netlist 按钮。

  3. 读取SDC文件。Synopsys Design Constrains File

  4. 可以看报告,如图6所示。也可以加入约束。

  5. 加入时钟约束,点击上栏中“Constraints”中的“create Clock”,结果如图7所示。只是为了告知软件输入频率值,软件再用这个值软件去做时序分析,但是我们实际输入不受限制。图7中各名称介绍

    • Clock name : 被创建约束的时钟代号
    • Period:时钟信号的周期,如50MHZ,对应20ns
    • Rising:时钟上升沿起点时间
    • Falling:时钟下降沿起点时间,空白默认百分之五十占空比
    • Targets:这个代号时钟对应的实际逻辑电路中那个具体时钟,点击右侧…进行选择,如图8所示。
  6. 对于系统已经约束了的时钟,比如CLK50M,系统自动约束到了1GHZ,此时我们自己再执行第5步是执行不通的,此时钟的约束不会按照我们的约束变化,这时候就直接对CLK50M信号进行改动l,右键Base,如图9所示。结果如图10所示。注意,图10中不能修改Clock name的名称,否则此次修改仍然无效。

    注意,每在TTA中执行一个操作后,都需要留意console窗口中的报告,看此次操作是否执行成功

  7. 所有的约束操作完成后,需要执行写SDC文件的操作,这个操作会生成包含所有约束的SDC文件。即双击“Write SDC File ”如图11所示。SDC文件内部如图12所示。红色方框内代表创建了一个代号为CLk50M的约束时钟,周期为20ns,上升沿从0ns开始,下降沿从10ns开始,占空比也就是百分之五十,映射的实际逻辑代码端口为CLK50M。

  8. 加入约束时钟后的模型分析结果如图13所示。

图6 使用TTA查看报告

图7 创建时钟约束

图8 Target映射

图9 右击Base

图10 直接修改界面 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ff1cb3e1f9e1456a97b34f7785f6daf8.png#pic_center)

图11 写SDC文件

图12 SDC文件内部

图13加入约束后的结果

  Fmax = 199.88HZ,相比图3中的结果,此优化的最高频率降低了。说明EDA软件仅会根据约束需求去布局布线以达到约束要求,但是每次不会以最优的情况去编译。主要是因为全局资源有限,在满足约束条件下,需要空出资源给别的逻辑电路满足约束条件,见《FPGA时序约束与分析》1.2节

  所以在设计中一定要最起码加入合理的时钟约束。否则若有部分资源过约束(可能是FPGA自动约束或你自己约束的,花费了大量资源,实际可以不必),那么可能导致你本来应该实际输入50MHZ的时钟,但是由于资源不够,它的最高频率只能为48MHZ,这样就不满足实际条件,特别是在逻辑比较复杂情况下。而如果你进行合理约束的话,FPGA就能空出更多资源给此时钟布局布线,或许就能满足此条件。

  • 约束的作用:

    • 指导EDA软件对设计的布局布线进行合理优化以尽量满足约束需求。(否则FPGA将会根据逻辑电路图随意的布局布线(如FPGA三要素中,内部互联线将各个可编程逻辑器件连接起来)
    • 给时序分析工具提供一个分析时序的参考。

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇相关推荐

  1. FPGA时序约束和timequest timing analyzer

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

  2. (126)FPGA面试题-做了哪些FPGA时序约束?

    1.1 FPGA面试题-做了哪些FPGA时序约束? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-做了哪些FPGA时序约束: 5)结束语. 1.1.2 ...

  3. FPGA时序约束设计经验总结

    1.1 FPGA时序约束设计经验总结 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA时序约束设计经验总结: 5)结束语. 1.1.2 本节引言 "不积 ...

  4. FPGA时序约束分享04_output delay 约束

    本文章探讨一下FPGA的时序input delay约束,本文章内容,来源于明德扬时序约束专题课视频. <FPGA时序约束分享01_约束四大步骤>概括性地介绍 了时序约束的四个步骤,对时序约 ...

  5. FPGA时序约束(一)基本概念入门及简单语法

    文章目录 一.建立时间和保持时间是什么? 二.时序分析分类 三.时钟约束方法 3.1 时钟约束 3.2 输入延时约束 3.3输出延时约束 3.4时序例外 四.时序约束语法补充 文章目前大部分参考明德扬 ...

  6. FPGA时序约束篇之时序分析与时序约束的作用

    FPGA时序约束篇之时序分析与时序约束的作用 一.写在前面 二.名词解释 三.举个栗子 3.1 降低时钟频率 3.2 提升时钟频率 END 一.写在前面   在每个初学者学习FPGA设计时,都会听前辈 ...

  7. FPGA时序约束与分析 (3)--- 虚拟时钟约束

    虚拟时钟定义   在一些时序路径中,一些引脚上的数据信号,其同步时钟只存在于外部芯片,并不存在于FPGA器件内.这种情况下,为了时序分析需要定义一个时钟用于描述时序数据引脚的外部时钟信号,这个时钟就称 ...

  8. FPGA时序约束与分析 (2)--- primary clock主时钟约束

    主时钟分类 约束方法 实例 主时钟定义了时序约束的0时刻,vivado靠此来计算时钟延迟和不确定性. 主时钟定义 主时钟通常为 FPGA 器件外部的板级时钟(如晶振,数据传输的同步时钟等)或FPGA的 ...

  9. 彻底理解Intel FPGA时序约束---解决方案篇(二)

    文章目录 引言 1.time-quest的GUI 1.1 时钟约束 1.2 Fmax Summary最大时钟频率 1.3 Report timing 报告时序 1.3.1分析setup slack余量 ...

最新文章

  1. centos7下没有iptables进行安装或更新
  2. 回调函数自定义传参_koroFileHeader:一个用于生成文件头部注释和函数注释的插件...
  3. Android输入法开发
  4. CountDownLatch 的使用小例
  5. 开源学习:tinyhttpd
  6. oracle pcm x6-2,Sun 7310210服务器Oracle X6-2原装拆机内存7310244 7090170
  7. 集合转换Stream流式操作
  8. 计算两个向量间的欧氏距离_用Numpy实现常见距离度量
  9. AC日记——Count on a tree bzoj 2588
  10. U盘安装系统时黑屏! 无法进入解决办法
  11. svn比较本地与svn差异_如何从SVN差异中删除SVN属性
  12. numpy常用矩阵运算
  13. revit插件有哪些常用的?介绍几个常用的revit插件操作简单
  14. IOS开发之——数据库-Couchbase(05)
  15. 【gp数据库】十条实用数据库SQL优化建议
  16. matlab分离实部虚部,MATLAB/simulink中,想让电流表测出的值为复数形式,有实部虚部,将powergui设置为phasors仿真,总是出错...
  17. 网站目标定位的关键词和选择质量高的关键词
  18. Queue与Topic区别
  19. 模拟角频率和数字角频率区别
  20. java 印章 方_用Java实现支持圆形带五角星 方形电子印章

热门文章

  1. 手把手教你本地如何查看Android源码
  2. 删除二叉树的所有叶子结点
  3. 目标检测实现黑花屏分类任务
  4. 如何获取特定经纬度在SRTM3中的高程值
  5. 用html5写一段文字画布中,超全的HTML5画布(Canvas)实例
  6. SRTM90m DEM数据获取方法
  7. JAVA——银行存取款
  8. 2020开年第一神剧当红娘,许光汉xuguanghan.fans被抢注
  9. linux脚本回车键是什么,1秒自动按回车键的脚本
  10. 3-7 考拉兹猜想(高教社,《Python编程基础及应用》习题6-11)