OTAWA  2.0
Framework to perform machine analysis and compute WCET.
otawa::ipet Namespace Reference

Classes

class  BasicConstraintsBuilder
 
class  BasicObjectFunctionBuilder
 
class  CachePenaltiesObjectFunctionBuilder
 
class  ConflictType
 
class  ConstraintLoader
 
class  EdgeAnnotation
 
class  EdgeInfoConflict
 
class  EdgeInfoOfBB
 
class  FlowFactConflictConstraintBuilder
 
class  FlowFactConstraintBuilder
 
class  FlowFactLoader
 
class  ILPSystemGetter
 
class  ListOfEdgeInfoOfBB
 
class  TimeStat
 
class  VarAssignment
 
class  WCETComputation
 
class  WCETCountRecorder
 

Typedefs

typedef Pair< Block *, int > bbInfo
 
typedef Vector< Block * > BBList
 
typedef Pair< EdgeInfoConflict, LoopInfoEdgeInfoIntoLoop
 
typedef Vector< EdgeInfoIntoLoopEdgeInfoIntoLoopList
 
typedef Pair< Block *, LockPtr< ListOfEndConflict > > endInfo
 
typedef Pair< int, LoopOfConflict::conflictLoopQualifierLoopInfo
 

Functions

p::feature ASSIGNED_VARS_FEATURE ("otawa::ipet::ASSIGNED_VARS_FEATURE", p::make< VarAssignment >())
 This feature asserts that each block and each edge has a variable name asserted. More...
 
p::feature BB_TIME_FEATURE ("otawa::ipet::BB_TIME_FEATURE", new DelayedMaker("otawa::trivial::BlockTime"))
 This feature ensures that the execution time of each basic block has been computed. More...
 
p::feature CACHE_SUPPORT_FEATURE ("otawa::ipet::CACHE_SUPPORT_FEATURE", new Maker< CacheSupport >())
 This feature ensures that analysis for the cache configuration has been performed. More...
 
Identifier< Constraint * > CALLING_CONSTRAINT ("otawa::ipet::CALLING_CONSTRAINT", 0)
 Used to record the constraint of a called CFG. More...
 
void consCurrentContextualPath (const Pair< ContextualPath, ContextualPath > &current, const ContextualPath &path, ContextualPath &currentIncomplet)
 One edge may be present on many conflict and be anotated for several contextual path (partial. More...
 
p::feature CONTROL_CONSTRAINTS_FEATURE ("otawa::ipet::CONTROL_CONSTRAINTS_FEATURE", new Maker< BasicConstraintsBuilder >())
 This feature ensures that control constraints has been added to the current ILP system. More...
 
Identifier< int > COUNT ("otawa::ipet::COUNT", -1, idLabel("execution count"), idDesc("execution count in WCET"), 0)
 This property is put on basic blocks and edge to record the execution count of these object on the WCET path. More...
 
p::feature DATA_CACHE_SUPPORT_FEATURE ("otawa::ipet::DATA_CACHE_SUPPORT_FEATURE", new DelayedMaker("otawa::trivial::NoDCacheTime"))
 This feature ensures that the first-level data cache has been taken in account in the basic block timing. More...
 
bool evalSequence (EdgeInfoConflict &seq, EdgeInfoIntoLoopList &subLoopConflict, EdgeInfoConflict &conflictListEvalTohead)
 Pascal Raymond algo implementation for eval seq, L(body1, b1,c1) , L(body2, b2,c2) …, L(bodyl, bl,cl) More...
 
Identifier< boolEXPLICIT ("otawa::ipet::EXPLICIT", false)
 Identifier of a boolean property requiring that explicit names must be used. More...
 
p::feature FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE ("otawa::ipet::FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE", p::make< FlowFactConflictConstraintBuilder >())
 This feature asserts that constraints tied to the flow fact information has been added to the ILP system. More...
 
p::feature FLOW_FACTS_CONSTRAINTS_FEATURE ("otawa::ipet::FLOW_FACTS_CONSTRAINTS_FEATURE", p::make< FlowFactConstraintBuilder >())
 This feature asserts that constraints tied to the flow fact information has been added to the ILP system. More...
 
p::feature FLOW_FACTS_FEATURE ("otawa::ipet::FLOW_FACTS_FEATURE", new Maker< FlowFactLoader >())
 This feature ensures that flow facts information (at less the loop bounds) has been put on the CFG of the current task. More...
 
Identifier< String * > FORCE_NAME ("otawa::FORCE_NAME", 0)
 Force the ilp variable name of an edge or basic block. More...
 
Vector< Pair< ContextualPath, ContextualPath > > getListOfCompatiblePath (const ContextualPath &path, Vector< Pair< ContextualPath, ContextualPath > > &ListOfPathOfBenginingOfConstraint)
 One edge may be present on many conflict and be anotated for several contextual path (partial. More...
 
BlockgetLoopInnerHeader (Block *source)
 get the loop header of a block if it exist or NULL More...
 
BlockgetSynthCalleCaller (Block *initnext)
 
ilp::SystemgetSystem (WorkSpace *fw, CFG *cfg)
 Get the system tied with the given CFG. More...
 
Identifier< stringILP_PLUGIN_NAME ("otawa::ipet::ILP_PLUGIN_NAME", "default")
 Select the name of the plugin to use as the ILP solver. More...
 
p::feature ILP_SYSTEM_FEATURE ("otawa::ipet::ILP_SYSTEM_FEATURE", new Maker< ILPSystemGetter >())
 This feature assert that an ILP is available for IPET computation. More...
 
p::feature INST_CACHE_SUPPORT_FEATURE ("otawa::ipet::INST_CACHE_SUPPORT_FEATURE", new DelayedMaker("otawa::trivial::AllMissICacheTime"))
 This feature ensurers that the instruction cache has been modeled in the IPET approach. More...
 
p::feature INTERBLOCK_SUPPORT_FEATURE ("otawa::ipet::INTERBLOCK_SUPPORT_FEATURE", new Maker< NoProcessor >())
 This feature ensures that effects of the inter-block have been modelized in the current ILP system. More...
 
bool isSynthCalleCaller (Block *initnext)
 
p::id< boolMAXIMIZE ("otawa::ipet::MAXIMIZE", true)
 This property is used to configure ILP_SYSTEM_FEATURE. More...
 
p::feature OBJECT_FUNCTION_FEATURE ("otawa::ipet::OBJECT_FUNCTION_FEATURE", new Maker< BasicObjectFunctionBuilder >())
 This feature ensures that the object function of the ILP system to solve has been built. More...
 
Identifier< ilp::System * > SYSTEM ("otawa::ipet::SYSTEM", 0)
 Link the curerently ILP system. More...
 
Identifier< ot::timeTIME ("otawa::ipet::TIME", -1, idLabel("time"), idDesc("execution time (in cycles)"), 0)
 This identifier is used for storing the time of execution in cycles (int) of the program area it applies to. More...
 
Identifier< ot::timeTIME_DELTA ("otawa::ipet::TIME_DELTA", 0, idLabel("time delta"), idDesc("time fix for an edge traversal (in cycles)"), 0)
 This property is used to store time delta on edges. More...
 
Identifier< ilp::Var * > VAR ("otawa::ipet::VAR", 0, idLabel("variable"), idDesc("variable in ILP system for IPET resolution"), 0)
 This identifier is used for storing in basic blocks and edges the variables (otawa::ilp::Var *) used in ILP resolution. More...
 
Identifier< ot::timeWCET ("otawa::ipet::WCET", -1, idLabel("WCET"), idDesc("WCET (in cycles)"), 0)
 Identifier of annotation used for storing for storing the WCET value (int) in the CFG of the computed function. More...
 
p::feature WCET_COUNT_RECORDED_FEATURE ("otawa::ipet::WCET_COUNT_RECORDED_FEATURE", new Maker< WCETCountRecorder >())
 This feature asserts that WCET execution count of basic block and of edge have been recorded. More...
 
p::feature WCET_FEATURE ("otawa::ipet::WCET_FEATURE", new Maker< WCETComputation >())
 This feature ensures that the WCET has been computed using IPET approach. More...
 

Variables

p::feature ASSIGNED_VARS_FEATURE
 This feature asserts that each block and each edge has a variable name asserted. More...
 
p::feature BB_TIME_FEATURE
 This feature ensures that the execution time of each basic block has been computed. More...
 
p::feature CACHE_SUPPORT_FEATURE
 This feature ensures that analysis for the cache configuration has been performed. More...
 
Identifier< otawa::ilp::Constraint * > CALLING_CONSTRAINT
 Used to record the constraint of a called CFG. More...
 
p::feature CONTROL_CONSTRAINTS_FEATURE
 This feature ensures that control constraints has been added to the current ILP system. More...
 
Identifier< int > COUNT
 This property is put on basic blocks and edge to record the execution count of these object on the WCET path. More...
 
p::feature DATA_CACHE_SUPPORT_FEATURE
 This feature ensures that the first-level data cache has been taken in account in the basic block timing. More...
 
Identifier< boolEXPLICIT
 Identifier of a boolean property requiring that explicit names must be used. More...
 
p::feature FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE
 This feature asserts that constraints tied to the flow fact information has been added to the ILP system. More...
 
p::feature FLOW_FACTS_CONSTRAINTS_FEATURE
 This feature asserts that constraints tied to the flow fact information has been added to the ILP system. More...
 
p::feature FLOW_FACTS_FEATURE
 This feature ensures that flow facts information (at less the loop bounds) has been put on the CFG of the current task. More...
 
Identifier< String * > FORCE_NAME
 Force the ilp variable name of an edge or basic block. More...
 
Identifier< stringILP_PLUGIN_NAME
 Select the name of the plugin to use as the ILP solver. More...
 
p::feature ILP_SYSTEM_FEATURE
 This feature assert that an ILP is available for IPET computation. More...
 
p::feature INST_CACHE_SUPPORT_FEATURE
 This feature ensurers that the instruction cache has been modeled in the IPET approach. More...
 
p::feature INTERBLOCK_SUPPORT_FEATURE
 This feature ensures that effects of the inter-block have been modelized in the current ILP system. More...
 
p::id< boolMAXIMIZE
 This property is used to configure ILP_SYSTEM_FEATURE. More...
 
p::feature OBJECT_FUNCTION_FEATURE
 This feature ensures that the object function of the ILP system to solve has been built. More...
 
Identifier< ilp::System * > SYSTEM
 Link the curerently ILP system. More...
 
Identifier< ot::timeTIME
 This identifier is used for storing the time of execution in cycles (int) of the program area it applies to. More...
 
Identifier< ot::timeTIME_DELTA
 This property is used to store time delta on edges. More...
 
Identifier< ilp::Var * > VAR
 This identifier is used for storing in basic blocks and edges the variables (otawa::ilp::Var *) used in ILP resolution. More...
 
Identifier< ot::timeWCET
 Identifier of annotation used for storing for storing the WCET value (int) in the CFG of the computed function. More...
 
p::feature WCET_COUNT_RECORDED_FEATURE
 This feature asserts that WCET execution count of basic block and of edge have been recorded. More...
 
p::feature WCET_FEATURE
 This feature ensures that the WCET has been computed using IPET approach. More...
 

Typedef Documentation

◆ bbInfo

typedef Pair<Block *, int> otawa::ipet::bbInfo

◆ BBList

◆ EdgeInfoIntoLoop

◆ EdgeInfoIntoLoopList

◆ endInfo

◆ LoopInfo

Function Documentation

◆ ASSIGNED_VARS_FEATURE()

p::feature otawa::ipet::ASSIGNED_VARS_FEATURE ( "otawa::ipet::ASSIGNED_VARS_FEATURE"  ,
p::make< VarAssignment () 
)

This feature asserts that each block and each edge has a variable name asserted.

Properties

Referenced by otawa::ipet::VarAssignment::cleanup().

◆ BB_TIME_FEATURE()

p::feature otawa::ipet::BB_TIME_FEATURE ( "otawa::ipet::BB_TIME_FEATURE"  ,
new   DelayedMaker"otawa::trivial::BlockTime" 
)

This feature ensures that the execution time of each basic block has been computed.

Properties

◆ CACHE_SUPPORT_FEATURE()

p::feature otawa::ipet::CACHE_SUPPORT_FEATURE ( "otawa::ipet::CACHE_SUPPORT_FEATURE"  ,
new Maker< CacheSupport >  () 
)

This feature ensures that analysis for the cache configuration has been performed.

◆ CALLING_CONSTRAINT()

Identifier<Constraint *> otawa::ipet::CALLING_CONSTRAINT ( "otawa::ipet::CALLING_CONSTRAINT"  ,
 
)

Used to record the constraint of a called CFG.

◆ consCurrentContextualPath()

void otawa::ipet::consCurrentContextualPath ( const Pair< ContextualPath, ContextualPath > &  current,
const ContextualPath path,
ContextualPath currentIncomplet 
)

One edge may be present on many conflict and be anotated for several contextual path (partial.

Parameters
currentone of compatible path
pathcurrnt complet path
currentIncompletcreated partial path from the precedents one

◆ CONTROL_CONSTRAINTS_FEATURE()

p::feature otawa::ipet::CONTROL_CONSTRAINTS_FEATURE ( "otawa::ipet::CONTROL_CONSTRAINTS_FEATURE"  ,
new Maker< BasicConstraintsBuilder () 
)

This feature ensures that control constraints has been added to the current ILP system.

Properties

◆ DATA_CACHE_SUPPORT_FEATURE()

p::feature otawa::ipet::DATA_CACHE_SUPPORT_FEATURE ( "otawa::ipet::DATA_CACHE_SUPPORT_FEATURE"  ,
new   DelayedMaker"otawa::trivial::NoDCacheTime" 
)

This feature ensures that the first-level data cache has been taken in account in the basic block timing.

Default Analysis:

  • otawa::trivial::NoDCacheTime

◆ evalSequence()

◆ FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE()

p::feature otawa::ipet::FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE ( "otawa::ipet::FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE"  ,
p::make< FlowFactConflictConstraintBuilder () 
)

This feature asserts that constraints tied to the flow fact information has been added to the ILP system.

◆ FLOW_FACTS_CONSTRAINTS_FEATURE()

p::feature otawa::ipet::FLOW_FACTS_CONSTRAINTS_FEATURE ( "otawa::ipet::FLOW_FACTS_CONSTRAINTS_FEATURE"  ,
p::make< FlowFactConstraintBuilder () 
)

This feature asserts that constraints tied to the flow fact information has been added to the ILP system.

◆ FLOW_FACTS_FEATURE()

p::feature otawa::ipet::FLOW_FACTS_FEATURE ( "otawa::ipet::FLOW_FACTS_FEATURE"  ,
new Maker< FlowFactLoader () 
)

This feature ensures that flow facts information (at less the loop bounds) has been put on the CFG of the current task.

Properties
  • ipet::MAX_ITERATION
  • ipet::MIN_ITERATION
  • ipet::TOTAL_ITERATION

◆ FORCE_NAME()

Identifier<String* > otawa::ipet::FORCE_NAME ( "otawa::FORCE_NAME"  ,
 
)

Force the ilp variable name of an edge or basic block.

◆ getListOfCompatiblePath()

Vector< Pair<ContextualPath,ContextualPath > > otawa::ipet::getListOfCompatiblePath ( const ContextualPath path,
Vector< Pair< ContextualPath, ContextualPath > > &  ListOfPathOfBenginingOfConstraint 
)

One edge may be present on many conflict and be anotated for several contextual path (partial.

Parameters
pathcurrent path
ListOfPathOfBenginingOfConstraint
Returns
list of compatibles path

◆ getLoopInnerHeader()

Block* otawa::ipet::getLoopInnerHeader ( Block source)

get the loop header of a block if it exist or NULL

Parameters
sourcefirst bb.
Returns
Matching loop header or null if not found.

◆ getSynthCalleCaller()

Block* otawa::ipet::getSynthCalleCaller ( Block initnext)
Parameters
initnexta bb.
Returns
return real return bb

◆ getSystem()

ilp::System* otawa::ipet::getSystem ( WorkSpace fw,
CFG cfg 
)

Get the system tied with the given CFG.

If none exists, create ones.

Parameters
fwCurrent workspace.
cfgCurrent CFG. @preturn CFG ILP system.

◆ ILP_PLUGIN_NAME()

Identifier<string> otawa::ipet::ILP_PLUGIN_NAME ( "otawa::ipet::ILP_PLUGIN_NAME"  ,
"default"   
)

Select the name of the plugin to use as the ILP solver.

Processor Configuration

◆ INST_CACHE_SUPPORT_FEATURE()

p::feature otawa::ipet::INST_CACHE_SUPPORT_FEATURE ( "otawa::ipet::INST_CACHE_SUPPORT_FEATURE"  ,
new   DelayedMaker"otawa::trivial::AllMissICacheTime" 
)

This feature ensurers that the instruction cache has been modeled in the IPET approach.

Default Analysis:

  • otawa::trivial::AllMissICacheTime

◆ isSynthCalleCaller()

bool otawa::ipet::isSynthCalleCaller ( Block initnext)
Parameters
initnexta bb.yyyyyyyy
Returns
true if its caller is synth

◆ OBJECT_FUNCTION_FEATURE()

p::feature otawa::ipet::OBJECT_FUNCTION_FEATURE ( "otawa::ipet::OBJECT_FUNCTION_FEATURE"  ,
new Maker< BasicObjectFunctionBuilder () 
)

This feature ensures that the object function of the ILP system to solve has been built.

◆ WCET_COUNT_RECORDED_FEATURE()

p::feature otawa::ipet::WCET_COUNT_RECORDED_FEATURE ( "otawa::ipet::WCET_COUNT_RECORDED_FEATURE"  ,
new Maker< WCETCountRecorder () 
)

This feature asserts that WCET execution count of basic block and of edge have been recorded.

Properties

◆ WCET_FEATURE()

p::feature otawa::ipet::WCET_FEATURE ( "otawa::ipet::WCET_FEATURE"  ,
new Maker< WCETComputation () 
)

This feature ensures that the WCET has been computed using IPET approach.

Properties

Variable Documentation

◆ ASSIGNED_VARS_FEATURE

p::feature otawa::ipet::ASSIGNED_VARS_FEATURE("otawa::ipet::ASSIGNED_VARS_FEATURE", p::make< VarAssignment >())

◆ BB_TIME_FEATURE

p::feature otawa::ipet::BB_TIME_FEATURE("otawa::ipet::BB_TIME_FEATURE", new DelayedMaker("otawa::trivial::BlockTime"))

This feature ensures that the execution time of each basic block has been computed.

Properties

◆ CACHE_SUPPORT_FEATURE

p::feature otawa::ipet::CACHE_SUPPORT_FEATURE("otawa::ipet::CACHE_SUPPORT_FEATURE", new Maker< CacheSupport >())

This feature ensures that analysis for the cache configuration has been performed.

◆ CALLING_CONSTRAINT

Identifier<Constraint *> otawa::ipet::CALLING_CONSTRAINT("otawa::ipet::CALLING_CONSTRAINT", 0)

Used to record the constraint of a called CFG.

◆ CONTROL_CONSTRAINTS_FEATURE

p::feature otawa::ipet::CONTROL_CONSTRAINTS_FEATURE("otawa::ipet::CONTROL_CONSTRAINTS_FEATURE", new Maker< BasicConstraintsBuilder >())

This feature ensures that control constraints has been added to the current ILP system.

Properties

Referenced by otawa::ipet::BasicConstraintsBuilder::BasicConstraintsBuilder().

◆ DATA_CACHE_SUPPORT_FEATURE

p::feature otawa::ipet::DATA_CACHE_SUPPORT_FEATURE("otawa::ipet::DATA_CACHE_SUPPORT_FEATURE", new DelayedMaker("otawa::trivial::NoDCacheTime"))

This feature ensures that the first-level data cache has been taken in account in the basic block timing.

Default Analysis:

  • otawa::trivial::NoDCacheTime

◆ FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE

p::feature otawa::ipet::FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE("otawa::ipet::FLOW_FACTS_CONFLICT_CONSTRAINTS_FEATURE", p::make< FlowFactConflictConstraintBuilder >())

This feature asserts that constraints tied to the flow fact information has been added to the ILP system.

◆ FLOW_FACTS_CONSTRAINTS_FEATURE

p::feature otawa::ipet::FLOW_FACTS_CONSTRAINTS_FEATURE("otawa::ipet::FLOW_FACTS_CONSTRAINTS_FEATURE", p::make< FlowFactConstraintBuilder >())

This feature asserts that constraints tied to the flow fact information has been added to the ILP system.

◆ FLOW_FACTS_FEATURE

p::feature otawa::ipet::FLOW_FACTS_FEATURE("otawa::ipet::FLOW_FACTS_FEATURE", new Maker< FlowFactLoader >())

This feature ensures that flow facts information (at less the loop bounds) has been put on the CFG of the current task.

Properties
  • ipet::MAX_ITERATION
  • ipet::MIN_ITERATION
  • ipet::TOTAL_ITERATION

◆ FORCE_NAME

Identifier<String* > otawa::ipet::FORCE_NAME("otawa::FORCE_NAME", 0)

Force the ilp variable name of an edge or basic block.

◆ ILP_PLUGIN_NAME

Identifier<string> otawa::ipet::ILP_PLUGIN_NAME("otawa::ipet::ILP_PLUGIN_NAME", "default")

Select the name of the plugin to use as the ILP solver.

Processor Configuration

Referenced by otawa::ipet::ILPSystemGetter::configure().

◆ INST_CACHE_SUPPORT_FEATURE

p::feature otawa::ipet::INST_CACHE_SUPPORT_FEATURE("otawa::ipet::INST_CACHE_SUPPORT_FEATURE", new DelayedMaker("otawa::trivial::AllMissICacheTime"))

This feature ensurers that the instruction cache has been modeled in the IPET approach.

Default Analysis:

  • otawa::trivial::AllMissICacheTime

Referenced by otawa::CAT2OnlyConstraintBuilder::collectStats(), and otawa::EdgeCAT2ConstraintBuilder::EdgeCAT2ConstraintBuilder().

◆ OBJECT_FUNCTION_FEATURE

p::feature otawa::ipet::OBJECT_FUNCTION_FEATURE("otawa::ipet::OBJECT_FUNCTION_FEATURE", new Maker< BasicObjectFunctionBuilder >())

This feature ensures that the object function of the ILP system to solve has been built.

◆ WCET_COUNT_RECORDED_FEATURE

p::feature otawa::ipet::WCET_COUNT_RECORDED_FEATURE("otawa::ipet::WCET_COUNT_RECORDED_FEATURE", new Maker< WCETCountRecorder >())

This feature asserts that WCET execution count of basic block and of edge have been recorded.

Properties

◆ WCET_FEATURE

p::feature otawa::ipet::WCET_FEATURE("otawa::ipet::WCET_FEATURE", new Maker< WCETComputation >())

This feature ensures that the WCET has been computed using IPET approach.

Properties