Flute斯坦纳最小树构造算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN, 2007
FLUTE: Fast Lookup Table Based Rectilinear Steiner Minimal Tree Algorithm for VLSI Design
Chris Chu and Yiu-Chung Wong
How—整体算法
1. 预处理:建立POWV-POST一一对应的查找 表 2. 开始构造RSMT
1. 计算该net的Position Sequence(PS) 2. 由PS得到POWVs,找出最小的POWV 3. 该POWV对应的POST即RSMT
How—查找表的建立
• 边界压缩技术:对其中某条边 做压缩,将边上的点平移合并, 如右图(其实这是在假设一行 上有多个点的情况下才能压缩 的)并且边界压缩不会影响 边界压缩不会影响POWV的数量 POWV的数量。 • 怎么样的grid是可以被压缩的?
Review By Carelife
WhaLeabharlann Baidu—FLUTE
• 基于快速查找表的矩形斯坦纳最小树构造算法 • 所有N点线网根据pin脚位置都可划分到n!个group中,每 个group中存有POWV,对于一个线网最优线长可由 POWV来获得,FLUTE算法首先会预计算这些POWV形成 一个查找表。与POWV一起存储的还有POST,一个 POWV对应多个POST,一个POST只有一个POWV。 • POWV:potentially optimal wirelength vectors • POST:potentially optimal Steiner tree • 基于此,要得到一颗RSMT,只需计算线网所在组对应 的POWV的线长,然后返回对应的POST即可。 • 上述查找表算法最高支持9点线网,对于9点以上的需要 递归的切分线网。 • FLUTE算法的复杂度依旧是O(nlogn)
What—POWV
• • • • • Hanan Grid: pin i坐标表示为(x[s[i]], y[i]), 位续( position sequence )=3142 水平边长度 h[i] = x[i+1] − x[i] 垂直边长度 v[i] = y[i+1] − y[i] HananGrid上的斯坦纳树可以表示为该Grid上一 堆边的集合,由此线长即可以由hi,vi组成的向 量表示。 • 右下图的线长可依次表示为(1, 2, 1, 1, 1, 2), (1, 1, 1, 1, 2, 3), (1, 2, 1, 1, 1, 1) • 虽然斯坦纳树数量是巨大的,但是上述的线长 向量数量要小很多,并且可以略过许多一定大 的向量,如a,c中a可以无视。 • 那么由此得到的最小的那些不可以被无视的向 量就组成了POWVs,对于一个端点很少的线网 而言,POWV是十分少的。
How—查找表size优化
• 没有优化的查找表体积极其庞大,9点线网需要的 存储容量为9!*30.039*15= 166.3MB • 优化方法:
1. POWVs只存差值,不存完整值 2. 合并POWVs相同的Group
1. 2. 经边界压缩后相同 有对称性(文中只考虑水平对称)
• 上述例子优化后仅有9M
How—查找表的建立
• 使用上述算法得到Grid G对应的所有POSTs后即 可得到所有POWVs。至 此查找表建立完成。
• 可用右图来描述建立的 过程。 • 最多支持9点线网,9点 以上需要对线网进行分 割
有一堆线网要构造 RMST 取其中某个N点的 线网,获得该线网 的Hanan Grid G 由算法Gen-LUT(G) 计算得到G的所有 POSTs 由POSTs计算一一 对应POWVs,完成 查找表建立
1. 某个边界只有一个点 2. 某个角上有一个点,相邻两条 边都有且仅有一个点 3. 四条边界总共点不多于6个
How—查找表的建立
• 由于遍历每条 边来枚举POWV 相对复杂,使 用右图算法先 获取POSTs再获 取对应POWV。 • 该算法的核心 思想就是上面 所说的压缩技 术,当G为直线 或者2*2网格时 直接返回,否 则一直压缩。
– 定义-拓扑相等:两棵斯坦纳树可以通过改变HananGrid 边长而互相转变,下图即是拓扑相等的 – 引理1:两个线网的position sequence相等则其中的每棵 斯坦纳树都与另一个线网中某棵拓扑相等。 – 定理1:所有n点线网可以根据position sequence 划分 成 n!个group,每个group拥有同样的POWVs
HOW—大线网分割
Result
HOW—最小线长计算加速
• 正常的计算POWVs线长 • 但是同一个group间的计算是有很多重复点的, 每个POWV单独计算浪费很多时间。 • POWV之间可以有依赖性的依次计算,其实这 是一个最小生长树的问题。 • 对于一个Group中q个POWVs,建立一个q+1个 节点的完全图,多出的一点对应于线长数组 (HPWL),图中边权为两个相邻线长数组的 边际距离。 • 从HPWL点开始宽搜建立最小生长树,叶子节 点为图中的node
What—POST
• 如下图就是POWV与POST之间的关系。 • 一个POWV对应多个POST,一个POST只有一 个POWV。但是FLUTE算法中只会计算一个 POST
What—Lookup Table
• 将上述的POWV与POST预计算后并存储到某个表中 就形成了Lookup Table。 • 由于不同的线网之间的端点的距离肯定是不同的, 为了使所有线网共用一个查找表,有如下定义:
FLUTE: Fast Lookup Table Based Rectilinear Steiner Minimal Tree Algorithm for VLSI Design
Chris Chu and Yiu-Chung Wong
How—整体算法
1. 预处理:建立POWV-POST一一对应的查找 表 2. 开始构造RSMT
1. 计算该net的Position Sequence(PS) 2. 由PS得到POWVs,找出最小的POWV 3. 该POWV对应的POST即RSMT
How—查找表的建立
• 边界压缩技术:对其中某条边 做压缩,将边上的点平移合并, 如右图(其实这是在假设一行 上有多个点的情况下才能压缩 的)并且边界压缩不会影响 边界压缩不会影响POWV的数量 POWV的数量。 • 怎么样的grid是可以被压缩的?
Review By Carelife
WhaLeabharlann Baidu—FLUTE
• 基于快速查找表的矩形斯坦纳最小树构造算法 • 所有N点线网根据pin脚位置都可划分到n!个group中,每 个group中存有POWV,对于一个线网最优线长可由 POWV来获得,FLUTE算法首先会预计算这些POWV形成 一个查找表。与POWV一起存储的还有POST,一个 POWV对应多个POST,一个POST只有一个POWV。 • POWV:potentially optimal wirelength vectors • POST:potentially optimal Steiner tree • 基于此,要得到一颗RSMT,只需计算线网所在组对应 的POWV的线长,然后返回对应的POST即可。 • 上述查找表算法最高支持9点线网,对于9点以上的需要 递归的切分线网。 • FLUTE算法的复杂度依旧是O(nlogn)
What—POWV
• • • • • Hanan Grid: pin i坐标表示为(x[s[i]], y[i]), 位续( position sequence )=3142 水平边长度 h[i] = x[i+1] − x[i] 垂直边长度 v[i] = y[i+1] − y[i] HananGrid上的斯坦纳树可以表示为该Grid上一 堆边的集合,由此线长即可以由hi,vi组成的向 量表示。 • 右下图的线长可依次表示为(1, 2, 1, 1, 1, 2), (1, 1, 1, 1, 2, 3), (1, 2, 1, 1, 1, 1) • 虽然斯坦纳树数量是巨大的,但是上述的线长 向量数量要小很多,并且可以略过许多一定大 的向量,如a,c中a可以无视。 • 那么由此得到的最小的那些不可以被无视的向 量就组成了POWVs,对于一个端点很少的线网 而言,POWV是十分少的。
How—查找表size优化
• 没有优化的查找表体积极其庞大,9点线网需要的 存储容量为9!*30.039*15= 166.3MB • 优化方法:
1. POWVs只存差值,不存完整值 2. 合并POWVs相同的Group
1. 2. 经边界压缩后相同 有对称性(文中只考虑水平对称)
• 上述例子优化后仅有9M
How—查找表的建立
• 使用上述算法得到Grid G对应的所有POSTs后即 可得到所有POWVs。至 此查找表建立完成。
• 可用右图来描述建立的 过程。 • 最多支持9点线网,9点 以上需要对线网进行分 割
有一堆线网要构造 RMST 取其中某个N点的 线网,获得该线网 的Hanan Grid G 由算法Gen-LUT(G) 计算得到G的所有 POSTs 由POSTs计算一一 对应POWVs,完成 查找表建立
1. 某个边界只有一个点 2. 某个角上有一个点,相邻两条 边都有且仅有一个点 3. 四条边界总共点不多于6个
How—查找表的建立
• 由于遍历每条 边来枚举POWV 相对复杂,使 用右图算法先 获取POSTs再获 取对应POWV。 • 该算法的核心 思想就是上面 所说的压缩技 术,当G为直线 或者2*2网格时 直接返回,否 则一直压缩。
– 定义-拓扑相等:两棵斯坦纳树可以通过改变HananGrid 边长而互相转变,下图即是拓扑相等的 – 引理1:两个线网的position sequence相等则其中的每棵 斯坦纳树都与另一个线网中某棵拓扑相等。 – 定理1:所有n点线网可以根据position sequence 划分 成 n!个group,每个group拥有同样的POWVs
HOW—大线网分割
Result
HOW—最小线长计算加速
• 正常的计算POWVs线长 • 但是同一个group间的计算是有很多重复点的, 每个POWV单独计算浪费很多时间。 • POWV之间可以有依赖性的依次计算,其实这 是一个最小生长树的问题。 • 对于一个Group中q个POWVs,建立一个q+1个 节点的完全图,多出的一点对应于线长数组 (HPWL),图中边权为两个相邻线长数组的 边际距离。 • 从HPWL点开始宽搜建立最小生长树,叶子节 点为图中的node
What—POST
• 如下图就是POWV与POST之间的关系。 • 一个POWV对应多个POST,一个POST只有一 个POWV。但是FLUTE算法中只会计算一个 POST
What—Lookup Table
• 将上述的POWV与POST预计算后并存储到某个表中 就形成了Lookup Table。 • 由于不同的线网之间的端点的距离肯定是不同的, 为了使所有线网共用一个查找表,有如下定义: