vivado时序出错的解决方法

这几天一直改程序,请教师兄帮我解决了一些时序上的问题。
由于现在项目里用的是200M时钟,所以会出现很多时序问题,下面一一举例。
问题1:逻辑级数太高导致Net Delay过高,该问题显示在时许报告的Levels列下,如图1所示。(这里我已经解决了问题,图片只是指出Levels)
![图1](https://img-blog.csdnimg.cn/20200731162557381.png图1图1
导致该问题出现的有两种情况,
第一种是由于程序中自己写的逻辑级数过高,比如:assign a = c * b + d * e ,这种情况在高速时钟下是会导致时序问题。讲一下我自己遇到的问题吧,reg_q <= -fifo_out; 我在一段程序中这样写最终导致时序出错,我的解决方法是对fifo_out打三拍,第一拍对fifo_out取反,第二拍+1’b1(完成对fifo_out取负的功能),在第三拍的时候取出这个信号。
第二种情况是在使用IP核时,选择流水等级太低,在高速时钟下可能会导致时序出错。还是举一个例子吧,比如我调用了一个乘法器IP核,(如图2)
图2
图2
如果选择流水级数为0,乘法器会立刻输出结果,这在实际中可能会导致乘法器内部逻辑级数过高无法满足时序要求,解决方法时增加流水级数即可。
问题2:(Fanout)过高,Fanout在图一中有。
某个信号扇出(Fanout)过高,很有可能的原因是该信号的驱动力不够了。举个我出现的问题,程序中用ip核实现了一个500阶的FIR滤波器,耗费DSP资源约130个,所以FIR滤波器的使能信号需要同时驱动这些DSP资源,显然如果不对该使能信号作处理,它是没有办法驱动这么多资源的,解决方法也很简单,可以在使能信号后加一个BUFG,(BUFG的功能就是增加信号的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值