A.4 Predeclared Communication Properties
(1) The predeclared property set named Communication_Properties defines communication related properties specify connection topology and queuing characteristics.
Property set Communication_Properties is
Fan_Out_Policy: enumeration (Broadcast, RoundRobin, Selective, OnDemand) applies to (port); The Fan_Out_Policy property specifies how the output is distributed to multiple recipients of a port with multiple outgoing connections. Broadcast sends to all recipients, RoundRobin to one recipient at a time in order, Selective sends to one recipient based on data content, and OnDemand to the next recipient waiting on a port for dispatch. Note that Broadcast, RoundRobin, and Selective pass on data and events without queuing it, while OnDemand requires a queue that is serviced by the recipients. |
Connection_Pattern: list of list of Supported_Connection_Patterns applies to (connection); The Connection_Pattern property specifies how an individual connection between arrays of ports looks like. If the property is not set the One_to_One pattern applies. The outer list has an element for each array dimension. The inner list specifies one or more patterns for that dimension.
|
Connection_Set: list of Connection_Pair applies to (connection); The Connection_Set property specifies a list of specific source element and destination element of a semantic connection by their array indices. Connection_Pair: type record ( src: list of aadlinteger; dst: list of aadlinteger;);
|
Overflow_Handling_Protocol: enumeration (DropOldest, DropNewest, Error) => DropOldest applies to (event port, event data port, subprogram access); The Overflow_Handling_Protocol property specifies the runtime behavior of a thread when an event arrives and the queue is full. DropOldest removes the oldest event from the queue and adds the new arrival. DropNewest ignores the newly arrived event. Error causes the thread’s error recovery to be invoked. The default value is DropOldest.
|
Queue_Processing_Protocol: Supported_Queue_Processing_Protocols => FIFO applies to (event port, event data port, subprogram access); The Queue_Processing_Protocol property specifies the protocol for processing elements in the queue. |
Queue_Size: aadlinteger 0 .. Max_Queue_Size => 1 applies to (event port, event data port, subprogram access); The Queue_Size property specifies the size of the queue for an event, event data port, of a subprogram access feature, and of a data component being shared via data access. In the case of a subprogram access it represents the queue for remote subprogram calls. In the case of a data component it represents the queue used in resource locking.
|
Required_Connection : aadlboolean => true applies to (feature); The Required_Connection property specifies whether the port or subprogram requires a connection. If the value of this property is false, then it is assumed that the component can function without this port or subprogram access feature being connected. The default value is that a connection is required. |
Timing : enumeration (sampled, immediate, delayed) => sampled applies to (port connection); The Timing property specifies the timing of port connections. By default the interaction is sampled, i.e., the receiving component samples at dispatch or during execution.
|
Transmission_Type: enumeration ( push, pull ) applies to (data port, port connection, bus, virtual bus);
The Transmission_Type property specifies whether the transmission across a data port connection is initiated by the sender (push) or by the receiver (pull). By default the transmission is initiated by the sender. A pull transmission type results in data being transmitted at the rate of the receiver. In the case of event data port or event ports, a pull transmission type results in events or event data queued with the sender to be transmitted upon receiver request. When associated with a connection the property represents the transmission type the connection expects. When associated with a port the property represents the transmission type expected by the port. When associated with a bus or virtual bus the property represents the transmission type that is provided by the bus or protocol.
|
(2) The following communication properties specify input and output characteristics of port based communication.
Input_Rate: Rate_Spec => [ Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed; ] applies to (port); The Input_Rate property specifies the number of inputs per dispatch or per second of data, events, event data, or subprogram calls. If no Input_Rate is specified the default is one input per thread dispatch. If no distribution function is specified it is assumed to be Fixed.
|
Input_Time: list of IO_Time_Spec => ([ Time => Dispatch; Offset => 0.0 ns .. 0.0 ns;]) applies to (port); The Input_Time property specifies the amount of execution time that can pass after dispatch before the input is frozen on a given port. The property value is a pair of Time a time range Offset. The default input time is Dispatch with zero Offset. A typical property value is a time offset in terms of Start.
|
IO_Time_Spec : type record ( Offset : Time_Range; Time : IO_Reference_Time; ); The IO_Time_Spec property specifies the amount of execution time Offset relative to a Time at which input or output occurs. The value consists of a reference point and time range pair.
|
IO_Reference_Time : type enumeration (Dispatch, Start, Completion, Deadline, NoIO); The IO_Reference_Time property specifies the time reference point to be used for specifying when input or output is available. The reference points are dispatch time (typically with zero time offset), start time (zero or more time), completion time (amount of execution time until completion), and deadline (typically with zero time offset). NoIO indicates that no I/O occurs.
|
Output_Rate: Rate_Spec => [ Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed; ] applies to (port); The Output_Rate property specifies the number of outputs per dispatch or per second of data, events, event data, or initiations of subprogram calls. The default is one output per thread dispatch and the default distribution is Fixed.
|
Output_Time: list of IO_Time_Spec => ([ Time => Completion; Offset => 0.0 ns .. 0.0 ns;]) applies to (port); The Output_Time property specifies the amount of execution time until completion at which output becomes available. The property value is a pair of Time and Offset. The default Output_Time is Completion with zero Offset. For data ports with a delayed connection the default output time is Deadline.
|
Rate_Spec : type record ( Value_Range : range of aadlreal ; Rate_Unit : enumeration (PerSecond, PerDispatch); Rate_Distribution : Supported_Distributions; ); The Rate_Spec property specifies the number of input or output occurrences per Rate_Unit, i.e., per dispatch or per second. The default Rate_Distribution is Fixed. |
Subprogram_Call_Rate: Rate_Spec => [ Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed; ] applies to (subprogram access); The Subprogram_Call_Rate property specifies the number of subprogram calls per dispatch or per second. The default is one call per thread dispatch and the default distribution is Fixed.
|
(3) The following are communication timing related properties.
Transmission_Time: record ( Fixed: Time_Range; PerByte: Time_Range; ) applies to (bus); The Transmission_Time property specifies the parameters for a linear model for the time interval between the start and end of a transmission of a sequence of N bytes onto a bus. The transmission time is the time between the transmission of the first bit of the message onto the bus and the transmission of the last bit of the message onto the bus. This time excludes arbitration, queuing, or any other times that are a function of how bus contention and scheduling are performed for a bus. The associated expressions must evaluate to a record of two ranges of nonnegative numbers. The time required to transmit a message of N Bytes over the bus is Fixed + N * PerByte, where Fixed is any number that falls in the range of the Fixed record field and PerByte is any number that falls in the range of the PerByte record field.
|
Actual_Latency: Time_Range applies to (flow, connection, bus, device, processor, port); The Actual_Latency property specifies the actual latency as determined by the implementation of the end-to-end flow through semantic connections. Its numeric value must be positive. The property type is Time_Range. The standard units are ns (nanoseconds), us (microseconds), ms (milliseconds), sec (seconds), min (minutes) and hr (hours). |
Latency: Time_Range applies to (flow, connection, bus, device, processor, port); The Latency property specifies the minimum and maximum amount of elapsed time allowed between the time the data or events enter the connection or flow and the time it exits. Its numeric value must be positive. The property type is Time. The standard units are ns (nanoseconds), us (microseconds), ms (milliseconds), sec (seconds), min (minutes) and hr (hours). |
end Communication_Properties;