漫谈ESL(三) IronMan2019-09-01 17:26:27 回复 15 查看 行业动态 综合话题 经验交流
漫谈ESL(三)

    上一篇说到,做ESL是为了提前释放芯片在架构上的性能风险。

    那么,到本篇,我们来聊聊ESL具体是如何操作的。

image.png

    当我们从架构师手中,拿到我们的任务书——specification,我们常常称之为spec文档的时候,我们也就知道了我们整个芯片的目标是什么了。比如,算力、峰值功耗、面积、各种feature等等。前端设计工程师会拿着spec文档来做详细的模块拆分和详细设计,那我们ESL工程师拿来干什么呢?有两个主要的关注点,我们一点点展开来说。

    (我们还是围绕芯片的三个主要指标来说,即PPA,performance性能、power功耗、area面积)

    一、具体的RTL实现策略

    小到一个函数、大到一个模块、系统,只定下了规格,从规格到实现仍然一千万种实现方法。那么选用哪种实现方法,可以得到最优的PPA呢?power和area一般由RTL设计的同事来评估,我们则更关注performance。不同的实现方法,哪种性能更好,该如何在面积和功耗中取舍,是我们需要关注的。

    二、待探索的性能参数

    从底层每一个模块,自底向上,有各种参数需要我们操心。fifo深度和宽度、寄存器个数、RAM大小、端口个数等等等等,每个参数的选择都不是简单地拍脑袋就能定下的,都是跟PPA密切挂钩的。那么如何在有限的power和area限制下,得到更好的性能,跟每个参数的选择都是息息相关的。

    说完了以上两个关注点,那么我们来谈谈怎么实现。当目标确定了,实现的方法其实殊途同归。

    ESL会用高级语言(这里的高级是指相对于RTL),如C/C++、SystemC、Python等,来实现硬件的功能,并附加上性能数据。这样一个Model就建立起来了。那么选择不同的策略,或者各种配置参数还不是手到擒来?

(具体的建模思想和方法,我这里就不深入介绍了,因为考虑到本系列偏向科普性质,如果大家想深入探讨,我再补充。)

preview

    如果大家同时写过RTL和C++,那么就一定知道高级语言被称为高级语言,还是有他的道理的!调试方便快捷,可以大幅缩短试错时间,和ESL的思想正好match。所以也可以说建模就是用软件编程语言,来实现了硬件系统。在建模的基础上,输出满足PPA要求的策略和性能参数,就是ESL的工作核心。

    科普的内容,说得差不多了,下一篇可能看大家想交流哪些方面,我们再展开介绍。



官方微博 官方微信
版权所有 © 2019 寒武纪 Cambricon 备案/许可证号:京ICP备17003415
关闭