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图,可以看见,多重驱动被消除了。综合也没有了多重驱动警告。
未完可能待续。