Graphical User Interface#

The graphical user interface can be access by launching OpenROAD with -gui or by opening it from the command-line with gui::show.

Commands#

Note

  • Parameters in square brackets [-param param] are optional.

  • Parameters without square brackets -param2 param2 are required.

Add Buttons to the Toolbar#

This command creates toolbar button with name set using the -text flag and accompanying logic in the -script flag.

Returns: name of the new button, either name or buttonX.

create_toolbar_button 
    [-name name]
    -text button_text
    -script tcl_script 
    [-echo]

Options#

Switch Name

Description

-name

The name of the button, used when deleting the button.

-text

The text to put on the button.

-script

The tcl script to evaluate when the button is pressed.

-echo

This indicate that the commands in the tcl_script should be echoed in the log.

Remove Toolbar Button#

To remove toolbar button:

gui::remove_toolbar_button 
    name

Options#

Switch Name

Description

-name

The name of the button, used when deleting the button.

Add items to the Menubar#

This command add items to the menubar. Returns: name of the new item, either name or actionX.

create_menu_item 
    [-name name]
    [-path menu_path]
    -text item_text
    -script tcl_script
    [-shortcut key_shortcut] 
    [-echo]

Options#

Switch Name

Description

-name

(optional) name of the item, used when deleting the item.

-path

(optional) Menu path to place the new item in (hierarchy is separated by /), defaults to “Custom Scripts”, but this can also be “Tools” or “New menu/New submenu”.

-text

The text to put on the item.

-script

The tcl script to evaluate when the button is pressed.

-shortcut

(optional) key shortcut to trigger this item.

-echo

(optional) indicate that the commands in the tcl_script should be echoed in the log.

Remove items from the Menubar#

To remove menu item:

gui::remove_menu_item 
    name

Options#

Switch Name

Description

-name

name of the item, used when deleting the item.

Save Image#

This command can be both be used when the GUI is active and not active to save a screenshot with various options.

save_image 
    [-resolution microns_per_pixel]
    [-area {x0 y0 x1 y1}]
    [-width width]
    [-display_option {option value}]
    filename

Options#

Switch Name

Description

filename

path to save the image to.

-area

x0, y0 - first corner of the layout area (in microns) to be saved, default is to save what is visible on the screen unless called when gui is not active and then it selected the whole block. x1, y1 - second corner of the layout area (in microns) to be saved, default is to save what is visible on the screen unless called when gui is not active and then it selected the whole block.

-resolution

resolution in microns per pixel to use when saving the image, default will match what the GUI has selected.

-width

width of the output image in pixels, default will be computed from the resolution. Cannot be used with -resolution.

-display_option

specific setting for a display option to show or hide specific elements. For example, to hide metal1 -display_option {Layers/metal1 false}, to show routing tracks -display_option {Tracks/Pref true}, or to show everthing -display_option {* true}.

Save Clocktree Image#

This command saves the screenshot of clocktree given options to filename.

save_clocktree_image 
    filename
    -clock clock_name
    [-width width]
    [-height height]
    [-corner corner]

Options#

Switch Name

Description

filename

path to save the image to.

-clock

name of the clock to save the clocktree for.

-corner

name of the timing corner to save the clocktree for, default to the first corner defined.

-height

height of the image in pixels, defaults to the height of the GUI widget.

-width

width of the image in pixels, defaults to the width of the GUI widget.

Select Objects#

This command selects object based on options. Returns: number of objects selected.

select 
    -type object_type
    [-name glob_pattern]
    [-filter attribute=value]
    [-case_insensitive]
    [-highlight group]

Options#

Switch Name

Description

-type

name of the object type. For example, Inst for instances, Net for nets, and DRC for DRC violations.

-name

(optional) filter selection by the specified name. For example, to only select clk nets *clk*. Use -case_insensitive to filter based on case insensitive instead of case sensitive.

-filter

(optional) filter selection based on the objects’ properties. attribute represents the property’s name and value the property’s value. In case the property holds a collection (e. g. BTerms in a Net) or a table (e. g. Layers in a Generate Via Rule) value can be any element within those. A special case exists for checking whether a collection is empty or not by using the value CONNECTED. This can be useful to select a specific group of elements (e. g. BTerms=CONNECTED will select only Nets connected to Input/Output Pins).

-highlight

(optional) add the selection to the specific highlighting group. Values can be 0 to 7.

Display Timing Cones#

This command displays timing cones for a pin given options.

display_timing_cone 
    pin
    [-fanin]
    [-fanout]
    [-off]

Options#

Switch Name

Description

pin

name of the instance or block pin.

-fanin

(optional) display the fanin timing cone.

-fanout

(optional) display the fanout timing cone.

-off

(optional) remove the timing cone.

Focus Net#

This command limits the drawing to specified net.

focus_net 
    net
    [-remove]
    [-clear]

Options#

Switch Name

Description

pin

name of the net.

-remove

(optional) removes the net from from the focus.

-clear

(optional) clears all nets from focus.

TCL functions#

Is GUI Enabled#

Determine is the GUI is active:

gui::enabled

Trigger GUI to Load Design#

Announce to the GUI that a design was loaded (note: this is only needed when the design was loaded through the odb API and not via read_def or read_db):

gui::design_created

Load DRC Result#

To load the results of a DRC report:

gui::load_drc 
    filename

Options#

Switch Name

Description

filename

Filename for DRC report.

Show GUI#

To open the GUI from the command-line (this command does not return until the GUI is closed):

gui::show 
    script
    interactive

Options#

Switch Name

Description

script

TCL script to evaluate in the GUI.

interactive

Boolean if true, the GUI should open in an interactive session (default), or if false that the GUI would execute the script and return to the terminal.

Hide GUI#

To close the GUI and return to the command-line:

gui::hide

Layout Fit#

To fit the whole layout in the window:

gui::fit

Zoom to a specific region#

To zoom in our out to a specific region:

gui::zoom_to 
    x0 y0 x1 y1

Options#

Switch Name

Description

x0, y0, x1, y1

first and second corner of the layout area in microns.

Zoom In#

To zoom in the layout:

gui::zoom_in 
    x y

Options#

Switch Name

Description

x, y

new center of layout in microns.

Zoom Out#

To zoom out the layout:

gui::zoom_out 
    x y

Options#

Switch Name

Description

x, y

new center of layout in microns.

Center At#

To move the layout to new area:

gui::center_at 
    x y

Options#

Switch Name

Description

x, y

new center of layout in microns.

Set Resolution#

To change the resolution to a specific value:

gui::set_resolution
    resolution

Options#

Switch Name

Description

resolution

database units per pixel.

Add a single net to selection#

To add a single net to the selected items:

gui::selection_add_net 
    name

Options#

Switch Name

Description

name

name of the net to add.

Add multiple nets to selection#

To add several nets to the selected items using a regex:

gui::selection_add_nets 
    name_regex

Options#

Switch Name

Description

name_regex

regular expression of the net names to add.

Add a single inst to selection#

To add a single instance to the selected items:

gui::selection_add_inst 
    name

Options#

Switch Name

Description

name

name of the instance to add.

Add multiple insts to selection#

To add several instances to the selected items using a regex:

gui::selection_add_insts 
    name_regex

Options#

Switch Name

Description

name_regex

regular expression of the instance names to add.

Select at point or area#

To add items at a specific point or in an area:

Example usage:

gui::select_at x y
gui::select_at x y append
gui::select_at x0 y0 x1 y1
gui::select_at x0 y0 x1 y1 append
gui::select_at 
    x0 y0 x1 y1
    [append]

Or

gui::select_at
    x y 
    [append]

Options#

Switch Name

Description

x, y

point in the layout area in microns.

x0, y0, x1, y1

first and second corner of the layout area in microns.

append

if true (the default value) append the new selections to the current selection list, else replace the selection list with the new selections.

Select next item from selection#

To navigate through multiple selected items: Returns: current index of the selected item.

gui::select_next

Select previous item from selection#

To navigate through multiple selected items: Returns: current index of the selected item.

gui::select_previous 

Clear Selection#

To clear the current set of selected items:

gui::clear_selections

Get Selection Property#

To get the properties for the current selection in the Inspector:

gui::get_selection_property 
    name

Options#

Switch Name

Description

name

name of the property. For example, Type for object type or bbox for the bounding box of the object.

Animate Selection#

To animate the current selection in the Inspector:

gui::selection_animate 
    [repeat]

Options#

Switch Name

Description

repeat

indicate how many times the animation should repeat, default value is 0 repeats. If the value is 0, the animation will repeat indefinitely.

Highlight Net#

To highlight a net:

gui::highlight_net 
    name
    [highlight_group]

Options#

Switch Name

Description

name

name of the net to highlight.

highlight_group

group to add the highlighted net to, defaults to 0, valid groups are 0 - 7.

Highlight Instance#

To highlight an instance:

gui::highlight_inst 
    name
    [highlight_group]

Options#

Switch Name

Description

name

name of the instance to highlight.

highlight_group

group to add the highlighted instance to, defaults to 0, valid groups are 0 - 7.

Clear Highlight Groups#

To clear the highlight groups:

gui::clear_highlights
    [highlight_group]

Options#

Switch Name

Description

highlight_group

group to clear, defaults to 0, valid groups are -1 - 7. Use -1 to clear all groups.

Add Ruler to Layout#

To add a ruler to the layout:

  1. either press k and use the mouse to place it visually. To disable snapping for the ruler when adding, hold the Ctrl key, and to allow non-horizontal or vertical snapping when completing the ruler hold the Shift key.

  2. or use the command:

Returns: name of the newly created ruler.

gui::add_ruler 
    x0 y0 x1 y1
    [label]
    [name]
    [euclidian]

Options#

Switch Name

Description

x0, y0, x1, y1

first and second end point of the ruler in microns.

label

text label for the ruler.

name

name of the ruler.

euclidian

1 for euclidian ruler, and 0 for regular ruler.

Delete a single ruler#

To remove a single ruler:

gui::delete_ruler 
    name

Options#

Switch Name

Description

name

name of the ruler.

Clear All Rulers#

To remove all the rulers:

gui::clear_rulers

Set Heatmap#

To control the settings in the heat maps:

The currently availble heat maps are:

  • Power

  • Routing

  • Placement

  • IRDrop

  • RUDY [1]

These options can also be modified in the GUI by double-clicking the underlined display control for the heat map.

gui::set_heatmap 
    name
    [option]
    [value]

Options#

Switch Name

Description

name

is the name of the heatmap.

option

is the name of the option to modify. If option is rebuild the map will be destroyed and rebuilt.

value

is the new value for the specified option. This is not used when rebuilding map.

Dump Heatmap to file#

To save the raw data from the heat maps ins a comma separated value (CSV) format:

gui::dump_heatmap 
    name 
    filename

Options#

Switch Name

Description

name

is the name of the heatmap.

filename

path to the file to write the data to.

GUI Display Controls#

Control the visible and selected elements in the layout:

gui::set_display_controls 
    name 
    [display_type] 
    [value]

Options#

Switch Name

Description

name

is the name of the control. For example, for the power nets option this would be Signals/Power or could be Layers/* to set the option for all the layers.

display_type

is either visible or selectable

value

is either true or false

Check Display Controls#

To check the visibility or selectability of elements in the layout:

gui::check_display_controls 
    name 
    display_type 

Options#

Switch Name

Description

name

is the name of the control. For example, for the power nets option this would be Signals/Power or could be Layers/* to set the option for all the layers.

display_type

is either visible or selectable

Save Display Controls#

When performing a batch operation changing the display controls settings, the following command can be used to save the current state of the display controls.

gui::save_display_controls

Restore Display Controls#

This command restores display controls.

gui::restore_display_controls

Input Dialog#

To request user input via the GUI: Returns: a string with the input, or empty string if canceled.

gui::input_dialog 
    title
    question

Options#

Switch Name

Description

title

is the title of the input message box.

question

is the text for the message box.

Pause script execution#

Pause the execution of the script:

gui::pause 
    [timeout]

Options#

Switch Name

Description

timeout

is specified in milliseconds, if it is not provided the pause will last until the user presses the Continue button.

Show widget#

To open a specific layout widget:

gui::show_widget 
       name

Options#

Switch Name

Description

name

of the widget. For example, the display controls would be “Display Control”.

Hide widget#

To close a specific layout widget:

gui::hide_widget 
    name

Options#

Switch Name

Description

name

of the widget. For example, the display controls would be “Display Control”.

License#

BSD 3-Clause License. See LICENSE file.