FPGA时序分析与约束(4)——时序分析,时序约束,时序收敛

一、前言

        在之前的文章中,我们介绍了组合电路的时序和时序电路的时序问题,之后又把理想化的时钟变成了实际的时钟考虑了进来,在阅读本文之前,强烈推荐优先阅读本系列之前的文章,毕竟这是我们继续学习的基础,前文链接:

FPGA时序分析与约束(3)——时钟不确定性

接下来我们将介绍3个在解决FPGA时序问题时经常出现的词,分辨时序分析,时序约束,时序收敛的含义。 

二、时序分析

1、什么是时序分析

        从硬件描述语言(HDL)编写的RTL设计代码生成网表(逻辑门之间的配线信息)的过程称之为逻辑综合。最终决定逻辑综合所生成的电路网表在FPGA中以何种方式实现的两道工序成为布局和布线。FPGA内部规则地摆放着大量设计好的电路和电路间配线,用于实现用户设计。所谓的FPGA的设计流程,就是决定专为FPGA综合生成的电路摆放在哪里,电路之间以什么样的方式连接的过程。

        为了保证设计好的电路能够正常工作,不单要保证功能(逻辑)正确,还必须要保证时序正确。时序分析本质上就是一种时序检查,目的是检查设计中所有的D触发器是否能够正常工作,也就是检查D触发器的同步端口(数据输入端口)的变化是否满足建立时间要求(Setup)和保持时间要求(Hold);检查D触发器的异步端口(异步复位端口)的变化是否满足恢复时间要求(Recovery)和移除时间要求(Removal)。

2、时序分析分类

        时序分析可以分成2种:静态时序分析(STA)和动态时序分析。

2.1 动态时序分析

        将布局布线生成的布线延迟信息反标注到门级网表中进行仿真,检查是否存在时序违例。此时的仿真包括门延迟和布线延迟信息,能够较好反应芯片的实际工作情况。因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题。

2.2 静态时序分析

        采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。

        由于基于仿真的方法分析每个逻辑值并进行动态时序分析的方法太过耗时,所以FPGA的性能评估主要采用的是静态时序分许(Static Timing Analysis,STA)。

三、时序约束

        理解了时序分析,时序约束也就不难理解了。我们在进行静态时序分析之前需要撰写基本的时序约束文件,告知时序引擎一些必要的信息(比如时钟,输入输出延时等)。若没有正确的时序约束,那么时序分析的结果是没有意义的。

        简单来说,时序约束就是我们设计者对于系统的时序要求,通过约束文件的方式来告知综合工具,综合工具才能以此为依据进行电路综合,布局布线。毕竟在FPGA中,“高速通道”是有限的,如果一条路线对于时序没有高要求,那完全可以采用“低俗通道”来替代实现

四、时序收敛

        时序约束描述了电路中的时序要求和时序路径,而实际电路中的各种时钟和信号延迟会影响时序路径的实际延迟。如果时序约束和实际电路之间的延迟不能匹配,会导致电路中的时序错误。

        时序收敛过程可以通过FPGA设计工具进行自动化分析和优化。在进行时序分析时,设计工具会基于时序约束和设计的布局进行路径分析,计算每个时序路径的最长延迟。如果某个时序路径的延迟超过了时序约束,则需要进行手动优化,如优化布局,调整时钟频率等。如果时序路径的延迟小于时序约束,则可以将该时序路径标记为无误差,继续进行后续的时序分析和优化。时序收敛是基于实际电路和时序约束之间的匹配,它是FPGA设计中非常重要的一个环节。一个成功的时序收敛不仅会确保电路的正确性,还可以提高电路的运行速度和可靠性。

        简单说就是时序收敛是我们根据EDA工具给出的时序报告,不断优化完善我们时序问题的过程。

五、总结

        本文中我们学习了时序分析,时序约束,时序收敛的含义,我们主要采用的时序分析方法是静态时序分析法,在后文中,我们将正式开始介绍如何进行时序分析。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习策略——优化深度学习系统

正交化(Orthogonalization) 老式电视机,有很多旋钮可以用来调整图像的各种性质,对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来…

Ansible学习笔记4

file模块: file模块用于对文件相关的操作(创建、删除、属性修改、软链接等)touch是创建。 [rootlocalhost ~]# ansible group1 -m file -a "path/tmp/111 statetouch" 192.168.17.105 | CHANGED > {"ansible_facts"…

API管理风险:如何确保您的API安全与可靠?

API管理风险:如何确保您的API安全与可靠? 随着数字化时代的到来,应用程序接口(API)在现代软件开发中发挥着关键的作用。然而,API管理过程中存在着各种潜在的风险。本文将探讨如何有效地管理和缓解这些风险…

linux安装firefox

1.下载对应包 https://www.mozilla.org/en-US/firefox/all/#product-desktop-release 2. 挂载桌面链接(如果/usr/bin/firefox下有的话,先删除) ln -s /opt/firefox/firefox /usr/bin/firefox 3.执行以下命令,即可启动Firefox客户端: firefox

easyexcel poi根据模板导出Excel

1.导入依赖 <!-- poi依赖--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version> </dependency> <!-- poi对于excel 2007的支持依赖--> <dependency…

大数据项目实战(Sqoop安装)

一&#xff0c;搭建大数据集群环境 1.4 Sqoop安装 1.sqoop安装 &#xff08;1&#xff09;上传安装包 &#xff08;2&#xff09;解压安装包 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /export/servers &#xff08;3&#xff09;重命名 mv sqoop-1.4.6.b…

安装kali虚拟机镜像的坑

1.0 安装虚拟机镜像成功之后&#xff0c;只有光标&#xff0c;没有界面 在VMware上安装kali linux环境时&#xff0c;根据提示操作完成后&#xff0c;开启虚拟机&#xff0c;屏幕黑屏&#xff0c;左上角有一个光标在闪&#xff0c;一直开不了机。 出现问题的原因&#xff0c;…

拓世科技集团 | “书剑人生”李步云学术思想研讨会暨李步云先生九十华诞志庆

2023年&#xff0c;中国改革开放迎来了45周年&#xff0c;改革春风浩荡&#xff0c;席卷神州大地&#xff0c;45年间&#xff0c;中国特色社会主义伟大事业大步迈入崭新境界&#xff0c;一路上结出了饶为丰硕的果实。中华民族在这45年间的砥砺前行&#xff0c;不仅使中国的经济…

ELK安装、部署、调试 (二) ES的安装部署

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口操作ES&#xff0c;也可以利用Java API。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业…

漂浮岛场景WebGL效果解析

访问在线地址&#xff0c;代码在此处。 场景构图 该场景使用了3个岩石模型&#xff0c;一些通用的阙类植物、树木模型&#xff0c;还有空中的鸟类模型。 场景的渲染顺序&#xff1a;深度预通道&#xff0c;岩石&#xff0c;鸟类&#xff0c;天空&#xff0c;云粒子。 相机…

yolov5模型转换

yolov5本身release目录有提供了onnx转换好的模型&#xff0c;想着也自己操作一遍&#xff0c;可是实际操作却遇到了问题&#xff0c;这里做下记录方便后续可能用到 安装onnx&#xff0c;转的时候提示出错ONNX: export failure 0.1s: Unsupported ONNX opset version: 17 修改…

Android 13 - Media框架(9)- NuPlayer::Decoder

这一节我们将了解 NuPlayer::Decoder&#xff0c;学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容&#xff0c;如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单&#xff0c;越读越发现自己的无知&#xff0c;Android 源码真…