OTAWA  2.0
Framework to perform machine analysis and compute WCET.
otawa::ParExeProc Class Reference

#include <otawa/parexegraph/ParExeProc.h>

Classes

class  QueueIterator
 

Public Types

enum  instruction_category_t {
  IALU = 0, FALU = 1, MEMORY = 2, CONTROL = 3,
  MUL = 4, DIV = 5, INST_CATEGORY_NUMBER
}
 
typedef enum otawa::ParExeProc::instruction_category_t instruction_category_t
 

Public Member Functions

void addQueue (elm::String name, int size)
 
ParExeStagebranchStage (void) const
 
ParExeStageexecStage (void)
 
ParExeStagefetchStage (void)
 
bool isLastStage (ParExeStage *stage)
 
ParExeStagelastStage (void)
 
List< ParExeStage * > * listOfInorderStages ()
 
ParExeStagememStage (void) const
 
 ParExeProc (const hard::Processor *proc)
 Build a parametric execution processor from processor description. More...
 
ParExePipelinepipeline ()
 
const hard::Processorprocessor (void) const
 
ParExeQueuequeue (int index)
 
int queueCount () const
 
void setBranchStage (ParExeStage *stage)
 
void setExecStage (ParExeStage *stage)
 
void setFetchStage (ParExeStage *stage)
 
void setMemStage (ParExeStage *stage)
 

Private Attributes

ParExeStage_branch_stage
 
ParExeStage_exec_stage
 
ParExeStage_fetch_stage
 
List< ParExeStage * > _inorder_stages
 
ParExeStage_mem_stage
 
ParExePipeline _pipeline
 
const hard::Processor_proc
 
Vector< ParExeQueue * > _queues
 

Detailed Description

Représentation of a processor (to be used to build a ParExeGraph). A processor is a pipeline, with a number of stages, among which a fetch stage and an execution stage, and a set of instruction queues.

See also
Parametric Execution Graph

Member Typedef Documentation

◆ instruction_category_t

Member Enumeration Documentation

◆ instruction_category_t

Enumerator
IALU 
FALU 
MEMORY 
CONTROL 
MUL 
DIV 
INST_CATEGORY_NUMBER 

Constructor & Destructor Documentation

◆ ParExeProc()

Member Function Documentation

◆ addQueue()

void otawa::ParExeProc::addQueue ( elm::String  name,
int  size 
)
inline

Add an instruction queue to the processor.

Parameters
nameName of the queue.
sizeSize (capacity) of the queue.

References name.

Referenced by ParExeProc().

◆ branchStage()

ParExeStage* otawa::ParExeProc::branchStage ( void  ) const
inline

◆ execStage()

◆ fetchStage()

ParExeStage * otawa::ParExeProc::fetchStage ( void  )
inline
Returns
Pointer to the fetch stage (must have been set beforehand).

Referenced by otawa::ParExeGraph::addEdgesForFetch(), otawa::etime::StepGraphBuilder::build(), otawa::etime::StandardXGraphBuilder::init(), and ParExeProc().

◆ isLastStage()

bool otawa::ParExeProc::isLastStage ( ParExeStage stage)
inline
Parameters
stagePointer to a stage.
Returns
True if the stage is the last in the pipeline.

◆ lastStage()

ParExeStage* otawa::ParExeProc::lastStage ( void  )
inline

◆ listOfInorderStages()

◆ memStage()

◆ pipeline()

◆ processor()

◆ queue()

ParExeQueue * otawa::ParExeProc::queue ( int  index)
inline

Returns a pointer to the queue specified by index. Queues are numbered when they are added to the processor.

Parameters
indexIndex of the queue.
Returns
Pointer to the indexed queue.

Referenced by ParExeProc(), and otawa::etime::StepGraphBuilder::reset().

◆ queueCount()

int otawa::ParExeProc::queueCount ( ) const
inline

◆ setBranchStage()

void otawa::ParExeProc::setBranchStage ( ParExeStage stage)
inline

Referenced by ParExeProc().

◆ setExecStage()

void otawa::ParExeProc::setExecStage ( ParExeStage stage)
inline

Declares a stage as the execution stage (it will undergo a special processing when building a ParExeGraph).

Parameters
stagePointer to the stage.

Referenced by ParExeProc().

◆ setFetchStage()

void otawa::ParExeProc::setFetchStage ( ParExeStage stage)
inline

Declares a stage as the fetch stage (it will undergo a special processing when building a ParExeGraph).

Parameters
stagePointer to the stage.

Referenced by ParExeProc().

◆ setMemStage()

void otawa::ParExeProc::setMemStage ( ParExeStage stage)
inline

Referenced by ParExeProc().

Member Data Documentation

◆ _branch_stage

ParExeStage* otawa::ParExeProc::_branch_stage
private

◆ _exec_stage

ParExeStage* otawa::ParExeProc::_exec_stage
private

◆ _fetch_stage

ParExeStage* otawa::ParExeProc::_fetch_stage
private

◆ _inorder_stages

List<ParExeStage *> otawa::ParExeProc::_inorder_stages
private

Referenced by ParExeProc().

◆ _mem_stage

ParExeStage* otawa::ParExeProc::_mem_stage
private

◆ _pipeline

ParExePipeline otawa::ParExeProc::_pipeline
private

Referenced by ParExeProc().

◆ _proc

const hard::Processor* otawa::ParExeProc::_proc
private

◆ _queues

Vector<ParExeQueue *> otawa::ParExeProc::_queues
private

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