来自中科院的团队在预印本平台arxiv上发表了重磅论文《Pushing the Limits of Machine Design:Automated CPU Design with AI》(机器设计新突破:使用人工智能自动设计CPU),其中使用了人工智能的方法,成功地在5个小时内完成了一个基于RISC-V指令集的CPU的设计,而且该设计经过后端布局布线后已经成功流片点亮并且能运行Linux和Dhrystone。
该论文一经发表,就得到了半导体业界的广泛关注,我们认为,该论文中提出的方法有其历史渊源,但是团队提出了对于已有方法的一种从数学角度来看很优美的改进,从而能够让基于机器学习的自动芯片设计成为现实。
首先,我们回顾一下现有的数字芯片设计流程。主流的芯片设计流程是,芯片设计师首先描述数字逻辑设计,而EDA工具软件则把这样的电路描述映射到完全等价的数字逻辑电路。在这个过程中,整个数字逻辑或者是用Verilog等硬件描述语言来描述(常常是芯片设计师使用的描述方法),或者是使用等价的布尔逻辑图的形式来描述(常见于一些EDA软件的内部优化过程中)。布尔逻辑图和硬件设计语言两者是等价的,其特点就是能够完全描述数字逻辑。例如,如果是一个简单的有n比特输入的组合逻辑,那么在描述中就需要能够生成一张布尔逻辑表格(真值表),该表格需要能覆盖所有2^n种输入比特组合的对应输出。而对于时序逻辑,则还需要考虑内部状态比特,需要的表格就更大了。
与之相对应的是,基于机器学习的自动设计关注的问题是:如果我们只给出真值表的一部分,能否同样可以生成正确的数字逻辑?举例来说,该论文中针对的CPU自动生成的问题,其中有1798个输入和1826个输出,在这种情况下如果直接使用真值表需要(2^1798)*1826大小的真值表,这样大的真值表基本上是不可能在合理的时间内生成的,而且也没有可行的算法来处理如此大的真值表。对此,论文提出的观点是,可以使用一种新的算法,该算法可以只使用真值表的一小部分来训练,就能够生成自动推理出真值表的其他部分,并且保证有很高的准确度。因此,设计流程就变成了:用户提供一个芯片逻辑真值表的一部分(需要是高质量数据,能够抓住电路逻辑的主要特点),机器学习算法根据这个逻辑真值表自动推理并补全真值表的其他部分,并且把该完整真值表送到传统的EDA工具里去做逻辑综合和物理设计。因此,电路设计流程也就由大量人工参与逻辑设计迭代(下图a)变成了用户提供一个输入输出数据集,AI直接综合出逻辑和电路