vivado CLOCK_BUFFER_TYPE

发布于:2024-06-28 ⋅ 阅读:(11) ⋅ 点赞:(0)

时钟缓冲区类型
默认情况下,Vivado synthesis推断输入缓冲区和全局时钟缓冲区(IBUF/BUFG)
时钟端口的组合。但是,您可以使用IO_BUFFER_TYPE和
CLOCK_BUFFER_TYPE属性组合在一起,以指导Vivado合成工具更改
默认缓冲区类型,如IBUF/BUFR对,或没有带BUFIO时钟的输入缓冲区
缓冲器或者完全消除缓冲器。
强制逻辑优化(MLO),发生在link_design和
opt_design支持使用CLOCK_BUFFER_TYPE属性插入全局时钟
缓冲区。支持的值是7系列的BUFG,UltraScale的BUFG和BUFGCE,
UltraScale+和Versal设备。值NONE可用于所有体系结构
通过MLO和opt_ design抑制全局时钟缓冲器插入。对于BUFG值
opt_design和MLO插入相应的缓冲区类型来驱动
指定净值。
CLOCK_BUFFER_TYPE属性指示要推断的时钟缓冲区类型
指定的网络或端口对象。IO_BUFFER_TYPE属性指示是否推断
端口的输入或输出缓冲区。
提示:CLOCK_BUFFER_TYPE属性的使用意味着在目标网络上有一个KEEP,它保留
网络名称,并防止通过RTL优化移除网络。
CLOCK_BUFFER_TYPE可以在RTL或XDC中定义。当在RTL中指定时
属性可以附加到端口。合成后,属性CLOCK_BUFFER_TYPE应为
连接到由输入缓冲器驱动的网络。
注意:MAX_FANOUT不适用于具有CLOCK_BUFFER_TYPE的网络
应用对象:
•端口(get_Ports):将CLOCK_BUFFER_TYPE应用于任何顶级时钟端口,以描述类型
使用或不使用时钟缓冲器。对于7系列、UltraScale和Ultra-Scale Plus
属性只能在RTL内部的端口上设置,在端口上设置时opt_design不会使用
通过XDC。对于Versal,opt_design仅支持通过XDC的端口上的CLOCK_BUFFER_TYPE
用于OOC实现。对于任何其他流,应该在由
顶级端口。
•网络(get_Nets):将CLOCK_BUFFER_TYPE应用于连接到顶级的任何信号
时钟端口(合成)或任何网络(逻辑优化)来描述什么类型的时钟缓冲器
使用或不使用时钟缓冲器。
价值观
•BUFFCE、BUFG、BUFH、BUFIO、BUFMR、BUFR:指示工具推断指定的时钟
用于时钟端口或网络的缓冲器。
•无:指示工具不推断时钟的任何时钟缓冲区。
注:与IO_BUFFER_TYPE“NONE”一起使用可防止Vivado合成推断出任何缓冲区。

Syntax
Verilog Syntax
(* clock_buffer_type = "none" *) input clk1;
VHDL Syntax
entity test is port(
in1 : std_logic_vector (8 downto 0);
clk : std_logic;
out1 : std_logic_vector(8 downto 0));
attribute clock_buffer_type : string;
attribute clock_buffer_type of clk: signal is "BUFR";
end test;
XDC Syntax
set_property CLOCK_BUFFER_TYPE BUFMR [get_nets <net_name> ]