我在问并回答这个问题,以便将来再次找到它...

如何避免XST将两个逻辑上等效的网络合并为一个(通常,这是节省资源的好主意,但从时序角度来看可能不是一个好主意)?

我的设计带有2个由相同clk驱动的计数器。 XST将计数器的最低位合并为一个计数器,但这是一个问题,因为由于IOB放置限制,在设计中需要将计数器分开。我需要计数器(特别是计数器的最低位)是不同的。

最佳答案

您需要在RTL中的网上设置2个约束。检查网络的综合报告,以确保XST完成了您想要的操作。

在Verilog中

(* equivalent_register_removal="no" *)
(* keep="true" *)
reg  signal_name ;

在VHDL中
signal signal_name  : std_logic;
attribute equivalent_register_removal: string;
attribute equivalent_register_removal of signal_name : signal is "no";
attribute keep:string;
attribute keep of signal_name :signal is "true";

09-03 19:08