startgroup - 2023.2 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2023.2 English

Start a set of commands that can be undone/redone as a group


startgroup [‑try] [‑quiet] [‑verbose]




Name Description
[-try] Don't start a group if one has already been started
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution




Starts a sequence of commands that can be undone or redone as a series. Use endgroup to end the sequence of commands.

You can have multiple command groups to undo or redo, but you cannot nest command groups. You must use endgroup to end a command sequence before using startgroup to create a new command sequence.

Tip: The startgroup/endgroup commands are provided to support sequences of related commands that can be undone via the undo command, or redone if needed using the redo command. However, some commands can trigger an endgroup unexpectedly, and certain commands do not support either undo or redo. The limitations are not fully defined.

The startgroup command returns an integer value of 0 if a group is already started, and returns an integer value of 1 if the startgroup command has started a new group.


-try - (Optional) Returns 1 if a new group is started. Returns 0 if a group has already been started, and therefore a new group cannot be started.

-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 defines a startgroup, executes a sequence of related commands, and then executes the endgroup. This sequence of commands can be undone or redone as a group:

create_pblock pblock_wbArbEngine
create_pblock pblock_usbEngnSRM
add_cells_to_pblock pblock_wbArbEngine \
   [get_cells [list wbArbEngine]] -clear_locs
add_cells_to_pblock pblock_usbEngnSRM \
   [get_cells [list usbEngine1/usbEngineSRAM]] -clear_locs

See Also