数字SOC设计之低功耗设计入门(三)——系统与架构级低功耗设计

2023-11-13

前面讲解了使用EDA工具(主要是power compiler)进行功耗分析的流程,这里我们将介绍在数字IC中进行低功耗设计的方法,同时也结合EDA工具(主要是Design Compiler)如何实现。我们的讲解的低功耗设计主要是自顶向下的设计,也就是说,我们首先介绍在系统架构层面上如何进行低功耗设计(或者可以从哪些方面进行低功耗设计);然后我们在RTL层面和门级层面上介绍低功耗设计的方法,这两个种方法主要是依靠RTL代码和Design Compiler实现的,这是我们前端设计人员进行低功耗设计与优化所需要知道的,我们会着重介绍;最后我们简单介绍在物理设计层次上面降低功耗的方法。今天我们记录系统与架构级的低功耗设计。

 

1.系统与架构级低功耗设计

  系统与架构层次的低功耗设计,可以节省70%以上的功耗。这个层次上的设计往往是由系统和架构设计人员进行的,这些人员往往是有着丰富经验的设计人员。他们制定了低功耗设计方案,由下一级的设计人员(比如做前端设计、做Flow的人员)进行具体实现。下面就来介绍一下在系统架构方面,可以从哪些方面进行低功耗设计,由于我只是只菜鸟,因此这些内容只是我在前人的经验中进行总结学习的笔记,仅供参考。

  (1)多电压设计技术(Multi-VDD)

①多电压设计技术介绍

从前面的功耗方程中,我们可以知道,电压与功耗有着密切的联系。因此功耗的降低可以考虑使用低一点的电压。多电压设计技术有三种方式:

               

 

A:各电压区域有固定的电压,如上图(a)所示 ;

B:各电压区域具有固定的多个电压,由软件决定选择哪一个电压,如上图(b)所示;

C:自适应的方式,各电压域具有可变的,由软件决定选择哪一个电压,如上图(c)所示。

A是固定分配的电压;而B和C为动态电压管理,涉及到软硬件协同设计,这里我们放到后面进行介绍。这里主要是从整体上进行介绍多电压设计技术及其要求,然后给出A方式的一个例子以及一个多电压低功耗设计的脚本示例。

 

②多电压综合库及电压模式控制单元

  无论是哪一种低电压设计方式,都需要综合库的支出。这低功耗设计的综合库中,需要包含同一个单元在不同电压下的描述。此外综合库还要多电压设计的特殊单元,这些单元主要是:

  ·电平转换器(level shifter):把高(低)电压区域的信号转换到低(高)电压区域。信号通常包括数据、时钟、扫描链数据等。电平转换器的示意图如下所:

               

  ·电源隔离单元(power isolation cell):主要用于模块的输入、输出。它可以关掉电源时,将信号保持为常数,从而避免单元的输入悬空。电源隔离单元如下图所示:

              

  ·保持寄存器(retention register):在不工作的情况下,将寄存器的状态保留下来。

  电源隔离单元和保持寄存器我们将在后面的电源门控中进行详细介绍,这里先给出一个概念。

  为了实现电压的动态管理——无论是使用硬件还是软件进行动态管理,都需要在设中加入电压模式控制单元。一个电压模式控制单元的例子如下所示:

                 

该模块的功能是:系统不工作时, 进入IDLE模式, 这时候可以关掉不工作模块的电源; 当系统工作时, 给工作模块提供正常电压。这个模块可以是软件实现,也可以是硬件实现。

 

③多电压设计举例

  对于多电压设计(尤其是A设计),关键是电压分配。在划分供电区域时, 要尽量与设计的层次结构一致, 并且要考虑到设计复杂性。 下面例子(左图)中(电压分配采用固定分配方案), 存储器、 处理器核 、 其他逻辑用不同的工作电压。

           

  右图中的设计有3个工作频率,分别为300,250和400MHz。由于单元的延迟与供电电压成相反关系,即供电电压越高,单元的延迟越小。因此为了满足时序的要求,对于工作频率高的模块,使用供电电压高的电源,以降低时序路径中单元的延迟,从而降低整条时序路径的延迟。上例中,工作频率为400MHz的模块,时序要求最高,因此供电电压最高,为1.2V。工作频率为250 MHz的模块,时序要求最低,因此供电电压最低,为0. 8V。通过对不同的模块设置不同的供电电压,可以使整个设计既能满足时序的要求,又可以降低其功耗。使用多电压技术,版图设计时,要产生多个电压区域(Voltage Area),把供电不同的模块,分配到不同的电压区域。

在power compiler中,可以使用"Top Down Compile"的方法进行多电压的功耗设计,一个示例脚本如下所示:

        

        

          

          

 

  (2)软/硬件协同设计

  前面介绍了多供电电压设计,同时介绍了使用EDA工具实现的一个示例脚本。多供电电压设计中涉及到电压的动态管理,而动态管理可以使用软件实现,这就设计到了软硬件协同设计的问题。在这里,我们主要介绍软硬件协同设计中的软硬件划分以及电压的动态管理技术。

①软硬件划分

  系统中的功耗都是硬件单元消耗的,但是软件组织对硬件的功耗有着很大的影响。在设计过程中,系统的功能可以用硬件实现,也可以使用使用软件进行实现。低功耗软件的设计需要注意:在满足系统应用的基础上,速度应该尽可能慢,电压应该尽可能低,尽可能满足时间要求。系统设计者根据规范和自身经验对系统性能进行推测(仿真建模),决定哪一部分使用硬件来实现,哪一部分使用软件来实现,从而达到性能和功耗最佳平衡。这些是系统设计者需要考虑的,这里不进行详细叙述,只需要知道,软硬件划分可以很大程度上降低功耗。

 

②动态电压频率调节DVFS技术

  DVFS技术:dynamic voltage dynamic frequency scaling,动态电压频率技术,是一种通过将不同电路模块的工作电压及工作频率降低到恰好满足系统最低要求,来实时降低系统中不同电路模块功耗的方法。

  电路模块中的最大时钟频率和电压紧密相关,如果一个电路能够估算出它必须做多少工作才能完成当前的任务,那么理论上讲就可以将时钟频率调低到刚好能适时完成该任务的水平。降低时钟频率意味着可以同时降低供电电压。频率和电压同时降低,功耗就大大降低了。这个是DVFS的原理。

  DVFS技术这个种方法属于电压的动态管理,可以通过软件和硬件的方式实现。将DVFS合并到操作系统的调度程序和实时嵌入式任务管理服务当中,利用一个可编程的DC-DC开关电压调节器、一个可编程的时钟产生器和一个宽操作域的高性能处理器等资源进行实现。这种技术的使用需要系统使用者决定,这里不进行详述,只需要知道在系统层面可以考虑使用这种方法进行降低功耗。

 

③低功耗软件(操作系统)的动态功耗管理

  前面也说了,可以使用软件的方式进行自适应地选择功耗。在系统软件过程运行过程中,可以在操作系统中加入功耗管理机制,把没有使用到的硬件单元关掉,这便是系统功耗的动态管理。加入功耗管理机制的操作系统的示意图如下所示:

               

这种功耗的动态管理依赖于前面描述的电压模式控制单元,只不过个单元是用软件进行实现的(因为是操作系统进行动态功耗管理)。具体的功耗动态管理实现这里就不详细说明,这应该是属于系统设计者和软件设计人员考虑的。

 

  (3)系统时钟分配

  系统时钟的分频也是系统层面降低功耗可以考虑的方面。时钟是系统中频率最高的信号,其功耗功之高是不容置疑的。在系统设计层面,可以考虑应用要求,将系统设置为不同的工作模式,加入时钟控制模块,在不同的工作模式下选用不同频率的时钟,并且将一些不需要的模块时钟关闭。时钟的分配可以使用内部的状态机实现,也可以使用软件实现。

  例如,可以将系统分为4种工作模式:normal 、 slow、idle、sleep。在不同的模式下,器分频的时钟如下所示:

             

 

  (4)算法与IP选择

在系统设计层次上面,还可以通过算法和IP这两个方面降低功耗。

算法:

  算法级在算法级降低功耗是非常有价值的。 在设计算法时, 要分析该算法需要多少ALU操作, 需要多少次存储器访问, 要尽量使那些耗能多的操作最小化。算法级低功耗设计跟具体设计有关。比如,对于大规模运算的应用(比如FFT),使用对数系统(logarithmic number system,lns)比使用线性系统更好。lns在降低平均位元活跃度(也就是降低0和1的变化程度)的同时使用加法和减法实现乘除法,使效率比线性系统更高。因此基于lsn算法来实现FFT可以节省大量的功耗,但是加法器和乘法器的宽度会增加,使用FPGA实现时就会需要更大的LUT(查找表),而且这个查找表的大小是以指数增长的。

在一些行为综合工具中,可采用延时功耗乘积表示系统的优化目标,以降低完成特定计算所需的状态转换数,生成高效的计算结构。算法这一方面的低功耗设计让算法工程去考虑吧,我们来了解一下就可以了。

IP:

现在的SoC设计依赖于IP的集成。在选择IP时,除了考虑到性能要求,还需要考虑到功耗问题。例如,在选择CPU时,可以分析在完成相同的功能时,哪种CPU功耗更大。

 

(5)其他

  在系统层次上,除了可以上面那些因素外,我们还可以考虑异步设计。在现在的系统设计中,一个系统可能使用多个时钟,但是在每个时钟控制的区域内部都设计成一个同步的子系统。通过时钟树综合、插入缓冲器减少时钟的偏移。这种方法在时钟网络上添加了大量的缓冲器,时钟网络消耗的功耗也增加。在异步设计里面,不需要全局时钟,两个模块通过握手信号进行交互,这时候就可以减少功耗。因此异步设计也是降低功耗的一种方法。

  在大多是DSP中,需要用到FFT算法。FFT算法需要频繁访问存储器,我们可以在存储器和处理器之间添加缓存,在处理器需要之前,预先将相关数据从存储器中取到缓存里面。使用小范围的缓存能够使计算能耗大量下降,提高的FFT的效能。因此在系统设计的时候,特别是系统架构设计的时候,可以考虑基于缓存的系统体系结构进降低功耗。

  系统层次上面的低功耗设计方法还有很多,比如说可测性设计上进行低功耗设计、存储器(内存)的低功耗设计等,这些都可以在系统层次上面进考虑,这里就不一一列出来了。

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

数字SOC设计之低功耗设计入门(三)——系统与架构级低功耗设计 的相关文章

  • vivado 中手动添加 pynq类型板

    随着人工智能的火热 算法的并行计算越来越受到追捧 而pynq python zynq 作为可以用python为高级语言变相调用fpga的模块的soc板也越来越受到人工智能和硬件相关学生的喜爱 而然 Vivado 2019之前的很多版本是默认
  • 【Vim】Vim 常用编辑操作

    目录 正则表达式 vim 命令 vim的工作模式 撤销修改 重做与保存 光标移动命令 文本插入操作 文本删除操作 文本复制 剪切与粘贴 文本的修改与替换 多窗口操作 正则表达式 简单地说 正则表达式是一种符号表示法 用于识别文本模式 在某种
  • RISC-V学习笔记【系统设计】

    蜂鸟E200系列处理器简介 特色 开源 免费 高能效比 针对IoT领域设计 支持RV32I E A M C F D等指令子集和机器模式 2级流水线 功耗和性能均优于主流商用的ARM Cortex M处理器 提供完整的配套SoC 包括中断控制
  • Verdi实现信号的平移

    在Verilog System verilog中 xxx可以实现延迟指定时间的功能 而在使用verdi查看信号波形并进行分析时 同样也可以实现类似的功能 注 这种信号平移是有其应用场景的 例如 在某些仿真模型中 为了模拟实际的信号延迟 信号
  • 如何建设一个安全运营中心(SOC)?

    然信息安全管理问题主要是个从上而下的问题 不能指望通过某一种工具来解决 但良好的安全技术基础架构能有效的推动和保障信息安全管理 随着国内行业IT应用度和信息安全管理水平的不断提高 企业对于安全管理的配套设施如安全运营中心 SOC 的要求也将
  • 【硬件架构的艺术】学习笔记(2)同步和复位

    目录 写在前面 2 同步和复位 2 1 同步设计 2 1 1 避免使用行波计数器 2 1 2 门控时钟 2 1 3 双边沿或混合边沿时钟 2 1 4 用触发器驱动另一个触发器的异步复位端 2 2 推荐的设计技术 2 2 1 避免在设计中出现
  • spyglass的waiver使用问题总结-工具(八)

    spyglass使用过程中waiver warning及error过程中总会出现生效不成功的问题 总结使用步骤供参考 实践出真知 解决问题就是好方法 1 在spyglass的prj中设置默认waiver文件 2 如何waiver 3 查看已
  • 【流水线】FPGA中流水线的原因和方法

    目录 写在前面 什么是流水线 无流水线设计 流水线设计 流水线的后果 结论 写在前面 对 FPGA 现场可编程门阵列 进行编程是一个定制其资源以实现确定逻辑功能的过程 这涉及使用FPGA的基本构建模块 如可编程逻辑模块 CLB 专用多路复用
  • DC综合脚本中文详细解释

    script for Design Compiler DC综合编译脚本 language TCL 语言说明 Usage 使用说明 1 make sure the lib in the current directory 确保设计库在正确的文
  • disable path和false path的作用与区别

    disable path和false path的作用与区别C 欢迎使用Markdown编辑器 链接 disable与false的相同与不同 false path 指定某一条path 工具计算delay 但不报时序 disable path
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • 【Verilog 常见设计】(0)二进制码和格雷码互转 Verilog 实现

    目录 格雷码介绍 转化原理 Verilog 实现 testbench 测试代码 仿真波形 格雷码介绍 在一组数的编码中 若任意两个相邻的代码只有一位二进制数不同 则称这种编码为格雷码 Gray Code 另外由于最大数与最小数之间也仅一位数
  • 线路编码(NRZ,NRZI,8B/10B,Manchester等)

    0 前言 编码根据作用和场景不同分为信源编码 信道编码和线路编码 信源编码 降低信源符号之间的相关性和冗余度 通过编码提高每个符号的信息量 具体说 就是针对信源输出符号序列的统计特性来寻找某种方法 把信源输出符号序列变换为最短的码字序列 比
  • 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm 2013 q2bfsm 写在前面 HD
  • APB总线详解及手撕代码

    本文的参考资料为官方文档AMBA 3 APB Protocol specification 文档下载地址 https pan baidu com s 1Vsj4RdyCLan6jE quAsEuw pwd w5bi 提取码 w5bi APB
  • 数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

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

    目录 写在前面 一 查看信息指令 1 df 查看磁盘驱动器的可用空间 2 free 显示可用内存 二 常用操作指令 1 pwd 查看当前目录 2 cd 改变目录 3 ls 列出目录内容 4 file 确定文件类型 5 切换 root 普通用
  • Design Compiler指南——设计综合过程

    在前面一章介绍完施加约束之后 接下来要做的工作就是将设计进行综合编译 compile 本文我们将主要讨论综合编译的过程 主要分为这样几个部分 优化的三个阶段及其特点 编译的策略 编译层次化的设计 一 优化的三个阶段 这一节我们介绍Desig
  • 【数字电路基础】三态门

    目录 前言 三态门 经典问题 前言 文主要讲解三态门 三态门 其模型为 其实际电路为 其真值表为 B A C 0 0 Z 0 1 Z 1 0 0 1 1 1 注意 Z是高阻 不代表没有电压 而是电压不确定 受自身 旁边cell的影响 经典问
  • IC Compiler指南——数据准备

    一 概述 ICC数据设置的文件关系框图如图 后端工具在数据设置阶段需要对两大类数据进行设置 包括从前端设计继承的综合数据 以及后端设计需要的物理数据 综合数据主要包括前端逻辑综合已经设置过的逻辑与时序库文件 设计约束文件sdc以 及综合网表

随机推荐

  • vue在原有的类名上,动态渲染添加新类名

    vue在原有的类名上 动态渲染添加新类名
  • Redis相关-03

    Redis相关 03 Redis配置文件详解 持久化 RDB操作 持久化 AOF操作 Redis订阅发布 Redis集群环境搭建 主从复制 宕机手动配置主机 哨兵模式 缓存穿透以及雪崩 一 Redis配置文件详解 1 单位说明 Note o
  • S7-1500系列博途中使用SCL语言编程方法简介

    SCL Structured Contorl Language 结构化控制语言 在TIA博途软件中 默认支持SCL语言 在建立程序块时可以直接选择SCL语言 SCL语言类似计算机高级语言 如果你有C Java C Python这种高级语言的
  • gradle 历史版本下载链接

    https gradle org releases
  • 阿里云解决外网不能访问

    开发十年 就只剩下这套Java开发体系了 gt gt gt 1 未配置该端口安全策略 配置如下后 所有ip都可以访问 全部端口都可以使用了 如果只需要特定ip或端口开放也可以进行设置 2 防火墙的原因 我写了关于centos开启防火墙和开放
  • C# 1. 介绍

    1 介绍 C 读作 See Sharp 是一种简洁 现代 面向对象且类型安全的编程语言 C 起源于 C 语言家族 因此 对于 C C 和 Java 程序员 可以很快熟悉这种新的语言 C 已经分别由 ECMA International 和
  • 启动VMware虚拟机时出现黑屏解决办法

    以管理员身份运行 命令提示符 gt 输入命令 netsh winsock reset gt 运行后重启电脑 gt Enjoy it 上述命令作用 重置winsock网络规范
  • linux etc下的profile和/etc/bashrc

    etc profile的设置方法对所有登录的用户都有效 bashrc只对当前用户有效 上面两个都是配置文件 开机后 系统会先读取 etc profile 再读 bashrc 不同的用户 bashrc文件可以有不同的设置 而 etc prof
  • GitHub使用--上传一个文件

    上传文件到GitHub需要用到两个软件 分别是GitHub TortoiseGit 创建步骤如下 1 选择文件夹 2 右键选择 代码仓库 3 如果上传的文件根目录是这个 就不勾选 反之勾选 4 确认 5 文件右击选择commit 6 填写M
  • 扩展阿里p3c实现自定义代码规范检查

    前段时间fastjson报出了漏洞 只要打开setAutoType特性就会存在风险 自己测试环境的一个项目被揪出来了 虽然改动很小 但就是觉得憋屈 fastjson还是挺好的 想着禁用的话太可惜 用的话又要注意安全 就想着找款工具提示下在用
  • Node.js基础——模块

    文章目录 在Vscode上使用node js运行js代码 法一 终端运行 法二 右键Run Code Vsode设置node代码提示 CommonJS规范 模块化规范 JS标准的缺陷 没有模块化系统带来的影响 CommonJS的模块化规范
  • Flutter运行在Android上卡Running Gradle task ‘assembleDebug...

    Flutter运行在Android上卡Running Gradle task assembleDebug 是因为无法访问官方源 下面进行换源 1 修改配置文件 buildscript repositories google mavenCen
  • 代码静态分析

    1 简介 静态测试包括代码检查 静态结构分析 代码质量度量等 它可以由人工进行 充分发挥人的逻辑思维优势 也可以借助软件工具自动进行 代码检查代码检查包括代码走查 桌面检查 代码审查等 主要检查代码和设计的一致性 代码对标准的遵循 可读性
  • 微信小程序中使用video组件

    文章目录 前情提要 搭建视频服务器 小程序项目 app json pages index index wxml pages index index wxss pages index index js 相关链接 前情提要 小程序里要放置视频
  • 算法:邮局选址问题

    一条直线上有N个居民点 需要建设K个邮局 邮局只能建在居民点上 则所有居民点到最近邮局到最短距离是 动态规划 时间O N N 核心思想 外层循环 邮局数量K 直到包括最大邮局 中层循环 区间 0 R 直到包括整个区间 内层循环 从 0 R
  • 2021-03-20

    Tensorflow 从本地导入数据集 离线使用数据集 1 keras datasets cifar10 load data 进入函数load data j将函数中的path 路径进行修改 dirname cifar 10 batches
  • VM vSphere 导出OVF文件,导入VM Workstation 无法正常引导进入系统

    VM vSphere 导出OVF文件 导入VM Workstation 无法正常引导进入系统的原因有很多种 本次进行修复的原因为 蓝屏错误 终止代码 KMODE EXCEPTION NOT HANDLED 1 首先排查是VM Worksta
  • vscode中使用emmet

    vscode内置emmet功能 可以用在html jsx css sass less等文件上 但是默认没有开启 在setting中添加 emmet triggerExpansionOnTab true 之后 在 html文件里输入div m
  • 本体构建——使用Protege利用Cellfie批量导入excel数据时常见错误及解决方法

    protege利用Cellfie导入数据 https blog csdn net mysky54 article details 108033813 在Tools Create axioms from Excel workbook 中打开文
  • 数字SOC设计之低功耗设计入门(三)——系统与架构级低功耗设计

    前面讲解了使用EDA工具 主要是power compiler 进行功耗分析的流程 这里我们将介绍在数字IC中进行低功耗设计的方法 同时也结合EDA工具 主要是Design Compiler 如何实现 我们的讲解的低功耗设计主要是自顶向下的设