全面介绍充满魔性的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 Placementblockages

Placement blockage的类型很多,一共分为9种,分别对应hard,hard_macro, soft, partial, category,rp_group,allow_buffer_only,allow_rp_only,register。

2PlacementBound

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

3) KeepoutMargin

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

4Cell SpacingConstraint

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

5Voltage 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修掉。

file:///C:/Users/user/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

最后,我们如何来运行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也只是敲一个命令而已。但熟悉这些基本概念,能让我们更好地利用工具,进一步提升我们的工作效率。

如图,从左到右,instance的状态依次为placed, fixed, softFixed.


原文网址:https://bbs.elecfans.com/jishu_1718607_1_1.html

你可能感兴趣的:(全面介绍充满魔性的Placement)