苏州网站优化找哪家,wordpress留言板页面,ios系统开发,企业所得税税前扣除凭证管理办法前面讲解了使用EDA工具#xff08;主要是power compiler#xff09;进行功耗分析的流程#xff0c;这里我们将介绍在数字IC中进行低功耗设计的方法#xff0c;同时也结合EDA工具#xff08;主要是Design Compiler#xff09;如何实现。我们的讲解的低功耗设计主要是自顶向…前面讲解了使用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 systemlns比使用线性系统更好。lns在降低平均位元活跃度也就是降低0和1的变化程度的同时使用加法和减法实现乘除法使效率比线性系统更高。因此基于lsn算法来实现FFT可以节省大量的功耗但是加法器和乘法器的宽度会增加使用FPGA实现时就会需要更大的LUT(查找表)而且这个查找表的大小是以指数增长的。
在一些行为综合工具中可采用延时功耗乘积表示系统的优化目标以降低完成特定计算所需的状态转换数生成高效的计算结构。算法这一方面的低功耗设计让算法工程去考虑吧我们来了解一下就可以了。
IP
现在的SoC设计依赖于IP的集成。在选择IP时除了考虑到性能要求还需要考虑到功耗问题。例如在选择CPU时可以分析在完成相同的功能时哪种CPU功耗更大。 5其他 在系统层次上除了可以上面那些因素外我们还可以考虑异步设计。在现在的系统设计中一个系统可能使用多个时钟但是在每个时钟控制的区域内部都设计成一个同步的子系统。通过时钟树综合、插入缓冲器减少时钟的偏移。这种方法在时钟网络上添加了大量的缓冲器时钟网络消耗的功耗也增加。在异步设计里面不需要全局时钟两个模块通过握手信号进行交互这时候就可以减少功耗。因此异步设计也是降低功耗的一种方法。 在大多是DSP中需要用到FFT算法。FFT算法需要频繁访问存储器我们可以在存储器和处理器之间添加缓存在处理器需要之前预先将相关数据从存储器中取到缓存里面。使用小范围的缓存能够使计算能耗大量下降提高的FFT的效能。因此在系统设计的时候特别是系统架构设计的时候可以考虑基于缓存的系统体系结构进降低功耗。 系统层次上面的低功耗设计方法还有很多比如说可测性设计上进行低功耗设计、存储器内存的低功耗设计等这些都可以在系统层次上面进考虑这里就不一一列出来了。