Routing¶
Abstract
- Introduction
- Routing Algorithms
- Maze Routers
- Routing in Practice
Introduction¶
- The Problem
- scale: 有上千个 macro,上百万的 gates 和 wires,而我们要将他们都连接起来。
- geometric complexity: 在布线过程中,通常使用 grid 作为基本的出发点。但是在纳米尺度上,几何规则变得非常复杂。此外,集成电路中通常有多个布线层,每个层的“成本”(如制造难度、电阻、电容等)都不同,这增加了布线的复杂性。
- electric complexity: 除了连接所有的线以外,还要让 delay 尽可能小,以及电线之间的相互作用(cross-talk 串扰)尽可能小。
- Definition
- Problem: 给定的 placement 和固定的 meta layers,找到一个有效的 horizontal & vertical wires 模式,以连接所有 nets 的端点。
- Input: cell 的位置,netlist,网表则列出了所有需要连接的端点组合。
- Output: net 的几何布局,即每个 net 在芯片上的实际布线图案,连接了各个标准单元。
- Two-step process: Global routing and detailed routing.
- Objective: 100% connectivity,以及最小 area 和 wirelength。
- Constraint: 布线层数、时序、设计规则、串扰、工艺变化。
Routing Algorithms¶
-
Grid Assumption
- layout 是一个规则的方形网格。
- A legal wire is a set of connected grid cells through unobstructed cells.
- Obstacles 障碍物标记在网格中的某些单元。
- 导线只能在网格的垂直和水平方向上走线(Manhattan Routing)。
Maze Routers¶
- Strategy: 一次布线一个 net,为当前 net 找到最佳的布线路径。
- Problems: 早期布线的 net 可能会阻挡后来 net 的路径,对一个 net 的最优选择可能会阻塞其他 net。
-
Idea: Expand => Backtrace => Cleanup
-
Expand: 从源点到目标点,以四个基本方向(上、下、左、右)扩展,寻找可行路径。通常用 BFS 实现。
- 从源点开始,寻找所有与源点相邻的、可达的单元格(即没有被障碍物占据的单元格)。以这些单元格为新的起点,继续寻找它们相邻的可达单元格,如此类推,不断扩展。这个过程一直持续,直到达到目标点。
- We approach the target with a “wavefront”.
Expand
这里只需要 6 步即可从 S 到达 T。
-
Backtrace: 回溯是指从目标点开始,沿着路径长度递减的顺序反向追踪。这样做可以标记出一条到目标点的最短路径。
- 通常情况下,可能存在多条同样长度的最短路径,这时可以采用优化策略来选择最佳路径。例如,可以根据路径的直线性、拐角数量或与其他网络的干扰程度来决定。
-
Cleanup: 在确认了布线路径之后,移除所有为了寻找路径而设置的临时标记,只保留最终的布线路径。
- 假设我们在回溯时启发式地选择了一条路径,我们要将这条从源点到目标点的网络路径标记为障碍物。其他网络进行布线时,就不会考虑已经占用过的路径。
Backtrace & Cleanup
-
-
Blockages: Just “go around” them!
Blockages
-
Multi-Point Net
- 有时一个 net 有多个目标点(即 fanout>1),即一个 S 对应多个 T。
- 使用 maze routing algorithm 找到从源点到最近目标点的路径。这里的目标点是最近的目标点,而不是所有。随后进行重新标记,我们将路径上所有的单元格重新标记为 sources,然后重新运行 maze router,同时使用所有源点。重复运行知道连接所有目标点。
- 因为一条 wire 上电势相同,所以可以将路径上的所有点视为源点。
- 这样得到的结果不一定最优,但是是一个较好的解(Steiner Tree)。
Multi-Point Net
-
Multi-Layer Routing
- Idea: one grid for each layer, Each grid box can contain one via, New expansion direction – up/down.
Multi-Layer Routing
这里可以看到,我们可以在 via 处切换层,随后在另一个 via 切回来,这样的 cost 更低。
-
Non-Uniform Grid Costs
- via 的电阻通常较高,我们应该尽可能的在同一层布线。同时我们也希望每层的线都保持同一方向(如水平、竖直),有助于减少导线之间的交叉和干扰。
- 因此我们对 turn 或者 via 的 cost 进行调整,对此类操作进行惩罚,以鼓励更直接的布线方式。
Non-Uniform Grid Costs
这里我们假设 metal1 水平方向布线,metal2 竖直方向布线,布线方向错误或者通过 via 的 cost 都为 10。
Implementation¶
- Grids are huge.
- 实现这样的布线算法需要高效的算法和数据结构。对于如此巨大的网格,我们需要一种低成本的表现形式来处理这个问题。
- e.g., 一个 1cm x 1cm 的芯片,100 纳米的轨迹,10 个布线层,总共 1000 亿个网格单元。
- low cost representation
- Only store the wavefront.
- Remember which cells have been reached, at what cost, and from which direction.
- Use Dijkstra’s algorithm to find the cheapest cell first.
- Store data in a heap.
- 同时我们还需要使用一些启发式的算法,决定先处理哪些 net,沿哪个方向,如何处理 fixing 问题等等。
-
Divide and Conquer
-
先 Global Routing 再 Detailed Routing。我们将一个芯片分成 big, coarse regions,这个大格子我们叫做 GBOX/GCell。Global Routing 基于大格子先粗略确定每个格子到每个格子的入口和出口。
-
完成以后再对格子内部的连线确定细节,这一步叫做 Detailed Routing。
-
Routing in Practice¶
-
Layer Stacks: Meta stacks are changing and growing.
- 对于早期的工艺,我们可以看到其尽管有很多层,但最小间距和最小宽度保持一致。
- 随着工艺的推进,我们需要 higher thicker 的金属层,从而减少 RC 值并提高更好的电源布线。
- 较低的金属层主要用于局部互连,中间层可能用于 clock 或者更长的全局布线,顶层主要用于电源连接。
-
Global Route
- 全局布线首先将芯片的布局划分为一系列的 GCell。每个 GCell 包含了一定数量的布线资源,如 wire tracks 导线轨道。在每个布线层上,每个 GCell大约包含 10 个导线轨道。这些轨道用于连接芯片上的不同模块。
- 全局布线的目的是执行快速的网格布线,也可以用来 trial route。
- 在完成 Gloabl Route 之后,可以使用 congestion map 展示较高拥塞的区域。然后就要进行布局规划的迭代过程,针对这些区域进行修正。
-
Detailed Route
- Assign nets to tracks
- Lay down wires
- Connect pins to nets
- Solve DRC violations
- Reduce cross couple cap
- Apply special routing rules
Example
-
Timing-Driven Routing
- 主要是尝试对 critical paths 进行优化,如果系统仍然存在时序问题,通过布线的方式可以进行一定的优化,对关键路径采用最短的路径,以减少延迟。
- 我们需要采用权重的方式,给不同的 net 分配不同的重要性,工具优先对其进行布线,尽可能不要经过 Via,不要拐弯。
Signal Integrity (SI)¶
-
Signal Integrity during routing is synonymous with Crosstalk 串扰。
- A switching signal may affect a neighboring net,把切换信号的 net 为 aggressor,被影响的 net 为 victim。
-
可能带来两个影响:当 aggressor 和 victim 同方向变化时,Signal speed up;当 aggressor 和 victim 反方向变化时,Signal slow up。
-
SI Multi-Aggressor Timing Analysis
- Infinite Window Analysis,考虑所有可能的 transition,估计串扰可能带来的最大的 delay。但是随着工艺进步,间距降低,交叉面积增大,导致了极端情况的出现。
- Propagated Noise Analysis,为每个 aggressor 相对于 victim 创建一个时间上的 transition window。噪声只在干扰源的过渡窗口和受害线的敏感窗口重叠时才被考虑,这样可以更准确地确定由多个干扰源引起的最坏情况下的噪声尖峰。
-
Crosstalk Prevention
- Limit length of parallel nets
- Wire spreading
- Shield special nets
- Upsize driver or buffer
Design For Manufacturing (DFM)¶
-
During route, apply additional design for manufacturing (DFM) and/or design for yield (DFY) rules.
- Via Optimization
- via 电阻大,而且更容易内部出现缺陷。
- 因此我们可以使用 Post-Route Via Optimization,包括 incremental routing 来最小化使用的 vias,以及将单个 via 替换为 multi-cut vias。
-
Wire straightening
-
Wire spreading
- 线展开可以降低 capacitance,获得更好的 SI(减少串扰)。
- 更不容易受到短路或者开路的影响。
- Via Optimization