OpenASIP 2.2
|
#include <ExecutionPipelineResourceTable.hh>
Public Member Functions | |
unsigned int | numberOfResources () const |
unsigned int | pipelineSize () const |
unsigned int | maximalLatency () const |
bool | operationPipeline (int op, int cycle, int res) const |
int | operationIndex (const std::string &opName) const |
bool | hasOperation (const std::string &opName) const |
const std::map< int, int > & | operationLatency (unsigned int operationIndex) const |
const std::string & | name () const |
Static Public Member Functions | |
static const ExecutionPipelineResourceTable & | resourceTable (const TTAMachine::FunctionUnit &fu) |
static void | finalize () |
Private Types | |
typedef std::vector< bool > | ResourceVector |
Type for resource vector, represents one cycle of use. | |
typedef std::vector< ResourceVector > | ResourceTable |
Type for resource reservation table, resource vector x latency. | |
typedef std::map< const TTAMachine::FunctionUnit *, ExecutionPipelineResourceTable * > | ResourceTableMap |
Private Member Functions | |
ExecutionPipelineResourceTable (const TTAMachine::FunctionUnit &fu) | |
void | setLatency (const std::string &opName, const int output, const int latency) |
void | setResourceUse (const std::string &opName, const int cycle, const int resIndex) |
Private Attributes | |
std::string | name_ |
int | numberOfResources_ |
Resource and ports vector width, depends on particular FU. | |
unsigned int | maximalLatency_ |
Maximal latency of operation in FU. | |
std::map< std::string, int > | operationSupported_ |
Operations supported, name - index to operation pipeline vector. | |
std::vector< std::map< int, int > > | operationLatencies_ |
std::vector< ResourceTable > | operationPipelines_ |
Pipelines for operations. | |
Static Private Attributes | |
static ResourceTableMap | allResourceTables_ |
Contains these tables for all FU's. | |
Definition at line 44 of file ExecutionPipelineResourceTable.hh.
|
private |
Type for resource reservation table, resource vector x latency.
Definition at line 83 of file ExecutionPipelineResourceTable.hh.
|
private |
Definition at line 86 of file ExecutionPipelineResourceTable.hh.
|
private |
Type for resource vector, represents one cycle of use.
Definition at line 80 of file ExecutionPipelineResourceTable.hh.
|
private |
Definition at line 50 of file ExecutionPipelineResourceTable.cc.
References TTAMachine::ExecutionPipeline::isPortRead(), TTAMachine::ExecutionPipeline::isPortWritten(), TTAMachine::ExecutionPipeline::isResourceUsed(), TTAMachine::ExecutionPipeline::latency(), TTAMachine::HWOperation::latency(), TTAMachine::HWOperation::name(), TTAMachine::PipelineElement::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::FunctionUnit::operationPort(), TTAMachine::FunctionUnit::operationPortCount(), TTAMachine::HWOperation::pipeline(), TTAMachine::FunctionUnit::pipelineElement(), TTAMachine::FunctionUnit::pipelineElementCount(), setLatency(), setResourceUse(), StringTools::stringToUpper(), and TTAMachine::ExecutionPipeline::writtenOperands().
|
static |
Delete all the resource tables. This can be called after scheduling is done, when resource managers are longer used.
Definition at line 185 of file ExecutionPipelineResourceTable.cc.
References allResourceTables_, and MapTools::deleteAllValues().
Referenced by SimpleResourceManager::disposeRM().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
Gives an resource table for given FU. If no existing found, creates a new one.
fu | function unit whose resource table we are asking for. |
Definition at line 164 of file ExecutionPipelineResourceTable.cc.
References allResourceTables_.
|
private |
Sets latency of an output of an operation. The resource usage of the operation has to be set before calling this.
opName | operation to set the latency |
output | index of the output operand(stating from numberofinputoperand, not 0/1) |
latency | latency of the output of the operation |
Definition at line 139 of file ExecutionPipelineResourceTable.cc.
References MapTools::containsKey(), MapTools::keyForValue(), maximalLatency_, operationLatencies_, operationPipelines_, and operationSupported_.
Referenced by ExecutionPipelineResourceTable().
|
private |
Sets usage of resource/port to true for given cycle and resource number and particular pipeline.
opName | Name of operation to set resource for |
cycle | Cycle in which to set usage |
index | Index of resource/port in resource vector |
Definition at line 102 of file ExecutionPipelineResourceTable.cc.
References __func__, MapTools::containsKey(), MapTools::keyForValue(), maximalLatency_, numberOfResources_, operationPipelines_, and operationSupported_.
Referenced by ExecutionPipelineResourceTable().
|
staticprivate |
Contains these tables for all FU's.
Definition at line 100 of file ExecutionPipelineResourceTable.hh.
Referenced by finalize(), and resourceTable().
|
private |
Maximal latency of operation in FU.
Definition at line 91 of file ExecutionPipelineResourceTable.hh.
Referenced by setLatency(), and setResourceUse().
|
private |
Definition at line 77 of file ExecutionPipelineResourceTable.hh.
|
private |
Resource and ports vector width, depends on particular FU.
Definition at line 89 of file ExecutionPipelineResourceTable.hh.
Referenced by setResourceUse().
|
private |
Definition at line 95 of file ExecutionPipelineResourceTable.hh.
Referenced by setLatency().
|
private |
Pipelines for operations.
Definition at line 97 of file ExecutionPipelineResourceTable.hh.
Referenced by setLatency(), and setResourceUse().
|
private |
Operations supported, name - index to operation pipeline vector.
Definition at line 93 of file ExecutionPipelineResourceTable.hh.
Referenced by setLatency(), and setResourceUse().