Vivado综合设计助手 – 帮助综合HDL属性支持 –  keep,keep_hierarchy,ram_style,rom_style-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Vivado综合设计助手 – 帮助综合HDL属性支持 – keep,keep_hierarchy,ram_style,rom_style

描述

本答复记录描述了Vivado综合属性keep,keep_hierarchy,ram_style,rom_style,并为它们提供了编码示例。编码示例附在此答复记录中。 AR还包含与已知问题和良好编码实践相关的信息。

注意 :每个编码示例都可用于直接创建Vivado项目。请参阅每个源文件中的标题,了解每个示例中涵盖的Synthesis属性。

保持

KEEP属性用于防止信号被优化或吸收到逻辑块中的优化。该属性指示综合工具保持其所处的信号,并将该信号放入网表中。

KEEP通常与时序约束结合使用。如果通常优化的信号存在时序约束,KEEP将阻止这种情况并允许使用正确的时序规则。

在其他属性与KEEP冲突的情况下,KEEP属性通常优先于它们:

  • 如果信号上有MAX_FANOUT属性,第一个信号驱动第二个信号上的KEEP,则第二个信号上的KEEP将不允许扇出复制。
  • 对于RAM_STYLE =“block”,当寄存器上存在需要成为RAM一部分的KEEP时,KEEP属性会阻止块RAM被推断。

可接受的值是:

  • true:保持信号。

  • false:允许Vivado Synthesis在必要时进行优化。 False不会强制工具移除信号。默认值为false。

备注

  • KEEP属性不强制布局布线工具保持信号。相反,这是使用DONT_TOUCH属性完成的。

  • 模块或实体的端口不支持KEEP属性。如果需要保留特定端口,请使用flatten_hierarchy = none设置,或者在模块或实体本身上放置DONT_TOUCH。

  • 请注意稍后在RTL中未使用的信号的KEEP属性。综合保留了这些信号,但它们不会驱动任何东西。这可能会导致流程中的问题。

  • 建议仅在RTL中设置此属性。由于需要保留的信号通常在读取XDC文件之前进行优化,因此在RTL中设置此属性可确保使用该属性。

Verilog示例

(* keep =“true”*)wire sig1;

VHDL示例

signal sig1:std_logic;

属性keep:string;

属性keep sig1:signal是“true”;

已知的问题:

N / A


KEEP_HIERARCHY

KEEP_HIERARCHY属性用于防止沿层次结构边界进行优化。 Vivado综合工具试图保持RTL中指定的相同通用层次结构,但它可以出于QoR原因展平或修改它们。

如果将KEEP_HIERARCHY置于实例上,则综合工具将该级别的边界保持为静态。这可能会影响QoR,也不应该用于描述3态输出和I / O缓冲器的控制逻辑的模块。

KEEP_HIERARCHY属性可以放在模块,体系结构级别或实例中。

可接受的值是:

  • yes:保留指定级别的层次结构。

  • no:将分层块合并到顶级模块中。

Verilog示例

在模块上:

(* keep_hierarchy =“yes”*)模块底部(in1,in2,in3,in4,out1,out2);

在实例上:

(* keep_hierarchy =“yes”*)bottom u0(.in1(in1),. in2(in2),. out1(temp1));

VHDL示例

在模块上:

属性keep_hierarchy:string;

属性keep_hierarchy beh:architecture是“yes”;

在实例上:

属性keep_hierarchy:string;

u0:label的属性keep_hierarchy是“是”;

已知的问题:

N / A


RAM_STYLE

RAM风格控制Vivado综合工具如何推断内存。可接受的值是:

  • block:指示工具推断RAMB类型组件。
  • distributed:指示工具推断LUT RAM。

默认情况下,该工具将根据启发式选择要推断的RAM,以便为大多数设计提供最佳结果。将此属性放在为RAM声明的数组上。

Verilog示例

(* ram_style =“distributed”*)reg [data_size-1:0] myram [2 ** addr_size-1:0];

VHDL示例

属性ram_style:string;

属性ram_style of myram:signal是“distributed”;

已知的问题:

N / A


ROM_STYLE

ROM样式控制Vivado综合工具如何推断ROM内存。可接受的值是:

  • block:指示工具推断RAMB类型组件。
  • distributed:指示工具推断LUT ROM。

默认情况下,该工具将根据启发式选择要推断的ROM,以便为大多数设计提供最佳结果。

Verilog示例

(* rom_style =“distributed”*)reg [data_size-1:0] myrom [2 ** addr_size-1:0];

VHDL示例

属性rom_style:string;
属性momom的rom_style:信号是“分布式的”;
已知的问题:
N / A
表格1:
文件名 属性示例
keep.zip 保持
keep_hierarchy.zip KEEP_HIERARCHY
ram_style.zip RAM_STYLE
rom_style.zip ROM_STYLE

附件

相关附件

名称 文件大小 文件类型
keep.zip 1 KB 压缩
keep_hierarchy.zip 1 KB 压缩
ram_style.zip 1 KB 压缩
rom_style.zip 1 KB 压缩
请登录后发表评论

    没有回复内容