zoukankan      html  css  js  c++  java
  • instGroup/constraint/Gcell/busguide/netgroup/Bump

    1.

    instGroup

    Instance group。中文名例化单元组。Instance group可以用来group一些instances, 在做placement时,如果你希望一些instance可以尽量摆放在一起,可以创建一个instance group,并且把这些instance都添加到这个group中。如下图所示:

    instance group本身并不会改变netlist. 但是我们可以通过runRcNetlistRestruct来改变netlist的层次结构本身,使它成为一个module。

    使用方法:

    createInstGroup

    addInstToInstGroup

    createInstGroup group1 -fence {300 300 600 600}

    addInstToInstGroup group1 instA

    2.

    constraint

    并不是timing里面的sdc文件,而是Floorplan中的module约束作用。

    主要分为四种:按照约束由强到弱,可以分为是Fence,Region,Guide,SoftGuide

    Fence(限制约束):强约束,“不可进不可出”的约束,属于该模块的单元只能放置在该区域内,且不允许放置其他单元

    Region(区域约束):“可进不可出”的约束,属于该模块的单元只能放置在指定区域内,该区域内还可以放置其他单元

    Guide(向导约束):为模块指定向导范围,“可进可出”的约束,属于该模块的单元可以放置在该向导范围内,也可以放置在该向导范围之外,不属于该模块的单元也可以放置在该向导范围内。

    SoftGuide(软向导约束):上面三种约束大家一定很熟悉吧,其实Encounter还隐藏了一种约束。softGuide. 它和Guide约束较相似,区别只是在于没有具体的location. 在softGuide中的std cell. place时会尽量摆近一点

    使用方法:

    createFence, createRegion, createGuide, createSoftGuide

    3.G cell

    G cell,全称global routing cells。 同样的它也是我们定义的一种grid, G cell grid对routing过程中起着相当重要的作用。

    我们知道绕线过程可分为global route(全局绕线)和detail route(详细绕线)。globalroute以gcell cell作为绕线参考网格,工具在绕线时会试图寻找gcell中的最短path, gcell还有很大的一个用处是产生congestion map(拥堵图表)。

    我们可以在DEF或者floorplan文件中看到GCell Grid的定义.

    [GCELLGRID

       {X start DO numColumns+1 STEP space}...

       {Y startDO numRows+1 STEP space ;} ...]

     X Y 分别代表水平和垂直方向

    start 代表第一根grid的位置

    DO numColumns+1,DO numRows+1 代表grid横竖的数量

    STEP space 代表grid之间的间距

    产生的grid效果如下图所示:

    那么gcell是如何对guide global routing的呢?通常一个gcell中会占有10几个track(根据design的不同有所变化),global routing的目标是使得每个gcell的容量占有率在85%左右。

    当gell中的track需求量高于容量时,该处地方的route就会产生congestion(拥塞)的问题。通过global route的report我们可以清楚地看见每层layer上的congestion描述:

     

    也可以产生 congestion map,在GUI上更形象地看到设计中出现拥塞的地方。颜色的定义方式如下图所示:

    产生congestiong map以后,在图形界面上可以看到:

    3.

    busGuide

    constraint,它可以guide bus net的走线。如图所示:粉红色部分形成bus guide后,在这个bus guide中,Inst A和Inst B的bus net必须按照粉红色的走线方式走线。
     

     Bus Guide可以有效地降低design中routing resource. 如下图所示,没有bus guide时,两个hard macro之间的bus net走线非常乱,极大地浪费了走线空间;相反,当两者之间添加bus guide以后,相关的bus net都在对应的channel里走线,合理地利用了空间。

    使用方法

     

    createBusGuide

    BusGuide与net group相关联。因此,创建Bus Guide前,我们首先需要创建对应的net group

    <CMD> createNetGroup test-spacing 2

      <CMD> addNetToNetGroup test –net {mc[0] mc[1] mc[2] mc[3]}

     <CMD> createBusGuide -netGroup test -layer {1:4} -rect {464 1240 528 1260}

    这里需要指出的是,所画的Bus Guide必须要把两端的instance bus pin给完全覆盖住,这样,bus guide才会有效果

    4.

    Net Group

    这也是一种net或者pin的约束,经常与bus guide或者pin guide关联使用,它可以将几条net,或者bus net加到一个group中,然后与bus guide或者pin guide关联。这样,做pin assign或者 bus routing时,net group中的net具有较高的权重,会尽可能地走在一起。

    使用方法

    createNetGroup  

    addNetToNetGroup  

    createNetGroup bundle1 

    addNetToNetGroup bundle1 -net cpua[2:10] 

    创建net group bundle1,将bus net cpua[2:10]加到net group bundle1中

    6.Bump

    这是用于FlipChip技术的一种object,可以理解为“焊球”。用于倒置过来扣在封装板上的焊球。如下图所示

     

     Bump通过RDL routing(Redistributed layer,通常是铝层)连接着IO pad cell。

     

    通常bump是呈正六边形的,但这不是必须的,我们也可以定义rectangle的形状。我们在LEF中定义bump属性,记住的是它的class是coverbump

    MACRO BUMPCELL    

    CLASS COVERBUMP ;    

    ORIGIN 0 0 ;    

    SIZE60.0 BY 60.0 ;   

      SYMMETRY X Y ;    

    PIN PAD        

    DIRECTION INPUT ;        

    USE SIGNAL ;        

    PORT            

    LAYER M9 ;            

    POLYGON 17.25 0.0 42.75 0.0 60.0 17.25 60.0 42.75 42.75 60.0 17.25 60.0 0.0 42.75 0.017.25 ;           

     END   

    END PAD       

         OBS          

           LAYER via89 ;       

            POLYGON 17.25 0.0 42.75 0.0 60.0 17.2560.0 42.75 42.75 60.0 17.25 60.0 0.0 42.75 0.0 17.25;      

     END

    END BUMPCELL

    使用方法

    create_bump_array

    create_bump_array -lib_cell BUMP -delta {140 140}

    -bbox {{410 450} {1175 3278}} -name left

    create_bump_array -lib_cell BUMP -delta {140 140}

    -bbox {{2620 450} {3325 3278}} -name right

    create_bump_array -lib_cell BUMP -delta {140 140}

    -bbox {{1100 450} {2650 1125}} -name bottom

    create_bump_array -lib_cell BUMP -delta {140 140}

    -bbox {{1100 2555} {2650 3250}} -name top

    create_bump_array -bbox {{1100 1150} {2650 2550}}

    -pattern staggered_1 -lib_cell {BUMP} -delta {140 140} -name pg_bump

  • 相关阅读:
    MyBatis 内连接association 左外连接collection
    mybatis的基本配置:实体类、配置文件、映射文件、工具类 、mapper接口
    SpringMVC 使用Form标签库制作登录表单
    SpringMVC 配置过滤器解决中文乱码问题
    用户登录模块————账户安全问题
    HashSet,TreeSet和LinkedHashSet的区别
    SpringMVC 服务器端验证
    php输出(下载)文件
    26进制(字母)转十进制算法
    PHP之可变变量
  • 原文地址:https://www.cnblogs.com/lelin/p/11158577.html
Copyright © 2011-2022 走看看