场景
Vivado版本: 2016.4
FPGA开发板:NEXYS 4 DDR
所在项目:31条单周期CPU
完整报错信息
解决问题思路
在过去的一次课程作业中实现了分频器,在这个实验当中,没有用到板子上的晶振,也就是E3管脚,但是又有时钟信号,所以需要在XDC文件中添加:
XXX是要作为clk的时钟的信号的端口名,报错信息里的get_nets reset_IBUF只是表述一种格式,不要生搬硬套。举例如下:
如果你的模块名是:
然后你并不打算使用板子上的晶振,比如你只是想通过按板子上的按钮或者开关来手动模拟时钟,那么在下板时就会报这个错。这时候在xdc文件中添加一句:
就可以生成比特流了。
故当这条报错跳出来的时候我很困惑,因为我的引脚确实是板子的晶振E3,难道Vivado不认为我这个是晶振?新建一个工程,移植过去,还是报错。Xillinx官方社区的大意也不太理解。
Github上有讨论:
https://github.com/hamsternz/ArtyEtherentTX/issues/1
但并没什么帮助。
然后找到这个:
https://wiki.nus.edu.sg/pages/viewpage.action?pageId=167808307
可能需要翻墙,截图如下:
大意是:连接到一个同步电路的时钟输入的信号不是同步的,换成人话就是:有一个信号作为了一个同步电路的时钟输入,但这个信号不是同步的信号,然后我还是不能理解。
在我的CPU里,比如Ram,我是采取写需要clk,读直接读的方法,并且读写隔离,如:
这样岂不是必然报错?
最后,我死马当活马医,还是添加了上述所说的set_property CLOCK_DEDICATED_ROUTE FALSE,最后下板出现了预期的结果!
这条xdc语句更像C++里的一条屏蔽错误的宏定义一样。具体的错误原因还是没有找到。但无论你的管脚要不要用板子上的晶振,出了这条报错都暂且需要这么解决。
————————————————
版权声明:本文为CSDN博主「showhands5」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43162818/article/details/89434960