ICC2:Design Planning(03)Power Network Synthesis

news2024/11/24 18:57:15

在shape block之后,接下来可以做pg规划。power network creation可以分为如下几个部分:

4639db26b9894a79bbb923a23d882961.jpg

1.Add Power Pad

在规划power mesh之前需要先插power pad,所以要在create abstract阶段load upf,如果规划power mesh时没有power pad,也需要设置虚拟的power pad,power pad的place与signal IO一样使用place_io命令。

1.1 Setting Power I/O Constraints

插入power io可以使用插signal io的方法,也可以使用插power io独立的命令set_power_io_constraints+place_io

1) set_power_io_constraints+place_io

set_power_io_constraints \

  -io_guide_object <io guide>

  -reference_cell <io library cell name>

  -ratio <连续power io之间最多signal io的数量> ;#只看signal io,不算power io

  -offset <io guide起点与最近的power io的最大距离>

  -spacing <power io之间最大距离>

  -share <一个bump能接最大数量的power io>

举例如下:

set_power_io_constraints -io_guide_object [get_io_guides "*bottom *top"] { {reference: VDD_NS} {ratio: 7} }

set_power_io_constraints -io_guide_object [get_io_guides "*bottom *top"] { {reference: VSS_NS} {ratio: 8} }

5308b58ddbcd477b91196b9ee16d43c3.jpg

如上图,VDD_NS radio为7两个power io之间放了七个signal io,而VSS_NS ratio为8,对应两个ground io之间有8个signal io。

2) set_signal_io_constraints+place_io

用户可以手动设置power io与signal io的相对位置和数量。举例如下:

create_cell pg_vddh_left1 [get_lib_cells */VDD_EW]

create_cell pg_vddh_left2 [get_lib_cells */VDD_EW] ... set_signal_io_constraints –file all_pads.io

## all_pads.io

...

pad_iopad_13

} {{40}

pg_vss_left_1

pg_vddh_left_1

}

{{order_only}

pad_iopad_14

...

1.2 Insert Physical Only I/O Cells

在power io和signal io都放置好了,可以放physical only的I/O cell了,包括如下三种:

1) create_io_corner_cell

在两个io guide之间插corner cell,一般在芯片的四个角,corner cell的方向跟着第一个io guide走。

添加方式有两种,一种指定inst name一种指定ref cell name,前者需要网表里有corner cell。

create_io_corner_cell \

-cell <inst> \

{ <io_guide1 io_guide2> }

create_io_corner_cell \

-reference_cell <lib_cell> \

{ <io_guide1 io_guide2> }

举例如下:

88b16a2cb89e47d5a79464f19e7f53ea.jpg

2) create_io_break_cells

把电压不同的io ring切断开。

create_io_break_cells

              [-reference_cells lib_cell_name_list]

              [-cells cell_name_list]

              [-location start | end | both | offset | cell]

              io_guide_list

abd9f34724e84b868e9fcfe87be696ff.jpg

3) Add I/O Filler Cell

填补IO之间的空隙。

f5e8a59b33aa4b75808e3e4d437ad615.jpg

1.3 Route Flip Chip Nets

RDL 绕线用来连接IO和bump。

e0d3826b4ddb48b8906c3f1429410187.jpg

1) Set routing rule for the RDL nets 

create_routing_rule RDL -widths {MRDL 12}

set_routing_rule -rule RDL \

[get_nets -of_objects [get_pins -of_objects \

[get_cells -filter "ref_name == BUMP"]]]

2) Route the RDL nets

route_rdl_flip_chip -layers {MRDL} \ [-nets <nets> | -nets_in_file <nets_file>]

3) optional,remove or reduce the amount of U and Z routing shape。

optimize_rdl_routes -layer RDL -reserve_power_resources true

fe55cea006fd41cf8127a6367e32a6c7.png

4) optional,route a collection of nets and match their length

route_rdl_differential -layer RDL -nets [get_nets "A B C"]

d933e754da404b14b46764ec8e126f79.png

2.Design the Power Network

Pattern Based Power Network Synthesis(PPNS) 流程如下:

a67e63f85f7f41a28f15b2745ea87aa4.jpg

 

2.1 PG Regions

pg region可以依托于core area,block,voltage area,macro/groups of macros ,groups of regions ,polygon创建。

示例:

create_pg_region r1 -core -exclude_macros {u_one u_two } -macro_offset 5.0 ;#依托于core area创建pg region,但是要排除两个macro,并与macro之间留有5.0um的间距。

001d33f65c3a42a19224839d96d360e7.jpg

2.2 PG Ring

定义pg ring需要指定水平和纵向layer,以及间距,宽度和via rule等条件,也可以针对每条边单独设置宽度和间距。

承接上面的例子:

create_pg_region r1 -core -exclude_macros {u_one u_two } -macro_offset 5.0

create_pg_ring_pattern ring1 -horizontal_layer M5 -vertical_layer M4 -horizontal_width 2.0 -vertical_width 2.0

set_pg_strategy s1 -pg_regions {r1} -pattern { {name: ring1} {nets:{vdd vss}} }

compile_pg -strategies s1

22fdd912d7284c4a99150a96b7380091.jpg

pattern还有blockage,parameters,extension的拓展用法,分别代表屏蔽,参数,延伸。用法可以看如下示例:

create_pg_ring_pattern ring1 -parameters {hw vw} -horizontal_layer M5 -vertical_layer M4 -horizontal_width {@hw} -vertical_width {@vw} :#@hw和@vw就是参数,需要在pg strategy中用parameters声明。

set_pg_strategy s2 -pg_regions {r1} -blockage {voltage_areas: r2} -pattern { {name: ring1} {nets: {vdd vss}} {parameters:{3 2}} {offset: {4 2}} {skip_sides: 1} } -extension { {side: 2 6} {direction: L} {stop: outermost_ring} } ;#blockage意味着屏蔽voltage area r2,extension意思是延伸,side指定边都是最左边为1号边。

66e807d9f34841228f6059cc25fc0657.jpg

2.3 PG Mesh

pg mesh pattern使用流程如下:

95fd02f15f21488481f87a78c2276221.jpg

create_pg_mesh_pattern mesh1 \

-layers { { {horizontal_layer: M5} {width: 6} {spacing: 1} {pitch: 12} {offset: 5} } { {vertical_layer: M6} {width: 6} {spacing: 2} {pitch: 20} {offset: 6} } } \

-via_rule { { {layers: M5} {layers: M6} {via_master: VIA56_2x3} } }

beb48b085a4248c7aced5ada6a6dd4e2.jpg

2.4 Define Custom PG Vias

set_pg_via_master_rule VIA36_2x3 -contact_code {VIA34SQ VIA45SQ VIA56QS} -via_array_dimension {2 3} -offset {0.4 0.2} -offset_start center (default) -cut_spacing {0.2 0.1}

45915c84747943f29f865fe42ae9b332.jpg

 

2.5 Define Via Rule between Objects

设置via rule规则用来连接不同的strategy的strap或者strategy与存在的shape。

set_pg_strategy_via_rule S_via_m2_m7 -via_rule { { { {strategies: {S_m2}} {layers: { M2 }} } { {strategies: {S_m7m8}} {layers: { M7 }} } {via_master: {pgvia_1x3}} } } ;#让两个strategy的M2和M7之间打孔,如果不想让二者打孔via master可以写“NIL”。

c9c5c176ce384463b563a162f2f0f921.jpg

如果没有用set_pg_strategy_via_rule或者compile_pg没用-via_rule选项的情况下,via会插在所有相同pg net的不同层相交shape上。

如果只想用一个via rule strategy可以使用compile_pg -via_rule rule_name选项。

2.6 Standard Cell Connection Pattern

create_pg_std_cell_conn_pattern std_pat1 -layers {M1}

set_pg_strategy S_std_cells -core   -pattern { {{name: std_pat1} {nets: {VDD VSS}} }   -extension {{stop: innermost_ring}}

compile_pg –strategies S_std_cells 

eef3176e1a53478fb5d7bb5b5fc16f31.jpg

2.7 Macro Connections

连接macro pin的pg mesh方案。

create_pg_macro_conn_pattern

通过-pin_conn_type控制三种模式

1) scattered_pin

延伸不规则的pg pin到外部的pg mesh。

create_pg_macro_conn_pattern P_HM_pins \

-pin_conn_type scattered_pin -layers {M4 M5}

set_pg_strategy S_HM_pins -macros $hardmacros \

-pattern { {pattern: P_HM_pin} {nets: {VSS VDD}}}

compile_pg -strategies {S_HM_ring S_HM_pins}

5346da0fdb39435bb7ce62b3e2be641a.jpg

 2) long_pin

pg pin是长条形的,pg mesh与pg pin相交。

create_pg_macro_conn_pattern macro_long_pins \

-pin_conn_type long_pin \

-direction vertical \

-spacing interleaving \

-pitch $M5_pitch \

-width $M5_width \

-layers M5

set macros [get_cells -hier -filter "is_hard_macro"]

set_pg_strategy S_macros -macros $macros \

-pattern { {name: macro_long_pins} {nets: VDD VSS} }

c3952cfe1ff049259f9c1cdf5a861e55.jpg

3) ring_pin

macro内部的环形pin,指型连接到strap或macro ring。

3.Apply the PG Strategies

1) 测试阶段ignore drc

compile_pg -strategies s1 -ignore_drc

2) 检查mesh,移除mesh

compile_pg -undo

3) 最后调整好strategies

compile_pg -strategies s1 

compile_pg -strategies {s1 s2} -via_rule v1

3.1 Report of Missing Vias Due to DRC

因为drc问题没有插入via的情况可以使用compile_pg报告

compile_pg -show_phantom

f138b2b9bce34bbc8e75bb4698f3dd28.jpg

3.2 Specify Block-Level Power Nets

PNS创建的pg net部门直接应用于top level,例如要给block指定pg strategies需要给出他完整的hierarchy名字。

set_pg_strategy s_top \

–blocks I_TOP/I_SWITCHED \

-pattern {{name: sw_strap} {nets: {I_TOP/I_SWITCHED/VDD_SW}} } 

如果不指定-block,那么I_TOP/I_SWITCHED/VDD_SW在top就会是一条dummy net。要避免这个问题就需要pg characterize。

3.3 Characterize Block PG Flow

d848f38d1b1d4ae4ad30a4e0ecee3972.jpg

1) Design input

定义full chip的pg 约束。

2) Characterize Block PG

characterize_block_pg: 提取top level和每个block的pg约束。

3) Create PG for each block and top level

应用pg 约束compile pg。

4.Insert Special Cells

4.1 Boundary Cell

给boundary/macro/blockage/voltage area的内角或外角加boundary cell。

bc585b385ddd46b9ac1a3f8b1ea1ffb6.jpg

 举例如下,给block加boundary Cell。默认只给top level加。

e528f60c5a134cceb21629c819bea674.jpg

4.2 Tap Cell

给block level和top level加tap cell。

d99bd1f23c644edfa55e154b30dba1f3.jpg

其中stagger如上图所示是交错的形式,一般应用的也是这种形式,能减少tap cell数量。

5.Insert Power Switch

关断power domain/block可以起到节省漏电的作用,power switch加在main supply和可关断的switched supply之间,swtitched supply连接standard cell的power rail。

按照切断power/ground来分的话,可以分为切断power的Header类型和切断ground的Footer类型,前者使用pmos晶体管同等大小漏电更低,然后使用nmos晶体管的后者往往ir drop和面积都要更小。

使用示例如下:

563234ca94b148b990b545dc5d6ab4e8.jpg

摆放方式上,switch cell多摆放在main supply的strap下面方便打孔连接。

sleep信号连接方式上多采用菊花(daisy)链的方式,除此之外还有hfn和fishbone两种形式。

a436aecbdcc74f208ce81da6241f9a5c.jpg

示例如下:

connect_power_switch -mode fishbone \

 -direction horizontal -start_point lower_left

6.PG Verification and Analysis

1) check_pg_drc

检查违反technology design rule的drc问题。

2) check_pg_missing_vias

检查pg 网络缺失via的问题。

3) check_pg_connectivity

检查pg pin/shape/via的连接情况(floating)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java+JSP基于ssm高校网上教材征订系统-计算机毕业设计

项目介绍 随着高校规模的扩大和教学改革的不断深入&#xff0c;高校的教学和科研水平都在稳步提高&#xff0c;但高校的教材选订环节却仍存在着许多问题。目前&#xff0c;高校的教材选订工作大多采用的是手工方式&#xff0c;不仅费时、费力&#xff0c;而且还存在许多人为的…

Seal库官方示例(二):encoders.cpp解析

补充一个常用的SIMD操作原理 图片来自的Hang Shao的文章。 完整代码 这个代码主要功能是编码明文&#xff0c;使得能够使用更加完整的明文多项式&#xff08;前一个只用到了一个多项式的常量&#xff09;&#xff0c;也就是SIMD操作。主要包含了两个部分&#xff0c;一个是BG…

Animator动画状态机

1、有限状态机 有限状态机&#xff08;Finite - state machine, FSM&#xff09;&#xff0c;又称有限状态自动机&#xff0c;简称状态机&#xff0c;是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型 有限&#xff1a;表示是有限度的不是无限的 状态&#x…

机器人开发--减速机

机器人开发--减速机1 概述介绍功能分类按照传动类型可分为&#xff1a;按照传动级数不同可分为&#xff1a;按照齿轮形状可分为:按照传动的布置形式可分为:应用2 电机使用减速机原因3 RV减速机、谐波减速机 和 行星减速机RV减速机谐波减速机行星减速机蜗轮蜗杆减速机4 机器人各…

社区系统项目复盘-1

文章目录技术架构开发环境开发社区首页技术架构 Spring BootSpring、Spring MVC、MyBatisRedis、Kafka、ElasticsearchSpring Security、Spring Actuator 开发环境 构建工具&#xff1a;Apache Maven 版本&#xff1a;3.6.1集成开发环境&#xff1a;IntelliJ IDEA数据库&…

R3LIVE代码详解(四)

0. 简介 上一节中&#xff0c;我们过完了VIO中的状态预测以及特征点跟踪部分。此时我们已经拿到了光流的特征点信息&#xff0c;而这部分越来越接近我们想要去讲的帧到帧的VIO部分了。这一节&#xff0c;我们将围绕着VIO部分来进行讲解 1. PNP误差更新 我们从之前的博客《经…

人工智能前沿——未来AI技术的五大应用领域

关注“PandaCVer”公众号 >>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 一、航空航天 二、医疗保健 三、建筑行业 四、能源领域 五、供应链 关于YOLO算法改进及论文投稿可关注并留言博主的CSDN/QQ >>>一起交流&#xff01;互相学习&…

力扣(LeetCode)1758. 生成交替二进制字符串的最少操作数(C++)

模拟 我们最终串只有两种形态 ① 1010101…1010101\dots1010101… 偶数位全 111 &#xff0c;奇数位全 000 &#xff0c; ② 0101010…0101010\dots0101010… 偶数位全 000 &#xff0c;奇数位全 111 &#xff0c; 我们统计将偶数位全变成 111 &#xff0c;奇数位全变成 000 的…

传奇外网架设全套图文教程-Hero引擎

当你拿到一个Hero引擎的版本&#xff0c;首先查看一下版本内文件是否完整&#xff0c;一个完整的Hero版本应该包括&#xff1a;DBServer、LoginGate、LoginSrv、LogServer、Mir200、Mud2、RunGate、SelGate、网站和GameCenter.exe&#xff08;引擎&#xff09;&#xff0c;以上…

龙芯 处理器

龙芯&#xff1a;国内最早自主研发芯片厂商&#xff0c;MIPS 架构体系自主化程度高 龙芯是中国科学院计算所自主研发的通用CPU&#xff0c;采用自主LoongISA指令系统&#xff0c;兼容MIPS指令 n “龙芯”是我国最早研制的高性能通用处理器系列&#xff0c;于 2001 年在中科院计…

【每日一题Day42】生成交替二进制字符串的最小操作数 | 模拟 位运算

生成交替二进制字符串的最小操作数【LC1758】 You are given a string s consisting only of the characters 0 and 1. In one operation, you can change any 0 to 1 or vice versa. The string is called alternating if no two adjacent characters are equal. For example,…

黑马点评--用户签到

用户签到 BitMap用法签到功能签到统计 BitMap用法&#xff1a; 我们按月来统计用户签到信息&#xff0c;签到记录为1&#xff0c;未签到则记录为0.&#xff08;布隆过滤器就是采用这种结构&#xff09; 把每一个bit位对应当月的每一天&#xff0c;形成了映射关系。用0和1标示…

docker的安装

1、docker官网 Install Docker Engine on CentOS | Docker Documentation yum -y install gcc yum -y install gcc-c yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum insta…

原型(克隆)模式

文章目录思考原型(克隆)模式1.原型模式的本质2.何时选用原型模式3.优缺点4.实现原型模式(浅克隆)原型模式(深克隆)java浅克隆java深克隆思考原型(克隆)模式 原型模式顾名思义通过一个接口实现快速创建对象 1.原型模式的本质 原型模式的本质:克隆生成对象。 克隆是手段&#xff…

【Ubuntu】进程与线程编程实验

文章目录进程与线程实验一&#xff1a;创建进程基础版&#xff1a;创建父子线程 fork基础版&#xff1a;父子线程交替运行基础版&#xff1a;创建进程 文件写入练习版&#xff1a;创建线程 子读父阻塞实验二&#xff1a;线程共享进程中的数据实验三&#xff1a;多线程实现单词统…

总结709(bug集合)

今天不知道怎么了&#xff0c;那个曾弄了我20多天的冒险模块&#xff0c;在今天&#xff0c;差不多要完工了。弄出的那一刻&#xff0c;有的是喜悦&#xff0c;但之后&#xff0c;更多的是叹气。 也就是从此刻我才意识到&#xff0c;我曾自认为很崇高的职位&#xff0c;可能事…

传奇出现黑屏卡屏不动是怎么回事

在写这篇文章之前&#xff0c;先给给大家说一下&#xff0c;这篇文章写的是出现黑屏、卡屏不动是我们玩传奇的时候出现的&#xff0c;而不是在架设传奇时候出现的&#xff0c;所以要特别是注意一下&#xff0c;架设和玩出现黑屏是完全不一样的&#xff0c;所以解决方案也不一样…

驱动开发 platfrom总线驱动的三种方式

驱动的分隔与分离&#xff1a; 对于 Linux 这样一个成熟、庞大、复杂的操作系统&#xff0c;代码的重用性非常重要&#xff0c;在驱动程序&#xff0c;因为驱动程序占用了 Linux 内核代码量的大头&#xff0c;如果不对驱动程序加以管理&#xff0c;任由重复的代码肆意增加&…

基于深度学习的合成孔径雷达自聚焦

文章目录引言什么是合成孔径雷达什么是自聚焦经典自聚焦方法基于机器学习的方法基于极速学习机的方法基于深度学习的SAR自聚焦代码附录引言 本文全面介绍合成孔径雷达自聚焦概念和方法。想获取更为详尽的描述&#xff0c;请参考以下几篇论文, 如果数据或代码对你的研究有用&am…

【ASM】字节码操作 工具类与常用类 ClassRemapper 介绍 类映射 代码混淆

文章目录 1.概述2. ClassRemapper#2.1 class info2.2 fields2.3 构造方法2.4 method3. 案例3.1 案例1-修改类名3.2 案例2-修改字段名和方法3.3 案例3-修改2个类4.总结1.概述 在上一篇文章:【ASM】字节码操作 工具类与常用类 InstructionAdapter 介绍 我们知道了,对于Instruc…