Automatic Bus Planner for Dense PCBs
总线规划: 总线规划是PCB布线中最耗时的步骤之一。 它包括将总线分配给PCB的多个层,并在每层上以平面方式对它们进行布线。 路由过程中还必须考虑板载组件之间的路由拥塞和总线的最小-最大长度范围。
提出这篇论文的动机
随着IC技术的飞速发展,封装和PCB的尺寸正在减小,而引脚数和布线层却不断增加。 如今,高性能PCB通常包含数千个引脚和十多个信号层。 这样的问题规模使手动设计非常耗时。并且随着PCB变得越来越复杂,手动布线的方法不可行,因此提出了总线规划。
总线规划是PCB布线中最耗时的步骤之一。 它包括将总线分配给PCB的多个层,并在每层上以平面方式对它们进行布线。 路由过程中还必须考虑板载组件之间的路由拥塞和总线的最小-最大长度范围。
研究的问题
一. 开发了一个完整的PCB自动布线系统,即总线规划,总线规划主要有三个阶段:
(1)总线全局路由,用于在单个层上路由所有总线,而所有路由资源都映射到一层上。
(2)路由总线层分配
(3)通过重新分配和重新路由来实现迭代式改进,总线规划器主要有以下特征:
- 我们介绍了一种新颖的动态路由图,以指导拓扑公交路线的搜索。 该图的动态结构使我们能够更有效地找到公交的平面路线
- 介绍了一种基于装箱的拥塞估计。 它比传统的拥塞模型提供了更准确的估计。 由于其准确性,我们的计划员可以有效避免违反路由能力约束的情况
- 介绍一种类似于冒泡排序的迭代改进技术。 它有助于进一步改进路由解决方案
1. 全局路由
全局布线是总线规划的第一步, 它通过在单层上路由总线来生成初始拓扑总线路由,该路由包括所有路由层的路由资源。 在此阶段应用协商的拥塞路由器。 然后在层分配阶段将生成的初始路由分配给给定的路由层,然后在迭代改进阶段对规划解决方案进行改进。
下面来介绍一下全局布线过程中设计到的一些概念。首先介绍Hanan网格和动态路由图数据结构,然后介绍基于Bin Pack的拥塞估计方法,最后描述协商后的拥塞路由器。
1.1 Hanan Grid
全局布线的布线图是基于Hanan网格的,该网格是通过扩展组件的边界直到它们接触其他组件或电路板的边界而构建的。图4显示了3个组件的Hanan网格, 网格单元和边缘分别细化为Hanan网格单元和Hanan网格边缘。
1.2 动态路由图
在全局路由阶段,我们在单层路由所有总线,其中所有路由层的路由资源都集中在一起。 一方面,我们希望避免没有内部冲突的总线之间的交叉,因为我们不知道它们是否会在以后的阶段分配给同一层;另一方面,我们允许具有内部冲突的总线之间的交叉,因为我们知道它们会 没有分配给同一层。 因此,我们需要一个灵活的数据结构来处理这两种情况。
为此,我们引入了一个动态路由图,其顶点是所有Hanan网格边的中点,并且其边是同一单元格中顶点的连接。当一条边被总线占用时,该单元被分为两部分和新的顶点 并创建新的边缘。 图5给出了一个例子。 图5(a)显示了Hanan网格单元中的初始路由图,图5(b)显示了母线通过该单元后的新路由图,其中消除了代表左侧和右侧Hanan网格边的两个顶点(l和r)并 添加了四个顶点(l1,l2,r1,r2)代表四个较小的网格边缘。 在图5(b)中,粗实线表示母线的路线,将Hanan网格的左右边缘切成两个较小的边。细实线表示不与母线交叉的新的布线图边缘。 虚线表示交叉的新路由图边缘。 用虚线表示的边缘将受到高罚,以避免公共汽车过路。 图6给出了路由图在路由后如何发生的全局视图。
通过使用此动态路由图,我们的全局路由器可以处理所有可能的总线拓扑
1.3 拥堵状态估计
在全局布线阶段,为了捕获组件外部的布线空间,我们引入了关键切口,这是将每个组件角连接到其所有可见组件角或组件或电路板边界的线段。如果两个角之间的线段不与任何其他分量相交,则对另一个角可见一个角。同样,对于组件角,如果从该角开始且垂直于组件或板边界的线段不与任何组件相交,则该组件或板边界对于该角是可见的。 图9中的粗线给出了从组件角v开始的所有关键切割.
由于关键切割会捕获组件外部的路由空间,因此可能会在其上发生拥塞,并且我们的全局路由器应该能够估计其拥塞。所有关键切割都可以通过我们的路由图捕获,从而可以估计其拥塞。 如图9所示,每个正交临界切割均由一系列连续的Hanan网格边组成,因此可以通过这些边上的路由图顶点来捕获它。 每个对角线临界切割线都与某些Hanan网格单元相交,因此可以通过在这些单元格内通过与该切割线交叉的图形边缘来对其进行捕捉。 由于路由图是动态的,因此只要更改图,捕获关键切割的图顶点和边线都会更新.
给定一个临界割接层,传统方法通过比较经过它的网的总数和它可以容纳的最大网数来估计其拥挤程度,如等式1所示。在等式中,c(t)是单层可以容纳的最大网数bi( 1≤i≤m)是通过总线的总线(bi)是bi的净计数。
但是这种传统方法估计的是网络级别而不是总线级别的拥塞,因此它并不准确。图10给出了一个示例,其中有5个总线b1,b2,b3,b4和b5分别有20、20、20、20和15个网络通过 通过单层容量50英寸2层的临界切割。 通过使用基于容量的估计,由于总的净计数为95,小于其总容量100,因此该削减不会造成拥塞。但是,如图10所示,我们无法将所有5条总线分配到2层.
为了估计总线级别的拥塞,我们提出了基于bin-packing的估计方法。 在这里,我们将临界切角视为大小为c(t)的bin,并将总线bi(1≤i≤m)作为大小为(bi)的项。 bin数量是容纳所有这些m项的仓位的最小数量。 它估计的拥塞是:
对于图10所示的示例,如果我们对其应用基于bin装箱的估计,则bin数量为3,但是层数为2,因此关键切割必须在某个层上拥塞
1.4 协商拥塞路由
在每次迭代中,按照相同的顺序将每条总线拉起并重新路由一次。 路由总线时,路由器将在路由图上找到最小成本路径。 成本函数由4个项组成:长度成本,穿越成本,拥塞成本和违反长度的成本。 长度成本是主要目标,并且与b的路径长度成比例。 其他三个术语是罚款成本。 交叉路口成本与公交交叉路口的总净额成比例。 拥塞成本与通过的拥塞临界角面包的总拥塞成正比。 限制长度的违规成本与数量b的路由长度超出其最大长度限制成比例。 请注意,可以通过扩展网络路由来满足网络的最小长度限制。
2. 层分配
模拟退火(SA)[16]用于将从前一阶段获得的总线的全局路由分配给给定的层。 初始分配是所有总线的随机分配。 在退火过程的每个步骤中,我们尝试将一条总线移动到另一层,并评估新任务的成本。 分配的成本是两部分的加权总和:(1)交叉成本,即相互交叉的网的总数,(2)拥塞成本,这是使用bin进行的所有关键割断的总拥塞成本,包装估计。
此SA过程的输出是所有拓扑总线路线的层分配。 稍后,我们将通过使用类似于冒泡排序的总线回收技术来迭代地改进此层分配以及各个路线。
3.迭代改进
在将初始总线拓扑分配给多层之后,某些层上的总线路由之间仍可能存在冲突,例如总线交叉口和路由拥塞。 这是因为当执行全局路由时,我们不知道后续的层分配结果,因此可能为某些总线产生了次优的路由。 为了解决这个问题,我们在层分配后对每个层上的现有总线执行另一条协商拥塞路由。 在此路由步骤中,我们为总线交叉部分分配了很高的成本,以便将其最小化。
如果路由冲突仍然存在,我们将进行类似冒泡排序的改进。 首先,我们将所有层上冲突的总线收集在一起,将它们重新分配到第一层,然后重新路由该层上的所有总线。 然后,我们选择并固定第一层上的最大无冲突总线集。 然后将其余冲突的总线移至第二层,并与已分配给第二层的总线一起重新路由。 然后选择最大数量的无冲突总线,以将其固定在第二层,并将其余的冲突总线移至第三层。 重复执行此过程,直到所有总线都无冲突地路由或无法进一步改善结果为止。
图11给出了类似冒泡排序的迭代改进示例,其中深色阴影框中的数字和浅色阴影框中的数字分别表示分配给各层的无冲突和冲突的网络的数量。 图11(a)给出了网络逐层重新路由后的初始层分配结果,在三层上产生了40、30和30个冲突的网络。 所有这100个冲突的网都需要回收。 图11(b)显示将所有100个有冲突的网络重新分配到第1层。在11(c)中,将100个有冲突的网络中的20个添加到第1层而没有冲突,然后重新路由了第1层上的所有网络,然后剩下的80个有冲突的网络 重新分配给第2层。在图11(d)中,将80个冲突的网络中的50个重新分配给第2层,并将其余的30个网络重新分配给第3层。最后,将这30个网络全部成功添加到第3层,如图所示。
结论
在本文中,我们报告了一个自动总线规划器,它是我们正在开发的完整PCB自动布线系统的关键部分之一。 在此总线规划器中,我们使用动态路由图来指导有效地搜索总线路线的平面拓扑,并使用基于装箱打包的拥塞估计来有效避免违反路由容量约束。 我们还使用类似冒泡排序的迭代改进来进一步增加路由网络的数量。 我们在具有7000多个网络和12个信号层的最新工业电路板上测试了总线规划器,我们的总线规划器能够使用从手动设计中提取的层分配实现100%的布线完成。 分配和总线路由,我们能够在满足长度限制的情况下成功路由98.5%的网络。 剩余的1.5%可以手动布线或使用过孔布线。 我们的总线规划的运行时间少于3小时。