6.5      Virtual Buses

(1)   A virtual bus component represents logical bus abstraction such as a virtual channel or communication protocol.

(2)   Virtual buses can be bound to buses, virtual buses, processors, virtual processors, devices, or memory.  When bound to a bus, it may represent multiple protocols supported by the bus or a virtual channel with a subset of the bus bandwidth. When bound to a virtual bus it may represent a hierarchy of protocols or virtual channels. When bound to a processor it may represent protocols supported by a processor. When bound to a sequence of hardware components it may represent a virtual channel or flow across these components.

(3)   Virtual buses can be subcomponents of processors, buses, and other virtual buses. This implies that they are bound to the processor, bus, or virtual bus they are contained in.

(4)   Connections and virtual buses can indicate by property the protocols they require by identifying the appropriate virtual bus or bus classifier.  A connection can also indicate the desired level of quality of service, which must be satisfied by the virtual bus or bus the connection is bound to.  Similarly, hardware components can indicate by property the virtual buses they provide.

Legality Rules

Category

Type

Implementation

virtual bus

Features

·         none

Flow specifications: no

Modes: yes

Properties: yes

Subcomponents:

·         virtual bus

·         abstract

Subprogram calls: no

Connections: no

Flows: no

Modes: yes

Properties: yes

 

(L1)      A virtual bus type can have property associations.

(L2)      A virtual bus type must not contain flow specifications.

(L3)      A virtual bus implementation can contain virtual bus subcomponent declarations. 

(L4)      A virtual bus implementation can contain a modes subclause and property associations. 

(L5)      A virtual bus implementation must not contain a connections subclause, flows subclause, or subprogram calls subclause.

Consistency Rules

(C1)In a fully deployed system virtual buses must be directly or indirectly bound to processors or buses that support these virtual buses, or they must be subcomponents of buses and processors.

Standard Properties

-- Properties specifying bus transmission properties
Allowed_Connection_Type: list of enumeration 
                        (Sampled_Data_Connection, Immediate_Data_Connection,
                         Delayed_Data_Connection, Port_Connection,
                         Data_Access_Connection,
                         Subprogram_Access_Connection)
 
Allowed_Message_Size: Size_Range
 
Transmission_Type: enumeration ( push, pull )
Transmission_Time: record (
    Fixed: Time_Range;
    PerByte: Time_Range; )
Prototype_Substitution_Rule: inherit enumeration (Classifier_Match, Type_Extension, Signature_Match)
-- Protocol support
Provided_Connection_Quality_Of_Service : inherit list of Supported_Connection_QoS
Provided_Virtual_Bus_Class : inherit list of classifier (virtual bus)
Required_Connection_Quality_Of_Service : inherit list of Supported_Connection_QoS
Allowed_Connection_Binding_Class: 
   inherit list of classifier(processor, virtual processor, bus, virtual bus, device, memory)
Allowed_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
Actual_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
Required_Virtual_Bus_Class : inherit list of classifier (virtual bus)
-- mode related properties
Resumption_Policy: enumeration ( restart, resume )
-- Virtual machine layering
Implemented_As: classifier ( system implementation )
 

Semantics

(5)   A virtual bus represents a virtual channel or communication protocol. The Provided_Virtual_Bus_Class property is used to indicate that a processor or bus supports a protocol.  Similarly, the Required_Virtual_Bus_Class property is used to indicate that a protocol is required by a connection or virtual bus.

(6)   A virtual bus can be a subcomponent of a virtual bus, bus, virtual processor, processor, or system, it can be provided as indicated by the Provided_Virtual_Bus_Class property of a bus, virtual bus, virtual processor, or processor.  In all cases, this indicates that the protocol represented by the virtual bus is supported on the bus or processor.

(7)   If a virtual bus requires another virtual bus as expressed by the Required_Virtual_Bus_Class property, this required access is satisfied by binding the protocol to a processor or bus that provides this virtual bus as specified with the Provided_Virtual_Bus_Class property.

(8)   A virtual bus can represent a portion of the bandwidth capacity of a bus.  It can act as virtual channel that can make certain performance guarantees. 

(9)   The Allowed_Connection_Type property indicates which forms of access a particular virtual bus supports.  The virtual bus may constrain the size of messages communicated through data or event data connections.

(10)  Virtual bus components can have different property values under different operational modes.

(11)  If it is desirable, the internals of the virtual bus can be modeled by AADL as an application system in its own right, e.g., as a sender thread interacting with a receiver thread.  This system implementation description can be associated with the virtual bus component declaration by the Implemented_As property (see Section 14). 

Processing Requirements and Permissions

(12)  A method of implementation shall define how the final size of a transmission is determined for a specific connection.  Implementation choices and restrictions such as packetization and header and trailer information are not defined in this standard.

(13)  A method of implementation shall define the methods used for bus arbitration and scheduling. If desired this can be modeled by a notation of your choice and associated with a virtual bus via a property. Alternatively, it can be modeled through an AADL system model and associated with the bus through an Implemented_As property.

Examples

package Hardware

public

bus Ethernet

end Ethernet;

 

virtual bus IP_TCP

end IP_TCP;

 

virtual bus HTTP

properties

  Allowed_Connection_Binding_Class => classifier (IP_TCP);

end HTTP;

 

processor PowerPC

end PowerPC;

 

processor implementation PowerPC.Linux

subcomponents

  IP_TCP: virtual bus IP_TCP;

end PowerPC.Linux;

end Hardware;