vivado 为RPM指定固定位置

发布时间:2024年01月04日

为RPM指定固定位置

(可选)使用RLOC_ORIGIN或LOC约束来放置和固定RPM的位置设备。在Vivado IDE中,这些属性固定RPM原点,或RPM。RPM集合中的每个剩余单元通过使用相对位置(RLOC)进行偏移来放置从起源。

以下示例显示了使用RLOC_ORIGIN固定的分层RPM。RLOC约束被分配给RPM寄存器单元,以创建一个2乘3的交叉放置图案

在Verilog中:

(* RLOC = "X0Y0" *) FDC sr0...
(* RLOC = "X1Y0" *) FDC sr1...
(* RLOC = "X2Y0" *) FDC sr2...
(* RLOC = "X0Y1" *) FDC sr3...
(* RLOC = "X1Y1" *) FDC sr4...
(* RLOC = "X2Y1" *) FDC sr5...
RPM被实例化到设计中三次,每个单元上都有RLOC:
(* RLOC = "X0Y0" *) ffs u0...
(* RLOC = "X3Y2" *) ffs u1...
(* RLOC = "X6Y4" *) ffs u2...

最后,X74Y15的RLOC_ORIGIN被分配给单元u0,导致如图97。下图中的突出显示如下表所示。

XDC宏

XDC宏允许在合成后将相对位置分配给单元。宏有很多特性类似于RPM,但是可以使用交互修改的设计对象XDC和Tcl。宏是从与相对放置约束。RPM是用HDL代码管理的,而宏是用XDC约束管理的。RPM无法自动转换为宏。同样,宏也不能自动执行注释到HDL代码。与宏不同,RPM不是对象,XDC宏命令不能在RPM上使用。

指定宏

使用以下XDC Tcl命令来指定宏:

?创建_宏

?update_macro

?delete_macros

?get_macros

撤消和重做支持每个命令。以下是对每个命令的描述。

创建_宏

create_macro命令可创建一个新的宏对象。宏名称必须唯一。正在尝试创建与现有宏同名的宏

宏生成错误。

create_macro语法

create_macro<name>

create_macro示例

创建_最大m0

创建一个名为m0的宏对象。

更新(_Mcro)

update_macro命令将叶单元和相对位置(RLOC)添加到宏中。RLOC具有与RPM RLOC属性相同的语法和功能。所有单元格都必须是立即指定。不允许进行部分定义或增量定义。

update_macro语法

update_macro [-absolute_grid] <macro name> <cell-RLOC list>

?-absolute_grid:用于选择混合切片和非切片站点的绝对网格的开关。

○ X-Y值是场地特性RPM_X和RPM_Y。

○ “绝对栅格”值与RPM_Grid的值相同。

?宏名称:要更新的宏的名称。

?单元RLOC列表:单元和RLOC对的Tcl列表:

{cell0 RLOC(cell0) cell1 RLOC(cell1) - cellN RLOC(cellN)}.

○ 必须同时指定所有宏单元格和RLOC。无法在中生成宏步骤。

○ 如果需要更新现有宏,必须首先重新创建它。

update_macro示例一

update_macro m1 {u2/sr0 X0Y0 u2/sr1 X0Y1}

?将u2/sr0和u2/sr1添加到宏m1

?为u2/sr0分配X0Y0的RLOC

?为u2/sr1分配X0Y1的RLOC

以下(update_macro示例二)执行相同的操作,但语法略有不同。

update_macro示例二

set rlocs [list u2/sr0 X0Y0 u2/sr1 X0Y1]
update_macro m1 $rlocs

update_macro示例三

此示例使用绝对网格:

set rlocs {ireg X2Y38 q1reg X17Y40 q2reg X17Y40}
update_macro -absolute_grid m2 $rlocs

删除(_M)

delete_macros命令可删除指定的宏。

delete_macros语法

delete_macros <pattern>
delete_macros m1

get_macros

get_macros命令返回设计中的宏对象。

get_macros语法

get_macros [pattern]

在没有参数的情况下,get_macros命令返回设计中的所有宏。当宏如果指定了名称,则该命令将返回相应的宏对象。

get_macros示例

get_macros命令可以与其他对象命令一起使用。示例:

% create_macro m1
% update_macro m1 {u2/sr0 X0Y0 u2/sr1 X0Y1}
% get_cells -of [get_macros m1]
u2/sr0 u2/sr1
% get_macros -of [get_cells u2]
m1
以下命令返回单元格中完全包含的所有宏。
get_macros -of [get_cells $cells]
使用get_cell,可以进行其他间接组合,例如:
get_macros -of [get_cells -of [get_pblocks pb0]]
此命令返回包含在Pblock pb0中的宏。
文章来源:https://blog.csdn.net/cckkppll/article/details/135394438
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。