这几天在做64*64的乘法器,综合的结果很不理想。所以就开始查关于时序与面积优化的资料,今天逛知乎的时候看到一篇文章,消化之后,特来分享。
首先看下面的表达式(=代表阻塞赋值,<=代表非阻塞赋值)a,b,c,d,e,f均为位宽相同的数:
out1=b+c+d+e+f;
out2=a+c+d+e+f;
out3=a+b+d+e+f;
out4=a+b+c+e+f;
out5=a+b+c+d+f;
如果这样编码的话,综合的时候这5个式子是并行执行,且有4级数加法,这样面积和时序都没有优化。下面请看优化版本1:
sum=a+b+c+d+e+f;
out1<=sum-a;
out2<=sum-b;
out3<=sum-c;
out4<=sum-d;
out5<=sum-e其中sum被复用了5次 ,这样可以节省面积,但是路径变长了,需要6级加法,这样的优化方法着重体现在面积优化上。下面请看优化版本2:
sum0 = a+b;
sum1 = c+d;
sum2 = e+f;
out1 <= b+sum1+sum2;
out2 <= a+sum1+sum2;
本文探讨了在硬件设计中如何进行时序和面积优化,通过对比不同的乘法器实现方式,展示了如何通过复用计算单元来节省面积以及如何通过流水线设计改善时序。优化实例包括直接并行计算和分步计算,强调了根据设计需求平衡时序与面积的重要性。
最低0.47元/天 解锁文章
1080

被折叠的 条评论
为什么被折叠?



