微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于操作符和调用ip核的区别

关于操作符和调用ip核的区别

时间:10-02 整理:3721RD 点击:
前两天纠结于这个问题,在论坛上也发了求助帖,今天自己测试整理了一下,跟大家分享下,如果有不对的地方请提出指正,谢谢
关于使用操作符(+、-、*)和调用IP核的区别
1.        实现方式
综合器见到+、-、*之后,会到库里去map各种IP,找到一个最适合的design ware,然后映射到网表中,然后基于这个网表做逻辑优化,包括timing/power的优化;而调用IP核,直接调用的是厂商已经设计优化的网表;
2.        综合生成逻辑(实测)
对于0时钟延时的加减法,直接用操作符和调用IP核得到的逻辑电路是一样的,电路的延时以及占用的资源都一样。
对于0时钟延时的乘法器,直接调用操作符综合结果和综合约束有关,特别是DSP资源的利用率(Synthesis Options->-dsp_utilization_ratio),决定乘法器是使用DSP资源实现还是LUTS实现。在使用LUTS实现时,操作符方式使用的LUTS更多,延时较短;在使用DSP资源时,DSP资源一样,但是调用IP核的延时较短;
               LUTS               DSP资源
操作符(*)        占用资源多,延时短        资源一样,延时长
调用IP核        占用资源少,延时长        资源一样,延时短
3.        可控性
直接使用操作符不能控制时钟延时,不能做到较高的速度;调用IP核可以根据实际需要进行配置;
32位定点乘法实测结果(*):
             LUTS                            DSP资源
操作符(*)        1571个-5.999ns        4个-8.879ns
调用IP核        1062个-6.299ns        4个- 8.650ns
引用:综合器见到+ - * /等操作符之后,到库里去map各种IP,找到一个合适的designware后映射到网表中,然后基于这个网表做逻辑优化,包括timing/power,我记得coding style的文档中有个要求,尽量实例化design ware,其基本过程是找到design ware的列表和文档,研究哪个在gatecont/power,timing方面最合适你,然后再rtl中使用。
如果是小尺寸的运算,可以考虑直接写操作符,如果是大尺寸,尤其是* /运算,最好不要直接用操作符,毕竟综合器的mapping及优化过程不完全可控。
所谓design based on spec,not based on tool
作者:yinchyang
中国电子顶级开发网(bbs.eetop.cn)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top