vivado 约束范围界定

2023-12-19 22:28
文章标签 范围 vivado 约束 界定

本文主要是介绍vivado 约束范围界定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

约束范围界定

来自特定XDC文件的约束可以选择性地作用于特定模块,以您设计的特定单元格,或者两者都有,如果需要的话。这便于创建和应用约束到设计的子级别,而没有任何关于顶层的信息。这个块级约束必须独立于顶层约束进行开发,并且必须尽可能通用,以便在各种上下文中使用。他们也不能影响超出块边界的任何逻辑。默认情况下,Vivado的所有IP核心Vivado Design Suite项目中生成的IP目录使用此机制加载其内存中的约束。

XDC文件作用域属性

通过在上指定以下属性来激活约束作用域机制XDC文件:

•SCOPED_TO_REF:此属性采用模块(或实体)的名称。限制条件是仅应用于指定模块(或实体)的所有实例。

•SCOPED_TO_CELLS:此属性采用分层单元格名称列表。限制条件是作用域并单独应用于每个分层单元。

•SCOPED_TO_REF+SCOPED_TO_CELLS:如果同时指定了这两个属性,约束应用于位于模块内部的SCOPED_to_CELLS列表的每个单元(或实体)由SCOPED_TO_REF指定。这些属性由Vivado Design Suite为添加到RTL的IP核自动设置项目通过IP目录。

设置XDC文件作用域属性示例

下图显示了uart_tx_i0单元格,它是uart_tx模块的一个实例,包括两个分层单元uart_tx_ctl_i0和uart_baud_gen_tx_i0。该项目包括一个XDC文件uart_tx_ctl.XDC,用于约束uart_tx-ctl模块。

以下是使用作用域属性的三个等效Tcl示例uart_tx_ctl.xdc。可以在中的xdc文件的“属性”窗口中设置相同的值Vivado IDE。

# Using the reference module name only:
set_property SCOPED_TO_REF uart_tx_ctl [get_files uart_tx_ctl.xdc]
# Using the cell name only:
set_property SCOPED_TO_CELLS uart_tx_i0/uart_tx_ctl_i0 [get_files
uart_tx_ctl.xdc]
# Using both the uart_tx reference module and uart_tx_ctl_i0 instance:
set_property SCOPED_TO_REF uart_tx [get_files uart_tx_ctl.xdc] set_property
SCOPED_TO_CELLS uart_tx_ctl_i0 [get_files uart_tx_ctl.xdc]

在非项目模式下使用Vivado Design Suite时,可以使用read_xdc命令带有-ref和-cells操作

# Using the reference module name only:
read_xdc -ref uart_tx_ctl uart_tx_ctl.xdc # Using the cell name only:
read_xdc -cells uart_tx_i0/uart_tx_ctl_i0 uart_tx_ctl.xdc
# Using both the uart_tx reference module and uart_tx_ctl_i0 instance
read_xdc -ref uart_tx -cells uart_tx_ctl_i0 uart_tx_ctl.xdc

当一个模块在设计中被实例化多次时,该模块在合成合成后,RTL模块的每个实例都指向不同的模块名称为了将一些XDC约束应用于原始RTL模块的所有实例应使用属性ORIG_REF_NAME而不是属性REF_NAME。例如:

set_property SCOPED_TO_REF [get_cells -hierarchical -filter {ORIG_REF_NAME
== uart_tx_ctl}] [get_files uart_tx_ctl.xdc]
read_xdc -ref [get_cells -hierarchical -filter {ORIG_REF_NAME ==
uart_tx_ctl}] uart_tx_ctl.xdc

XDC范围界定机制

除了端口之外,约束作用域依赖于current_instance机制,该机制是Synopsys设计约束(SDC)标准的一部分。将范围设置为较低级别时在带有current_instance命令的设计层次结构中,只有包含在中的对象对象查询命令可以返回该级别或更低级别。唯一的例外是定时时钟对象和网表端口:

•定时时钟由create_clock或create_generated_clock定义。它们是无论当前实例设置如何,在整个设计中都可见。get_clocks命令可以查询当前实例中不存在的或传播的时钟超出当前实例。AMD不建议在时钟上定义定时异常创建作用域约束时,除非它们完全包含在当前实例中。对于时钟要在XDC中可供参考,则该时钟必须已经定义。这可能需要更改顺序

•当作用域设置为较低时,get_ports命令会返回顶级端口使用current_instance命令级别实例。但是在读取XDC文件作用域时使用readxdc-ref/-cells命令或在加载设置SCOPED_TO_REF/SCOPED_TO_CELLS文件属性后的设计get_ports命令行为不同:

○要与get_ports一起使用的端口名是作用域实例的端口名接口,而不是顶级端口名。

○如果作用域实例端口通过的层次结构直接连接到顶级端口在设计中,顶级端口由getports命令和约束返回应用于顶级端口。

○如果作用域实例端口之间有任何叶单元,包括IO和时钟缓冲区和顶级端口,get_ports命令变为get_pins命令,并且返回层次结构范围的实例pin。XDC作用域机制用于读取所有Vivado Design Suite IP约束文件。图形47和图48显示了当使用这种方法在IP级XDC中读取。在图47中,I/O缓冲区在IP内实例化,IP接口引脚直接连接到顶级端口(无论层次结构如何)。当应用用于IP的XDC时,用顶级端口替换的getports的参数。这允许将物理属性(如LOC或IOSTANDARD)设置为

下图中,IP不包含I/O缓冲区,因此合成引擎推断出一个在IP接口引脚和顶级端口之间。因此,get_ports被转换为当应用XDC时IP接口引脚(例如分层引脚)的get_pins。

此功能对于在IP或子级别的接口上创建约束非常有用模块,而不知道顶层设计的名称。如果作用域XDC文件包含只能应用于顶级端口但不能应用于IP的约束实例没有直接连接到顶级端口,Vivado Design Suite XDC读取器将返回错误。例如,以下约束只能应用于顶级端口,以及而不是您设计的分层引脚:

set_input_delay / set_output_delay
set_property IOSTANDARD

这篇关于vivado 约束范围界定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

创建表时添加约束

查询表中的约束信息: SHOW KEYS FROM 表名; 示例: 创建depts表包含department_id该列为主键自动增长,department_name列不允许重复,location_id列不允许有空值。 create table depts(department_id int primary key auto_increment,department_name varcha

非空约束(Not Null)

修改表添加非空约束 使用DDL语句添加非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL; 示例: 向emp表中的salary添加非空约束。 alter table emp modify salary float(8,2) not NULL; 删除非空约束 使用DDL语句删除非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NULL;

机器学习模型中的因果关系:引入单调约束

单调约束是使机器学习模型可行的关键,但它们仍未被广泛使用欢迎来到雲闪世界。 碳ausality 正在迅速成为每个数据科学家工具包中必不可少的组成部分。 这是有充分理由的。 事实上,因果模型在商业中具有很高的价值,因为它们为“假设”情景提供了更可靠的估计,特别是在用于做出影响业务结果的决策时。 在本文中,我将展示如何通过简单的更改(实际上添加一行代码)将传统的 ML 模型(如随机森林、L

javaweb-day01-3(XML 的 dtd 约束)

XML 的约束方式有两种:dtd 和 schema  DTD约束: Document Type Definition    文档类型定义、文档类型界定。 入门示例: book.xml : <?xml version="1.0" encoding="gb2312"?><!DOCTYPE 书架 SYSTEM "book.dtd"><书架><书><书名>J

过滤器:精密过滤器特点及应用范围概述

精密过滤器(又称作保安过滤器),筒体外壳一般采用不锈钢材质制造,内部采用PP熔喷、线烧、折叠、钛滤芯、活性炭滤芯等管状滤芯作为过滤元件,根据不同的过滤介质及设计工艺选择不同的过滤元件,以达到出水水质的要求。随着过滤行业的不断发展,越来越多的行业和企业运用到了精密过滤器,越来越多的企业加入了精密过滤器行业。   一、精密过滤器的性能特点及应用   1、精密过滤器的性能特点   (1)过滤精

oracle2之约束

《1》子查询和关联查询 建立表如下: 学生基本信息表 CREATE Student( [Studentid][Int]IDENTITY(1,1)NOT NULL primary key,--主键 [StudentName][char]NOT NULL ) 课程信息表 CREATE Subject( [SubjectID][char]NOT NUL