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

相关文章

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

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

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

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

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