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

时间:2013-12-11 15:36:05

标签: vhdl fpga xilinx

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

太多的类型" BUFGMUX"发现适合这个设备。 enter image description here 这是什么意思?

(我很确定运行Spartan 3e可以运行以太网,因为Spartan 3e已经有一个以太网精简版MAC。而且,它的引脚比我模块中的引脚多。为什么呢那么有109%的IOB?) enter image description here

我还尝试评论实例化的mac_transmit_module和mac_receive_module。它成功生成了比特流。我哪里出错了?

3 个答案:

答案 0 :(得分:1)

您的设计太大而无法放在目标FPGA上。存在类似IP的事实表明,您的实现效率较低或具有其他IP不具备的功能。对于这个问题,没有简单的,一刀切的解决方案。

我可以建议您将来不仅仅将屏幕截图作为文档包含在内吗?它们很难阅读,大部分图像都无关紧要。如果您希望我们看到特定的错误消息,请复制粘贴到您的问题中。

答案 1 :(得分:1)

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

如果您相对确定选择了正确的部件,请检查“IOB属性”报告ISE。在那里,您将获得所有使用过的IOB的列表。如果这不起作用(因为可能在生成此错误之前发生错误),您可以随时检查UCF文件中的布局规划工具,以确定某些LOC是否完全错误。只需要你的UCF和平面布置器就可以在虚拟设计上做到这一点。

其次,BUFGMUX消息告诉您一般使用太多的全局时钟缓冲区(或者实际上太多的多路复用时钟,不太可能)。当设计具有许多时钟时,除了BUFG原语之外,ISE还必须使用BUFGMUX原语来路由所有时钟。现在,如果你超过了设计中BUFGMUX / BUFG的数量,你就会收到这个错误。

因此,这两个错误都指向您的设计太大或部件选择错误。

答案 2 :(得分:0)

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

在大多数设计中,特别是作为初学者,你应该只有一个时钟。并且您的所有进程应该采用相同的形式,时钟信号位于灵敏度列表中,并且其中包含if rising_edge(clock) then行。这称为同步设计,如果您不这样做,当您在真实芯片中尝试代码时,可能会出现各种各样的错误结果。在你有足够的经验之前不要这样做。你可以告诉你什么时候有足够的经验,因为当你想到使用另一个时钟信号时,你会想到“我肯定能找到一种方法来坚持一个时钟信号”:)

听起来像你有if rising_edge(all sorts of different signals in different processes) - 这使得这些工具产生了许多它认为是时钟的信号,然后将BUFGMUX挂掉它们中的每一个,不仅耗尽了时钟路由资源很快,但你会得到不可预测的行为。