数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

2023-11-13

三、门级电路低功耗设计优化

  (1)门级电路的功耗优化综述

  门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)是从已经映射的门级网表开始,对设计进行功耗的优化以满足功耗的约束,同时设计保持其性能,即满足设计规则和时序的要求。功耗优化前的设计是已经映射到工艺库的电路,如下图所示:

     

  门级电路的功耗优化包括了设计总功耗,动态功耗以及漏电功耗的优化。对设计做优化时,优化的优先次序如下:

     

由此我们可以找到, 优化时,所产生的电路首先要满足设计规则的要求,然后满足延迟(时序)约束的要求,在满足时序性能要求的基础上,进行总功耗的优化,再进行动态功耗的优化和漏电功耗的优化,最后对面积进行优化。

  优化时先满足更高级优先权的约束。进行低级优先权约束的优化不能以牺牲更高优先权的约束为代价。功耗的优化不能降低设计的时序。为了有效地进行功耗优化,需要设计中有正的时间冗余(timing slacks)。功耗的减少以时序路径的正时间冗余作为交换,即功耗优化时会减少时序路径上的正的时间冗余。因此,设计中正的时间冗余越多,就越有潜力降低功耗。

  通过上面的描述,对门级功耗优化有了一下了解之后,这里先介绍一下静态功耗优化的方法——多阈值电压设计,然后介绍基于EDA工具的动态功耗的优化,接着介绍总体功耗的优化;在最后介绍一种常用的门级低功耗的方法——电源门控。电源门控我放在明天发表,今天的内容主要就是围绕静态、动态、总功耗来写。

 

  (2)多阈值电压设计

①多阈值电压设计原理

  由于半导体工艺越来越先进,半导体器件的几何尺寸越来越小,器件中的晶体管(门)数越来越多,器件的供电电压越来越低,单元门的阈值电压越来越低。由于单位面积中的单元门越来越多,功耗密度高,器件的功耗大。因此,设计时,我们要对功耗进行优化和管理。在90nm或以下的工艺,静态功耗要占整个设计功耗的20%以上。因此,使用超深亚微米工艺时,除了要降低动态功耗,还要降低静态功耗。在超深亚微米工艺,单元门的阈值电压漏电功耗(静态功耗)有如下图所示的关系:

       

由图可见,阈值电压Vt以指数关系影响着漏电功耗。阈值电压Vt与漏电功耗和单元门延迟有如下关系:

        阈值电压Vt越高的单元,它的漏电功耗越,但门延迟越长,也就是速度

        阈值电压Vt越低的单元,它的漏电功耗越,但门延迟越短,也就是速度

我们可以利用多阈值电压工艺库的这种特点,进行漏电功耗的优化,设计静态功耗低性能高的电路。

  一般的设计中,一个时序路径组((timing path group)有多条时序路径,延迟最大的路径称为关键路径。根据多阈值电压单元的特点,为了满足时序的要求,关键路径中使用低阈值电压的单元(low Vt cells),以减少单元门的延迟,改善路径的时序。而为了减少静态功耗,在非关键路径中使用高阈值电压的单元(high Vt cells),以降低静态功耗。因此,使用多阈值电压的工艺库,我们可以设计出低静态功耗和高性能的设计。上面的描述如下图所示:

           

 

 

②门级网表/RTL代码的多阈值电压设计

  多阈值电压设计可以在门级网表或者RTL代码的时候就进行,也可以在后面布线后进行。门级网表/RTL代码的多阈值电压设计(或者说是静态功耗优化)流程如下所示:

       

一个对应的示例脚本如下所示:

    set   target_library   "hvt.db   svt.db   lvt.db"

    ······

    read_verilog   mydesign.v

    current_design   top

    source   myconstraint.tcl

    ······

    set_max_leakage    -power   0mw

    compile

    ······

与以前的脚本不同,设置target_library时,我们用了多个库。上列中,目标库设置为 "hvt.db   svt.db   lvt.db"脚本中使用set_max_leakage_power命令为电路设置静态功耗的约束。在运行compile命令时,Power Compiler将根据时序和静态功耗的约束,在目标库选择合适的单元,在满足时序约束的前提下,尽量使用Svt或Hvt单元,使优化出的设计性能高,静态功耗低。

  PS:如果在Physical Compiler工具(现在我们使用DC的拓扑模式)里做漏电功耗优化时,我们可以保留一点正的时间冗余(positive slack),使电路不会在极限的时序下工作.这些时间冗余量也可被后面其他的优化算法所使用。设置时间冗余的命令如下:

    set   physopt_power_critical_range   时间量

 

③布线后的多阈值电压设计

  上面是门级网表/RTL代码的多阈值电压设计,下面简单介绍布线后的多阈值电压设计,流程如下图所示:

         

相应的一个示例脚本如下所示:

    set   target_library   "hvt.db   svt.db   lvt.db"

    read_verilog   routed_design.v

    current_design   top

    source    top.sdc

    ······

    set_max_leakage    -power   0mw

    physopt   -preserve_footprint    -only_power_recovery  -post_route  -incremental

physopt命令中使用了“-poat_route”的选项,特别用于进行布线后的漏电功耗的优化。优化时,单元的外形名称(footprint)保留下来,原有的布线保持不变。

 

 

④多阈值电压设计与多阈值库的报告

  进行漏电功耗的优化时,Power Compile将报告如下的漏电优化的信息:

       

LEAKAGE POWER的列(Column)展出了内部优化的漏电成本值。它和报告出来的漏电功耗可能不一样。我们用“report_power”命令得到功耗的准确的报告。

 ======================================================================

  我们现在来看一下多阈值库。多阈值库定义了两个属性,一个为库属性default_threshold_voltage_group,另一个为单独库单元的属性threshold_voltage_group。然后报告多阈值电压组的命令是:report_threshold_voltage_group.我们可以使用多阈值库的这两个属性,报告出设计中使用多域值库单元的比例,一个示例的脚本如下所示:

    set_attr   -type string  lvt.db:slow  default_threshold_voltage_group  LVt

    set_attr   -type string  svt.db:slow  default_threshold_voltage_group  SVt

    set_attr   -type string  hvt.db:slow  default_threshold_voltage-group  HVt

    report_threshold_voltage_group

报告得到的结果如下所示:

     

 

 

  (3)基于EDA工具的动态功耗优化

  前面介绍了静态功耗的优化,下面介绍动态功耗的优化。动态功耗优化通常在做完时序优化后进行。动态功耗优化时,需要提供电路的开关行为,工具根据每个节点的翻转率,来优化整个电路的动态功耗。用compile/physopt命令可以同时对时序和功耗做优化。设置动态功耗的命令为:

            set_max_dynamic_power  xxmw.(一般设置为0)

  动态功耗优化的流程如下所示:

           

一个对应的示例脚本如下所示:

    read_verilog   top.v

    source   constraints.tcl

    set   target_library   "tech.db"

    compile

    read_saif

    set_ max_dynamic_power   0 mw

    compile  -inc

动态功耗的优化的实现如上面所示。优化过程用了很多技术比如插入缓冲器、相位分配之类的。由于这些都是power compiler在背后自动实现(或者说是进行低功耗优化时工具使用的原理),不需要我们进行设置,因此这里不进行介绍。

 

  (4)总体功耗优化

  前面分别介绍了静态功耗和动态功耗的优化方法。我们可以把它们结合在一起,进行整个设计总功耗的优化。总功耗是动态功耗和静态功耗的和,总功耗的优先级比动态功耗和静态功耗高。总功耗优化时,工具尽量减少动态功耗和静态功耗的和。优化时如果减少了漏电功耗增加了动态功耗,但它们的和减少了,优化是有效的。反之亦然。我们可以通过设置开关,使动态功耗优化和静态功耗优化用不同的努力级别(effort levels)和权重(weights)进行优化。

  总功耗的优化流程如下图所示:

           

一个对应的示例脚本如下所示:

    read_verilog    top.v

    source     constraints.tcl

    set   target_library   "hvt.db svt.db lvt.db"

    ······

    compile

    read_saif

    set_max_total_power  0  mw  -leakage_weight   30

    compile   -inc

    ······

脚本中,target_library设置为多阈值电压的库,用于做静态功耗的优化。读入含有开关行为的saif文件,用于约束动态功耗的优化。在设置总功耗的约束时,我们可以在set_max_total_power命令中使用静态或/和动态功耗权重(weight)的选项,使工具在优化时,偏重于静态或动态功耗。假设P、Pd和Pl分别为总功耗、动态功耗和静态功耗,Wd和Wl分别为动态功耗和静态功耗的权重,则

        总功耗P = (Wd*Pd+Wl*P1)/Wd

  我们可以在DC或PC中设定只对功耗做优化。这时候,工具仅优化设计的功耗,而不会对更高优先级的约束做任何的优化和修正设计规则DRC违例。但是这种优化也不会使设计的更高优先级约束的性能变差和引起DRC违例。这种优化的优点在于运行时间较短,可用于优化设计的动态功耗、静态功耗和总功耗。在DC和PC中,只能以增量编辑的形式工作。

  PC中只对功耗做优化的命令如下:

    set_max_total   -power  0  mw

    physopt    -only_power_recovery

  DC中只对功耗做优化的命令如下(由于现在PC在DC中,因此下面的脚本更常用):

    set   compile_power_opto_only   true

    set_max_leakage_power  0  mw

    compile  -inc

 

今天就先介绍到这里,明天将介绍门控电源的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化 的相关文章

  • scl sda 是什么接口_SOC设计控制接口IIC

    IIC全称为Inter Integrated Circuit 集成电路总线 IIC接口只有两根线 SCL SDA SCL为同步时钟线 SDA为数据线 通SPI不同的是 数据线为双向接口 也就是说 发送接收都走这根线 IIC是一种多向控制总线
  • R-Car H3系列SOC芯片与R-Car M3 R8A77961JBP0BA区别

    RENESAS推出的 xff1a R Car H3 系列 SOC 芯片 R8A77951JA00BA xff03 YJ1 xff0c R Car M3 系列 SOC 芯片 R8A77960JA60BG xff03 YJ5 在内核上 xff1
  • 乐鑫 SoC 支持使用外部 HSM 进行安全签名

    乐鑫 ESP32 系列芯片均采用安全启动机制 xff0c 确保只有可信任固件能够在 flash 中运行 然而 xff0c 这种机制要求小心管理签名密钥 xff0c 即签名密钥必须由签名实体以安全的方式生成和存储 外部 xff08 硬件安全模
  • designWare DMA

    designWare AHB DMAC 是一个复杂的DMAC控制器 有4种传输模式 1 single block 2 contiguous multiblock 就是当一个block传输结束后 自动传输下一个相邻地址的block 3 aut
  • 【整理】嵌入式SoC中各种片内资源

    原文地址 http www crifan com summary embedded soc chip internal resource or functions 整理 嵌入式SoC中各种片内资源 2013 年 12 月 18 日 上午 1
  • LEAKAGE IN NANOMETER CMOS TECHNOLOGIES

    纳米CMOS管技术中的漏电流 https link springer com book 10 1007 0 387 28133 9
  • GlitchFree的时钟切换技术(glitchless clock mux GLCM)

    0 下文给出了两种glitchFree的电路 第一种电路图包含了DFT的相关控制 且是3级上升沿的寄存器打拍 知乎NingHeChuan给出的是两级寄存器分别使用下沿和上沿触发的寄存器打拍 需要分析两种做法的优劣 1 项目中实际使用的 参考
  • stm32F411 SPI3 无输出

    在调试 F411 SPI3 PB3 SPI SCLK PB4 SPI MISO PD6 SPI MOSI PA15 SPI NSS 配置 MOSI MISO SCK 的时候 想当然的把3个管脚 都配置到 GPIO AF6 SPI3 导致MO
  • AXI总线学习小结

    1 AXI总线结构 AXI总线由5个通道构成 通道名称 通道功能 数据流向 read address 读地址通道 主机 gt 从机 read data 读数据通道 包括数据通道和读响应通道 从机 gt 主机 write address 写地
  • STM32开发(十九)STM32F103 数据手册 —— 低功耗模式解析

    上一篇 主目录 下一篇 文章目录 低功耗介绍 stm32 供电框图 低功耗模式 睡眠模式 停止模式 待机模式 低功耗模式汇总 低功耗介绍 系统复位或上电复位后 微控制器进入运行模式 在运行模式下 CPU通过HCLK提供时钟 并执行程序代码
  • GAN,IGBT, MOSFET

    作者 集微网 校对 团团 集微网 爱集微APP 各大主流应用商店均可下载 集微网消息 功率半导体是电子电力装置电能转换与电路控制的核心器件 根据Yole数据 中国已经成为全球最大的功率半导体消费市场 预计至2021年 全球功率器件市场规模将
  • SIEM的内容

    20200920 昨天看到了与SIEM相关的内容 但是除了一篇文章给我讲解了他们部分的SOC架构与方案 这个算是SIEM的升级版吧 其他的文章都没有给我非常好的反馈 这里来记录一下 文章列表 1 Security Correlation T
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • (一)低功耗设计目的与功耗的类型

    一 低功耗设计的目的 1 便携性设备等需求 电子产品在我们生活中扮演了极其重要的作用 便携性的电子设备便是其中一种 便携性设备需要电池供电 需要消耗电池的能量 在同等电能提供下 低功耗设计的产品就能够工作更长的时间 时间的就是生命 因此低功
  • Difference between RTL and Behavioral verilog

    原文链接 https electronics stackexchange com questions 63682 difference between rtl and behavioral verilog Answer 1 ehaviora
  • SD/MMC存储器启动方案在SoC中的设计与实现

    原文地址 http blog csdn net allen6268198 article details 7745208 引言 SD MMC存储器以其成本低廉 存储容量大 性能优良 安全性高等特点越来越广泛地应用于便携式设备和家用电子设备
  • 线路编码(NRZ,NRZI,8B/10B,Manchester等)

    0 前言 编码根据作用和场景不同分为信源编码 信道编码和线路编码 信源编码 降低信源符号之间的相关性和冗余度 通过编码提高每个符号的信息量 具体说 就是针对信源输出符号序列的统计特性来寻找某种方法 把信源输出符号序列变换为最短的码字序列 比
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • 八、RISC-V SoC外设——GPIO接口 代码讲解

    前几篇博文中注释了RISC V的内核CPU部分 从这篇开始来介绍RISC V SoC的外设部分 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 目录 0 RISC V SoC注解系列文章目录 1 结构
  • ARM/neon memcpy 针对*未缓存*内存进行了优化?

    我使用的是基于 Xilinx Zynq 7000 ARM 的 SoC 我正在努力处理 DMA 缓冲区 需要帮助映射 Xilinx ARM SoC Zynq 7000 上的预留 可缓存 DMA 缓冲区 https stackoverflow

随机推荐

  • 如何判断合法标识符

    题目描述 给出一个标识符 请你判断它是否是C语言合法的标识符 输入 输入一个标识符 长度不超过100 输出 判断是否合法 如果是输出YES 否则输出NO 示例输入 123You 示例输出 NO 提示 C语言规定 标识符只能由字母 数字和下划
  • SSH 和 SSL 加密协议

    SSH和SSL都是加密协议 用于保护网络通信的安全性和完整性 但它们用途和实现方式有所不同 SSH Secure Shell 是一种网络协议 用于远程访问和管理服务器 它提供了加密的连接和认证机制 使得数据传输更加安全 SSH通常用于远程登
  • Linux下使用STM32CUBEMX的makefile,报multiple defination错误的解决办法

    之所以报这个错是因为stm32cubemx生成makefile的一个bug 在C SOURCES部分会重复添加Src 下的c文件 上图是没有修改makefile之前 下图为修改后 要修改的部分
  • pthon代码实现在linux下对siebel服务器换包重启

    siebel服务器的换包重启 需要输入多个命令 而且中间需要等待 经常停了服务忘了启动 之前项目的TA有写过一些shell脚本 启服务的 停服务的 包括自动换包重启的 但是因为里面有个mount目录经常出问题 所以平时也没有使用 最近刚好在
  • css基本语法

    1 background background image url image jpg background color ccf background position center background repeat no repeat
  • 数据库:什么是主键

    数据库主键 主键 表中经常有一个列或列的组合 其值能唯一地标识表中的每一行 通俗叫 一个表中只能有一个主键 不接受空值 能唯一的表示表中的每一行 例如 银行卡的卡号就是主键 不存在重复的情况
  • Java 数据类型转换(Casting)

    Java中 经常可以遇到类型转换的场景 从变量的定义到复制 数值变量的计算到方法的参数传递 基类与派生类间的造型等 随处可见类型转换的身影 Java中的类型转换在Java编码中具有重要的作用 本文主要介绍一下Java 数据类型转换 Cast
  • 华为防火墙默认密码是什么?

    华为默认密码是什么 分享至 小王邀请您加入牛B的IT关键业务推动者社区 点击领取12G的软考 PMP资料包 特训营名额 gt gt 售前工程师系列 教你写解决方案 gt gt ld11235813 荣誉会员 Rank 12Rank 12Ra
  • 华为动态pnat配置

  • 微软宣布IE9正式版发布日期

    微软上月曾透露会在3月14日于美国德克萨斯州奥斯汀市SXSW音乐电影节上举办一个庆祝派对 从那时起就有很多猜想 我们才曾猜测微软届时会正式发布IE9 今天 微软终于不再卖关子 3月14日 也就是下周一 微软将正式发布IE9 微软证实 美国太
  • TensorFlow之双隐含层多层感知器(MLP)

    程序改自上一篇博客 使用了双隐含层 第二层隐含层初始w需要和第一层类似 否则程序正确率一直在0 1左右 修改后的程序正确率也在98 左右 coding utf 8 from tensorflow examples tutorials mni
  • 整理一些windows的bat命令及语法

    ver 在DOS窗口下显示版本信息 winver 弹出一个窗口显示版本信息 内存大小 系统版本 补丁版本 计算机名 format 盘符 FS 类型 格式化磁盘 类型 FAT FAT32 NTFS 例 Format D FS NTFS md
  • python基础系列之元组

    元组应用场景 储存多个数据 但是这些数据不可修改 我们知道列表可以储存多个数据 但是数据可增加 修改 删除 这也是元组和列表不一样的地方 如何定义一个元组 多个数据元组 t1 10 20 30 单个数据元组 t2 10 注意在定义单个数据的
  • 常量表达式函数

    我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数 但并非所有的函数都有资格成为常量表达式函数 事实上 常量表达式函数的要求非常严格 总结如下 函数体只有单一的return返回语句 函数必须返回值 不能是void函
  • 合并排序-递归分治

    按我的想法 简单地说 合并排序的思路就是 先递归 后排序 include
  • Java中的运算符

    1 算术运算符 基本四则运算符 1 规则比较简单 需要注意的是除法 int int 的结果还是 int 要想结果中有小数需要使用 double 类型 0 不能用来做除数 2 在Java中 表示取余 不仅可以对 int 求模 也可以对 dou
  • Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为 http localhost 8080 wsota wsota index jsp 1 请求被发送到本机端口8080 被在那里侦听的Coyote HTTP 1 1
  • 爬虫逆向实战(13)-某课网登录

    一 数据接口分析 主页地址 某课网 1 抓包 通过抓包可以发现登录接口是user login 2 判断是否有加密参数 请求参数是否加密 通过查看 载荷 模块可以发现有一个password加密参数 还有一个browser key这个可以写死不
  • C++ Pat甲级1013 Battle Over Cities (25 分)(求图的连通分量dfs)

    1013 Battle Over Cities 25 分 It is vitally important to have all the cities connected by highways in a war If a city is
  • 数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

    三 门级电路低功耗设计优化 1 门级电路的功耗优化综述 门级电路的功耗优化 Gate Level Power Optimization 简称GLPO 是从已经映射的门级网表开始 对设计进行功耗的优化以满足功耗的约束 同时设计保持其性能 即满