Vhdl “类型”的组件太多;BUFGMUX“;发现适合此设备。(以太网设计)

Vhdl “类型”的组件太多;BUFGMUX“;发现适合此设备。(以太网设计),vhdl,fpga,xilinx,Vhdl,Fpga,Xilinx,我正在为Spartan 3E FPGA设计一个以太网MAC控制器。IOB已达到109%。我仍然继续生成比特流。然后我遇到了这个错误: 找到太多适合此设备的“BUFGMUX”类型的组件。 这是什么意思 (我很确定运行Spartan 3e可以运行以太网,因为Spartan 3e已经有了以太网lite MAC的IP。而且,它的管脚比我模块中的管脚多。为什么它有109%的IOB?) 我还尝试对实例化的mac_发送模块和mac_接收模块进行注释。它成功地生成了比特流。我哪里出错了?您的设计太大,无法安装

我正在为Spartan 3E FPGA设计一个以太网MAC控制器。IOB已达到109%。我仍然继续生成比特流。然后我遇到了这个错误:

找到太多适合此设备的“BUFGMUX”类型的组件。 这是什么意思

(我很确定运行Spartan 3e可以运行以太网,因为Spartan 3e已经有了以太网lite MAC的IP。而且,它的管脚比我模块中的管脚多。为什么它有109%的IOB?)


我还尝试对实例化的mac_发送模块和mac_接收模块进行注释。它成功地生成了比特流。我哪里出错了?

您的设计太大,无法安装在目标FPGA上。存在类似IP的事实表明,您的实现在某种程度上效率较低,或者具有其他IP所没有的功能。这个问题没有简单、一刀切的解决方案


我是否可以建议将来不要只将屏幕截图作为文档?它们很难阅读,而且大部分图像都是不相关的。如果您想让我们看到某个特定的错误消息,请将其复制粘贴到您的问题中。

首先,您使用232个IOB中的255个。您选择了xs3s500e-4fg323,它实际上只有232个用户IO,其中56个仅为输入。也许你选择了错误的合成部分

如果您相对确定选择了正确的部件,请检查“IOB属性”报告。在那里,您将获得所有已使用IOB的列表。如果这不起作用(因为可能在生成此错误之前发生错误),您可以始终使用UCF文件检查楼层规划工具,以确定某些LOC是否完全错误。仅使用UCF和平面布置图在虚拟设计上执行此操作

其次,BUFGMUX消息告诉您通常使用了太多的全局时钟缓冲区(或者不太可能使用太多的混合时钟)。当一个设计具有许多时钟时,ISE除了使用BUFG原语外,还必须使用BUFGMUX原语来路由所有时钟。现在,如果您在设计中超过了bufgmux/bufg的数量,您将得到该错误


因此,这两个错误都表明您的设计太大,或者零件选择错误。

BUFGMUX用于缓冲用作时钟的信号

在大多数设计中,尤其是作为初学者,你应该只有一个时钟。所有过程都应该是相同的形式,在灵敏度列表中有时钟信号,如果上升沿(时钟)在那里有一行。这就是所谓的同步设计,如果你不这样做,当你在一个真正的芯片上尝试你的代码时,各种各样的错误结果很可能会出现。在你有足够的经验之前不要这样做。当你有足够的经验时,你会知道,因为当你想到使用另一个时钟信号时,你会想“我肯定能找到一种坚持使用一个时钟信号的方法”:

对我来说,这听起来像是你有了上升沿(不同进程中的各种不同信号)——这使得工具产生了很多它认为是时钟的信号,然后在每一个信号上挂一个BUFGMUX,不仅你很快就用完了时钟路由资源,而且你会得到不可预测的行为