码迷,mamicode.com
首页 > 其他好文 > 详细

Xilinx功耗评估

时间:2017-10-10 14:39:01      阅读:844      评论:0      收藏:0      [点我收藏+]

标签:保存   严格   面积   无法   名称   end   静态   信息   导出   

概述

1. 简介

本专题研究了Xilinx的功耗评估的方法和低功耗设计的方法,并在实际板子上验证了功耗评估的效果。

2. 参考资料

  1. wp298 Power Consumption at 40 and 45 nm (v1.0)
  2. ds160_Spartan-6 Family Overview (v3.1)
  3. ug394 Spartan-6 FPGA Power Management (v1.2)
  4. ug440-xilinx-power-estimator (v14.7)
  5. ug733 Xilinx Power Tools Tutorial (v14.5)
  6. wp353 Seven Steps to an Accurate Worst-Case Power Analysis Using Xilinx Power Estimator (XPE) (v1.0)
  7. power-estimation.pptx
  8. Spartan3A_Spartan6_XPE_14_3.xls
  9. ISE help
  10. UG687-XST User Guide for Virtex-6, Spartan-6, and 7 Series Devices(v13.3)

FPGA供电分析

本章节大部分文章摘抄自WP394

1. 各路电源分析

技术分享
技术分享
ug394电源供电
技术分享
Spartan6对各路电源的约束

  1. 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的影响
  2. 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。
  3. VCCO_0:对bank0的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  4. VCCO_1:对bank1的输出引脚供电。BPI配置模式时,要与Flash的电压相同。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  5. VCCO_2:对bank2的输出引脚供电。要与配置相关的逻辑使用相同的电压。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  6. VCCO_3:对bank3的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  7. VCCO_4:对bank4的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  8. VCCO_5:对bank5的输出引脚供电。可选1.2V 1.5V 1.8V 2.5V或3.3V。
  9. VREF:当该bank使用的电平是HSTL/SSTL时,VREF是输入阈值电压,其他电平时,作为普通IO。当作为一个bank的参考电压时,该bank中所有的VREF需要连接在一起。

2. 挂起模式(Suspend)

挂起模式的特点包括:

  1. 简单、快捷的将FPGA置为静止状态,消除大部分动态电流
  2. 静态电流降低40%
  3. 保存FPGA的配置信息和FPGA的运行状态
  4. 快速的、可编程的唤醒时间
  5. 在挂起模式可以定义不同引脚的状态
  6. 通过SUSPEND引脚进入挂起状态
  7. 通过AWAKE引脚指示唤醒状态
  8. 多达8个唤醒引脚
  9. 在进入挂起状态之前,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减小静态功耗的方法
其中有两点我们可以注意:

  1. suspend mode,可以减小40%的静态功耗,目前还没有使用过这项功能。UG394对suspend降低功耗有更加详尽的描述。
  2. -1L器件有更小的Vccint,Vccint减小10%,静态功耗减小27%。Spartan6 -2 -3的器件的Vccint的电压是1.2V,-1L的Vccint电压是1V,可以减小不少的静态功耗。但是-1L的性能不强。

1.2 动态功耗

动态功耗是FPGA运行时所消耗的能量。每个节点的动态功耗与时钟频率、电容、电压、翻转率相关。节点的动态功耗公式为Dynamic Power = CV2f 。
Xilinx用了很多方法减小动态功耗,主要方法如下表。详细内容请参考WP298。
技术分享
Xilinx减小动态功耗的方法

有两点可以关注:

  1. BlockRam低功耗模式,在Coregen中生成BlockRam时,可以选择功耗优先还是面积优先。但是生成FIFO的时候,却没有这一选项。在XST的属性中,有-power这一选项,其中也包括了BlockRam的功耗优化。具体的可以查看UG687。
  2. -1L器件有更小的Vccint,Vccint减小10%,动态功耗减小19%。

UG394提出的减小动态功耗的方法:

  1. 输入信号静止,动态功耗会降低
  2. 尽可能满摆幅输入
  3. 关掉尽可能多的输出
  4. 输出信号采用低摆幅的电平标准
  5. 降低驱动电流和slew rate
  6. 将所有没有用到的输入引脚接到VCCO或者GND上
  7. 在用到的IO上不要放置上下拉电阻
  8. 在负载较大的线路上减小走线长度,以减小电容
  9. 不使能内部的振荡电路
  10. BlockRam工作在NOCHANGE模式,减小BlockRam输出的翻转率
  11. 利用BUFGCE原语控制门控时钟,不要使用逻辑控制时钟
  12. 减少时钟个数
  13. 减少DCM或者PLL的个数

2. 电压的影响

动态功耗与电压的平方成正比,静态功耗与电压的立方成正比。因此减小电压可以有效的减少功耗。Spartan6 -1L器件的核电压从1.2V将为了1V,下图所示的是功耗对比结果。
技术分享
-1L器件功耗对比

3. IO功耗

Xilinx提出的,减小IO功耗的方法:
技术分享
技术分享
减小IO功耗的方法

  1. 可编程的IO slew rate和驱动强度,slew rate越低、驱动强度越小,功耗越小
  2. 剩余几项都是针对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个阶段:

  1. 概念阶段-粗略估计FPGA模块的规模、翻转率来评估FPGA的功耗,使用XPE
  2. 设计阶段-根据实现的网表文件精细评估FPGA的功耗,使用XPA
  3. 系统集成阶段-在实验室环境中测试功耗,使用实际的测试工具

1.1 XPE简介

XPE提供了一种简单、快速、粗略的评估功耗的方法,并不需要设计网表。通常用在项目的前期阶段,用于架构评估和器件选择,帮助选择合适的供电电源和温度控制器件。XPE考虑了包括资源使用、翻转率、IO负载和其他的设计元素,结合器件模型,可以评估出每一路电源的功耗情况。
XPE的准确性主要是通过两方面来保证的:

  1. 资源使用、时钟、使能和翻转率的评估
  2. 工具内部集成的器件模型
    为了使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,在这个网站上可以下载到相应的器件的功耗评估表。
技术分享
每个器件对应的功耗评估表格

  • 设置按钮
    技术分享
    设置按钮
    可以导入三种类型的文件:
  1. .xls的XPE文件
  2. .mrp的Map report文件,该文件主要用于配置FPGA的类型,与功耗相关信息很少
  3. .xpe的XPA导出文件,可以方便查看,这一项会经常用到
  4. .pwr文件,以文本格式记录
  5. .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的精度,但是也有弊端:
  1. 仿真时间慢,仿真一个完整帧的时间几乎是不可能的。后仿真更加慢。
  2. 有的外部接口芯片没有仿真模型。
  3. 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功耗评估

标签:保存   严格   面积   无法   名称   end   静态   信息   导出   

原文地址:http://www.cnblogs.com/haitaox/p/7645099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!