开发者分享|读懂用好 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

相关文章

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试