TimeQuest时序路径详解

分析最坏传输路径

  根据[FPGA典型时序路径的分析可知,最坏传输路径对应的建立时间(setup time)余量最小。所以,查看最坏传输路径也就是查看建立时间余量最小的路径。如果不对设计加入约束,软件会自动寻找设计中的时钟,给默认的约束,1GHZ;可以直接在 Quartus 的报告界面查看,也可以在 TimeQuest Timing Analyzer 中查看,先介绍如何在 Quartus 报告界面查看。

  以小梅哥TFT屏为案例,进行全编译后,在 Compilation Report 中,依次展开 TimeQuest Timing Analyzer -> Slow 1200mV 85C Mode–> Worst-Case Timing Paths,点击 Setup “Clk9M”。然后右侧就会自动安装建立时间余量从小到大的顺序排列出来,排在第一位的就是建立时间余量最小的那个信号,如下图所示:
在这里插入图片描述  由下图可以查看最坏路径的建立时间余量(Slack),最坏路径的源寄存器(From Node),目的寄存器(To Node),源寄存器发射数据的时钟(Lauch Clock),目的寄存器接收数据的时钟(Lach Clock),Lauch Clock egde与Lach Clock egde的时间差为Relationship(当Lauch Clock和Lach Clock为同一个时钟时,Relationship值为时钟周期,否则不是时钟周期),时钟偏斜Clock Skew,数据传输延迟Data Delay。在这里插入图片描述
  查看建立时间余量,可以看到,建立时间余量最小的路径出现在 hcount_r[8]和 vcount_r[1]之间,建立时间余量为-2.182,根据 Fmax 的计算方法,计算出Fmax = 1 / (Tclk - Tslack) = 1 / (1– (-2.702)) = 270.1243MHZ,与系统时序报告的最大时钟频率一致;

在这里插入图片描述  在TimeQuest Timing Analyzer 中查看时,创建网表,READ SDC之后,通过Reports→Macros→ Report Top Failling Paths查看最坏路径,如下图所示:
在这里插入图片描述  已经找到了设计中影响整个设计的最高运行时钟频率的路径,那么,这个路径究竟是对应着代码中的哪个部分呢?又该如何来优化这段逻辑呢?

  选中最坏路径的任意一个属性,右击鼠标,选择Report Timing…,如下图所示:
在这里插入图片描述  弹出以下页面,可知最坏路径的源寄存器时钟是clk9M,目的寄存器的时钟也是clk9M,源寄存器是vcount_r[3],目的寄存器是 vcount_r[2],分析的是建立时间Setup,之后点击Report Timing;
在这里插入图片描述
  会弹出如下页面,此时得知建立时间是不满足的,由于系统没办法达到1GHZ,所以不能进行优化。
在这里插入图片描述
  将时钟约束改为100MHZ,之后重新Read SDC,查看报告,发现全部满足时序要求,用同样的方法可以打开之前的最坏路径,得到下图所示的时序分析图:

  - 部分版本quartus不能在直接查看之前对应最坏路径的时序分析图,可以手动添加路径,方法如下:

  点击Custom Reports→Reprt Timing…,将源寄存器、目的寄存器的时钟以及寄存器名填写后选择Report Timing,也可以打开之前的路径分析时序了。

在这里插入图片描述

具体分析

Waveform页面进行分析

在这里插入图片描述
  因为此路径源寄存器和目的寄存器共用同一个时钟,所以RelationShip与时钟周期相等,由上图知RelationShip与为10ns,即Tclk = 10ns,与100MHZ的时钟周期结果一致;
在这里插入图片描述  由上图知,Clock Delay是源寄存器时钟相对于时钟Clock的延迟,即Tclk1 = 3.102ns。
在这里插入图片描述
  Data Delay为数据传输延迟,Altera把寄存器数据延迟(Tco)和数据传输延迟(Tdata)统称为数据传输延迟Data Delay,所以Data Delay = Tco + Tdata = 3.125ns;
在这里插入图片描述

  目的寄存器时钟延迟:Tclk2 = Clock Delay = 2.509ns;

  时钟悲观:Clock Pessimism = 0.015ns;

  Tskew = Tclk2 - Tclk1 + Clock Pessimism = 2.509 - 3.102 + 0.015 = -0.578ns;

时钟悲观(Clock Pessimism)

  此路径是最坏路径,虽然将系统时钟改变,此设计能满足当前时钟,但是并没有把此设计进行重新编译,网表文件并没有改变,所以此路径还是此网表的最坏路径,即建立时间余量Slack最小,而Slack = Tclk + Tskew - Tsu - Tco - Tdata,由于时钟周期固定,所以Tclk是定值,当器件固定时,Tsu和Tco也是定值,当逻辑设计固定时,Tdata也是定值,只有时钟偏斜Tskew可以改变,Tskew = Tclk2 - Tclk1,两个寄存器是时钟如下图所示:

在这里插入图片描述

  要得到建立时间余量Slack为最小值,Tskew的值就必须为最小,所以分析计算Tclk2的时候,EDA软件会认为时钟从源端口出发按照最快的速度到达目的寄存器时钟端口(如上图时钟以最快速度通过红色和蓝色路径)。分析计算Tclk1的时候,EDA软件会认为时钟从源端口出发按照最慢的速度到达源寄存器的时钟端口(上图中时钟以最慢的速度通过红色和黑色路径)。由于时钟从源端口到达源寄存器时钟端口和目的寄存器时钟端口过程中,会经过一段相同的路径,同一信号经过同一路径,不可能会是两种速度,所以通过Tclk2 - Tclk1计算出的时钟偏斜是偏小的;

  时钟通过同一段路径按照不同的速率计算出的时间在真实情况下是不存在的,EDA软件在分析时钟的时候过分悲观,导致时钟偏斜Skew值偏小,所以需要将一段路径过分悲观的值补偿回来,加上一个时钟悲观值(Clock Pessimism),此参数会被算入数据需求时间(data require time);
在这里插入图片描述

  由上图知时钟不确定参数TClock Uncertainty = -0.02ns;

时钟不确定参数(TClock Uncertainty)

   一个周期为10ns,占空比为50%的系统时钟,高电平和低电平持续的时间应该都是5ns,但是实际的时钟都会存在误差,几乎不可能刚好5.000000ns,这就会使得上升沿提前或者滞后一点到达,从而影响建立时间比标准的建立时间提前或者滞后,所以就引入时钟不确定参数Clock Uncertainty对其进行补偿,该参数会被算入数据需求时间(data require time);
在这里插入图片描述   建立时间:Tsu = uTsu = -0.021ns;Altera官方给出,该器件的建立时间可以是负值,在正常范围之内;

   由上述参数可以计算:

   数据到达时间(data arrival time):Tclk1 + Tco + Tdata;

   数据需求时间(data require time):Tclk + Tclk2 - Tsu = Tclk + Tclk2 -Tsu + TClock Pessimism + TClock Uncertainty(时钟不确定参数);

   建立时间余量:Slack = Tclk + Tskew - Tco - Tdata - Tsu

  = Tclk + Tclk2 +TClock Pessimism + TClock Uncertainty - Tsu - Tclk1 - Tco - Tdata

   = 10 + 2.509 + 0.015+ (-0.02)- (-0.021) - 3.102- 3.125

   = 6.298ns
在这里插入图片描述
   通过上图知,建立时间余量计算正确;

通过数据路径(Data Path)进行分析

   前面使用waveform波形对路径进行分析,后面使用数据路径(Data Path)进行分析,点击Data Path打开下图页面:
在这里插入图片描述
   由下图知EDA软件是对数据到达时间(data arrival path)和数据需求时间(data required path)分别进行分析的,数据到达时间(data arrival path)是对源寄存器发送时钟路径(Clock path)和数据传输路径(data path)进行分析,数据需求路径(data required path)主要对目的寄存器接收时钟路径(Clock Path)进行分析;
在这里插入图片描述

分析数据传输路径(data arrival path)(源寄存器时钟传输路径Clock Path)

   如下图所示,Total表示路径积累延迟时间,Incr表示经过所在路径的延时,Type表示传输过程中经过发路径类型,其中IC表示经过的是片内互连线,CELL表示经过发是触发器或者查找表(LUT),Location表示到达的器件管脚名或者路径节点,Element表示寄存器名或者元素名;
在这里插入图片描述   上述路径可以简化为下图传输路径:
在这里插入图片描述
   从源寄存器发射时钟沿开始计算延迟时间(launch edge time),时钟从时钟引脚M2进入FPGA,经过片内互连线(IC)进入IO_BUF,需要0.776ns才能输出到时钟树上,经过0.222ns的片内互连线延迟到达CLKCTRL,没有延迟,直接输出,再次经过1.437ns的片内互联线延迟到达源寄存器(Vcount_r [3])的时钟端,在经过0.667ns才能被源触发器使用;

分析数据传输路径(data arrival path)(源寄存器数据传输路径Data Path)

   如下图框中所示:
在这里插入图片描述
   延迟时间从源寄存器时钟延迟时间结束开始计算,所以此处从3.102ns开始计算,源寄存器有0.261ns的延迟时间(Tco),经过0.977ns的片内互连线延迟到达查找表Equal端口datac,经过0.324ns后输出,经过0.239ns的片内互连线延迟到达查找表Equal端口datad,经过0.177ns之后输出,在经过0.877ns的片内互连线延迟到达查找表端口datad,经过0.155ns延迟后输出,之后到达目的寄存器vcount_r[2]的数据端口,经过0.115ns延迟后才能在vcount_r[2]输入端口起作用。
在这里插入图片描述

分析数据需求路径(data required path)(目的寄存器时钟传输路径Clock Path)

![在这里插入图片描述](https://img-blog.csdnimg.cn/218a039edb5145f599461841e69df02e.png#pic_center

   数据需求时间是针对目的寄存器的,所以起始时间应该以接收时钟沿(latch edge time)为基础开始计算;

   上图可知TimeQuest将时钟传输延迟Tclk2,悲观时间,时钟不确定,建立时间均归纳在数据需求路径之中;

   目的寄存器时钟路径可以简化为下图中紫色连线部分
在这里插入图片描述

   从引脚M2到达IO_BUF没有延迟,经过0.776ns后输出到全局时钟树上,之后经过0.213ns内部互连线延迟后到达CLKCTRL,直接输出经0.902ns片内互连线延迟到达目的寄存器(vcount_r[2])的时钟端,需要经过0.618ns后才能被触发器使用;

   由上图知时钟从源引脚到达源寄存器时钟端口和到达目的寄存器时钟端口需要经过一段相同的路径,并且通过这段路径的时间延迟是不同的,所以时钟悲观参数是存在的;

总结

   通过Wavefrom可以分析每个路段的延迟时间,查看源寄存器时钟延迟时间Tclk1、寄存器延迟时间Tco、数据传输延迟Tdata、目的寄存器时钟延迟时间Tclk2、建立时间Tsu、时钟偏斜Tskew、建立时间余量Slack、时钟悲观、时钟不确定等参数;通过Data Path查看具体路径每个环节的延迟,片内互连线(IC)延迟,查找表、触发器、buf等CELL延迟;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】安装DHCP服务器

1、先检测网络是否通 get dhcp.txt rpm -qa //查看软件包 rpm -qa |grep dhcp //确定是否安装 yum install dhcp //进行安装 安装完成后 查询 rpm -ql dhcp 进行配置 cd /etc/dhcp 查看是否有遗留dhcpd.conf.rpmsave 删除该文件 cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sampl…

ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。

让我们来看看ChatGPT不能通过Oracle OCP的考试? 文章目录引言测试过程总结和分析关于博主,姚远:Oracle ACE(Oracle和MySQL数据库方向)。Oracle MAA 大师。华为云MVP。《MySQL 8.0运维与优化》的作者。拥有 Oracle 10g和…

mysql和mysql2模块的区别!!(nodejs中的模块)

mysql 和 mysql2 都是 Node.js 中常用的操作 MySQL 数据库的模块,它们的主要区别是在实现方式上略有不同。 mysql:是 Node.js 中比较早期的 MySQL 操作模块,该模块底层使用的是回调函数(callback)来实现异步操作。在处…

ESP32设备驱动-DHT12温湿度传感器驱动

DHT12温湿度传感器驱动 文章目录DHT12温湿度传感器驱动1、DHT12介绍2、硬件准备3、软件准备4、驱动实现1、DHT12介绍 DHt12是经典DHT11温湿度传感器的升级版,完全向下兼容,精度更高,增加了I2C接口。 DHT12 具有单总线和标准 I 2C 两种通讯&…

一文7个步骤从0到1教你搭建Selenium 自动化测试环境

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。本文详细介绍了搭建自动化测试环境所需的工具,让你学习自动化测试不…

不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程

大家好,我是可乐。 过去的一周,真是疯狂的一周。 GPT-4 震撼发布,拥有了多模态能力,不仅能和GPT3一样进行文字对话,还能读懂图片; 然后斯坦福大学发布 Alpaca 7 B,性能匹敌 GPT-3.5&#xff…

[图像识别]关于cv2库无法安装的故障问题解决,全网最全解决方案!本人亲身测试,参考了stackoverflow、51CTO等博客文章总结而成

本文范畴:故障排查 cv2 技术 库安装 Linux/Unix 笔记本系统:win10 python版本:3.10 故障问题:无法安装cv2库 适应对象:程序员新手、运维程序员、大学生、青少年对系统感兴趣的爱好者等等 文章目录前言一、cv2库是什么&…

【C语言】栈区与堆区

目录分配管理方式申请大小限制不同申请效率不同总结:栈区、堆区 是内存模型 对比起来看 分配管理方式 栈区由编译器自动管理, 函数运行时分配,函数结束时释放。存放为运行函数而分配的局部变量(函数结束时,其内临时…

超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控

前言 大家好,我是沐风晓月,本文收录于《 prometheus监控系列》 ,截止目前prometheus专栏已经更新到第8篇文章。 本文中的是prometheus已经安装好,如果你还未安装,可以参考 prometheus安装及使用入门 若你想监控其他…

现代数据栈MDS应用落地介绍—Vero营销自动化平台

Dazdata MDS现代数据栈MDS的出现使得中小企业低成本获得大数据处理能力成为可能,技术的进步使得各种基于MDS的大数据应用如雨后春笋般涌现,不同于国内的数据中台更多强调数据处理技术,MDS注重落地和最后一公里的大数据应用。Vero是一款现代数…

1630.等差子数组

1630. 等差子数组 难度中等 如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i1] - s[i] …

(五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置

前言 本节内容我们实现虚拟机的克隆,主要根据模板虚拟机克隆三台hadoop虚拟机,用于hadoop集群的搭建,同时根据上一小节的内容,配置hadoop虚拟机的主机名、ip网络等,最终完成hadoop虚拟机的实例化。 正文 虚拟机克隆…

MATLAB | 全网最详细网络图(图论图)绘制教程

一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点,当然图论与网络优化的算法一篇不可能完全讲清楚,未来如果看的人多可以适当更新,同时做部分网络图绘图复刻。 以下是本篇绘图实验效果&#xff1…

Java中的String类

String类1.String类1.1 特性1.2 面试题1.3 常用方法1.4 String与其他类型之间的转换2. StringBuilder类、StringBuffer类:可变字符序列1.String类 1.1 特性 String类为final类,不可被继承,代表不可变的字符序列; 实现了Serializ…

webpack——使用、分析打包代码

世上本无nodejs js最初是在前端浏览器上运行的语言,js代码一旦脱离了浏览器环境,就无法被运行。直到nodejs的出现,我们在电脑上配置了node环境,就可以让js代码脱离浏览器,在node环境中运行。 浏览器不支持模块化 nodej…

STL—vector

vector介绍在C标准库中&#xff0c;vector是一个常用的序列式容器&#xff08;线性结构&#xff09;&#xff0c;它就好比c语言中的数组&#xff0c;但是vector有一些数组没有的功能&#xff0c;是一个封装好了的类。想要使用vector需要先引入头文件&#xff1a;#include<ve…

【C陷阱与缺陷】----语法陷阱

&#x1f4af;&#x1f4af;&#x1f4af; 要理解一个C程序&#xff0c;必须理解这些程序是如何组成声明&#xff0c;表达式&#xff0c;语句的。虽然现在对C的语法定义很完善&#xff0c;几乎无懈可击&#xff0c;大门有时这些定义与人们的直觉相悖&#xff0c;或容易引起混淆…

【机器学习】综述:机器学习中的模型评价、模型选择与算法选择

文章目录一、前言二、论文摘要三、简介&#xff1a;基本的模型评估项和技术3.1 性能评估&#xff1a;泛化性能 vs. 模型选择四、Bootstrapping 和不确定性五、交叉验证和超参数优化一、前言 最近在做实验的时候&#xff0c;发现树模型有过拟合的情况发生&#xff0c;为此&…

蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)

文章目录[蓝桥杯 2021 省 AB2] 完全平方数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示思路&#xff1a;理论补充&#xff1a;完全平方数的一个性质&#xff1a;完全平方数的质因子的指数一定为偶数最终思路&#xff1a;小插曲&am…

直面风口,未来不仅是中文版ChatGPT,还有AGI大时代在等着我们

说到标题的AI2.0这个概念的研究早在2015年就研究起步了&#xff0c;其实大家早已知道&#xff0c;人工智能技术必然是未来科技发展战略中的重要一环&#xff0c;今天我们就从AI2.0入手&#xff0c;以GPT-4及文心一言的发布为切入角度&#xff0c;来谈一谈即将降临的AGI时代。 关…
最新文章