vivado H_SET and HU_SET

H_SET和HU_SET
层次集是基于设计层次结构的逻辑元素的集合,如
由HDL源文件定义。H_SET、HU_SET和U_SET是HDL中的属性
并且不会出现在合成或实现的设计中。他们是
在RTL设计中定义相对放置宏或RPM时使用。了解更多
有关使用这些属性和定义RPM的信息,请参阅Vivado设计套件
用户指南:使用约束(UG903)[参考文献19]。
H_SET是由于逻辑单元上存在RLOC属性而隐含的属性
设计的层次结构。具有RLOC的分层块内的逻辑元素
属性会自动分配给同一层次集或H_Set。
根据实例名称为每个分层模块分配一个H_SET属性
模块。每个分层模块只能有一个H_SET名称和所有逻辑元素
在该层次结构内是H_SET的元素。
注意:只有当没有定义HU_SET或U_SET,但定义了RLOC时,才会定义H_SET。
您还可以手动创建用户定义的层次集或HU_Set,或用户定义的
Set或U_Set,不依赖于设计的层次结构。
您可以为单个分层模块定义多个HU_SET名称,并指定特定的
将该层次结构的实例发送到HU_SET。这允许您划分逻辑元素
将单个分层模块转换为多个HU_SET。
重要提示:使用H_SET或HU_SET时,Vivado还需要KEEP_HIERACHY属性
综合以保留综合设计中RPM的层次结构。
当RTL源文件中也存在RLOC时,H_SET、HU_SET和U_SET属性
转换为合成网表中单元格的只读RPM属性。HU_SET
在Vivado Design Suite的文本编辑器中的RTL源文件上可以看到U_SET。
但是,在单元格对象的“属性”窗口中,会显示RPM属性。
适用对象
HU_SET属性可用于以下一个或多个设计元素,或
设计元素的类别。请参阅Vivado Design Suite 7系列FPGA和
Zynq-7000 SoC库指南(UG953)[参考25]或UltraScale体系结构库
关于具体设计元素的更多信息,请参阅指南(UG974)[参考26]:
•登记簿
•LUT
•宏实例
•公羊
•RAMD
•RAMB18/FIFO18
•RAMB36/FIFO36
•DSP48
价值观
•<NAME>:HU_SET的唯一名称。
语法
Verilog语法
这是一个Verilog属性,与RLOC属性结合使用,用于定义集合
定义合成网表中RPM的分层块的内容。放置
Verilog属性位于逻辑元素实例化之前。

(* RLOC = "X0Y0", HU_SET = "h0" *) FD sr0 (.C(clk), .D(sr_1n), .Q(sr_0));
Verilog Example
The following Verilog module defines RLOC and HU_SET properties for the shift register
Flops in the module.
module ffs (
input clk,
input d,
output q
);
wire sr_0, sr_0n;
wire sr_1, sr_1n;
wire sr_2, sr_2n;
wire sr_3, sr_3n;
wire sr_4, sr_4n;
wire sr_5, sr_5n;
wire sr_6, sr_6n;
wire sr_7, sr_7n;
wire inr, inrn, outr;
inv i0 (sr_0, sr_0n);
inv i1 (sr_1, sr_1n);
inv i2 (sr_2, sr_2n);
inv i3 (sr_3, sr_3n);
inv i4 (sr_4, sr_4n);
inv i5 (sr_5, sr_5n);
inv i6 (sr_6, sr_6n);
inv i7 (sr_7, sr_7n);
inv i8 (inr, inrn);
(* RLOC = "X0Y0", HU_SET = "h0" *) FD sr0 (.C(clk), .D(sr_1n), .Q(sr_0));
(* RLOC = "X0Y0", HU_SET = "h0" *) FD sr1 (.C(clk), .D(sr_2n), .Q(sr_1));
(* RLOC = "X0Y1", HU_SET = "h0" *) FD sr2 (.C(clk), .D(sr_3n), .Q(sr_2));
(* RLOC = "X0Y1", HU_SET = "h0" *) FD sr3 (.C(clk), .D(sr_4n), .Q(sr_3));
(* RLOC = "X0Y0", HU_SET = "h1" *) FD sr4 (.C(clk), .D(sr_5n), .Q(sr_4));
(* RLOC = "X0Y0", HU_SET = "h1" *) FD sr5 (.C(clk), .D(sr_6n), .Q(sr_5));
(* RLOC = "X0Y1", HU_SET = "h1" *) FD sr6 (.C(clk), .D(sr_7n), .Q(sr_6));
(* RLOC = "X0Y1", HU_SET = "h1" *) FD sr7 (.C(clk), .D(inrn), .Q(sr_7));
(* LOC = "SLICE_X0Y0" *) FD inq (.C(clk), .D(d), .Q(inr));
FD outq (.C(clk), .D(sr_0n), .Q(outr));
assign q = outr;
endmodule // ffs
In the preceding example, you will need to specify the KEEP_HIERARCHY property to
instances of the ffs module to preserve the hierarchy and define the RPM in the synthesized
design:
module top (
input clk,
input d,
output q
);
wire c1, c2;
(* KEEP_HIERARCHY = "YES" *) ffs u0 (clk, d, c1);
(* KEEP_HIERARCHY = "YES" *) ffs u1 (clk, c1, c2);
(* KEEP_HIERARCHY = "YES" *) ffs u2 (clk, c2, q);
endmodule // top
VHDL Syntax
Declare the VHDL attribute as follows:
attribute HU_SET : string;
Specify the VHDL constraint as follows:
attribute HU_SET of {component_name | entity_name | label_name} :
{component|entity|label} is "NAME";
Where:
{component_name | entity_name | label_name} is the design element.
{component|entity|label} is the instance ID of the design element.
"NAME" is the unique set name to give to the HU_SET.

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 23:58:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 23:58:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 23:58:06       58 阅读
  4. Python语言-面向对象

    2024-07-18 23:58:06       69 阅读

热门阅读

  1. xhdra的使用记录

    2024-07-18 23:58:06       20 阅读
  2. Docker无网环境下配置方法

    2024-07-18 23:58:06       19 阅读
  3. 手动实现堵塞队列

    2024-07-18 23:58:06       25 阅读
  4. pytorch中numel()函数用于获取张量中元素数目

    2024-07-18 23:58:06       20 阅读
  5. CSS浮动

    CSS浮动

    2024-07-18 23:58:06      20 阅读
  6. 什么是虚拟DOM?什么是diff算法?

    2024-07-18 23:58:06       19 阅读
  7. 什么是CAP理论?

    2024-07-18 23:58:06       20 阅读
  8. Hive修改表中的某个值

    2024-07-18 23:58:06       23 阅读
  9. HTTP请求五类状态码详细介绍,以及部分处理思路

    2024-07-18 23:58:06       23 阅读