vivado约束方法2

排序约束条件

因为XDC约束是按顺序应用的,并且是基于明确的优先级排列的规则,您必须仔细检查约束的顺序。

Vivado IDE为您的设计提供了全面的可视性。要逐步验证约束,请执行以下操作:

1.运行相应的报告命令。

2.查看Tcl控制台或消息窗口中的消息

推荐的约束序列

无论您在设计中使用一个或多个XDC文件,都可以在中组织约束以下顺序。

## Timing Assertions Section # Primary clocks
# Virtual clocks
# Generated clocks # Clock Groups
# Bus Skew constraints
# Input and output delay constraints
## Timing Exceptions Section # False Paths
# Max Delay / Min Delay # Multicycle Paths
# Case Analysis # Disable Timing
## Physical Constraints Section
# located anywhere in the file, preferably before or after the timing
constraints # or stored in a separate constraint file

从时钟定义开始。任何人都必须先创建时钟,然后才能使用它们随后的约束。在声明时钟之前对时钟的任何引用都会导致错误并且忽略相应的约束。在单个约束文件中也是如此,因为以及设计中的所有XDC文件(或Tcl脚本)。约束文件的顺序很重要。您必须确保每个文件中的约束不会依赖于另一个文件的约束。如果是这种情况,则必须读取包含约束依赖关系最后。如果两个约束文件具有相互依存关系,则必须手动将它们合并到一个包含正确序列的文件中,或者将文件划分为几个单独的文件并正确排序。

约束序列编辑

Vivado IDE约束管理器将任何编辑后的约束保存回中的原始位置XDC文件,但不在Tcl脚本中。任何新的约束都保存在XDC文件的末尾标记为目标。在许多情况下,当约束集包含多个XDC文件时,目标约束文件不是列表中的最后一个文件,并且在打开或重新加载时不会最后加载您的设计。因此,保存到约束源文件的约束序列可以与你之前记忆中的不同。

约束文件顺序

在没有任何IP的项目流中,所有约束都位于约束集中。默认情况下Vivado IDE中显示的XDC文件(或Tcl脚本)的顺序定义了所使用的读取顺序当将精心设计或合成的设计加载到内存中时,由该工具执行。的顶部的文件列表先读入,最下面的一个最后读入。您可以简单地更改订单在IDE中选择文件,然后将其移动到列表中所需的位置。例如,在下图中,文件wave_gen_pin.xdc被移动到文件之前使用拖放的wave_gen_timing.xdc

The equivalent Tcl command is:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \
[get_files wave_gen_pins.xdc]

在非项目模式下,read_xdc调用的顺序决定了将评估约束文件。

IP核的约束文件顺序许多IP核心与一个或多个XDC文件一起交付。当生成这样的IP核时在RTL项目中,它们的XDC文件也在各种设计编译过程中使用步骤。例如,下图显示项目中的一个IP核心附带XDC文件。

默认情况下,在用户XDC文件之前读取IP XDC文件。以这种方式处理它允许IP来创建一个可以在XDC中引用的时钟对象。它还允许您覆盖由IP核心设置的物理约束,因为在IP之后评估用户约束。对于依赖于时钟对象的IP核,此顺序有一个例外由用户或另一个IP创建(例如,get_clocks-of_objects[get_ports-clka])。在这种情况下,在用户文件之后读取IP XDC。此行为由PROCESSING_ORDER属性控制,该属性为每个XDC文件设置:

•早期:必须首先读取的文件

•正常:默认

•LATE:必须最后读取的文件

IP XDC将其PROCESSING_ORDER属性设置为EARLY或LATE。无IP传递属于NORMAL约束组的XDC文件。对于用户XDC(或Tcl)文件属于同一PROCESSING_ORDER组,它们的相对顺序显示在Vivado IDE中确定它们的读取顺序。可以通过移动文件来修改组内的顺序在Vivado IDE约束集中,或使用reorder_files命令。对于属于同一PROCESSING_ORDER组的IP XDC文件,确定顺序通过IP核的导入或创建顺序。项目结束后不能更改此顺序已创建。最后,用户组和IP XDC PROCESSING_order组之间的相对顺序如下如下所示:

1.标记为EARLY的用户约束

2.IP约束标记为EARLY(默认)

3.标记为NORMAL的用户约束

4.标记为LATE的IP约束(包含时钟依赖项)

5.标记为LATE的用户约束

The equivalent Tcl command is:
set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc]

更改读取顺序

要更改约束集中XDC文件或非托管Tcl脚本的读取顺序,请执行以下操作:

1.在“源”窗口中,选择要移动的XDC文件或Tcl脚本。

2.将文件拖放到约束集中所需的位置。

reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \
[get_files wave_gen_pins.xdc]

在非项目模式下,read_xdc或source命令的顺序决定了顺序将读取约束文件。如果使用带有约束的IP核心,将处理两组约束自动如下:

•不依赖于时钟的约束被分组在XDC文件中PROCESSING_ORDER设置为EARLY,

•依赖于时钟的约束被分组在设置了PROCESSING_ORDER的XDC文件中迟到。

默认情况下,用户XDC文件属于PROCESSING_ORDER NORMAL组。它们已加载在EARLY XDC文件之后和在LATE XDC文件之前。对于每个PROCESSING_ORDER组,IPXDC文件的加载顺序与IP核心在IP源中列出的顺序相同窗例如,下图显示了随XDC文件。

When you open your design, the log file shows that the IP XDC file was loaded last:
Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/
clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/
clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/
char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/
char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Parsing XDC File [C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/
wave_gen_timing.xdc] Finished Parsing XDC File [C:/
project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc]
Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/
char_fifo/char_fifo_clocks.xdc
] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/
char_fifo/char_fifo/char_fifo_clocks.xdc
] for cell 'char_fifo_i0/U0' Completed Processing XDC Constraints

与用户XDC文件不同,您不能直接更改IP XDC文件的读取顺序属于同一PROCESSING_ORDER组。如果必须修改订单,请执行以下操作:

1.禁用相应的IP XDC文件(IS_ENABLED设置为false)。

2.复制它们的内容。

3.将内容粘贴到约束集中包含的一个XDC文件中。

4.使用完整的分层网表对象路径名称更新复制的IP XDC命令在任何需要的地方。这样做是必需的,因为IP XDC约束是以这样的方式编写的可以将它们的作用域设置为IP实例的方式。

5.查看以特殊方式处理的get_ports查询的作用域约束。对于有关XDC作用域的更多信息,请参阅约束作用域。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

I/O设备模型

I/O设备模型 绝大部分的嵌入式系统都包括一些I/O(Input/Outut,输入/输出)设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上用于保存数据的Flash或SD卡,以及网络设备的以太网接口等。 I/O设备模型…

计网Lesson10 - 网络层之IP协议分析

文章目录 网络层协议IPv4 数据报格式IPv4 数据报首部格式版本(Version)首部长度(Header Length)区分服务(Differentiated Services Field)可选字段填充总长度(Total Length)标识、标…

算法Day32 买卖椰子水

买卖椰子水 Description 在海滩上,一杯椰子水的售价为5元。一名顾客一次购买一杯椰子水(按照bills支付的顺序)。 每位顾客购买椰子水时,可能向你支付 5 元、10 元或 20 元。你必须给每个顾客正确找零,对于支付 5 元的…

CentOS7 OpenSSL升级到OpenSSH9.5p1

原文链接: CentOS7 OpenSSL升级1.1.1w;OpenSSH 升级 9.5p1 保姆级教程 openssl从3.1.0升级到3.1.1遇到的问题 注意操作时需要联网请参考如下链接 内网服务器联网安装依赖参见我的另一篇文章 一、 前言 OpenSSH 的加密功能需要用到OpenSSL,所…

在服务器上配置jupyter notebook便于本地访问

文章目录 需求配置1. 安装jupyter2. 生成配置文件3. 设置登录密码并生成秘钥a. 打开服务器的终端b. 设置密码 4. 修改配置文件a. 进入配置文件所在的文件夹b. 编辑配置文件jupyter_notebook_config.pyc. 保存文件 5. 在服务器上生成jupyter访问地址 关注公众号:『 …

别整那么复杂,一二三就行了!Windows下vscode运行c++代码

这里写自定义目录标题 别整那么复杂,三步就行!Windows下vscode运行c代码下载VScode:https://code.visualstudio.com/Download#安装四个插件下载mingw-64:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/大功告成&am…

ubuntu 自动安装 MKL Intel fortran 编译器 ifort 及完美平替

首先据不完全观察,gfortran 与 openblas是 intel fortran 编译器 ifotr和mkl的非常优秀的平替,openblas连函数名都跟mkl一样,加了一个下划线。 1, 概况 https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-too…

螺旋矩阵算法(leetcode第885题)

题目描述: 在 rows x cols 的网格上,你从单元格 (rStart, cStart) 面朝东面开始。网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。你需要以顺时针按螺旋状行走,访问此网格中的每个位置。每当移动到网格的边界之…

Fractal-Streets

title: Fractal Streets date: 2023-12-13 14:48:45 tags: 分形 categories: 算法进阶指南 题目大意 将原来的城市复制一遍放在原城市的上方,将原城市顺时针90放在原城市的左上方,将逆时针90后的城市放在原城市的左边,然后用道路将四部分链接…

python和pygame实现烟花特效

python和pygame实现烟花特效 新年来临之际,来一个欢庆新年烟花祝贺,需要安装使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 效果图及源码 先看效果图&#xff1a…

spingboot项目实战之若依框架创建新模块

前言 目前的脚手架系统很多,比较早接触诺依框架,以若依框架为参考如何创建新模块 步骤 1. 下载诺依框架,依照参考说明一步步,能做到系统运行起来。 2. 准备好mysql文件,创建新数据库表 3. 数据库管理工具navicat…

基于VGG-16+Android+Python的智能车辆驾驶行为分析—深度学习算法应用(含全部工程源码)+数据集+模型(四)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存4. 模型生成 系统测试1. 训练准确率2. 测试效果3. 模型应用 相关其它博客工程源代码下载其它资料下载 前言 本项目采用VGG-16网络模型,使用Kaggle开源数据集…

Docker | Docker+Nginx部署前端项目

= ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容:Docker | Docker+Nginx部署前端项目 📚个人知识库: [Leo知识库]https://gaoziman.gi…

工业SCADA组态软件:数据采集与过程监控

随着工业4.0时代的到来,工业物联网平台在工业领域的应用越来越广泛。SCADA(Supervisory Control and Data Acquisition,监控和数据采集)组态软件作为工业物联网的重要组成部分,发挥着越来越重要的作用。本文将详细介绍…

初级数据结构(四)——队列

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;三&#xff09;——栈 | NULL 下一篇-> 本篇是属于上一篇的补充篇&#xff0c;因为队列和栈的属性特别类似&#xff0c;很多细节部分可以查看上一篇或者初级据结构的第二…

DPDK是什么?DPDK网卡更有优势吗?

近年来&#xff0c;随着数字化的推进&#xff0c;上云成为企业数字化建设的重要指标&#xff0c;用云程度持续深入。可以说&#xff0c;云时代已经来临。 应云而生的DPDK 云时代的一个典型特征&#xff0c;是数据的高速增长。据华为GIV数据&#xff0c;预计2025年全球数据量将…

Java毕业设计—vue+SpringBoot图书借阅管理系统

图书管理系统 1. 开发目的 实现图书的智能化、信息化和简单化&#xff1b;实现图书信息的增加、删除、修改、查找、借阅、还书、收藏的显示操作及实时数据库的提交和更改和对普通用户的增、删、改、查&#xff1b;提高图书管理员工作信息报送及反馈的工作效率&#xff0c;减轻…

Visual Studio调试技巧合集

Visual Studio调试技巧合集 1 如何同一个项目运行不同main文件&#xff1f; 1 如何同一个项目运行不同main文件&#xff1f; &#xff08;1&#xff09;移动鼠标到需要关掉调试的文件&#xff0c;点击右键属性–常规–从生成中排除–是–确定&#xff0c;即显示“-”号排除&am…

电线电缆行业生产管理MES系统解决方案

电线电缆行业生产管理mes系统核心功能 基础数据管理&#xff1a;对基础数据进行统一管理&#xff0c;包括组织架构、原材料数据、设备数据、报工数据、检验数据、员工数据等工艺与BOM管理&#xff1a;对工艺标准进行统一管理&#xff0c;包括工艺的版本管理、关联型号管理&…

Tair(4):Tair原理架构

一个Tair集群主要包括3个必选模块&#xff1a;ConfigServer、Dataserver和Client 通常情况下&#xff0c;一个 Tair 集群中包含2台 Configserver 及多台 DataServer。其中两台 Configserver 互为主备。通过和 Dataserver 之间的心跳检测获取集群中存活可用的 Dataserver&#…