一种基于多策略优化的超大规模集成电路多层总体布线方法

文档序号:1846541 发布日期:2021-11-16 浏览:13次 >En<

阅读说明:本技术 一种基于多策略优化的超大规模集成电路多层总体布线方法 (Multi-strategy optimization-based ultra-large-scale integrated circuit multilayer overall wiring method ) 是由 刘耿耿 裴镇宇 郭文忠 郑筱媛 陈国龙 于 2021-06-30 设计创作,主要内容包括:本发明涉及一种基于多策略优化的超大规模集成电路多层总体布线方法,包括步骤S1:在预连接布线阶段,采用虚拟容量的动态调整策略对通道容量进行适当调整缩减;步骤S2:在全局考量下的布线重组阶段找到最拥挤的布线区域,采用布线子区域的自适应扩展策略对其进行自适应扩展,根据布线后的不同拥堵度,对应地调整扩大的范围和扩张速度;步骤S3:在布线时采用虚拟容量的动态调整策略对通道虚拟容量进行动态调整,对不同通道方向上的通道容量进行相互补充,及时补充剩余通道容量较小的布线通道;步骤S4:采用基于A*算法的启发式搜索策略通过A*算法进行启发式搜索和布线。本发明能够提高布线容量的利用率,平衡布线器的布线效率和全局搜索的压力。(The invention relates to a multi-strategy optimization-based VLSI (very large scale integration) multilayer overall wiring method, which comprises the following steps of S1: in the pre-connection wiring stage, a dynamic adjustment strategy of virtual capacity is adopted to properly adjust and reduce the channel capacity; step S2: finding the most crowded wiring area in the wiring recombination stage under the global consideration, adopting a self-adaptive expansion strategy of the wiring sub-area to perform self-adaptive expansion on the wiring sub-area, and correspondingly adjusting the expanded range and the expansion speed according to different congestion degrees after wiring; step S3: during wiring, a dynamic adjustment strategy of virtual capacity is adopted to dynamically adjust the virtual capacity of the channel, the channel capacities in different channel directions are mutually supplemented, and a wiring channel with smaller residual channel capacity is supplemented in time; step S4: and carrying out heuristic search and wiring through the A-algorithm by adopting a heuristic search strategy based on the A-algorithm. The invention can improve the utilization rate of the wiring capacity and balance the wiring efficiency of the wiring device and the pressure of global search.)

一种基于多策略优化的超大规模集成电路多层总体布线方法

技术领域

本发明涉及集成电路计算机辅助设计技术领域,特别是一种基于 多策略优化的超大规模集成电路多层总体布线方法。

背景技术

芯片设计是世界上细微且宏大的一项工程,它将数百亿个允许或 阻挡电流通过的“开关”集成到仅有指甲盖大小的芯片里。从微米级 到纳米级,是人类不断攀登的工程极致。在芯片设计中,超大规模集 成电路是设计工艺的关键,它可用于制造体积小、质量轻、耗能低但 功能丰富且可靠性高的电子设备。起初的芯片电路集成度不高,开发 者可以依靠手工绘制电路,而现在动辄包含几亿甚至数百亿个晶体管 的芯片,如若依然依赖手工绘制,难免会导致许多问题和错误发生。 到了1986年,一款电子设计自动化(ElectronicDesign Automation, EDA)工具——Design Compiler诞生,使开发者们使用代码描述电路得到实现,由此大幅提高了芯片制造在抽象设计这一领域的效率,推 动了复杂度更高的芯片类型形成。

随着芯片工艺技术的不断发展,将代码转换成逻辑电路这一过程 所需要的设计约束也不再仅限于时序、功耗、面积等方面,还包含了 基础电路物理版图和技术工具的创新和进步。开发者们必须做好布局 和布线工作,也就是确定好晶体管的位置和形态,以及晶体管之间的 连接方式。在设计布局和布线时,需要确保各电路连接的准确性,而 且要符合制造工艺的要求,即设计规则和约束等。此外还需要注意对 电路的时序、功耗、面积等指标进行优化,找到一个平衡点从而寻求 最优解。因此,VLSI对其设计流程的要求逐步增高,对布线技术的 精度也更加的苛刻。面临随之而来的机遇和挑战,VLSI设计中的布 线过程在设备制造中便显得尤为重要。布线结果直接影响了芯片的可 集成度和消耗成本,这也是工业生产中较为注重的。因此,相关产业 内的不少生产商和研究学者们都致力于不断优化布线流程,提高设计 环节效率,打造高质量布线成果,以期制造出功能更加强大的芯片。

为了更好地解决VLSI设计中庞大复杂的布线问题,在布线过程 中一般分成两个阶段进行处理,分别是总体布线和详细布线。在总体 布线中,先将可以布线的区域划分为一些布线单元。针对划分后的布 线单元进行初步布线连接,生成一个整体的布线方案。有了全局的布 线方案后,再解决每一个布线单元内的布线问题,针对布线单元内的 具体约束进行详细布线。总体布线为接下来的详细布线过程极大减少 了布线的复杂性和冗余程度,从而更快更高质量地完成布线设计。良 好的总体布线有利于提高整体布线的高效性,从而有助于运用集成电 路的芯片高质量生产,由此可见,总体布线在整个布线过程中举足轻 重。

发明内容

有鉴于此,本发明的目的是提供一种基于多策略优化的超大规模 集成电路多层总体布线方法,避免直接运用传统布线算法而导致过程 冗杂和布线结果陷入局部最优的问题。

本发明采用以下方案实现:一种基于多策略优化的超大规模集成 电路多层总体布线方法,包括以下步骤:

步骤S1:在预连接布线阶段,采用虚拟容量的动态调整策略对 通道容量进行适当调整缩减;即通过最小生成树算法将多端线网分解 成多个两端线网后,将布线通道水平和垂直两个方向上的虚拟容量缩 减为原来的1/2,剩余的45度方向和135度方向的通道容量保持不变; 在新的通道容量约束下对简单线网直接以X结构网格的走线方式连 接该两端线网;所述简单线网为两端线网所构成线段的斜率值为0,-1, +1或∞;

步骤S2:在全局考量下的布线重组阶段找到最拥挤的布线区域, 然后采用布线子区域的自适应扩展策略对其进行自适应扩展,根据布 线后的不同拥堵度,对应地调整扩大的范围和扩张速度;

步骤S3:在布线时采用虚拟容量的动态调整策略对通道虚拟容 量进行动态调整,对不同通道方向上的通道容量进行相互补充,即水 平方向与45度方向动态调整,垂直方向和135度方向动态调整,及 时补充剩余通道容量即水平方向与45度方向之间对比,垂直方向与 135度方向对比较小的布线通道;

步骤S4:采用基于A*算法的启发式搜索策略通过A*算法进行启 发式搜索和布线。

进一步地,所述步骤S1具体包括以下步骤:

步骤S11:输入各个线网的引脚位置以及布线区域的通道容量以 及引脚对应的布线层即输入benchmark给定的数据;

步骤S12:判断线网的引脚数是否等于2,若等于2则判断两引 脚之间的位置关系是否满足直角结构,若满足且所在布线区域还有可 用的布线资源,则连接这两个引脚,若大于2则继续执行步骤S13;

步骤S13:通过粒子群算法生成每个线网的X结构斯坦纳树;

步骤S14:通过最小生成树算法将多端线网分解成多个两端线网, 并记录所有两引脚线网;

步骤S15:设定预连接阶段的通道容量约束条件即将X结构中 的曼哈顿方向上的通道容量缩减为原来的一半,45度方向和135度 方向的通道容量保持不变;

步骤S16:在不违反所设定的通道容量约束下,对所有的两引脚 线网进行预连接。

进一步地,步骤S3中所述对不同通道方向上的通道容量进行 相互补充需要满足约束条件,约束条件为:

约束条件如公式(1)和公式(2)所示:

d1=d1+C,d2=d2-C;d1<C&&d2>2C (1)

d1=d1-C,d2=d2+C;d1>2C&&d2<C (2)

其中,C是预设的通道容量阈值常数;d1表示水平或垂直方向 上剩余的通道容量;d2表示45度或135度方向上剩余的通道容量;

由公式可知,只有当剩余通道容量小于阈值且另一方向的通道容 量大于两倍的阈值时,才会触发该策略。

进一步地,所述步骤S2具体包括以下步骤:

步骤S21:寻找当前布线区域内最拥塞的布线单元;

步骤S22:对最拥塞布线子区域进行自适应扩张,并记录该布线 子区域中未连接的两引脚线网;所述自适应扩张的扩张速度是由当前 布线区域内的两引脚线网数量决定的;

步骤S23:在扩大后的布线子区域内,针对未连接的引脚线网, 运用粒子群算法和A*算法布通当前子区域内给定的线网;

步骤S24:重复步骤S22、步骤S23直到布线子区域扩大到整个 总体布线区域。

进一步地,步骤S21中所述寻找当前布线区域内最拥塞的布线单 元的具体内容为:通过遍历整个总体布线区域,去对比寻找出最拥塞 的布线单元作为布线子区域;在寻找过程中,将每次选中的子区域和 当前已记录下最拥塞区域的拥塞程度进行比较,若选中的拥塞程度更 高,则更新当前已记录的最拥塞区域;若程度相同,则判断两区域各 自在总体布线区域的位置,选择更靠近中心的位置为最拥塞区域;否 则保持记录不变;

判断布线区域拥塞程度的指标,是该区域内累计使用的通道容量; 对于布线区域的一个布线单元,计算该节点水平、45度、垂直以及 135度四个方向的通道容量;因此,拥塞程度计算方式如下所示:

其中,N代表当前的布线单元;d(i)代表布线单元N在方向i的通道 容量使用数。

进一步地,所述步骤S22中所述对最拥塞布线子区域进行自适应 扩张的具体内容为:

当布线子区域内的两引脚线网数量小于50时,布线子区域扩展 的大小设置为3;当布线子区域内的两引脚线网数大于等于50且小 于100时,布线子区域扩展的大小设置为2;当布线子区域内的两引 脚线网数大于等于100且小于200时,布线子区域扩展的大小设置为 1。

进一步地,所述步骤S23中先运用粒子群算法进行整体寻优,用 一个集合extend_unconnect来储存未连接的两引脚线网;判断该集 合是否为空,若为空,则说明粒子群算法有效地连接全部的两引脚线 网;若非空,则粒子群算法无法有效连接全部的两引脚线网,则剩下 的两引脚线网使用A*算法继续进行。

进一步地,所述步骤S4中

A*算法的代价函数如公式(4)所示:

F(x)=G(x)+H(X) (4)

其中,F(x)表示G中从起点出发经过节点x最后到终点的代价估计, G(x)表示G中从起点到达节点x的实际移动代价,H(x)表示G中从节 点x到达终点的估算成本代价;

带权值的起点与当前点的曼哈顿距离作为选择实际代价G(t),如 公式(5)所示;选择一个当前点与终点的X结构路径作为启发函数H(t), 如公式(6)所示;

其中,w是权重;stnx和stny分别代表是的起点到当前节点t的 水平方向和垂直方向的距离;ntex和ntey分别代表是的起点到当前节 点t的水平方向和垂直方向的距离;

所述A*算法的具体实现为:利用OPEN表和CLOSE表;OPEN 表是一个待检查的开放列表,存储在搜索过程中需要被检测的节点信 息;CLOSE表是一个封闭列表,存储已经加入到最短路径中的节点, 这些节点不需要被再次关注;算法开始时,将待连接的两端线网的两 个引脚分别设置成当前节点与目标节点,当前节点作为起点;搜索当 前节点的邻居节点,若无法到达该邻居节点,即路径不可行,则搜索 当前节点的下一个邻居节点;若路径可行,则计算该邻居节点的F(x) 值并将该邻居点加入OPEN表,直至所有邻居节点搜索完毕;接着将 当前节点从OPEN表中删除,放入CLOSE表;取OPEN表中F(x) 值最小的点作为当前节点,判断当前节点是否是目标节点,若不是, 则重复上述搜索过程;若是,则算法停止。

与现有技术相比,本发明具有以下有益效果:有效地避免了搜索 过程冗杂和布线结果陷入局部最优的问题,更加灵活地应对不同的布 线环境,并且进一步缩短总体布线总线长。

附图说明

图1为本发明实施例的曼哈顿结构和X结构的区别图,其中, 图1(a)为曼哈顿结构设计图;图1(b)为X结构设计图

图2为本发明实施例的X结构的计算方式图,其中,图2(a) 为位于同一水平线,图2(b)为位于同一垂直线,图2(c)为垂直 距离大于水平距离,图2(d)为垂直距离等于水平距离图2,图2(e) 为垂直距离小于水平距离。

图3为本发明实施例的流程图。

图4为本发明实施例的A*算法流程图。

图5为本发明实施例的A*不同路径的选择图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一 步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本 申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式, 而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除 非上下文另外明确指出,否则单数形式也意图包括复数形式,此外, 还应当理解的是,当在本说明书中使用术语“包含”和/或“包括” 时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

本实施例提供一种基于多策略优化的超大规模集成电路多层总 体布线方法,包括以下步骤:

步骤S1:在预连接布线阶段,采用虚拟容量的动态调整策略对 通道容量进行适当调整缩减;即通过最小生成树算法将多端线网分解 成多个两端线网后,将布线通道水平和垂直两个方向上的虚拟容量缩 减为原来的1/2,剩余的45度方向和135度方向的通道容量保持不变; 在新的通道容量约束下对简单线网直接以X结构网格的走线方式连 接该两端线网;所述简单线网为两端线网所构成线段的斜率值为0,-1, +1或∞;(X结构网格是由水平线、垂直线、45°的对角线、135° 的对角线组成的)

步骤S2:在全局考量下的布线重组阶段找到最拥挤的布线区域, 然后采用布线子区域的自适应扩展策略对其进行自适应扩展,根据布 线后的不同拥堵度,对应地调整扩大的范围和扩张速度;

步骤S3:在布线时采用虚拟容量的动态调整策略对通道虚拟容 量进行动态调整,对不同通道方向上的通道容量进行相互补充,即水 平方向与45度方向动态调整,垂直方向和135度方向动态调整,及 时补充剩余通道容量即水平方向与45度方向之间对比,垂直方向与 135度方向对比较小的布线通道;

步骤S4:采用基于A*算法的启发式搜索策略通过A*算法进行启 发式搜索和布线。

在本实施例中,所述步骤S1具体包括以下步骤:

步骤S11:输入各个线网的引脚位置以及布线区域的通道容量以 及引脚对应的布线层即输入benchmark给定的数据;

步骤S12:判断线网的引脚数是否等于2,若等于2则判断两引 脚之间的位置关系是否满足直角结构,若满足且所在布线区域还有可 用的布线资源,则连接这两个引脚,若大于2则继续执行步骤S13;

步骤S13:通过粒子群算法生成每个线网的X结构斯坦纳树;

步骤S14:通过最小生成树算法将多端线网分解成多个两端线网, 并记录所有两引脚线网;

步骤S15:设定预连接阶段的通道容量约束条件即将X结构中 的曼哈顿方向上的通道容量缩减为原来的一半,45度方向和135度 方向的通道容量保持不变;

步骤S16:在不违反所设定的通道容量约束下,对所有的两引脚 线网进行预连接。

在本实施例中,步骤S3中所述对不同通道方向上的通道容量 进行相互补充需要满足约束条件,约束条件为:

约束条件如公式(1)和公式(2)所示:

d1=d1+C,d2=d2-C;d1<C&&d2>2C (1)

d1=d1-C,d2=d2+C;d1>2C&&d2<C (2)

其中,C是预设的通道容量阈值常数;d1表示水平或垂直方向 上剩余的通道容量;d2表示45度或135度方向上剩余的通道容量;

由公式可知,只有当剩余通道容量小于阈值且另一方向的通道容 量大于两倍的阈值时,才会触发该策略。

在本实施例中,所述步骤S2具体包括以下步骤:

步骤S21:寻找当前布线区域内最拥塞的布线单元;

步骤S22:对最拥塞布线子区域进行自适应扩张,并记录该布线 子区域中未连接的两引脚线网;所述自适应扩张的扩张速度是由当前 布线区域内的两引脚线网数量决定的;

步骤S23:在扩大后的布线子区域内,针对未连接的引脚线网, 运用粒子群算法和A*算法布通当前子区域内给定的线网;

步骤S24:重复步骤S22、步骤S23直到布线子区域扩大到整个 总体布线区域。

在本实施例中,步骤S21中所述寻找当前布线区域内最拥塞的布 线单元的具体内容为:通过遍历整个总体布线区域,去对比寻找出最 拥塞的布线单元作为布线子区域;在寻找过程中,将每次选中的子区 域和当前已记录下最拥塞区域的拥塞程度进行比较,若选中的拥塞程 度更高,则更新当前已记录的最拥塞区域;若程度相同,则判断两区 域各自在总体布线区域的位置,选择更靠近中心的位置为最拥塞区域; 否则保持记录不变;

判断布线区域拥塞程度的指标,是该区域内累计使用的通道容量; 对于布线区域的一个布线单元,计算该节点水平、45度、垂直以及 135度四个方向的通道容量;因此,拥塞程度计算方式如下所示:

其中,N代表当前的布线单元;d(i)代表布线单元N在方向i的通道 容量使用数。

在本实施例中,所述步骤S22中所述对最拥塞布线子区域进行自 适应扩张的具体内容为:

当布线子区域内的两引脚线网数量小于50时,布线子区域扩展 的大小设置为3;当布线子区域内的两引脚线网数大于等于50且小 于100时,布线子区域扩展的大小设置为2;当布线子区域内的两引 脚线网数大于等于100且小于200时,布线子区域扩展的大小设置为 1。

在本实施例中,所述步骤S23中先运用粒子群算法进行整体寻优, 若粒子群算法无法有效连接全部的两引脚线网,则剩下的两引脚线网 使用A*算法继续进行。

在本实施例中,所述步骤S4中

A*算法的代价函数如公式(4)所示:

F(x)=G(x)+H(X) (4)

其中,F(x)表示G中从起点出发经过节点x最后到终点的代价估计, G(x)表示G中从起点到达节点x的实际移动代价,H(x)表示G中从节 点x到达终点的估算成本代价;

带权值的起点与当前点的曼哈顿距离作为选择实际代价G(t),如 公式(5)所示;选择一个当前点与终点的X结构路径作为启发函数H(t), 如公式(6)所示;

其中,w是权重;stnx和stny分别代表是的起点到当前节点t的 水平方向和垂直方向的距离;ntex和ntey分别代表是的起点到当前节 点t的水平方向和垂直方向的距离;

所述A*算法的具体实现为:利用OPEN表和CLOSE表;OPEN 表是一个待检查的开放列表,存储在搜索过程中需要被检测的节点信 息;CLOSE表是一个封闭列表,存储已经加入到最短路径中的节点, 这些节点不需要被再次关注;算法开始时,将待连接的两端线网的两 个引脚分别设置成当前节点与目标节点,当前节点作为起点;搜索当 前节点的邻居节点,若无法到达该邻居节点,即路径不可行,则搜索 当前节点的下一个邻居节点;若路径可行,则计算该邻居节点的F(x) 值并将该邻居点加入OPEN表,直至所有邻居节点搜索完毕;接着将 当前节点从OPEN表中删除,放入CLOSE表;取OPEN表中F(x) 值最小的点作为当前节点,判断当前节点是否是目标节点,若不是, 则重复上述搜索过程;若是,则算法停止。

布线是超大规模集成电路(Very Large Scale Integration,VLSI)物 理设计中的关键阶段之一。在复杂的布线过程中,总体布线的结果直 接影响了布线质量。以往的总体布线算法大多是基于曼哈顿结构进行 的,但曼哈顿结构在布线结果的线长优化上存在许多限制。相比于曼 哈顿结构,X结构在绕线方向上进行了扩展,它多出了45°和135°两 种绕线方向。同时,X结构的提出使得总体布线更加复杂。本发明提 出了一种基于多策略优化的超大规模集成电路多层总体布线器,称为 MS-XGRouter。本实施例提出了三种强化策略,在不同布线阶段进行 对其布线效果进行加强。本实施例所提出的三个策略如下:(1)为了提高布线容量的利用率,提出虚拟容量的动态调整策略,对初始阶段 中的水平和垂直方向的布线资源进行限制,同时在布线重组阶段对布 线资源较少的通道进行补充;(2)为了更好地平衡布线器的布线效率 和全局搜索的压力,提出布线子区域的自适应扩展策略,根据布线区 域内两引脚数来控制扩张速度,减小粒子群优化算法(Particle SwarmOptimization,PSO)的寻优压力;(3)为了避免布线结果陷入局部最优, 提出了基于A*算法的启发式搜索策略,利用启发函数寻找更合适的 布线路径。

在本实施例中:

总体布线模型:

在总体布线设计中,线长是考量布线结果的一大重要指标,因此 总体布线问题中非常重要的就是为每个线网寻找到给定布线图中的 最短路径。总体布线问题可描述为:对于线网的集合N={n1,n2,...,nk}, 其中线网nk由若干个引脚组成且满足1≤k≤n,将线网集合N投影至 由引脚集合V和边集合E组成的网格图G(V,E),在G(V,E)中对给定 线网进行布线。在G(V,E)中,对于每个线网,总体布线需要找到一 棵生成树,该生成树将线网中所有引脚对应的顶点连接起来。

在保证所有线网的连通前提下,为了使芯片达到最好的可布线性, 布线结果应当使得所有边的总溢出数最小,且所需要的布线总线长也 尽可能少。与传统的曼哈顿模型不同的地方是,除了水平方向和竖直 方向,X结构在同样布线区域内对于每个可布线连接点多出了两种布 线方向,即45度方向和135度方向,如图1所示。这使得在X结构 下的布线设计变得更加复杂,但也显著提高了其物理性能,在相同区 域内提供更多的路径选择和更短的布线路径。

假设X结构网格的每个单元边长为a,则对于同一个两引脚线网 中引脚A与引脚B点之间的连接,在曼哈顿模型中,该两引脚线网 的最短路径长度为2a,如图1(a)所示。在X结构下,该两引脚线网 的最短路径长度为如图1(b)所示。

图2给出了同一平面内两引脚Pi(Xi,Yi)和Pj(Xj,Yj)间的五种位置 关系,针对这五种位置关系,分别对两者间的距离d(Pi,Pj)采用下述 公式进行计算。

(1)当Xi=Xj,Yi!=Yj时,d(Pi,Pj)=|Yi-Yj|;

(2)当Xi!=Xj,Yi=Yj时,d(Pi,Pj)=|Xi-Xj|;

(3)当Xi!=Xj,Yi!=Yj时,分别有以下三种情况:

(a)若|Xi-Xj|<|Yi-Yj|,

(b)若|Xi-Xj|=|Yi-Yj|,

(c)若|Xi-Xj|>|Yi-Yj|,

2.MS-XGRouter整体流程概述:

如图3所示,基于X结构多层工艺下的MS-XGRouter总体布线 算法主要分为预连接阶段、全局考量下的布线重组阶段以及层分配阶 段。

布线开始时,先经过预连接阶段,主要工作是读取当前线网信息, 并对其作出分解和预先连接布线操作;接着经过全局考量下的布线重 组阶段,通过一系列算法,利用全局搜索能力和启发搜索等优势,对 选中的布线子区域进行自适应扩张和布线重组,实现线网布通;最后 在层分配阶段通过相应的调度策略,实现线网段在布线层上的合理分 配。本发明所提的三个优化策略在图3的MS-XGRouter布线算法整 体流程图中分别框出。

3.预连接阶段:

在预连接阶段,MS-XGRouter需要处理总体布线所需的线网信息, 并为每个线网构建拓扑结构,以得到初始布线结果。MS-XGRouter 算法主要流程设计如下:

(1)读取各个线网的引脚位置以及布线区域的通道容量等信息;

(2)生成每个线网的X结构斯坦纳树;

(3)对多引脚线网进行拆解,并记录所有两引脚线网;

(4)设定预连接阶段的通道容量约束条件,将X结构中的曼哈顿 方向上的通道容量缩减为原来的一半,45度方向和135度方向的通 道容量保持不变;

(5)在不违反所设定的通道容量约束下,对所有的两引脚线网进 行预连接。

值得注意的是,MS-XGRouter处理多引脚线网和两引脚线网的方 式是不同的。对于引脚数小于2的线网,MS-XGRouter既不需要构 建拓扑结构,也不需要对其线网分解。对于引脚数大于2的线网,则 需要。另外,MS-XGRouter会分别记录已连接的两引脚线网和未连 接的两引脚,用以后续阶段的布线。

4.全局考量下的布线重组阶段:

在全局考量下的布线重组阶段,MS-XGRouter基于布线区域的扩 展,使用多种布线算法线网布线重组。MS-XGRouter优先选择比较 拥塞的区域,记录其中需要连接的两引脚线网。最后先后使用粒子群 算法和A*算法对需要连接的两引脚线网进行连接。全局考量下的布 线重组阶段的算法主要流程设计如下:

(1)寻找当前布线区域内最拥塞的布线单元;

(2)对最拥塞布线子区域进行自适应扩张,并记录该布线子区域 中未连接的两引脚线网;

(3)在扩大后的布线子区域内,针对未连接的引脚线网,运用粒 子群算法和A*算法布通当前子区域内给定的线网。

(4)重复步骤(2)、步骤(3)直到布线子区域扩大到整个总体布线 区域。

步骤(2)中的扩张速度是由当前布线区域内的两引脚线网数量决 定的。步骤(3)中,对于子区域内的所有未连接的两引脚线网, MS-XGRouter先运用粒子群算法进行整体寻优。若粒子群算法无法 有效连接全部的两引脚线网,则剩下的两引脚线网使用A*算法继续 进行。

5.层分配阶段:

在总体布线过程中,本发明所使用的MS-XGRouter是基于多层工 艺下布线连接的算法,因此该阶段主要用于解决在布线过程中多个布 线层的分配和调度问题。

6.MS-XGRouter布线算法整体优化策略:

本实施例所提出的MS-XGRouter布线算法在ML-XGRouter基础 上进行改进。MS-XGRouter提出了以下三个方面的策略:(1)虚拟 容量的动态调整;(2)布线子区域的自适应扩展;(3)基于A*算法 的启发式搜索策略。通过三个优化策略的同时进行,达到一定的优化目标,提升总体布线效率和最终布线结果的一些重要指标,从而影响 芯片整体电路设计的可布性。

(1)(策略一)虚拟容量的动态调整策略:

策略一虚拟容量的动态调整策略提出的目的是提高布线容量的 利用率,从而尽可能地发挥X结构的优势。策略一主要通过两部分 对布线通道的虚拟容量进行动态调整和约束。第一部分是在预连接阶 段,布线算法流程在结束线网分解后,将布线通道水平和垂直两个方 向上的虚拟容量缩减为原来的1/2,剩余的45度方向和135度方向的 通道容量保持不变。MS-XGrouter这样改进的原因:原始的布线容量 在45度和135度与水平和垂直方向有显著的差异。一般而言,水平 和垂直方向上的容量远多于45度和135度。若在预连接阶段将45度 和135度方向的通道容量进行缩减,那么X结构在线长方面的优势 将被大大削弱。第二部分是在全局考量下的布线重组阶段,对不同通 道方向上的通道容量进行相互补充,即水平方向与45度方向动态调 整,垂直方向和135度方向动态调整,及时补充剩余通道容量较小的 布线通道。MS-XGRouter在此阶段进行通道容量的动态调整是为了 让两引脚线网连接时,可以选择当前最佳的路径。

在全局考量下的布线重组阶段中,通道容量的调整满足用户预设 定的约束条件。改约束条件如公式(1)和公式(2)所示。

d1=d1+C,d2=d2-C;d1<C&&d2>2C 公式(1)

d1=d1-C,d2=d2+C;d1>2C&&d2<C 公式(2)

其中,C是预设的通道容量阈值常数;d1表示水平或垂直方向上剩 余的通道容量;d2表示45度或135度方向上剩余的通道容量。

由公式可知,只有当剩余通道容量小于阈值且另一方向的通道容 量大于两倍的阈值时,才会触发该策略。

(2)(策略二)布线子区域的自适应扩展策略:

策略二主要针对在全局考量下的布线重组阶段,为算法流程的布 线区域扩张提出新的约束定义。

本发明通过遍历整个总体布线区域,去对比寻找出最拥塞的布线 单元作为布线子区域。在寻找过程中,将每次选中的子区域和当前已 记录下最拥塞区域的拥塞程度进行比较,若选中的拥塞程度更高,则 更新当前已记录的最拥塞区域;若程度相同,则判断两区域各自在总 体布线区域的位置,选择更靠近中心的位置为最拥塞区域;否则保持 记录不变。

判断布线区域拥塞程度的指标,是该区域内累计使用的通道容量。 值得注意的是,对于布线区域的一个布线单元,MS-XGRouter只计 算该节点水平、45度、垂直以及135度四个方向的通道容量。因此, 拥塞程度计算方式如下所示。

其中,N代表当前的布线单元;d(i)代表布线单元N在方向i的通道 容量使用数。

布线子区域的自适应扩展策略的基本思想是:扩张前,先判断当 前布线子区域内的两引脚线网数量满足的约束条件,调整相应条件下 的扩张速度。该算法布线子区域内的两引脚线网数目越多,则扩张的 速度也相应变慢;反之则越快。该算法可以更好地平衡总体布线效率 和全局搜索算法的压力,达到所期待的优化目标。

策略二布线子区域的自适应扩展的伪代码如下所示。假设Bound 是布线子区域到达边界的边数,d是布线子区域扩展的大小,twopins 记录布线子区域内两引脚线网。该算法停止的条件是布线子区域完全 覆盖整个布线区域。首先记录当前布线子区域内的两引脚线网,当布 线子区域内的两引脚线网数量小于50时,d设置为3。当布线子区域 内的两引脚线网数大于等于50且小于100时,d设置为2。当布线子 区域内的两引脚线网数大于等于100且小于200时,d设置为1。只 有当两引脚线网数量大于200时,MS-XGRouter会对其使用粒子群 算法和A*算法进行布线。这样做的原因是可以充分发挥粒子群算法 在全局寻优的优势,避免陷入部分最优的局面。同理,当粒子群算法 无法得到有效的布线路径时,A*算法可以利用自身的启发函数在整 个布线区域得到一个有效的布线结果。

正是综合利用粒子群算法和A*算法的各种优势,才使得 MS-XGrouter在全局考量下的布线重组阶段能尽可能地优化线长。

(3)(策略三)基于A*算法的启发式搜索策略:

在静态路网中,A*算法是一种常用的寻找最短路径的启发式搜索 算法。在总体布线网格图中,我们将需要每个连通的部分抽象为一个 个节点,并且可以通过一些函数计算出节点间连通的相关代价。在 A*算法中,综合考虑了当前节点的实际移动代价和估算成本代价, 通过反复对比选择出一条最适合的路径。

在A*算法中,路径的选择取决于代价函数的设置。通常情况下, A*算法的代价函数包含两部分,分别是实际路径代价和估计成本代 价。因此,A*算法的代价函数如公式(4)所示。

F(x)=G(x)+H(X) 公式(4)

其中,F(x)表示G中从起点出发经过节点x最后到终点的代价估计, G(x)表示G中从起点到达节点x的实际移动代价,H(x)表示G中从节 点x到达终点的估算成本代价。

这个过程通常也被称为试探法。这是由于H(x)其实是对剩余距离 的一种预估,并不是实际值,在路径连通过程可能存在许多影响代价 的因素,所以只有找到最终路径才能知道它的准确值。因此,H(x)也 被称为启发函数,它利用节点x到终点的信息,结合起点到节点x的 权重展开启发式搜索。如果信息越多或者约束条件越多,那么估价函 数F(x)就越好,这也是A*算法相较于广度优先搜索(Breadth First Search,BFS)算法的优势,因为在BFS算法中,其信息启发性H(x)=0。

在几何路网中,经常取两点之间的曼哈顿距离作为估计值。当实 际移动代价G(x)一定时,估价函数F(x)就会受到H(x)的制约和影响, 即节点越靠近终点,H(x)值越小,F(x)也相对更小,保证最短路径沿 着目标点方向搜索。假设节点x到达终点的最小代价为d(x),则对于 H(x)的选择有以下三种:(1)当H(x)<d(x)时,由于启发函数值较小, 启发性信息弱,搜索的范围大,搜索的节点数相对多,则搜索效率较 低,但可以得到一个最优解。(2)当H(x)=d(x)时,此时启发函数值与 最小代价相同,则可以保证搜索按照最短路径进行,此时搜索效率最 高。(3)当H(x)>d(x)时,由于启发函数值较大,启发性信息强,搜索 的范围小,搜索的节点数相对少,则搜索效率较高,但不一定能够得 到最优解。

但同样存在另一个算法运行的效率问题,即H(x)启发信息越多时, 计算量也随之增大,耗费的时间也会相应增多,由此增加了布线算法 压力。因此,这里就有一个权衡问题,也就是采取一个适当的H(x) 启发信息量,来保证算法搜索路径的准确性和高效性。

与传统的A*算法的启发式函数不同,MS-XGRouter带权值的起 点与当前点的曼哈顿距离作为选择实际代价G(t),如公式(5)所示。选 择一个当前点与终点的X结构路径作为启发函数H(t),如公式(6)所 示。

其中,w是权重;stnx和stny分别代表是的起点到当前节点t的水平 方向和垂直方向的距离;ntex和ntey分别代表是的起点到当前节点t 的水平方向和垂直方向的距离。

对于A*算法的具体实现,主要利用了两张表:OPEN表和CLOSE 表。OPEN表是一个待检查的开放列表,存储在搜索过程中需要被检 测的节点信息;CLOSE表是一个封闭列表,存储那些已经加入到最 短路径中的节点,这些节点不需要被再次关注。由此A*算法的实现流程如图4所示。

通过利用A*算法的启发搜索优势,有效地解决了原布线算法 ML-XGRouter中BFS算法在布线过程总是选择线长最短的路径且搜 索效率差的缺陷。在给定的布线区域内,布线拥塞程度用颜色深浅来 表示,颜色越深则拥塞程度越高,反之越低。在该布线区域内,有一 个两引脚线网,为了连通这两个引脚,有以下三种连接路径:(1)不 考虑当前布线区域内的拥塞情况,只重视线长因素的最短路径,如图 5所示路径1;(2)不考虑线长因素,只重视拥塞情况的最短路径, 如图5所示路径3;(3)综合考虑线长因素和拥塞程度寻找的最短路 径,如图5所示路径2。

通常情况下,综合考虑下得到的路径2是最优解,因为它相较于 路径1经过了更少的拥塞区域,相较于路径3消耗了更少的布线资源, 使得连通该线网的线长更短。但永远选择路径2这样的布线方式,依 然可能会陷入局部极值。因此在整体布线时,三种路径方式都需要充 分利用。在布线初期,布线资源相对充裕,则可以在布线时更倾向选 择路径1形式的路径;在布线中期,选择类似路径2的路径,可以尽 量地避免布线资源被过度消耗,防止后续布线时发生溢出;在布线末 期,由于大部分的布线资源已被使用,为了尽可能地避免和减少线网 溢出,则会倾向于选择路径3形式的路径。

与直接使用A*算法有所区别的是,曼哈顿结构下只需遍历水平 和垂直布线通道上的上、下、左、右四个方向,而本发明中所使用的 A*算法在X结构下将其改为八个方向。同时结合PSO算法,可以寻 求一个整体较优解,以成就优化目标。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的 均等变化与修饰,皆应属本发明的涵盖范围。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:SOC仿真验证及SOC的仿真验证设备验证环境搭建方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类