相信每个数字后端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