开发者分享|读懂用好 Timing Constraints 窗口

2024-02-07 02:50

本文主要是介绍开发者分享|读懂用好 Timing Constraints 窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文作者:赛灵思工程师 Grace Sun

随着设计复杂度和调用 IP 丰富度的增加,在调试时序约束的过程中,用户常常会对除了顶层约束外所涉及的繁杂的时序约束感到困惑而无从下手。举个例子,用户在 XDC 里面并没有指定 set_false_path,为什么有些路径在分析时忽略了?那怎么去定位这些约束是哪里设定的?


事实上,Vivado 集成设计环境提供了很多辅助工具来协助用户完成时序约束的分析。

本文阐述了如何结合 Timing Constraints 窗口对设计中的约束进行查看及分析,希望为用户的设计调试提供一些思路和方向。

Timing Constraints 窗口的开启

Timing Constraints窗口仅对Synthesized Design或Implemented Design适用。您可以通过以下三种方式之一找到其入口:

1. Open Synthesized/Implemented Design,选择菜单Windows > Timing Constraints

175c8ddc0403b36e9ff7cfdfdf1188bc.png

2. Open Synthesized Design,选择Flow Navigator里Synthesized Design 部分的 Edit Timing Constraints

38095e5fdda5dc9ed5816c8ab358b061.png

3. Open Implemented Design,选择Flow Navigator里Implemented Design 部分的 Edit Timing Constraints

78204b3b9b71601abc2c34f22d922c76.png

Timing Constraints 窗口一览

Timing Constraints 窗口可以以图示的方式直观显示当前导入的设计中所存储的时序约束,以分类组织的架构,用户可以方便地定位约束创建的顺序及来源。

打开后的窗口整体如下图所示:

8ba50a583dd9acf3612d25def85ad9ee.png

左上部分子窗口将约束做了分类,括号里是每一类约束的数量。

775ce63181e1d294a99201e0a4623cb6.png

当选定某一类约束后,设计中所有这类约束信息会以电子表格的形式显示在右上部分子窗口。

以 Create Clock 约束为例:

0ff088fe77bf68d555ce2673d4d21aa4.png

Position 列是约束的位置信息,跟约束的读入顺序对应。前面带锁图标表明此约束无法在表格上直接编辑,通常是 IP 自带的约束。


Source File 列显示了约束来源于哪个 XDC 或 Tcl 文件。


Scoped Cell 列显示了约束的作用范围,是全局还是某一个实例,通常此列显示的名称对应于自带特定约束的 IP 实例名。

当点击某一行选中约束后,同时在下方的 All Constraints 子窗口会高亮此约束语句

4ec823c1fdb712efa2a00f0f695a17d2.png

用户可以快速看到原始约束语句以及其来源 XDC 的具体文件位置。

All Constraints 子窗口显示加载到内存中的约束的完整列表,其顺序与应用它们的顺序相同。约束根据它们所源自的 XDC file 或 Tcl 脚本进行分组,根据查看需要可切换多种视图。

您可以点击 expand 或 collapse 图标展开或折叠每个约束文件的约束,如下图所示:

展开约束:

cbe191ef2c90edaa62277c30b7dbd04c.png

折叠约束:

4e8e8708310ad5cc31bf6d7395076271.png

此时点击 Constraints 旁的箭头可以看到所有关联的约束文件,进一步可以点击某个约束文件旁的箭头进行逐一查看。

948f441f8159f460e533b38b906183e3.png

您也可以取消选择 Group by Source 图标,将视图切换到一个表格,按序显示设计中的所有时序约束,其中source constraint 文件和 Scoped Cell 信息显示在右侧的两列中。

4edbd7b6daa62cb7c4be0d349487e684.png

在 Timing Constraints 窗口进行约束编辑

除了在表格中查看已有约束,还可以对已有约束进行删减、修改或者添加新的约束,改动结果也会实时反映在下方的All Constraints 窗口并应用在当前的 in-memory 设计,方便用户在不重新跑综合实现的前提下进行多角度的时序分析试验。

要删除某一条约束,可以从任一子窗口选中此约束,右键选Remove Constraint,或者点击-图标,并点击窗口下方的Apply 按键以刷新内存中的约束。

85d3ebd2fa179f13d9e5f601225fdbb3.png

要编辑某一条约束(注意只能修改非只读,即约束前没有带锁标志的),可以选中此约束,右键选 Edit Constraint,或者点击编辑图标。

a968d69848b326ed535ba9dee686349a.png

在随后打开的约束编辑对话框中完成修改,并点击窗口下方的Apply 按键以刷新内存中的约束。

要添加新的约束,可以点击分类表格子窗口的+图标,或者在某一类约束的空白处双击,在随后打开的对话框中将约束信息补充完整。

e29b12f57637a3d9c6f723e524a605ec.png

也可以在 Tcl Console 敲入新的约束进行添加。

新约束出现在名为的组中的列表末尾。

2122266f0447a4c5a07db6833e746b89.png

约束修改后可以直接在 in-memory 设计上生效,由此展开更新后的时序分析,在当前布局布线的结果上评估修改后的时序。

评估完成后,如果需要保存所作的修改,可以在 Close Design的时候选择 Save Constraints,工具会自动选择标记为 Target的 XDC 文件进行保存。如果并不想改动原始约束或者并不需要保存全部改动,可以在退出设计时忽略 Save Constraints,之后再手动修改设计中的约束文件,加入想要的改动。

总结

以上内容对 Vivado IDE 中的Timing Constraints 窗口做了介绍,与 write_xdc 命令相比,其最大的优势是能直观显示设计中所有约束的分组及来源,为时序约束的查看、验证及假设分析提供了比较方便的接口,与其他调试手段结合,可以提升设计效率。

赛灵思中文技术支持社区

欢迎在赛灵思中文技术支持社区中留言讨论开发过程中遇到的问题与启发!

本社区致力于为Xilinx 用户及生态合作伙伴提供一个分享、讨论和相互协作解决问题的交流社区,注册即可浏览论坛内容或者参与讨论。

https://support.xilinx.com/s/?language=zh_CN

这篇关于开发者分享|读懂用好 Timing Constraints 窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686312

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

Python中处理NaN值的技巧分享

《Python中处理NaN值的技巧分享》在数据科学和数据分析领域,NaN(NotaNumber)是一个常见的概念,它表示一个缺失或未定义的数值,在Python中,尤其是在使用pandas库处理数据时,... 目录NaN 值的来源和影响使用 pandas 的 isna()和 isnull()函数直接比较 Na

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业