| /** |
| * ******************************************************************************* |
| * Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Timing-Architects Embedded Systems GmbH - initial API and implementation |
| * |
| * ******************************************************************************* |
| */ |
| |
| @GenModel( |
| modelName="RTMGC", prefix="RTMGC", |
| copyrightText="*******************************************************************************\r\n Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License v1.0\r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n\r\n Generated using Eclipse EMF\r\n\r\n*******************************************************************************" |
| ) |
| |
| package org.eclipse.app4mc.amalthea.generator.configuration |
| |
| import org.eclipse.emf.ecore.xml.^type.PositiveInteger |
| import org.eclipse.emf.ecore.xml.^type.UnsignedInt |
| |
| class RTMGC { |
| contains Generation[1] generation |
| } |
| |
| class Generation { |
| PositiveInteger count |
| String baseModel |
| String[1..*] hwModels |
| String[1..*] osModels |
| String swModel |
| String outputFolder |
| contains ActivationProperties[1] activations |
| contains LabelProperties[1] labels |
| contains RunnableProperties[1] runnables |
| contains SemaphoreProperties[1] semaphores |
| contains TaskProperties[1] tasks |
| } |
| |
| class ActivationProperties { |
| contains PeriodicActivation[1] periodicActivation |
| contains PeriodicTriangleShift[1] periodicTriangleShift |
| contains SporadicActivation[1] sporadicActivation |
| } |
| |
| abstract class Activation { |
| PositiveInteger appearanceProbability |
| } |
| |
| class PeriodicActivation extends Activation { |
| contains Recurrence[1] recurrence |
| contains IntegerTimeDistribution[1] offset |
| } |
| |
| class PeriodicTriangleShift extends PeriodicActivation { |
| contains TriangleClock[1] clock |
| } |
| |
| class TriangleClock { |
| contains DoubleDistribution min_start |
| contains DoubleDistribution max_end |
| contains IntegerTimeDistribution shift |
| contains IntegerTimeDistribution period |
| } |
| |
| class SporadicActivation extends Activation { |
| contains IntegerTimeDistribution[1] minValue |
| contains PercentageDistribution[1] maxValueDistance |
| contains PercentageDistribution[1] avgValueDistance |
| } |
| |
| class Recurrence extends IntegerTimeDistribution { |
| RecurrenceType recurrenceType = "random" |
| } |
| |
| enum RecurrenceType { |
| random = 0 |
| harmonic = 1 |
| } |
| |
| class LabelProperties { |
| contains IntegerDistribution[1] count |
| contains IntegerDistribution[1] bitSize |
| contains IntegerDistribution[1] perSWC |
| } |
| |
| class RunnableProperties { |
| RuntimeType[1] runtimeType = "instructionsConst" |
| contains IntegerDistribution[1] instructionsPerRunnables |
| contains IntegerDistribution[1] runnablesPerCallSequence |
| contains IntegerDistribution[1] runnablesPerSWC |
| contains PercentageDistribution[1] minStatisticsDistance |
| contains PercentageDistribution[1] maxStatisticsDistance |
| } |
| |
| enum RuntimeType { |
| instructionsConst = 0 |
| instructionsStatistics = 1 |
| } |
| |
| class SemaphoreProperties { |
| contains IntegerDistribution[1] count |
| boolean priorityCeilingProtocol |
| SemaphoreType[1] semaphoreType = "counting" |
| WaitModes[1] waitMode = "active waiting" |
| contains SemaphoreAccessProperties[1] SemaphoreAccess |
| } |
| |
| class SemaphoreAccessProperties { |
| contains IntegerDistribution[1] perUnitReadAccessCount |
| contains IntegerDistribution[1] perUnitWriteAccessCount |
| SemaphoreRequestOrder[1] requestOrder = "none" |
| SemaphoreAccessType[1] accessType = "RandRunnable" |
| } |
| |
| enum SemaphoreRequestOrder { |
| none = 0 |
| requestGrouped = 1 |
| nameIncreasing = 2 |
| } |
| |
| enum SemaphoreAccessType { |
| RWperTask = 0 |
| RWperCallSequence = 1 |
| RandRunnable = 2 |
| WholeCS = 3 |
| GroupedFMLP = 4 |
| WeakFMLP = 5 |
| EVA = 6 |
| } |
| |
| enum SemaphoreType { |
| binary = 0 |
| counting = 1 |
| both = 2 |
| } |
| |
| enum WaitModes { |
| polling as "active waiting" = 0 |
| parking as "passive waiting" = 1 |
| } |
| |
| class TaskProperties { |
| contains IntegerDistribution[1] count |
| contains PercentageDistribution[1] load |
| contains IntegerDistribution[1] perTaskGroup |
| contains IntegerDistribution[1] mta |
| contains DoubleDistribution[1] deadlineFactor |
| contains IntegerDistribution[1] callSequencesBetweenSchedulePoints |
| contains CallGraphProperties[1] callGraphs |
| ProcessMappingAlgorithms mappingDetermination = "Worst Fit Decreasing" |
| PriorityDeterminationAlgorithm priorityDetermination = "Rate Monotonic" |
| } |
| |
| class CallGraphProperties { |
| contains PercentageDistribution[1] signalDomainCoverage |
| contains PercentageDistribution[1] callSequenceUsage |
| } |
| |
| abstract class Distribution { |
| DistributionType ^type = "Constant Value" |
| } |
| |
| class IntegerDistribution extends Distribution { |
| UnsignedInt min |
| UnsignedInt avg |
| UnsignedInt max |
| } |
| |
| class IntegerTimeDistribution extends IntegerDistribution { |
| TimeUnit unit = "ms" |
| } |
| |
| class PercentageDistribution extends Distribution { |
| double minPercentage |
| double avgPercentage |
| double maxPercentage |
| } |
| |
| class DoubleDistribution extends Distribution { |
| double min |
| double avg |
| double max |
| } |
| |
| enum DistributionType { |
| const as "Constant Value" = 0 |
| uniform as "Uniform Distribution" = 1 |
| weibull as "Weibull Distribution" = 2 |
| } |
| |
| enum ProcessMappingAlgorithms { |
| WFD as "Worst Fit Decreasing" = 0 |
| WFI as "Worst Fit Increasing" = 1 |
| BFD as "Best Fit Decreasing" = 2 |
| BFI as "Best Fit Increasing" = 3 |
| } |
| |
| enum PriorityDeterminationAlgorithm { |
| RM as "Rate Monotonic" = 0 |
| DM as "Deadline Monotonic" = 1 |
| } |
| |
| enum TimeUnit { |
| ps = 0 |
| ns = 1 |
| us = 2 |
| ms = 3 |
| s = 4 |
| } |