Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 287d5b45e4a7708c6490a97de59523ffcf359c8d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*****************************************************************************
 * Copyright (c) 2010 CEA LIST.
 *
 *    
 * 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:
 *  Sara TUCCI (CEA LIST) sara.tucci@cea.fr - Initial API and implementation
 *  Chokri MRAIDHA (CEA LIST) chokri.mraidha@cea.fr - Initial API and implementation
 *  David SERVAT (CEA LIST) david.servat@cea.fr - Initial API and implementation
 *
 *****************************************************************************/
package org.eclipse.papyrus.eastadl.timing;

import org.eclipse.papyrus.eastadl.structure.functionmodeling.DesignFunctionPrototype;
import org.eclipse.papyrus.eastadl.structure.functionmodeling.DesignFunctionType;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Execution Time Constraint</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * ExecutionTimeConstraint expresses the execution time of a function under the assumption of a nominal CPU that executes 1 "function second" per second. Function allocation will decide the actual execution time by multiplication with the relative speed of the host CPU. 
 * 
 * Example:
 * The ECU is 20% faster than a standard ECU (e.g. in a certain context, execution times are given assuming a nominal speed of 100 MHz; Our CPU is then 120 MHz) 
 * 
 * The function is activated by a time trigger or a port trigger. The function starts execution some time after activation, depending on e.g. interference and blocking from other functions on the same resource
 * Immediately on start, the function reads input data on all ports. Functions write data at the latest when the execution time has elapsed (which is after the execution time plus any blocking and interference time). 
 * 
 * Constraints:
 * [1] An ExecutionTimeConstraint either identifies a FunctionType or a FunctionPrototype as its target function.
 * [2] variation shall be a value between 0 and upper-lower.
 * 
 * Semantics:
 * lower (from TimingConstraint) denotes the minimal best case execution time.
 * upper (from TimingConstraint) denotes the maximal worst case execution time.
 * variation denotes the allowed variation in execution time, i.e. maximal minimal execution time.
 * 
 * Example:
 * lower=5
 * upper=10
 * variation=2
 * best case execution time of 6 and worst case of 7 is within this constraint
 * best case execution time of 6 and worst case of 9 violates this constraint
 * 
 * If a measured value is characterized, variation is not used, as it is always upper-lower, e.g. lower=6 and upper=9 above. In this example, the ExecutionTimeConstraint would be a Realization of a VVActualOutcome.
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getVariation <em>Variation</em>}</li>
 *   <li>{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunctionType <em>Target Design Function Type</em>}</li>
 *   <li>{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunction <em>Target Design Function</em>}</li>
 *   <li>{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunctionPrototype <em>Target Design Function Prototype</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.eclipse.papyrus.eastadl.timing.TimingPackage#getExecutionTimeConstraint()
 * @model
 * @generated
 */
public interface ExecutionTimeConstraint extends TimingConstraint {
	/**
	 * Returns the value of the '<em><b>Target Design Function Type</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Target Design Function Type</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Target Design Function Type</em>' reference.
	 * @see #setTargetDesignFunctionType(DesignFunctionType)
	 * @see org.eclipse.papyrus.eastadl.timing.TimingPackage#getExecutionTimeConstraint_TargetDesignFunctionType()
	 * @model ordered="false"
	 * @generated
	 */
	DesignFunctionType getTargetDesignFunctionType();

	/**
	 * Returns the value of the '<em><b>Variation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Variation</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Variation</em>' reference.
	 * @see #setVariation(TimeDuration)
	 * @see org.eclipse.papyrus.eastadl.timing.TimingPackage#getExecutionTimeConstraint_Variation()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	TimeDuration getVariation();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunctionType <em>Target Design Function Type</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Target Design Function Type</em>' reference.
	 * @see #getTargetDesignFunctionType()
	 * @generated
	 */
	void setTargetDesignFunctionType(DesignFunctionType value);

	/**
	 * Returns the value of the '<em><b>Target Design Function</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Target Design Function</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Target Design Function</em>' reference.
	 * @see #setTargetDesignFunction(DesignFunctionType)
	 * @see org.eclipse.papyrus.eastadl.timing.TimingPackage#getExecutionTimeConstraint_TargetDesignFunction()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	DesignFunctionType getTargetDesignFunction();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunction <em>Target Design Function</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Target Design Function</em>' reference.
	 * @see #getTargetDesignFunction()
	 * @generated
	 */
	void setTargetDesignFunction(DesignFunctionType value);

	/**
	 * Returns the value of the '<em><b>Target Design Function Prototype</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Target Design Function Prototype</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Target Design Function Prototype</em>' reference.
	 * @see #setTargetDesignFunctionPrototype(DesignFunctionPrototype)
	 * @see org.eclipse.papyrus.eastadl.timing.TimingPackage#getExecutionTimeConstraint_TargetDesignFunctionPrototype()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	DesignFunctionPrototype getTargetDesignFunctionPrototype();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getTargetDesignFunctionPrototype <em>Target Design Function Prototype</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Target Design Function Prototype</em>' reference.
	 * @see #getTargetDesignFunctionPrototype()
	 * @generated
	 */
	void setTargetDesignFunctionPrototype(DesignFunctionPrototype value);

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.eastadl.timing.ExecutionTimeConstraint#getVariation <em>Variation</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Variation</em>' reference.
	 * @see #getVariation()
	 * @generated
	 */
	void setVariation(TimeDuration value);

} // ExecutionTimeConstraint

Back to the top