56 :
HWOperation(operation.name(), parent), operation_(operation) {
65 for (
int operand = 1; operand <= inputs; operand++) {
68 for (
int operand = inputs + 1; operand <= inputs + outputs; operand++) {
90 const string procName =
"SmartHWOperation::setName";
91 const string errorMsg =
"Tried to set name of SmartHWOperation!";
149 for (
int i = 0; i < portCount; i++) {
162 for (
int i = 0; i < portCount; i++) {
206 const string procName =
"SmartHWOperation::bindPort";
207 const string errorMsg =
208 "Tried to bind port of SmartHWOperation manually!";
221 const string procName =
"SmartHWOperation::unbindPort";
222 const string errorMsg =
223 "Tried unbind port of SmartHWOperation manually!";
238 const string procName =
"SmartHWOperation::loadState";
239 const string errorMsg =
240 "Tried load state of SmartHWOperation from an ObjectState tree!";
259 if (opIndex == operand) {
#define assert(condition)
static void abortProgram() __attribute__((noreturn))
static void writeToErrorLog(const std::string fileName, const int lineNumber, const std::string functionName, const std::string message, const int neededVerbosity=0)
virtual TCEString name() const
virtual int numberOfInputs() const
virtual int numberOfOutputs() const
virtual void loadState(const ObjectState *state)
SmartHWOperation(const Operation &operation, UniversalFunctionUnit &parent)
virtual void unbindPort(const TTAMachine::FUPort &port)
bool otherMandatoryInputsBound(int operand) const
const Operation & operation_
The operation represented by this SmartHWOperation instance.
TTAMachine::FUPort * port(int operand) const
virtual ~SmartHWOperation()
virtual void setName(const std::string &name)
bool is32BitOperation_
Tells whether this operation has 32 bits wide operands.
virtual void bindPort(int operand, const TTAMachine::FUPort &port)
UniversalFunctionUnit * parentUnit() const
void addPortRead(int operand, int start, int duration)
void addPortWrite(int operand, int start, int duration)
virtual bool isOpcodeSetting() const
ExecutionPipeline * pipeline() const
virtual void bindPort(int operand, const FUPort &port)
virtual FUPort * port(int operand) const
bool isBound(const FUPort &port) const
FunctionUnit * parentUnit() const
virtual Socket * outputSocket() const
virtual Socket * inputSocket() const
int portCountWithWidth(int width) const
static const std::string OC_SETTING_PORT_64
Name of the 64 bit wide opcode setting port.
static bool is32BitOperation(const std::string &opName)
static const std::string OC_SETTING_PORT_32
Name of the 32 bit wide opcode setting port.
TTAMachine::FUPort & portWithWidth(int index, int width) const