SST Workbench Users Manual


SST Workbench is a cross platform GUI application created to assist users creating interconnect wiring between SST components and generating Python based input files for running SST simulations.

SST Workbench is provided as a binary download from the web site. It includes binaries for Mac OSX and Linux. The source code is included as part of the SST code repository.

Installation and Running

SST Workbench is provided as a binary download ( from the web site. It includes binaries for Mac OSX (Tested on 10.8 and 10.9) and Linux (tested on Ubuntu 12.04 and CentOS 6.5). Untested operating systems and versions may produce unexpected results.

Linux Distribution

Mac OSX distribution

Building From Source

The source code for SST Workbench is located in at <sstroot>/tools/SSTWorkbench as part of the trunk of the SST repository from the web site.

SST Workbench is built using the Qt cross platform development tools version 5.2.1 or newer. A copy of Qt is required to be installed on the development machine and can be downloaded from Depending upon your development platform, the Qt development tools may need to be built from source.

Detailed instructions on building SST Workbench is provided in a separate document called SSTWorkbenchBuildInstructions.pdf that is included in the binary download.

User Interface

When SST Workbench is started for the first time, it will look as shown (Figure 1). There are 3 main windows.

Figure 1

The main toolbar has the following tools (See Figure 2 and Figure 3):

Figure 2

Figure 3

Operation and Usage

General Operation

When started, the SST Workbench is blank. In order to properly use the application, SSTInfo.XML file information must be imported. After importing the SSTInfo.XML file, a list of components will be displayed in the Component Toolbox. The user then drag and drops the desired components onto the wiring window arranging them as desired. Component and port properties are set and wires are used to connect ports from one component to another creating a project. Lastly, the project is exported to a SST Python Input File (also known as an input deck), which is used for running SST simulations. At any time after the SSTInfo.XML file is imported, the project can be saved.

Note: SST Workbench is a tool to support developing input files for SST simulations. Before using SST Workbench, SST and its associated element libraries must be compiled. The SSTInfo tool will be used to create an SSTInfo.XML file, and SST will be used to run simulations using the exported SST Python Input File. For more information on building and running SST refer to the wiki documents at SST and SST Workbench can be run on different machines, only the data files used by both programs will need to be transferred between them.

Importing SSTInfo.XML File

  1. SST must be fully compiled along with all desired element libraries.
  2. Run SSTInfo -x to generate the SSTInfo.XML file.
  3. Press SST Workbench toolbar button Import SSTInfo.XML File. This will cause a file open dialog allowing the user to find and import the generated SSTInfo.XML file.
  4. Once the file is imported, the Component Toolbox will look similar to Figure 4.
  5. The letters in the icon represent the type of component: M Memory, P Processor, S System, N Network, U Uncategorized and a special SST Configuration Component.

Figure 4

Placing Components on the Wiring Window

  1. The Component Toolbox contains multiple tabs. There will be a separate tab for each element library compiled during the build of SST. Each element library tab will contain one or more components of various types.
  2. To place a component in the Wiring Window, drag and drop the component onto the Wiring Window.
  3. To place multiple copies of the same component, the user can click and select the component in the component toolbox, then click on the wiring window location. Each click on the wiring window will place a new component. Choosing the select tool or deselecting the component will cancel this mode.
  4. One copy of the “SST Startup Configuration” may be placed to provide SST simulation runtime parameters.

Configuring Components

  1. Once placed a graphical representation of the component will be shown in the wiring window (See Figure 5). Each component placed will be a unique instantiation of a component during the SST simulation. Components will have configuration properties and may contain ports (which will also have properties) that allow wiring of SST events between components. Additionally component objects can identify modules that are loaded by the component.
  2. Properties are adjustable data elements related to the specific object.
  3. Ports on a component are either static or dynamic.
    • Static ports are fixed in size and represented with a red circle.
    • Dynamic ports are adjustable in size and are represented with a blue diamond when unconfigured (See configuring ports below)
  4. To set a component’s properties, click on the component to select it (see setting properties below).
  5. To set component’s port properties; click on the desired port to select it (see setting properties below).
  6. The specific data set in the properties is dependent upon the component. Refer to the component documentation and source code for more information.

Figure 5

Configuring Ports

Static Ports

Static Ports represent a physical connection point that is used for interconnect wiring of events between components.

Dynamic Ports

Dynamic Ports are indicated in the port name containing a %d or %(param)d. For example: PortName_%d or PortName_%(param)d.

In the first version, the %d represents a zero based incrementing numeric value that will replace the %d in the name when configured. For example when the size of the dynamic port MyPort_%d is set to 3, then 3 physical connection points will be created called MyPort_0, MyPort_1, MyPort_2. These new ports work similarly to Static Ports (However their size can still be adjusted up or down as necessary).

Right clicking on a component and choosing the “Set Dynamic Ports…” (See Figure 6) will bring up the “Set Component Dynamic Ports” dialog allowing the user to set the size of the port (See Figures 7 & 8).

Figure 6

Figure 7

Figure 8

In the %(param)d version of a port, the param indicates a controlling property of the parent component that can be set to adjust the size of the dynamic port. The user can also set the size using the “Set Component Dynamic Ports” dialog. If the size is adjusted this way, then the controlling property will automatically be adjusted to match.

The graphical display of the port will automatically remove the (param) from the name and the port will be shown as a %d when not configured.

Moving Port Positions

When a component is created, the ports are evenly distributed on each side of a component. There may be times during the wiring that moving a port up or down or changing sides will improve the graphical layout of the project.

Right clicking on a component and choosing the “Move Port Positions” (See Figure 6) will enable the “Moving Ports” mode. This is indicated by the Component’s name being in shown in red, and the text “** MOVING PORTS (ESC to exit) **”. When in this mode, the ports of the component can be moved as desired (See Figure 9 & 10). Pressing Esc or performing actions will cancel this mode.

NOTE: The Physical ports of a configured Dynamic port are always grouped together in ascending order. These ports cannot be separated, and are always moved as a group.

Figure 9 and Figure 10

Setting Properties

The graphical objects for Components, Ports and Wires all have adjustable properties. Properties are adjustable data elements related to a specific object.

Each Component will have a number of properties related to it (See Figure 5 : memHierarchy.Cache properties are shown). Some properties are read only. Properties that have the “REQUIRED” entry must be set before exporting the SST Python Input file.

Component Properties

Components will have standard and component specific properties:

Component Standard Properties:

Component Specific Properties:

These are set by the developer of the component and identified by the SSTInfo.XML file.

Component Dynamic Properties:

Component Specific Properties can contain a %d or %(param)d format in its name. These properties operate similarly to Dynamic Ports described above. In the %d format, double clicking on a dynamic property name in Properties Window will bring up a dialog to configure the size of the dynamic property. The %(param)d format requires setting the controlling parameter to configure the size of the dynamic property (dialog control is not available).

Port Properties

Ports will have differing properties depending upon if it is static or dynamic

Static Port Properties:

Dynamic Port Properties:

Wire Properties

Wires will have standard Properties

Standard Wire Properties:

Component Modules

Some Components have the ability to load modules (similar to plugin’s). Modules loaded by a Component may have properties that need to be added to the Component’s property list.

Configuring Component Modules:

Right clicking on a component and choosing the “Manage Component Modules…” (See Figure 6) will bring up the “Manage Component Modules” Dialog (See Figure 11). This dialog will display all the available modules loaded from the SSTInfo.XML file. It will also allow the user to “assign” modules to the Component or remove them.

Figure 11

As soon as the “Manage Component Modules” dialog is closed, the modules are connected to the Component, and their properties are added to the Component’s list of properties (See Figure 12).

NOTE: Once a Module property is added to a Component, it cannot be removed. Any unused properties are ignored by the component

Figure 12

NOTE: Using SST Workbench set a module on component does not actually command the Component to instantiate the Module during simulation. The Component is coded to and has separate control over what modules are loaded. SST Workbench is only used to add the Module’s properties to the Component.

Wiring Components

The ports of Components placed on the Wiring Window may be connected to each other via the wiring tool. The wires have wire handles (larger red or green squares and the end of the line) that allow “grabbing” and moving wire ends. When a handle is close to a port it will “snap” to the port and remain connected to it. When connected, the wire handle will turn green. Once both handles are connected to ports, the wire itself will change from red to green. Wires will only connect to Static or configured Dynamic Ports.

To place a wire:

  1. Select the wiring tool from the toolbar
  2. Click to place the first point.
  3. Drag and release to place the second point
  4. The middle line segment of the wire can be clicked and moved as desired.

To Move or disconnect a wire:

  1. Select the wire by clicking on any wire line segment. This will display the wire handles.
  2. Click and move a wire handle to the desired location.
  3. The middle line segment of the wire can be clicked and moved as desired.

An example of component wiring is shown in Figure 13.

Figure 13

Export Python Input File

Once the project is configured to the users satisfaction, it can be exported to an SST Python Input File. Note: The project must contain a single copy of the “SST Startup Configuration” Component to set runtime parameters used by SST.

To export:

  1. Ensure the project contains a SST Startup Configuration component and all other components are wired and configured as desired. All wire ends must be connected to a port (ports can be left open), and all “REQUIRED” properties must be set to a usable value.
  2. Select the “Export SST Input Deck” button on the toolbar and select a location and filename to export the file (default extension is .py).

Other Operations

Placing Text

The “Add Text” toolbar button allows the user to add text to the Wiring Window. This text is not used or exported. It is provided as a method to document the project. General font controls exist to adjust the text as the user desires.


The view of the project can be zoomed in or out as desired. Also a zoom all button exists that allows the user to quickly see the entire project.

Component Color

The “Set Component Color” toolbar button can change the background color of components.

Tools in the Toolbar

There are three main tools on the Toolbar:

Saving / Opening Project

At anytime after a SSTInfo.XML file has been loaded, the project can be saved. The project can be re-opened for future work as necessary.

Copy / Paste

Components, wires and text can be copied and pasted as necessary. Component configuration (properties and port locations) will be copied as part of the component.

Preferences Dialog

The preferences dialog can be accessed from the SST Workbench menu (See Figure 14). It provides options handling the “Add Wire” and “Add Text” tool operations.

Figure 14