【EDA】Floorplanning(布局规划)
第三章:Floorplanning(布局规划)
在VLSI物理设计中,布局规划(Floorplanning)的目标是确定芯片上模块(Blocks)的位置和尺寸,确保无重叠且优化面积、线长、时序等指标。第三章聚焦四种经典算法,涵盖切片布局(Slicing Floorplan)、非切片布局(Non-Slicing Floorplan)及优化方法,以下是详细介绍:
1. Stockmeyer算法(切片布局方向优化)
核心目标
给定切片布局(由递归横纵切割形成的树状结构),优化模块方向(旋转90度与否)以最小化总面积。
核心思想
- 切片树表示:每个内部节点表示切割(Horizontal/Horizontal, Vertical/Vertical),叶子节点为模块。
- 自底向上计算:对每个子树计算可能的尺寸组合(宽度-高度对),合并时考虑方向对面积的影响。
- 自顶向下选择:根据最优子树尺寸,确定模块实际方向和位置。
关键步骤
- 构建切片树:如输入为模块集合及切割顺序,生成树结构(图3.1)。
- 底向上合并:
- 对每个切割节点,合并左右/上下子树的尺寸,考虑模块旋转(如垂直切割时按宽度递增、高度递减排序子树尺寸)。
- 示例:合并子树尺寸 ((2,3)) 和 ((2,4)) 为 ((4,4))(垂直切割,宽度相加,高度取最大)。
- 顶向下确定方向:根据最优根节点尺寸,递归确定每个模块的旋转方向(图3.2)。
优势与应用
- 仅优化切片布局的模块方向,不改变切割结构。
- 时间复杂度 (O(n \cdot d)),适用于结构化布局(如标准单元行、硬核模块排列)。
2. 规范化波兰表达式(Normalized Polish Expression, NPE)
核心目标
高效表示切片布局,支持局部搜索优化(如模拟退火),通过三种移动操作生成相邻解。
核心思想
- 表达式结构:形如
25V1H374VH6V8VH
,其中数字为模块,H/V
表示切割方向,对应切片树的后序遍历。 - 三种移动操作:
- M1:交换相邻模块(如交换3和7,图3.4)。
- M2:反转连续切割序列(如将
VH
转为HV
,图3.5)。 - M3:交换模块与切割符(如交换6和V,图3.6)。
- 评估与搜索:通过切割树计算布局尺寸和线长,结合模拟退火优化面积。
关键步骤
- 初始化表达式:随机生成合法切片布局的NPE(满足“投票属性”:操作数始终多于操作符)。
- 局部搜索:随机选择一种移动操作,生成新表达式,计算面积/线长,接受更优解或依概率接受差解(模拟退火)。
- 示例:通过M1/M2/M3操作调整表达式,逐步减少面积(图3.7)。
优势与应用
- 简洁表示切片布局,支持高效邻域搜索,适用于启发式优化(如模拟退火)。
- 局限:仅处理切片布局,非切片布局需其他方法(如Sequence Pair)。
3. 基于整数线性规划(ILP)的布局规划算法
核心目标
通过数学规划求解软模块(尺寸可变)和硬模块(尺寸固定)的布局,优化面积、线长或满足约束(如固定外形、模块旋转)。
核心思想
- 变量定义:
- 连续变量:模块坐标 ((x_i, y_i))、尺寸 ((w_i, h_i))(软模块)。
- 整数变量:模块旋转((z_i=1) 表示旋转90度)、相对位置关系(如 (x_{ij}=1) 表示模块i在j右侧)。
- 约束条件:
- 无重叠:通过相对位置变量确保 (x_i + w_i ≤ x_j) 或 (x_j + w_j ≤ x_i)(水平方向),同理垂直方向。
- 边界限制:模块位于芯片边界内,软模块尺寸满足宽高比约束(如 (0.5 ≤ w_i/h_i ≤ 2))。
- 目标函数:最小化芯片面积(width × height),或加权线长。
关键步骤
- 建模:将布局问题转化为ILP,如最小化 (y^*)(芯片高度),约束模块坐标和尺寸(图3.8-3.11)。
- 求解:使用商业求解器(如GLPK)求解,处理固定模块旋转(图3.9)和软模块线性近似(图3.10)。
- 示例:四模块固定布局,通过ILP求解得到无重叠且面积最小的坐标(图3.8)。
优势与应用
- 支持复杂约束(固定模块、旋转、软模块),数学上保证局部最优。
- 局限:变量和约束数随模块数增长,适用于中小规模设计。
4. 序列对表示法(Sequence Pair Representation)
核心目标
高效表示非切片布局,通过两个序列编码模块间的相对位置,支持灵活的布局生成与优化。
核心思想
- 双序列编码:两个序列 (SP(S_1, S_2)),分别表示模块在水平和垂直方向的顺序。
- (S_1) 中模块顺序决定左右关系:若模块i在j左侧,则i在(S_1)中出现在j前。
- (S_2) 中模块顺序决定上下关系:若模块i在j下方,则i在(S_2)中出现在j前。
- 约束图构建:
- 水平约束图(HCG):节点为模块,边表示“左侧/右侧”关系,最长路径确定布局宽度。
- 垂直约束图(VCG):节点为模块,边表示“下方/上方”关系,最长路径确定布局高度。
关键步骤
- 序列生成:随机生成合法序列对(无冲突的相对顺序)。
- 布局计算:
- 从HCG计算每个模块的x坐标(源点到节点的最长路径),VCG计算y坐标(图3.14)。
- 示例:序列对 (SP1=(17452638, 84725361)) 对应的HCG和VCG最长路径分别为11和15,确定布局宽度11、高度15(图3.15)。
- 局部搜索:交换序列中的模块对(如M1/M2操作),重新计算约束图,优化面积(图3.16-3.19)。
优势与应用
- 唯一表示非切片布局,支持复杂模块排列,适用于模拟退火等全局优化。
- 广泛用于现代布局工具(如Parquet),平衡灵活性与计算效率。
5. 算法对比与总结
算法 | 布局类型 | 优化目标 | 模块支持 | 关键技术 | 典型示例 |
---|---|---|---|---|---|
Stockmeyer | 切片布局 | 面积(方向优化) | 硬模块(固定尺寸) | 切片树遍历、尺寸合并 | 图3.1-3.2(旋转优化后面积117) |
NPE | 切片布局 | 面积/线长 | 硬模块 | 三种移动操作、模拟退火 | 图3.7(M1/M2/M3调整布局) |
ILP-based | 混合(软/硬模块) | 面积/约束满足 | 软模块(可变尺寸) | 整数线性规划、松弛近似 | 图3.8-3.11(含旋转和软模块) |
Sequence Pair | 非切片布局 | 面积/线长 | 硬模块 | 双序列约束图、最长路径计算 | 图3.15-3.19(非切片布局) |
核心价值
- 切片布局:Stockmeyer和NPE适用于结构化切割,适合标准单元设计,面积优化高效。
- 非切片布局:Sequence Pair提供灵活表示,支持任意模块排列,适合复杂芯片(如包含大硬核的设计)。
- 约束处理:ILP算法通过数学建模处理复杂约束(旋转、软模块),但计算成本较高。
第三章的算法覆盖了从传统切片布局到现代非切片布局的核心方法,为后续布局(Placement)和布线(Routing)提供了基础的结构规划,是VLSI物理设计中平衡面积、性能与约束的关键环节。