############################################################
## Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
##            http://www.iis.ee.ethz.ch/~sha3
############################################################
set DESIGNNAME echo  
## Load the configuration file 
loadConfig src/echo_fast.conf 0
commitConfig
fit
## Make sure we have two corners. No need for MMMC in this one
setTimingLibrary -max Max -min Min
setDesignMode -process 90
## floorplan
floorPlan -site core_2800 -r 1 0.85 30 30 30 30
## power routing
source scripts/globalnet.tcl 
source scripts/power_grid.tcl 
## use all CPUs (2 in my case)
setMultiCpuUsage -localCpu [getMultiCpuUsage -localCpu] -cpuPerRemoteHost 1 -remoteHost 0 -keepLicense true
##place
setPlaceMode -fp false
placeDesign -noPrePlaceOpt
## checkTiming
set_global report_timing_format {instance arc cell slew load fanout delay arrival}
unloadTimingCon
loadTimingCon src/echo_fast.sdc
timeDesign -preCTS
## This will most likely be necessary
optDesign -preCTS
## check the timing after this
## insert clock tree
specifyClockTree -file src/echo.ctstch
clockDesign -specFile src/echo.ctstch -outDir timingReports -fixedInstBeforeCTS
# normally we could do an optimization step here, but it does not seem
# necessary in this case. 
# final route
setNanoRouteMode -quiet -routeTopRoutingLayer default
setNanoRouteMode -quiet -routeBottomRoutingLayer default
setNanoRouteMode -quiet -drouteEndIteration default
setNanoRouteMode -quiet -routeWithTimingDriven false
setNanoRouteMode -quiet -routeWithSiDriven false
routeDesign -globalDetail
## check timing
timeDesign -postRoute
## make sure there are no violations for hold
timeDesign -reportOnly -postRoute -hold
optDesign -postRoute
##optDesign -postRoute -hold
source scripts/exportall.tcl  
# we are done here
saveDesign save/echo_final3.2.enc
summaryReport -noHtml -outfile ${DESIGNNAME}_summary.rpt          
# Report Power
set_power_analysis_mode -reset
set_power_analysis_mode -method static -corner max -create_binary_db true -write_static_currents true -honor_negative_energy true -ignore_control_signals true
set_power_output_dir -reset
set_power_output_dir powerReports
set_default_switching_activity -reset
set_default_switching_activity -period 10
read_activity_file -reset
read_activity_file -format VCD -vcd_scope echotb/mutinst -start {} -end {} -vcd_block {} ../modelsim/vcd/${DESIGNNAME}.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 powerReports/${DESIGNNAME}.rpt