全面介绍充满魔性的Placement

相信每个数字后端PR工程师都知道Placement。它是我们设计芯片的两大目的之一——布局布线(Place&Route)。这也是最体现EDA工具的实力强大之处。可能大家平时只是简单的运行一个命令,但是对工具来说,要把几千万个标准单元在几个小时之内正确地摆放好,这是一件非常困难的事情。那今天我们就来学习一下这充满魔性的Placement。

笼统划分的话,Floorplan之后,CTS之前的的stage都归为Placement(现在place已经与preCTS合并为place_opt,传统的create_placement并不推荐使用,但是为了方便理解,这边还是分章节介绍)。那Placement主要摆放了哪些东西呢?我罗列了一下,主要有以下几类:
1) Standard cell
2) Jtag cell
3) Scan cell
4) Spare cell
5) EndCap cell
6) Welltap cell
7) Decap cell
8) Logic Tie_high/Ti_low cell
9) Filler cell
10) Low power cell

Placement有很多限制约束:
1) Placement blockages
Placement blockage的类型很多,一共分为9种,分别对应hard,hard_macro, soft, partial, category,rp_group,allow_buffer_only,allow_rp_only,register。

2)Placement Bound
Bound是一个约束的概念,用来控制placement的摆放,通常,在一个Bound区域里的standard cell会摆放得更近一些。

3) Keepout Margin
这也是blockage的一种,只是比较特殊。它会随着cell一起移动,有点类似覆盖在这个cell上,在这个光圈内的区域不能放置其他单元。当几个Macro之间有congestion问题时,可以添加一些Keepout Margin,阻碍buffer, inverter的插入。

4)Cell Spacing Constraint
该约束可以控制standard cell与standard cell之间以及standard cell与各种boundary之间的摆放间距。

5)Voltage Area
对于multiVoltage的设计,所有的standard cell都必须摆放在对应的voltage area 中,相当于一个exclusive的move bound。

Placement的状态又可以分为unplaced, placed, legalize_only, fixed,locked
unplaced:该instance还未被摆放
placed:该instance已经被摆放,但可以被其他命令移动
legalize_only:该instance已经被摆放,但只能被legalize移动
fixed:该instance已经被摆放,可以被resize,但是不能被其他命令移动
locked:该instance已经被摆放,任何命令,包括手工,都不可以动它

整个Place过程分为两大步:coarse placement(粗摆放)和legalization(合理化)

coarse placement实现的是一个从无到有的过程,它并不会关注standard cell的位置合理性(包括oriention,是否在row上,是否有overlap等等)。工具根据timing,congestion等因素会给standard cell一个大致的位置,所以称之为coarse placement。

而legalization则主要负责将standard cell的位置合理化,但只是在一个小范围内变化,并不会对整个placement的布局产生太大变动。也许会产生新的timing violation,通常会被后面的optimize修掉。

最后,我们如何来运行placement呢?

现在的placement已经和prects的optimize合成在一起,敲击place_opt就可以跑完整个place和optimize的过程。整个命令也可以阶段性的拆分为五步initial_place, initial_drc, initial_opto, final_place, final_opto
initial_place:初步的placement,运行coarse placement
initial_drc:初步的drc修复过程,做一些high fanout synthesis和drc的修复
initial_opto:初始的优化,开始修复timing, congestion, power等因素
final_place:进一步优化timing和routability
final_opto: legalize placement

介绍到这就结束了,虽然现在的工具越来越智能,placement也只是敲一个命令而已。但熟悉这些基本概念,能让我们更好地利用工具,进一步提升我们的工作效率。

原文地址:http://blog.51cto.com/14075497/2343818

时间: 2024-10-29 10:19:51

全面介绍充满魔性的Placement的相关文章

jvm 类文件结构学习

本文以代码示例来学习 java 类文件的结构,其中对类文件结构的学习均来自周志明先生所著的 <深入理解 Java 虚拟机>一书,在此表示诚挚的感谢. 代码如下: 1 package com.reycg.jvm; 2 3 public class ReferenceCountingGC { 4 5 public Object instance = null; 6 7 public static void testGC() { 8 ReferenceCountingGC objA = new Re

别了青春与流年,遇见下一个自己

转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer 如果说岁月是年轮,我们便是推行者,如果说成长是一场华丽的蜕变,我们便是领舞者.一路走来,太多不易,告别青春的年少轻狂,我们成了岁月里被磨平的棱角,静静的守在属于自己的一亩三分地. 2016-时间是长了脚的妖怪,跑的飞快 四年时光,匆匆而过,沈阳占据了我23岁之前的太多第一次,第一次一

[考试总结]20150314

// 此博文为迁移而来,写于2015年3月17日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vu75.html 嗯....好久没有发考试总结了.今天没事做来水一发.这次考试主题是搜索...所以分数大家都挺高的.但是充满魔性的第四题表示还是不太懂正解怎么打. --------------------------------------------------------------------------------

Effective C++ 条款52

写了placement new也要写placement delete 本文主要内容是对placement new 和 placement delete的介绍,以及在什么情况下使用placement new和placement delete. 对于语句Widget* pw=new Widget;来说,该语句做了两件事情,第一件事情是申请了内存区域:第二件事情是在该内存区上进行对象的构造,即调用构造函数.我们设想其中一种执行情况,当第一件事情完成,而第二件事情出现异常,那么我们应该怎么去处理,很显然

和苏打绿的故事

[原来在SAE的blog上,都转到CSDN了..] 和苏打绿的故事 发表于 2016/02/13 晚上,androidstudio被我搞坏了,郁闷的一边修复问题,等待.一边刷知乎.兴起搜到关于苏打绿的问题,题曰: 你与苏打绿有什么故事? 于是,一边等待AS更新,一边码起了字. 答: 正好借题主的问题,过来填个坑,回忆一下和苏打绿之间的故事. 高中,应该是09年的时候,第一次看到了无与伦比的美丽的MV.此前仅限于在一些歌单见过苏打绿这个名字,但是一首歌都不知道(包括被很多人爱着的小情歌,那时候都不

老男孩IT教育在线3期的学习自我介绍与决心书

哈喽,大家好!我叫代少齐,来自北京,学历大专,专业是地理信息系统应用与开发,上次的自我介绍不知道是什么时候了,很感谢老男孩给我这次机会.工作三年了,90后的我刚走出校园时,自信满满,对生活充满了希望.(*^__^*) 嘻嘻--.我的第一份工作干的地图的二次开发,这个行业不是很吃香,干开发的这一年学到了很多知识和经验,有喜有忧.喜是学到很多工作经验和为人处世,忧是做事情比别人慢半拍而且逻辑思维不强,学的很痛苦.正因为这我不得不辞掉开发的工作,后来找了份测试相关的行业,那是第一次接触Linux操作系

【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(一)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在APP市场上,经常有一些充满新意的应用让我们眼前一亮,比如微信的面对面加好友,支付宝的声波支付等等,都是通过声波的方式进行握手通信,今天这篇文章将介绍声波通信和声波验证的实现原理和代码实现. 首先介绍一下声波验证的原理.如果我们想发出声音,就必须震动,说话是声带在震动,手机能播放音乐是喇叭在震动.既然发出声音必须震动,那么就有震动快慢之分,我们把震动的快慢叫做声音的频率.频率低的声音低沉有力,能传播很远

转:Android新特性介绍,ConstraintLayout完全解析

转:http://blog.csdn.net/guolin_blog/article/details/53122387 本篇文章的主题是ConstraintLayout.其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能.我们都知道,在传统的android开发当中,界面基本都是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,我也一直都不推

activiti搭建(五)BPMN介绍

对于BPMN我也不是十分清楚,目前也只是因为对于Modeler中不熟悉的组件查询,来对这部分的内容进行学习,不求一次理解,边学边理解吧.所以这一章的介绍会比较简单,但也足够了. Modeler中的组件列表划分和BPMN的略微有些不同,而且有些内容好像也没有,最后移植到自己的demo中,还遇到了一些问题,如果可能的话,之后会详细介绍一下Modeler的构成,大致是官方文档的第七节Overview以及第十节Process(重要),网上已有人将其归纳总结过了 http://wenku.baidu.co