# 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