This commit is contained in:
James Cherry 2018-12-11 12:34:03 -08:00
parent d84c24882b
commit 9e67bfe2c3
1 changed files with 22 additions and 23 deletions

View File

@ -56,26 +56,30 @@ proc report_power_design { corner digits } {
puts "Group Internal Switching Leakage Total"
puts " Power Power Power Power (mW)"
puts "-------------------------------------------------------------------"
set design_total [lindex $power_result 3]
report_power_row "Sequential" $power_result 4 $design_total $digits
report_power_row "Combinational" $power_result 8 $design_total $digits
report_power_row "Macro" $power_result 12 $design_total $digits
report_power_row "Pad" $power_result 16 $design_total $digits
set totals [lrange $power_result 0 3]
set sequential [lrange $power_result 4 7]
set combinational [lrange $power_result 8 11]
set macro [lrange $power_result 12 15]
set pad [lrange $power_result 16 end]
lassign $totals design_internal design_switching \
design_leakage design_total
report_power_row "Sequential" $sequential $design_total $digits
report_power_row "Combinational" $combinational $design_total $digits
report_power_row "Macro" $macro $design_total $digits
report_power_row "Pad" $pad $design_total $digits
puts "-------------------------------------------------------------------"
report_power_row "Total" $power_result 0 $design_total $digits
report_power_row "Total" $power_result $design_total $digits
puts -nonewline " "
report_power_col_percent $power_result 0
report_power_col_percent $power_result 1
report_power_col_percent $power_result 2
report_power_col_percent $design_internal $design_total
report_power_col_percent $design_switching $design_total
report_power_col_percent $design_leakage $design_total
puts ""
}
proc report_power_row { type power_result index design_total digits } {
set internal [lindex $power_result [expr $index + 0]]
set switching [lindex $power_result [expr $index + 1]]
set leakage [lindex $power_result [expr $index + 2]]
set total [lindex $power_result [expr $index + 3]]
proc report_power_row { type row_result design_total digits } {
lassign $row_result internal switching leakage total
if { $design_total == 0.0 } {
set percent 0.0
} else {
@ -93,13 +97,11 @@ proc report_power_col { pwr digits } {
puts -nonewline [format "%10.${digits}f" [expr $pwr * 1e+3]]
}
proc report_power_col_percent { power_result index } {
set total [lindex $power_result 3]
set col [lindex $power_result $index]
proc report_power_col_percent { col_total total } {
if { $total == 0.0 } {
set percent 0.0
} else {
set percent [expr $col / $total * 100]
set percent [expr $col_total / $total * 100]
}
puts -nonewline [format "%9.1f%%" $percent]
}
@ -109,12 +111,9 @@ proc report_power_inst { inst corner digits } {
puts "Cell: [[$inst liberty_cell] name]"
puts "Liberty file: [[[$inst liberty_cell] liberty_library] filename]"
set power_result [instance_power $inst $corner]
set switching [lindex $power_result 0]
set internal [lindex $power_result 1]
set leakage [lindex $power_result 2]
set total [lindex $power_result 3]
report_power_line "Switching power" $switching $digits
lassign $power_result internal switching leakage total
report_power_line "Internal power" $internal $digits
report_power_line "Switching power" $switching $digits
report_power_line "Leakage power" $leakage $digits
report_power_line "Total power" $total $digits
}