CIRCT  20.0.0git
Namespaces | Classes | Typedefs | Functions | Variables
esi Namespace Reference

Namespaces

 backends
 
 cosim
 
 registry
 
 services
 
 utils
 

Classes

class  ChannelSignaling
 
class  RequestConnectionOp
 
class  RandomAccessMemoryDeclOp
 
class  ESIPureModuleOp
 
class  Accelerator
 Top level accelerator class. More...
 
class  AcceleratorConnection
 Abstract class representing a connection to an accelerator. More...
 
class  AcceleratorServiceThread
 Background thread which services various requests. More...
 
struct  AppID
 
class  AppIDPath
 
struct  Constant
 
struct  ModuleInfo
 
struct  ServicePortDesc
 A description of a service port. More...
 
struct  ChannelAssignment
 Details about how to connect to a particular channel. More...
 
struct  HWClientDetail
 A description of a hardware client. More...
 
class  MessageData
 A logical chunk of data representing serialized data. More...
 
class  Context
 AcceleratorConnections, Accelerators, and Manifests must all share a context. More...
 
class  HWModule
 Represents either the top level or an instance of a hardware module. More...
 
class  Instance
 Subclass of HWModule which represents a submodule instance. More...
 
class  Logger
 
class  TSLogger
 A thread-safe logger which calls functions implemented by subclasses. More...
 
class  StreamLogger
 A logger that writes to a C++ std::ostream. More...
 
class  NullLogger
 A logger that does nothing. More...
 
class  Manifest
 Class to parse a manifest. More...
 
class  ChannelPort
 Unidirectional channels are the basic communication primitive between the host and accelerator. More...
 
class  WriteChannelPort
 A ChannelPort which sends data to the accelerator. More...
 
class  ReadChannelPort
 A ChannelPort which reads data from the accelerator. More...
 
class  BundlePort
 Services provide connections to 'bundles' – collections of named, unidirectional communication channels. More...
 
class  Type
 Root class of the ESI type system. More...
 
class  BundleType
 Bundles represent a collection of channels. More...
 
class  ChannelType
 Channels are the basic communication primitives. More...
 
class  VoidType
 The "void" type is a special type which can be used to represent no type. More...
 
class  AnyType
 The "any" type is a special type which can be used to represent any type, as identified by the type id. More...
 
class  BitVectorType
 Bit vectors include signed, unsigned, and signless integers. More...
 
class  BitsType
 Bits are just an array of bits. More...
 
class  IntegerType
 Integers are bit vectors which may be signed or unsigned and are interpreted as numbers. More...
 
class  SIntType
 Signed integer. More...
 
class  UIntType
 Unsigned integer. More...
 
class  StructType
 Structs are an ordered collection of fields, each with a name and a type. More...
 
class  ArrayType
 Arrays have a compile time specified (static) size and an element type. More...
 

Typedefs

using ChannelAssignments = std::map< std::string, ChannelAssignment >
 
using HWClientDetails = std::vector< HWClientDetail >
 
using ServiceImplDetails = std::map< std::string, std::any >
 

Functions

bool operator< (const AppID &a, const AppID &b)
 
bool operator< (const AppIDPath &a, const AppIDPath &b)
 
std::string toHex (uint32_t val)
 
std::string toString (const std::any &a)
 'Stringify' a std::any. This is used to log std::any values by some loggers. More...
 
static std::filesystem::path getExePath ()
 Get the path to the currently running executable. More...
 
static std::filesystem::path getLibPath ()
 Get the path to the currently running shared library. More...
 
static void loadBackend (Context &ctxt, std::string backend)
 Load a backend plugin dynamically. More...
 
static std::map< AppID, Instance * > buildIndex (const std::vector< std::unique_ptr< Instance >> &insts)
 Build an index of children by AppID. More...
 
static std::map< AppID, const BundlePort & > buildIndex (const std::vector< std::unique_ptr< BundlePort >> &ports)
 Build an index of ports by AppID. More...
 

Variables

constexpr uint32_t MetadataOffset = 8
 
constexpr uint64_t MagicNumberLo = 0xE5100E51
 
constexpr uint64_t MagicNumberHi = 0x207D98E5
 
constexpr uint64_t MagicNumber = MagicNumberLo | (MagicNumberHi << 32)
 
constexpr uint32_t ExpectedVersionNumber = 0
 

Typedef Documentation

◆ ChannelAssignments

using esi.ChannelAssignments = typedef std::map<std::string, ChannelAssignment>

Definition at line 87 of file Common.h.

◆ HWClientDetails

using esi.HWClientDetails = typedef std::vector<HWClientDetail>

Definition at line 97 of file Common.h.

◆ ServiceImplDetails

using esi.ServiceImplDetails = typedef std::map<std::string, std::any>

Definition at line 98 of file Common.h.

Function Documentation

◆ buildIndex() [1/2]

static std::map<AppID, const BundlePort &> esi::buildIndex ( const std::vector< std::unique_ptr< BundlePort >> &  ports)
static

Build an index of ports by AppID.

Definition at line 35 of file Design.cpp.

◆ buildIndex() [2/2]

static std::map<AppID, Instance *> esi::buildIndex ( const std::vector< std::unique_ptr< Instance >> &  insts)
static

Build an index of children by AppID.

Definition at line 26 of file Design.cpp.

◆ getExePath()

static std::filesystem::path esi::getExePath ( )
static

Get the path to the currently running executable.

Definition at line 72 of file Accelerator.cpp.

Referenced by loadBackend().

◆ getLibPath()

static std::filesystem::path esi::getLibPath ( )
static

Get the path to the currently running shared library.

Definition at line 91 of file Accelerator.cpp.

Referenced by loadBackend().

◆ loadBackend()

static void esi::loadBackend ( Context ctxt,
std::string  backend 
)
static

Load a backend plugin dynamically.

Plugins are expected to be named lib<BackendName>Backend.so and located in one of 1) CWD, 2) in the same directory as the application, or 3) in the same directory as this library.

Definition at line 119 of file Accelerator.cpp.

References esiaccel.accelerator::ctxt, esi::Logger::debug(), esi::Logger::error(), getExePath(), getLibPath(), and esi::Logger::info().

Referenced by esi::registry::connect().

◆ operator<() [1/2]

bool esi::operator< ( const AppID a,
const AppID b 
)

Definition at line 714 of file Manifest.cpp.

References esi::AppID::idx, and esi::AppID::name.

◆ operator<() [2/2]

bool esi::operator< ( const AppIDPath a,
const AppIDPath b 
)

Definition at line 719 of file Manifest.cpp.

◆ toHex()

std::string esi::toHex ( uint32_t  val)

◆ toString()

std::string esi::toString ( const std::any &  a)

'Stringify' a std::any. This is used to log std::any values by some loggers.

Definition at line 74 of file Logging.cpp.

Referenced by esi::StreamLogger::logImpl().

Variable Documentation

◆ ExpectedVersionNumber

constexpr uint32_t esi.ExpectedVersionNumber = 0
constexpr

Definition at line 48 of file Accelerator.h.

◆ MagicNumber

constexpr uint64_t esi.MagicNumber = MagicNumberLo | (MagicNumberHi << 32)
constexpr

Definition at line 47 of file Accelerator.h.

Referenced by esi::services::MMIOSysInfo::getEsiVersion().

◆ MagicNumberHi

constexpr uint64_t esi.MagicNumberHi = 0x207D98E5
constexpr

Definition at line 46 of file Accelerator.h.

◆ MagicNumberLo

constexpr uint64_t esi.MagicNumberLo = 0xE5100E51
constexpr

Definition at line 45 of file Accelerator.h.

◆ MetadataOffset

constexpr uint32_t esi.MetadataOffset = 8
constexpr