Xilinx功耗评估
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xilinx功耗评估相关的知识,希望对你有一定的参考价值。
概述
1. 简介
本专题研究了Xilinx的功耗评估的方法和低功耗设计的方法,并在实际板子上验证了功耗评估的效果。
2. 参考资料
- wp298 Power Consumption at 40 and 45 nm (v1.0)
- ds160_Spartan-6 Family Overview (v3.1)
- ug394 Spartan-6 FPGA Power Management (v1.2)
- ug440-xilinx-power-estimator (v14.7)
- ug733 Xilinx Power Tools Tutorial (v14.5)
- wp353 Seven Steps to an Accurate Worst-Case Power Analysis Using Xilinx Power Estimator (XPE) (v1.0)
- power-estimation.pptx
- Spartan3A_Spartan6_XPE_14_3.xls
- ISE help
- UG687-XST User Guide for Virtex-6, Spartan-6, and 7 Series Devices(v13.3)
FPGA供电分析
本章节大部分文章摘抄自WP394
1. 各路电源分析
ug394电源供电
Spartan6对各路电源的约束
- VCCINT:内核电压,对所有的内部逻辑供电包括CLB,BlockRam,DSP。对POR电路的输入供电。对1.2V,1.5V和1.8V的输入信号供电。-1L器件是1.0V,其他器件是1.2V。
DC162中描述:对于-3和-2器件来说,VCCINT可以降低到1.14V,但此时的DDR2的最高频率会降低。对DDR3无影响。
Vccint对于MCB的影响 - VCCAUX:辅助电压,对时钟单元(CMT),一些IO资源,一些配置引脚和JTAG接口供电。对大多数2.5V和3.3V的输入信号供电。可选2.5V或3.3V。
当VCCAUX设为2.5V时,会比3.3V节省40%的功耗。VCCAUX设为2.5V时,在VCCO=3.3V的bank,可以作为LVCMOS25的输入引脚的供电电源,简单电源设计。
VCCAUX设为3.3V时,IO的下拉电阻阻值会减小, 100欧姆差分阻抗会控制的更加严格。
如果在FPGA配置阶段,VCCO_2是1.8V,那么VCCAUX必须是2.5V。 - VCCO_0:对bank0的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VCCO_1:对bank1的输出引脚供电。BPI配置模式时,要与Flash的电压相同。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VCCO_2:对bank2的输出引脚供电。要与配置相关的逻辑使用相同的电压。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VCCO_3:对bank3的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VCCO_4:对bank4的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VCCO_5:对bank5的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
- VREF:当该bank使用的电平是HSTL/SSTL时,VREF是输入阈值电压,其他电平时,作为普通IO。当作为一个bank的参考电压时,该bank中所有的VREF需要连接在一起。
2. 挂起模式(Suspend)
挂起模式的特点包括:
- 简单、快捷的将FPGA置为静止状态,消除大部分动态电流
- 静态电流降低40%
- 保存FPGA的配置信息和FPGA的运行状态
- 快速的、可编程的唤醒时间
- 在挂起模式可以定义不同引脚的状态
- 通过SUSPEND引脚进入挂起状态
- 通过AWAKE引脚指示唤醒状态
- 多达8个唤醒引脚
- 在进入挂起状态之前,SUSPEND_SYNC原语会发出确认信号
3. 静态模式(Quiescent)
将FPGA的PROGRAM_B拉低之后,FPGA进入静态模式,此时所有IO引脚都是高阻态,内部逻辑没有翻转。为了获得最小的电流,释放PROGRAM_B为高电平,然后拉低INIT_B或者将MODE引脚设为slave方式且外部输入时钟不翻转。
静态模式下的电流
静态模式下的电流续
4. 休眠模式(Hibernate)
休眠模式示意图
将FPGA的VCCINT VCCAUX VCCO_2断开之后,FPGA进入休眠模式,此时消耗更加少的电量。在进入休眠模式之前,建议FPGA先进入静态模式。
功耗分析
本章节大部分文章摘抄自WP298
1. FPGA的功耗来源
FPGA所有的功耗可以分为两部分,静态功耗和动态功耗。
1.1 静态功耗
如果细分的话,静态功耗也包括两部分:器件静态功耗和设计静态功耗。
器件静态功耗-主要是由漏电流引起的,在三极管关闭的时候,仍然有电流在流动。只要FPGA上电,就会有静态电流。在XPE中也可以看到,空白的XPE表格也会有静态功耗。
设计静态功耗包括IDELAY DCM PLL消耗的静态功耗,如果设计中不用这些器件,就不会有额外的静态功耗。
wp298 三极管漏电流示意图
静态电流包括两部分从源极到漏级的漏电流Source-to-Drain Leakage和基极漏电流Gate Leakage,总体的漏电流ICCINTQ = IS-D + IGATE。
漏电流的大小与制程和温度有关。当三极管尺寸减小时,漏电流会加大。当温度升高时,漏电流会加大。下图是静态功耗和温度的关系,以Virtex4为例。
静态功耗与温度的关系
Xilinx用了很多方法减小静态功耗,主要方法如下表。详细内容请参考WP298。
Xilinx减小静态功耗的方法
其中有两点我们可以注意:
- suspend mode,可以减小40%的静态功耗,目前还没有使用过这项功能。UG394对suspend降低功耗有更加详尽的描述。
- -1L器件有更小的Vccint,Vccint减小10%,静态功耗减小27%。Spartan6 -2 -3的器件的Vccint的电压是1.2V,-1L的Vccint电压是1V,可以减小不少的静态功耗。但是-1L的性能不强。
1.2 动态功耗
动态功耗是FPGA运行时所消耗的能量。每个节点的动态功耗与时钟频率、电容、电压、翻转率相关。节点的动态功耗公式为Dynamic Power = CV2f 。
Xilinx用了很多方法减小动态功耗,主要方法如下表。详细内容请参考WP298。
Xilinx减小动态功耗的方法
有两点可以关注:
- BlockRam低功耗模式,在Coregen中生成BlockRam时,可以选择功耗优先还是面积优先。但是生成FIFO的时候,却没有这一选项。在XST的属性中,有-power这一选项,其中也包括了BlockRam的功耗优化。具体的可以查看UG687。
- -1L器件有更小的Vccint,Vccint减小10%,动态功耗减小19%。
UG394提出的减小动态功耗的方法:
- 输入信号静止,动态功耗会降低
- 尽可能满摆幅输入
- 关掉尽可能多的输出
- 输出信号采用低摆幅的电平标准
- 降低驱动电流和slew rate
- 将所有没有用到的输入引脚接到VCCO或者GND上
- 在用到的IO上不要放置上下拉电阻
- 在负载较大的线路上减小走线长度,以减小电容
- 不使能内部的振荡电路
- BlockRam工作在NOCHANGE模式,减小BlockRam输出的翻转率
- 利用BUFGCE原语控制门控时钟,不要使用逻辑控制时钟
- 减少时钟个数
- 减少DCM或者PLL的个数
2. 电压的影响
动态功耗与电压的平方成正比,静态功耗与电压的立方成正比。因此减小电压可以有效的减少功耗。Spartan6 -1L器件的核电压从1.2V将为了1V,下图所示的是功耗对比结果。
-1L器件功耗对比
3. IO功耗
Xilinx提出的,减小IO功耗的方法:
减小IO功耗的方法
- 可编程的IO slew rate和驱动强度,slew rate越低、驱动强度越小,功耗越小
- 剩余几项都是针对V6的
4. ISE软件优化
ISE软件在Synthesis阶段、MAP阶段、PAR阶段都有-power功耗优化的选项。在MAP阶段还有-global_opt的优化选项。
可以在ISE的相关帮助文档里面查看这些选项的具体作用。
功耗评估
本章节大部分文章摘抄自UG394 UG440
1. 综述
Xilinx的功耗评估主要使用到了2个工具:Xilinx Power Estimator spreadsheet和XPower Analyzer。前者是一个excel表格,简称为XPE,后者是ISE中的软件,简称XPA。 Xilinx推荐的功耗评估包括3个阶段:
- 概念阶段-粗略估计FPGA模块的规模、翻转率来评估FPGA的功耗,使用XPE
- 设计阶段-根据实现的网表文件精细评估FPGA的功耗,使用XPA
- 系统集成阶段-在实验室环境中测试功耗,使用实际的测试工具
1.1 XPE简介
XPE提供了一种简单、快速、粗略的评估功耗的方法,并不需要设计网表。通常用在项目的前期阶段,用于架构评估和器件选择,帮助选择合适的供电电源和温度控制器件。XPE考虑了包括资源使用、翻转率、IO负载和其他的设计元素,结合器件模型,可以评估出每一路电源的功耗情况。
XPE的准确性主要是通过两方面来保证的:
- 资源使用、时钟、使能和翻转率的评估
- 工具内部集成的器件模型
为了使XPE更加精确的评估,尽量填写实际情况下的信息,当然,如果前期预计与实际相差很大,那么评估就会很糟糕。
1.2 XPA简介
从Xilinx的起名字来看,XPA不仅仅是一个功耗评估工具,也是一个功耗分析工具,提供了XPE不具备的功能,XPA的评估是建立在设计网表之上,因此评估更加准确。在实现结束之后,可以利用XPA精确评估和分析电源功耗。
2. XPE介绍(UG440 UG733)
2.1 工具介绍
Xilinx Power Estimator实际上是一个从Xilinx网站下载的Excel表格,网址:http://www.xilinx.com/products/design_tools/logic_design/xpe.htm,在这个网站上可以下载到相应的器件的功耗评估表。
每个器件对应的功耗评估表格
- 设置按钮
设置按钮
可以导入三种类型的文件:
- .xls的XPE文件
- .mrp的Map report文件,该文件主要用于配置FPGA的类型,与功耗相关信息很少
- .xpe的XPA导出文件,可以方便查看,这一项会经常用到
- .pwr文件,以文本格式记录
- .xpa文件,将XPE的设置导入到XPA当中
- 首先选择器件类型和电源电压
选择FPGA型号
选择电源电压 - 可以在每一个子页分别填写信息,表格会自动计算出功耗
分类评估FPGA的功耗,我们选择的FPGA型号是Spartan6-lx9,共有8个子项可以评估,分别是clock、logic、io、bram、dsp、dcm、pll、mcb。
Spartan6-lx9的功耗分类 - 功耗汇总
功耗分类1
功耗分类2
在Summary页,可以看到每一路电源的功耗,FPGA不同资源的功耗状况,静态与动态功耗的比例,功耗与温度的关系。
功耗分类3
在Graph页,有四副图表,展示了更多的内容。
2.2. Toggle rate
对于同步路径来讲,toggle rate反映的是输出相当于输入时钟的改变概率,数值在0%~100%之间。100%意味着输出在每个时钟沿都会翻转。
对于非周期性信号或者事件驱动的设计,toggle rate很难估计。一个有效的方法是将设计分为小模块,分模块评估信号的toggle rate。大多数逻辑密集型的设计,toggle rate在12.5%左右,这也是XPE设置的默认值。
经过测试发现,随机输入信号的toggle rate在10%~30%之间。组合逻辑的设计,由于输入变化时输出立即变化,toggle rate有可能会超过50%,比如加法器的异或逻辑输出、错误检测电路中。
在XPE中填写准确的toggle rate是非常重要的,在设计早期阶段,该项数据是很难得出的。通常,会随着设计的不断深入,更新toggle rate。
2.3.Signal rates
Signal rate指的是每秒钟传输的百万次数。通常是自动计算出来的。公式如下:
Signal Rate(Mtr/s)=Clock Frequency(MHz)*Effective Toggle Rate(%)
3. XPA介绍(UG733)
3.1.工具介绍
- 打开
启动XPA
可以在ISE项目中启动XPA,这样XPA会自动加载项目信息。打开后的软件为:
XPA软件
也可以在开始菜单中独立打开XPA。
在开始菜单打开XPA
以这种方式打开XPA,显示的是空白,需要单独添加工程中的文件。必须添加ncd文件和pcf文件。设置文件是XPA导出的,记录了XPA做的改动。仿真文件可选,添加仿真文件可以提高功耗评估的准确度。
- 操作
设定默认值
可以设定默认的toggle rate。
功耗汇总
功耗汇总信息,与XPE类似。
hierarchy 功耗
在结构功耗评估中,按照模块的层级,给出对应的功耗评估内容。剩下的内容还包括时钟项、逻辑、IO等。
颜色分类
软件的功耗评估结果会用颜色分类,包括尽量消除Estimated和Default,使用实际情况下的数值。
3.2.仿真提高精确度
- 仿真带来的好处
建立外部芯片的仿真模型,对整个工程仿真,可以得到比较精确的toggle rate。由于ISE实现的时候,会改变信号名称,添加删减信号,因此前仿真只能覆盖到部分信号。如果要更加精确的仿真,那就必须采用用后仿真的方法。
仿真可以提高toggle rate的精度,但是也有弊端:
- 仿真时间慢,仿真一个完整帧的时间几乎是不可能的。后仿真更加慢。
- 有的外部接口芯片没有仿真模型。
- Spartan6的MCB不支持后仿真,因此带有MCB的工程只能用前仿真。
- 怎样使用仿真数据
以modelsim为例,在tb中添加如下语句:
注意每个项目的顶层名字会不同。会在sim文件夹中生成名为test.vcd的仿真记录文件。单独打开XPA,加载工程中的ncd文件、pcf文件和仿真输出的vcd文件。
添加仿真文件
之所以不在ISE中打开XPA,是因为在ISE的选项中不支持打开VCD格式的仿真文件,仅支持打开SAIF格式的仿真文件。但是modelsim只能生成VCD格式的仿真文件。
加载了仿真文件之后,很多信号的toggle rate状态变为simulation,可信程度也会提升。
添加了仿真文件后的功耗评估
可以导出两种类型的文件:
板上实际测试
1. 实验板概述
板子的供电情况是:VCCAUX是3.3V,可以单独测量FPGA的电流;VCCINT是1.2V,可以单独测量FPGA的电流;VCCO_0是1.8V,可以单独测量FPGA的电流。其他电源均与其他芯片的电源相连,无法单独测量FPGA的电流。
通过FPGA供电分析,我们知道,VCCINT主要对内部逻辑资源供电,VCCAUX主要对时钟和IO资源供电,VCCO_X主要对输出引脚供电。
1.1. 实验1-静态模式下的功耗
实验目的:实测静态模式下的功耗与XPE评估的功耗的差别
实验过程:擦除Flash中的数据,FPGA上电之后,Program_B拉低再拉高,INIT_B信号上拉。测量VCCINT和VCCAUX的电压和电流。
实验结果:查看测试表格。
1.2. 实验2-少量逻辑少量IO
实验目的:FPGA内部逻辑较少,IO部分较少,只有1个晶振输入和1个输出,目的是评测VCCINT和VCCAUX功耗评估的准确性。
实验过程:通过后仿真,FPGA内部所有信号的toggle rate是确定的,此时对于VCCINT和VCCAUX的评估应该是非常准确的。测量VCCINT和VCCAUX的电压和电流。
实验结果:查看测试表格。
1.3. 实验3-BANK0的功耗
实验目的:bank0电压是1.8v,且可以独立测量,评测VCCO功耗评估的准确性。
实验过程:改变时钟频率、数据翻转率、时钟驱动和数据驱动,查看这四个因素对VCCO功耗的影响。
实验结果:查看测试表格。
1.4. 实验4-整个工程功耗
实验目的:FPGA内部逻辑很多,IO部分较少,只有1个晶振输入和1个输出,目的是评测VCCINT和VCCAUX功耗评估的准确性。
实验过程:通过后仿真,FPGA内部所有信号的toggle rate是确定的,此时对于VCCINT和VCCAUX的评估应该是非常准确的。测量VCCINT和VCCAUX的电压和电流。
实验结果:查看测试表格。
1.5.功耗评估总结
通过以上几个实验来看,尽管填写了比较详尽的数据,但是功耗评估与实测功耗的差距仍然比较大。
- VCCAUX的功耗一般不大,功耗评估值小于实测值
- VCCINT的功耗较大,功耗评估值一般都是实测值的1.3倍左右
- VCCO的功耗评估值一般都是实测值的1.3-1.5倍左右。输出负载的电容值需要在项目中根据外部芯片选择合适的数值,本次评测中由于3014芯片没有写明输出负载的具体值,因此选择的是默认值-5pf。
以上是关于Xilinx功耗评估的主要内容,如果未能解决你的问题,请参考以下文章
Xilinx推出低功耗-小容量-小封装ZYNQ Ultrascale+ MPSoC,特别适合用于ZYNQ-7000升级换代