public class ClusterMutExclPipelined extends Z3Solver implements LatencyConstraints, PeriodConstraints
Z3Solver.SatResult
Modifier and Type | Field and Description |
---|---|
boolean |
bufferAnalysis |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
bufferDecl |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
cpuDecl |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
durationDecl |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
endTimeDecl |
private Graph |
graph |
boolean |
graphSymmetry |
private com.microsoft.z3.IntExpr |
latencyDecl |
private java.util.HashSet<Actor> |
multiClusterActors |
private Graph |
partitionAwareGraph |
private Graph |
partitionAwareHsdf |
private Solutions |
partitionGraphSolutions |
private com.microsoft.z3.IntExpr |
periodDecl |
private Platform |
platform |
boolean |
processorSymmetry |
private SchedulingConstraints |
schedulingConstraints |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
startTimeDecl |
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> |
symmetryDecl |
boolean |
useMaxBuffer |
contextStatements, pushedContext, statementCountAfterPush, z3Solver
Constructor and Description |
---|
ClusterMutExclPipelined(Graph graph,
Graph hsdf,
Solutions solutions,
Graph partitionAwareGraph,
Graph partitionAwareHsdf,
Solutions partitionGraphSolutions,
Platform platform,
SchedulingConstraints schedulingConstraints) |
Modifier and Type | Method and Description |
---|---|
private void |
actorPrecedences() |
private void |
assertActorDuration() |
private void |
assertCommunicationMutualExclusion(java.util.List<Actor> actrList) |
private void |
assertDataFlowMutualExclusion(java.util.List<Actor> actrList) |
private void |
assertDmaTaskProcBounds() |
private void |
assertEndTime() |
private void |
assertMinPeriod() |
private void |
assertMutualExclusion() |
private void |
assertNonOverlapPeriodConstraint() |
private void |
assertNonOverlapPeriodConstraintCommunication(java.util.List<Actor> actrList) |
private void |
assertNonOverlapPeriodConstraintDataflow(java.util.List<Actor> actrList) |
void |
assertPipelineConstraints() |
private void |
assertStartTimeBounds() |
void |
assertTaskCpuBounds() |
private java.util.HashMap<java.lang.Integer,java.util.List<java.lang.Integer>> |
calculateActorPrecedences(Channel chnnl) |
private void |
calculateMulticlusterActorChannels() |
private void |
clusterDmaStartTimePrecedences() |
private com.microsoft.z3.IntExpr |
cpuId(java.lang.String name,
int index) |
private void |
defineActorDuration() |
private void |
defineEndTimes() |
private void |
defineStartTimes() |
private void |
dmaSymInCluster(java.util.List<java.lang.String> dmaActorList,
int startDmaIndex) |
private com.microsoft.z3.IntExpr |
durationId(java.lang.String name) |
private void |
generateActorTimeDefinitions() |
private void |
generateCpuDefinitions() |
private void |
generateLatencyCalculation() |
void |
generateLatencyConstraint(int latency)
Set the latency constraint for exploration query.
|
void |
generatePeriodConstraint(int periodConstraint)
Set the period constraint for exploration query.
|
private void |
generateProcessorSymmetryDefinitions() |
private Channel |
getLastDmaPort(Actor actr) |
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.
|
com.microsoft.z3.IntExpr |
getLatencyDeclId() |
private Actor |
getpartitionAwareGraphActor(Actor actr) |
int |
getPeriod(java.util.Map<java.lang.String,java.lang.String> model)
Get the period value calculated by the solver on a SAT result.
|
com.microsoft.z3.IntExpr |
getPeriodDeclId() |
private java.util.List<Channel> |
getSortedDmaPortList(Actor actr) |
private java.util.List<Channel.Link> |
getSortedPortList(Actor actr) |
private void |
graphSymmetryLexicographic() |
private boolean |
hasActorDmaOutput(Actor actr) |
private com.microsoft.z3.IntExpr |
maxCpuId(java.lang.String name,
int index) |
private void |
minLatencyBound() |
void |
modelToGantt(java.util.Map<java.lang.String,java.lang.String> model,
java.lang.String outputFileName) |
DesignFlowSolution.Schedule |
modelToSchedule(java.util.Map<java.lang.String,java.lang.String> model,
DesignFlowSolution designSolution) |
private void |
processorSymmetryConstraints() |
private void |
procSymInCluster(java.util.HashSet<java.lang.String> actrAllocated,
int startProcIndex) |
void |
resetSolver()
Reset the Z3 Solver.
|
private com.microsoft.z3.IntExpr |
xId(java.lang.String name,
int index) |
private com.microsoft.z3.IntExpr |
yDotId(java.lang.String name) |
private com.microsoft.z3.IntExpr |
yDotId(java.lang.String name,
int index) |
private com.microsoft.z3.IntExpr |
yId(java.lang.String name) |
private com.microsoft.z3.IntExpr |
yId(java.lang.String name,
int index) |
private void |
zeroStartTimeActor() |
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
checkSat, getModel, popContext, pushContext
private Graph graph
private Graph partitionAwareGraph
private Graph partitionAwareHsdf
private Solutions partitionGraphSolutions
private Platform platform
private SchedulingConstraints schedulingConstraints
private com.microsoft.z3.IntExpr latencyDecl
private com.microsoft.z3.IntExpr periodDecl
public boolean graphSymmetry
public boolean processorSymmetry
public boolean bufferAnalysis
public boolean useMaxBuffer
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> startTimeDecl
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> endTimeDecl
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> durationDecl
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> cpuDecl
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> bufferDecl
private java.util.Map<java.lang.String,com.microsoft.z3.IntExpr> symmetryDecl
private java.util.HashSet<Actor> multiClusterActors
private void calculateMulticlusterActorChannels()
public com.microsoft.z3.IntExpr getPeriodDeclId()
public com.microsoft.z3.IntExpr getLatencyDeclId()
private com.microsoft.z3.IntExpr xId(java.lang.String name, int index)
private com.microsoft.z3.IntExpr yId(java.lang.String name, int index)
private com.microsoft.z3.IntExpr yId(java.lang.String name)
private com.microsoft.z3.IntExpr yDotId(java.lang.String name)
private com.microsoft.z3.IntExpr yDotId(java.lang.String name, int index)
private com.microsoft.z3.IntExpr durationId(java.lang.String name)
private com.microsoft.z3.IntExpr cpuId(java.lang.String name, int index)
private com.microsoft.z3.IntExpr maxCpuId(java.lang.String name, int index)
private void defineStartTimes()
private void defineActorDuration()
private void defineEndTimes()
private void assertActorDuration()
private void assertEndTime()
private void generateCpuDefinitions()
private void generateActorTimeDefinitions()
private void zeroStartTimeActor()
private void assertStartTimeBounds()
public void assertTaskCpuBounds()
private java.util.List<Channel.Link> getSortedPortList(Actor actr)
private boolean hasActorDmaOutput(Actor actr)
private void assertDataFlowMutualExclusion(java.util.List<Actor> actrList)
private void assertCommunicationMutualExclusion(java.util.List<Actor> actrList)
private void assertMutualExclusion()
private java.util.HashMap<java.lang.Integer,java.util.List<java.lang.Integer>> calculateActorPrecedences(Channel chnnl)
private void generateLatencyCalculation()
private void actorPrecedences()
private void minLatencyBound()
private void assertDmaTaskProcBounds()
private void graphSymmetryLexicographic()
public DesignFlowSolution.Schedule modelToSchedule(java.util.Map<java.lang.String,java.lang.String> model, DesignFlowSolution designSolution)
private void generateProcessorSymmetryDefinitions()
private void procSymInCluster(java.util.HashSet<java.lang.String> actrAllocated, int startProcIndex)
private void dmaSymInCluster(java.util.List<java.lang.String> dmaActorList, int startDmaIndex)
private void processorSymmetryConstraints()
private void clusterDmaStartTimePrecedences()
private void assertMinPeriod()
private void assertNonOverlapPeriodConstraint()
private void assertNonOverlapPeriodConstraintDataflow(java.util.List<Actor> actrList)
private void assertNonOverlapPeriodConstraintCommunication(java.util.List<Actor> actrList)
public void assertPipelineConstraints()
public void modelToGantt(java.util.Map<java.lang.String,java.lang.String> model, java.lang.String outputFileName)
public int getLatency(java.util.Map<java.lang.String,java.lang.String> model)
LatencyConstraints
getLatency
in interface LatencyConstraints
model
- model returned by the Solver on a SAT result.public void generateLatencyConstraint(int latency)
LatencyConstraints
generateLatencyConstraint
in interface LatencyConstraints
latency
- upper bound on the latency value for the exploration.public void resetSolver()
Z3Solver
resetSolver
in class Z3Solver
public int getPeriod(java.util.Map<java.lang.String,java.lang.String> model)
PeriodConstraints
getPeriod
in interface PeriodConstraints
model
- model returned by the Solver on a SAT result.public void generatePeriodConstraint(int periodConstraint)
PeriodConstraints
generatePeriodConstraint
in interface PeriodConstraints
periodConstraint
- period constraint for an exploration query.