edu.uci.eecs.doc.clepsydra.ipet
Class IPETAnalysisStrategy

java.lang.Object
  extended by edu.uci.eecs.doc.clepsydra.ipet.IPETAnalysisStrategy
All Implemented Interfaces:
AnalysisStrategy

public class IPETAnalysisStrategy
extends Object
implements AnalysisStrategy

This WCET analysis strategy formulates the analysis as an integer linear programming (ILP) problem and uses a standard ILP solver to compute the solution. For more details of how this done, see WCET Analysis for a Java Processor by Martin Schoeberl and Rasmus Pedersen.

Author:
Trevor Harmon

Constructor Summary
IPETAnalysisStrategy(ILPSolver solver, InstructionTimingStrategy instructionTimings, LoopBoundStrategy loopBounds, MethodCacheStrategy methodCache)
          Creates a new IPETAnalysisStrategy object.
IPETAnalysisStrategy(ILPSolver solver, InstructionTimingStrategy instructionTimings, LoopBoundStrategy loopBounds, MethodCacheStrategy methodCache, File outputDirectory)
          Creates a new IPETAnalysisStrategy object.
 
Method Summary
 int getWCET(Tree tree, Graph graph)
          Computes an upper bound on the WCET of the given method.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IPETAnalysisStrategy

public IPETAnalysisStrategy(ILPSolver solver,
                            InstructionTimingStrategy instructionTimings,
                            LoopBoundStrategy loopBounds,
                            MethodCacheStrategy methodCache,
                            File outputDirectory)
Creates a new IPETAnalysisStrategy object.

Parameters:
solver - the ILP solver to use to compute the solution
instructionTimings - a model of the temporal properties of the target CPU
loopBounds - a strategy for computing the upper bound on loops
methodCache - a strategy for modeling the method cache
outputDirectory - if non-null, the ILP model data will be saved to a file in this directory

IPETAnalysisStrategy

public IPETAnalysisStrategy(ILPSolver solver,
                            InstructionTimingStrategy instructionTimings,
                            LoopBoundStrategy loopBounds,
                            MethodCacheStrategy methodCache)
Creates a new IPETAnalysisStrategy object.

Parameters:
solver - the ILP solver to use to compute the solution
instructionTimings - a model of the temporal properties of the target CPU
loopBounds - a strategy for computing the upper bound on loops
methodCache - a strategy for modeling the method cache
Method Detail

getWCET

public int getWCET(Tree tree,
                   Graph graph)
            throws UnknownTimingException,
                   UnknownLoopBoundException
Computes an upper bound on the WCET of the given method.

Specified by:
getWCET in interface AnalysisStrategy
Parameters:
tree - this parameter is ignored
graph - the control flow graph of the method
Returns:
the WCET in CPU cycles
Throws:
UnknownTimingException - if the method contains an instruction whose timing is unknown
UnknownLoopBoundException - if the method contains a loop whose upper bound cannot be determined