解析式布局-二次线长布局

1. 什么是二次线长布局

二次线长布局是一种常用的解析式布局方法,其目标是获得全局最优布局。它通过将线长代价函数建模为电路网表中任意两个元件中心(称为元胞)距离二次方的和来实现最优全局布局的求解,该二次线长代价函数如下:

L(P)=12∑i=1,j=1nc(i,j)(xi−xj)2+(yi−yj)2L(P)=\frac{1}{2}\sum_{i=1,j=1}^nc(i,j)\left(x_i-x_j)\^2+(y_i-y_j)\^2\\rightL(P)=21i=1,j=1∑nc(i,j)(xi−xj)2+(yi−yj)2

  • P,L(P)P,L(P)P,L(P): 当前布局,及二次线长代价函数
  • i,ji,ji,j: 网表中的可移动元胞的索引号
  • nnn: 网表中的可移动元胞总数
  • c(i,j)c(i,j)c(i,j): 元胞iii与元件jjj是否在同一个线网上,若是,该值为1,否则,该值为0
  • xi,yix_i,y_ixi,yi: 网表中的元胞iii的横、纵坐标
  • yi,yjy_i,y_jyi,yj: 网表中的元胞jjj的横、纵坐标
  • (xi−xj)2+(yi−yj)2(x_i-x_j)^2+(y_i-y_j)^2(xi−xj)2+(yi−yj)2表示元胞iii和jjj的直线距离的平方和
    为什么不直接采用更接近线长的表达式?
    实事求是地说,只有完成布线,线长才能依据布线结果准确求解,而布局完成,是没法准确求出线长的,因为还没有实际布线,怎么办?找一个能够合理估计线长的表达式,显然∣xi−xj∣+∣yi−yj∣|x_i-x_j|+|y_i-y_j|∣xi−xj∣+∣yi−yj∣比上面的平方和表达式接近线长,但这种表达式却不能用来求导实现最优位置 的求解,因为它不可导。故而,使用上述距离平方和来代理线长代价。虽然它不准确,但它能保证最优解可计算。

** 二次线长目标函数的缺陷**

二次线长,是以两个点距离的平方为基本项,距离越大,平方对其放大的程度越大,因此,对于同一个线网上的元件,该函数对于相距较远的元件,线长代价估计偏高,但由于它是凸函数,故总能获得最优解。

2. 二次线长布局算法流程

2.1 最优解的解析解推导

  • i,j=1,2,⋯ ,ni,j=1,2,\cdots,ni,j=1,2,⋯,n中存在固定位置的元胞,其坐标是不变的,因此,仅求LLL对其中为变量的那些xi,yix_i,y_ixi,yi的偏导数,不失一般性,假设前m(m<n)m(m<n)m(m<n)个元胞可移动,剩下的都是固定位置的元胞,即xj,yj(m<j≤n)x_j,y_j(m<j\le n)xj,yj(m<j≤n)是已知的,则得
    ∂L∂xi=∑j=1nc(i,j)(xi−xj)=∑j=1nc(i,j)xi−∑j=1nc(i,j)xj \begin{align*} \frac{\partial L}{\partial x_i}&=\sum_{j=1}^nc(i,j)(x_i-x_j)\\ &=\left\\sum_{j=1}\^nc(i,j)\\rightx_i-\sum_{j=1}^nc(i,j)x_j\\ \end{align*} ∂xi∂L=j=1∑nc(i,j)(xi−xj)=j=1∑nc(i,j)xi−j=1∑nc(i,j)xj
  • 将上式中的变量x1,x2,⋯ ,xmx_1,x_2,\cdots,x_mx1,x2,⋯,xm单独拿出来,写成mmm元方程组的标准形式,为书写方便,记ci,j=c(i,j)c_{i,j}=c(i,j)ci,j=c(i,j)得
    ∂L∂xi=(−ci,1)x1+(−ci,2)x2+⋯+(−ci,i−1)xi−1+(∑j=1nci,j)xi+(−ci,i+1)xi+1+⋯+(−ci,m)xm−∑j=m+1nci,jxj,    i=1,2,⋯ ,m \begin{align*} \frac{\partial L}{\partial x_i}=(-c_{i,1})x_1+(-c_{i,2})x_2+\cdots+(-c_{i,i-1})x_{i-1}+ (\sum_{j=1}^nc_{i,j})x_i+(-c_{i,i+1})x_{i+1}+\cdots+(-c_{i,m})x_m-\sum_{j=m+1}^nc_{i,j}x_j,\;\;i=1,2,\cdots,m \end{align*} ∂xi∂L=(−ci,1)x1+(−ci,2)x2+⋯+(−ci,i−1)xi−1+(j=1∑nci,j)xi+(−ci,i+1)xi+1+⋯+(−ci,m)xm−j=m+1∑nci,jxj,i=1,2,⋯,m
  • 令上述偏导数为0,得到一个以x1,x2,⋯ ,xmx_1,x_2,\cdots,x_mx1,x2,⋯,xm为自变量的多元方程组,如下:
    AX−bx=0 \begin{align*} &AX-b_x=0 \end{align*} AX−bx=0
    其中,
    -- A=∑j∈N1c1,j−c1,2−c1,3⋯−c1,m−c2,1∑j∈N2c2,j−c2,3⋯−c2,m⋮⋮⋱⋮⋮−cm,1−cm,2−cm,3⋯∑j∈Nmcm,jA=\begin{bmatrix} \sum_{j\in N_1}c_{1,j} &-c_{1,2} & -c_{1,3} & \cdots & -c_{1,m} \\ -c_{2,1} & \sum_{j\in N_2}c_{2,j} & -c_{2,3} & \cdots & -c_{2,m} \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ -c_{m,1} & -c_{m,2} & -c_{m,3} & \cdots & \sum_{j\in N_m}c_{m,j} \end{bmatrix}A= ∑j∈N1c1,j−c2,1⋮−cm,1−c1,2∑j∈N2c2,j⋮−cm,2−c1,3−c2,3⋱−cm,3⋯⋯⋮⋯−c1,m−c2,m⋮∑j∈Nmcm,j : 其中,ci,j=cj,ic_{i,j}=c_{j,i}ci,j=cj,i,NkN_kNk表示元胞kkk(节点kkk)的所有邻居元胞(节点)的集合,∑j∈netkck,j\sum_{j\in net_k}c_{k,j}∑j∈netkck,j表示节点kkk在同一线网的其他所有元胞的个数,也就说节点kkk的度
    -- XXX: 所有可移动元胞横坐标构成的向量
    -- bxb_xbx: 向量,其中第kkk个元素bxkb_xkbxk连接到元胞k的所有固定元胞的横坐标之和,若与元胞kkk相连的固定元胞数为0,则bxk=0b_xk=0bxk=0
  • 同理,有
    AY=by AY=b_y AY=by
  • 我们可以看到,AAA为对称矩阵,同时,AAA具有连通性,故A是对称正定矩阵,故而上述方程有唯一解。

2.2 二次线长布局算法流程

  • 将电路网表上的所有节点编号,其中,把固定位置的节点编号到最后,其余可移动节点编号为1,2,...,m,令它们的坐标依次为x1,y1,x2,y2,⋯ ,xm,ymx_1,y_1,x_2,y_2,\cdots,x_m,y_mx1,y1,x2,y2,⋯,xm,ym
  • 求解上面的方程组,使用共轭梯度等数值解法求解。
相关推荐
xier_ran1 小时前
【infra之路】W_Q、W_K、W_V矩阵是如何训练出来的
线性代数·矩阵·transformer
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 -【C++进阶】STL算法与函数对象
开发语言·c++·算法
鹿角片ljp2 小时前
LeetCode 53. 最大子数组和
算法·leetcode·职场和发展
江屿风2 小时前
【科普】【差集&交集概念落地云相册】流食般投喂
开发语言·c++·笔记·算法·云相册
数模竞赛Paid answer2 小时前
2023年五一杯数学建模A题无人机定点投放问题求解全过程完整文档及程序
算法·数学建模·无人机·五一杯
科学实验家2 小时前
dp子序列问题,好难呀
算法
wabs66611 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
mifengxing11 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
Tongzhi202612 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法