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

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

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

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

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

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

未完可能待续。

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值