数字后端——电源规划

        电源规划是给整个芯片的供电设计出一个均勻的网络,它是芯片物理设计中非常关键的一部分。电源规划在芯片布图规划后或在布图规划过程中交叉完成,它贯穿于整个设计中,需要在芯片设计的不同阶段对电源的供电网络进行分析并根据要求进行修改。,主要分三部分内容进行分析:电源网络设置数字与模拟混合供电单电源与多电源供电电源网络设置。其中电源环线(power ring)和电源条线(power stripe)的设置为主要工作。

        如上图所示,左图中左下角为硬核部分,硬核部分的上方和右侧的电源线称为模块电源环。右图是多电源多电压中应用的电源环分布示意图。

        芯片供电是通过I /O 单元来实现的,在做电源规划和电源网络设计时,首先要做电源预算(power budgeting),商用产品惯例认为总的误差应当控制在5%之内。它包括从电源网络和PCB板级到封装bonding之间的波动(约为1%),再到电源I /O 单元和电源环之间的波动(约为1%)和最终直至标准单元之间的电压降(约为3% ) 。更准确的预算则通过功耗分析的手段来做定量计算。

一、电源网络的设计

        这里阐述的电源网络设计是针对于普通的I /O 单元四方分布的数字芯片设计,对于复杂的数模混合设计以及多电源设计将在后面的分别阐述。供电网络设计主要内容有以下几部分组成:

  1. 电源连接关系的定义,又称为global net connect。
  2. 芯片核内(core)部分的电源环设计,又称为power ring。
  3. 芯片内所包含的硬核(如RAM、ROM以及IP、COT模块等)的电源环设计。
  4. 芯片核内纵横交错的电源网格的设计,又称为power stripe。
  5. 芯片的供电单元与电源环的连接,又称为I /O 单元power。
  6. 芯片内部电源网格和硬核电源环连接部分的设计,又称为ring pins。
  7. 将标准单元的供电网络与核内电源网格总连接设计,又称为followpins。
  8. I /O供电单元电源环的设计,又称为I /O单元power ring。

        最后我们还需要对电源网格进行检查,检查是否存在短路和开路以及供电不足等问题。对于Flip Chip的设计,供电网络的设计还包括电源凸点bump的设计以及布线。下面分别介绍各部分的内容。

1、全局电源

        在电源网格设计中,首先要对电源进行定义,主要包括:全局电源的定义以及连接关系的定义。全局电源网络连接(global net connect)是指把相应的端口和网络连接到合适的电源和接地网络上去,从而使得我们针对整个设计可以正确无误地顺利完成供电网络设计、电源布线、详细布线和功耗分析等步骤。这些终端和网络的连接信息一部分包含在Verilog网表中,另一部分则包含在相应的LEF文件当中。

        通过Verilog网表中的定义,我们可以把以下几种类型的网络连接到相应的全局电源和接地网络上去。

  •  电源和接地网络

        它是将网表中每个标准单元和模块等的电源和接地网络连接到合适的全局电源和接地网络上去。这些标准单元和模块等的电源和接地网络互连关系,在Verilog网表中主要通过关键字“wire”进行定义。

  • 接高电压和接低电压网络

        它是将接高电压和接低电压网络连接到合适的全局电源和接地网络上去。它们之间的互连关系,在Verilog网表中主要通过关键字“ 1'b0”、“ 1'b1”、“supply 0”,以及“supply 1”进行定义。

  • 电源和接地端口

        它是将供电端口和接地端口连接到合适的全局电源和接地网络上去。诸如“VDD、vdd、vdd!”和“VSS、vss、gnd!”等就是这些电源和接地端口和网络在LEF文件中定义的名称。

  • 填充单元网络

        它是将供电端口连接到合适的全局电源和接地网络上去。在添加填充单元前后,均可通过手工指定相应的连接关系。

I / O 的拐角单元(corner cell)和I / O 填充单元(filler,spacer)。 因为I / O 在芯片周围通常需要摆放成类似戒指(ring)一样的环形,因此通过这两个单元可以填充I /O单元之间的空隙以使它们形成电源和地的环状网。

2、电源环线

        电源环线(power ring)是指为了均勻供电,包围在标准单元周围的环形供电金属,它也是连接供电I /O 单元和标准单元的桥梁,供电I /O 单元通过金属连接到电源环,标准单元通followpins连接到电源环,从而构成了供电I /O 单元给标准单元以及硬核供电。电源网格是为了平均分布电流,缩短电流回路,在有效减小电压降的同时,避免由于电流分布不均时造成的热点(hot spot)现象以及电迁移(EM,electromigration)问题。

        电源环的设计主要有3个参数:电源环的宽度\omega、电源环的间距d 以及电源环的对数n。电源环的参数也是根据功耗计算得来。

  •  电源环的宽度

        根据整个芯片的供电峰值电流以及厂家所给的设计规则中所允许的电流密度以及电源环的对数n所决定。

        \omega = \frac{I_p}{C_d\cdot 4n}\cdot k         

        式中,I_{p}是芯片的峰值电流 

                 C_d是厂家工艺库给出的电流密度上限

                 n是电源环的数目

                k是调整因子,根据芯片的供电I /O单元分布而定

  • 电源环的间距

        电源环的间距根据厂家所给的设计规则中的最小间距决定一般情况下为最小间距的2倍左右,但是也有工程师提出尽量减小电源环之间的间距,从而增大电源环的耦合电容,从而起到过滤电源噪声的作用。

        除以上两个参数外,在芯片的制造过程中,一般宽线需要打孔散热,所以厂家会制定宽线的规则。一般情况下,希望单个电源环的宽度不要超过厂家规定的宽线规则,从而避免打孔,打孔在芯片设计中又称为slotting,更好的办法是用splitting。电源环的对数n 由芯片的面积、厂家的设计规则、金属的层数等多种因素决定。当金属的层数较多时,可以选用多层金属布置电源环,从而有效减小电源环的宽度和减小电源环所占据的芯片的面积

        在有些设计中,还需要对硬核及RAM设计电源环,RAM以及硬核电源环宽度的设定也是根据硬核的供电电流决定,其设计的方法与核内的电源环相同,只需要指定电源环的所有参数便能自动生成。很多厂家提供的硬核在设计时已经产生了电源环,当应用到芯片顶层时只需要将电源网格连接到硬核内部自身的电源环即可,从而减小不必要的面积浪费。 

3、电源条线

        芯片内部纵横交错的电源网格(power grid)或“电源条线"(power stripes)设计有专门的理论和算法。电源网格通常为均匀分布,电源条线通常是不规则或不均匀分布,电源网格可以看成是电源条线的特例。简单说明电源条线相关内容。

       从上图中我们看出,电源网格中重要的4 个参数分别是:纵向电源条线的宽度W_{stripe-V},横向电源条线的宽度W_{stripe-H};横向电源条线的间距S1;纵向电源条线的间距S2。其中纵向电源条线的宽度W_{stripe-V}与横向电源条线的间距S1成正比关系,也就是说宽度较大,间距就可以较大,电源条线的分布可以稀疏一点;横向电源条线宽度值较小,间距也应该小一点,电源条线的分布需要密集一点。与纵向电源条线相比较,横向电源条线的宽度W_{stripe-H}与其间距S2 的正比关系也存在,但是由于在横向有很多标准单元的followpins的存在,需要的横向电源条线比纵向电源条线要少很多。  

        对于W_{stripe-V}W_{stripe-H}的设定,有以下几个经验规则:

  1. W_{stripe-V}的分布间隔一般取垂直布线间距(pitch)的整数倍,其目的是充分利用布线通道其值不能太大,一般情况下不要超过最小二输入与非门宽度的4倍。每一层金属的pitch在物理库中都有相应的定义。 
  2.  W_{stripe-V}的最大值取标准单元库中最小与非门宽度的4倍。当芯片的利用率较高,布线拥塞程度较大时,一般选择细密的电源网格。如果芯片的利用率非常低,那么将电源网格设计得越宽,其线上的电阻越小,电压降越小
  3.  W_{stripe-H}的取值一般是标准单元高度的整数倍,通常选择1倍或者2 倍

         电源条线所选用的电源层也根据LEF中的规定所选,纵向必须用偶数层走线,横向必须用奇数层走线。由于高层金属具有较小的寄生电阻,用高层金属走线可以有效地减少电压降

二、数模混合供电

        即使是纯数字电路芯片设计,通常也要用到一个模拟模块PLL作为时钟信号发生器。今天的SoC设计中,数模混合电路则更加普遍,A/D、D/A及PLL等模拟模块的集成到处可见。在数模混合供电设计中,需要特别注意电源信号之间的干扰和隔离,因而需要建立不同电源区域(power domain)。在布局前一般需作如下几点考虑和处理:

  1. 模拟模块的工作区域一般放置于芯片的某个角落。当设计中有多个模拟单元时,将多个模拟单元的位置应相对集中在芯片的某个角落,其中间不应该混合放置数字模块。
  2. 模拟区域需要单独供电,给模拟信号供电的I /O 单元应放在模拟模块边上,尽量缩短供电线路的长度
  3. 在模拟模块的周围布置保护隔离环(guarding ring),从而实现数字信号和模拟信号电源之间的隔离。

        如上图所示,电源规划中的一些细节问题如下       

  • 数模信号模块的放置。模拟PLL和模拟信号模块处于芯片的右下角,右下角的I /O 单元均为模拟信号用的信号端口,在PLL和模拟信号模块的周围放置的都是低频信号模块,以避免数字信号跳变对模拟信号的影响
  • 数模信号模块的供电。模拟PLL和模拟信号模块均分别具有数字供电和模拟供电两部分组成,其中模拟供电在内部,数字供电在外部,两个模块之间的模拟供电环是相通的,在外围的数字供电部分与芯片的数字供电部分相联合,在其底下加上保护环(guarding ring)用以隔离。在有些设计中,在条件允许的情况下或者严格要求下,既具有模拟供电也具有数字供电的模拟单元,数字供电部分也需要单独供电,并与核内的其他数字供电部分保持隔离。
  • 数模信号模块中的电源环。电源环设计可以采用多层金属完成,从而节约电源环的宽度,降低电源环所占据的芯片面积。数模信号模块中的电源环分别处理,相互独立。
  • 数模信号模块中的电源网格。数模信号模块中的电源网格设计采用高层金属完成布线,在高频区域,电源网格较为密集,而在低频区域电源网格较为稀疏。
  • 数模信号模块中的电源设计方案。在整个芯片中,模块的电源设计部分采用了自上而下和自下而上的两种设计过程,这是模块电源的典型设计方法。 

三、多电源供电

        在数字芯片设计中,多电源供电(MSV,muki-Siipply voltage)早就被用来处理数模混合电路的供电。在数模混合电路的供电方案中,MSV专指多组电源同样电压(如均为1.2 V)供给不同电路(数字、模拟)。随着低功耗设计技术的更多应用,同一芯片中则更多地采用多组电源多组电压供电(MSMV,multi-supply multi-voltage)的方案。除了保留传统的MSV的方法外,其中,关键模块采用高电压供电,频率较低的模块采用低电压供电是有效降低功耗的一种方法。

1、电源规划

        每一个电压域当中都必须有完整的电源和地线电源环。在创建电源环时,可以采用传统的方法,即根据布图规划的情况指导工具完成设计,也可以通过自动供电网络设计工具(APP,automatic power planner)为每一个电压域指定一个合适的模板来进行设计,其步骤如下:

  1. 创建芯片核心电源环,其方法与单电源环设计一致,单电源环只有一对供电,而多电源环有多对电源供电,故而会占用较大的面积。
  2. 为每一个电压域和硬宏单元模块创建一个模块电源环。在多电压设计中,首先需要定义电压域的内容,即每个电压域的工作电压和所包含的模块,如果为相应电源环所指定的电源和地线网络同电压域定义的电源和地网络不匹配,工具则会产生相应的警告提示。
  3. 为宏单元(硬核)模块创建模块电源环。

2、电平转换单元的插入

        在多个电源供电时,不同的工作电压区之间需要插人电平转换单元(VLS,voltage level shifter),其步骤如下:

  1. 读入相应的电平转换单元表。
  2. 在内部电压域网络上插入电平转换单元。

3、隔离单元的插入

        当设计中存在被关闭的电压域,为了不使关闭区域与非关闭区域相互影响,必须在所有的接口处添加隔离单元(isolation cell),并要:①检查出所有需要添加隔离网络的信号端口 ;②在相应的接口信号处添加隔离单元。 

四、总结

        布图规划与布局之间的电源规划工作越来越复杂,其重要性也越来越大。设计中发现,不少DRC/LVS问题与电源规划或电源设计有关。大多数的模块级或芯片级DRC和LVS错误都是由供电问题引起的。由于DRC/LVS工具对于电源的抽取是通过一定的规则来提取,因此对于结构相同的电源部分,工具并不能很好地识别,从而会造成LVS的错误。因此在用sign-off的工具进行LVS检查时,设计者可以“剔除”掉除电源和接地网络外的所有其他单元和模块,单独运行仅仅针对供电网络的DRC/LVS检查和仅对内部网络的检查,其流程如图:

 

 

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

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

相关文章

逆向project实战--Acid burn

0x00 序言 这是第二次破解 crackme 小程序,感觉明显比第一次熟练。破解过程非常顺利,差点儿是分分钟就能够找到正确的 serial,可是我们的目标是破解计算过程。以下将具体介绍。 0x01 初次执行 刚開始拿到 crackme 先执行程序。看看有哪些明显…

PyCharm使用技巧(六):Regullar Expressions的使用

2019独角兽企业重金招聘Python工程师标准>>> PyCharm v2018.2最新版本下载 使用正则表达式查找和替换文件中的文本 示例代码 使用正则表达式查找和替换字符串 假设您想用扩展标记<title> </title>替换元素&#xff08;title&#xff09;中的属性&#x…

内核中_init,_exit中的作用

__init&#xff0c; __initdata等属性标志&#xff0c;是要把这种属性的代码放入目标文件的.init.text节&#xff0c;数据放入.init.data节──这一过程是通过编译内核时为相关目标平台提供了xxx.lds链接脚本来指导ld完成的。 对编译成module的代码和数据来说&#xff0c;当模…

jQuery笔记总结

来源于&#xff1a;http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先&#xff0c;来了解一下jQuery学习的整体思路 第一节 jQuery初步认知 jQuery概述 JQuery概念 javascript概念 基于Js语言的API和语法组织逻辑&#xff0c;通…

芯片生产流程

每个半导体产品的制造都需要数百个工艺&#xff0c;泛林集团将整个制造过程分为八个步骤&#xff1a;晶圆加工-氧化-光刻-刻蚀-薄膜沉积-互连-测试-封装。 一、晶圆加工 所有半导体工艺都始于一粒沙子&#xff01;因为沙子所含的硅是生产晶圆所需要的原材料。晶圆是将硅(Si)或砷…

GRE Sub math 报名

Step1 注册ETS帐号 Step2 登录帐号&#xff0c;点击Register/Find Test Centers, Dates Step3 按照提示查询考场 如果没有结果而是出现了如下提示&#xff0c;意味着这个地方没有考位了&#xff0c;需要选择其他地方的考位 Step 4 接下来就和GRE general test的过程一样了&…

platform_device_系列函数及其设备注册的作用

platform_device_系列函数&#xff0c;实际上是注册了一个叫platform的虚拟总线。使用约定是如果一个不属于任何总线的设备&#xff0c;例如蓝牙&#xff0c;串口等设备&#xff0c;都需要挂在这个虚拟总线上。 driver/base/platform.c //platform设备声明 struct device pla…

示例解读 Python 2 和 Python 3 之间的主要差异

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 每门编程语言在发布更新之后&#xff0c;主要版本之间都会发生很大的变化。 在本文中&#xff0c;Vinodh Kumar 通过示例解释了 Python 2 和 Python 3 之间的一些重大差异&#xff0c;以帮助说明…

数字后端——布局

由于I / O单元和模块的布放已经在布图规划时完成&#xff0c;因此布局的剩余任务主要是对标准单元的布局。布局方案在布图规划时就已经做了决定&#xff0c;要么选择展平式布局&#xff0c;要么就是层次化布局。 一、布局目标 布局的目标也即布局内容实施之后所要达到的预期值…

python基础 函数 (四)

一 函数基本 def func1():print("hello world")return 1, "hello", ("wo", "ai"), ["ni", "da"], {"you": "xi"} # return 可以返回任意# 结果&#xff1a; (1, hello, (wo, ai), [ni, da…

c#注释

c#的注释分为&#xff1a;这里不能不说一下什么是注释。 注释本身不会执行&#xff0c;只是说明性文字&#xff0c;只供程序员阅读。 注释又分为&#xff1a;单行注释&#xff0c;多行注释&#xff0c;文档注释。 单行注释&#xff1a;//开始 多行注释&#xff1a;/*开始&#…

嵌入式linux字符设备驱动

1. 我们需要先调用register_chrdev_region()或 alloc_chrdev_region()来向系统申请设备号int register_chrdev_region( dev_t first, unsigned int count, char *name ); //函数通过已知的设备号first来注册字符设备区域。 int alloc_chrdev_region( dev_t *dev, unsigned int…

数字后端——时钟树综合

在数字集成电路设计中&#xff0c;时钟信号是数据传输的基准&#xff0c;它对于同步数字系统的功能、性能和稳定性起决定性作用&#xff0c;所以时钟信号的特性及其分配网络尤被人们关注。时钟信号通常是整个芯片中有最大扇出、通过最长距离、以最高速度运行的信号。时钟信号必…

52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

MySQL创建用户以及授权 默认用户是root用户&#xff0c;不可能所有人员都用root用户&#xff0c;创建用户防止误删除&#xff0c;因为mysql里边有多个库每个库里有很多表&#xff0c;所以需要给单独的用户做一些授权我只需要它对某一个数据库有权限&#xff0c;或者说对某个数据…

线程池的种类,区别和使用场景

newCachedThreadPool&#xff1a; 底层&#xff1a;返回ThreadPoolExecutor实例&#xff0c;corePoolSize为0&#xff1b;maximumPoolSize为Integer.MAX_VALUE&#xff1b;keepAliveTime为60L&#xff1b;unit为TimeUnit.SECONDS&#xff1b;workQueue为SynchronousQueue(同步队…

20145225 《信息安全系统设计基础》第14周学习总结

第九章 虚拟存储器 虚拟存储器是计算机系统最重要的概念之一&#xff0c;它是对主存的一个抽象 三个重要能力&#xff1a; 它将主存看成是一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保存活动区域&#xff0c;并根据需要在磁盘和主存之间来回传送数据&#xf…

数字后端——布线

布线是继布局和时钟树综合之后的重要物理实施任务&#xff0c;其内容是将分布在芯片核内的模块、标准单元和输入输出接口单元( I /O pad&#xff09;按逻辑关系进行互连&#xff0c;其要求是百分之百地完成它们之间的所有逻辑信号的互连&#xff0c;并为满足各种约束条件进行优…

动态加载和静态加载及其编译步骤

在类unix操作系统中&#xff0c;驱动加载方式一般分为&#xff1a;动态加载和静态加载&#xff0c;下面分别对其详细论述。 一、动态加载 动态加载是将驱动模块加载到内核中&#xff0c;而不能放入/lib/modules/下。 在2.4内核中&#xff0c;加载驱动命令为&#xff1a;ins…

streamsets 集成 minio s3测试

具体streamsets crate 集成可以参考 streamsets crate 以下文档只关注minio 集成的配置 minio 服务 搭建 具体搭建参考&#xff1a; https://www.cnblogs.com/rongfengliang/p/9197315.html 创建bucket &#xff08;crate 集成使用&#xff09; 测试的csv 文件从https://www.s…

sqlite性能优化

1、数据库性能上 1.1 批量事务插入&#xff0c;提升数据插入的性能 由于sqlite默认每次插入都是事务&#xff0c;需要对文件进行读写&#xff0c;那么减少事务次数就能简书磁盘读写次数从而获得性能提升。 1.2 单条sql优于多条sql 实测发现&#xff0c;对于几十条sql插入当你替…