Vivado [Place 30-574] Poor placement for routing between an IO pin and BUFG

场景


Vivado版本: 2016.4
FPGA开发板:NEXYS 4 DDR
所在项目:31条单周期CPU
完整报错信息

[Place 30-574] Poor placement for routing between an IO pin and BUFG. 
        If this sub optimal condition is acceptable for this design, 
        you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file 
        to demote this message to a WARNING. 
        However, the use of this override is highly discouraged. 
        These examples can be used directly in the .xdc file to override this clock rule.
            < set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets reset_IBUF] >

        reset_IBUF_inst (IBUF.O) is locked to IOB_X0Y82
         and reset_IBUF_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y1

解决问题思路


在过去的一次课程作业中实现了分频器,在这个实验当中,没有用到板子上的晶振,也就是E3管脚,但是又有时钟信号,所以需要在XDC文件中添加:

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets XXX]

XXX是要作为clk的时钟的信号的端口名,报错信息里的get_nets reset_IBUF只是表述一种格式,不要生搬硬套。举例如下:
如果你的模块名是:

module  test(
    input clk_in
);
...
endmodule

然后你并不打算使用板子上的晶振,比如你只是想通过按板子上的按钮或者开关来手动模拟时钟,那么在下板时就会报这个错。这时候在xdc文件中添加一句:

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_in]

就可以生成比特流了。

故当这条报错跳出来的时候我很困惑,因为我的引脚确实是板子的晶振E3,难道Vivado不认为我这个是晶振?新建一个工程,移植过去,还是报错。Xillinx官方社区的大意也不太理解。
Github上有讨论:

https://github.com/hamsternz/ArtyEtherentTX/issues/1

但并没什么帮助。

然后找到这个:

https://wiki.nus.edu.sg/pages/viewpage.action?pageId=167808307

可能需要翻墙,截图如下:

大意是:连接到一个同步电路的时钟输入的信号不是同步的,换成人话就是:有一个信号作为了一个同步电路的时钟输入,但这个信号不是同步的信号,然后我还是不能理解。

在我的CPU里,比如Ram,我是采取写需要clk,读直接读的方法,并且读写隔离,如:

module ram(clk, rst, ...)
always @ (*) begin
//读操作
end

always @ (posedge clk)begin
//写操作
end
endmodule

这样岂不是必然报错?

最后,我死马当活马医,还是添加了上述所说的set_property CLOCK_DEDICATED_ROUTE FALSE,最后下板出现了预期的结果!

结论


这条xdc语句更像C++里的一条屏蔽错误的宏定义一样。具体的错误原因还是没有找到。但无论你的管脚要不要用板子上的晶振,出了这条报错都暂且需要这么解决。
————————————————
版权声明:本文为CSDN博主「showhands5」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43162818/article/details/89434960

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值