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

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. 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案

    *6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数: public static int countLetters(String s) 编写一个测试程序,提示 ...

  2. 【FPGA篇章五】FPGA函数任务:对讲解函数与任务专题展开详解

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 任务和函数也属于过程块,多用于仿真文件设计中,使用两者的目的有所区别: 函数(function):对输入的值执行一些处理,返回一个新的值. ...

  3. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  4. VA01销售订单批导问题解决

    1业务场景 事务代码:VA01创建销售订单,VA02修改销售订单 可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建 可以通过BAPI_SALESORDER_CHANGE批量 ...

  5. C# 数据操作系列 - 4. 自己实现一个ORM

    0. 前言 在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改.新增数据.如何通过DataSet和DataAdapter获取数据,我们将在这一篇试试自己实现一个简单的ORM框架 ...

  6. [hdu4436 str2int]后缀自动机SAM(或后缀数组SA)

    题意:给n个数字串,求它们的所有不包含前导0的不同子串的值之和 思路:把数字串拼接在一起,构造SAM,然后以每个状态的长度len作为特征值从小到大排序,从前往后处理每个状态,相当于按拓扑序在图上合并计 ...

  7. bash初始化小建议

    bash有一些很好用但已经常被人忽略的小技巧,谨以此文记录下…… 1. 给history命令加上时间 history的命令很好用,他可以记录我们之前做了哪些操作,有了这些记录,我们可以很快捷的重复执行 ...

  8. 【5min+】美化API,包装AspNetCore的返回结果

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...

  9. java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;

    一,构造方法的特点 面向对象的思想是如何在java展现的呢? 就是通过类和对象 类是一组相关的属性和行为的集合.是一个抽象的概念. 对象是该类事物的具体表现形式.具体存在的个体. 一.抽象类的抽象方法 ...

  10. 利用logrotate将mysql log截断

    https://blog.pythian.com/mysql-log-rotation/ 1.授权用户 CREATE USER 'log_rotate'@'localhost' IDENTIFIED ...