关键属性描述
属性信息
本章提供有关Xilinx®Vivado®Design Suite属性的信息。条目
每个属性包含以下信息(如适用):
•物业说明,包括其主要用途。
•支持该特性的Xilinx FPGA体系结构,包括UltraScale™
架构设备,除非特别注明。
•支持该物业的适用对象或设备资源。
•可分配给属性的可能值。
•语法规范,包括Verilog、VHDL和XDC(如适用)。
•设计流程中受影响的步骤,其中财产具有影响。
•另请参阅相关属性的交叉引用。
重要提示:当一个属性在HDL代码和XDC文件中定义为约束时,XDC
属性优先并覆盖HDL属性。
有关在Vivado Design Suite中使用这些属性的更多信息,请参阅
Vivado Design Suite用户指南:使用约束(UG903)[参考文献19]。
重要事项:如果ASYNC_REG和IOB都分配给寄存器,则IOB属性优先
通过ASYNC_REG,并且寄存器被放置在ILOGIC块中而不是SLICE/CLB逻辑中。
ASYNC_REG是一个影响Vivado工具流中许多进程的属性。ASYNC_REG
指定:
•寄存器可以在D输入引脚上接收与其源时钟相关的异步数据。
•寄存器是同步链中的同步寄存器。
在模拟过程中,当发生定时冲突时,默认行为是针对寄存器
元素以输出“X”或未知状态(不是1或0)。当这种情况发生时,任何
元素驱动器将在其输入上看到一个“X”,然后进入未知状态。这
条件可以在设计中传播,在某些情况下会导致
设计变得未知,有时模拟器无法从这种状态中恢复。
ASYNC_REG修改寄存器以输出最后一个已知值,即使定时
发生违规行为。
Vivado合成将ASYNC_REG性质视为DONT_TOUCH性质,并且
在合成网表中将其向前推。这确保了合成不会优化
寄存器或周围的逻辑,并且设计流中的下游工具接收
用于处理的ASYNC_REG属性。
指定ASYNC_REG也会影响优化、布局和布线,以提高平均值
可以变为亚稳的寄存器的故障间隔时间(MTBF)。如果应用ASYNC_ REG,
放置器将确保同步链上的触发器紧密地放置在一起
以便最大化MTBF。直接连接的具有此属性的寄存器将
假设它们具有兼容的SLICE/CLB
控制集,并且寄存器的数量不超过的可用资源
SLICE/CLB。
提示:对于UltraScale设备,可以报告平均故障间隔时间(MTBF)以进行同步
使用report_synchronizer_mtbf命令用ASYNC_REG标识的寄存器。
以下是两级FF或一级同步器的Verilog示例,如中所示
图3-1。寄存器同步来自单独时钟域的信号。这个
ASYNC_REG属性附加到值为TRUE的同步阶段:
(*ASYNC_REG=“TRUE”*)REG sync_0,sync_1;
始终@(posedge clk)开始
sync_1<=sync_0;
sync_0<=en;
. . .
提示:ASYNC_REG属性也可以与SystemVerilog逻辑语法一起使用:
(*ASYNC_REG=“TRUE”*)逻辑sync_0,sync_1;
或
(*ASYNC_REG=“TRUE”*)输出逻辑sync_0、sync_1,
使用ASYNC_REG属性,对寄存器进行分组,以便将它们放置得尽可能紧密
尽可能地在一起。
体系结构支持
所有架构。
适用对象
•源RTL中声明的信号
•实例化的寄存器单元(get_cell)
°寄存器(FD、FDCE、FDPE、FDRE、FDSE)
价值观
•TRUE:寄存器是同步链的一部分。它将通过
实现,放置在链中其他寄存器附近,用于MTBF
报告。
•FALSE:寄存器可以被优化掉,也可以被吸收到SRL、DSP等块中,
或RAMB。不会对其应用任何特殊的模拟、放置或布线规则
违约
语法
Verilog语法
将Verilog属性放在的实例化或reg声明之前
登记
(*ASYNC_REG=“{TRUE|FALSE}”*)
Verilog语法示例
//将sync_regs指定为接收异步数据
(*ASYNC_REG=“TRUE”*)REG[2:0]sync_regs;
VHDL语法
为推断的逻辑声明并指定VHDL属性,如下所示:
属性ASYNC_REG:字符串;
名称的属性ASYNC_REG:信号为“TRUE”;
或者,为实例化的逻辑指定如下VHDL属性:
名称:标签的属性ASYNC_REG为“TRUE”;
其中名称为:
•将被推断为同步器寄存器的声明信号,或
•实例化寄存器的实例名称
VHDL语法示例
属性ASYNC_REG:字符串;
信号sync_regs:std_logic_vvector(2下降到1);
--将sync_regs指定为接收异步数据
sync_regs的属性ASYNC_REG:信号为“TRUE”;
XDC语法
set_property ASYNC_REG值[get_cells<instance_name>]
哪里
•<instance_name>是一个寄存器单元。
XDC语法示例
#将sync_regs指定为接收异步数据
set_property ASYNC_REG TRUE[get_cells sync_regs*]
受影响的步骤
•launch_xsim
•合成
•场所设计
•路线设计
•Phys Opt设计
•电源选择设计
•report_drc
•write_verilog
•write_vhdl