Updated validation help: Screenshot and text
diff --git a/plugins/org.eclipse.app4mc.validation.help/docu/user_validation.textile b/plugins/org.eclipse.app4mc.validation.help/docu/user_validation.textile
index 790ec2d..4fc8669 100644
--- a/plugins/org.eclipse.app4mc.validation.help/docu/user_validation.textile
+++ b/plugins/org.eclipse.app4mc.validation.help/docu/user_validation.textile
@@ -6,10 +6,12 @@
The AMALTHEA model validation can be triggered by clicking on the "Validate" button of the Amalthea editor.
-All elements of the model are included for validation. In the next window the list of profiles appears allowing the selection of specific validations.
-
!../pictures/validation/profile_selection_dialog.png!
+The dialog shows a list of profiles allowing the selection of specific validations.
+
+The validation is either applied to all elements of the model (default: folder scope) or only to the elements of the current file.
+
If an error is found, it is shown in the Problems view of Eclipse. A simple double click on the error will lead you to the affected elements in the AMALTHEA model. The validation distinguishes between three error types: __errors__, __warnings__ and __info__.
@@ -31,16 +33,16 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.standard.BasicProfile@<br/>
**Basic Validations**
* Validations:
+** AM-Basic-Counter (ERROR - Counter)
+*** The offset value of a counter must not be negative
** AM-Basic-Data-Size (ERROR - DataSize)
*** Some data sizes have to fulfill the condition >0 or >=0
+** AM-Basic-Frequency (ERROR - Frequency)
+*** Some frequencies have to fulfill the condition >0
** AM-Basic-Quantity (ERROR - Quantity)
*** Quantity unit has to be set (_undefined_ is an error)
** AM-Basic-Time-Range (ERROR - Time)
*** Some time ranges has to fulfill the condition >0 or >=0
-** AM-Basic-Frequency (ERROR - Frequency)
-*** Some frequencies have to fulfill the condition >0
-** AM-Basic-Counter (ERROR - Counter)
-*** The offset value of a counter must not be negative
** AM-Basic-CustomProperty-Key (WARNING - IAnnotatable)
*** Custom property keys have to be unique
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.standard.ConstraintsProfile@<br/>
@@ -68,35 +70,39 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.standard.HardwareProfile@<br/>
**Hardware Validations**
* Validations:
-** AM-HW-Port (ERROR - HwPort)
-*** A HwPort can only have one (non internal) HwConnection
-** AM-HW-Definition (ERROR - HwDefinition)
-*** Only one feature of a category can be referred
** AM-HW-AccessPath (ERROR - HwAccessPath)
*** HwAccessPath ranges and memory size must be consistent
*** HwAccessPath elements must be consistent
+** AM-HW-Connection (ERROR - HwConnection)
+*** HwConnections must refer to two HwPorts
+*** HwConnections must be linked to HwPorts of the same Interface
+** AM-HW-Definition (ERROR - HwDefinition)
+*** Only one feature of a category can be referred
+** AM-HW-Port (ERROR - HwPort)
+*** A HwPort can only have one (non internal) HwConnection
** AM-HW-Structure (ERROR - HwStructure)
*** Connections must only refer to contained HwPorts
*** Inner connections always need one Initiator and one Responder HwPort
*** Delegated connections always connect HwPorts of the same type
-** AM-HW-Port-BitWidth (WARNING - HwPort)
-*** Bitwidth should be greater than zero
-** AM-HW-Port-Definition (WARNING - HwPort)
-*** PortType must be set
-*** PortInterface must be set
-** AM-HW-Connection (ERROR - HwConnection)
-*** HwConnections must refer to two HwPorts
-*** HwConnections must be linked to HwPorts of the same Interface
** AM-HW-Module-Definition (WARNING - HwModule)
*** Memory definition must be set
*** ProcessingUnit definition must be set
*** ConnectionHandler definition must be set
*** Cache definition must be set
+** AM-HW-Port-BitWidth (WARNING - HwPort)
+*** Bitwidth should be greater than zero
+** AM-HW-Port-Definition (WARNING - HwPort)
+*** PortType must be set
+*** PortInterface must be set
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.standard.MappingProfile@<br/>
**Mapping Validations**
* Validations:
** AM-Mapping-ISR-Scheduler (WARNING - ISR)
*** An ISR should have an allocation to an interrupt controller
+** AM-Mapping-Scheduler-Allocation-Hierarchy (WARNING - SchedulerAllocation)
+*** A child scheduler should only be responsible for a subset of processing units of its ancestors
+** AM-Mapping-Scheduler-Allocation-Top-Level-Responsibility (WARNING - MappingModel)
+*** A processing unit should have at most one top level task scheduler and one interrupt controller responsible for it
** AM-Mapping-Scheduler-ProcessingUnit (WARNING - Scheduler)
*** A scheduler should be responsible for at least one processing unit
** AM-Mapping-Task-Scheduler (WARNING - Task)
@@ -109,6 +115,8 @@
** AM-SW-DataDependency (ERROR - DataDependency)
*** A data dependency can only be defined for specific types of label accesses, parameters and call arguments
*** A data dependency can only refer to specific types of parameters and call arguments
+** AM-SW-Group (ERROR - Group)
+*** The uninterruptible group must not contain nested groups
h4. APP4MC.sim Validations
@@ -124,68 +132,68 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.sim.SimBasicProfile@<br/>
**Basic Validations (APP4MC.sim)**
* Validations:
+** Sim-Basic-Identifiers (ERROR - IReferable)
+*** All names of IReferable objects must be valid C++ identifier names
+** TA-Basic-ContinuousValueGaussDistribution-mean (ERROR - ContinuousValueGaussDistribution)
+*** Mean must not be less than the lower bound
+*** Mean must not be greater than the upper bound
** TA-Basic-DiscreteValueGaussDistribution-mean (ERROR - DiscreteValueGaussDistribution)
*** Mean must not be less than the lower bound
*** Mean must not be greater than the upper bound
** TA-Basic-TimeGaussDistribution-mean (ERROR - TimeGaussDistribution)
*** Mean must not be less than the lower bound
*** Mean must not be greater than the upper bound
-** TA-Basic-ContinuousValueGaussDistribution-mean (ERROR - ContinuousValueGaussDistribution)
-*** Mean must not be less than the lower bound
-*** Mean must not be greater than the upper bound
-** Sim-Basic-Identifiers (ERROR - IReferable)
-*** All names of IReferable objects must be valid C++ identifier names
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.sim.SimHardwareProfile@<br/>
**Hardware Validations (APP4MC.sim)**
* Validations:
-** Sim-HW-Connection (ERROR - HwConnection)
-*** Either read AND write latency, or datarate, or both must be set
** Inchron-HWModule-MissingClockReference (ERROR - HwModule)
*** HW Module must have 'Frequency Domain' reference
+** Sim-HW-Connection (ERROR - HwConnection)
+*** Either read AND write latency, or datarate, or both must be set
** Sim-HW-MemoryDefinition (INFO - MemoryDefinition)
*** Either access latency or datarate (or both) must be set
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.sim.SimMappingProfile@<br/>
**Mapping Validations (APP4MC.sim)**
* Validations:
-** Sim-Mapping-SchedulerAllocation (ERROR - SchedulerAllocation)
-*** Executing processing unit must be set
** AM-Mapping-ISR-Scheduler (ERROR - ISR)
*** An ISR should have an allocation to an interrupt controller
-** Sim-Mapping-TaskPriorityNegative (ERROR - SchedulingParameters)
-*** Scheduling parameter priority cannot negative
** AM-Mapping-Task-Scheduler (ERROR - Task)
*** A task should have an allocation to a task scheduler
+** Sim-Mapping-SchedulerAllocation (ERROR - SchedulerAllocation)
+*** Executing processing unit must be set
+** Sim-Mapping-TaskPriorityNegative (ERROR - SchedulingParameters)
+*** Scheduling parameter priority cannot negative
** Sim-Mapping-TaskPriorityIsSet (WARNING - TaskAllocation)
*** Task priority must be set in task allocation's scheduling parameters
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.sim.SimSoftwareProfile@<br/>
**Software Validations (APP4MC.sim)**
* Validations:
-** SimSoftwareChannelElements (ERROR - ChannelAccess)
+** Sim-Software-AbstractMemoryElementIsMapped (ERROR - LabelAccess)
+*** Checks if label access type is set
+** Sim-Software-AbstractMemoryElementIsMapped (ERROR - ModeLabelAccess)
+*** Checks if modeLabel access type is valid
+** Sim-Software-AbstractMemoryElementIsMapped (ERROR - Label)
+*** Checks if label is mapped to a memory node
+** Sim-Software-AbstractMemoryElementIsMapped (ERROR - Channel)
+*** Checks if channel is mapped to a Memory
+** Sim-Software-ChannelAccessFeasibility (ERROR - ChannelAccess)
+*** Checks if a channel access can be performed from certain runnable
+** Sim-Software-ChannelElements (ERROR - ChannelAccess)
*** Checks if channel access's property elements is greater 0
-** SimSoftwareAbstractMemoryElementIsMapped (WARNING - ModeLabel)
-*** Checks if modeLabel is mapped to a Memory
+** Sim-Software-LabelAccessFeasibility (ERROR - LabelAccess)
+*** Checks if a label access can be performed from certain runnable
** Sim-Software-Process (ERROR - Process)
*** At least one stimulus must be set
-** SimSoftwareAbstractMemoryElementIsMapped (ERROR - Label)
-*** Checks if label is mapped to a memory node
-** Sim-Software-LabelAccessFeasibility (ERROR - LabelAccess)
-*** Checks if a label access can be performed from certain runnable, as a hosting processing unit must be able to access the label's memory location.
-** Sim-Software-ModeLabelAccessFeasibility (WARNING - ModeLabelAccess)
-*** Checks if a modeLabel access can be performed from certain runnable, as a hosting processing unit must be able to access the modeLabel's memory location.
-** SimSoftwareAbstractMemoryElementIsMapped (ERROR - Channel)
-*** Checks if channel is mapped to a Memory
-** Inchron-SW-Task-MustHaveActivityGraph (WARNING - Task)
-*** Task must have atleast one ActivityGraph
-** Sim-Software-ChannelAccessFeasibility (ERROR - ChannelAccess)
-*** Checks if a channel access can be performed from certain runnable, as a hosting processing unit must be able to access the channel's memory location.
-** TA-Software-ModeConditionDisjunctionAlwaysTrue (WARNING - ModeConditionDisjunction)
** Inchron-SW-Runnable-MustHaveActivityGraph (WARNING - Runnable)
*** Runnable must have at least one ActivityGraph
-** SimSoftwareAbstractMemoryElementIsMapped (ERROR - LabelAccess)
-*** Checks if label access type is set
-** SimSoftwareAbstractMemoryElementIsMapped (ERROR - ModeLabelAccess)
-*** Checks if modeLabel access type is valid
+** Inchron-SW-Task-MustHaveActivityGraph (WARNING - Task)
+*** Task must have atleast one ActivityGraph
+** Sim-Software-AbstractMemoryElementIsMapped (WARNING - ModeLabel)
+*** Checks if modeLabel is mapped to a Memory
+** Sim-Software-ModeLabelAccessFeasibility (WARNING - ModeLabelAccess)
+*** Checks if a modeLabel access can be performed from certain runnable
** TA-Software-ModeConditionConjunctionAlwaysFalse (WARNING - ModeConditionConjunction)
+** TA-Software-ModeConditionDisjunctionAlwaysTrue (WARNING - ModeConditionDisjunction)
h4. Timing Architects Validations
@@ -207,30 +215,30 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.ta.TABasicProfile@<br/>
**Basic Validations (Timing Architects)**
* Validations:
+** TA-Basic-ContinuousValueGaussDistribution-mean (ERROR - ContinuousValueGaussDistribution)
+*** Mean must not be less than the lower bound
+*** Mean must not be greater than the upper bound
** TA-Basic-DiscreteValueGaussDistribution-mean (ERROR - DiscreteValueGaussDistribution)
*** Mean must not be less than the lower bound
*** Mean must not be greater than the upper bound
** TA-Basic-TimeGaussDistribution-mean (ERROR - TimeGaussDistribution)
*** Mean must not be less than the lower bound
*** Mean must not be greater than the upper bound
-** TA-Basic-ContinuousValueGaussDistribution-mean (ERROR - ContinuousValueGaussDistribution)
-*** Mean must not be less than the lower bound
-*** Mean must not be greater than the upper bound
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.ta.TAConstraintsProfile@<br/>
**Constraints Validations (Timing Architects)**
* Validations:
-** TA-Constraints-ECLConstraint (ERROR - EventChainLatencyConstraint)
-*** Maximum must not be smaller than minimum
-** TA-Constraints-RTLimitMustBePositive (ERROR - TimeRequirementLimit)
-*** Response time must be positive
** TA-Constraints-DataAgeTime (ERROR - DataAgeTime)
*** Maximum time must not be smaller than minimum time
-** TA-Constraints-RepetitionConstraint (ERROR - RepetitionConstraint)
-*** Upper bound must not be smaller than lower bound
** TA-Constraints-DelayConstraint (ERROR - DelayConstraint)
*** Upper bound must not be smaller than lower bound
+** TA-Constraints-ECLConstraint (ERROR - EventChainLatencyConstraint)
+*** Maximum must not be smaller than minimum
** TA-Constraints-EDFTaskMustHaveDeadline (ERROR - Task)
*** EDF tasks must have a deadline requirement
+** TA-Constraints-RTLimitMustBePositive (ERROR - TimeRequirementLimit)
+*** Response time must be positive
+** TA-Constraints-RepetitionConstraint (ERROR - RepetitionConstraint)
+*** Upper bound must not be smaller than lower bound
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.ta.TAHardwareProfile@<br/>
**Hardware Validations (Timing Architects)**
* Validations:
@@ -242,11 +250,11 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.ta.TASoftwareProfile@<br/>
**Software Validations (Timing Architects)**
* Validations:
-** TA-Software-ServerCall (ERROR - ServerCall)
-** TA-Software-ModeConditionDisjunctionAlwaysTrue (WARNING - ModeConditionDisjunction)
** TA-Software-RunnableCall (ERROR - RunnableCall)
+** TA-Software-ServerCall (ERROR - ServerCall)
** TA-Stimuli-ArrivalCurveStimulus (ERROR - OsEvent)
** TA-Software-ModeConditionConjunctionAlwaysFalse (WARNING - ModeConditionConjunction)
+** TA-Software-ModeConditionDisjunctionAlwaysTrue (WARNING - ModeConditionDisjunction)
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.ta.TAStimuliProfile@<br/>
**Stimuli Validations (Timing Architects)**
* Validations:
@@ -273,42 +281,42 @@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.inchron.InchronHWProfile@<br/>
**Hardware Validations (INCHRON)**
* Validations:
-** Inchron-HW-PU-PortTypeInitiator (ERROR - ProcessingUnit)
-*** HW ports of processing Unit should be of type initiator
-** Inchron-HWModule-MissingClockReference (ERROR - HwModule)
-*** HW Module must have 'Frequency Domain' reference
-** Inchron-HW-Memory-PortTypeResponder (ERROR - Memory)
-*** HW ports of memory should be of type responder
** AM-HW-Port-BitWidth (ERROR - HwPort)
*** Bitwidth should be greater than zero
+** Inchron-HW-Memory-PortTypeResponder (ERROR - Memory)
+*** HW ports of memory should be of type responder
+** Inchron-HW-PU-PortTypeInitiator (ERROR - ProcessingUnit)
+*** HW ports of processing Unit should be of type initiator
** Inchron-HWModule-InconsistentPortWidths (ERROR - HwModule)
*** HW Module cannot have ports with unequal bitwidth
+** Inchron-HWModule-MissingClockReference (ERROR - HwModule)
+*** HW Module must have 'Frequency Domain' reference
* Profiles:
** @org.eclipse.app4mc.amalthea.validations.standard.HardwareProfile@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.inchron.InchronOsProfile@<br/>
**Operating Systems Validations (INCHRON)**
* Validations:
-** Inchron-Os-UserSpecificSchedulerCheck (ERROR - UserSpecificSchedulingAlgorithm)
-*** User specific task scheduler needs at least one task allocation
-** Inchron-Os-PU-Allocation-MustBeDisjunct (ERROR - OperatingSystem)
+** Inchron-OS-PU-Allocation-MustBeDisjunct (ERROR - OperatingSystem)
*** OS Scheduler to core mapping must be distinct
** Inchron-OS-Scheduler-Allocation-DifferentCPU (ERROR - Scheduler)
*** OS Task scheduler should not be allocated to more than one HwStructure
+** Inchron-OS-UserSpecificSchedulerCheck (ERROR - UserSpecificSchedulingAlgorithm)
+*** User specific task scheduler needs at least one task allocation
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.inchron.InchronSoftwareProfile@<br/>
**Software Validations (INCHRON)**
* Validations:
-** Inchron-SW-Task-MustHaveActivityGraph (ERROR - Task)
-*** Task must have atleast one ActivityGraph
** Inchron-SW-Runnable-MustHaveActivityGraph (ERROR - Runnable)
*** Runnable must have at least one ActivityGraph
-** Inchron-SW-Task-NotAllocated-DifferentSchedulers (ERROR - Task)
-*** Task cannot be scheduled by more than one OS
-** Inchron-SW-Task-EnforcedMigrationCheck (ERROR - Task)
-*** Invalid Enforced Migration of a task to a task Scheduler
** Inchron-SW-Runnable-NotAllocated-DifferentOS (ERROR - Runnable)
*** Runnable cannot be scheduled by more than one OS
** Inchron-SW-RunnableAllocation-Present (ERROR - RunnableAllocation)
*** Runnable allocation is not supported
+** Inchron-SW-Task-EnforcedMigrationCheck (ERROR - Task)
+*** Invalid Enforced Migration of a task to a task Scheduler
+** Inchron-SW-Task-MustHaveActivityGraph (ERROR - Task)
+*** Task must have atleast one ActivityGraph
+** Inchron-SW-Task-NotAllocated-DifferentSchedulers (ERROR - Task)
+*** Task cannot be scheduled by more than one OS
* Profiles:
** @org.eclipse.app4mc.amalthea.validations.standard.SoftwareProfile@
p{padding: 10px; background: #fafafa; border: 1px solid #888; border-radius: 5px}. @org.eclipse.app4mc.amalthea.validations.inchron.InchronStimuliProfile@<br/>
diff --git a/plugins/org.eclipse.app4mc.validation.help/pictures/validation/profile_selection_dialog.png b/plugins/org.eclipse.app4mc.validation.help/pictures/validation/profile_selection_dialog.png
index 193d476..1f1c576 100644
--- a/plugins/org.eclipse.app4mc.validation.help/pictures/validation/profile_selection_dialog.png
+++ b/plugins/org.eclipse.app4mc.validation.help/pictures/validation/profile_selection_dialog.png
Binary files differ