OpenASIP  2.0
Public Types | Public Member Functions | Protected Attributes | List of all members
FUResourceConflictDetector Class Reference

#include <FUResourceConflictDetector.hh>

Inheritance diagram for FUResourceConflictDetector:
Inheritance graph
Collaboration diagram for FUResourceConflictDetector:
Collaboration graph

Public Types

typedef int OperationID
 Type for identifying operations in the conflict detector interface. More...
 

Public Member Functions

 FUResourceConflictDetector ()
 
virtual ~FUResourceConflictDetector ()
 
virtual bool issueOperation (OperationID id)
 
virtual void endClock ()
 
virtual void advanceClock ()
 
virtual bool advanceCycle ()
 
virtual bool isIdle ()
 
virtual void reset ()
 
virtual OperationID operationID (const TCEString &operationName) const
 
- Public Member Functions inherited from ClockedState
 ClockedState ()
 
virtual ~ClockedState ()
 

Protected Attributes

OperationIDIndexoperationIndices_
 Map for finding indices for operations quickly. More...
 

Detailed Description

Interface for classes used for detecting FU resource conflicts.

Definition at line 45 of file FUResourceConflictDetector.hh.

Member Typedef Documentation

◆ OperationID

Type for identifying operations in the conflict detector interface.

Definition at line 49 of file FUResourceConflictDetector.hh.

Constructor & Destructor Documentation

◆ FUResourceConflictDetector()

FUResourceConflictDetector::FUResourceConflictDetector ( )

Constructor.

Definition at line 42 of file FUResourceConflictDetector.cc.

42  :
44  reset();
45 }

References reset().

Here is the call graph for this function:

◆ ~FUResourceConflictDetector()

FUResourceConflictDetector::~FUResourceConflictDetector ( )
virtual

Destructor.

Definition at line 50 of file FUResourceConflictDetector.cc.

50  {
51  delete operationIndices_;
52  operationIndices_ = NULL;
53 }

References operationIndices_.

Member Function Documentation

◆ advanceClock()

void FUResourceConflictDetector::advanceClock ( )
virtual

Simulates a cycle advance and reports a conflict by throwing an exception.

Implements ClockedState.

Definition at line 86 of file FUResourceConflictDetector.cc.

86  {
87  advanceCycle();
88 }

References advanceCycle().

Referenced by SimulationController::simulateCycle().

Here is the call graph for this function:

◆ advanceCycle()

bool FUResourceConflictDetector::advanceCycle ( )
virtual

Simulates a cycle advance and reports a conflict if detected.

The default implementation always returns true, thus detects no conflicts. This interface is provided for allowing the model to update its state at the point simulation advances to the next cycle.

Returns
False in case a conflict is detected, otherwise true.

Reimplemented in ReservationTableFUResourceConflictDetector, ResourceVectorFUResourceConflictDetector, DCMFUResourceConflictDetector, and FSAFUResourceConflictDetector.

Definition at line 78 of file FUResourceConflictDetector.cc.

78  {
79  return true;
80 }

Referenced by advanceClock().

◆ endClock()

void FUResourceConflictDetector::endClock ( )
virtual

Called after advanceClock() has been called to all clocked states.

Implements ClockedState.

Definition at line 95 of file FUResourceConflictDetector.cc.

95  {
96 }

◆ isIdle()

bool FUResourceConflictDetector::isIdle ( )
virtual

Should return true in case the model needs to receive clock advance calls.

Returns
By default always returns false.

Reimplemented in FSAFUResourceConflictDetector.

Definition at line 104 of file FUResourceConflictDetector.cc.

104  {
105  return false;
106 }

Referenced by SimulationController::simulateCycle().

◆ issueOperation()

bool FUResourceConflictDetector::issueOperation ( OperationID  id)
virtual

Issues an operation and reports a conflict if detected.

The default implementation always returns true, thus detects no conflicts.

Parameters
idThe id of the operation to issue.
Returns
False in case a conflict is detected, otherwise true.

Reimplemented in ReservationTableFUResourceConflictDetector, DCMFUResourceConflictDetector, ResourceVectorFUResourceConflictDetector, and FSAFUResourceConflictDetector.

Definition at line 64 of file FUResourceConflictDetector.cc.

64  {
65  return true;
66 }

Referenced by ConflictDetectingOperationExecutor::startOperation().

◆ operationID()

FUResourceConflictDetector::OperationID FUResourceConflictDetector::operationID ( const TCEString operationName) const
virtual

Returns an operation id for the given operation.

Operation IDs are used in the interface for optimizing the access. This method converts OSAL Operations to operation IDs.

Parameters
operationThe OSAL Operation to find ID for.
Returns
The operation ID.
Exceptions
KeyNotFoundif the operation of given name couldn't be found

Reimplemented in FSAFUResourceConflictDetector, ReservationTableFUResourceConflictDetector, DCMFUResourceConflictDetector, and ResourceVectorFUResourceConflictDetector.

Definition at line 119 of file FUResourceConflictDetector.cc.

120 {
121  OperationIDIndex::const_iterator i =
122  operationIndices_->find(StringTools::stringToLower(operationName));
123  if (i == operationIndices_->end())
124  throw KeyNotFound(
125  __FILE__, __LINE__, __func__, "Operation not found.");
126  return (*i).second;
127 }

References __func__, operationIndices_, and StringTools::stringToLower().

Referenced by MachineStateBuilder::addVirtualOpcodeSettingPortsToFU().

Here is the call graph for this function:

◆ reset()

void FUResourceConflictDetector::reset ( )
virtual

Sets the state of the detector to its initial state.

This means that the FU state is assumed to be what it is in powerup.

Reimplemented from ClockedState.

Reimplemented in FSAFUResourceConflictDetector, ResourceVectorFUResourceConflictDetector, ReservationTableFUResourceConflictDetector, and DCMFUResourceConflictDetector.

Definition at line 135 of file FUResourceConflictDetector.cc.

135  {
136 }

Referenced by FUResourceConflictDetector().

Member Data Documentation

◆ operationIndices_

OperationIDIndex* FUResourceConflictDetector::operationIndices_
protected

Map for finding indices for operations quickly.

Definition at line 68 of file FUResourceConflictDetector.hh.

Referenced by operationID(), and ~FUResourceConflictDetector().


The documentation for this class was generated from the following files:
FUResourceConflictDetector::advanceCycle
virtual bool advanceCycle()
Definition: FUResourceConflictDetector.cc:78
__func__
#define __func__
Definition: Application.hh:67
KeyNotFound
Definition: Exception.hh:285
FUResourceConflictDetector::operationIndices_
OperationIDIndex * operationIndices_
Map for finding indices for operations quickly.
Definition: FUResourceConflictDetector.hh:68
OperationIDIndex
Definition: OperationIDIndex.hh:41
StringTools::stringToLower
static std::string stringToLower(const std::string &source)
Definition: StringTools.cc:160
FUResourceConflictDetector::reset
virtual void reset()
Definition: FUResourceConflictDetector.cc:135