上一篇说到ESL是硬件的高级、抽象的描述,这一篇我们来说说为什么要做ESL。
我们的芯片系统,包含硬件系统和专用的软件系统,软硬件紧密结合。限于我的所知范围,硬件设计流程包含前端(spec设计、RTL设计、验证)和后端(布局布线、时序收敛),软件系统更是自驱动到顶层操作系统app很多层级。(由于专业所限,此处描述可能不够严谨,还请大家批评指正)
全部的流程会在开工时候设计一个紧凑的时间表,并且会共同为芯片的主要性能参数PPA(Power,Performance,Area)负责。而ESL专注于性能,所以后续我们的讨论也都限于性能。
质量大师克劳士比提出过:当每一个环节如果出现了问题,那么在下一个环节中发现并解决,其成本就会增加10倍(如有出入,请QA指正)。 我们可以想像一下写一个bug并不会花费多少时间,而debug时间往往都要呕心沥血,这就是为什么越早发现问题就可以越节省成本。
那么我们继续想一下,如果一个性能参数,比如运算器规模或数据传输带宽,在spec定义时候出现了问题,走过了所有的硬件设计流程,近一年的工期,流片回来,软件也写好了代码,发现性能有问题,再投入时间和人力定位到这个性能参数有问题,那是不是已经太迟了,甚至可能无法挽回了。这种错误的设计是毁灭性的,甚至可能导致产品或公司的终结。
为了防止这么恐怖的事情发生,ESL则可以在非常早的早期,甚至比RTL设计还早,就可以进行架构设计的探索和试错,牵引设计、规避性能风险。从而做到节省时间和人力成本,所以ESL从质量流程上是很有必要的。
下一篇,我会介绍下ESL具体是如何工作的。
@JasonWong同学提问:esl是否会投入很多成本呢?如果不是的话为什么目前只有大厂引入esl流程呢?如果是的的话小厂如何平衡呢?
非常好的问题,我在这里说明一下:
首先是人力成本,人*时间,分开说,ESL工程师需要是体系结构知识和软件编程能力,这两者结合其实要求就很高了,再附加一些应用层的人工智能的相关知识/底层实现的RTL知识,其实要求涉猎范围很广,导致人才很稀缺;时间上,前期投入可能要半年到一年的时间并没有产出,这对于绩效导向其实是不太友好的,需要后期逐步完善起系统,才能更好的完成ESL的工作。
第二,如果芯片规模小,模块不复杂,那么其实只靠思考和计算,用解析的方法就可以完成设计。只有当规模变大,模块复杂,数据通路变得复杂,只靠思考无法完成设计,才需要ESL来建模,用仿真的方法来完成设计。小厂的芯片一般小而简单,大厂的芯片一般大而复杂,所以大厂对ESL依赖更强。那么如果小厂想变成大厂,ESL则是不可或缺的。