Vivado综合 – 当应用于HDL中的净信号时,ASYNC_REG未应用于寄存器-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Vivado综合 – 当应用于HDL中的净信号时,ASYNC_REG未应用于寄存器

描述

当应用于HDL中的净信号时,ASYNC_REG未应用于寄存器,如下所示。

类型Reg_Array是std_logic的数组(CONST_PIPE_STAGES – 1 downto 1);
signal sl_arr_RegBank_InOuts:Reg_Array:=(others =>’0’);
属性ASYNC_REG:string;
属性sl_arr_RegBank_InOuts的ASYNC_REG:信号是“TRUE”;
开始
Register_Pipes:
因为我在0到CONST_PIPE_STAGES – 1生成
FFfirst:
如果I = 0则生成First_FF:FDRE
通用映射(INIT =>’0’)
港口映射
(C => IN_CLK,
CE =>’1’,
R =>’0’,
D => IN_DATA,
Q => sl_arr_RegBank_InOuts (1)
);
结束生成;
FFmid:
如果I> 0且I <CONST_PIPE_STAGES – 1生成Mid_FF:FDRE
通用映射(INIT =>’0’)
港口映射
(C => IN_CLK,
CE =>’1’,
R =>’0’,
D => sl_arr_RegBank_InOuts (I),
Q => sl_arr_RegBank_InOuts (I + 1)
);
结束生成;
FFlast:
如果I = CONST_PIPE_STAGES – 1生成Last_FF:FDRE
通用映射(INIT =>’0’)
港口映射
(C => IN_CLK,
CE =>’1’,
R =>’0’,
D => sl_arr_RegBank_InOuts (CONST_PIPE_STAGES – 1),
Q => OUT_DATA
);
结束生成;
结束生成;

这是预期的行为。

ASYNC_REG 属性只能应用于单元格。

在上面的示例中,它应用于连接寄存器实例之间的网络信号,因此被忽略。


对于此特定示例,没有选项通过RTL将其应用于单元格,因为FDRE原语在生成循环内实例化。

如果没有生成块,则可以在单元/实例上应用该属性。

这里的解决方法是通过XDC对单元格应用约束。

请登录后发表评论

    没有回复内容