【EDA】EDA中聚类(Clustering)和划分(Partitioning)的应用场景
在VLSI物理设计自动化中,聚类(Clustering)和划分(Partitioning)是两个互补但目标和应用场景截然不同的关键步骤,其核心区别如下:
一、应用阶段与核心目标
1. 聚类(Clustering)的应用场景
- 预处理阶段:作为物理设计流程的前端预处理,用于简化复杂电路结构,为后续划分、布局、布线提供更高效的输入。
- 典型场景:
- 大规模电路降阶:例如,在多水平划分(Multi-Level Partitioning)中,先通过聚类(如Hyperedge Coarsening)将数千个门合并为数百个簇,减少划分算法的计算复杂度(如hMetis算法的粗化阶段)。
- FPGA逻辑映射:FlowMap算法将布尔网络聚类为K输入LUT(Look-Up Table),满足FPGA的引脚约束(如3输入LUT),同时优化延迟(图1.6-1.15)。
- 时序优化预处理:Rajaraman-Wong算法通过延迟优化聚类,确保簇级网络的最长路径延迟最小化,为后续时序驱动布局提供基础(图1.1-1.5)。
- 典型场景:
- 目标电路类型:
- 适用于组合电路或时序电路的逻辑分组,不要求分区平衡,重点在于减少跨簇连接或优化局部延迟。
2. 划分(Partitioning)的应用场景
- 分区分割阶段:作为物理设计流程的中间关键步骤,将电路划分为平衡的子电路,直接为布局(Placement)、布线(Routing)或多芯片/多FPGA分配提供结构化分区。
- 典型场景:
- 芯片布局分区:Kernighan-Lin(KL)算法将电路二分,确保两个分区面积相近,割集最小,便于后续布局时减少跨区连线(图2.1-2.4)。
- 多芯片系统设计:Fiduccia-Mattheyses(FM)算法处理大规模电路,将其划分为4-8个分区,满足不同芯片的资源分配(如面积、I/O约束)。
- 时序驱动划分:EIG算法通过谱方法(Spectral Partitioning)最小化Ratio Cut,平衡割集和分区大小,同时考虑关键路径延迟(图2.16-2.21)。
- 典型场景:
- 目标电路类型:
- 适用于所有规模电路的分块,必须满足分区大小平衡(如面积相差≤10%),直接影响后续布局的均匀性和布线拥塞。
二、技术驱动的差异化应用
1. 聚类的核心技术驱动场景
- 延迟优化:
- 针对高性能电路(如处理器关键路径),通过Rajaraman-Wong算法聚类,限制簇间延迟(图1.3),确保信号传播路径最短。
- 应用于ASIC设计的前端逻辑优化,减少寄存器传输级(RTL)到门级网表的时序违规。
- 资源约束适配:
- FPGA设计中,FlowMap算法将逻辑门聚类为3/4输入LUT,匹配硬件资源,同时最小化LUT级网络的延迟(图1.15)。
- 处理**软模块(Soft Modules)**时,通过聚类动态调整模块大小,为后续布局提供灵活的块级单元。
2. 划分的核心技术驱动场景
- 割集最小化:
- KL算法通过交换节点对,逐步减少跨分区连线(割集),适用于标准单元布局,降低全局布线难度(图2.2-2.4)。
- FM算法利用桶结构高效计算节点移动增益,处理百万门级电路的二分/多划分,如片上系统(SoC)的功能模块划分(图2.5-2.15)。
- 平衡与约束满足:
- 多水平划分(如hMetis)结合粗化-划分-细化流程,确保分区面积平衡(如50%±5%),满足硬件实现的负载均衡(图1.16-1.19)。
- 处理**硬模块(Hard Modules)**时,通过FBB算法的网络流模型,强制固定模块位于特定分区,同时最小化割集(图2.23-2.29)。
三、典型工具与算法对比
场景 | 聚类(代表算法) | 划分(代表算法) |
---|---|---|
FPGA逻辑映射 | FlowMap(约束:K输入LUT引脚数,图1.6-1.15) | 无直接对应,划分在FPGA布局阶段处理资源分配 |
大规模电路预处理 | 多水平粗化(Hyperedge Coarsening,图1.16-1.19) | hMetis/Kway(多水平划分,图2.16-2.21) |
时序驱动优化 | Rajaraman-Wong(延迟模型,图1.1-1.5) | EIG算法(Ratio Cut,兼顾割集和延迟,图2.16-2.21) |
标准单元布局准备 | 无直接步骤,聚类可作为粗化预处理 | KL/FM算法(面积平衡,图2.1-2.4, 2.5-2.15) |
多芯片/多FPGA分配 | 无直接步骤,依赖簇级网络简化 | FBB算法(网络流模型,处理固定分区约束,图2.23-2.29) |
四、核心差异总结
-
角色定位:
- 聚类是**“化简者”**:将复杂电路分组为簇,减少后续步骤的输入规模,优化局部指标(如延迟、引脚数)。
- 划分是**“分割者”**:将电路划分为平衡分区,直接决定后续布局的均匀性和布线的跨区成本。
-
约束重点:
- 聚类:簇大小、外部连接数、延迟模型,不要求分区平衡。
- 划分:严格面积/节点数平衡(如二分要求50%±5%),割集最小化或时序约束。
-
输出形态:
- 聚类输出簇级网表(可能含节点复制,如FlowMap的LUT级网络,图1.15)。
- 划分输出分区列表(每个节点属于唯一分区,如KL算法的二分结果,图2.4)。
-
典型流程配合:
- 大规模设计中,先通过聚类(如粗化)减少节点数,再用划分算法(如FM)进行平衡分割,最后布局布线(如TimberWolf算法的多水平流程)。
五、总结
- 聚类适用于逻辑优化、资源适配、预处理降阶,是“自底向上”的分组过程,目标是简化问题规模或满足特定约束(如FPGA引脚数)。
- 划分适用于分区分割、平衡资源分配、割集优化,是“自顶向下”的结构化过程,直接为布局布线提供可实施的分区方案。
两者在VLSI设计中缺一不可:聚类为划分提供高效的输入,划分确保后续物理实现的均衡性,共同支撑从逻辑设计到物理实现的全流程优化。