Based on the changes in AMALTHEA metamodel across various releases, below description contains the differences in detail which are considered for model migration:
Below are the changes in the metamodel from ITEA 1.1.0 version to ITEA 1.1.1
| AMALTHEA Namespace (version ITEA 1.0.3) | AMALTHEA Namespace (verison ITEA 1.1.0) |
| http://www.amalthea.itea2.org/model/1.1.0/sw | http://www.amalthea.itea2.org/model/1.2.0/sw |
| http://www.amalthea.itea2.org/model/1.1.0/stimuli | http://www.amalthea.itea2.org/model/1.2.0/stimuli |
| http://www.amalthea.itea2.org/model/1.1.0/propertyconstraints | http://www.amalthea.itea2.org/model/1.2.0/propertyconstraints |
| http://www.amalthea.itea2.org/model/1.1.0/os | http://www.amalthea.itea2.org/model/1.2.0/os |
| http://www.amalthea.itea2.org/model/1.1.0/mapping | http://www.amalthea.itea2.org/model/1.2.0/mapping |
| http://www.amalthea.itea2.org/model/1.1.0/hw | http://www.amalthea.itea2.org/model/1.2.0/hw |
| http://www.amalthea.itea2.org/model/1.1.0/events | http://www.amalthea.itea2.org/model/1.2.0/events |
| http://www.amalthea.itea2.org/model/1.1.0/constraints | http://www.amalthea.itea2.org/model/1.2.0/constraints |
| http://www.amalthea.itea2.org/model/1.1.0/config | http://www.amalthea.itea2.org/model/1.2.0/config |
| http://www.amalthea.itea2.org/model/1.1.0/common | http://www.amalthea.itea2.org/model/1.2.0/common |
| http://www.amalthea.itea2.org/model/1.1.0/central | http://www.amalthea.itea2.org/model/1.2.0/central |
| http://amalthea.itea2.org/model/1.1.0/components | http://amalthea.itea2.org/model/1.2.0/components |
| Class name in 1.0.3 | Changed Class name in 1.1.0 | Amalthea sub-model |
| DeadlineMonotinic | DeadlineMonotonic | OS |
| Variable Name (version ITEA 1.0.3) | Class containing Variable | AMALTHEA sub model | how migration is done from 1.0.3 models to 1.1.0 |
| scheduler | OSModel | OS model | “scheduler” elements contained inside OSModel element are converted into TaskScheduler elements in the following way:
|
| read, write | LabelAccessStatistic | Software model | “read” elements contained inside LabelAccessStatistic element are removed and “write” elements are replaced by tag name “value” based on the following criteria :
“write” elements contained inside LabelAccessStatistic element are removed and “read” elements are replaced by tag name “value” based on the following criteria :
|
| Variable Name (version ITEA 1.0.3) | Changed Variable Name (version ITEA 1.1.0) | Class containing Variable | AMALTHEA sub model | how migration is done from 1.0.3 models to 1.1.0 |
| readCacheMisses | cacheMisses | LabelAccessStatistic | Software model | “readCacheMisses” is changed to “cacheMisses” in all the places where LabelAccessStatistic definition is present |
| executableAllocation | processAllocation, runnableAllocation | MappingModel | Mapping model | Based on the content of the “executableAllocation”, accordingly either “processAllocation” or “runnableAllocation” elements are created and the corresponding data of “exeuctableAllocation” is mapped.
Below are the criterions :
|
Below are the changes in the metamodel from ITEA 1.1.0 version to ITEA 1.1.1
| AMALTHEA Namespace (version ITEA 1.1.0) | AMALTHEA Namespace (version ITEA 1.1.1) |
| http://www.amalthea.itea2.org/model/1.2.0/sw | http://www.amalthea.itea2.org/model/1.3.0/sw |
| http://www.amalthea.itea2.org/model/1.2.0/stimuli | http://www.amalthea.itea2.org/model/1.3.0/stimuli |
| http://www.amalthea.itea2.org/model/1.2.0/propertyconstraints | http://www.amalthea.itea2.org/model/1.3.0/propertyconstraints |
| http://www.amalthea.itea2.org/model/1.2.0/os | http://www.amalthea.itea2.org/model/1.3.0/os |
| http://www.amalthea.itea2.org/model/1.2.0/mapping | http://www.amalthea.itea2.org/model/1.3.0/mapping |
| http://www.amalthea.itea2.org/model/1.2.0/hw | http://www.amalthea.itea2.org/model/1.3.0/hw |
| http://www.amalthea.itea2.org/model/1.2.0/events | http://www.amalthea.itea2.org/model/1.3.0/events |
| http://www.amalthea.itea2.org/model/1.2.0/constraints | http://www.amalthea.itea2.org/model/1.3.0/constraints |
| http://www.amalthea.itea2.org/model/1.2.0/config | http://www.amalthea.itea2.org/model/1.3.0/config |
| http://www.amalthea.itea2.org/model/1.2.0/common | http://www.amalthea.itea2.org/model/1.3.0/common |
| http://www.amalthea.itea2.org/model/1.2.0/central | http://www.amalthea.itea2.org/model/1.3.0/central |
| http://amalthea.itea2.org/model/1.2.0/components | http://amalthea.itea2.org/model/1.3.0/components |
| Variable Name (version ITEA 1.1.0) | Changed Variable Name (version ITEA 1.1.1) | Class containing Variable | AMALTHEA sub model | how migration is done from 1.1.0 models to 1.1.1 |
| tagName | name | Tag | Software model, Components model | attribute “tagName” is changed to “name” in all the places where Tag definition is present |
| elements | components, systems | ComponentsModel | Components model |
|
| elements | connectors, componentInstances | System | Components model |
|
| maximumCyle | maximumCycle | DataAgeCycle | Constraints model | attribute “maximumCyle” is changed to “maximumCycle” in all the places where DataAgeCycle definition is present |
| setLabelsList | setModeValueList | Stimulus | Stimuli model | XML node name is set as "setModeValueList" |
| enablingLabelsList | enablingModeValueList | Stimulus | Stimuli model | XML node name is set as "enablingModeValueList" |
| disablingLabelsList | disablingModeValueList | Stimulus | Stimuli model | XML node name is set as "disablingModeValueList" |
| Variable Name (version ITEA 1.1.0) | Class containing Variable | AMALTHEA sub model | how migration is done from 1.1.0 models to 1.1.1 |
| deadline | Task, ISR, ProcessPrototype | Software model | “deadline” specified at the Process, ProcessPrototype is converted into a constraint element in the following way:
|
| initialValue | Label | Software model | Initial value attribute is removed from all the Label objects |
| Enum Name | Default value (version ITEA 1.1.0) | Default value (version ITEA 1.1.1) | AMALTHEA sub model | Behaviour model migration to migrated 1.1.0 models to 1.1.1 |
| TimeUnit | ps | _undefined_ | Common model | Attribute “unit” with value as “ps” is created (when it is missing in the input model) -> for all the XMI tags where TimeUnit defintion should be present |
| InterfaceKind | PROVIDES | _undefined_ | Components model | Attribute “kind” with value as “PROVIDES” is created (when it is missing in the input model) -> for all the XMI tags where InterfaceKind defintion should be present |
| RunnableOrderType | successor | _undefined_ | Constraints model | Attribute “orderType” with value as “successor” is created (when it is missing in the input model)-> for all the XMI tags where RunnableOrderType defintion should be present |
| RunnableGroupingType | allOfThem | _undefined_ | Constraints model | Attribute “groupingType” with value as “allOfThem” is created (when it is missing in the input model)-> for all the XMI tags where RunnableGroupingType defintion should be present |
| QType | DYNAMIC | _undefined_ | Hardware model | Attribute “type” with value as “DYNAMIC” is created (when it is missing in the input model)-> for all the XMI tags where QType defintion should be present |
| MemoryType | RAM | _undefined_ | Hardware model | Attribute “type” with value as “RAM” is created (when it is missing in the input model)-> for all the XMI tags where MemoryType defintion should be present |
| BusType | CAN | _undefined_ | Hardware model | Attribute “busType” with value as “CAN” is created (when it is missing in the input model)-> for all the XMI tags where BusType defintion should be present |
| RWType | R | _undefined_ | Hardware model | Attribute “direction” with value as “R” is created (when it is missing in the input model)-> for all the XMI tags where RWType defintion should be present |
| SchedType | RROBIN | _undefined_ | Hardware model | Attribute “schedPolicy” with value as “RROBIN” is created (when it is missing in the input model)-> for all the XMI tags where SchedType defintion should be present |
| PinType | ANALOG | _undefined_ | Hardware model | Attribute “type” with value as “ANALOG” is created (when it is missing in the input model)-> for all the XMI tags where PinType defintion should be present |
| FeatureType | floatingPointUnit | _undefined_ | Hardware model | Attribute “value” with value as “floatingPointUnit” is created (when it is missing in the input model)-> for all the XMI tags where FeatureType defintion should be present |
| MemoryAddressMappingType | none | _undefined_ | Mapping model | Attribute “addressMappingType” with value as “none” is created (when it is missing in the input model)-> for all the XMI tags where MemoryAddressMappingType defintion should be present |
| ComparatorType | equal | _undefined_ | Property Constraints model | Attribute “comparator” with value as “equal” is created (when it is missing in the input model)-> for all the XMI tags where ComparatorType defintion should be present |
| ConjunctionType | and | _undefined_ | Property Constraints model | Attribute “conjunction” with value as “and” is created (when it is missing in the input model)-> for all the XMI tags where ConjunctionType defintion should be present |
| WaitEventType | AND | _undefined_ | Software model | Attribute “maskType” with value as “AND” is created (when it is missing in the input model)-> for all the XMI tags where WaitEventType defintion should be present |
| WaitingBehaviour | unspecified | _undefined_ | Software model | In sw:WaitEvent/ sw:SynchronousServerCall / sw:SynchronousServerCall -> if attribute “waitingBehaviour” is with value as “unspecified”, then attribute “waitingBehaviour” and its value are removed in the XML, so that the default value for “waitingBehaviour” as per 1.1.1 : "_ unspecified _" is consisdered |
| AccessPrecedenceType | ignoreWR | _undefined_ | Software model | Attribute “orderType” with value as “ignoreWR” is created (when it is missing in the input model)-> for all the XMI tags where AccessPrecedenceType defintion should be present |
| OrderType | order | _undefined_ | Software model | Attribute “orderType” with value as “order” is created (when it is missing in the input model)-> for all the XMI tags where OrderType defintion should be present |
| LabelAccessEnum | read | _undefined_ | Software model | Attribute “access” with value as “read” is created (when it is missing in the input model)-> for all the XMI tags where LabelAccessEnum defintion should be present |
| SemaphoreAccessEnum | request | _undefined_ | Software model | Attribute “accessEnum” with value as “request” is created (when it is missing in the input model)-> for all the XMI tags where SemaphoreAccessEnum defintion should be present |
| Preemption | cooperative | _undefined_ | Software model | Attribute “preemption” with value as “cooperative” is created (when it is missing in the input model)-> for all the XMI tags where Preemption defintion should be present |
| Enum/Class Name | Namespace (version ITEA 1.1.0) | Namespace (version ITEA 1.1.1) | Behaviour model migration to migrated 1.1.0 models to 1.1.1 |
| SchedulingSWUnit | sw | os | Attribute “xsi:type” of XML node of TaskScheduler/InterruptController is updated to "os:SchedulingSWUnit" |
Below are the changes in the metamodel from ITEA 1.1.1 version to APP4MC 0.7.0
<ports xsi:type="am:ComplexPort" name="Mem_1_port" bitWidth="16" direction="R" writeCycles="10" readCycles="10"/>
<am:HWModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:am="http://app4mc.eclipse.org/amalthea/0.7.0"/>
<Element Name>?type=<NameSpace prefix>.<ElementClassName>
<Element Name>?type=<ElementClassName>
| Class name from 1.1.1 | Changed Class name in 0.7.0 |
| OSEvent | OsEvent |
| MemType | MemoryType |
| System | HwSystem |
| Component | HwComponent |
| Port | HwPort |
| AbstractionType | AbstractionTypeDescription |
| MemoryType | MemoryTypeEnum |
| OSInstructions | OsInstructions |
| Periodic | PeriodicActivation |
| Variable Name (version ITEA 1.1.1) | Changed Variable Name (version APP4MC 0.7.0) | Class containing Variable | AMALTHEA sub model |
| isMaster | master | ComplexPort | Hardware model |
| mem | memory | Mapping | Mapping model |
| memTypeDefinitions | memoryTypeDefinitions | PropertyConstraintsModel | Property Constraints model |
| isDefault | default | ModeSwitchEntry | Software model |
| isBuffered | buffered | Label | Software model |
| isBuffered | buffered | LabelAccess | Software model |
| accessEnum | access | SemaphoreAccess | Software model |
| isBuffered | buffered | SenderReceiverCommunication | Software model |
| isOrdered | ordered | Group | Software model |
Below are the changes in the metamodel from App4MC 0.7.0 to App4MC 0.7.1
Change in the namespace:
| AMALTHEA Namespace (version App4MC 0.7.0) | AMALTHEA Namespace (version App4MC 0.7.1) |
| http://app4mc.eclipse.org/amalthea/0.7.0 | http://app4mc.eclipse.org/amalthea/0.7.1 |
Root Tag in AMALTHEA model amxmi file: It is recommended to have “Amalthea” as a root tag in amxmi file.
Based on the above statement, if the AMALTHEA model file is having sub-model tag as root element (e.g: SWModel or HWModel etc.,), as a part of model migration -> root element is changed as “Amalthea” tag and the content of sub-model is copied inside it.
Input model (containing SWModel as the root tag): "<am:SWModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:am="http://app4mc.eclipse.org/amalthea/0.7.0">
<labels/>
</am:SWModel>"
Output model (after model migration):
<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.7.0" xmlns:xmi="http://www.omg.org/XMI">
<swModel>
<labels />
</swModel>
</am:Amalthea>
Below are the changes in the reference names:
| Variable Name (version APP4MC 0.7.0) | Changed Variable Name (version APP4MC 0.7.1) | Class containing Variable | AMALTHEA sub model | Model Migration behaviour |
| graphEntries | items | ModeSwitchEntry | SW Model | xml tag “graphEntries” present inside “ModeSwitchEntry” object is changed to “items” in amxmi file |
| value | values | ModeSwitchEntry | SW Model | xml tag “value” present inside “ModeSwitchEntry” object is changed to “values” in amxmi file |
Below are the changes in the reference Types:
| Variable Name | Variable Type (version APP4MC 0.7.0) | Variable Type (version APP4MC 0.7.1) | Class containing Variable | AMALTHEA sub model | Model Migration behaviour |
| size | Long | DataSize | MemoryType | HW Model, PropertyConstraintsModel | Attribute “size” is migrated as “DataSize” object. Long value of “size” is migrated to “value” of DataSize. As the DataSizeUnit info is not available, “unit” value is not set |
| size | DataUnit | DataSize | AbstractElementMemoryInformation | SW Model | “size” of type “DataUnit” is migrated as “DataSize” object. Int value of “numberBits” attribute is migrated to “value” of DataSize, “unit” attribute is set as “bit” of type DataSizeUnit |
| size | DataUnit | DataSize | BaseTypeDefinition | SW Model | “size” of type “DataUnit” is migrated as “DataSize” object. Int value of “numberBit” attribute is migrated to “value” of DataSize, “unit” attribute is set as “bit” of type DataSizeUnit |
| frequency | EInt | Frequency | Quartz | SW Model | Attribute “frequency” of type EInt is migrated as “Frequency” object. “frequency” EInt value is migrated to “value” EDouble of DataSize. As the FrequencyUnit info is not available, “unit” value is not set |
Below references are removed:
| Variable Name | Variable Type | Class containing Variable | AMALTHEA sub model | Model Migration behaviour |
| size | DataUnit | Section | SW Model | Content is removed from the model as size can’t be specified for “Section” (considered as virtual memory section) |
| labels | [0-*] Label | Section | SW Model | Content is removed from the model. As per APP4MC 0.7.1 semantics, Label object has the association to the Section inside which it can be allocated |
| runEntities | [0-*] Runnable | Section | SW Model | Content is removed from the model. As per APP4MC 0.7.1 semantics, Runnable object has the association to the Section inside which it can be allocated |
| groupingType | RunnableGroupingType | ProcessRunnableGroup | Constraints Model | Content is removed from the model |
| entries | [0-*] ProcessRunnableGroupEntry | ProcessRunnableGroup | Constraints Model | Content is removed from the model. Runnable object belonging to the ProcessRunnableGroupEntry is associated to the runnables list contained at the ProcessRunnableGroup object |
| default | EBoolean | ModeSwitchEntry | SW Model | Content removed from the model. If several ModeSwitchEntry objects contain attribute “default” as “true”, then first ModeSwitchEntry which has “default” as “true” is converted to “ModeSwitchDefault” object |
Below Classes are removed:
| Class Name | AMALTHEA sub model | Model Migration behaviour |
| SchedulerPairingConstraint | Constraints Model | Content is removed from the model. There is no equivalent of this model element in APP4MC 0.7.1 |
| SchedulerSeparationConstraint | Constraints Model | Content is removed from the model. There is no equivalent of this model element in APP4MC 0.7.1 |
| ProcessRunnableGroupEntry | Constraints Model | This element is removed from the model, but the Runnables associated to it are associated to ProcessRunnableGroup object |
| OrderConstraint | Constraints Model | Content is removed from the model. There is no equivalent of this model element in APP4MC 0.7.1 |
| AgeConstraint | Constraints model | Content is migrated as EventChainLatencyConstraint element with LatencyType as �Age� |
| ReactionConstraint | Constraints model | Content is migrated as EventChainLatencyConstraint element with LatencyType as �Reaction� |
| SynchronisationConstraint | Constraints model | Content is migrated as EventSynchronizationConstraint element |
| SectionMapping | Mapping Model | Content is removed from the model. As per 0.7.1, there is a possibility to specify PhysicalSectionMapping element i.e. defining mapping of various Section elements to Memory |
| SectionMappingConstraint | Property Constraints Model | Content is removed from the model.As per 0.7.1, there is a possibility to specify PhysicalSectionConstraint element i.e. defining possibility of Section allocation across various Memories |
| DataUnit | Sw model | Content is migrated as DataSize. Attribute “unit” is set as DataSizeUnit of type "bit" |