论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的关系:

原文地址:https://www.cnblogs.com/lelin/p/12586612.html

时间: 2024-10-08 19:49:27

论placer,legalizer和blockage,bound的关系的相关文章

ios 的frame,bound,center

frame:指的是视图在父视图的坐标系统中的大小和位置. bound:指的是视图在试图本身的坐标系统中的大小(位置起点是原点). center:指的是视图在父视图坐标系统中的中心点. 贴张苹果官网的图: frame和bound的关系 下面这是其中一个发生变化,其余两个的变化,直接看吧,很浅显. Although you can change the frame, bounds, and center properties independent of the others, changes to

frame bound center等之间的关系

frame: 该view在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) frame:(50.0,50.0,100.0,100.0); bounds:该view在本地坐标系统中的位置和大小.(参照点是,本地坐标系统,就相当于红色view自己的坐标系统,以0,0点为起点) bounds:(0.0,0.0,100.0,100.0); center:该view的中心点在父view坐标系统中的位置和大小.(参照电是,父亲的坐标系统) center:(150.0,150.0); 如下图:

关系运算 - 数据库系统原理

关系模型有三个重要组成部分: 数据结构.数据库中全部数据及其相互联系都被组织成"关系"(二维表格)的形式. 数据操纵.关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作.关系运算又分为:关系代数和关系演算两类. 数据完整性规则.数据库中数据必须满足实体完整性.参照完整性.用户定义完整性等三类完整性规则. 关系代数的五个基本操作 关系代数是以关系(属性个数相同的元组的集合)为运算对象的一组高级运算的集合.关系代数的操作可以分为两类: 传统的集合操作:并.差.交.笛卡尔积(乘法)

iOS图层关系

原文:http://blog.csdn.net/xingboss3/article/details/7890238 UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为IOS中几乎所有可视化控件都是UIView的子类.负责渲染区域的内容,并且响应该区域内发生的触摸事件 UIView的功能 1.管理矩形区域里的内容2.处理矩形区域中的事件3.子视图的管理 4.还能实现动画  UIView的子类也具有这些功能 下图就是视图的内层次 1)三个结构体 CGPoint.CGSize.

Android注解使用之Dagger2实现项目依赖关系解耦

前言: 最近牵头发起公司app的重构工作,如何通过重构让项目的耦合降低.开发效率提高,一直是我努力的方向,今天来学习一下一个注解框架Dagger2,然后看看如何使用它来降低项目的耦合. Dagger2 一句话:一款快速的注解框架,应用于Android.Java,由 Google 开发和维护,是 Square 的 Dagger 项目的分支. gitHub:https://github.com/google/dagger Dagger2采用依赖注入方式,依赖注入是一种面向对象的编程模式,它的出现是为

再说mybatis3:Invalid bound statement (not found)

新手使用mybatis3的心酸,应该也只有新手才能体会了,网上一堆解决异常的办法都不起作用,心态不好的话,砸电脑都有可能了,还好,我的心态还可以,承认是自己的学识不够,只能怒而学习之,呵呵,扯得有点多. 最近熟练springmvc+mybatis3的开发框架,在搭建开发环境的时候遇到了如标题这样的问题,代码分层上还是普通的Controller.Service.Service Impl.Mapper层,然后使用注解的方式注入bean,注解用的是JSR-330的规范,类似@Inject.@Named

poj 2566 Bound Found 尺取法 变形

Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2277   Accepted: 703   Special Judge Description Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronautic and Space Administration

Desugar Scala(16) -- Lower Bound

欢迎关注我的新博客地址:http://cuipengfei.me/ Lower bound,不知道这个词的确切中文翻译是怎样的.我们直接看例子吧. 1 2 3 class Pair[T](val first: T, val second: T) { def replaceFirst[R >: T](newFirst: R): Pair[R] = new Pair[R](newFirst, second) } 我们定义一个叫做Pair的类,其中可以包含两个元素,元素类型为泛型的T. Pair类中有

[台大机器学习笔记整理]作为结果的映射关系的泛化问题

L5 在上节课中已经可以对有限个hypothesis的假设集列出霍夫丁不等式如下: 在进行机器学习的过程中,我们一方面要保证Ein与Eout是比较接近的,另一方面为了获取一个比较好的结果,也希望Ein能比较好.于是有了以下的一个基本trade-off: 当假设集大小M比较小的时候:能够很容易保证Ein与Eout比较接近,但是这个时候由于M比较小,不那么容易选取到一个Ein比较小的结果. v.s. 当假设集大小M比较大的时候:由于备选假设多,所以能够较容易地选取到一个Ein比较小的结果,但是不容易