《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的聚类 方式,将基本单元分成若干簇,算法的优化目标就是簇之间尽量少的连线。