Go to the documentation of this file.
108 attachSocket(*inputSocket);
110 attachSocket(*outputSocket);
121 attachSocket(*inputSocket);
123 attachSocket(*outputSocket);
130 attachSocket(*inputSocket);
132 attachSocket(*outputSocket);
139 attachSocket(*inputSocket);
141 attachSocket(*outputSocket);
163 FUPort* port1 =
new FUPort(
"port1", 32, *cu,
true,
true);
165 FUPort* port2 =
new FUPort(
"port2", 32, *cu,
false,
false);
178 const string procName =
"UniversalMachine::UniversalMachine";
180 __FILE__, __LINE__, procName, exception.
errorMessage());
326 Machine::addBus(bus);
328 const string procName =
"UniversalMachine::addBus";
329 const string errorMsg =
"Tried to add a bus to UniversalMachine!";
348 Machine::addSocket(socket);
350 const string procName =
"UniversalMachine::addSocket";
351 const string errorMsg =
"Tried to add a socket to UniversalMachine!";
369 Machine::addFunctionUnit(unit);
371 const string procName =
"UniversalMachine::addFunctionUnit";
372 const string errorMsg =
373 "Tried to add a function unit to UniversalMachine!";
388 const string procName =
"UniversalMachine::addImmediateUnit";
389 const string errorMsg =
390 "Tried to add an immediate unit to UniversalMachine!";
407 Machine::addRegisterFile(unit);
409 const string procName =
"UniversalMachine::addRegisterFile";
410 const string errorMsg =
411 "Tried to add a register file to UniversalMachine!";
429 Machine::addAddressSpace(as);
431 const string procName =
"UniversalMachine::addAddressSpace";
432 const string errorMsg =
433 "Tried to add an address space to UniversalMachine!";
448 const string procName =
"UniversalMachine::addBridge";
449 const string errorMsg =
"Tried to add a bridge to UniversalMachine!";
463 const string procName =
"UniversalMachine::addInstructionTemplate";
464 const string errorMsg =
465 "Tried to add an instruction template to UniversalMachine!";
481 Machine::setGlobalControl(unit);
483 const string procName =
"UniversalMachine::setGlobalControl";
484 const string errorMsg =
485 "Tried to set control unit to UniversalMachine!";
500 const string procName =
"UniversalMachine::removeBus";
501 const string errorMsg =
"Tried to remove bus from UniversalMachine!";
515 const string procName =
"UniversalMachine::removeSocket";
516 const string errorMsg =
"Tried to remove socket from UniversalMachine!";
530 const string procName =
"UniversalMachine::removeFunctionUnit";
531 const string errorMsg =
532 "Tried to remove function unit from UniversalMachine!";
546 const string procName =
"UniversalMachine::removeRegisterFile";
547 const string errorMsg =
548 "Tried to remove register file from UniversalMachine!";
562 const string procName =
"UniversalMachine::deleteAddressSpace";
563 const string errorMsg =
564 "Tried to delete address space from UniversalMachine!";
576 const string procName =
"UniversalMachine::unsetglobalControl";
577 const string errorMsg =
578 "Tried to unset global control unit from UniversalMachine!";
594 const string procName =
"UniversalMachine::loadState";
595 const string errorMsg =
596 "Tried to load UniversalMachine from an ObjectState tree!";
#define UM_INTEGER_URF_READ_PORT
virtual void removeFunctionUnit(TTAMachine::FunctionUnit &unit)
UnboundedRegisterFile & integerRegisterFile() const
virtual void addBridge(TTAMachine::Bridge &bridge)
TTAMachine::AddressSpace & dataAddressSpace() const
TTAMachine::RegisterFile & booleanRegisterFile() const
#define UM_UNIVERSAL_FU_NAME
const unsigned int DATA_MEM_SIZE_UINT
virtual void addAddressSpace(TTAMachine::AddressSpace &as)
virtual void bindPort(int operand, const FUPort &port)
TTAMachine::Bus & universalBus() const
static void writeToErrorLog(const std::string fileName, const int lineNumber, const std::string functionName, const std::string message, const int neededVerbosity=0)
OperationPool opPool
The operation pool instance to use for finding operations.
#define UM_INPUT_SOCKET_NAME
static UniversalMachine & instance()
UnboundedRegisterFile & doubleRegisterFile() const
virtual void removeRegisterFile(TTAMachine::RegisterFile &unit)
#define UM_BUS_NAME
Machine component names reserved for the universal machine.
#define UM_DOUBLE_URF_NAME
bool isBuilt_
Indicates whether the UniversalMachine is built completely.
#define UM_SPECIAL_RF_READ_PORT
virtual void loadState(const ObjectState *state)
#define assert(condition)
virtual void deleteAddressSpace(TTAMachine::AddressSpace &as)
virtual void attachSocket(Socket &socket)
void attachBus(Segment &bus)
virtual void addInstructionTemplate(TTAMachine::InstructionTemplate &iTemp)
bool hasItem(const std::string &name) const
#define UM_BOOLEAN_RF_READ_PORT
#define UM_DOUBLE_URF_READ_PORT
virtual void addFunctionUnit(TTAMachine::FunctionUnit &unit)
void addPortRead(int operand, int start, int duration)
virtual FunctionUnitNavigator functionUnitNavigator() const
virtual void addRegisterFile(TTAMachine::RegisterFile &unit)
virtual void removeBus(TTAMachine::Bus &bus)
virtual void setAddressSpace(AddressSpace *as)
virtual AddressSpaceNavigator addressSpaceNavigator() const
void setDirection(Direction direction)
std::string errorMessage() const
static UniversalMachine * instance_
The singleton instance. Use this instance everywhere. Creating multiple instances of UM is deprecated...
TTAMachine::AddressSpace & instructionAddressSpace() const
UniversalFunctionUnit & universalFunctionUnit() const
virtual void setGlobalControl(TTAMachine::ControlUnit &unit)
virtual RegisterFileNavigator registerFileNavigator() const
virtual void addImmediateUnit(TTAMachine::ImmediateUnit &unit)
virtual void addBus(TTAMachine::Bus &bus)
#define UM_SPECIAL_RF_WRITE_PORT
find Finds info of the inner loops in the false
#define UM_INTEGER_URF_NAME
#define UM_DOUBLE_URF_WRITE_PORT
virtual void unsetGlobalControl()
virtual BusNavigator busNavigator() const
#define UM_BOOLEAN_RF_WRITE_PORT
void setReturnAddressPort(const SpecialRegisterPort &port)
ExecutionPipeline * pipeline() const
ComponentType * item(int index) const
#define UM_SPECIAL_RF_NAME
static void abortProgram() __attribute__((noreturn))
#define UM_OUTPUT_SOCKET_NAME
#define UM_BOOLEAN_RF_NAME
TTAMachine::RegisterFile & specialRegisterFile() const
#define UM_INTEGER_URF_WRITE_PORT
virtual void addSocket(TTAMachine::Socket &socket)
virtual void removeSocket(TTAMachine::Socket &socket)
virtual bool isUniversalMachine() const
virtual ~UniversalMachine()