FPGA时序分析与时序约束(五)——使用Timing Analyzer进行时序分析与约束

news2025/1/13 7:37:09

        Quartus的安装路径下会自带有例程,通过fir_filter进行学习如何使用Timing Analyzer进行时序分析与约束。

1.1 创建时序网表

        打开fir_filter并进行综合后可通过菜单栏Tool->Timing Analyzer或工具栏按钮运行Timing Analyzer。

        根据前面提到的,时序分析工具需要网表来执行时序分析,因此先创建Post-Map时序网表。在菜单栏Netlist->Create Timing Netlist,选择Post-Map会自动生成Tcl命令。

1.2  时钟约束

         时序约束可以分为四个主要步骤,即时钟约束(Create Clock)、输入/输出接口约束(Input/Ouput Delays,I/O约束)、时钟分组和跨时钟约束(Clock Groups and CDC)、时序例外约束(Timing Exceptions)。 

        因此对工程进行时钟约束,通过RTL图可以看出有两个时钟,clk是50%占空比的50MHz时钟,clkx2是60%占空比的100MHz时钟。

        在菜单栏Constraints->Create Clock,出现Create Clock对话框。在该对话框中设置时钟名称、时钟周期以及上升沿和下降沿的时刻,然后在Target栏选择对应的端口。当进行设置时,SDC ommand也会随之列出等效的SDC约束命令,也可以通过输入该命令来创建时钟约束。默认情况下,如果未使用 -Waveform egdes选项,那么create clock命令就会默认 50/50 的占空比。

        clk为50MHz时钟,时钟周期为1/50MHz=20ns。

        clkx2为100MHz时钟,时钟周期为1/100MHz=10ns,60%占空比则上升沿在0ns、下降沿在6ns。

        创建时序约束后,需要在菜单栏Netlist->Update Timing Netlist对时序网表进行更新(task工具栏也可以),将所有时序要求应用到时序网表。只要应用了新的时序约束,就必须对时序网表进行更新。

        在为设计指定时钟约束并更新时序网表后,需要创建SDC文件并将上面的约束保存到SDC文件中,约束不会自动保存,因此在菜单栏Constraints->Write SDC File,在Write SDC File对话框输入文件名称并保存。

        最后生成SDC约束报告(SDC Assignments Report),SDC约束报告了在指定设计中包含的所有时序约束,在菜单栏Report->Diagnostic->Report SDC;然后生成时钟总结报告( Clocks Summary Report),总结设计中所有的时钟,在菜单栏Report->Diagnostic->Report Clocks。

        生成时钟传输报告 (Clock Transfers Report),使用Report Clock Transfers命令生成一个报告来验证所有的时钟到时钟传输都是有效的。这种报告包含设计中所有的时钟到时钟传输。在菜单栏Report->Diagnostic->Report Clock Transfers。Clock Transfers报告表明在clk (源时钟) 和clkx2(目的时钟) 之间存在跨时钟域路径,共有16条路径,其中clk为源节点提供时钟,clkx2为目的节点提供时钟。 

1.3 伪路径约束

        在 fir filter 设计中,不必分析clk至clkx2的时钟传输,因为它们是忽略路径。通过以下方式声明 clk 至 clkx2 的路径为伪路径:

1.在 Clock Transfers 报告中,在 From Clock 列选择clk,右击并选择“Set FalsePaths”这个命令表明将所有由 clk 驱动的源寄存器到由 clkx2 驱动的目的寄存器之间的路径设为伪路径。

2.使用set_clock groups声明两个时钟域之间的路径为伪路径。例如,set clock groups -asynchronous -group [get clocks clk] -group [get clocks clkx2]该命令表明clk到clkx2以及clkx2到 clk的所有路径为伪路径。

        当完成该程序后,TimeQuest Timing Analyzer变成黄色(Out of Date)表明当前Clock Transfers报告是过时的,表明报告面板不包含反映Timing Analyzer中当前状态的约束的结果。

        而添加新的时序约束(设置伪路径),也需要UpdateTiming Netlist更新时序网表。然后更新报告面板,右击报告面板列表中任何过时(out-of-date)的报告,并选择 Regenerate all。

        重新生成报告后,可以看到在SDC Assignments报告栏多了一个“Set False Path”约束。同时打开 Clock Transfers 报告可以看到由clk到clkx2的路径被声明为伪路径,意味着时序分析工具将不再分析这些路径(例外约束)。

        在指定设计中所有的时钟约束和伪路径后,通过Write SDC File将时序约束和例外保存到 SDC 文件,然后将SDC文件添加到工程中。在Quartus->Assignments->Settings->Files->...,找到保存的sdc文件并添加。

        工程全编译后就能看到Timing Analyzer生成的报告。

1.4 输入输出约束 

        编译完成后,运行 TimeQuest Timing Analyzer,Create Timing Netlist、 Read SDC和 Update Timing Netlist命令依次在Tasks面板中执行,自动生成时序网表,读取 SDC 文件并更新时序网表。

        点击Report Setup Summary生成建立总结报告 (Summary Setup),对设计中的所有时钟进行检查,来验证没有出现违规。时钟建立检查确保每个寄存器至寄存器的传输不违反 SDC 指定的时序约束。 clkx2时钟没有出现在 Summary(Setup)报告中,因为clk 和 clkx2之间所有的时钟路径已经声明是伪路径。此外,fir filter设计不包含任何由 clkx2 来驱动的寄存器到寄存器的路径。 Summary(Setup) 报告中的Slack列表明clk能满足约束,并有10.989ns的余量。End Point TNS列是指定时钟域中所有的总负裕量 (TNS,Total Negative Slack) 的总和。使用这个值来测量指定时钟域中失败路径的总数。

        点击 Report Hold Summary,在设计中生成一个时钟保持检查总结。Summary (Hold) 报告表明 clk 时钟节点符合时序约束,并有0.326ns的余量。

        在执行全编译之前,指定所有的时序约束和例外,这样可以确保Fitter优化设计中的关键路径,使用Report Unconstrained Paths命令验证已经约束fir filter设计中的所有路径。 如下图所示,Unconstrained Paths 总结报告表明有大量的未约束路径,并详细介绍了这些路径的类型。要充分约束此设计,需要利用由Timing Analyzer所提供的整套SDC约束。

        总结报告中的未约束路径集中在Input/0utput Ports上,因此可以使用Set Input Delay和Set Output Delay需要约束所有的输入和输出端口。

        在菜单栏Constraints->Set Input Delay

        在菜单栏Constraints->Set Output Delay

        通过Write SDC File将输入输出延迟约束保存到 SDC 文件中,更新时序网表,重新生成Unconstrained Paths Summary,验证所有设计中的端口都已经加上了约束。

        Timimg Analyzer还可以对设计的时钟或节点生成特定的时序检查报告。在Tasks面板中,双击 Report Timing,出现Report Timing对话框。

        对话框设置完成后点击“Report Timing”,会生成一个报告。报告会列出10条最差路径,这些路径均由clk驱动目的寄存器,并且目的寄存器为 acc:inst3 result。

        在“Summary of Paths”一栏列出了这些路径的起点和终点,以及启动时钟和锁存时钟等信息,其中第一列“Slack”指示了这些路径是否满足时序要求,以及满足或违反时序要求的程度。当Slack 为正时,表示满足时序要求:Slack为负时表明该路径不满足时序要求,那么就需要针对该路径进行修复。
        点击 Summary of Paths 中的任意一个时序路径可以在下方看到它的详细信息,比如在“Data Path”中列出了该路径中信号到达各个节点的延迟信息。时序分析工具通过比较数据到达时间(Data Arrival Times) 和数据要求时间 (Data Require Times) 来验证电路性能并检测可能出现的时序违规。“Waveform”一列给出了时序路径的波形图,从图中可以更直观
的比较各个时序参数。
        Report Timing 默认分析的是建立时间,同样可以选择分析其他类型(Analysis Type),比如保持时间、恢复/移除时间等。

参考文献:

正点原子FPGA静态时序分析与时序约束_V2.3
Intel Quartus Prime Standard Edition 用户指南: Timing Analyzer

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM中的垃圾收集算法

标记-清除算法 首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程 缺点 第一个是执行效率…

自我摸索:如何运营并玩转CSDN?

自注册CSDN以来已有七年之久,但真正运营CSDN也是最近一年的事情,大概就是22年底,参加2022 博客之星 的竞选。接触了很多大佬,也学习模仿着开始玩转CSDN,虽然没有同期运营的大佬们玩的6,但也有一些经验可以来…

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…

2023 年顶级前端工具

谁不喜欢一个好的前端工具?在本综述中,您将找到去年流行的有用的前端工具,它们将帮助您加快开发工作流程。让我们深入了解一下! 在过去的 12 个月里,我在我的时事通讯 Web Tools Weekly 中分享了数百种工具。我为前端…

【视频媒体】深入了解直播视频流

深入了解直播视频流🎥 YouTube、TikTok live和Twitch上的直播视频是如何工作的? 直播视频流与常规流媒体不同,因为视频内容通过互联网近乎实时发送,通常只有几秒钟的延迟。 下图解释了实现这一目标背后所发生的事情。 步骤1&…

Python 面向对象(类)

目录 面向对象理念 面向对象三大特性 定义类 格式 创建对象(实例化一个对象) 创建方法 实例方法 类方法 静态方法 self含义 对象属性 添加获取对象属性 ​编辑 类里面获取对象属性 继承 单继承 多继承 多态 面向对象理念 面向对象编程…

day01.基础知识

目录 一.函数与语句 1.1进入C 1.1.1main( )头函数 1.1.2 注释 1.1.3头文件 1.1.4预处理 1.1.5命名空间 1.1.6输入与输出 1.1.7格式化 1.2语句 1.2.1声明语句与变量 1.2.2赋值语句 1.3函数 1.3.1使用有返回值的函数 一.函数与语句 1.1进入C 1.1.1main( )头函数 …

手机也能随时随地玩红警啦!

还在为找不到红警安装包苦恼吗? 现在可以随时随地,无论手机、ipad、电脑都可以无需安装包在线玩红警啦!! 不仅能本地单机玩耍,还能联网玩耍(可以和老外一起玩哦~) 具体在线链接可…

Python中函数的4种参数形式

默认参数的特点是在声明函数时使用“”来指定默认值。缺省参数指因为程序使用了默认值,使得函数调用时不必写出全部参数。 关键字参数可以摆脱位置匹配的限制,直接用变量名匹配。可变参数用于处理任意数量的参数,形参中带一个*,将…

JS加密/解密之一个少见的js解密

直接上源代码 (function(){var tfK,EAc715-704;function JQI(d){var q514800;var yd.length;var i[];for(var v0;v<y;v){i[v]d.charAt(v)};for(var v0;v<y;v){var pq*(v245)(q%31355);var eq*(v264)(q%20133);var kp%y;var oe%y;var mi[k];i[k]i[o];i[o]m;q(pe)%3352359…

ArcGIS初始化软件界面Normal.mxt

ArcGIS有时候永久了&#xff0c;或者呢突然不自觉软件界面乱了&#xff0c;或者一些窗口打开却找不到&#xff01; 这时候可以去删除arcgis的界面配置文件&#xff0c;Normal.mxt 删除后再打开软件&#xff0c;软件界面就会回到初始化设置了&#xff01; 文件所在的路径&…

普兰资产(PLAN B KRYPTO ASSETS):Schutz AI 公链引领数字资产新时代

比特B ETF是金融技术革命的起始 普兰资产&#xff08;PLAN B KRYPTO ASSETS&#xff09;执行长Jonah Fischer指出&#xff0c;比特B ETF 仅是迈向金融领域技术革命的首个阶段。他认为比特B现货 ETF 提供了投资者接触年轻且具有风险性的资产的途径&#xff0c;但他强调区块链技术…

【趣味题-06】20240121 三色球

36.有红、黄、白三种球共160个.如果取出红球的1/3&#xff0c;黄球的1/4&#xff0c;白球的1/5&#xff0c;则还剩120个&#xff1b; 如果取出红球的1/5&#xff0c;黄球的1/4&#xff0c;白球的1/3&#xff0c;则剩116个&#xff0c; 问&#xff08;1&#xff09;原有黄球几个…

文件操作与IO(2)

Java中通过java.io.File类来对一个文件(包括目录)进行抽象的描述.注意,有File对象,并不代表真实存在该文件. File概述 我们先来看看File类中的常见属性,构造方法和方法. 属性 修饰符及类型属性说明static StringpathSeparator依赖系统的路径分隔符,String类型的表示static …

【51单片机】

0、前言 参考&#xff1a;普中 51 单片机开发攻略 第14章 1、硬件 ULN2003 芯片 2、软件 mian.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned char u8; typedef unsigned int u16;sbit DC_MotorP1^0;void DC_Mo…

使用STM32的UART实现蓝牙通信

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;&#x1f447…

基于Unity平台开发Vision Pro应用

VisionOS是苹果最新空间计算设备Vision Pro的操作系统。Unity开发人员可以利用现有的3D场景 以及为 visionOS 构建游戏或应用程序的资产。有关 visionOS 的更多信息&#xff0c;请参阅 Apple 的 visionOS 概述。 visionOS提供了几种不同的显示应用程序的模式&#xff1a;Windo…

线性代数:逆、转置、分块、多项式 矩阵公式总结

目录 逆矩阵、转置矩阵重要公式 公式 证明 矩阵分块 基本运算 分块的逆&#xff08;主副对角线分块对角阵的逆、主副对角线上下三角分块对角阵的逆&#xff09; 例 矩阵多项式 例 克拉默法则及逆矩阵求方程组 逆矩阵、转置矩阵重要公式 公式 证明 矩阵分块 基本运…

【嵌入式移植】4、U-Boot源码分析1—Makefile

U-Boot源码分析1—Makefile 1 分析思路2 u-boot源码目录结构3 Makefile源码3.1 版本号3.2 环境变量3.3 Beautify output3.4 输出文件的目录设置、PHONY目标3.6 目录信息3.5 Source Code Checker3.7 设置单独编译模块、PHONY目标3.8 获取宿主机的架构和系统3.9 设置交叉编译工具…

课题学习(十九)----Allan方差:陀螺仪噪声分析

一、介绍 Allan方差是一种分析时域数据序列的方法&#xff0c;用于测量振荡器的频率稳定性。该方法还可用于确定系统中作为平均时间函数的本征噪声。该方法易于计算和理解&#xff0c;是目前最流行的识别和量化惯性传感器数据中存在的不同噪声项的方法之一。该方法的结果与适用…