【转载】 深究强化学习在谷歌芯片布局上的应用

 

 

 

论文:

https://www.nature.com/articles/s41586-021-03544-w.pdf

 

谷歌论文:

 A graph placement methodology for fast chip design

 

 

 

 

=================================================================

 

 

Chip Placement with Deep Reinforcement Learning

 

 

电路板制作流程

在讲解芯片布局之前,我们先了解电路板的大致制作流程,这和芯片设计有一定类比性,可帮助建立概念。

 

 

 

 

1,按照设计好的PCB板,对铜板进行热转印;腐蚀之后,保留需要的芯片、电阻等元件引脚及走线信息。

2,PCB布局就是排放电路图中各芯片、电阻电容等元件的位置。

3,PCB布线就是布置各元件之间的连线。

 

 

 

 

芯片制作流程

下图是intel cpu的制作流程:

 

1,与电路板制作类似,不过是在晶圆上制作各种晶体管。

2,光刻类似电路板制作的热转印,将事先设计好的芯片布局布线图案(掩膜),通过紫外线刻在晶圆上;被“卡脖子”的5nm光刻机指的就是这里。

 

 

 

 

 

 

芯片布局

《Chip Placement with Deep Reinforcement Learning》尝试通过深度强化学习的方法,解决芯片布局的问题,类比于电路板制作的PCB元件布局;注意只包括布局,不包括布线。

芯片布局包含两部分,一是标准单元(standard cells)的布局,如NAND(与非门)、NOR(或非门)、XOR(异或门)等逻辑门,二是宏(macros)的布局,触发器、算术逻辑单元、硬件暂存器等预定义逻辑模块。

宏的布局就是论文算法要解决的问题,标准单元的布局采用分组聚类(hMETIS)和力导引(force-directed)的传统方法。

 

 

                                       VLSI Cell Placement Techniques
 
 

 

 

 

 

布局宏(macros)

问题描述为给定芯片的netlist,将宏放置到128X128的晶圆画布(canvas)上,以使芯片的PPA(能耗、性能和面积)最小;netlist是一张图(Graph),描述电路图中各节点(宏或标准单元)的连接关系。

 

 

采用PPO:近端策略优化深度强化学习算法来建模宏布局。

 

 

 

 

 

 

 模型学习的是某个宏具体摆放的位置,但注意放置宏的顺序不是模型学习的,而是由图的拓扑序确定的;同时优先放置较大的宏,以确保其充足空间。
 

 

 

 

 

 

 

 

 

 

 

 

模型结构

 

 

 

1,基于PPO结构,由Policy π(.|s) 和 state-value V(s)网络构成。

2,输入State包含所有宏的Graph Embedding当前要放置的宏的Idnetlist metadata(比如连线宏标准单元等数量等netlist基础信息)、Mask信息(表达不能被放置的Grid位置)。

3,Policy π(.|s)采用转置卷积(如下图一种升维方法),最终Actions动作空间输出为128X128X1,与画布大小一致,表达的是画布上每一个Grid。

 

 

 

 

4,注意这个宏布局过程按照顺序逐个摆放,对于Policy π(.|s)来说,是一种无放回的采样;此处引入Mask作为Filter,Policy每次只能从Mask之外的Grids采样。

5,Mask一方面包含已经布局的Grid,同时也包含不满足Density约束的Grid; Density约束为了防止布局过于稠密,引起重叠。

6,Policy采样采取的是贪心方法,每次选择概率最大的Grid,这个和PPO本身是有所区别。

7,即时Reward表征芯片PPA,当芯片布局完成,给出最终奖赏,其它步骤都是0。直接通过EDA Tool获得Reward,环境反馈时间比较长,这是强化学习在真实应用场景中的一个常见困难。 采用如下布线长度和布线阻塞进行近似:

 

 

 

布线长度Wirelength通过HPWL方法进行估计。

 
 

 

 

 

 

 

 

Graph Embedding

Netlist Graph,通过GCN网络,同时输出Edge Embeddings和Node Embeddings。

 

 

 

                                                 Chip Placement with DL
 
 

 

 

 

 

GCN是CNN在图结构上的应用,输入为node features和 邻接矩阵,如本例中的Macro FeaturesNetlist adjacency架构如下:

 

 

 

 类比于CNN中的Kernel,GCN Kernel中大小K表达距离目标节点的半径。如上,比如k=1,表达只考虑距离(阶)目标节点小于等于1的节点,也包括自身。

 经过GCN网络之后,就能得到最后的节点特征向量即node embeddings,本例中网络参数更新方式为:

 

 

 

 训练Graph Embedding的数据与即时Reward模型数据一致,应该也可以在训练Reward模型时一并更新Graph Embedding参数,或者fine-tuning方式。

 

 

 

 

 

 

预训练Policy Network  ( 存疑 ???

 为了加速Policy Network的学习,设计了一个监督学习回归任务:数据来自EDA自动布局的10000个示例,输入包括基于Edge embeddings均值的Graph EmbeddingNetlist Matadata Fc embedding
输出为reward值(布线长度及阻塞)。

 

 

 

 
将训练好的Reward回归模型参数更新到强化学习PPO Model,通过fine-tuning,能够加速训练学习。
 
 
 
 
 
 
 
 
 
 
 
 学习过程
1,先准备布局数据,以便预训练Reward回归模型,预训练Graph Embedding。
2,结合拓扑序宏大小,生成宏布局顺序
3,收集训练数据(s, a, r, s'),在每一个Episode布局结束,布局标准单元并估计即时Reward。
4,训练深度强化学习模型PPO。
5,重复3、4,直至模型收敛。
 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
布局标准单元(standard cells)
在进行Reward估计时,其实是需要将这个芯片都布局好,通过强化学习的方式将宏摆放完成后,还需要对标准单元进行摆放。标准单元的摆放,分两步:
 
 1,通过hMETIS的聚类方式,将基本单元分成若干簇,算法的优化目标就是簇之间尽量少的连线。
 

 

 

                                                                hMETIS
 
 
 
 
 
 
 
 
 

2,簇之间采用力导引(force-directed)方法。

 

 

 

 
 
 
 
 
 
 
 

总结

深度强化学习PPO应用于芯片宏布局中,提高了芯片设计效率。谷歌论文展示了高超的工程实践技艺,通过Graph Embedding、预训练等深度学习策略,以及丰富的先验知识,使学习约束到有限的时间内,整套解决问题的方案非常值得借鉴。

 

 

 

 

======================================================

 

 

 

 

 

 

posted on 2022-05-08 15:13  Angry_Panda  阅读(747)  评论(0编辑  收藏  举报

导航