A Method of Power Analysis with ZTEIC RFID using PrimeTime-PX
范振伟, 孙轶群, 崔昌明
国民技术股份有限公司 (原深圳中兴集成电路设计有限责任公司)
fan.zhenwei@zte.com.cn
sun.yiqun@zte.com.cn
cui.changming@zte.com.cn
Abstract
With the growth of scale and speed of integrated circuits, the requirement of low-power design becomes much more important. It is very important to evaluate the power accurately before chips are taped-out. A conventional way of power analysis is SPICE simulation, but it requires the PR netlist and SPEF files and needs a lot of time, so it is not a good way for the large scale ICs. The Synopsys PrimeTime-PX is a good choice to calculate power consumption in a short time, by using the power information in the Liberty format file and the toggle information file such as VCD file or FSDB file. It can guide the low-power design.
This article describes the method of using PrimeTime-PX for the power analysis in ZTEIC RFID project. The result of chip testing shows that PrimeTime-PX can estimate the chip’s power accurately and it is helpful for the design of ZTEIC RFID project.
Key Words: PrimeTime-PX, power analysis
摘要
随着集成电路设计规模的增加以及芯片运行频率的提高,集成电路设计中低功耗的需求也随之提高。因此在芯片投片之前,能够比较准确的评估出芯片的功耗是当前设计中非常关键的技术点之一。比较传统的方法是利用SPICE仿真,但是SPICE仿真需要利用布线后的网表及SPEF文件,且仿真速度较慢,对于规模较大的数字集成电路来说,显然不是一个极佳的解决方案。Synopsys的PrimeTime PX工具可以利用Liberty格式文件(.lib)中的功耗信息,根据仿真过程中输入测励引起的信号翻转情况,在较短时间内计算出产生的能量,进而获得功耗信息,为低功耗设计提供帮助。
本文根据ZTEIC RFID项目实践,描述了PrimeTime PX工具的使用方法,并通过实际测试数据证明该方法能够较为准确的估算出芯片的功耗,为ZTEIC RFID项目的正常研发提供了帮助。
关键字:PrimeTime-PX,功耗分析
1. 概述
Synopsys PrimeTime PX是集成在PrimeTime工具中,用于分析功耗的产品,它的前身是Synopsys PrimePower。利用PrimeTime PX可以通过简单的设置,和通用的输入数据,快速的得到某种激励下数字逻辑的功耗信息。PrimeTime PX(以下简称PTPX)既支持门级网表分析,也支持RTL代码阶段的分析,输入激励可以是VCD、FSDB或者是SAIF文件。本文主要是通过ZTEIC RFID项目实践,描述了PrimeTime PX的使用方法,并利用样片实测对PrimeTime PX功耗分析结果进行了验证。
2. ZTEIC RFID简介
ZTEIC RFID是一款超高频射频识别标签芯片。该芯片采用无源供电方式:在收到载波能量后,RF前端单元产生Vdd电源信号,供给整芯片工作。由于供电系统的限制,该芯片无法产生较大的电流驱动,因此低功耗设计成为芯片研发过程中的主要突破点。为了使数字电路部分产生尽量少的功耗,在数字逻辑电路设计过程中,除了简化系统结构外(功能简单,只包含编码模块、解码模块、随机数生成模块、时钟、复位模块,Memory控制单元以及整体控制模块),在部分电路设计中采用了异步电路设计方式,同时采用了1V Vdd供电电压设计,在0.18um工艺下,尽可能的降低由于信号翻转而发生的动态功耗。
下图所示是ZTEIC RFID数字逻辑电路设计的研发流程:

图2-1: RFID研发流程
如图 2-1 RFID研发流程所示,在完成系统综合后以及完成自动布局布线返回最终网表后,都进行了功耗分析验证(通过综合后仿真和布线后仿真得到PTPX功耗分析所需的VCD文件),以确保数字逻辑电路的功耗能够完全满足应用。
3. PrimeTime PX与SPICE对比
获得数字电路功耗信息的方法主要有2种。
一种是利用SPICE仿真器(如Synopsys的HSPICE或HSIM)仿真基于MOSFET的数字电路网表,获得电路在不同输入激励下,信号变化而引起的电流信息。由于SPICE模型是MOSFET电路的基础模型,能非常好的反映出MOSFET的特性,因此利用这种方法获得的功耗信息比较准确,但同时由于SPICE仿真速度的原因,利用SPICE很难针对较大的电路以及较长的测例进行仿真。SPICE仿真,在功耗分析方面,其优势在于对信号翻转的瞬态分析,长时间测例的功耗分析不是很合适。
第二种方法,是利用PrimeTime PX,进行功耗分析。
由于PrimeTime PX集成在PrimeTime工具中,其统一的分析环境让设计人员能够在进行时序和信号完整性分析的同时,执行精确的静态功耗和动态功耗分析。将功耗和时序分析集成到单一工具上,使得开发完成得更快,设置步骤更少,从而提升了设计人员的生产率并缩短了开发周期。PrimeTime PX支持无矢量的动态功耗分析方法,在执行功耗分析时无需等待由动态仿真提供的开关数据。可以通过PrimeTime工具所得到的时序窗口得到其功耗情况。此方法能够在设计流程早期实现初步的功耗分析,从而识别出芯片中各模块的功耗大小情况。
与PrimeTime PX对比,SPICE的仿真速度较慢。另外,用SPICE进行功耗分析,还必须使用布线后的网表。这对于大规模集成电路设计来说,显然不是最佳的选择方案。
3.1 PrimeTime PX功耗分析原理
功耗是指单位时间内电路中所消耗的能量,PTPX进行功耗分析的主要方法就是计算出一定时间内电路中所产生的能量,再利用这个时间计算出电路的平均功耗。
电路的总功耗由两部分组成:
■ 当电路处于稳定状态时的静态/漏电功耗(Pstatic);
■ 电路工作时由于开关关断产生的动态功耗(Pdynamic)。
即Ptotal=Pstatic+Pdynamic,如图4-1功耗组成所示,其中静态功耗与温度、工艺和电压以及漏电流(Ileakage)的大小有关(Pstatic =Vdd*Ileakage)。动态功耗由内部功耗(Pinternal)和开关关断功耗(Pswitching)组成。Pswitching是对负载电容充放电所产生,Pswitching=CLV2f,其中f是指翻转频率。内部功耗由短路电流功耗(Psc)和MOS管内部电容充放电所产生的功耗(Pintsw),即Pinternal=Psc+ Pintsw=Vdd*Iscf.(tr+tf)/2+CintV2f。

图3-1: 功耗组成
在利用PTPX进行功耗分析之前,需要指定工艺库,为其提供计算功耗所需的参数。其中静态功耗一般会在工艺库中直接给定,如图 3 2 漏电流功耗所示,是TSMC的0.18工艺中标准单元INVX1的leakage power信息,它表示该标准单元的漏电流功耗为135.455522pw,其中单位也是在liberty文件中指定的,如图 3 3 libetry中的单位定义所示。
图 3-2: 漏电流功耗

图 3-3: libetry中的单位定义
根据短路电流功耗的计算公式Psc =Vdd*Iscf.(tr+tf)/2,短路电流功耗主要与NMOS和PMOS导通时的最大电流Isc、Vdd、翻转频率f以及上升、下降时间(tr、tf)相关。在指定工艺库下,Vdd是确定的,Isc对于单元器件来说是固定的。tr和tf则会根据不同的input transition和output load来决定,具体的对应关系可以通过Libetry文件提供的查找表进行查找。如图 3 4短路电流功耗查找表所示是TSMC的0.18工艺中标准单元INVX1的Y端根据输入A的变化产生变化时短路电流功耗信息。rise_power表示Y上升沿,fall_power表示Y下降沿,related_pin表示输出的变化是因为A的变化而发生。表中index_1是A的input_transition,表示查找表的行,index_2是Y的output_load,表示查找表的列。利用input transition和output load可以通过查表找出相应的rise_power和fall_power,单位由库内time_unit,voltage_unit和current_unit的单位决定。

图 3-4: 短路电流功耗查找表
开关关断功耗Pswitching=CLV2f,其中CL是输出负载电容,即查找表中Index_2中的信息,Vdd是电压,电压可以在库文件内找到。
众所周知,上面所描述的liberty文件中的功耗信息其实上就是通过SPICE仿真所得到的。而PTPX在进行功耗分析时恰恰是采用这些数据。所以说,从理论上讲PTPX计算所得到的功耗应该是与实际芯片的功耗一致。
4. 利用PrimeTime PX进行功耗分析的步骤
Enable Power Analysis
Read Design Data
Specify operating conditions
Specify Activity
Power Analysis
Generate Power Report
图 4-1: 功耗分析流程
如图4 -1功耗分析流程所示,利用PrimeTime PX进行功耗分析,首先需要进入PrimeTime的工作环境,然后打开功耗分析选项(set power_enable_analysis true),读入设计数据,包括工艺库、网表、寄生参数、约束条件等。第五步,是提供给PTPX一份指示数据变化的文件,即VCD文件,该文件必须基于PT PX使用的网表和寄生参数产生,我们可以在仿真过程中得到。然后就可以让PTPX对功耗情况进行分析了(update power)。最后得到功耗报告(report power)。
当然,PTPX还可以支持无矢量的动态功耗分析方法,即不需要输入VCD文件,而是直接根据PrimeTime的时序分析窗口,计算出具体的功耗情况。但是此种方法的精度要稍差于直接输入VCD文件的方式。在这里不做详细的解释,以下所涉及到的利用PTPX做分析的过程默认为使用VCD文件作为输入。
5. 利用PrimeTimePX对ZTEIC RFID进行功耗分析
分析的基本流程及主要使用的命令见图 5-1 PTPX 分析详细流程所描述。

图 5-1: PTPX分析详细流程
根据图 5-1 PTPX分析详细流程所示的流程设,我们使用perl语言建立了一个平台,将整个流程的实现过程写成一个脚本文件,流程中的所有变量全部参数化。然后,我们在另外一个参数文件里对这些变量进行设置。在执行PTPX时,只需要脚本文件调用参数文件即可。这样一来,如果对一个新的项目进行功耗分析,我们只需要改变参数文件里的变量定义即可。在这里,简单列出几个在参数文件里的变量。
set net_file /RFID.v ; #define netlist file, need path to be indicated
set top_name RFID ; #define top name of the design
set anatype single ; #define operating condition analysis type
set analib typical ; #define operating condition library
set wireloadmodelname tsmc18_wl10 ; #define wire load model name
set wireloadmode enclosed ; #define wire load mode
set vcd_file RFID.dump ; #define VCD file, need path to be indicated
set vcdhier RFID_test/dut ; #define design which VCD file indicated
set rptformat fsdb ; #fsdb/rpt, define format for report
set source_constraint false ; #true/false, read clock constraint in pre analyze,if set to be true
set anahier true ; #define whether the hierarchy should be defined for analysis
set hiernum 4 ; #if anahier is true, shows the number of hierarchy
set anastep 50 ; #indicat time step for one analysis point
set spef_file RFID.spef ; #set spef file
set ana_stage post ; #pre/post, pre for PR-pre netlist, should define wireloadmodelname and wireloadmode, post for PR-post
netlist,should define spef_file.
set exit_after_ana true ;#true/false, exit pp_shell if exit_after_ana is defined as true
set tran 1.5 ;#input transition time
set cl 0.5 ;#output load capacitance
set timing_window_set true ; #true/false, set to be true if want to define calculating timing window
set timing_window {0 600600} ; #if $timing_window_set is true, use this variable to define timing window, unit is ns
完成上述工作以后,我们就可以对PTPX生成的fsdb文件进行功耗分析了。
下面介绍一下我们对ZTEIC RFID进行功耗分析所得到的实际数据。如图 5 2 RFID数字部分模块功耗波形所示,最上方的红色波形(Pc_root)是RFID数字部分的整体功耗情况,而下面的是其中一部分子模块的功耗波形。从波形图上我们可以判断出功耗较大的模块并能找出功耗峰值出现的时刻,从而有助于我们快速找到需要优化的地方。

图 5-2: RFID数字部分模块功耗波形
再看图 图 5 3 RFID数字部分整体功耗分析,此图是RFID数字部分芯片在电压为0.9v时进行一个“清点”过程的功耗峰值及平均值。此图仅仅是为了说明PTPX能够得到一个可以参考的功耗值,所以没有将底层模块的具体功耗情况显示出来。

图 5-2: RFID数字部分整体功耗分析
通过上述波形,我们可以看到,电压为0.9v时数字部分芯片的平均功耗值为3.6mw,电流为3.7/0.9=4.0uA。
6. 与芯片实测功耗对比
在RFID芯片流片后测试通过以后,我们得到了芯片的实际功耗数据,在0.9v左右时,芯片的功耗在3.01uA左右,而PTPX所得到的数据为4.0uA。我们分析了一下这个误差产生的原因:第一,RFID数字部分芯片的功耗测试示意图如图 6 1 RFID功耗测试示意图,VDD经过一个20K欧姆的电阻后接到芯片的VDD上,然后测试A、B两点的电压差,这样就可以得到芯片VDD的电压以及芯片的工作电流。由于芯片工作过程中电流的大小并不固定,导致A、B两点的电压差不稳定,所以我们所得到的只是一个近似的平均值。所以根据P=IU所得到的功耗也不是一个最准确的值;第二,在前端设计时,我们分析时所使用的transition时间也不能与芯片实际工作情况下完全一致;第三,一般情况下,芯片制造厂商所提供的标准单元库中的信息会在实际值的基础上留一些margin;综合以上三点,我们认为在这个量级上的差异还是可以接受的。

图 6-1: RFID功耗测试示意图
更为重要的是,利用PTPX可以在短时间之内(我们进行一次粗略的分析一般情况下只需要几分钟)得到整芯片的功耗值,从而降低了由于功耗分析对研发周期的影响。
表格 6-1: 功耗对比
|
PTPX分析所得 |
样片测试 |
|
|
功耗 |
4uA |
3.01uA |
7. 总结
本文根据实际项目,描述了利用PTPX进行功耗分析的方法,并根据实际数据对PTPX所得功耗结果的准确性问题进行了论述。根据文章中的描述,我们可以看到利用PTPX进行功耗分析的流程比较简单,速度较快,且分析所得到的功耗值比较接近芯片的实际功耗值。因此,在低功耗设计中选择PTPX进行功耗分析是一个比较不错的节省研发周期的解决方案。
8. 参考资料
[1] PrimeTime® PX Methodology for Power Analysis Version1.2



