public class PSDFScheduler extends BaseSDFScheduler
1) Because parameter values may change, the solution to the balance equation is computed symbolically. i.e. the repetitions vector is a function of the parameter values.
2) Because the firing vector may change, the schedule determined by this class can only be a quasi-static, or parameterized schedule. Note that parameterized schedules cannot generally be constructed for models with feedback or with unconstrained parameter values.
This class uses a ConstVariableModelAnalysis to determine which scheduling parameters are constants and which may change during execution of the model. Rate parameters that can change are checked to ensure that their change context is not strictly contained by the model being scheduled. If this is the case, then the actor is not locally synchronous, and cannot be statically scheduled. Dynamic parameters with a valid changed context are treated symbolically when computing the repetitions vector.
After computing a schedule, this scheduler determines the external rate of each of the model's external ports. Since the firing vector is only computed symbolically, these rates can also only be computed symbolically. The dependence of these external rates on the rates of ports in the model is declared using a DependenceDeclaration. Higher level directors may use this dependence information to determine the change context of those rate variables and may refuse to schedule the composite actor if those rates imply that this model is not locally synchronous.
This scheduler uses a version of the P-APGAN scheduling algorithm described in [1].
[1] B. Bhattacharya and S. S. Bhattacharyya. Quasi-static scheduling of reconfigurable dataflow graphs for DSP systems. In Proceedings of the International Workshop on Rapid System Prototyping , pages 84-89, Paris, France, June 2000.
Scheduler
,
SampleDelay
,
SDFScheduler
NamedObj.ContainedObjectsIterator
VERBOSE
_DEFAULT_SCHEDULER_NAME
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
Constructor and Description |
---|
PSDFScheduler()
Construct a scheduler with no container(director)
in the default workspace, the name of the scheduler is
"Scheduler".
|
PSDFScheduler(Director container,
java.lang.String name)
Construct a scheduler in the given container with the given name.
|
PSDFScheduler(Workspace workspace)
Construct a scheduler in the given workspace with the name
"Scheduler".
|
Modifier and Type | Method and Description |
---|---|
protected Schedule |
_getSchedule()
Return the parameterized scheduling sequence.
|
void |
declareRateDependency()
Declare the rate dependency on any external ports of the model.
|
java.lang.String |
displayBufferSizes()
Return a string representation of the buffer sizes of the relations
in the model.
|
_declareDependency, _saveBufferSizes, _saveContainerRates, _saveFiringCounts
clone, getSchedule, isValid, setContainer, setValid
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _description, _executeChangeRequests, _exportMoMLContents, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getElementName, getFullName, getModelErrorHandler, getName, getName, getPrototypeList, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateExistence, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
public PSDFScheduler() throws IllegalActionException, NameDuplicationException
IllegalActionException
- If the name has a period in it, or
the director is not compatible with the specified container.NameDuplicationException
- If the container already contains
an entity with the specified name.public PSDFScheduler(Workspace workspace) throws IllegalActionException, NameDuplicationException
workspace
- Object for synchronization and version tracking.IllegalActionException
- If the name has a period in it, or
the director is not compatible with the specified container.NameDuplicationException
- If the container already contains
an entity with the specified name.public PSDFScheduler(Director container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container
- The container.name
- The name of this attribute.IllegalActionException
- If the attribute is not of an
acceptable class for the container, or if the name contains a period.NameDuplicationException
- If the name coincides with
an attribute already in the container.public void declareRateDependency() throws IllegalActionException
declareRateDependency
in class BaseSDFScheduler
IllegalActionException
- If there is a problem setting
the rate dependency on an external port.public java.lang.String displayBufferSizes()
protected Schedule _getSchedule() throws NotSchedulableException, IllegalActionException
_getSchedule
in class Scheduler
NotSchedulableException
- If a parameterized schedule
cannot be derived for the model.IllegalActionException
- If the rate parameters
of the model are not correct, or the computed rates for
external ports are not correct.CompositeEntity.deepEntityList()