老驴有个文史素养极高的朋友,偶尔会写一些让人起鸡皮疙瘩的东西,有次酒后老驴问他为什么不写个小说卖钱,说不定还能成为大 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》