ICC Floorplan遇到的坑以及解决方法

floorplan 的那些坑

写在开头:本博客完全是为了记录自己做项目的坑,希望对大家有帮助,至于理论的知识还是请大家移步到官网哈~ 谢谢~

目录

1. pad 的摆放

1.1 读入pad.tcl

1.1.1基本的语句
1.1.2 pad 方向问题
1.1.3 io cut
1.1.4 Corner pad

2. macro的摆放

3. 电源网络

3.0 power plan

3.1 macro 的 power ring

3.2 PG strap

3.3 std cell 的 power rail

3.4 power ring与macro相连

3.5 检查

3.6 PG strap 打不满的解决方法

1. pad的摆放

1.1读入pad.tcl

你要是和我一样自己去手动摆放,那你一定是个小可爱,还傻乎乎的,哈哈~
首先create_floorplan 之后工具会默认给你摆放pad,但是因为项目要求,考虑IP以及对于pad的位置关系,肯定是需要重新摆放的。吐出原始的pad_side.tcl 我们对其进行修改即可。
在这里插入图片描述
在这里插入图片描述

1.1.1基本的语句:

set_pad_physical_constraints -pad_name u1_cornerpad         -side 1  -order 1

side以及order的顺序
参考上图的side以及order。其中padname是pad的例化名,不是库里面的名字
你以为这就完了?(并没有,哭辽~~)

1.1.2 pad 方向问题

从版图上看有可能会出现pad的方向问题,正确的pad 的数据port应该朝core内,如下图,有关修改pad方向命令如下:
set_pad_physical_constraints -pad_name PBSUDL8RA (库里面的名字)-lib_cell_orientation {S S S S}
至于怎么旋转大家可以man一下这命令
有的公司的工艺库不是很好,比如宏力的Corner pad 以及filler pad,ICC 工具没法识别,这时需要将.lef文件中CLASS这个修改为Corner filler,然后重新生成物理库才可以。
在这里插入图片描述

1.1.3 io cut

在pad_side.tcl里面有io cut ,这个是模拟pad 和数字pad之间的分割pad。
io cut 在综合之后的网表里面是没有的,需要create

create_cell {u1_io_cut u2_io_cut u3_io_cut u4_io_cut} PDIODE8R

但是这句话不能写在pad_side.tcl里面,因为

read_pin_pad_physical_constraints ../scripts/usr_scripts/AAA_pad_side.tcl 

这个命令不识别 create_cell ,所以可以加在floorplan里面。
create 好之后就可以在AAA_pad_side.tcl 加入其位置信息了

1.1.4 Corner pad

corner pad create_cell {u1_cornerpad u2_cornerpad u3_cornerpad u4_cornerpad} PCORNERR

同样上面的问题,不再赘述

1.2 pad filler

首先插入模拟pad filler
要插入某个区域使用:

insert_pad_filler -cell $pad_filler_A -bounding_box {{0 0} {363 199}}

fix住模拟pad filler(在图形界面操作)
插入数字 pad filler(此时不需要选中区域)

2. macro的摆放

首先有以下几个原则:
1.macro尽量在core四周摆放
2.macro的pin的方向,尽量不要挡住port 的布线
3.macro 之间要有margin,并且设置place blockage
4.尽量让STD cell 的区域是完整的,不要有窄沟道
5.可以让工具自动摆一个作为参考:
placement——place macro and standard cells
6.善于利用 flylines hierarchy等工具,查看他们的逻辑连接关系

3. 电源网络

3.0 power plan

1.了解您的power的方向。
通过查看工艺库中std cell 版图中power(VDD VSS)是使用的哪一层,是什么方向。
如果std cell power 是M1 且是横向,那么您的power strap 如下设计:
H:M1 M3 M5 …
V:M2 M4 M6 …
相反,如果std cell power 是M2 且是横向,那么您的power strap 如下设计:
H:M2 M4 M6 …
V:M1 M3 M5 …
2.查看您macro的power ring是哪一层,什么方向,按照同样的设计打macro的power ring
3.考虑整体的供电关系,top给core的供电
4.考虑 IR drop

3.1 macro 的 power ring

考虑到有的macro和std cell的power 是不一样的,比如标准单元的供电是1.2V ,但是某IP 需要3.3V供电,那么就需要打不同的power ring。
首先需要创建 power port(此处举例两种)

derive_pg_connection -power_net VDD -ground_net VSS -create_ports top
derive_pg_connection -power_net VDD -power_pin  VDD -reconnect
derive_pg_connection -ground_net VSS -ground_pin VSS  -reconnect

derive_pg_connection -power_net VDD1 -ground_net VSS1      -create_ports top
derive_pg_connection -power_net VDD1 -power_pin VDD1       -cells [get_flat_cells *] -reconnect
derive_pg_connection -ground_net VSS1   -ground_pin VSS1   -cells [get_flat_cells *] -reconnect`

这两种power 都是创建在top

之后再macro 周围打ring

#Create power ring around ROM and SRAM use VDD VSS
create_rectangular_rings  -nets  {VDD VSS}  -around specified -cells  {spram2048x32_bist_spram2048x32_block_instance_0/sran2KX32b_instance_0  rom16384x32_block_instance_0/u_rom64k}  -left_offset 0.5 -left_segment_layer METAL4 -left_segment_width 1.5 -right_offset 0.5 -right_segment_layer METAL4 -right_segment_width 1.5 -bottom_offset 0.5 -bottom_segment_layer METAL5 -bottom_segment_width 1.5 -top_offset 0.5 -top_segment_layer METAL5 -top_segment_width 1.5
#Create power ring around ADC use VDD1 VSS1 (3.3V)
create_rectangular_rings  -nets  {VDD1 VSS1}  -around specified -cells  {u_analog/u_TOP_ADC}  -left_offset 0.5 -left_segment_layer METAL4 -left_segment_width 1.5 -right_offset 0.5 -right_segment_layer METAL4 -right_segment_width 1.5 -bottom_offset 0.5 -bottom_segment_layer METAL3 -bottom_segment_width 1.5 -top_offset 0.5 -top_segment_layer METAL3 -top_segment_width 1.5

3.2 PG strap

本项目考虑整体power plan之后,计划PG strap 如下安排
H: M5
V: M4 M6

set_preroute_drc_strategy -min_layer METAL1 \
                          -max_layer TM2


create_power_straps  -direction vertical  -start_at 141.4 -num_placement_strap 999 -increment_x_or_y 18.45 -nets  {VDD VSS}  -layer METAL4 -width 1.21 -pitch_within_group 8.2


create_power_straps  -direction horizontal  -do_not_route_over_macros -start_at 141.925 -num_placement_strap 999 -increment_x_or_y 89.18 -nets  {VSS VDD}  -layer METAL5 -width 1.87 -pitch_within_group 44.1

set_preroute_drc_strategy -min_layer METAL5 \
                          -max_layer TM2

create_power_straps  -direction vertical -do_not_route_over_macros  -start_at 207.9 -num_placement_strap 999 -increment_x_or_y 252 -nets  {VSS VDD}  -layer TM2 -width 10 -pitch_within_group 126

需要注意以下几点:
1.option中 -start_at 要考虑metal的track,尽量考虑PG strap 不占布线资源
2.以下这两个选项要考虑到.tf文件中metal的pitch,且最好VDD VSS均匀打,所以 第一个是第二个2倍左右(左右是为了给其他布线让资源)
-increment_x_or_y
-pitch_within_group

3.3 std cell 的 power rail

set_preroute_drc_strategy -min_layer METAL1 \
                          -max_layer METAL4
preroute_standard_cells -nets {VDD VSS} \
                        -port_filter_mode off  \
                        -cell_master_filter_mode off  \
                        -cell_instance_filter_mode off  \
                        -voltage_area_filter_mode off

第一个命令是为了power rail 只与M4打孔,而不要再打到高层,占布线资源(很重要)

3.4 将macro 的 power ring与macro相连

#preroute the ROM SRAM cell
set_preroute_drc_strategy -min_layer METAL3 \
                          -max_layer METAL4
preroute_instances -ignore_pads \
                   -ignore_cover_cells \
                   -select_net_by_type \
                    specified -nets {VDD VSS}

#preroute the ADC
set_preroute_drc_strategy -min_layer METAL1 \
                          -max_layer TM2
preroute_instances -ignore_pads \
                   -ignore_cover_cells \
                   -select_net_by_type \
                    specified -nets {VDD1 VSS1}

注意用好set_preroute_drc_strategy

3.5 检查

verify_pg_nets
这个命令可以查出没有供上电的cell

3.6 PG strap 打不满的解决方法

使用命令synthesis_fp_rings -net -polygon -corner_bridge -layer -width -space -offset
其中polygon是ring的坐标点

  • 14
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
icc2powerplan 是一种电源管理工具,旨在帮助用户优化计算机的能源使用效率。通过这个工具,用户可以轻松地调整计算机的电源设置,从而在延长电池续航时间的同时提高计算机的性能。 icc2powerplan 提供了多种不同的电源方案,用户可以根据自己的需求选择合适的方案。例如,如果用户希望延长笔记本电脑的电池使用时间,他们可以选择低功耗模式,将CPU的运行速度和功率调整到最低。而如果用户需要进行高性能计算任务,他们可以选择高性能模式,将CPU的运行速度和功率调整到最高。此外,icc2powerplan 还提供了平衡模式,该模式在延长电池续航时间的同时,仍保持了相对较高的计算性能。 除了上述的电源方案选择之外,icc2powerplan 还可以根据用户的使用习惯和时间自动调整电源设置。例如,用户可以在白天使用高性能模式以应对繁重的计算任务,而在夜晚自动切换到低功耗模式,以节约能源。 总而言之,icc2powerplan 是一款功能强大的电源管理工具,可以帮助用户优化计算机的能源使用效率。通过合理调整电源设置,用户可以在延长电池续航时间的同时提高计算机的性能,兼顾了节能和高性能的需求。使用 icc2powerplan,用户可以根据自己的需求选择合适的电源方案,或者自动切换电源设置,提供了更灵活和智能的电源管理方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值