blob: 64c1c253535c8924ca2fa5e06a67a435da78a8aa [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/2.1.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
<swModel>
<tasks xmi:id="Task_consumer1?type=Task" name="Task_consumer1" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
<activityGraph>
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="0" upperBound="10" average="2.0" pRemainPromille="1.0" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Spinlock_A?type=Semaphore" access="request" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="10" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Spinlock_A?type=Semaphore" access="release" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="50" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="request" waitingBehaviour="active" />
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="decrement" step="1" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="50" />
</items>
</activityGraph>
</tasks>
<tasks xmi:id="Task_consumer2?type=Task" name="Task_consumer2" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
<activityGraph>
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="0" upperBound="10" average="2.0" pRemainPromille="1.0" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Spinlock_A?type=Semaphore" access="request" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="10" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Spinlock_A?type=Semaphore" access="release" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="50" />
</items>
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="request" waitingBehaviour="active" />
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="request" waitingBehaviour="active" />
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="decrement" step="1" />
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="decrement" step="1" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="100" />
</items>
</activityGraph>
</tasks>
<tasks xmi:id="Task_producer?type=Task" name="Task_producer" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
<activityGraph>
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="1000" />
</items>
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="increment" step="2" />
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="release" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="1000" />
</items>
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="increment" step="2" />
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="release" waitingBehaviour="active" />
<items xsi:type="am:Ticks">
<default xsi:type="am:DiscreteValueConstant" value="1000" />
</items>
<items xsi:type="am:ModeLabelAccess" data="numericModeLabel?type=ModeLabel" access="increment" step="2" />
<items xsi:type="am:SemaphoreAccess" semaphore="Semaphore_A?type=Semaphore" access="release" waitingBehaviour="active" />
</activityGraph>
</tasks>
<modes xsi:type="am:NumericMode" xmi:id="numericMode?type=NumericMode" name="numericMode" />
<modeLabels xmi:id="numericModeLabel?type=ModeLabel" name="numericModeLabel" mode="numericMode?type=NumericMode" initialValue="11000" />
</swModel>
<hwModel>
<definitions xsi:type="am:ProcessingUnitDefinition" xmi:id="DefaultCore?type=ProcessingUnitDefinition" name="DefaultCore" puType="CPU" />
<definitions xsi:type="am:MemoryDefinition" xmi:id="DefaultMemory?type=MemoryDefinition" name="DefaultMemory">
<size value="4" unit="MB" />
<accessLatency xsi:type="am:DiscreteValueConstant" value="2" />
<dataRate value="1" unit="GiBPerSecond" />
</definitions>
<structures xmi:id="Democar?type=HwStructure" name="Democar" structureType="System">
<structures xmi:id="ECU_1?type=HwStructure" name="ECU_1" structureType="ECU">
<structures xmi:id="Microcontroller_1?type=HwStructure" name="Microcontroller_1" structureType="Microcontroller">
<modules xsi:type="am:ProcessingUnit" xmi:id="Core_1?type=ProcessingUnit" name="Core_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultCore?type=ProcessingUnitDefinition">
<accessElements name="memAccess_1" destination="Mem_1?type=Memory">
<readLatency xsi:type="am:DiscreteValueConstant" value="1" />
<writeLatency xsi:type="am:DiscreteValueConstant" value="1" />
<dataRate value="1" unit="GiBPerSecond" />
</accessElements>
</modules>
<modules xsi:type="am:ProcessingUnit" xmi:id="Core_2?type=ProcessingUnit" name="Core_2" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultCore?type=ProcessingUnitDefinition">
<accessElements name="memAccess_2" destination="Mem_1?type=Memory">
<readLatency xsi:type="am:DiscreteValueConstant" value="1" />
<writeLatency xsi:type="am:DiscreteValueConstant" value="1" />
<dataRate value="1" unit="GiBPerSecond" />
</accessElements>
</modules>
<modules xsi:type="am:ProcessingUnit" xmi:id="Core_3?type=ProcessingUnit" name="Core_3" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultCore?type=ProcessingUnitDefinition">
<accessElements name="memAccess_3" destination="Mem_1?type=Memory">
<readLatency xsi:type="am:DiscreteValueConstant" value="1" />
<writeLatency xsi:type="am:DiscreteValueConstant" value="1" />
<dataRate value="1" unit="GiBPerSecond" />
</accessElements>
</modules>
<modules xsi:type="am:Memory" xmi:id="Mem_1?type=Memory" name="Mem_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultMemory?type=MemoryDefinition" />
</structures>
</structures>
</structures>
<domains xsi:type="am:FrequencyDomain" xmi:id="FrequencyDomain_1?type=FrequencyDomain" name="FrequencyDomain_1" clockGating="false">
<defaultValue value="100.0" unit="MHz" />
</domains>
</hwModel>
<osModel>
<semaphores xmi:id="Semaphore_A?type=Semaphore" name="Semaphore_A" semaphoreType="CountingSemaphore" initialValue="0" maxValue="3" priorityCeilingProtocol="false" />
<semaphores xmi:id="Spinlock_A?type=Semaphore" name="Spinlock_A" semaphoreType="Spinlock" initialValue="1" maxValue="1" priorityCeilingProtocol="false" />
<operatingSystems name="OperatingSystem">
<taskSchedulers xmi:id="Task_Scheduler_Core_1?type=TaskScheduler" name="Task_Scheduler_Core_1" definition="FixedPriorityPreemptive?type=SchedulerDefinition" />
<taskSchedulers xmi:id="Task_Scheduler_Core_2?type=TaskScheduler" name="Task_Scheduler_Core_2" definition="FixedPriorityPreemptive?type=SchedulerDefinition" />
<taskSchedulers xmi:id="Task_Scheduler_Core_3?type=TaskScheduler" name="Task_Scheduler_Core_3" definition="FixedPriorityPreemptive?type=SchedulerDefinition" />
</operatingSystems>
<schedulerDefinitions xmi:id="FixedPriorityPreemptive?type=SchedulerDefinition" name="FixedPriorityPreemptive" description="Fixed Priority Preemptive Scheduling (e.g. AUTOSAR),&#xA;same as OSEK but without task groups.&#xA;&#xA;Algorithm parameters:&#xA; -&#xA;&#xA;Process parameters:&#xA; - priority [1] Integer&#xA; The priority of the process (a higher value means a higher priority).&#xA;&#xA;Options:&#xA; -&#xA;&#xA;Reference:&#xA; - Liu, Chung Laung, and James W. Layland (1973).&#xA; &quot;Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment&quot;&#xA; Journal of the ACM (JACM) 20.1 (1973): 46-61.&#xA;" processParameters="priority?type=SchedulingParameterDefinition" hasExactlyOneChild="false" passesParametersUpwards="false" requiresParentScheduler="false" />
<schedulingParameterDefinitions xmi:id="priority?type=SchedulingParameterDefinition" name="priority" type="Integer" many="false" mandatory="true" />
</osModel>
<stimuliModel>
<stimuli xsi:type="am:PeriodicStimulus" xmi:id="Timer_5MS?type=PeriodicStimulus" name="Timer_5MS">
<recurrence value="5" unit="ms" />
<offset value="0" unit="ms" />
</stimuli>
</stimuliModel>
<mappingModel>
<schedulerAllocation scheduler="Task_Scheduler_Core_1?type=TaskScheduler" responsibility="Core_1?type=ProcessingUnit" executingPU="Core_1?type=ProcessingUnit" />
<schedulerAllocation scheduler="Task_Scheduler_Core_2?type=TaskScheduler" responsibility="Core_2?type=ProcessingUnit" executingPU="Core_2?type=ProcessingUnit" />
<schedulerAllocation scheduler="Task_Scheduler_Core_3?type=TaskScheduler" responsibility="Core_3?type=ProcessingUnit" executingPU="Core_3?type=ProcessingUnit" />
<taskAllocation task="Task_consumer1?type=Task" scheduler="Task_Scheduler_Core_1?type=TaskScheduler">
<schedulingParameters key="priority?type=SchedulingParameterDefinition">
<value xsi:type="am:IntegerObject" value="1" />
</schedulingParameters>
</taskAllocation>
<taskAllocation task="Task_consumer2?type=Task" scheduler="Task_Scheduler_Core_2?type=TaskScheduler">
<schedulingParameters key="priority?type=SchedulingParameterDefinition">
<value xsi:type="am:IntegerObject" value="1" />
</schedulingParameters>
</taskAllocation>
<taskAllocation task="Task_producer?type=Task" scheduler="Task_Scheduler_Core_3?type=TaskScheduler">
<schedulingParameters key="priority?type=SchedulingParameterDefinition">
<value xsi:type="am:IntegerObject" value="1" />
</schedulingParameters>
</taskAllocation>
<memoryMapping abstractElement="numericModeLabel?type=ModeLabel" memory="Mem_1?type=Memory" memoryPositionAddress="0x0" />
</mappingModel>
</am:Amalthea>