• Physic Design:Floorplan算法概览


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

    1 floorplan是什么

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

    布图规划就是确定这些Block的形状和相对位置,但是对Block内部不关注,一个Block可能是一个加法器或者其它什么。图片引用自http://www.signoffsemi.com/floorplan-placement-2/

    图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.

  • 相关阅读:
    macos删除本地快照
    mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) RHEL 7 配置samba(smb)文件共享报错
    增加samba用户提示Failed to add entry for user
    Linux中变量 $#, $@, $0, $1,$ 2, $*,$$,$?的含义
    虚拟主机是设置在httpd-vhosts.conf还是vhosts.conf还是httpd.conf
    linux 中useradd -s /sbin/nologin和/bin/false的区别
    Linux系统 smbpasswd 命令的用法?
    linux 下/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的区别
    linux防火墙
    etc/selinux/config与etc/sysconfig/selinux区别
  • 原文地址:https://www.cnblogs.com/vector1234/p/13039900.html
Copyright © 2020-2023  润新知