vivado 管理宏

管理宏

宏存储为XDC约束。根据定义,它们是Tcl命令。这允许要在XDC约束文件和Tcl脚本中使用并交互使用的宏。宏是使用write_xdc命令编写的。使用read_xdc读取宏命令-cell选项可用于将作用域限制为特定的单元格。-cell选项特别适用于将一个宏的相对放置应用到不同层次结构中的相似实例。

管理宏示例一

在内存中写入所有XDC约束,包括宏:

% write_xdc constrs.xdc

管理宏示例二

设计包含单元的三个实例:

inst_0、inst_1和inst_2。

在inst_0中创建了一个宏:

% create_macro m0
% update_macro m0 {reg0 X0Y0 reg1 X0Y1}
% write_xdc -cell inst_0 inst_0.xdc

管理宏示例三

为单元inst_0写入包括宏m0在内的所有XDC约束:

% write_xdc -cell inst_0.xdc inst_0.xdc

管理宏示例四

从单元inst_0读取XDC约束,包括宏m0,并将其应用于inst_1和inst_2:

% read_xdc inst_0.xdc -cell {inst_1 inst_2}
% get_macros
m0 inst_1_m0 inst_2_m0

宏属性

宏对象具有以下特性:

•绝对网格

•等级

•名称

•RLOCS

宏属性示例

% report_property [get_macros m1]
Property Type Read-only Visible Value
ABSOLUTE_GRID bool true true 0
CLASS string true true macro
NAME string true true m1
RLOCS string* true true u2/sr0 X0Y0 u2/sr1 X0Y1

以下是对属性的描述。

绝对网格

布尔属性,反映RLOC是否使用默认网格系统或绝对网格系统。默认值为false。如果update_macro与-absolute_grid一起使用,则该属性为true。绝对栅格使用与场地RPM_X和RPM_Y特性对齐的坐标,以允许从放置在不同场地类型的单元创建宏。

将对象标识为宏。

名称

宏对象的名称,create_macro使用的名称或宏名称当使用readxdc-cell时,以单元格层次结构为前缀。

RLOCS

包含宏单元格列表及其RLOC属性的字符串,格式与update_macro命令。

宏单元格具有以下附加属性:

•RLOC:单元格的相对位置属性(RLOC)值。

•MACRO_NAME:单元格所属宏的名称。

使用前面的宏特性示例:

% get_property RLOC [get_cells {u2/sr0 u2/sr1}] X0Y0 X0Y1
% get_property MACRO_NAME [get_cells {u2/sr0 u2 "X0Y0 X0Y1" is the output
of the get_property command
/sr1}]
m1 m1

通过opt_design保留XDC宏

opt_design可以自由地优化和删除属于XDC宏的LUT,尽管RLOC约束。为了防止opt_design优化XDC宏内部的逻辑在属于XDC的所有单元格上将属性DONT_TOUCH设置为TRUE所必需的宏。DONT_TOUCH属性可以通过RTL或XDC设置。

高级XDC宏示例

本节提供以下高级XDC宏示例:

•相对网格宏示例

•绝对网格宏示例

相对网格宏示例

默认情况下,相对栅格用于宏RLOC坐标,因为最常见的宏是由属于同一网站类型的单元格组成的。以下简单示例说明了从宏RLOC派生的相对位置。这个宏由一对SRL>FF>FF电路组成,这些电路将以2x2模式排列。请参阅如下图所示。

要创建所需的相对放置,按如下方式为单元分配RLOC:

srl[0] X0Y0
regs0[0] X0Y0
regs1[0] X1Y0
srl[1] X0Y1
regs0[1] X0Y1
regs1[1] X1Y1
以下命令使用名称m0创建此宏:
create_macro m0
update_macro m0 {srl[0] X0Y0 regs0[0] X0Y0 regs1[0] X1Y0 srl[1] X0Y1
regs0[1] X0Y1 regs1[1] X1Y1}

宏可以由放置器自动放置,也可以作为一个集合手动放置。宏位置显示如下图所示:

宏包含基于LUTRAM的SRL,并且只能放置在SLICEM中键入切片。这对宏的可能位置进行了轻微的限制。宏可以仅位于SLICEL列位于SLICEM列右侧的位置。附近过多密集的切片会导致拥塞,从而降低可路由性并且可能对性能产生负面影响。

绝对网格宏示例

将不同场地类型的单元组合到宏中时,必须使用绝对网格。绝对网格(也称为RPM网格)是一个绝对坐标系,定义基于站点在设备内的位置的站点坐标。绝对网格还考虑网站的大小。RAM和DSP块具有比切片更宽的间隔。绝对网格如图所示如下图所示:

在本例中,使用绝对网格。该示例包括从输入端口经过两个阶段的输入数据路径寄存器,然后块RAM。如下图中的示意图所示。

宏创建需要使用绝对值的单元格及其相对位置(RLOC)列表网格创建宏时,可能很难可视化绝对值的相对位置网格宏。

细胞首先被手动放置并排列在它们所需的位置,如下图:

尽管绝对栅格指定了绝对位置,但生成的宏可以放置在任何位置设备内可以容纳宏的相对放置的位置。在这个例如,使用左下角作为的点来指定相对位置参考但是,绝对栅格位置仅指定相对放置,而不是绝对放置。这允许宏位于设备中维护相对安置由于该示例有些复杂,由ILOGIC、切片和块RAM组成宏位置有一定的限制,但可以放置在三个位置中的任何一个下图中以橙色突出显示:

若要确定绝对栅格RLOC,请使用场地RPM_X和RPM_Y特性。例如下部块RAM被放置在位置RAMB36_X0Y0处。选择场地(而不是单元)会显示以下值:RPM_X为33,RPM_Y为0(图103)。这些是绝对网格坐标。相应的RLOC值为X33Y0。

同样的方法用于确定切片的绝对RLOC(图104)。细胞在该切片内具有X31Y0的RLOC。

有两个命令用于创建名为m0的宏:

create_macro m0
update_macro m0 -absolute_grid <cell0 rloc0 cell1 rloc1 cell2 rloc2 … cellN
rlocN>

如果宏像本例中那样包含许多单元格,Tcl可以用于简单地构建和指定update_macro所需的单元格rloc列表。给定一个放置的单元格,绝对网格RLOC可以使用以下Tcl proc getAbsRLOC来确定:

proc getAbsRLOC {cell} {
set site [get_sites -of [get_cells $cell]]
set X [get_property RPM_X $site]
set Y [get_property RPM_Y $site]
return "X${X}Y${Y}"
}

示例:将变量rloc分配给块RAM单元rloc的字符串值

% set rloc [getAbsRLOC $ram0]
X33Y0

Tcl-dict命令可用于构建单元格和绝对值的字典(关联数组)update_macro命令的网格RLOC。Tcl关联数组是一系列键值对。可以使用dict命令将单元和RLOC排列为串联。数组键是宏单元对象。数组值是单元RLOC。这有助于自动化创建具有多个单元格的宏的过程。以下示例使用绝对栅格,但是该方法同样适用于普通网格。假设$cells是宏单元格的列表,并且$cells的每个单元格都已被放置以形成所需的宏模式,下面的Tcl过程为update_macro命令。

proc buildRLOCList {cells} {
set rlocs [dict create] # initialize dictionary called rlocs
foreach cell $cells {
# dictionary key is cell, value is absolute RLOC
dict set rlocs $cell [getAbsRLOC $cell]
}
return $rlocs
}
示例:为示例电路构建RLOC列表
# create macro cell list: input register stage and BRAM cells
set cells [get_cells -hier [list ireg0* ireg1* *SIMPLE_PRIM36.ram]]
create_macro m0
update_macro m0 -absolute_grid [buildRLOCList $cells]
要查看buildRLOCList创建的字典列表,请执行以下操作:
$ puts [buildRLOCList $cells]
{ireg0[6]} X2Y10 {ireg0[5]} X2Y11 {ireg0[4]} X2Y6 {ireg0[3]} X2Y7 . . .

如果层次结构中隐藏了许多宏单元和宏单元,则指定的显式列表单元RLOC对可能变得复杂并且容易出错。XDC的创建和管理使用Tcl可以简化宏

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

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

相关文章

electron预加载脚本

webPreferences 指定预加载脚本,可以使用部分node脚本 webPreferences: {preload: path.join(__dirname, "preload.js"),},创建preload.js 中 测试文件读取功能 const fs require(fs) const text fs.readFileSync(package.json, utf-8)console.log(text)报错,为了…

Visual Studio 2013 “即将退休”

新年快乐&#xff01; 这也是向各位开发者提醒 Visual Studio 支持生命周期中即将到来的好时机。 对 Visual Studio 2013 的支持即将在今年(2024年)的4月9日结束。如果你正在使用旧版本的 Visual Studio&#xff0c;我们强烈建议您升级您的开发环境到最新的 Visual Studio 20…

给孩子选台灯什么样的好?分享高品质的学生护眼台灯!

在这个青少年如此高近视率的情况下&#xff0c;想要真正保护孩子的视力&#xff0c;除了需要监督孩子养成良好的用眼习惯以外&#xff0c;还要注意光线环境&#xff01;在夜晚不管是看书写字、还是使用电脑平板上网课&#xff0c;都需要一个健康的照明环境。因此在挑选孩子学习…

Electron介绍

前言 相信很多的前端小伙伴都想过一个问题&#xff0c;web技术是否可以用于开发桌面应用。答案当然是可以的&#xff0c;Electron框架就是其中的一种解决方案。 Electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 并不是一门新的…

.NetCore部署微服务(一)

目录 前言 什么是微服务 微服务的优势 微服务的原则 创建项目 在Docker中运行服务 客户端调用 简单的集群服务 前言 写这篇文章旨在用最简单的代码阐述一下微服务 什么是微服务 微服务描述了从单独可部署的服务构建分布式应用程序的体系结构流程&#xff0c;同时这些…

Redis 连接 命令

目录 1.Redis Echo 命令 - 打印字符串简介语法可用版本: > 1.0.0返回值: 返回字符串本身。 示例 2.Redis Select 命令 - 切换到指定的数据库简介语法可用版本: > 1.0.0返回值: 总是返回 OK 。 示例 3.Redis Ping 命令 - 查看服务是否运行简介语法可用版本: > 1.0.0返回…

【Proteus仿真】【Arduino单片机】超声波测距系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用动态数码管、按键、HCSR04超声波、蜂鸣器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示超声波检测距离&#xff0c;当检…

Apache网页优化

本章主要介绍如何对Apache网页进行优化 Apache 网页压缩Apache 网页缓存Apache 隐藏版本信息Apache 网页防盗链 目录 1、网页压缩与缓存 1.1、网页压缩 &#xff08;1&#xff09;gzip介绍 &#xff08;2&#xff09;HTTP压缩的过程 &#xff08;3&#xff09;Apache的…

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五&#xff1a;岭回归与Lasso回归 1、误差与模型复杂度2、正则化3、Scikit-Learn岭&#xff08;Ridge&#xff09;回归4、Scikit-Learn Lasso回归 1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中&#xff0c;我们已经给出了过拟合与模型泛…

均匀与准均匀 B样条算法

B 样条曲线的定义 p ( t ) ∑ i 0 n P i F i , k ( t ) p(t) \sum_{i0}{n} P_i F_{i, k}(t) p(t)i0∑​nPi​Fi,k​(t) 方程中 n 1 n1 n1 个控制点&#xff0c; P i P_i Pi​, i 0 , 1 , ⋯ n i0, 1, \cdots n i0,1,⋯n 要用到 n 1 n1 n1 个 k k k 次 B 样条基函数 …

手游开发项目经验简单总结

这是我最近一个完整的手游开发项目的总结信息&#xff0c;请大家指点 目录 引擎 语言 编辑器 项目开发模块规划分 主项目工程&#xff0c;UI资源项目工程&#xff0c;模型场景资源项目工程 热更框架 前后端协议 UI 图集 多语言适配 SLG场景和其他场景 战斗 美术模型资源 人物…

微信怎么删除聊天记录?进来Get常用的操作方法!

微信是国内使用最广泛的社交应用程序之一。在我们使用微信的过程中&#xff0c;删除聊天记录是一个常见的操作。人们会删除一些不需要的聊天记录&#xff0c;以此减少存储空间的占用。微信怎么删除聊天记录&#xff1f;本文将介绍删除聊天记录的常用方法&#xff0c;非常简单&a…

Git保姆级安装教程

Git保姆级安装教程 一、去哪下载二、安装2.1 具体安装步骤2.2 设置全局用户签名 一、去哪下载 1、官网&#xff08;有最新版本&#xff09;&#xff1a;https://git-for-windows.github.io/ 2、本人学习时安装的版本&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1uAo…

被替换的文件怎么找回?3个高效方法分享!

“我在对电脑进行清理时&#xff0c;删除了一些比较重要的文件&#xff0c;为了恢复它们&#xff0c;我重新复制了一些文件&#xff0c;这导致我原先的文件被替换了&#xff0c;这怎么办呢&#xff1f;被替换的文件还能恢复吗&#xff1f;” 在信息化时代&#xff0c;用户的电脑…

Spark四:Spark Streaming和Structured Streaming

简介 Spark Streaming整体流程和DStream介绍 Structured Streaming发展历史和Dataflow模型介绍 Spark Streaming 是一个基于 Spark Core 之上的实时计算框架&#xff0c;从很多数据源消费数据并对数据进行实时的处理&#xff0c;具有高吞吐量和容错能力强等特点。 Spark Stre…

【完整流程】实现STM32+ESP8266+MQTT+阿里云+APP——【第二节-编写STM32程序初步实现ESP8266上云发布订阅消息】

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本节实现&#xff0c;硬件连接STM32与ESP8266&#xff0c;编写STM32程序通过at命令方式实现STM32ESP8266与阿里云物联网平台发布订阅消息&#xff0c;本节最终实现初步的发布订阅消息…

2024年阿里云服务器按年与按带宽活动价格出炉,最低仅需61元/1年

2024年阿里云服务器活动价格出炉了&#xff0c;新版活动价格表分为按年与按带宽两个价格表&#xff0c;按年最高可选择5年&#xff0c;按带宽可选择按量付费带宽和按固定带宽模式&#xff0c;按年活动价格最低61元/1年&#xff0c;按照带宽模式最低365.33元/1年&#xff0c;不同…

深情回忆VB编程之路

深情回忆VB编程之路 在上世纪90年代末&#xff0c;我与编程世界的初次邂逅始于QBasic这一古老而亲切的语言。那时的编程环境虽然简陋&#xff0c;但却蕴藏着无穷的可能性&#xff0c;每个字符仿佛跳跃着生命&#xff0c;在黑色屏幕中编织出我对编程世界最初的憧憬和梦想。 时光…

计算机网络学习笔记(5)——运输层

本文继续整理计算机网络体系架构知识内容。今日主讲——运输层。 网络层只把分组发送到目的主机&#xff0c;但是真正通信的并不是主机而是主机中的进程。 运输层提供了应用进程间的逻辑通信。运输层向高层用户屏蔽了下面网络层的核心细节&#xff0c;使应用程序看 见的好像在两…

JavaScript基本使用方法

JavaScript 是一种脚本语言&#xff0c;常用于 Web 开发。这里是一些基本的使用方法&#xff1a; 声明变量&#xff1a; 在 JavaScript 中&#xff0c;可以使用 var、let 或 const 关键字来声明变量。例如&#xff1a; var age 25; let name "John"; const PI …