当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1 引言:功耗在芯片设计中的地位长期以来,设计者面临的最大挑战是时序收敛,而功耗处于一个次要的地位。近年来,下面的因素使功耗日益得到设计者的关注:1)移动应用的兴起

1 引言:功耗在芯片设计中的地位

长期以来,设计者面临的最大挑战是时序收敛,而功耗处于一个次要的地位。近年来,下面的因素使功耗日益得到设计者的关注:

1)移动应用的兴起,使功耗的重要性逐渐显现。大的功耗意味着更短的电池寿命。

2)芯片集成度的提高,使供电系统设计成为挑战。

随着工艺的进步,芯片内的电路密度成倍提高,并且运行在以前数倍的频率之上,而片上连线则越来越细,片上供电网络必须将更多的电力以更少的连线资源送至每个单元,如果不能做到这一点,芯片的稳定性和预定工作频率都将成为问题。IR压降和供电网络消耗的大量布线资源成为困扰后端设计者的重要问题,现在这种压力正在一步步传导到前端设计者的身上,要求在设计阶段减少需要的电力。

3)功耗对成本的影响日益显著

功耗决定了芯片的发热量,封装结构需要及时把芯片产生的热量传递走,否则温度上升,造成电路不能稳定工作。因此,发热量大的芯片需要选择散热良好的封装形式,或者额外的冷却系统,如风扇等,这意味着成本的增加。

基于以上原因,功耗成为产品的重要指标与约束。下面的因素在设计之初,就应当列入设计者的考虑范围:

1)功耗目标的确定

a) 产品的应用领域中功耗指标的商业价值;

b) 封装,制程的成本影响;

c) 实现的可行度,复杂度,由此带来的设计风险和时程影响的评估;

d) 参考值的选取:根据同类产品,经验值,工具分析确定,并随着设计的深入不断修正。

2)优化方案(策略)的设定

在进一步分析之前,我们先看一下功耗的组成。

2 功耗的组成

2.1 core power

功耗的组成包含RAM、ROM、时钟树(clock tree)和核心逻辑电路(Core logic)等四部分,下面依次来分析。

1)RAM

RAM功耗的计算是项复杂的任务,幸运的是,memory compiler可以为我们进行此项工作。关键点在存取每个端口的速率,这可以通过考虑存取pattern类型得到,或者通过仿真得到。建议在设计初期即生成不同参数(宽度,深度,速度,port数)的RAM/ROM的功耗数据,以利于设计探索。

2)时钟树

时钟树的功耗占到整个芯片功耗的40%~60%,因为它的高活动率(100%)和正负边沿均消耗电力。

其中,电容包含寄存器的电容,驱动单元的电容和连线电容三部分。

3)核心逻辑电路

定义核心逻辑电路功耗为除时钟树外的组合与时序单元消耗的电力。由两部分组成:

leakage current

capacitive loads

4)宏单元(macro cell)

多数芯片包含PLL等模拟macro,可以从库提供商的数据手册找到其功耗参数。设计者可以通过切分系统模式关闭不需工作的模块,以减小功耗。

2.2 IO power

IO功耗包含IO单元、外部负载、外部终端等。因为需要驱动板级的连线,IO的电容会是内部单元的数百倍量级,因此消耗较多的电力。有时候,IO的功耗可以占到整体功耗的很大比例,系统架构可能因之改变,如:重新定义系统的划分,以减少芯片-芯片的连接;选择不同的IO接口协议,以减少能量消耗。IO 功耗通常由系统架构,接口带宽与协议要求决定。一旦库选定,设计者可以优化的空间很小,但是核心的功耗是设计者可以减小的,在后面的篇幅中,我们将以核心功耗的估算与优化作为主题。

3 功耗估算

功耗估算的价值是尽可能早地以定量方式看到优化结果,以助于设计者的初期架构探索。在每个阶段, 如产品规划、架构制订、代码书写、综合、P&R等,设计者都面临若干选择,能马上看到选择的结果,而不是到设计流程的末尾,可以有效减少开发时间。

3.1估算的方法

功耗的估算可以在设计流程的各个阶段进行,对应设计表征的不同形式。

software level ->behavior level -> RT -> gate -> circuit

越早的阶段,抽象层次越高,其精确度越差,但可以更早给设计者反馈,同时得到估算结果消耗的时间越少。

1. 软件级

首先,定义系统将执行的典型程序。典型的程序通常会有上百万的机器周期,进行一次完整的RTL级的仿真可能需要数月时间,这是不可接受的。解决的方法是在更高层次建立基本组成单元的功耗模型。

比较实用的方法是根据特定的硬件平台,统计出每条指令对应的功耗数据,进行指令级的仿真。

2. 行为级

在进行分析前,我们首先应了解电路的功率消耗原理,实际电路的电力消耗如图1所示。

 

图1

Prms = 1/2 * f * Vdd^2 * sigma(Ci * Ai)

--- f : clock frequency

--- Vdd : voltage

--- Ci is capacitance load of node,

--- Ai is the average switching activity of their node

在行为级设计表征中,物理电路单元尚未建立,难点是得到电容与活动率的值。存在两种思路:

1) 理论估计:

根据电路复杂度得到C,复杂度由算术,逻辑操作的数量,状态的数目与转换率衡量。

complex = f (arith ope, boolean ope, state, transition)

可以根据信息理论估算活动率。

2) 实验估计:

由快速综合得到寄存器传输级的原型,进而估计电容与活动率。

3. 寄存器传输级

第一步是在库中为高层的设计组件建立功耗信息算式,得到方式是在不同环境变量组合下通过仿真,统计功耗数据,绘制成曲线形式。然后,通过静态分析电路结构或动态仿真,收集电路动作几率数据,代入上述算式,得到各个组件的功耗值。最后,把所有组件的功耗值求和,得到总功耗。

4. 门级

与寄存器传输级的区别在于,基本单元是工艺库中的标准单元,功耗方程通过电路仿真得到,所以更精确。

5. 晶体管与版图层

所有的连线的电容、单元的负载,驱动都已得到,根据晶体管和连线模型的电压、电流方程,可以算出精确的功耗数据。[!--empirenews.page--]

3.2估算的流程

因为指令与行为级估算的精确度太差,电路级估算的耗时过多,所以在业界的实践中采用较少。RTL与gate级估算是常用的选择。实际功耗分析的执行必须借助工具的辅助,目前业界通常的选择是在RTL级采用power compiler,在门级采用primepower。

 

图2

下面以power compiler为例,说明门级估算的步骤。

在dc compile前,设置下面的变量:

power_preserve_rtl_hier_names = false/true

编译

写出ddc文件

仿真生成vcd 文件

vcd2saif转化为.saif文件 (注意vcd2saif由csh调用,而不是在dc_shell界面调用)

读入ddc网表

read_saif

report_power

4 功耗的优化

4.1优化的原则

图3是几个典型设计中功耗分布数据:

 

(数据来自“International Solid-State Circuits Conference”)

图3

我们的目标是减少时钟树、标准单元和存储器的功耗。功耗与性能通常是充满矛盾的:

1)使时钟变慢(更少的转换),但我们想要更快的处理速度。

2)减小Vdd,但Vdd变小会限制时钟速度。

3)更少的电路,但更多的晶体管可以做更多的工作。

简言之,我们想用最少的能量完成最大量的任务。实现方式是对电路动作的控制精细化,仅让恰好需要的电路,在需要的时间内动作,而不浪费分毫。完成这一任务,需要设计者有效率地管理电路的动作。

现代系统是如此复杂,以致设计者必须切分为若干层次,分步前行才能把握:

软件 -> 架构 -> 逻辑 -> 电路

每一层次中,设计者对电路动作的控制范围和手段都是不同的。软件是硬件动作的总调度师,设计者可以根据特定应用,关掉整个模块或减少无效的动作。进入架构层,视角转为怎样将设定任务合理分配到各个模块,协调动作最有效率,如pipeline、分布式计算、并行计算等。在逻辑层,则考虑怎样实现一步动作仅使需要的电路动作。电路层的视角更为精细,通过调节平衡信号到达时间,驱动单元大小等手段,使电路的动作耗能最小。这里存在一个重要规律,称作效率递减率:

在高的抽象层次减少功耗的效率会比低的层次更高。

所以,降低功耗是一个系统工程,需要软件、硬件、电路、工艺等人员的共同努力。这里,我们将采用架构与逻辑的视角进行下面的讨论。

4.2 架构考虑

1)切分工作模式,硬件要可以提供一个接口,以使软件可以控制电路模块的动作与否。不工作的模块挂起。

2)分布式计算:将整个任务切分到不同模块,在内部处理高活动性信号。

虽然总计算量没有改变,但对单个模块,时间要求降低,可以降频或降压。

3)并行计算:相同时间内计算量相同,但可降频/压。

(计算量=开关的次数,开关次数没变,但每次开关的功耗成本降了)

4)pipeline

每步的计算量减少,可以在性能相同的情况下,降低工作频率。

5)可编程性与hard-wire的权衡

可编程性越强,完成相同的任务耗电越多。

 

(见参考文献[7])

图4

4.3 RAM的功耗优化

很明显,大的RAM比小的RAM耗电要多,将整块的RAM分成小块可以降低存取功耗。

 

图5

值得注意的一点是,多数设计者认为片选信号无效,RAM即进入最小功耗。实际上,若此时其数据/地址端口信号有翻转,会耗费相当的电力(约占激活功耗的20%)。在不存取时,最佳的方式是,保持片选无效,地址、数据是恒定值。

4.4时钟树单元/连线

4.4.1 时钟门控的原理

在典型的数字芯片中,时钟网络的功耗可以占到总量的50%,这是一个庞大的数字。一个行之有效的方案是使用时钟门控,将当前未工作逻辑的时钟树关闭。比如下面的逻辑,在EN是0时,可以将右侧的register bank的时钟关闭。

 

图6

时钟门控逻辑加入的方式有两种:手动和自动。

a) 手动方式

在每个IP模块的时钟根节点加入,EN信号可以由程序设定产生。

b) 自动方式

dc_shell > set_clock_gating_style (options) 选择时钟门控的方式和条件

dc_shell > analyze -f design.v 读入设计

dc_shell > elaborate MY_DESIGN 构造设计

dc_shell > insert_clock_gating 将符合条件的逻辑门控

dc_shell > create_clock -period 10 -name CLK 创建时钟

dc_shell > propagate_constraints -gate_clock 加入时钟门控单元的时序约束

手动和自动结合的方式可以达到最好的效率。

4.4.2 gating 单元的选择

a)latch-based(图7)

 

图7

b)latch-free(图8)

 

[!--empirenews.page--]

(图8)

通过set_clock_gating_style的下列选择,设计者可以控制门控单元的选取,如图9所示。

 

图9

选择考虑:

1)latch:用还是不用,是个问题。

latch-free的方案中,EN信号必须在时钟负沿前稳定,否则时钟会出现毛刺, 造成只留给EN产生逻辑半个时钟周期的时间。latch-based方案则不存在这个限制,但引入latch使时序分析,测试复杂性增加。故选择哪种方案需要设计者权衡决定。

2)正沿/负沿寄存器需要指定不同的门控单元

比如latch-based方案:正沿FF用and门,负沿FF用or门

3)integrated clock-gating cell/普通单元

在生成库的过程中,可以创建专门的集成时钟门控单元,以获得较好的时序。

4.4.3 时序分析

通过set_clock_gating_style -setup -hold 或 set_clock_gating_check指定。

AND门(图10)

 

图10

OR 门(图11)

 

图11

数值需要考虑到时钟歪斜的影响。

4.4.4 与dft流程的配合

1) 加入控制点(图12)

 

控制点的位置和控制信号可通过下面指令控制:

dc_shell> set_clock_gating_style -control_point before -control_signal scan_enable

图12

2) 加入观察点(图13)

在测试中,EN信号和control logic中的信号是测不到的,解决方式是加入观测逻辑。

 

dc_shell> set_clock_gating_style -control_signal test_mode

-observation_point true

-observation_logic_depth depth_value

图13

在测试模式,观察逻辑允许观测ENL信号,在正常操作模式,XOR树不消耗能量。

3) 测试信号与顶层测试端口连接

时钟门控单元的测试信号需要和顶层的测试端口相连,通过下指令进行,如图14所示。

 

图14

如果顶层有指定端口,将直接相连,否则,会创建此端口,并连接。

4.4.5 结果

在插入时钟树后,可以用report_clock_tree_power来获得时钟网络的功耗信息。

时钟门控经设计实践证明是一个行之有效的降低功耗手段,下图是基于一项真实设计的评估:(见参考文献[6])

 

图15

5 结语

在现代芯片设计中,功耗越来越引起设计者的关注。在本文中,我们首先分析了功耗的组成部分,然后阐述了功耗估算的方法,通过功耗估算可以使设计者在设计初期及时评估设计方案的效率,以便做出最优的选择。最后,重点分析了功耗优化的手段,包括架构优化,RAM功耗降低,时钟门控三种技术,并对引进时钟门控技术时若干难点逐一提出了解决方案,如门控单元选择,时序分析,测试支持等。功耗分析与优化二者相辅相成,设计者善加使用,方可事半功倍。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

现在的智能家居越来越受欢迎,市面上出现了各式各样的无线收发模块,功能也各不相同,当然了,大家不能盲目的去采购,这样可能会带来一些不必要的损失。

关键字: 无线收发模块 功耗 网络协议

D类音频放大器参考设计(EPC9192)让模块化设计具有高功率和高效,从而可实现全定制、高性能的电路设计。

关键字: 音频放大器 电路设计

可调电容作为一种重要的电子元器件,在电路设计中具有广泛的应用。本文将对可调电容的基本概念、工作原理、调用方法以及应用场景进行详细探讨,旨在帮助读者更好地理解和应用可调电容。

关键字: 可调电容 电子元器件 电路设计

近日,国内新一代激光陀螺驱动系列功能芯片问世,由湖南二零八先进科技有限公司(下简称“二零八公司”)技术团队研发。相比行业内普遍应用的上一代激光陀螺驱动控制电路,激光陀螺驱动专用芯片降低了电路设计难度,大幅减小体积重量,实...

关键字: 激光陀螺仪电路 芯片 电路设计

R是施密特触发器输入端的一个10KΩ下拉电阻,时间常数为10×10-6×10×103=100ms。

关键字: 复位 电路设计 施密特触发器

学好电子技术基础知识,如电路基础、模拟电路、数字电路和微机原理。这几门课程都是弱电类专业的必修课程,学会这些后能保证你看懂单片机电路、知道电路的设计思路和工作原理;

关键字: 单片机 编程 电路设计

Buck-Boost电路工作原理及其应用你有没有去了解过呢?随着科技的不断发展,电力电子技术在各个领域得到了广泛的应用。其中,Buck-Boost电路作为一种重要的电力电子变换器,具有很高的实用价值。本文将对Buck-B...

关键字: buck-boost 电路设计

本文是开发测量核心体温( CBT )传感器产品的刚柔结合电路板的通用设计指南,可应用于多种高精度(±0.1°C)温度检测应用。

关键字: 温度传感器 电路设计

自9月22日开始,2023年中国大学生工程实践与创新能力大赛选拔赛在全国各省市陆续展开,10月29日北京、海南、新疆等区域选拔赛成功举办,也为今年的选拔赛画上了圆满的句号。在此,向那些成功晋级国赛的选手们致以热烈祝贺,同...

关键字: PCB 电路设计

自从智能手机、平板电脑、笔记本电脑的兴起,内置的锂电池技术没有革命性突破,续航问题一直伴随着这些数码设备,移动电源的出现给我们出行过程中学习、工作、娱乐提供了更多额外的电量,可谓是功不可没。

关键字: 移动电源 电路设计 智能手机
关闭
关闭