从零开始的PR学习之旅 -Floorplan

本文详细阐述了在进行芯片Floorplan设计前需要明确的目标,包括确定芯片面积、I/O单元布局、硬宏及模块放置策略。讨论了Box(如Diebox、IObox和Corebox)、Row、Track和物理约束等概念,以及Macro的摆放技巧和各种类型的约束。同时介绍了Netlist、Lib、LEF等技术文件在设计过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有什么,我要做什么,我要怎么做,我要做到什么程度
在做Floorplan之前,需要明确Floorplan的目的:
1. 确定芯片面积
2. I/O单元的摆放
3. hard macro,模块的摆放

细分概念:
1、box
2、row
3、track
4、physical constrains
5、blockage &Halo
6、Instance Group
7、Hierarchical Partition

一、Box
分为Die box、IO box、Core box
在这里插入图片描述
思考题:为什么Core box和IO box留有空隙?

二、Row
定义在LEF的Site中,Row也有自己的方向,通常相邻的row会相互abut并且flip,这样相邻site可以共用一根电源线,节省Power资源。

SITE sitename
CLASS {PAD | CORE}
SYMMETRY {X|Y|R90}
SIZE width BY height
END sitename

Row由Site组成

三、Track
在这里插入图片描述
pitch指的是指最小宽度加上最小间距之和

四、Macro(推荐手动摆放,数量多可以自动摆放)
1、memory(ram、row)
2、IP(PLL,sensor,…)
a) 模块尽量摆放在靠近相应输入输出口的位置
macro之间要留有一定空隙,给予布线资源
合理设置macro摆放的角度
在GUI界面的Floorplan —> Automatic FloorPlan
—> Plan Design(可以自动摆放Macro)
同一个module下的单元尽量放在一起
五、Constraint
不加约束的话,module可以放在core的任何一个区域。
Guide(向导约束):“可进可出”的约束,属于该模块的单元可以放置在该范围内,也可以放在该范围外,不属于该模块的单元也可以放置在改向导范围内
Region(区域约束):“可进不可出”的约束,属于该模块的单元只能放置在指定区域内,但该区域内可以放置其他单元
Fence(限制约束):强约束,“不可进不可出”的约束,属于该模块的单元只能放置在该区域内,且不允许放置其他单元
将module挪进Core后,工具会默认设置成Guide约束
六、Placement Blockage
1、Hard:在设计的任何阶段都不能摆放任何block和cell
2、Soft:在Placement阶段不能摆放std cell ,但是在place opt、CTS、ECO place、place legalization时可以被place
3、Partial:需人为设定一个百分比值,在place之后,该区域的place density不能超过设定的百分比
4、Macro Only:不允许摆放macro,但是对于std cell,可以任意摆放
七、Route Blockage
不允许该区域内走线
八、Halo
Halo是基于macro生长,可以跟着macro一起移动,而blockage是基于area
九、Instance Group
用于将来自不同module的不同instance组织在一起,确保它们在布局时能够更紧密地摆放
十、Partition
待更新

Physical Design Input

把做Floorplan前需要导入的文件在这记录一下
用到哪个文件再去细节学习
在这里插入图片描述

  1. Netlist(网表)
    作用:描述了逻辑器件的连接关系,网表其实还是用verilog来写的,只不过是以逻辑门的形式呈现出来。
    在这里插入图片描述

  2. Lib(标准单元时序库文件)
    包含std cell的时序信息,专门用来做时序综合、时序分析或者说功耗分析。一个lib文件主要包含std cell 的传播延时(cell delay)、输出负载(output load,即输出的电容负载)和输入的转换时间(input transition)。
    用途:计算std cell 的 cell delay,也就是计算传播延时,计算原理:A发生变化后要过多久B才能发生变化
    cell delay
    Timing Lib Module:NLDM(非线性延时模型,速度快但是精度低)、CCS(复合电流源延时模型,速度慢)
    NLDM:本质是一个查找表,只要确定了input transition和output load,就能确定cell delay。但是如果input transition和output load不能再NLDM里找到对应的值,那么就要进行插值计算,这样得到的cell delay的精度必然会下降,那么就可以使用CCS的Lib文件。
    CCS:在先进工艺中经常用到,能够提供精确的cell delay。它的本质也是一个查找表,但是除了拥有input transition和output load外,还拥有output charging current,也就是电流随时间变化的一个函数。因为电流是随时间变化的,所以每一个pin都会有比NLDM更多的查找表,工具会根据输出电流来计算cell delay。在这里插入图片描述

  3. LEF
    数字后端设计需要两种维度的文件,分别是physical view和timing view。其中physical view包含LEF文件。
    LEF文件需要描述所有std cell的一个物理特征,一种GDS版图的抽象形式,包含了每个单元电路的物理形状,但是只包含自动布局布线过程中我们需要关系的那部分信息,比如单元电路的形状、方向,pin的名称和位置等。
    在这里插入图片描述
    Macro IV:表示这是一个可以被调用的单元,名字叫IV
    Class core:放置在core区域
    Origin:原点坐标
    SIZE 3 BY 12 :宽度3,高度12(单位在Tech LEF 里)
    SYMMETRY:表示对称方向
    SITE CORE:表示可以放置在core区域
    PIN A:里面的内容描述的都是Pin A的形状,首先介绍A的方向(input),天线效应的尺寸(1.4),Port表示A是可以和外部连接,mental 1:在金属层1,形状是(0.5,5)到(1.0,5.5)
    OBS:阻挡物,不允许设置的范围在mental 1

  4. Design Constraints(设计约束文件)
    设计约束文件包含DRC(Design Rule Constraints)和OPT(OPtimization Constraints,优化约束)
    DRC:是半导体工艺厂提供的。
    1、最小或最大金属宽度、间距
    2、max transition and max cap(也叫load)
    3、等等
    SDC:Synopsys design constraints
    待更新

LEF:一种GDS版图的抽象形式,一般也叫physical view,包含了每个单元电路的物理形状,但是只包含自动布局布线过程中我们需要关系的那部分信息,比如单元电路的形状、方向,pin的名称和位置等
Lib:描述std cell 的timing信息
Tech LEF:包含了每层mental的最小间距、最小宽度、方向、单位,电阻,电容等等(工艺参数)
ITF:获得金属互连线的寄生参数信息
MAP:物理层映射
Macro:或者也叫Block
DEF:包含物理设计细节

### Fusion Compiler Placement Blockage 的原因与解决方案 在使用 Cadence 的 Fusion Compiler 进行物理设计时,Placement Blockage 是指某些区域被标记为不可放置单元的情况。这种情况可能由多种因素引起,并且需要通过特定的方法来解决。 #### 原因分析 1. **Power Planning 导致的 Blockage** 如果电源网络规划(Power Planning)过程中定义了过宽的金属层或者过多的 power strap,则可能导致这些区域无法用于标准单元的放置[^1]。 2. **Macro Placement 和 Keep-Out Layer** Macro 单元周围的 keep-out layer 可能会阻止其他单元靠近宏单元,从而形成 blockage 区域。这种现象通常发生在高密度设计中,当 macro 之间的间距不足以容纳额外的标准单元时尤为明显[^2]。 3. **Design Rule Constraints (DRCs)** 设计规则约束可能会强制某些区域成为 no-place zones,以满足制造工艺的要求。例如,在先进节点上,为了防止短路或其他电气效应,一些区域会被设置为 blockage 来保护信号完整性[^3]。 4. **User-Defined Blockages** 用户可以通过 floorplan 或者 PnR 工具手动指定某些区域作为 blockage。这可能是出于热管理、EMI 控制或者其他特殊需求考虑而设定的限制条件[^4]。 #### 解决方案 针对上述提到的各种 cause of placement blockage, 下面提供了一些可行的 solution: 1. **优化 Power Plan Design** 调整 power plan 中 metal width 和 pitch 参数可以有效减少不必要的 blockage 面积。合理配置 VDD/VSS track count 并利用 filler cells 填充空隙有助于缓解此问题[^5]。 2. **调整 Macro Surrounding Rules** 修改 macros around rules 如 halo distance 和 snap grid size 将允许更灵活地安排周边逻辑电路而不至于造成 excessive blockages[^6]。 3. **Relax DRC Requirements Where Possible** 在不影响最终产品性能的前提下适当放宽部分 design rule constraints 可以为布局提供更多自由度。当然这一操作需谨慎行事并与 foundry 方密切沟通确认可行性[^7]。 4. **Review and Modify User-Specified No-Place Zones** 定期审查并更新自定义无放区域能够确保它们仍然适用于当前阶段的设计目标。如果发现有不必要之处则应及时移除相应blockage definition[^8]。 ```tcl # Example Tcl Script to Remove Specific Blockage Area in Fusion Compiler set_blockage -clear [-layer M* | -type soft|hard ] -box {x1 y1 x2 y2} ``` 以上脚本展示了如何清除特定层次上的软/硬阻塞区域;实际应用时应依据具体项目情况定制命令参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值