Skip to main content


SST defines a number of types that developers may encounter throughout the codebase. Several of these types are defined in the sst_types.h header and described below.


These types are used to uniquely tag SST objects.

  • ComponentId_t (uint64_t)

    A unique identifier assigned to each component and subcomponent in the simulation. SubComponent IDs share lower-order bits with their parent Component ID.

  • StatisticId_t (uint64_t)

    An identifier assigned to each statistic in the simulation

  • LinkId_t (uint32_t)

    A unique identifier assigned to each link in the simulation

  • HandlerId_t (uint64_t)

    A unique identifier assigned to handler functions (clock, link, etc.)


Several time types are used through SST.

  • Cycle_t (uint64_t)

    A count of clock cycles

  • SimTime_t (uint64_t)

    Time counted in the simulation's base time quanta. By default this is picoseconds (ps).

  • Time_t (double)

    Time in seconds


Typedefs are included for the following units.

  • watts (double)
  • joules (double)
  • farads (double)
  • volts (double)


Lastly, sst_types.h includes some macros for optimizing branch code.

#define LIKELY(x)   __builtin_expect((int)(x), 1)
#define UNLIKELY(x) __builtin_expect((int)(x), 0)

The sst_types.h header file is included in many SST header files already but can also be included directly if needed.

#include <sst/core/sst_types.h>