set_power_opt - 2024.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2024.1 English

Set constraints for power optimization


set_power_opt [‑include_cells <args>] [‑exclude_cells <args>]
    [‑clocks <args>] [‑cell_types <args>] [‑quiet] [‑verbose]


Name Description
[-include_cells] Include only these instances for clock gating. Default: all
[-exclude_cells] Exclude these instances from clock gating. Default: none
[-clocks] Clock gate instances clocked by these clocks only. Default: all clocks
[-cell_types] Clock gate these cell types only. Specify either [all|none], or one or more of [bram|reg|srl]. Default: all
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution


Power, XDC


Specify cell instances to include or exclude in power optimization. The specified cells are optimized using the power_opt_design command.

Tip: Block RAM optimizations are performed by default with the opt_design command. Some or all block RAM cells can be excluded from the opt_design optimization using the set_power_opt command as well.

The effect of multiple set_power_opt commands is cumulative, so that you can specify a broad class of cell types to optimize, include specific hierarchical cells, and then exclude cells within the included hierarchy to refine the power optimization.

The power optimizations that have been performed can be reported using the report_power_opt command.


-include_cells <args> - (Optional) Include only these instances for clock gating. Use this option to list specific cells or blocks to be optimized using power_opt_design. The default is to include all cells in power optimization.

-exclude_cells <args> - (Optional) Exclude these instances from clock gating. The default is to not exclude cells from power optimization. The -exclude_cells option excludes from the currently included cells. By default all cells are included, however, if -include_cells has been specified, then -exclude_cells applies only to the currently included cells.

-clocks <args> - (Optional) Perform power optimizations on instances clocked by the specified clocks only. The default is to include all clocks in the design.

Note: It is possible to use both -clocks and -include_cells to produce a list of cells that are not clocked by the specified clocks, resulting in no power optimization.

-cell_types [ all | bram | reg | srl | none ] - (Optional) Perform power optimization on the specified cell types only. The default is to perform power optimization on all types of cells. You can use all or none to reset, or clear, any prior set_power_opt commands. You can also specify one or more of bram, srl, or reg type cells.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.


The following example sets power optimization for block RAM cells only, and then runs power optimization:

set_power_opt -cell_types bram

The following example sets power optimization for block RAM and REG type cells, then adds SRLs, and runs power optimization. Then all cells are cleared, and only SRLs are included, and power optimization is run again:

set_power_opt -cell_types { bram reg}
set_power_opt -cell_types { srl}
set_power_opt -cell_types { none}
set_power_opt -cell_types { srl}

The following example sets power optimization for block RAM cells only, excludes the cpuEngine block from optimization, but then includes the cpuEngine/cpu_dbg_dat_i block, then performs power optimization:

set_power_opt -cell_types bram
set_power_opt -exclude_cells cpuEngine
set_power_opt -include_cells cpuEngine/cpu_dbg_dat_i