1 spyglass做power分析的意义
用于功耗分析的软件除了ptpx外,spyglass也可以。ptpx的功耗分析是基于netlist(网表)进行的,一般用于分析综合后的pre功耗和P&R后的post功耗,但这已经是项目进行到比较后期了,如果后期发现功耗数据与我们目标功耗相差较大,则意味着需要功耗优化,这时有可能会将项目计划节点延迟。如果在前期designer可以获得设计模块的功耗数据,可提早优化功耗,spyglass则为designer提供了一个很好的手段去评估功耗,从而提前优化功耗。
2 准备工作
用spyglass做power分析推荐使用GUI界面,原因是在功耗分结束后,点击相应的goal时会出现相应分析结果的表格、图表,这些是功耗分析结果直观、清晰,符合我们平常的阅读理解习惯;在debug时也可以点击相应的fatal、error或者warning查看解决建议,方便debug。
在用GUI进行功耗分析前需准备如下文件:
2.1 RTL设计文件列表
RTL设计文件(.v文件)的文件列表(filelist)文件——这里用top_module.f举例,filelist里面包含了工程中所有的设计文件以及文件中内部include的文件,include的文件即使没有给出具体路径和具体的文件名字,也需要给出include文件的路径;文件中使用的define也需要在这里写出来。top_module.f的文件内容举例如下:
/具体路径/rtl/top_module.v
/具体路径/rtl/module_1.v
/具体路径/rtl/module_2.v
#include dir
+incdir+具体的路径1
+incdir+具体的路径2
#include define
+define+RAM
+define+DELAY=0.1
2.2 所有器件的lib文件列表
工程中使用到的所有cell的lib均需要在这个文件中列出来,包括mem IO,即工程中使用到的器件,即在ptpx分析功耗时用到的所有db文件对应的lib文件。这里用lib_filelist.f举例表示,具体内容如下所示:
set lib_file [concat /xx/xxxx/xx_lib1.lib \
/xx/xxx/xx_lib.lib \
]
这里包含了mem、IO等所有cell,是因为在进行功耗估计时这些cell都是功耗器件,在有电时会产生功耗,必须把所有功耗估算进去才能更好的分析功耗、优化功耗。
2.3 RTL设计文件对应的SDC文件
在进行功耗分析时还需要时序文件,时钟对功耗的影响十分大,所以需要时序约束文件,若使用的时序约束文件是sdc文件,需要将sdc文件转换成sgdc文件,这样spyglass才能成功读入。这里用top_module.sgdc文件举例,内容如下:
current_design top_module
sdc_data -file top_module.sdc
2.4 用于功耗分析的fsdb波形文件
进行功耗分析需要读入波形文件,从而获取信号的活动情况。用于spyglass功耗分析的波形文件在生成时需要特别注意,波形文件的引用层级需要和spyglass读取波形时的-sim_topname的名字一致。下面给出仿真时生成spyglass功耗分析fsdb的命令。
$fsdbDumpfile("top_module.fsdb");
$fsdbDumpvars(100,"tb_top.top_module","+all");
3 在GUI界面里的执行过程
在terminal中使用如下命令打开spyglass的GUI界面:
>spyglass &
打开GUI界面后点击shell命令,在其中逐条输入如下命令:
1 set DESIN_TOP top_module
2 read_file -type sourcelist ./xx/xx/top_module.f
3 source -c ./xxx/xxx/top_module_lib.f
4 foreach i $lib_file { read_file -type gatelibs {i}}
5 set_option top top_module
6 current_design top_module
7 fead_file -type -sgdc ./xxxx/xxx/top_module.sgdc
8 activity_data -format fsdb -file ./xxx/fsdb/top_module.fsdb -sim_topname tb_top/top_module
9 set_option enableV05 yes
10 set_option enableSV yes
11 #set_option define RAM_USE
12 set_option language -mode mixed
13 set_option sgsyn_clock_gating true
14 #set_option sgsyn_clock_gating_threshold 4
15 #set_option enable_power_platform_mode yes
16 current_methodology /xx/xx/rtl_handoff
然后点击goal_setup选项,再点开power再勾选需要进行的power分析选项,常用的选项有下面几种:
power_audit
power_activity_check
power_est_average
power_est_profiling
power_cge_profiling
power_mem_reduction
power_guidance
power_calibration
勾选好后,直接点击run_goal便开始每种目标功耗的分析,分析结束后会给出分析结果,如有fatal、error一定要解决后重新跑,warning需要逐项确认,对功耗有影响的也需要修掉后重新跑。最终估算的功耗会以图表的方式体现,看懂具体的报告请参考spyglass中的userguide (SpyGlass Power Estimation and SpyGlass Power Reduction Submethodology)
4 参考链接
这里面有很多spyglass的userguide文档,其中包含功耗的文档,链接如下:
spyglass power文档 - 数字IC设计讨论(IC前端|FPGA|ASIC) - EETOP 创芯网论坛 (原名:电子顶级开发网) -
先写到这里,如果发现错误,欢迎愉快提出;后续再陆续补充吧~userguide的链接之前有现在没找到,后面找到再补充吧~~~