关于DC综合,和大家讨论一下
前两天写论文,一种电路明明自己分析关键路径肯定会优化的,可是综合出来之后却是笨方法的延时要短,甚是困扰。
我遇到很多这种情况了,比如:一个9选1的选择器我换成了几个2选1的选择器实现,按说最靠近输出的那一层的延时应该得到优化的,可是综合出来看结果是没有优化,我看了一下9选1的选择器综合成的电路,与我们所想的电路完全不同。
还有一种情况,就是我在综合加法器的时候,如果延时约束很宽松的话,“+”综合出来的电路要比我用超前进位算法实现的电路延时大,可是这两种方法我综合时我都加很严的时序约束时,+综合的电路优化效果相当明显,且面积增加不多,超前进位加法算法实现的电路就差远了。
第二种情况到是还能凑合着想通,第一种就是相当的不懂了。
大家有人遇到过这种情况吗,讨论一下它为啥会出现这种情况呢。DC的优化也太强大了啊。
就像第二种情况,自己费劲心机和时间的搞懂算法了,到头来还不如一个“+”得到的电路优化,甚是郁闷啊。
还有我想问一下工作了的朋友,工作中是不是不用费很多神在这些优化算法上,可能自己研究半天的算法不如DC优化的效果好。
谈谈个人的经验。
有关你提到的加法等算法,因为DC本身就有现成的模块可以使用,这些模块都已经经过很多优化,所以你自己设计的肯定比不上人家了。
工作中,除非synthesis之后timing不满足约束条件,一般都很少花费时间考虑优化timing,这些都交给tool自己完成了。
当然如果真的碰到tool无法满足的约束条件,就要从架构等方面来考虑做优化了,而不是具体的加法器或者mux之类的运算单元的优化。
其实是不是到工作的时候,应该主要以实现功能为主,可能因为时间原因或者因为DC得优化已经很好了,所以不用花费也不能花费比较长的时间去从RTL级或者算法级考虑优化呢,这样看来,现在学的这些算法还有屁用啊,唉,真是悲剧啊。
我经常遇到这种情况,就是很多资料上说的某种电路多好多好,看着也的确很好,或者时序优化了,或者是面积优化了,可是一综合之后,比较一下,综合的结果完全一样。
我们的工艺一般都比较浅,目前DC的能力完全可以胜任。
但是如果要追求极限,还是要看学术界最前沿的算法。
只是等到我们都会这些算法的时候,DC也能自动生成了。
做好应用吧。
一般的产品,哪里有时间研究这些细枝末节,相信DC就好了,把握好几个关键点,功能-面积-功耗,就差不多了,
可是所谓的算法就是为了优化这三点的啊,可是有了DC,这三点岂不是都可以忽略了吗,或者是不用太上心考虑这些了吗?
是啊,我是越来越感觉到这一点了,自己费劲心机搞出来的算法可能DC早就已经可以优化的更好了。哈哈,所以实际应用的时候应该最主要的实现功能就ok了。
你一个人的脑袋和synopsys那么多人,那么多年得积累相比,你觉得哪个更强大啊?
哈哈,说的也是啊。
对于多选一选择器,DC一般不会按mux2来综合而是用异或非逻辑。
至于超前进位加法器,只是在理论上速度快,高bit的加法器会有其他结构。另外,对于加法数,只有最后一级采用全加器。
另外,除非是手工pr,否则对于基于standard cell的设计,手工优化很难达到dc的效果。
其实有很多电路可以达到更快的速度并且面积更小,比如传输门的速度和面积都优于mux,但是这些电路和ASIC设计flow无法兼容,一般情况下很少采用。
DC只能做到细节优化,而设计工程师更应该关心系统级的优化,事实上一块memory的增减完全可以抵消掉你在逻辑优化上的所有努力。
受教了,非常感谢,系统级别的优化,这个听着靠谱,能稍微多说点吗,哈哈
现在搜的资料,尤其是论文,大都是对于电路或者算法的优化和改进,而这些对于我们的设计来说根本不起作用,很多东西我想用DC综合的结果验证一下这个算法的时候,发现根本不好用。
系统级别的优化是不是这样:对于一个设计,从架构上来优化这个设计,一个设计可能做出了几种架构,而我们要做的是选择出最优化的,或者说最可行的。
我们之前做的一款芯片是一个语音芯片(师兄架构的),刚开始是定的两种架构,第一种用mcu架构,ram,rom都有,这种利于升级,第二种是一般架构,没有rom,就是用寄存器进行控制,这种卡可能成本或者其他更好,最后我们选用了第二种,这其实就是从系统级别考虑优化是吧。
再次谢谢。
