([Synth 8-3352] multi-driven net min_1_OBUF[2] with 1st driver pin ‘<端口名/(信号?)>‘ )

FPGA,VIVADO新手,这也是自己摸索出来的,如果说的不对的地方,欢迎指出,如果是根本性的错误,我将修改删除等等。。。互相交流。
**

怎么查找存在多重驱动的变量、信号或者端口

**
如果有多重驱动的话,一般是进行RTL分析或者综合的时候就会出现多重驱动警告。网上说了这些警告提到的端口不一定就真的是多重驱动出现的端口,但不论如何,肯定是有端口存在多重驱动的,下面是找到这些端口的步骤。
第一步:点击RTL分析【1】。等待出现Netlist后,点击Netlist【2】,挨个查看 ,同时注意Net Properties栏中的Numbers of drivers【3】,这个就表示变量的驱动个数,>=1就表示存在多重驱动。
在这里插入图片描述
这是我多重驱动端口中的一个:
在这里插入图片描述
可以看见,输出端口min_0[3:0]的确由 RTL_REG 和 RTL_REG_SYNC这两个寄存器在输出值,也就是在驱动,这个设计的确是有问题的。

第二步,回到自己的design 代码,ctrl+F,高亮 ,找到 多重驱动端口所在的所有代码片段。然后就修改自己的代码,争取能够消除多重驱动。其他的修改方法,网上其他有人也说了,如重新设计自己代码的逻辑等等。(下图是我这个程序中另外一个多重驱动的端口cnt4)
在这里插入图片描述

第三步,这是我修改后的RTL图,可以看见,多重驱动被消除了。综合也没有了多重驱动警告。

在这里插入图片描述
在这里插入图片描述

未完可能待续。

猜你喜欢

转载自blog.csdn.net/weixin_49099323/article/details/108526270