IncreMacro: Incremental Macro Placement Refinement
此篇文章来自林亦波和余备 publish 在 ispd 2024 上论文,提出一种增量宏单元布局优化算法,提高布局可布线性(布线拥塞 routing congestion)和时序性能。对布线性能算是开了一个新的课题,非常具有研究意义。
文章获得 ispd 2024 best paper 提名,遗憾的是最后 best paper 由任昊星团队的 《Novel Transformer Model Based Clustering Method for Standard Cell Design Automation》摘得殊荣。
Introduction
在宏单元布局中,经验丰富工程师会通常将宏布局放置在芯片外围区域,以避免中心区域宏单元拥塞。现有分析布局方法(DREAMPlace,RePlace,ePlace,NTUPlace)布局过程中优先优化布线长度,这种方法容易导致布局中心拥塞,对标准单元布局产生负面影响。见图一:
-
图1a为一个分析型布局,其中宏被放置在核心区域,导致宏拥塞。宏拥塞导致将剩余标准单元布局空间分割成不同子区域,导致标准单元布局增加布线长度等。
-
图1b为基于数据结构等元启发方法对分析型布局进行合法化例子。此方法虽然成功消除宏单元重叠而且将宏单元移动至芯片外围,但扰乱布局中宏单元相对位置关系,导致布线长度增加。
-
图1c为IncreMacro实现的理想宏单元布局方法。保证布线优化同时消除核心区域宏单元拥塞。
总结:
-
本文提出 IncreMacro,通过最先进的分析性布局算法逐步优化宏布局。
-
提出一种新的算法流程,包括 KD-tree-based macro diagnosis(基于 kd 树的宏单元诊断),**gradient-based macro shift(基于梯度的宏块移动)**以及 constraint-graph-based linear programming for macro legalization(基于约束图的线性规划进行宏块合法化)。保证布线优化效果同时,消除布局中心宏单元拥塞。
-
文章在多个 7nm 工艺节点的 risc-v 电路实验,
- IncreMacro 集成到 DREAMPlace 中,布线后到 WNS 和 TNS 分别提高了 59.9% 和 63.9%,布线长度和总功耗分别减少了 6.5% 和 3.3%;
- IncreMacro 集成到 AutoDMP 中,布线后到 WNS 和 TNS 分别提高了 99.6% 和 99.9%,布线长度和总功耗分别减少了 16.8% 和 4.9%;
Problem Formulation
见图 2:
-
图 2a 展示 IncreMacro 布局流程,首先将包含 lef 和 def 电路文件输入分析布局器,生成一个包含合法化宏单元的混合布局原型,其次使用 IncreMacro 以迭代和增量的方式优化宏单元布局。完成后再使用分析布局器完成标准单元布局。
Macro Regularity Define
宏单元规则性定义,有可能引发拥塞的宏单元称为 “非规则放置宏单元” - “poorly-placed macros”,与之对应的成为“规则放置宏单元” - “regularly-placed macros”,见图 3:
-
判断 regularly-placed macros 满足以下两个标准之一,第一个是与芯片外围边界相邻(
),第二个是与其他宏单元有规律排列( )
Define1(规则放置的宏单元):
给定一个宏单元
Define2(非规则放置的宏单元):
如果一个
Define3(宏单元诊断):
给定一个宏单元
Problem1(宏布局优化):
找到
Algorithm
kd 树将宏单元分成规则和不规则两种 --> 使用梯度方法迭代移动不规则放置宏单元,以最小化线长为损失函数 --> 使用基于约束图线性规划方法消除宏单元之间重叠,最小化宏单元位移,进一步将不良宏单元推向芯片布局外围,同时保留初使宏布局相对位置关系。
KD-Tree-based Macro Diagnosis (基于 kd 树宏单元诊断)
kd 树是二叉搜索树的扩展,在 k 维空间进行排序,范围搜索和邻近搜索。kd 树中每个 node 代表一个 k 维点,非叶子节点通过生产分割超平面来均匀划分空间。kd 树支持最近邻搜索-nms,时间复杂度为
见图 3:
图 3a 中展示一个包含 8 个宏单元布局,图 3b 中构建一个 kd 树,图 3c 和图 3d 表示根据定义得出
Gradient-based Macro Shift
类似 dl 中神经网络训练过程,将每个位置不佳宏单元
损失函数
-
外围成本
用于衡量宏单元偏离芯片边界程度。用于鼓励宏单元靠近芯片外围,离外围越近,外围成本越小。
这个跟 DREAMPlace 一样
一个水平成本,一个垂直成本,
图 5 描述了这个例子,
Macro Legalization
使用约束图线性规划方法避免宏单元重叠
约束图定义
宏布局中约束图(constraint graph)是一个有向无环图(DAG),其中每个顶点代表一个宏单元,每个边表示宏单元之间相对位置关系。
创建两个约束图,水平方向
每一对宏单元相对位置关系必须在水平或者垂直方向指定,不可能同时出现在两个图中。
宏单元布局合法化改进
现有方法(eg. XDP)使用线性规划消除宏单元重叠,但在消除重叠时,可能需要调整某些边的方向,导致宏块相对位置关系被破坏,从而影响线长优化。
本文在分析器生成合法宏单元布局基础上构建约束图,同时保留宏单元的相对位置关系。比如一对宏单元
线性规划公式及目标
-
每个宏单元在合法化前后中心位置分别用
和 $(x’{i},y’{i}) w_{i},h_{i}$表示。 -
线性规划的目标是最小化宏块的位移量,从而尽可能保持原有的线长优化。
-
公式中引入辅助变量
,将位移目标转化为辅助变量总和。目标函数还包括次级目标,将宏单元推向芯片边界。
Experiments
使用来自 chipyard 的 risc-v soc rtl 设计作为数据,其中 chipyard 为一个开源的 soc 开发框架,所有设计均是 risc-v soc 不同变体,核心是 rocket 和 boom。
-
Homepage: https://chipyard.readthedocs.io
为了将 rtl 设计转化为门级网表,使用 barstools 将 rtl 中存储模块映射到 sram,然后采用一个学术届 7nm 工艺节点 asap7,使用 cadence genus 进行逻辑综合生成门级网表,图一所示:
Experiment Setting
将 IncreMacro 集成到 DREAMPlace 和 AutoDMP 中
DREAMPLace/AutoDMP 宏单元布局 --> IncreMacro 宏单元优化布局 --> DREAMPlace 标准单元布局 --> Cadence Innovus 进行时钟树(CTS)综合、信号布线和 PPA 评测。
其中 DREAMPLace 和 AutoDMP 原始布局为 baseline
Overall Comparisons
关注指标为
-
线长 wirelength --> WL
-
时序 WNS (worst negative slack 最差的负时序),TNS (total negative slack 总的负时序时间之和,即小于 0 的 slack 之和)
-
功耗 Power
AutoDMP 无法完成 Sha3Rocket、LargeBoomAndRocket 和 SmallBoom 布局流程,见表 2 和表 3
-
表 2 和表 3 展示了将 IncreMacro 集成到 DREAMPlace 和 AutoDMP 布局流程中的显著时序改进。布线后的线长分别减少了 6.5% 和 16.8%。
-
对于 DREAMPlace,设定违约裕量(WNS)和总违约时间(TNS)分别改善了 59.9% 和 63.9%;
-
对于 AutoDMP,分别改善了 99.6% 和 99.9%。
-
此外,集成 IncreMacro 还分别减少了 DREAMPlace 和 AutoDMP 布线后的功耗,分别减少了 3.3% 和 4.9%。
Analysis, Visualization, and Profiling
图 7 可视化展示了 GemminiRocket 在 DREAMPlace 和 AutoDMP 上布线后的布局,分别是在集成 IncreMacro 之前和之后的情况:通过比较 DREAMPlace(图 7(a))和 AutoDMP(图 7©)的宏布局,AutoDMP 显示出更优越的性能,宏阻塞减少,导致可布线性和时序性能的提升。
图 8 展示了 DREAMPlace + IncreMacro 在表 2 中 7 个基准测试上的平均运行时间分布。DREAMPlace 的第一阶段布局(混合尺寸布局原型)占总运行时间的最大比例(43%),而 IncreMacro 占总运行时间的 40%。