前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >老驴学PR | Floorplan 之一

老驴学PR | Floorplan 之一

作者头像
老秃胖驴
发布2020-12-03 10:32:39
3.4K0
发布2020-12-03 10:32:39
举报
文章被收录于专栏:陌上风骑驴看IC陌上风骑驴看IC

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

概述


数字后端的布局包括:

  • 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, 编织供电网络。
  • 其他。。。。

面积估算


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

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

  • core limited: 芯片面积由core 的逻辑决定,通常die size 估算方式为:
  • IO limited: 芯片面积决定于I/O 个数,I/O 太多必须做得足够大才可以,此时面积用每个边要放置的I/O 个数来确定。

Macro 摆放


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

  • Using FLY line: Macro 的摆放在版图设计中至关重要,每一个细节都会影响后续的PPA,在摆放Macro 之前,可借助tools>schematic viewer 分析整体的架构及各个macro 之间的连接关系,也可在GUI 中根据飞线来分析连接关系。
  • 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。
  • Macros Alignment: Macro的pin 尽可能朝向中间的近似方形的区域,这样可以减少绕线长度,当Macro 之间有互联,可以把相应Macro 头对头摆放,尽可能不要对Macro进行翻转,Macro 是否可以翻转,可通过其LEF 确定。
  • Others: 通常大的Macro摆放尽量贴近版图的边缘和角落,这样有利用空间利用, 合理设置Macro 摆放的角度。在考量Macro摆放角度时,不仅仅考虑空间摆放的因素,还要根据端口的连接关系与互连模块的位置来决定。在实际设计时,不仅要根据端口与标准单元之间的连接关系,还要考虑Macro与Macro之间的互连关系进行综合判断。

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


驴说IC

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌上风骑驴看IC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档