当前位置: 首页 > news >正文

vivado 指定相对位置

指定相对位置

使用RLOC特性可以为设计对象指定相对位置。RLOC属性指定RPM集中每个单元的相对X-Y坐标。要指定RLOC特性,请使用两个不同的轴网坐标系中的任意一个:

•基于相对切片的坐标

•基于绝对RPM网格的坐标使用以下语法:

RLOC=XmYn

•m是一个整数,表示对象的相对或绝对X坐标。

•n是一个整数,表示对象的相对或绝对Y坐标。

基于相对切片的坐标相对网格系统:

•也称为标准网格。

•对于大多数RPM而言已足够。

•用于均质RPM,其中RPM中的所有细胞都属于相同的位点类型(例如作为片、块RAM和DSP)。

注意:对象相对于同一RPM集中的其他对象进行定位。

相对格线是标准矩形格线,其中每个格线元素的大小相同。对于例如,下面的Verilog代码示例导致具有FD单元的八片高位列在每个切片中:

(* RLOC = "X0Y0" *) FD sr0 (.C(clk), .D(d[0]), .Q(y[0]));
(* RLOC = "X0Y1" *) FD sr1 (.C(clk), .D(d[1]), .Q(y[1]));
(* RLOC = "X0Y2" *) FD sr2 (.C(clk), .D(d[2]), .Q(y[2]));
(* RLOC = "X0Y3" *) FD sr3 (.C(clk), .D(d[3]), .Q(y[3]));
(* RLOC = "X0Y4" *) FD sr4 (.C(clk), .D(d[4]), .Q(y[4]));
(* RLOC = "X0Y5" *) FD sr5 (.C(clk), .D(d[5]), .Q(y[5]));
(* RLOC = "X0Y6" *) FD sr6 (.C(clk), .D(d[6]), .Q(y[6]));
(* RLOC = "X0Y7" *) FD sr7 (.C(clk), .D(d[7]), .Q(y[7]));

BEL/LOC约束

对于复杂结构,除了RLOC。BEL约束必须用于将RPM集中的单元格对齐,例如将LUT与寄存器对齐。LOC约束不常见,通常不使用因为RPM设置是在设备中的特定位置上强制的并且不能被放置器移动。每当需要指定某些BEL或LOC约束时,重要的是不要混合这些约束的来源。BEL/LOC约束应通过RTL或通过XDC,但不是两者的组合。以下是BEL约束的示例在RTL中指定。

Verilog文件:

(*BEL="H6LUT",RLOC="X0Y0"*) LUT6 S0_LUTH (...);
(*BEL="G6LUT",RLOC="X0Y0"*) LUT6 S0_LUTG (...);
(*BEL="F6LUT",RLOC="X0Y0"*) LUT4 S0_LUTF (...);
(*BEL="E5LUT",RLOC="X0Y0"*) LUT4 S0_LUTE (...);
(*BEL="D6LUT",RLOC="X0Y0"*) LUT6 S0_LUTD (...);
(*BEL="C6LUT",RLOC="X0Y0"*) LUT6 S0_LUTC (...);
(*BEL="B6LUT",RLOC="X0Y0"*) LUT4 S0_LUTB (...);
(*BEL="A5LUT",RLOC="X0Y0"*) LUT4 S0_LUTA (...);
(*BEL="CARRY8",RLOC="X0Y0"*) CARRY8#(.CARRY_TYPE("DUAL_CY4"))
S0_CARRY8(...);
(*BEL="HFF2",RLOC="X0Y0"*) FD FD_out5 (...);
(*BEL="GFF2",RLOC="X0Y0"*) FD FD_out4 (...);
(*BEL="FFF2",RLOC="X0Y0"*) FD FD_out3 (...);
(*BEL="DFF2",RLOC="X0Y0"*) FD FD_out2 (...);
(*BEL="CFF2",RLOC="X0Y0"*) FD FD_out1 (...);
(*BEL="BFF2",RLOC="X0Y0"*) FD FD_out0 (...);

注意:为了简化,INIT字符串已被省略。

在以下示例中,RPM在RTL处定义,但指定了BEL约束通过XDC。

Verilog file:
(*RLOC="X0Y0"*) LUT6 S0_LUTH (...);
(*RLOC="X0Y0"*) LUT6 S0_LUTG (...);
(*RLOC="X0Y0"*) LUT4 S0_LUTF (...);
(*RLOC="X0Y0"*) LUT4 S0_LUTE (...);
(*RLOC="X0Y0"*) LUT6 S0_LUTD (...);
(*RLOC="X0Y0"*) LUT6 S0_LUTC (...);
(*RLOC="X0Y0"*) LUT4 S0_LUTB (...);
(*RLOC="X0Y0"*) LUT4 S0_LUTA (...);
(*RLOC="X0Y0"*) CARRY8#(.CARRY_TYPE("DUAL_CY4")) S0_CARRY8(...);
(*RLOC="X0Y0"*) FD FD_out5 (...);
(*RLOC="X0Y0"*) FD FD_out4 (...);
(*RLOC="X0Y0"*) FD FD_out3 (...);
(*RLOC="X0Y0"*) FD FD_out2 (...);
(*RLOC="X0Y0"*) FD FD_out1 (...);
(*RLOC="X0Y0"*) FD FD_out0 (...);
Note : The INIT string has been omitted for simplification.
XDC file:
set_property BEL CARRY8 [get_cells S0_CARRY8]
set_property BEL HFF2 [get_cells FD_out5]
set_property BEL GFF2 [get_cells FD_out4]
set_property BEL FFF2 [get_cells FD_out3]
set_property BEL DFF2 [get_cells FD_out2]
set_property BEL CFF2 [get_cells FD_out1]
set_property BEL BFF2 [get_cells FD_out0]
set_property BEL A5LUT [get_cells S0_LUTA]
set_property BEL B6LUT [get_cells S0_LUTB]
set_property BEL C6LUT [get_cells S0_LUTC]
set_property BEL D6LUT [get_cells S0_LUTD]
set_property BEL E5LUT [get_cells S0_LUTE]
set_property BEL F6LUT [get_cells S0_LUTF]
set_property BEL G6LUT [get_cells S0_LUTG]
set_property BEL H6LUT [get_cells S0_LUTH]

基于绝对RPM栅格的坐标

RPM_GRID系统用于异构RPM,其中RPM中的单元属于不同的站点类型(例如切片、块RAM和DSP的组合)。这是绝对的映射到特定AMD设备的坐标系。由于细胞可以占据各种大小的位点,RPM_GRID系统使用绝对RPM_GRID坐标。RPM_GRID值在的“场地属性”窗口中可见选择特定站点时使用Vivado IDE。也可以使用Tcl查询坐标使用RPM_X和RPM_Y场地特性的命令。

RPM_GRID坐标VHDL示例

以下VHDL示例使用RPM_GRID坐标定义RLOC约束。

•相对于块RAM放置两个移位寄存器。

•四个阶段连接输入。

•四级连接输出。

attribute RLOC : string;
attribute RPM_GRID : string;
attribute RLOC of di_reg3 : label is "X25Y0";
attribute RLOC of di_reg2 : label is "X27Y0";
attribute RLOC of di_reg1: label is "X29Y0";
attribute RLOC of di_reg0 : label is "X31Y0";
attribute RLOC of ram0 : label is "X34Y0";
attribute RLOC of out_reg3 : label is "X37Y0";
attribute RLOC of out_reg2 : label is "X39Y0";
attribute RLOC of out_reg1 : label is "X41Y0";
attribute RLOC of out_reg0 : label is "X43Y0";

设置属性以调用RPM_GRID系统

要使用RPM_GRID系统,请在RPM集中的任何单元上设置一个特性:

attribute RPM_GRID of ram0 : label is "GRID";

只要至少有一个单元的RPM_GRID属性等于GRID,则RPM_GRID使用坐标系。尽管RPM_GRID坐标是基于目标设备的绝对坐标,但它们定义了RPM集合的元素的相对位置。在实施过程中,RPM组可以放置在设备上的任何合适位置。

RPM_GRID坐标值

RPM_GRID坐标值与上SLICE的坐标值有很大不同FPGA。这些坐标:

•存储为Vivado工具中设备站点上的RPM_X和RPM_Y属性。

•可以使用get_property进行查询。以下示例执行以下操作:

•从所选SLICE获取RPM坐标。

•使用联接以所需格式输出X和Y坐标。

join "X[get_property RPM_X [get_selected_objects]]Y[get_property RPM_Y
[get_selected_objects]]"
X25Y394

直接在RTL源文件中定义RLOC属性

由于标准栅格简单且相对,因此可以定义RPM的RLOC属性直接在RTL源文件中。

因为RPM_GRID坐标必须从目标设备中提取,所以您可能会需要:

•对设计进行迭代,以在合成后找到正确的RPM_GRID值。

•将坐标添加为RTL源文件中的属性。

•放置之前重新合成网表。

相关文章:

  • 每天五分钟计算机视觉:揭秘迁移学习
  • 原生JS做别踩白块游戏
  • 算法系统学习(持续更新)
  • 栈实现后缀表达式的计算
  • 交换机02_共享式交换式
  • 了解并使用django-rest-framework-jwt
  • 简述Redis备份策略以及对应的实现机制
  • CMake入门教程【基础篇】HelloCMake
  • 数模学习day06-主成分分析
  • 记Android字符串资源支持的参数类型
  • LVGL 在framebuffer设备上的移植
  • Python控制程控电源(USB)
  • 本地网络禁用了在哪里开启?
  • 力扣139.单词拆分
  • Redis 笔记
  • “大数据应用场景”之隔壁老王(连载四)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 2017-08-04 前端日报
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Effective Java 笔记(一)
  • Javascript弹出层-初探
  • TypeScript迭代器
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于Android乐音识别(2)
  • 记一次删除Git记录中的大文件的过程
  • 通过npm或yarn自动生成vue组件
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 云大使推广中的常见热门问题
  • Java性能优化之JVM GC(垃圾回收机制)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​力扣解法汇总946-验证栈序列
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (39)STM32——FLASH闪存
  • (function(){})()的分步解析
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)Spring源码解析:Spring MVC
  • (八十八)VFL语言初步 - 实现布局
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .cfg\.dat\.mak(持续补充)
  • .NET Core WebAPI中封装Swagger配置
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net(C#)中String.Format如何使用
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET学习教程二——.net基础定义+VS常用设置
  • /proc/vmstat 详解
  • @javax.ws.rs Webservice注解
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Android] Implementation vs API dependency
  • [Angular] 笔记 21:@ViewChild