ptpx常用操作
Prime Time PX工具是synopsys公司推出的功耗估算工具。常用的一些指令记录于此。
1.保存工程文件,以便日后重新打开工程,报告其他信息。
需要在pt的脚本里面添加save session xxx来保存。ptpx功耗评估结束,关闭ptpx后,可pt_shell打开ptpx,然后restore sesstion xxx来重新打开工程。
2.如何按照设计层级报告功耗?
可以运行的pt脚本中添加,或者重新打开seesion后单独输入指令:report_power -hierarchy -level 8 > xxx.rpt level后的数字是只从dut开始,想打印几层子模块的功耗信息。不加-level就会打印全部层级的功耗
3.如何报告网表的电容负载?
在后仿阶段,pr工具会输出寄生电容信息的spef文件,添加该文件后,net上的电容会增大,导致switching功耗增大,对于绕线复杂的模块,增幅会比较巨大。(PS:net 电容主要包括pin capacitance和wire capacitance,spef文件会增大wire cap,不添加spef文件时,wire电容是0)
报告用于ptpx功耗评估的网表的电容有以下方法
a. report_power -net_power -leaf 该指令会把所有层级的net的Vdd, Total Net Load, Static Probability, Toggle Rate, Swithing Power全部列出来,Total Net Load是net的Total capacitance. 可以用脚本把 Total Net Load一列抓出来求和,单位是pf. 注意,不添加-leaf选项,只会报告顶层层级的net而不会hierarchy深入所有子模块的net.该指令报告的net的数量基本等于pt 功耗评估log里面的反标出来的net的数量(Number of annotated nets)
b.report_power_capacitance -nets [ get_nets -hierarchical -top_net_of_hierarchical_group ]
report_power_capacitance -nets指令会报告net的 WireCap, Pincap, PortCap,TotalPower_Cap,无spef文件情况下,total cap一般等于pin cap,添加spef后,Total cap等于pin cap + wire cap.可以用脚本把total cap一列抓出来求和,这个值等于上一条指令的Total Net Load列的总和(可能稍有误差,不会绝对相等). 注意,不添加-top_net_of_hierarchical_group会把net统计重复,报出的net cap数量可能大于上条报告的total net load的数量。(是怎么算重复的?比如cell a output -> net_x -> cell b input ,不加-top_net_of_hierarchical_group这里可能算三条net,实际上是一条net)不加与加的实际项目差别例子:5M vs 3M
a b两个指令报出来的capacitance总体一致,若有出入,应该以a方法为准,a方法报告的net的数量和ptlog中的数量能对得上,b方法报告的net信息数量可能与pt log里面的net数量有些出入。可以计算一下加不加spef前后,total cap的变化比例以及switching power的比例,是不是对得上。
PS switching power 基本计算公式:P= C*V^2*f,C 是total capacitance,V是工作电压,f是电路的翻转率toggle rate.加不加spef文件,只影响电容,只影响swicthing power.