《Chip Placement with Deep Reinforcement Learning》尝试通过深度强化学习的方法,解决芯片布局的问题,类比于电路板制作的PCB元件布局;注意
只包括布局,不包括布线。
芯片布局包含两部分,一是
标准单元
(standard cells)的布局,如NAND(与非门)、NOR(或非门)、XOR(异或门)等逻辑门,二是
宏(macros)
的布局,触发器、算术逻辑单元、硬件暂存器等预定义逻辑模块。
宏的布局就是论文算法要解决的问题,标准单元的布局采用分组聚类(
hMETIS)和力导引(
force-directed)的传统方法。
1,基于
PPO结构,由Policy π(.|s) 和 state-value V(s)网络构成。
2,输入State包含
所有宏的
Graph Embedding
、
当前要放置的宏的Id
、
netlist 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,环境反馈时间比较长,这是强化学习在真实应用场景中的一个常见困难。
采用如下布线长度和布线阻塞进行近似:
预训练Policy Network (
存疑 ???
)
为了
加速Policy Network的学习,设计了一个监督学习回归任务:
数据来自EDA自动布局的10000个示例,输入包括基于Edge embeddings均值的
Graph Embedding
和
Netlist Matadata Fc embedding
;
输出为reward值
(布线长度及阻塞)。
1,先准备布局数据,以便
预训练Reward回归模型,预训练Graph Embedding。
2,结合
拓扑序
及
宏大小
,生成
宏布局顺序
。
3,收集训练数据(s, a, r, s'),在每一个Episode布局结束,布局标准单元并
估计即时Reward。
4,训练深度强化学习模型
PPO。
5,重复3、4,直至模型收敛。
布局标准单元(standard cells)
在进行Reward估计时,其实是需要将这个芯片都布局好,通过强化学习的方式将宏摆放完成后,还需要对标准单元进行摆放。标准单元的摆放,分两步:
1,通过
hMETIS的聚类
方式,将基本单元分成若干簇,算法的优化目标就是簇之间尽量少的连线。