Otawa  0.10
otawa::ExeGraph< N > Class Template Reference

An execution graph that expresses precedence constraints on the execution of a sequence of instructions in a pipelined processor. More...

#include <>>

Classes

class  ExeEdge
 
class  ExeNode
 
class  FunctionalUnitIterator
 
class  FunctionalUnitPipelineIterator
 
class  InstIterator
 
class  InstNodeIterator
 
class  PipelineIterator
 
class  Predecessor
 
class  PreorderIterator
 
struct  rename_table_t
 
class  StageNodeIterator
 
class  Successor
 

Public Types

enum  code_part_t {
  BEFORE_PROLOGUE = 0, PROLOGUE = 1, BODY = 2, EPILOGUE = 3,
  CODE_PARTS_NUMBER
}
 
enum  time_bound_t { MIN =0, MAX =1, BOUNDS =2 }
 
enum  time_step_t { READY =0, START =1, FINISH =2, STEPS =3 }
 
typedef enum
otawa::ExeGraph::code_part_t 
code_part_t
 
typedef GenGraph< N, typename
ExeGraph< N >::ExeEdge
Graph
 

Public Member Functions

 ExeGraph ()
 Constructor. More...
 
GenGraph< N, typename ExeGraph
< N >::ExeEdge > * 
graph ()
 
void setEntryNode (N *node)
 Sets the entry node (used for topological graph exploration). More...
 
N * entryNode (void)
 
virtual void build (WorkSpace *fw, Microprocessor< N > *microprocessor, ExeSequence< N > *sequence)
 
elm::String partName (code_part_t part)
 
void setFirstNode (code_part_t part, N *node)
 
void setLastNode (code_part_t part, N *node)
 
N * firstNode (code_part_t part)
 
N * lastNode (code_part_t part)
 

Protected Types

typedef struct
otawa::ExeGraph::rename_table_t 
rename_table_t
 

Protected Attributes

N * _entry_node
 
N * _first_node [CODE_PARTS_NUMBER]
 
N * _last_node [CODE_PARTS_NUMBER]
 
ExeSequence< N > * _sequence
 
Microprocessor< N > * _microprocessor
 
elm::String _part_name [CODE_PARTS_NUMBER]
 
GenGraph< N, ExeEdge_graph
 

Detailed Description

template<class N>
class otawa::ExeGraph< N >

An execution graph that expresses precedence constraints on the execution of a sequence of instructions in a pipelined processor.

See "X. Li, A. Roychoudhury, T. Mitra, Modeling out-of-order processors for WCET analysis, Real-Time Systems, 34(3), 2006" and "J. Barre, C. Landet, C. Rochange, P. Sainrat, Modeling Instruction-Level Parallelism for WCET Evaluation, 12th IEEE Int'l Conf. on Embedded and Real-Time Systems and Applications, August 2006" for an introduction to execution graphs. ExeGraph does not come with a timing computation method. It is instead meant to be derived into classes that include particular solving methods (e.g. LiExeGraph).

Parameters
NType of nodes.

Member Typedef Documentation

template<class N>
typedef enum otawa::ExeGraph::code_part_t otawa::ExeGraph< N >::code_part_t
template<class N>
typedef GenGraph<N,typename ExeGraph<N>::ExeEdge> otawa::ExeGraph< N >::Graph
template<class N>
typedef struct otawa::ExeGraph::rename_table_t otawa::ExeGraph< N >::rename_table_t
protected

Member Enumeration Documentation

template<class N>
enum otawa::ExeGraph::code_part_t
Enumerator
BEFORE_PROLOGUE 
PROLOGUE 
BODY 
EPILOGUE 
CODE_PARTS_NUMBER 
template<class N>
enum otawa::ExeGraph::time_bound_t
Enumerator
MIN 
MAX 
BOUNDS 
template<class N>
enum otawa::ExeGraph::time_step_t
Enumerator
READY 
START 
FINISH 
STEPS 

Constructor & Destructor Documentation

template<class N>
otawa::ExeGraph< N >::ExeGraph ( void  )
inline

Constructor.

Member Function Documentation

template<class N>
N * otawa::ExeGraph< N >::entryNode ( void  )
inline
Returns
The entry node.
template<class N>
N * otawa::ExeGraph< N >::firstNode ( code_part_t  part)
inline
Parameters
partThe code part.
Returns
The first node of the specified code part.
template<class N>
GenGraph< N, typename ExeGraph< N >::ExeEdge > * otawa::ExeGraph< N >::graph ( void  )
inline
Returns
The graph.
template<class N>
N * otawa::ExeGraph< N >::lastNode ( code_part_t  part)
inline
Parameters
partThe code part.
Returns
The last node of the specified code part.
template<class N>
elm::String otawa::ExeGraph< N >::partName ( code_part_t  part)
inline
Returns
The name of the code part (BEFORE_PROLOGUE, PROLOGUE, BODY or EPILOGUE).
template<class N>
void otawa::ExeGraph< N >::setEntryNode ( N *  node)
inline

Sets the entry node (used for topological graph exploration).

Parameters
nodeThe entry node.
template<class N>
void otawa::ExeGraph< N >::setFirstNode ( code_part_t  part,
N *  node 
)
inline
Parameters
partThe code part.
nodeThe first node of this code part. Sets the first node of the specified code part.
template<class N>
void otawa::ExeGraph< N >::setLastNode ( code_part_t  part,
N *  node 
)
inline
Parameters
partThe code part.
nodeThe last node of this code part. Sets the last node of the specified code part.

Member Data Documentation

template<class N>
GenGraph<N, ExeEdge> otawa::ExeGraph< N >::_graph
protected
template<class N>
Microprocessor<N>* otawa::ExeGraph< N >::_microprocessor
protected
template<class N>
ExeSequence<N>* otawa::ExeGraph< N >::_sequence
protected

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