4. Floorplan规划:芯片面积估算、IO规划、宏单元(Memory)摆放、电源网络规划
Floorplan,说白了就是给芯片“画地皮”。
我见过不少新手,一上来就急着跑Place & Route,结果后面发现面积爆了、绕线堵死了、IR Drop严重。嗯,那时候再回头改Floorplan,代价可就大了去了。所以,这块儿咱们得好好聊聊。
4.1 芯片面积估算:别太乐观,也别太悲观
面积估算,是Floorplan的第一步。你想想看,如果连房子要盖多大都不知道,你怎么去买地皮?
我个人习惯,先做“粗估”,再做“细调”。
Chip_Area = (Std_Cell_Area + Macro_Area) / Utilization
这里的 Utilization(利用率)是关键。我刚开始做项目时,总想把利用率推到90%以上,觉得这样省面积。结果呢?绕线资源不够,时序收敛不了,最后不得不重新做Floorplan,浪费了两周时间。
一般来说,我建议这样取值:
| 设计类型 | 建议利用率 | 我的经验 |
|---|---|---|
| 纯逻辑设计 | 70% - 80% | 可以往75%靠,留点余量 |
| 含大量Memory | 60% - 70% | Memory周围要留绕线通道 |
| 高速接口设计 | 50% - 65% | 我曾经吃过亏,利用率65%都嫌高 |
4.2 IO规划:把“门”开对地方
IO Pad的摆放,就像给房子开门。门开错了,进出都不方便。
我记得有一次,一个同事把高速IO和低速IO混在一起,结果信号串扰严重,眼图都睁不开。后来重新规划,把高速IO单独放在一边,中间用地Pad隔离,问题才解决。
IO规划的几个原则:
- 分组摆放: 同类型的IO(如DDR、GPIO、PLL)尽量放在一起。
- 电源IO均匀分布: 每隔4-8个信号IO,就要放一个电源/地IO。这是为了给芯片内部供电。
- 高速IO远离噪声源: 比如,不要把DDR IO放在靠近开关电源Pad的地方。
- 预留测试IO: 我建议至少留4-8个专用测试IO,方便后期调试。
4.3 宏单元(Memory)摆放:别把“大家伙”放错地方
Memory是芯片里的“大家伙”,动辄占几平方毫米。摆错了,整个Floorplan就废了。
我见过最惨的一次,是有人把Memory全部堆在芯片一角,结果那一角的电流密度爆表,IR Drop直接干到15%。芯片流片回来,高温下直接罢工。
Memory摆放的几个要点:
- 分散摆放: 不要把Memory全部堆在一起。分散开,有利于电源网络均匀供电。
- 对齐边界: Memory的边界尽量与标准单元的行(Row)对齐。这样能减少绕线浪费。
- 留出绕线通道: Memory周围至少留出2-3个Track的绕线空间。别贴得太紧。
- 考虑数据流: 如果Memory和某个模块交互频繁,就把它们放近一些。比如,Cache Memory尽量靠近CPU Core。
4.4 电源网络规划:芯片的“血管”
电源网络,就是芯片的血管。血管堵了,芯片就“心肌梗塞”了。
电源网络规划的核心,是保证每个标准单元都能得到足够的电流,同时IR Drop控制在5%以内。
我一般按以下步骤来做:
- 第一步:确定电源环(Power Ring)宽度。 根据芯片总电流和允许的IR Drop,计算Ring的宽度。公式很简单:
Width = I / (J * Layer_Thickness),其中J是电流密度。 - 第二步:规划电源条带(Power Strap)。 每隔一定距离(比如50-100um)拉一条VDD和VSS的Strap。Strap的宽度和间距,决定了电源网络的“密度”。
- 第三步:连接标准单元。 标准单元的VDD/VSS pin,通过Follow Pin连接到电源Strap上。
4.5 知识体系:一张图看懂Floorplan
说了这么多,咱们用一张图来总结一下Floorplan的核心逻辑:
这张图把Floorplan的四个核心模块串起来了。你想想看,面积估算决定了“地皮”大小,IO规划决定了“门”的位置,Memory摆放决定了“大家伙”的布局,电源网络决定了“血管”的走向。四者缺一不可。
好了,这一章的内容就到这里。记住,Floorplan是芯片设计的“地基”,地基打好了,后面的工作才能顺风顺水。
可可精品资料库