学习目标:
- 了解基本的 flooplan objects
- 了解 chip floorplan 和 block level floorplan之间的差别
- 了解floorplan的基本概念及相关技术
Floorplan Content
chip内容
- Create chip(最外面一圈,chip size)
- Pads & bumps placement(pad靠近chip边界,bump涉及封装。封装形式有wire bound 和 flip chip倒装。一般wire bond里面有pad概念,flip chip有bump(焊点球)概念 )
- Macro & IP placement
- create power network(从顶层一层一层,横纵交错,供电)
- special cell placement(例如,welltap,endcap)
- std cell placement constraint(例如右上角红色区域,假如此模块与IO或SRAM有关联,希望这个模块在此位置而不是在其他位置,可以对此模块定义约束,约束此模块摆放在这里)
Floorplan -- chip floorplan VS block floorplan
如果chip很大,把一块块模块,切成block给block owner,block做完之后,抽取它们的lib和lef返给顶层,顶层在基于lib、lef,把模块摆好,做顶层APR。
chip level
chip非常大,考虑到IO、PG网络,各个block数据流,走线,各个block切给blockowner,以及pin的规划等等。
block level
顶层金属一般是top切下来。
例如,内部metal8、metal9工艺
m8、m9厚金属做PG网络,m8、m9为了保证Idrop强壮性、整个chip拼起来没有DRC以及PG网络完整性等,一般chip高层金属m8、m9从顶层切下去。
m7、6、5,这些可以根据自己的block、模块耗电情况自己规划。
一般做规划时,这些脚本也会有不同的owner做开发,可以做参考
block level floorplan 关注内容:
- macro placement(例如RAM的摆放)
- power planning
- special cell placement (endcap、welltap)
chip level size
- die area
- core area
chip和block level都有die area和core area。
die area和core area一般会留一个GPIO的高度
在老的工艺里面,EDA工具还不太智能,一般会定义IO row 和 core row。
现在,IO row这里也可以用core row,只要在做完GPIO之后,边界盖一圈placement blockage。
placement blockage目的:阻止standard cell到GPIO区域
block level size
- die area
- core area
一般做项目的时候,block level的size:
- 从top切下来(可能是def或tcl的格式)(一般情况下)
- 人为定义一个size提前看一下什么模块可以做成多大,面积有多小,例如ARM CPU,可以先人为定义一个size,然后去规划,保证CPU面积最小,性能最好。做一些提前的try。
- 极个别情况,block已经做好了,chip切的时候,就按照block原有的形状去切
Two basic concepts related technology in floorplan
芯片28nm、12nm等工艺信息都在technology file中可以找到。 technology file中定义了row的信息。
row:
- Standard cell row(std cell摆放在row里,不可以超过row)
- IO row(GPIO高度)
APR做PG网络的时候,Vdd对着Vdd,Vss对着Vss,不会放反。打PG网络的时候,会沿着row。
假如std cell是由m2触pin的,m2上盖着一层PG网络,叫做power rail。
power rail给std cell供电,所有的std cell都会在这个row上面摆,APR根据这些row摆放。
std cell row不一定是单个row,可以是2row、3row,但一定是最小row的整数倍。出来IP,IP顶层会有power mesh和顶层mesh连接。
Track: metal track
lef对所有金属最小位置和spacing是有要求的。所有的线最好放在tarck上。
不放在track上可以吗?
可以,只要保证线与线之间没有DRC或者其他问题。
如果大量线不放在track位置,会怎么样?
会导致route和route-opt的runtime变长。 一般情况下,基于track的优化情况比较多。
如果在route-opt期间,这两个金属线做的平行比较长,cover比较大,导致SI、crosstalk,旁边没有金属,有可能导致一根线移到非track上,这种情况叫做wire spread,是可以允许的 。
floorplan阶段需要做的事情
- Physical only cell placement;(endcap, welltap)
- IP/memory/IO/bump placement/assignment
- Power/ground(PG) stripe plan
block level的一个design
endcap和welltap,提前撒进来
PG网络