仅用于学习交流,转载请联系本人。

1 floorplan是什么

floorplan常被翻译成布图规划,是指在芯片级别上对模块进行布局,也就是哪个单元放在什么地方,但是单元内部的具体布局并不关心。该步骤为芯片版图设计中的关键步骤之一,因为在这一步会影响芯片的面积、能否成功布线以及布线线长等诸多关键指标和步骤。

图1. 布图规划就是确定这些Block的形状和相对位置,但是对Block内部不关注,一个Block可能是一个加法器或者其它什么。至于图中所示的三种类型(临接,通道、临界+通道),目前是不重要的。图片引用自 http://www.signoffsemi.com/floorplan-placement-2/

2 目标是什么

floorplan的首要目标就是给模块指定一个最佳的形状(如果需要指定的话),给出模块间的最佳的相对位置关系。这里需要先区分一个概念,module和block(这里对应的中文我记成模块和砖块)。一个加法器的原理图是一个模块,也就是我们知道一个加法器是由一个半加器和进位电路组成的,但是在版图中这个加法器长宽分别是多少,我们是不知道的。当其长宽确定下来之后,就称成为一个砖块(Block),就相当于砖,和建房子的砖没啥区别,就是说可以用这个砖块来构建版图啦,所以翻译成砖块。在设计好芯片的逻辑关系后,更具输入的是砖块还是模块可能面临三种状况:

(1)输入的对象都是砖块(block)。也就是说,构建版图时,使用的基本构图单元(加法器)已经被规定好了,只能使用,不能改变形状和大小。但是这些砖块间的位置是floorplan需要去确定的。

(2)输入的对象是模块(module)。也就是说,构建版图时,使用的基本构图单元(加法器)没有被规定死,可以指定其长宽比例(面积基本上变不了,因为加法器里的东西需要地方放)。这种情况下,floorplan需要为这些模块指定长宽比例使得模块变成砖块,然后还要指出这些砖块之间的相对位置。

(3)当然是混合型,输入既有砖块又有模块。略。

但是这里有一个问题就是什么样算是最佳?或者换一种说法,显然floorplan是一个优化问题,那么优化的目标是什么呢?一般来说有一下几点:

(1)使芯片面积最小;

(2)使得模块之间的连线最短,这也就意味着延迟小;

(3)模块之间拥塞尽可能小,也就是说,模块之间有足够的空间让互连线通过;

优化目标可能是其中一个也可能是其中的很多,如果要同时满足多个优化目标的话,可以为这些目标分配权重,形成一个综合的优化目标函数。(但笔者认为,这实在是一种有些天真但在一定程度上可接受的做法,相当于超参数)

f=a*area+b*wirelength+c*congestion (a+b+c=1)

3 常见的算法有哪些

在这里,再重述一遍floorplan的主要目标,(1)指定模块的形状,(2)给出模块间的相对位置。目前几乎所有的数字芯片设计都会使用物理设计EDA工具,其中自然就包含floorplan工具,既然是自动化工具,就比然有相应的算法。总体上来说,floorplan可以分为三类(Susmita Sur-Koay):

(1)构造型算法。这一类算法旨在指出砖块之间的相对位置。这一类算法有slicing embedding,hierarchical enumeration和dual graph等。

(2)迭代型算法。这一类算法旨在将模块变成砖块,也就是为模块确定长宽比。这一类算法有模拟退火,遗传算法,力导向等。

(3)基于特定知识的算法。这一类算法企图同时完成这两件事情。

参考文献

Susmita Sur-Koay. Handbook of Algorithms for Physical Design Automation. p140.

Physic Design:Floorplan算法概览的更多相关文章

  1. [0x00 用Python讲解数据结构与算法] 概览

    自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...

  2. C/C++基础---算法概览

    符号概念 beg和end表示元素范围的迭代器 beg2表示第二个序列开始位置迭代器,end2表示第二个序列末尾迭代器(如果有).如没有则假定系列2至少与beg end表示的范围一样大.beg和beg2 ...

  3. Android Design Support Library概览

    尊重劳动成果.转载请注明出处:http://blog.csdn.net/growth58/article/details/47972467 关注新浪微博:@于卫国 邮箱:yuweiguocn@gmai ...

  4. 从 SGD 到 Adam —— 深度学习优化算法概览(一) 重点

    https://zhuanlan.zhihu.com/p/32626442 骆梁宸 paper插画师:poster设计师:oral slides制作人 445 人赞同了该文章 楔子 前些日在写计算数学 ...

  5. learn from collection framework design

    最难忍受的痛苦,也许是想干一件事情而又不去干.--罗曼·罗兰 前言 本篇文章算是拾人牙慧吧,偶尔谷歌到一个能很好把collection framework design讲好的文档,一是为了总结提升,也 ...

  6. js排序算法汇总

    JS家的排序算法   十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...

  7. Backpropagation 算法的推导与直观图解

    摘要 本文是对 Andrew Ng 在 Coursera 上的机器学习课程中 Backpropagation Algorithm 一小节的延伸.文章分三个部分:第一部分给出一个简单的神经网络模型和 B ...

  8. 一文搞懂Raft算法

      raft是工程上使用较为广泛的强一致性.去中心化.高可用的分布式协议.在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos.但Paxos是:少数真正理解的人觉得简单,尚未理解 ...

  9. js十大排序算法收藏

    十大经典算法排序总结对比 转载自五分钟学算法&https://www.cnblogs.com/AlbertP/p/10847627.html 一张图概括: 主流排序算法概览 名词解释: n: ...

随机推荐

  1. STM32 Cube之旅-尝试新的开发方式

    尝试使用Cube进行一些开发学习,这里对此做一个梗概,先有一个全面的了解. 文章目录 Cube全家桶 CubeMX CubeIDE CubeProg 结语 Cube全家桶 曾几何时,ST刚推出Cube ...

  2. [ACdream 1212 New Year Bonus Grant]贪心

    题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金.求总共最多可以产生多少的奖金流动 思路:每次选择没有下级并且有上级的员工a,令它的上级为b ...

  3. [hdu1847]博弈,推理

    题意:一堆石子,有n个,两个人轮流取,每次都只能取2的幂次方个数,不能取的人输 思路:首先0是必败态,2的所有幂次都是必胜态.由于选的数模3只能是1或2,恰好又都是2的幂次,0,.3都为必败态,猜想3 ...

  4. CSS理论:margin-left在float中的运用

    源码如下: margin-left 指的是左边的外边距,为正数时,左边间距增大,div向右偏移,为负数时,左边间距减少,相反往左偏移 双飞翼 .wrap { width: 100%; margin: ...

  5. 【SMB源码解析系列】——001.JumpEngine函数

    在SMB的源码中大概有不到20处看起来很奇怪的指令,它的格式是通过jsr指令调用一个名为JumpEngine的函数,其后并不是跟随某些后续的逻辑指令,而是通过.dw定义了一系列16位地址. 我们可以看 ...

  6. 程序员的踩坑经验总结(一):如何把Bug的偶现变必现

    程序员的踩过的坑也是可以分类的,很常见又很难解决的一类是偶然的现象,表现起来比较怪异. 而把一个问题Bug的偶现变成必现,是开发人员的一种能力.我认为也应该是测试人员的一种能力,但是各个公司要求不一样 ...

  7. My sql的知识点 不足点请指点谢谢

    My SQL:(关系数据库) 数据库能够能够干吗? 1. :存储大量的信息,方便检索和访问    2. :保持数据信息的一致,完整      3. : 共享和安全 4. : 通过组合分析,产生新的有用 ...

  8. docker容器与系统时间同步最佳方法

    前言:在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,此时需要同步它们的时间,让容器时间跟宿主机时间保持一致. 一.分析时间不一致的原因 宿主机采用了CST时区,CST应该是指(C ...

  9. Gitlab 修改ldap认证

    1. 备份数据 2. 修改配置 使用自己搭建的openldap 使用用户中心的openldap 说明:base属性执行所有员工,user_filter属性主要用来实现分组功能.上面的配置是只有ldap ...

  10. 解决CentOS无法识别网卡问题

    在联想电脑安装CentOS 6.9系统的时候,出现了无法上网问题,记录下这一路的坑. CentOS安装时在设置主机名这一步的下方有配置网络按钮,而此时该按钮点击无效.进入系统后发现没有网络连接. 在终 ...