微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SoC设计流程中的功耗管理

SoC设计流程中的功耗管理

时间:06-05 来源:互联网 点击:

量,库供应商手册中的数据可用于确定正确的功率速度比(mW/MHz)。一个模块内每种类型的单元的内部功耗可由下式计算:功耗=门数×mW/MHz×活动×频率。将一个模块内所有不同类型的单元的功率加在一起,就可得出这一模块总的内部动态功率的估计值。在综合前,可根据所选择的体系结构和对设计本身的理解来对门数进行估计。例如,从总线宽度、字长、控制层和存储器深度等可得出大致的门数。在选择了库以后,模块的门数就可以利用Design Compiler的report-reference命令在初期综合后进行估计,这项功能将报告设计中每个例化设计的数量。功率计算的一个关键方面是指定活动水平。设计中的门电路都具有不同的活动水平,在对设计进行仿真提取开关动作或不进行仿真的情况下进行估计均可。但在选择了库之后,推荐进行功能仿真来确定开关动作。

开关动作以翻转率(TR)衡量。翻转率是指在单位时间内,一个设计对象(如节点、引脚或端口)从逻辑0至逻辑1以及从逻辑1至逻辑0进行转换的次数。对于一个节点来说,如果它在100ns的时间间隔内有50次从逻辑1至逻辑0的转换,以及50次从逻辑0至逻辑1的转换,则其翻转率为1,表示每ns有1次动作转换。功率与转换率之间的关系可以理解为,在状态改变的时间间隔内,为了完成内部电路的状态转换,就必须提供一定的能量,因此,每次转换都会消耗功率。

重要的是,只有在开关动作代表了芯片的实际工作状态的情况下,在任何抽象层次上的功率估计才有意义。常见的错误是在试图确定活动时,使用一个向量来仿真系统启动序列。此项活动极少能够代表真实的工作状况,因而会导致不准确的功率估计。采用RTL级仿真能够自动生成一个SAIF(Switching Activity Interchange Format)文件,但是活动值只有在此向量现实时才是准确的。目前的工具尚不能自动生成这样的向量,因为它需要对电路的实质有明确的理解。

图3所示为可以在VCS内使用的编程语言接口(PLI)系统任务,用于在仿真期间生成SAIF文件。Power Compiler提供了一项power_estimate功能,这项功能使用SAIF文件来定义库和约束条件,以及对设计进行注释,以用于功率估计。Power Compiler针对未注释端口的默认开关动作是,每个上升沿有1/4的概率翻转,此数值在整个模块内应用和传送。

表2和表3所示为采用上述方式的估计结果。计算出内部功率之后,开关功率可以按内部功率的30%进行估计。由于没有精确的负载和开关数据,此数值仅为粗略的估计值。这样的估计主要用于对不同设计方案的功耗进行比较,而非用于预测芯片的实际功耗。但是,正如前文所述,RTL级的近似估计的确能够在早期对芯片设计的可实现性提供参考意见。

泄漏功率可以根据每种单元类型的泄漏数据进行估算。由于高态和低态下的泄漏不同,所以泄漏功率分析必须在信号处于一定逻辑状态的静态概率的基础上进行。静态概率表示为0至1之间的一个数,该数值可以根据信号的功能进行估计。例如,一般情况下,一个低态有效的复位信号的逻辑“1”静态概率(SP1)等于或接近1.0(100%)。对于一个数据总线信号而言,除非某些架构特性建议有其它概率,其SP1通常可以 假设为0.5(50%)。在选定了库之后,静态概率可在仿真期间,通过将信号处于某一特定逻辑状态下的时间和总仿真时间进行比较来计算得到。

门电路级功率分析

在综合完成后,有可能根据实际门数和仿真得到的活动来从Power Compiler中获得相当精确的功率估计值。这时估计的不准确性来自活动以及布局前的线负载值。通过从门级仿真中生成SAIF文件,准确性可以得到改善。在VCS中,与图3中相同的指令可用于生成SAIF文件,只是其中的第一条指令应当改为:

$set_gate_level_monitoring (on);

这里必须再次强调,只有在仿真向量代表了真实的应用行为时,活动值才是准确的。Physical Compiler工具在物理优化后使用write_parasitics -distributed指令用于改善负载的准确性,这项指令能够产生注释了Steiner路径和寄生电阻、电容估计值的SPEF文件。

布局完成后,门级仿真能够生成VCD(Value Change Dump)文件,用于PrimePower分析。VCD文件的记录在仿真过程中变为一个信号值,并提供了设计的节点活动、结构数据体系连接性、路径延迟、时序和事件方面的信息。

如果芯片的I/O数量众多、在高速下切换开关并驱动很长的线路,那它将有可能成为造成估计不准确的重要因素。如果设计目标要求得到准确而非最坏情况下的功率估计时,I/O的集总负载模型可能会产生过分悲观的估计结果。要想获得更为准确的结果,可以在关键的I/O

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top