首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数字IC低功耗设计入门(二)——功耗的分析(7)

数字IC低功耗设计入门(二)——功耗的分析(7)

 (5)VCD转SAIF分析法前介绍了使用SAIF文件分析功耗的方法,这个方法都是通过VCS仿真得到相应的SAIF文件,然后进行功耗分析。下面我们介绍使用VCD文件转换成SAIF文件的方法,然后进行功耗分析。
①VCD文件的产生
首先,我们在进行仿真的时候,需要通过在testbench中加入相关的系统函数,产生相应的VCD文件(和SDF文件),流程示意图如下所示:
          
相应的一个示例testbench如下所示:
module testbench;
······
initial
  $sdf_annotate("my.sdf",dut)
initial begin
  $dumpfile("vcd.dump");
  $dumpvars;
······
endmodule
然后使用下面命令进行仿真:
    vcs  -R dut.v  testbench.v  +delay_mode_path
完成仿真之后,就可以得到VCD文件了。

②VCD文件转换成SAIF文件
仿真时产生的VCD文件也包含了设计中节点和连线的开关行为。在Power Compiler中,可以使用程序vcd2saif可以把VCD文件转化为SAIF文件,如下图所示:
        

vcd2saif是在UNIX命令行使用的一个程序。vcd2saif程序也可以把VPD文件(二进制格式的VCD文件)转化为SAIF格式的文件。如果设计很大,仿真的时间长,vcd2saif程序可以用管道传递的方式把VCD转化为SAIF文件。这时vcd文件不存放在文件里,vcd通过先入先出(First-In  First-()nt,简称FIFO把数据传给vcd2saif程序,然后产生SAIF文件。转换的SAIF文件里没有SDPD的信息。如下图所示:
        
有了SAIF文件之后,我们就可以像前面那样使用SAIF文件进行功耗分析了,至于是版图前的功耗分析还是版图后的功耗分析,取决于功耗分析时有没有与版图中有关的信息,比如是SPEF文件。因此流程为:
    VCS产生VCD文件——》power compiler 将VCD文件转换为SAIF文件——》power compiler 进行分析功耗
最后,我们来说一下这里使用vcd2saif程序的好处,主要有下面三点:
  1.  VCD产生的速度快;
  2.  VCD是IEEE的标准并且适用于进行后仿真;
  3.  转换的过程快。
=============================================================================================
我们已经介绍四种为设计产生开关行为的方法,分别是直接设置翻转率、RTL backward SAIF文件、gate back SAIF文件和VCD转SAIF文件;这些方法可以混合使用,其优先次序如下所示:
            

用read_ saif命令标记的开关行为优先级最高;用set_switching_activity命令设置的开关行为优先级次之;优先级最低的是用默认的变量power_default_toggle_rate指定的翻转率。
    开关行为可以被清除,使用“reset_switching_activity”命令可以清除所有被标记的翻转率和通过传输得到的翻转率。用report_saif可以显示读入saif文件后设计中的开关行为信息。一个完整的SAIF文件,"user annotated”应该是100%。如果SAIF不完整,那么默认的翻转率将附加到输入端和黑盒子的输出端。翻转率通过零延迟仿真传输下去,这样就可以计算出设计的功耗。
  使用report_saif命令的一个例子如下:
              

与开关行为有关的命令有:
merge_saif #合并SAIF文件
read_sai f #读backward SAIF文件
report_saif #报告开关行为的信息
rtl2saif #产生RTL forward SAIF文件
write_ saif #写出一个backward SAIF文件
lib2saif #产生library forward SAIF文件
propagate_switching_activity #传输功耗清除
reset_switching_activity #清除开关行为和/或翻转率
set_switching_activity #在指定的物体上设置开关行为






  (6)功耗分析报告
我们是通过分析功耗报告(report_power命令产生)来查看设计功耗的,一个功耗报告的示例部分内容如下所示:
    Cell  Internal  Power=883.0439 mW(66%)
    Net  Switching Power=453.0173 mW(34%)
    Total  Dynamic  Power=1 .3361 W(100%)
    Cell Leakage Power = 391.5133 nW
其中第一项为内部短路功耗,第二项为开关功耗,合起来为动态功耗;最后一项为静态功耗,也就是泄漏功耗。如果要报告设计中每个模块和单元的功耗,在report_power命令后加选项 -hier,例如:  report_power  -hier,产生的报告如下所示:
   
基于EDA工具——power compiler 的功耗分析就记到这里。
返回列表