public class MutExNonPipelinedScheduling extends MutualExclusionSolver implements LatProcConstraints, LatProcBuffConstraints
Modifier and Type | Class and Description |
---|---|
private class |
MutExNonPipelinedScheduling.LeftEdgeNonPipelined
Left-edge scheduling for non-pipelined problem.
|
MutualExclusionSolver.LeftEdge
Z3Solver.SatResult
bufferAnalysis, bufferAnalysisWithFunctions, graph, graphSymmetry, hsdf, lastActorList, latencyDecl, leftEdgeAlgorithm, mutualExclusionGraphAnalysis, overlappingActorList, overlappingActorWithGraphSymList, processorSymmetry, solutions, startActorList, totalBufDecl, totalProcDecl
contextStatements, pushedContext, statementCountAfterPush, z3Solver
Constructor and Description |
---|
MutExNonPipelinedScheduling(Graph inputGraph)
Build mutual exclusion solver object
|
Modifier and Type | Method and Description |
---|---|
private void |
assertBufferLinearNonPipelined(java.lang.String srcActor,
java.lang.String dstActor,
int initialTokens,
int srcRepCount,
int dstRepCount,
int prodRate,
int consRate)
Generate calculation for buffer size at execution of a producer instance.
|
private void |
assertIndexOrdering(java.lang.String srcActor,
java.lang.String dstActor,
java.lang.String idxName,
int srcRepCount,
int dstRepCount)
The index of producer and consumers of the channel depend on the order of start times.
|
private void |
assertInitialTokens(java.lang.String srcActor,
java.lang.String dstActor,
int initialTokens)
Assert constraint for initial tokens of the channel.
|
void |
assertNonPipelineConstraints()
Generate constraints for solving non-pipelined scheduling problem.
|
private void |
assertTotalBuffer()
Total buffer used in the schedule is sum of all the buffers.
|
void |
generateBufferCalculation()
Generate all the buffer calculations
|
int |
getLatency(java.util.Map<java.lang.String,java.lang.String> model)
Get the latency of the application graph calculated by the solver and returned in the model.
|
void |
modelToGantt(java.util.Map<java.lang.String,java.lang.String> model,
java.lang.String outputFileName)
Generate a Gantt chart from a model
|
private void |
nonLazyConstraint()
Non-lazy scheduling constraints.
|
private void |
testProcSymConstraint()
Processor optimal allocation of tasks.
|
allProcessorUtilisedConstraints, assertBuffer, assertBufferBounds, assertBufferBoundsLinear, assertIndexLimits, assertMaxBuffer, assertMaxBufferLinear, assertPipelineConstraints, assertStartTimeBounds, assertUniqueIndex, bufferAtId, buffId, buffId, buildOverlappingActorList, consRateId, cpuId, cpuId, durationId, generateActorPrecedences, generateActorTimeDefinitions, generateBufferAnalysisDefinitions, generateBufferConstraint, generateCpuBounds, generateCpuDefinitions, generateLatencyCalculation, generateLatencyConstraint, generateMutualExclusion, generatePeriodConstraint, generateProcessorConstraint, generateProcessorSymmetryDefinitions, getBufDeclId, getLastActors, getLatencyDeclId, getProcDeclId, getProcessors, getStartActors, getTotalBufferSize, graphSymmetryLexicographic, idxId, maxBufferId, maxCpuId, maxCpuId, minLatencyBound, processorOverlapSymmetryConstraints, processorSymmetryConstraints, procUtilId, prodRateId, resetSolver, setRandomSeed, tasksEndedBeforeId, tasksStartedBeforeId, xId, xId, yId, yId
addVariableDeclaration, checkSat, declareFunction, generateAssertion, generateSatCode, getModel, getStatistics, popContext, printContext, pushContext, setTacTicSolver
check, getModel, getVersion, setRandomSeed
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
generateLatencyConstraint
generateProcessorConstraint, getProcessors
generateBufferConstraint, getTotalBufferSize
checkSat, getModel, popContext, pushContext
public MutExNonPipelinedScheduling(Graph inputGraph)
inputGraph
- application graph SDF graphpublic void generateBufferCalculation()
private void assertIndexOrdering(java.lang.String srcActor, java.lang.String dstActor, java.lang.String idxName, int srcRepCount, int dstRepCount)
srcActor
- source actor of the channeldstActor
- sink actor of the channelidxName
- name of the indexsrcRepCount
- repetition count of source actordstRepCount
- repetition count of sink actorprivate void assertInitialTokens(java.lang.String srcActor, java.lang.String dstActor, int initialTokens)
srcActor
- source actor of the channeldstActor
- sink actor of the channelinitialTokens
- number of initial tokensprivate void assertTotalBuffer()
private void assertBufferLinearNonPipelined(java.lang.String srcActor, java.lang.String dstActor, int initialTokens, int srcRepCount, int dstRepCount, int prodRate, int consRate)
srcActor
- source actordstActor
- sink actorinitialTokens
- number of initial tokenssrcRepCount
- source repetition countdstRepCount
- destination repetition countprodRate
- production rate on the channelconsRate
- consumption rate on the channelprivate void nonLazyConstraint()
private void testProcSymConstraint()
public void assertNonPipelineConstraints()
MutualExclusionSolver
assertNonPipelineConstraints
in class MutualExclusionSolver
public int getLatency(java.util.Map<java.lang.String,java.lang.String> model)
LatencyConstraints
getLatency
in interface LatencyConstraints
getLatency
in class MutualExclusionSolver
model
- model returned by the Solver on a SAT result.public void modelToGantt(java.util.Map<java.lang.String,java.lang.String> model, java.lang.String outputFileName)
model
- model generated from the SMT solveroutputFileName
- output file name