OpenASIP 2.2
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
TTAMachine::FUPort Class Reference

#include <FUPort.hh>

Inheritance diagram for TTAMachine::FUPort:
Inheritance graph
Collaboration diagram for TTAMachine::FUPort:
Collaboration graph

Public Member Functions

 FUPort (const std::string &name, int width, FunctionUnit &parent, bool triggers, bool setsOpcode, bool noRegister=false)
 
 FUPort (const ObjectState *state, Unit &parent)
 
virtual ~FUPort ()
 
virtual bool isTriggering () const
 
virtual bool isOpcodeSetting () const
 
void setTriggering (bool triggers)
 
virtual ObjectStatesaveState () const
 
virtual void loadState (const ObjectState *state)
 
std::string bindingString () const
 
void updateBindingString () const
 
bool isArchitectureEqual (FUPort *port)
 
bool noRegister () const
 
void setNoRegister (bool noRegister)
 
- Public Member Functions inherited from TTAMachine::BaseFUPort
virtual ~BaseFUPort ()
 
FunctionUnitparentUnit () const
 
virtual int width () const
 
void setWidth (int width)
 
- Public Member Functions inherited from TTAMachine::Port
 Port (const std::string &name, Unit &parentUnit)
 
 Port (const ObjectState *state, Unit &parentUnit)
 
virtual ~Port ()
 
virtual std::string name () const
 
virtual void setName (const std::string &name)
 
virtual void attachSocket (Socket &socket)
 
virtual void detachSocket (Socket &socket)
 
virtual void detachAllSockets ()
 
UnitparentUnit () const
 
virtual SocketinputSocket () const
 
virtual SocketoutputSocket () const
 
virtual SocketunconnectedSocket (int index) const
 
virtual int socketCount () const
 
virtual bool isConnectedTo (const Socket &socket) const
 
virtual bool isOutput () const
 
virtual bool isInput () const
 
- Public Member Functions inherited from Serializable
virtual ~Serializable ()
 

Static Public Attributes

static const std::string OSNAME_FUPORT = "fu_port"
 ObjectState name for FUPort.
 
static const std::string OSKEY_TRIGGERING = "triggering"
 ObjectState attribute key for triggering feature.
 
static const std::string OSKEY_OPCODE_SETTING = "oc_setting"
 ObjectState attribute key for operand code setting feature.
 
static const std::string OSKEY_NO_REGISTER = "no_register"
 ObjectState attribute key for noRegister setting feature.
 
- Static Public Attributes inherited from TTAMachine::BaseFUPort
static const std::string OSKEY_WIDTH = "width"
 ObjectState attribute key for bit width of the port.
 
- Static Public Attributes inherited from TTAMachine::Port
static const std::string OSNAME_PORT = "port"
 ObjectState name for Port.
 
static const std::string OSKEY_NAME = "name"
 ObjectState attribute key for the name of the port.
 
static const std::string OSKEY_FIRST_SOCKET = "1_socket"
 ObjectState attribute key for the name of the connected socket.
 
static const std::string OSKEY_SECOND_SOCKET = "2_socket"
 ObjectState attribute key for the name of the other connected socket.
 

Protected Member Functions

 FUPort (const std::string &name, int width, FunctionUnit &parent, bool triggers, bool setsOpcode, bool noRegister, bool dummy)
 
- Protected Member Functions inherited from TTAMachine::BaseFUPort
 BaseFUPort (const std::string &name, int width, FunctionUnit &parent)
 
 BaseFUPort (const ObjectState *state, Unit &parent)
 
- Protected Member Functions inherited from TTAMachine::Port
 Port (const std::string &name, FunctionUnit &parentUnit)
 
- Protected Member Functions inherited from TTAMachine::SubComponent
 SubComponent ()
 
virtual ~SubComponent ()
 
- Protected Member Functions inherited from TTAMachine::MachinePart
 MachinePart ()
 
virtual ~MachinePart ()
 

Private Member Functions

void cleanupGuards () const
 
void cleanupOperandBindings () const
 
void loadStateWithoutReferences (const ObjectState *state)
 

Private Attributes

bool triggers_
 Specifies whether this is a triggering port.
 
bool setsOpcode_
 Specifies whether this is an operation selecting port.
 
std::string bindingString_
 Binding string describes the operation bindings of of the port to allow fast binding comparison.
 
bool noRegister_
 

Detailed Description

Represens an operand, trigger or result port of a function unit.

Definition at line 46 of file FUPort.hh.

Constructor & Destructor Documentation

◆ FUPort() [1/3]

TTAMachine::FUPort::FUPort ( const std::string &  name,
int  width,
FunctionUnit parent,
bool  triggers,
bool  setsOpcode,
bool  noRegister = false 
)

Constructor.

Parameters
nameName of the port.
widthBit width of the port.
parentThe function unit to which the port belongs.
triggersIf true, writing (or reading) this port starts the execution of a new operation.
setsOpcodeIf true, writing (or reading) this port selects the operation to be executed. Opcode-setting ports must be triggering.
noRegisterIf true, the port do not have internal register.
Exceptions
ComponentAlreadyExistsIf the function unit already has another port by the same name or another port that sets operation code.
OutOfRangeIf the given bit width is less or equal to zero.
IllegalParametersIf setsOpcode argument is true and isTriggering false.
InvalidNameIf the given name is not a valid component name.

Definition at line 76 of file FUPort.cc.

79 : BaseFUPort(name, width, parent),
80 triggers_(triggers),
81 setsOpcode_(setsOpcode),
83 const std::string procName = "FUPort::FUPort";
84
85 if (setsOpcode && !triggers) {
86 throw IllegalParameters(__FILE__, __LINE__, procName);
87 }
88
89 // check that parent unit will not have two operation code setting
90 // ports
91 if (setsOpcode) {
92 for (int i = 0; i < parent.portCount(); i++) {
93 BaseFUPort* port = parent.port(i);
94 if (port->isOpcodeSetting() && port != this) {
96 __FILE__, __LINE__, procName);
97 }
98 }
99 }
100}
virtual int width() const
BaseFUPort(const std::string &name, int width, FunctionUnit &parent)
Definition BaseFUPort.cc:58
bool triggers_
Specifies whether this is a triggering port.
Definition FUPort.hh:91
bool noRegister() const
Definition FUPort.cc:469
bool setsOpcode_
Specifies whether this is an operation selecting port.
Definition FUPort.hh:93
virtual std::string name() const
Definition Port.cc:141

References TTAMachine::BaseFUPort::isOpcodeSetting(), TTAMachine::FunctionUnit::port(), and TTAMachine::Unit::portCount().

Here is the call graph for this function:

◆ FUPort() [2/3]

TTAMachine::FUPort::FUPort ( const ObjectState state,
Unit parent 
)

Constructor.

Loads its state from the given ObjectState instance but does not create connections to sockets. This constructor is used when the state of a function unit is loaded. Do not use this constructor.

Parameters
stateThe ObjectState instance.
parentThe parent function unit which contains the port.
Exceptions
ObjectStateLoadingExceptionIf the given ObjectState instance is invalid.

Definition at line 153 of file FUPort.cc.

154 : BaseFUPort(state, parent), triggers_(false), setsOpcode_(false) {
156
157 if (setsOpcode_ != triggers_) {
158 const std::string procName = "FUPort::FUPort";
159 const std::string error = "Port must trigger iff sets opcode.";
160 throw ObjectStateLoadingException(__FILE__, __LINE__, procName,
161 error);
162 }
163}
void loadStateWithoutReferences(const ObjectState *state)
Definition FUPort.cc:416

References loadStateWithoutReferences(), setsOpcode_, and triggers_.

Here is the call graph for this function:

◆ ~FUPort()

TTAMachine::FUPort::~FUPort ( )
virtual

Destructor.

Definition at line 168 of file FUPort.cc.

168 {
171}
void cleanupOperandBindings() const
Definition FUPort.cc:388
void cleanupGuards() const
Definition FUPort.cc:354

References cleanupGuards(), and cleanupOperandBindings().

Here is the call graph for this function:

◆ FUPort() [3/3]

TTAMachine::FUPort::FUPort ( const std::string &  name,
int  width,
FunctionUnit parent,
bool  triggers,
bool  setsOpcode,
bool  noRegister,
bool  dummy 
)
protected

Constructor.

This constructor does not check that the parent unit will not have two operation code setting ports. This constructor is used by UniversalFUPort class.

Parameters
nameName of the port.
widthBit width of the port.
parentThe function unit to which the port belongs.
triggersIf true, writing (or reading) this port starts the execution of a new operation.
setsOpcodeIf true, writing (or reading) this port selects the operation to be executed. Opcode-setting ports must be triggering.
noRegisterIf true, the port do not have internal register.
dummyThis parameter is not used and exists only to make some difference to the other constructor.
Exceptions
ComponentAlreadyExistsIf the function unit already has another port by the same name.
OutOfRangeIf the given bit width is less or equal to zero.
IllegalParametersIf setsOpcode argument is true and isTriggering false.
InvalidNameIf the given name is not a valid component name.

Definition at line 127 of file FUPort.cc.

130 : BaseFUPort(name, width, parent),
131 triggers_(triggers),
132 setsOpcode_(setsOpcode),
134 if (setsOpcode != triggers) {
135 const std::string procName = "FUPort::FUPort";
136 const std::string error = "Port must trigger iff sets opcode.";
137 throw IllegalParameters(__FILE__, __LINE__, procName, error);
138 }
139}

Member Function Documentation

◆ bindingString()

std::string TTAMachine::FUPort::bindingString ( ) const

Returns a description of operand bindings of the port.

This returned string can be used to compare the bindings of to FUPorts using a string comparison because Operations are listed in alphapetical order.

Todo:
this should be moved to BaseFUPort.
Returns
String describing the operand bindings of the port.

Definition at line 280 of file FUPort.cc.

280 {
281 return bindingString_;
282}
std::string bindingString_
Binding string describes the operation bindings of of the port to allow fast binding comparison.
Definition FUPort.hh:96

References bindingString_.

Referenced by isArchitectureEqual(), and TTAMachine::ResourceVector::ResourceVector().

◆ cleanupGuards()

void TTAMachine::FUPort::cleanupGuards ( ) const
private

Cleans up the guards that refer to this port.

Definition at line 354 of file FUPort.cc.

354 {
355
356 // delete guards referencing to this port
357 Unit* parent = Port::parentUnit();
358 Machine* machine = parent->machine();
359
360 if (machine != NULL) {
362
363 for (int busIndex = 0; busIndex < navi.count(); busIndex++) {
364 Bus* bus = navi.item(busIndex);
365 int guardIndex = 0;
366
367 while (guardIndex < bus->guardCount()) {
368 Guard* guard = bus->guard(guardIndex);
369 PortGuard* portGuard = dynamic_cast<PortGuard*>(guard);
370
371 if (portGuard != NULL && portGuard->port() == this) {
372 // guard is removed automatically from bus
373 delete portGuard;
374 } else {
375 guardIndex++;
376 }
377 }
378 }
379 }
380}
TTAMachine::Machine * machine
the architecture definition of the estimated processor
ComponentType * item(int index) const
Navigator< Bus > BusNavigator
Navigator type for BusNavigator.
Definition Machine.hh:213
virtual BusNavigator busNavigator() const
Definition Machine.cc:356
Unit * parentUnit() const

References TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Bus::guard(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::machine(), machine, TTAMachine::Port::parentUnit(), and TTAMachine::PortGuard::port().

Referenced by ~FUPort().

Here is the call graph for this function:

◆ cleanupOperandBindings()

void TTAMachine::FUPort::cleanupOperandBindings ( ) const
private

Removes all the operand bindings of the parent unit that use this port.

Definition at line 388 of file FUPort.cc.

388 {
389
390 // NOTE! Cannot call directly FUPort::parentUnit because this method is
391 // called from FUPort's destructor and it is possible that FunctionUnit
392 // instance does not exist any more. This is the case if FunctionUnit is
393 // deleted because its destructor is called before Unit's destructor.
395 FunctionUnit* parentFU = dynamic_cast<FunctionUnit*>(parentUnit);
396
397 if (parentFU != NULL) {
398 for (int i = 0; i < parentFU->operationCount(); i++) {
399 HWOperation* operation = parentFU->operation(i);
400 operation->unbindPort(*this);
401 }
402 }
403 bindingString_ = "";
404}
FunctionUnit * parentUnit() const
Definition BaseFUPort.cc:96

References bindingString_, TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::Port::parentUnit(), and TTAMachine::HWOperation::unbindPort().

Referenced by ~FUPort().

Here is the call graph for this function:

◆ isArchitectureEqual()

bool TTAMachine::FUPort::isArchitectureEqual ( FUPort port)

Checks if the two ports have same architecture.

Compares also operation bindings. Names are allowed to differ.

Returns
True if the two ports have equal architecture.

Definition at line 332 of file FUPort.cc.

332 {
333
334 if (triggers_ != port->isTriggering()) {
335 return false;
336 }
337 if (setsOpcode_ != port->isOpcodeSetting()) {
338 return false;
339 }
340 if (width() != port->width()) {
341 return false;
342 }
343 if (bindingString() != port->bindingString()) {
344 return false;
345 }
346 return true;
347}
std::string bindingString() const
Definition FUPort.cc:280

References bindingString(), isOpcodeSetting(), isTriggering(), setsOpcode_, triggers_, and TTAMachine::BaseFUPort::width().

Here is the call graph for this function:

◆ isOpcodeSetting()

bool TTAMachine::FUPort::isOpcodeSetting ( ) const
virtual

Returns true if reading (or writing) this port selects the operation to be executed, otherwise false.

Returns
True if reading (or writing) this port selects the operation to be executed, otherwise false.

Implements TTAMachine::BaseFUPort.

Definition at line 195 of file FUPort.cc.

195 {
196 return setsOpcode_;
197}

References setsOpcode_.

Referenced by HDB::HDBManager::addFUArchitecture(), OperationBindingCheck::check(), VectorLSGenerator::createVectorLSU(), TTAMachine::FunctionUnit::isArchitectureEqual(), isArchitectureEqual(), HDB::HDBManager::isMatchingArchitecture(), BEMGenerator::needsSocketCodeTable(), HDB::FUArchitecture::operator==(), SmartHWOperation::port(), and TTAProgram::TerminalFUPort::TerminalFUPort().

◆ isTriggering()

bool TTAMachine::FUPort::isTriggering ( ) const
virtual

Returns true if reading (or writing) this port starts the execution of a new operation, otherwise false.

Returns
True if reading (or writing) this port starts the execution of a new operation, otherwise false.

Implements TTAMachine::BaseFUPort.

Definition at line 182 of file FUPort.cc.

182 {
183 return triggers_;
184}

References triggers_.

Referenced by ProGe::RV32MicroCodeGenerator::addBPorts(), HDB::HDBManager::addFUArchitecture(), ProGe::NetlistGenerator::addFUToNetlist(), ProGe::RV32MicroCodeGenerator::addR1Ports(), ProGe::RV32MicroCodeGenerator::addR1RPorts(), ProGe::RV32MicroCodeGenerator::addRPorts(), ProGe::RV32MicroCodeGenerator::addSPorts(), ProGe::RV32MicroCodeGenerator::addUJPorts(), InputFUBroker::allAvailableResources(), OpsetDialog::bindPorts(), OperationBindingCheck::check(), FUValidator::checkOperations(), ADFCombiner::connectVectorLSU(), UnitPortFactory::createEditPart(), llvm::LLVMTCEPOMBuilder::createFUTerminal(), OpsetDialog::createOperation(), FUGen::createShadowRegisters(), VectorLSGenerator::createVectorLSU(), BasicBlockScheduler::findTriggerFromUnit(), ProgramOperation::findTriggerFromUnit(), OpsetDialog::findTriggerPort(), ComponentImplementationSelector::fuArchsByOpSetWithMinLatency(), BasicBlockScheduler::getTriggerOperand(), TTAMachine::FunctionUnit::isArchitectureEqual(), isArchitectureEqual(), HDB::HDBManager::isMatchingArchitecture(), BF2Scheduler::isTrigger(), AddFUFromHDBDialog::onAdd(), HDB::FUArchitecture::operator==(), BF2Scheduler::preAllocateFunctionUnits(), PlatformIntegrator::readLsuParameters(), BF2Scheduler::releasePortForOp(), FUPortDialog::TransferDataToWindow(), MachineInfo::triggerIndex(), and FUDialog::updatePortList().

◆ loadState()

void TTAMachine::FUPort::loadState ( const ObjectState state)
virtual

Loads the state of the object from the given ObjectState instance.

Parameters
stateThe ObjectState instance.
Exceptions
ObjectStateLoadingExceptionIf an error occurs while loading the state.

Reimplemented from TTAMachine::BaseFUPort.

Reimplemented in UniversalFUPort.

Definition at line 257 of file FUPort.cc.

257 {
258 const string procName = "FUPort::loadState";
259
260 if (state->name() != OSNAME_FUPORT) {
261 throw ObjectStateLoadingException(__FILE__, __LINE__, procName);
262 }
263
267}
std::string name() const
virtual void loadState(const ObjectState *state)
static const std::string OSNAME_FUPORT
ObjectState name for FUPort.
Definition FUPort.hh:71
void updateBindingString() const
Definition FUPort.cc:294

References TTAMachine::BaseFUPort::loadState(), loadStateWithoutReferences(), ObjectState::name(), OSNAME_FUPORT, and updateBindingString().

Here is the call graph for this function:

◆ loadStateWithoutReferences()

void TTAMachine::FUPort::loadStateWithoutReferences ( const ObjectState state)
private

Loads its state from the given ObjectState instance but does not create connections to sockets.

Parameters
stateThe ObjectState instance.
Exceptions
ObjectStateLoadingExceptionIf the given ObjectState instance is invalid.

Definition at line 416 of file FUPort.cc.

416 {
417 const string procName = "FUPort::loadStateWithoutReferences";
418
419 try {
423
424 // Check that parent unit does not contain another operation
425 // code setting port. Cannot call directly setOpcodeSetting
426 // method because FunctionUnit part of parent unit may not have
427 // been instantiated when this method is called (for example if
428 // FunctionUnit is created by FunctionUnit(ObjectState*).
429
431 MOMTextGenerator textGenerator;
432
433 for (int i = 0; i < parentUnit->portCount(); i++) {
434 Port* port = parentUnit->port(i);
435 BaseFUPort* fuPort = dynamic_cast<BaseFUPort*>(port);
436 assert(fuPort != NULL);
437 if (fuPort->isOpcodeSetting() && fuPort != this) {
438 format text = textGenerator.text(
440 text % parentUnit->name();
442 __FILE__, __LINE__, procName, text.str());
443 }
444 }
445
446 setsOpcode_ = true;
447 if (!triggers_) {
448 format text = textGenerator.text(
450 text % name() % parentUnit->name();
452 __FILE__, __LINE__, procName, text.str());
453 }
454 }
455
456 } catch (Exception& e) {
458 __FILE__, __LINE__, procName, e.errorMessage());
459 }
461}
#define assert(condition)
std::string errorMessage() const
Definition Exception.cc:123
bool boolAttribute(const std::string &name) const
int intAttribute(const std::string &name) const
virtual TCEString name() const
void setNoRegister(bool noRegister)
Definition FUPort.cc:479
void setTriggering(bool triggers)
Definition FUPort.cc:212
static const std::string OSKEY_OPCODE_SETTING
ObjectState attribute key for operand code setting feature.
Definition FUPort.hh:75
static const std::string OSKEY_NO_REGISTER
ObjectState attribute key for noRegister setting feature.
Definition FUPort.hh:77
static const std::string OSKEY_TRIGGERING
ObjectState attribute key for triggering feature.
Definition FUPort.hh:73
virtual BaseFUPort * port(const std::string &name) const
Port(const std::string &name, Unit &parentUnit)
Definition Port.cc:67
virtual int portCount() const
Definition Unit.cc:135
virtual boost::format text(int textId)

References assert, ObjectState::boolAttribute(), Exception::errorMessage(), ObjectState::intAttribute(), TTAMachine::BaseFUPort::isOpcodeSetting(), TTAMachine::Component::name(), TTAMachine::Port::name(), OSKEY_NO_REGISTER, OSKEY_OPCODE_SETTING, OSKEY_TRIGGERING, TTAMachine::BaseFUPort::parentUnit(), TTAMachine::Port::parentUnit(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), setNoRegister(), setsOpcode_, setTriggering(), Texts::TextGenerator::text(), triggers_, MOMTextGenerator::TXT_OPCODE_SETTING_MUST_BE_TRIGGERING, MOMTextGenerator::TXT_OPCODE_SETTING_PORT_EXISTS, and updateBindingString().

Referenced by FUPort(), and loadState().

Here is the call graph for this function:

◆ noRegister()

bool TTAMachine::FUPort::noRegister ( ) const

◆ saveState()

ObjectState * TTAMachine::FUPort::saveState ( ) const
virtual

Saves the state of the object to an ObjectState instance.

Returns
The newly created ObjectState instance.

Reimplemented from TTAMachine::BaseFUPort.

Definition at line 239 of file FUPort.cc.

239 {
241 state->setName(OSNAME_FUPORT);
245 return state;
246}
void setName(const std::string &name)
void setAttribute(const std::string &name, const std::string &value)
virtual ObjectState * saveState() const

References noRegister_, OSKEY_NO_REGISTER, OSKEY_OPCODE_SETTING, OSKEY_TRIGGERING, OSNAME_FUPORT, TTAMachine::BaseFUPort::saveState(), ObjectState::setAttribute(), ObjectState::setName(), setsOpcode_, and triggers_.

Here is the call graph for this function:

◆ setNoRegister()

void TTAMachine::FUPort::setNoRegister ( bool  noRegister)

Definition at line 479 of file FUPort.cc.

479 {
481}

References noRegister(), and noRegister_.

Referenced by loadStateWithoutReferences().

Here is the call graph for this function:

◆ setTriggering()

void TTAMachine::FUPort::setTriggering ( bool  triggers)

Sets/unsets the port to a triggering and opcode setting.

Triggering port is always the opcode setting port in TCE v1.0 and only one port can trigger in TCE v1.0. If ports parent unit already has a triggering port this ports triggering status is removed.

Parameters
triggersWhen true, the port is set to a triggering and opcode setting port.

Definition at line 212 of file FUPort.cc.

212 {
213 if (triggers) {
214 setsOpcode_ = true;
215
216 FunctionUnit* parent = this->parentUnit();
217 if (parent != NULL) {
218 for (int i = 0; i < parent->portCount(); i++) {
219 BaseFUPort* port = parent->port(i);
220 if (port->isTriggering() && port != this) {
221 dynamic_cast<FUPort*>(port)->setTriggering(false);
222 break; // only one other port can be triggering
223 }
224 }
225 }
226 } else {
227 setsOpcode_ = false;
228 }
229 triggers_ = triggers;
230}
FUPort(const std::string &name, int width, FunctionUnit &parent, bool triggers, bool setsOpcode, bool noRegister=false)
Definition FUPort.cc:76

References TTAMachine::BaseFUPort::isTriggering(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), setsOpcode_, setTriggering(), and triggers_.

Referenced by loadStateWithoutReferences(), FUPortDialog::onOK(), and setTriggering().

Here is the call graph for this function:

◆ updateBindingString()

void TTAMachine::FUPort::updateBindingString ( ) const

Updates the string of bindings of the port.

Separated to another method so it's not recomputed every time it's asked.

Todo:
this should be moved to BaseFUPort.
Returns
String of bindings. Operations are listed in alphapetical order.

Definition at line 294 of file FUPort.cc.

294 {
295
296 if (parentUnit() == NULL) {
297 bindingString_ = "";
298 return;
299 }
300
301 set<string> bindings;
302 for (int i = 0; i < parentUnit()->operationCount(); i++) {
303 if (parentUnit()->operation(i)->isBound(*this)) {
304 string binding = parentUnit()->operation(i)->name();
305 binding += ".";
306 binding += Conversion::toString(
307 parentUnit()->operation(i)->io(*this));
308 bindings.insert(binding);
309 }
310 }
311 set<string>::const_iterator iter = bindings.begin();
312 string result;
313 while (iter != bindings.end()) {
314 result += (*iter);
315 iter++;
316 if (iter != bindings.end()) {
317 result += ",";
318 }
319 }
320 bindingString_ = result;
321}
static std::string toString(const T &source)
virtual HWOperation * operation(const std::string &name) const
virtual int operationCount() const
const std::string & name() const
bool isBound(const FUPort &port) const

References bindingString_, TTAMachine::HWOperation::isBound(), TTAMachine::HWOperation::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::BaseFUPort::parentUnit(), and Conversion::toString().

Referenced by TTAMachine::HWOperation::bindPort(), loadState(), loadStateWithoutReferences(), and TTAMachine::HWOperation::unbindPort().

Here is the call graph for this function:

Member Data Documentation

◆ bindingString_

std::string TTAMachine::FUPort::bindingString_
mutableprivate

Binding string describes the operation bindings of of the port to allow fast binding comparison.

Definition at line 96 of file FUPort.hh.

Referenced by bindingString(), cleanupOperandBindings(), and updateBindingString().

◆ noRegister_

bool TTAMachine::FUPort::noRegister_
private

Definition at line 98 of file FUPort.hh.

Referenced by noRegister(), saveState(), and setNoRegister().

◆ OSKEY_NO_REGISTER

const string TTAMachine::FUPort::OSKEY_NO_REGISTER = "no_register"
static

ObjectState attribute key for noRegister setting feature.

Definition at line 77 of file FUPort.hh.

Referenced by loadStateWithoutReferences(), ADFSerializer::machineFUPort(), ADFSerializer::mdfFUPort(), and saveState().

◆ OSKEY_OPCODE_SETTING

const string TTAMachine::FUPort::OSKEY_OPCODE_SETTING = "oc_setting"
static

ObjectState attribute key for operand code setting feature.

Definition at line 75 of file FUPort.hh.

Referenced by loadStateWithoutReferences(), ADFSerializer::machineFUPort(), ADFSerializer::mdfFUPort(), and saveState().

◆ OSKEY_TRIGGERING

const string TTAMachine::FUPort::OSKEY_TRIGGERING = "triggering"
static

ObjectState attribute key for triggering feature.

Definition at line 73 of file FUPort.hh.

Referenced by loadStateWithoutReferences(), ADFSerializer::machineFUPort(), ADFSerializer::mdfFUPort(), and saveState().

◆ OSNAME_FUPORT

const string TTAMachine::FUPort::OSNAME_FUPORT = "fu_port"
static

◆ setsOpcode_

bool TTAMachine::FUPort::setsOpcode_
private

Specifies whether this is an operation selecting port.

Definition at line 93 of file FUPort.hh.

Referenced by FUPort(), isArchitectureEqual(), isOpcodeSetting(), loadStateWithoutReferences(), saveState(), and setTriggering().

◆ triggers_

bool TTAMachine::FUPort::triggers_
private

Specifies whether this is a triggering port.

Definition at line 91 of file FUPort.hh.

Referenced by FUPort(), isArchitectureEqual(), isTriggering(), loadStateWithoutReferences(), saveState(), and setTriggering().


The documentation for this class was generated from the following files: