############################################################
## Copyright: 2011 Integrated Sytems Laboratory, ETH Zurich
##            http://www.iis.ee.ethz.ch/~sha3
############################################################
# v0.2 -  - Thu Oct 13 16:17:26 CEST 2011
#  -  by haking the .vcd files (1ps -> 1fs) it is posible withe a factor to calulate
#     the power (490 - 0.49)
#  -  report also the blockpower for the sortend block.
# v0.1 -  - Tue Oct 11 12:57:37 CEST 2011
#  - analysis power for slow typ amd fast corner (poibli also report timing)
#    inportend do not set "set_power_analysis_mode -corner max/min" use "-analysis_view",
#    otherwise the next analysis is wrong!


# set DESIGNNAME  "shabziger"
# set timeRepDir  "timingReports_final"
#
# setMultiCpuUsage -localCpu max
# restoreDesign save/chip_shabziger_final3.enc.dat shabziger_chip
# fit


if { $corner  == "best" } {
  source src/shabziger_mmmc-best.view
  set_analysis_view -setup $fast_view_list -hold {hold_fast_view}
  #timedesign -expandedViews -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.final-best.expV

  set powerReportsDir "powerReports/vcd_fast-1.5-51.5"
} elseif { $corner  == "typ" } {
#  source src/shabziger_mmmc-typical.view
#  set_analysis_view -setup $typ_view_list -hold {hold_fast_view}
  #timedesign -expandedViews -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.final-typ.expV

  set powerReportsDir "powerReports/vcd_typ-1.5-51.5"
} else {

  set powerReportsDir "powerReports/vcd_slow-1.5-51.5"
} 


# { dummy ethz_blake ethz_groestl ethz_jh ethz_keccak ethz_sha2 ethz_skein gmu_blake gmu_groestl gmu_jh gmu_keccak gmu_sha2 gmu_skein}
#set blocklist  { dummy } 
#set fsctorlist { 1000  } 
#set blocklist  { ethz_blake ethz_groestl ethz_jh ethz_keccak ethz_sha2 ethz_skein} 
#set fsctorlist { 181        127          245     911         154       112       } 
set blocklist  { gmu_blake gmu_groestl gmu_jh gmu_keccak gmu_sha2 gmu_skein } 
set fsctorlist { 355	    490 	239    911	  158	   542       } 
#set fsctorlist { 1000 	1000    1000	  1000	   1000    } 

set_power_output_dir -reset
set_power_output_dir ${powerReportsDir}
#foreach block { ethz_blake  } {
for {set i 0} {$i < [llength ${blocklist}]} {incr i} {

  set block     [lindex $blocklist $i]
  set fsctor    [lindex $fsctorlist $i]
  set frequency [format "%0.0f" [expr 50*1000/${fsctor}]]
	# replaced in 1ps by 1fs so the factors are 1/1000 and her neads the *1000
  puts "block: $block | fsctor: $fsctor | frequency: $frequency"
  set_power_analysis_mode -reset
  if { $corner  == "best" } {
    set_power_analysis_mode -method static -analysis_view ${block}_fast_view -create_binary_db false -write_static_currents true -honor_negative_energy true -ignore_control_signals true
  } elseif { $corner  == "typ" } {
    set_power_analysis_mode -method static -analysis_view ${block}_typ_view -create_binary_db false -write_static_currents true -honor_negative_energy true -ignore_control_signals true
  } else {
    set_power_analysis_mode -method static -analysis_view ${block}_slow_view -create_binary_db false -write_static_currents true -honor_negative_energy true -ignore_control_signals true
  } 
  read_activity_file -reset
  read_activity_file -format VCD -scale_vcd_duration ${fsctor} -vcd_scope shabziger_chip_tb/DUT -start [expr 0 * ${fsctor}] -end [expr 51.5 * ${fsctor}] -vcd_block {} /usr/scratch/antalya/kgf/shabziger/vcd/${block}_power.vcd
  set_power -reset
  set_powerup_analysis -reset
  set_powerup_analysis -mode accurate -ultrasim_simulation_mode ms
  set_dynamic_power_simulation -reset
  report_power -rail_analysis_format VS -outfile  ${powerReportsDir}/shabziger_${block}-${frequency}.rpt
#  report_power -instances top/i_${block} -outfile  ${powerReportsDir}/shabziger_${block}-${frequency}-bo.rpt
  report_power -instances top/i_${block} -cell_type all -outfile  ${powerReportsDir}/shabziger_${block}-${frequency}-bct.rpt
#  rm  ${powerReportsDir}/static_*IO.ptiavg
#  mv  ${powerReportsDir}/static_VDD.ptiavg  ${powerReportsDir}/shabziger_${block}-${frequency}_VDD.ptiavg 
#  mv  ${powerReportsDir}/static_VSS.ptiavg  ${powerReportsDir}/shabziger_${block}-${frequency}_VSS.ptiavg 
 #  write_tcf ${powerReportsDir}/shabziger_${block}-${frequency}.tcf 
 
# report_vector_profile -activity -outfile shabziger_${block}-${frequency}-step0.1.activity.rpt -step 0.1
# report_vector_profile -activity -outfile shabziger_${block}-${frequency}-bo.activity.rpt -step 0.01 -instances  top/i_${block}
	# report_vector_profile do it wrong withe a -scale_vcd_duration  for read_activity_file
} 

puts "grep \"Total (\" ${powerReportsDir}/shabziger_*.rpt"
puts "grep -B 4 \"Power Distribution Summary\" ${powerReportsDir}/shabziger_*-bct.rpt | grep \"Total\""




set_power_analysis_mode -reset
set_power_analysis_mode -method dynamic_vectorbased -disable_static true -corner max -create_binary_db false -write_static_currents false -honor_negative_energy true -ignore_control_signals true -power_grid_library {tech/cl/SHKA65_2048X32X1CM4.cl tech/cl/SHKA65_16384X32X1CM16.cl tech/cl/SYKA65_2048X32X1CM8.cl tech/cl/u065gioll25mvir.8m1t0f1u.cl tech/cl/uk65lscllmvbbh.8m1t0f1u.cl tech/cl/uk65lscllmvbbl.8m1t0f1u.cl tech/cl/uk65lscllmvbbr.8m1t0f1u.cl}

set_power_output_dir -reset
set_power_output_dir powerReports/vcs_dyn
set_default_switching_activity -reset
set_default_switching_activity -input_activity 0.2 -period 10.0
read_activity_file -reset
read_activity_file -format VCD -vcd_scope {shabziger_chip_tb/DUT } -start 1.5 -end 51.5 -vcd_block {}  /usr/scratch/antalya/kgf/shabziger/vcd/ethz_blake_power.vcd
set_power -reset
set_power -scale_factor 181
set_powerup_analysis -reset
set_powerup_analysis -mode accurate -ultrasim_simulation_mode ms
set_dynamic_power_simulation -reset
set_power_include_file -reset
report_power
#  report_power -rail_analysis_format VS -outfile  ${powerReportsDir}/shabziger_${block}-${frequency}.rpt
#  report_power -instances top/i_${block} -outfile  ${powerReportsDir}/shabziger_${block}-${frequency}-bo.rpt

Generated on Tue Nov 22 15:16:34 CET 2011
Home