芯片设计流程
了解谷歌的工作我们首先要知道芯片的设计过程
首先要确定项目需求,这个阶段主要工作室规划芯片的功能以及各项指标,接着进行系统级别的设计,对芯片的各个子模块进行建模,然后进入具体的设计流程,分为前端和后端,前端主要包括RTL设计与验证,硬件仿真验证,DFT还有电路综合,后端流程中主要包括版图设计、物理验证、版图后仿真等等,直到最后的GDS
下面是从网上找的一张流程图
那么谷歌的论文是做的哪部分呢?答案是后端中的版图任务,具体来说是布局规划任务。
谷歌工作介绍
标题
Superhuman floorplans for microchips/在芯片布局任务中超越人类
标题部分其实谷歌就已经告诉大家了,我们的研究集中在芯片布局这个任务
摘要
❝❝ A machine-learning system has been trained to place memory blocks in microchip designs. The system beats human experts at the task, and offers the promise of better, more-rapidly produced chip designs than are currently possible ❞ ❞
❝❝ 我们训练了一个机器学习系统用于在芯片布局中放置存储块。系统在这项任务中击败了人类专家,未来能够实现更快更好的芯片设计 ❞ ❞
芯片的布局任务究竟在做什么?
经过前端的RTL设计,再使用综合工具,将RTL代码转换为门级网表。最后在布局任务中,将门级网表作为输入,划分成不同的模块,对模块进行布局,布局的意义在于,通过合理的拓扑优化,减少信号的延迟,提高时钟的质量,保证芯片的工作频率。一颗高端芯片的晶体管数量可以达到上百亿,这么多晶体管分布在大大小小很多模块中,所以这部分工作,原本就是由EDA工具通过算法实现的,传统的布局布线算法采用模拟退火算法。
论文将布局规划问题总结为
❝❝ 芯片布局规划涉及将网表放置在芯片画布(二维网格)上,以便优化性能指标(例如,功耗、时序、面积和线长),同时遵守对密度的严格限制和路由拥塞。❞ ❞
这个问题的实现,完全不涉及芯片本身的功能设计,更加不涉及芯片的架构设计,是一个单纯的算法问题,抽象起来就是给很多方块,摆放在指定区域内,对他们的密度、走线、时序具有要求,这是一个搜索空间很大的图论问题。所以传统的EDA中才会使用模拟退火等算法去实现它。
谷歌做了什么
简要的概括就是在芯片设计的后端流程--布局规划中,提出使用强化学习的模型去取待传统的人工配合算法的方法,与媒体所宣称的AI自举完全对不上。
媒体的标题是
❝❝ 人类需要几个月才能设计出的芯片,谷歌的人工智能在不到六个小时的时间内设计出来。❞ ❞
可实际上是
❝❝ 在后端的布局布线任务中,谷歌的人工智能能够在不到六个小时的时间内完成,传统的版图工程师需要几个月时间 ❞ ❞
而整个芯片设计周期占据主导地位的架构规划、RTL实现、RTL验证等任务,谷歌并没有涉足,这些步骤的时间比后端所需要的时间可能会更加长,从半年到两三年不等。
系统具体如何工作
芯片布局规划类似于具有不同部分(例如,网表拓扑、宏计数、宏尺寸和纵横比)、棋盘(不同的画布尺寸和纵横比)和获胜条件(不同评估的相对重要性)的游戏指标或不同的密度和路由拥塞约束)
上面这张图是强化学习的一个简要表示,其实简单理解就是一个反复迭代系统,从当前的布局中根据密度、线长、延时等等计算出加权奖励,同时使用神经网络从布局中进行特征提取,最后智能体通过强化学习决策,得到调整布局的动作,然后去调整布局。反复的重复这个过程,就能不断地优化布局。
强化学习系统需要精心设计的奖励,谷歌的·布局规划系统的奖励设计为“线长、拥塞和密度的加权总和”。
值得注意的是,系统中使用的深度神经网络是使用监督学习开发的。监督机器学习需要标记数据在训练期间调整模型的参数。谷歌的科学家创建了“一个包含 10,000 个芯片placements的数据集,其中输入是与给定布局相关的状态,标签是该布局的奖励。”
总结
未来的EDA工具中,AI算法的介入肯定会越来越多,例如在综合阶段,利用AI实现更好的电路综合方案,在验证阶段,利用AI去搜索验证空间中更加可能出现bug的用例,时钟树综合的时候,也可能使用AI算法去优化时钟树,未来可期。
但是,媒体现在宣传的神经网络几个小时就能实现芯片设计,就是标题党,外行的总结,希望各位不要被这种观点迷惑了。
END