OpenSTA/power/test/power_detailed.tcl

103 lines
3.4 KiB
Tcl

# Test comprehensive power analysis
# Exercises: set_power_activity, report_power with various options, unset_power_activity
read_liberty ../../test/sky130hd/sky130_fd_sc_hd__tt_025C_1v80.lib
read_verilog power_test1.v
link_design power_test1
create_clock -name clk -period 10 [get_ports clk]
set_input_delay -clock clk 0 [get_ports in1]
set_output_delay -clock clk 0 [get_ports out1]
#---------------------------------------------------------------
# Basic power report
#---------------------------------------------------------------
puts "--- Basic power report ---"
report_power
#---------------------------------------------------------------
# Set global activity and report
#---------------------------------------------------------------
puts "--- Power with global activity ---"
set_power_activity -global -activity 0.5 -duty 0.5
report_power
#---------------------------------------------------------------
# report_power -digits
#---------------------------------------------------------------
puts "--- Power with -digits 6 ---"
report_power -digits 6
report_power -digits 3
#---------------------------------------------------------------
# report_power -instances
#---------------------------------------------------------------
puts "--- Power for specific instances ---"
report_power -instances [get_cells buf1]
report_power -instances [get_cells reg1]
report_power -instances [get_cells *]
#---------------------------------------------------------------
# report_power -instances with -digits
#---------------------------------------------------------------
puts "--- Instance power with -digits ---"
report_power -instances [get_cells *] -digits 6
#---------------------------------------------------------------
# Set pin-specific activity and report
#---------------------------------------------------------------
puts "--- Power with pin activity ---"
set_power_activity -pins [get_pins reg1/CLK] -activity 1.0 -duty 0.5
report_power
#---------------------------------------------------------------
# Set input activity
#---------------------------------------------------------------
puts "--- Power with input activity ---"
set_power_activity -input -activity 0.3 -duty 0.5
report_power
#---------------------------------------------------------------
# Set input port-specific activity
#---------------------------------------------------------------
puts "--- Power with input_port activity ---"
set_power_activity -input_ports [get_ports in1] -activity 0.2 -duty 0.5
report_power
#---------------------------------------------------------------
# Unset activities
#---------------------------------------------------------------
puts "--- Unset activities ---"
unset_power_activity -global
report_power
unset_power_activity -input
report_power
unset_power_activity -input_ports [get_ports in1]
report_power
unset_power_activity -pins [get_pins reg1/CLK]
report_power
#---------------------------------------------------------------
# Power with density instead of activity
#---------------------------------------------------------------
puts "--- Power with density ---"
set_power_activity -global -density 1e8 -duty 0.5
report_power
unset_power_activity -global
#---------------------------------------------------------------
# report_power -format json
#---------------------------------------------------------------
puts "--- Power JSON format ---"
set_power_activity -global -activity 0.5 -duty 0.5
report_power -format json
report_power -instances [get_cells *] -format json