罗风 · 2021年01月29日

老驴学PR | Floorplan 之一

老驴有个文史素养极高的朋友,偶尔会写一些让人起鸡皮疙瘩的东西,有次酒后老驴问他为什么不写个小说卖钱,说不定还能成为大IP 就发达了,此兄说他没有谋篇布局的能力,无法做到草蛇灰线埋伏千里。自此之后,老驴多次揣摩过『布局』这词儿,确实是个大词。在数字后端,布局也是,一切的成败都起始于布局也决定于布局,同一个设计在两个不同水平的秃硅农手里,做出的结果可能天差地别。

WeChat Image_20210129103437.jpg

概述

数字后端的布局包括:

  • ROW creation: 要确保所有类型cell 的ROW 都被正确创建,要确保所有该长ROW 的地方都有ROW 所有不该长ROW  的地方不要长,保持正确的前凸后翘。
  • I/O PAD placement: 信号PAD 的位置由前端设计人员决定,根据设计的要求把PAD 摆放在相应位置,在后端设计中除了信号PAD 还必须加上POWER PAD, 具体的数量根据工艺、设计需求及IO 库提供的user guide 来确定。
  • bump assignment<这是个啥?>: 给特定的PAD 粘一个Bump, 用于flip chip: Flip chip is a methodology for placing I/O bumps and driver cells over the entire chip area in either a boundary (peripheral I/O) or core (area I/O) configuration.
  • bus planning, 根据逻辑链接关系,排布总线。
  • macro planning, 根据逻辑链接关系及其物理形状,将其摆放到恰当的位置。
  • power planning, 编织供电网络。
  • 其他。。。。

WeChat Image_20210129103445.png

面积估算

布局第一步要确定形状及大小,如果没有特别需求形状就弄个矩形,不要为了好看找不自在。Floorplan 两个重要参数是Aspect Ratio 跟Core Utilization, 在Genus 中predict floorplan 做一个简单的floorplan 时只要约束这两个值即可,工具根据第一个值决定形状,根据第二个值预估大小。

WeChat Image_20210129103448.png

WeChat Image_20210129103451.png

芯片面积大小由设计决定,对于不同的设计,有两种情形:

  • core limited: 芯片面积由core 的逻辑决定,通常die size 估算方式为:

WeChat Image_20210129103454.jpg

WeChat Image_20210129103457.jpg

  • IO limited: 芯片面积决定于I/O 个数,I/O 太多必须做得足够大才可以,此时面积用每个边要放置的I/O 个数来确定。

WeChat Image_20210129103501.jpg

Macro 摆放

在整体形状跟大小确定了之后,最重要的就是把macro 摆好:

  • Using FLY line: Macro 的摆放在版图设计中至关重要,每一个细节都会影响后续的PPA,在摆放Macro 之前,可借助tools>schematic viewer 分析整体的架构及各个macro 之间的连接关系,也可在GUI 中根据飞线来分析连接关系。

WeChat Image_20210129103504.png

  • Port communication: Macro 尽量摆放在靠近相应输入输出口(I/O port)的位置。一般来说对于大型Macro,他们不仅仅需要与芯片内部的其他Macro或者标准单元进行数据交换,还需要与芯片外部的器件进行通信。比如,锁相环单元需要接收外部晶振信号,存储单元需要接收外部地址等。这种数据交换就是靠I/O port进行的,因此摆放在离相应的数据端口附近,有利于减少互联线长度,减少线上延迟,并节约布线资源。
  • Macro grouping: 同一个module 的Macro 最好放在一起,如果存在两个module 有公用的Macro 需要把这些Macro 放置在两个module 之间。
  • Spacing between two macros: Macro 与Macro 之间要留有一定空隙,给予布线资源。特别是在Macro 的间隙有端口的时候更是如此,设计者可以通过相邻Marco边界上端口的多少来决定留有多大的间隙比较合适。在使用EDA 软件的Floorplan设计时,同样可以给Macro加上halo 来控制Macro 与Macro 之间的距离。halo 分为placement halo 和routing halo,可以分别阻止在有halo 区域放置其他单元或者绕线,类似于blockage。但是halo 并不独立存在,而是依附于Macro 周围,可随Macro 移动。所以它是专门用来控制Macro 和其他单元之间距离的一种物理约束。对于block 之间的缝隙全部用soft blockage 填满,千万不要留洞洞。Macro 到core 边界留出一定距离用于优化时插入buf,改善时序,减小transition violations ,减少antenna violations。

WeChat Image_20210129103508.png

WeChat Image_20210129103510.png

  • Macros Alignment: Macro的pin 尽可能朝向中间的近似方形的区域,这样可以减少绕线长度,当Macro 之间有互联,可以把相应Macro 头对头摆放,尽可能不要对Macro进行翻转,Macro 是否可以翻转,可通过其LEF 确定。
  • Others: 通常大的Macro摆放尽量贴近版图的边缘和角落,这样有利用空间利用, 合理设置Macro 摆放的角度。在考量Macro摆放角度时,不仅仅考虑空间摆放的因素,还要根据端口的连接关系与互连模块的位置来决定。在实际设计时,不仅要根据端口与标准单元之间的连接关系,还要考虑Macro与Macro之间的互连关系进行综合判断。

WeChat Image_20210129103513.png

说一千道一万,布局是个技术活,但是自从有了mix placer 之后,强烈建议,在人肉之前先让工具刷一遍,关于mix placer 的文章可回顾《新技术 | Mixed placement flow 开篇》《新技术 | Innovus mixed placement 几种flow》《新技术 | Innovus Mixed Placer》《新技术 | Innovus Mixed Placer》。

作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/mip4xW7JaAIgSHmfcNBiWw
作者微信公众号
Capture.PNG

相关文章推荐

专题 | Innovus 2020:创新,永无止境
人物访谈 | 猎头金娟

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
19598
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息