zoukankan      html  css  js  c++  java
  • 论placer,legalizer和blockage,bound的关系

    先问大家几个问题:

    一:create_placement会把std cell 放进soft place blockage里吗?

    二:在soft place blockage里创建一个hard bound,create_placement会把相应的std cell放进bound里去吗?

    三:在hard place blockage里创建一个hard bound,legalizer会把std cell 从bound里挪出来吗?

    std cell出门,靠两个工具,placerlegalizer。placer是宝马,可以让std cell从原点跑到floorplan的任何地方。legalizer是步行,坐宝马到了目的地后,得走一点点路,在附近找到一个合适的地方休息。std cell还有个亲戚,就是high-fanout-synthesis(简称HFS)和optimizer插入的buffer/inverter)。buffer不坐宝马,从天上掉下来后,然后也走走路(靠legalizer),找个合适的地方休息。

    std cell并不能随心所欲,不能想去哪就去哪。它有两个约束,placement blockagebound。这两功能刚好相反,blockage是不让std cell进来,bound则是不让std cell出去。他们又有很多分类,bound分为soft bound和hard bound。blockage又分soft,hard,和partial以及各种特殊的blockage(比如buffer only等)。

    一般情况下,blockage和bound分开工作,井水不犯河水。但是,偶尔会遇到bound和blockage overlap的情况,这种情况下,std cell该呆在里面呢?还是该出去呢?如果能正确理解工具的行为,那么将会把你的std cell弄的服服帖帖的,指哪打哪,精确去到你想去的地方。

    Placer怎么处理blockage

    hard blockage是霸王条款,没有商量,不允许placer把任何std cell进来。

    soft blockage,有分别心。不允许placer把std cell放进来,但允许optimizer/HFS放buffer进来,为的是解DRC,优化时序。soft blockage也还算包容,已经进来的cell(也许是optimizer/HFS放的),则允许继续留在里面(place.coarse.enable_enhanced_soft_blockage=true),incremental place并不会把他们挪出去。

    partial blockage,需要一个参数,即密度。std cell随时可以进来,但是不能超过这个密度阈值,否则,对不起,多余的人请出去吧。

    所以placer手下的std cell和blockage的关系是:

    Blockage  Type

    Hard  

    Soft

    Partial

    Place

    进不去

    进不去

    能进去,但别进太多

    Incremental Place

    进不去

    进不去

    已经进去的可以呆着

    能进去,但别进太多

    Placer怎么处理bound

    bound的目标很简单,指定一些std cell的位置,所以bound只是个约束。而placer的工作就是将这些宝贝疙瘩std cell放到bound里去。

    Hard bound,顾名思义,是个硬性要求。所以placer不管三七二十一,会把这些cell全部装进这个bound里。

    Soft bound,不是硬性条件,placer一般都会把std cell放进去,但也可能为了更好的时序,会被placer摆在bound外面一点。但一般不会离bound很远,多远取决于soft bound的effort。

    注意事项:

    :创建hard bound时,最好用leaf cell,而不要用hierarchy cell。因为如果指定hierarchy cell,将来optimizer插入的buffer如果逻辑上在这个hierarchy cell里,也会被认为符合这个约束,因此会被legalizer强制放进这个bound区域,可能对时序有很大的伤害。

    :bound的利用率要在合理的范围之内。不要超过100%,也不要高达80%-90%,不然将来这里别的cell进不来。

    :placer把cell放进bound后,cell并不是legalized。需要后续的legalizer把它们放好。

    :一般的bound要在create placement后删除,让后面的步骤更好的优化时序。

    另外还有HFSoptimizer新插入的buffer,也不会放进hard placement blockage,但可以放进soft/partial blockage。HFS/optimizer不会理睬bound,该放哪就放哪。

    总结一下

    placer/HFS/optimizer和blockage/bound的关系

    Legalizer介绍

    Legalizer的作用,简单的说,就是把std cell放到附近合法的位置(legal location),越近越好。什么是legal locaction?感觉这是一个很复杂的话题。在较老的工艺里(比如28nm或者更老的),legal location就是把std cell放在row和site里,且没有overlap就是了。而新的工艺的legal location越来越复杂,因为不仅要考虑row/site和overlap,还要考虑两个cell 放在一起是不是有DRC?是不是导致将来的绕线DRC?会不会和PG太近,pin是不是在track上等等等等。好,打住,以后有专门的文章来介绍legalizer。

    Legalizer和blockage

    legalizer和blockage的关系比较简单。

    hard blockage:legalizer会遵从hard blockage不让放std cell的约束。当std cell在hard blockage里时,legalizer会把它挪出来,放在外面的legal location;std cell在hard blockage外面时,当然不会挪进去。

    soft blockage:legalizer不会遵从 soft blockage。在里面的继续呆在里面,在外面的继续呆在外面。在边界的,可能会为了找legal location会进进出出。总之一句话,legalizer 把soft blocakge当作空气。

    partial blockage:legalizer不会遵从 partial blockage,和处理soft blockage行为相同。

    Legalizer和bound

    hard bound:legalizer会遵从hard bound的约束。当属于这个bound的std cell已经在bound里时,legalizer不会挪出来。当属于这个bound的std cell在bound外面时,legalizer会把他们挪进去。

    soft bound:legalizer不会遵从soft bound。在里面的继续呆在里面,在外面的继续呆在外面。在边界的,可能会为了找legal location会进进出出。总之同一句话,legalizer 把soft bound当作空气。

    总结一下

    Legalizer和placement blockage,bound的关系:

  • 相关阅读:
    Request和Session的生命周期
    了解EBP指针
    esp跟ebp跟踪记录
    深入浅出Node.js (6)
    洛谷 P2404 自然数的拆分问题
    洛谷 P1852 奇怪的字符串
    洛谷 P1433 吃奶酪
    洛谷 P1881 绳子对折
    洛谷 P1162 填涂颜色
    P1145 约瑟夫
  • 原文地址:https://www.cnblogs.com/lelin/p/12586612.html
Copyright © 2011-2022 走看看