Next: Ocarina AADL property files, Previous: Dia editor & AADL, Up: Top
--****************************************************** -- AADL Standard AADL_V1.0 -- Appendix A (normative) -- Predeclared Property Sets -- 03Nov04 -- Revised 14May06 --****************************************************** property set AADL_Project is Default_Active_Thread_Handling_Protocol : constant Supported_Active_Thread_Handling_Protocols => abort; -- one of the choices of Supported_Active_Thread_Handling_Protocols. Supported_Active_Thread_Handling_Protocols: type enumeration (abort, complete_one_flush_queue, complete_one_transfer_queue, complete_one_preserve_queue, complete_all); -- a subset may be supported. Supported_Connection_Protocols: type enumeration (HTTP, HTTPS, UDP, IP_TCP); -- The following are example protocols. -- (HTTP, HTTPS, UDP, IP_TPC); Supported_Concurrency_Control_Protocols: type enumeration (NoneSpecified, Protected_Access, Priority_Ceiling); -- phf : NoneSpecified instead of None -- The following are example concurrency control protocols. -- (Interrupt_Masking, Maximum_Priority, Priority_Inheritance, -- Priority_Ceiling) Supported_Dispatch_Protocols: type enumeration (Periodic, Aperiodic, Sporadic, Background); -- The following are protocols for which the semantics are defined. -- (Periodic, Sporadic, Aperiodic, Background); Supported_Hardware_Source_Languages: type enumeration (VHDL); -- The following is an example hardware description language. -- (VHDL) -- phf A26: added Supported_Queue_Processing_Protocols: type enumeration (FIFO); -- The Supported_Queue_Processing_Protocols property enumeration -- type specifies the set of queue processing protocols that are -- supported. Supported_Scheduling_Protocols: type enumeration (PARAMETRIC_PROTOCOL, EARLIEST_DEADLINE_FIRST_PROTOCOL, LEAST_LAXITY_FIRST_PROTOCOL, RATE_MONOTONIC_PROTOCOL, DEADLINE_MONOTONIC_PROTOCOL, ROUND_ROBIN_PROTOCOL, TIME_SHARING_BASED_ON_WAIT_TIME_PROTOCOL, POSIX_1003_HIGHEST_PRIORITY_FIRST_PROTOCOL, D_OVER_PROTOCOL, MAXIMUM_URGENCY_FIRST_BASED_ON_LAXITY_PROTOCOL, MAXIMUM_URGENCY_FIRST_BASED_ON_DEADLINE_PROTOCOL, TIME_SHARING_BASED_ON_CPU_USAGE_PROTOCOL, NO_SCHEDULING_PROTOCOL, HIERARCHICAL_CYCLIC_PROTOCOL, HIERARCHICAL_ROUND_ROBIN_PROTOCOL, HIERARCHICAL_FIXED_PRIORITY_PROTOCOL, HIERARCHICAL_PARAMETRIC_PROTOCOL); -- The following are example scheduling protocols. -- (RMS, EDF, Sporadicserver, SlackServer, ARINC653) Supported_Source_Languages: type enumeration (Ada95, Ada, -- alias for Ada95 Ada05, -- alias for Ada95 ASN1, C, Lustre, Lustre5, -- alias for Lustre Lustre6, -- alias for Lustre SDL, Simulink_6_5); -- The following are example software source languages. -- ( Ada95, C, Simulink_6_5 ) Max_Aadlinteger: constant aadlinteger => 2#1#e32; Max_Base_Address: constant aadlinteger => 512; Max_Memory_Size: constant aadlinteger Size_Units => 2#1#e32 B; Max_Queue_Size: constant aadlinteger => 512; Max_Thread_Limit: constant aadlinteger => 32; Max_Time: constant aadlinteger Time_Units => 1000 hr; Max_Urgency: constant aadlinteger => 12; Max_Word_Count: constant aadlinteger => 2#1#e32; Max_Word_Space: constant aadlinteger => 64; Size_Units : type units ( Bits, B => Bits * 8, KB => B * 1000, MB => KB * 1000, GB => MB * 1000); Time_Units : type units ( ps, Ns => ps * 1000, Us => Ns * 1000, Ms => Us * 1000, Sec => Ms * 1000, Min => Sec * 60, Hr => Min * 60); end AADL_Project;
--****************************************************** -- AADL Standard AADL_V1.0 -- Appendix A (normative) -- Predeclared Property Sets -- 03Nov04 -- Update to reflect current standard on 28Mar06 --****************************************************** property set AADL_Properties is ---------------------------------------------------- ---------------------------------------------------- Activate_Deadline: Time applies to (thread); ---------------------------------------------------- Activate_Execution_Time: Time_Range applies to (thread); ---------------------------------------------------- Activate_Entrypoint: aadlstring applies to (thread); ---------------------------------------------------- Active_Thread_Handling_Protocol: inherit Supported_Active_Thread_Handling_Protocols => value(Default_Active_Thread_Handling_Protocol) applies to (thread, thread group, process, system); ---------------------------------------------------- Active_Thread_Queue_Handling_Protocol: inherit enumeration (flush, hold) => flush applies to (thread, thread group, process, system); ---------------------------------------------------- Actual_Connection_Binding: inherit list of reference (bus, processor, device) applies to (port connections, thread, thread group, process, system); ---------------------------------------------------- Actual_Latency: Time applies to (flow); ---------------------------------------------------- Actual_Memory_Binding: inherit reference (memory) applies to (thread, thread group, process, system, processor, data port, event data port, subprogram); ---------------------------------------------------- Actual_Processor_Binding: inherit reference (processor) applies to (thread, thread group, process, system); ----------------------------------------------------- Actual_Subprogram_Call: reference (server subprogram) applies to (subprogram); ----------------------------------------------------- Actual_Subprogram_Call_Binding: inherit list of reference (bus, processor, memory, device) applies to (subprogram); ----------------------------------------------------- Actual_Throughput: Data_Volume applies to (flow); ----------------------------------------------------- Aggregate_Data_Port: aadlboolean => false applies to (port group); ---------------------------------------------------- Allowed_Access_Protocol: list of enumeration (Memory_Access, Device_Access) applies to (bus); ---------------------------------------------------- Allowed_Connection_Binding: inherit list of reference (bus, processor, device) applies to (port connections, thread group, process, system); ---------------------------------------------------- Allowed_Connection_Binding_Class: inherit list of classifier (processor, bus, device) applies to (port connections, thread, thread group, process, system); ---------------------------------------------------- Allowed_Connection_Protocol: list of enumeration (Data_Connection, Event_Connection, Event_Data_Connection, Data_Access_Connection, Server_Subprogram_Call) applies to (bus, device); ---------------------------------------------------- Allowed_Dispatch_Protocol: list of Supported_Dispatch_Protocols applies to (processor); ---------------------------------------------------- Allowed_Memory_Binding: inherit list of reference (memory, system, processor) applies to (thread, thread group, process, system, device, data port, event data port, subprogram, processor); ---------------------------------------------------- Allowed_Memory_Binding_Class: inherit list of classifier (memory, system, processor) applies to (thread, thread group, process, system, device, data port, event data port, subprogram, processor); ---------------------------------------------------- Allowed_Message_Size: Size_Range applies to (bus); ---------------------------------------------------- Allowed_Period: list of Time_Range applies to (processor, system); ---------------------------------------------------- Allowed_Processor_Binding: inherit list of reference (processor, system) applies to (thread, thread group, process, system, device); ---------------------------------------------------- Allowed_Processor_Binding_Class: inherit list of classifier (processor, system) applies to (thread, thread group, process, system, device); ---------------------------------------------------- Allowed_Subprogram_Call: list of reference (server subprogram) applies to (subprogram); ---------------------------------------------------- Allowed_Subprogram_Call_Binding: inherit list of reference (bus, processor, device) applies to (subprogram, thread, thread group, process, system); ---------------------------------------------------- Assign_Time: Time applies to (processor, bus); ---------------------------------------------------- Assign_Byte_Time: Time applies to (processor, bus); ---------------------------------------------------- Assign_Fixed_Time: Time applies to (processor, bus); ---------------------------------------------------- Available_Memory_Binding: inherit list of reference (memory, system) applies to (system); ---------------------------------------------------- Available_Processor_Binding: inherit list of reference (processor, system) applies to (system); ---------------------------------------------------- Base_Address: access aadlinteger 0 .. value(Max_Base_Address) applies to (memory); ---------------------------------------------------- Client_Subprogram_Execution_Time: Time applies to (subprogram); ---------------------------------------------------- Clock_Jitter: Time applies to (processor, system); ---------------------------------------------------- Clock_Period: Time applies to (processor, system); ---------------------------------------------------- Clock_Period_Range: Time_Range applies to (processor, system); ---------------------------------------------------- Compute_Deadline: Time applies to (thread, device, subprogram, event port, event data port); ---------------------------------------------------- Compute_Entrypoint: aadlstring applies to (thread, subprogram, event port, event data port); ---------------------------------------------------- Compute_Execution_Time: Time_Range applies to (thread, device, subprogram, event port, event data port); ---------------------------------------------------- Concurrency_Control_Protocol: Supported_Concurrency_Control_Protocols => NoneSpecified applies to (data); ---------------------------------------------------- Connection_Protocol: Supported_Connection_Protocols applies to (connections); ---------------------------------------------------- Data_Volume: type aadlinteger 0 bitsps .. value(Max_Aadlinteger) units (bitsps, Bps => bitsps * 8, Kbps => Bps * 1000, Mbps => Kbps * 1000, Gbps => Mbps * 1000 ); ---------------------------------------------------- Deactivate_Deadline: Time applies to (thread); ---------------------------------------------------- Deactivate_Execution_Time: Time_Range applies to (thread); ---------------------------------------------------- Deactivate_Entrypoint: aadlstring applies to (thread); ---------------------------------------------------- Deadline: inherit Time => value(Period) applies to (thread, thread group, process, system, device); ---------------------------------------------------- Dequeue_Protocol: enumeration (OneItem, AllItems) => OneItem applies to (event port, event data port); ---------------------------------------------------- Device_Dispatch_Protocol: Supported_Dispatch_Protocols => Aperiodic applies to (device); ---------------------------------------- Device_Register_Address: aadlinteger applies to (port, port group); ---------------------------------------------------- Dispatch_Protocol: Supported_Dispatch_Protocols applies to (thread); ---------------------------------------------------- Expected_Latency: Time applies to (flow); ---------------------------------------------------- Expected_Throughput: Data_Volume applies to (flow); ---------------------------------------------------- Finalize_Deadline: Time applies to (thread); ---------------------------------------------------- Finalize_Execution_Time: Time_Range applies to (thread); ---------------------------------------------------- Finalize_Entrypoint: aadlstring applies to (thread); ---------------------------------------------------- Hardware_Description_Source_Text: inherit list of aadlstring applies to (memory, bus, device, processor, system); ---------------------------------------------------- Hardware_Source_Language: Supported_Hardware_Source_Languages applies to (memory, bus, device, processor, system); ---------------------------------------------------- Initialize_Deadline: Time applies to (thread); ---------------------------------------------------- Initialize_Execution_Time: Time_Range applies to (thread); ---------------------------------------------------- Initialize_Entrypoint: aadlstring applies to (thread); ---------------------------------------------------- Latency: Time applies to (flow, connections); ---------------------------------------------------- Load_Deadline: Time applies to (process, system); ---------------------------------------------------- Load_Time: Time_Range applies to (process, system); ---------------------------------------------------- Memory_Protocol: enumeration (read_only, write_only, read_write) => read_write applies to (memory); ---------------------------------------------------- Not_Collocated: list of reference (data, thread, process, system, connections) applies to (data, thread, process, system, connections); ---------------------------------------------------- Overflow_Handling_Protocol: enumeration (DropOldest, DropNewest, Error) => DropOldest applies to (event port, event data port, subprogram); ---------------------------------------------------- Period: inherit Time applies to (thread, thread group, process, system, device); ---------------------------------------------------- Process_Swap_Execution_Time: Time_Range applies to (processor); ---------------------------------------------------- Propagation_Delay: Time_Range applies to (bus); ---------------------------------------------------- Provided_Access : access enumeration (read_only, write_only, read_write, by_method) => read_write applies to (data, bus); ---------------------------------------------------- Queue_Processing_Protocol: Supported_Queue_Processing_Protocols => FIFO applies to (event port, event data port, subprogram); ---------------------------------------------------- Queue_Size: aadlinteger 0 .. value(Max_Queue_Size) => 0 applies to (event port, event data port, subprogram); ---------------------------------------------------- Read_Time: list of Time_Range applies to (memory); ---------------------------------------------------- Recover_Deadline: Time applies to (thread, server subprogram); ---------------------------------------------------- Recover_Execution_Time: Time_Range applies to (thread, server subprogram); ---------------------------------------------------- Recover_Entrypoint: aadlstring applies to (thread); ---------------------------------------------------- Required_Access : access enumeration (read_only, write_only, read_write, by_method) => read_write applies to (data, bus); ---------------------------------------------------- Required_Connection : aadlboolean => true applies to (port); ---------------------------------------------------- Runtime_Protection : inherit aadlboolean => true applies to (process, system); ---------------------------------------------------- Scheduling_Protocol: list of Supported_Scheduling_Protocols applies to (processor); ---------------------------------------------------- Server_Subprogram_Call_Binding: inherit list of reference (thread, processor) applies to (subprogram, thread, thread group, process, system); ---------------------------------------------------- Size: type aadlinteger 0 B .. value (Max_Memory_Size) units Size_Units; -- OLD DECLARATION: -- Size: type aadlinteger 0 B .. value (Max_Memory_Size); -- This is wrong according to the AADL standard 1.0 page 150: -- "An aadlinteger property type represents an integer value or an -- integer value and its measurement unit. If an units clause is -- present, then the value is a pair of values, and unit may only -- be one of the enumeration literals specified in the units -- clause. *IF AN UNITS CLAUSE IS ABSENT, THEN THE VALUE IS AN -- INTEGER VALUE*. If a simple range is present, then the integer -- value must be an element of the specified range" ---------------------------------------------------- Size_Range: type range of Size; ---------------------------------------------------- Source_Code_Size: Size applies to (data, thread, thread group, process, system, subprogram, processor, device); ---------------------------------------------------- Source_Data_Size: Size applies to (data, subprogram, thread, thread group, process, system, processor, device); ---------------------------------------------------- Source_Heap_Size: Size applies to (thread, subprogram); ---------------------------------------------------- Source_Language: inherit Supported_Source_Languages applies to (subprogram, data, thread, thread group, process, bus, device, processor, system); ---------------------------------------------------- Source_Name: aadlstring applies to (data, port, subprogram, parameter); ---------------------------------------------------- Source_Stack_Size: Size applies to (thread, subprogram, processor, device); ---------------------------------------------------- Source_Text: inherit list of aadlstring applies to (data, port, subprogram, thread, thread group, process, system, memory, bus, device, processor, parameter, port group); ---------------------------------------------------- Startup_Deadline: inherit Time applies to (processor, system); ---------------------------------------------------- Subprogram_Execution_Time: Time_Range applies to (subprogram); ---------------------------------------------------- Supported_Source_Language: list of Supported_Source_Languages applies to (processor, system); ---------------------------------------------------- Synchronized_Component: inherit aadlboolean => true applies to (thread, thread group, process, system); ---------------------------------------------------- Thread_Limit: aadlinteger 0 .. value(Max_Thread_Limit) => value(Max_Thread_Limit) applies to (processor); ---------------------------------------------------- Thread_Swap_Execution_Time: Time_Range applies to (processor, system); ---------------------------------------------------- Throughput: Data_Volume applies to (flow, connections); ---------------------------------------------------- Time: type aadlinteger 0 ps .. value(Max_Time) units Time_Units; -- OLD DECLARATION: -- Time: type aadlinteger 0 ps .. value(Max_Time); -- This is wrong according to the AADL standard 1.0 page 150: -- "An aadlinteger property type represents an integer value or an -- integer value and its measurement unit. If an units clause is -- present, then the value is a pair of values, and unit may only -- be one of the enumeration literals specified in the units -- clause. *IF AN UNITS CLAUSE IS ABSENT, THEN THE VALUE IS AN -- INTEGER VALUE*. If a simple range is present, then the integer -- value must be an element of the specified range" ------------------------------------------------------ Time_Range: type range of Time; ------------------------------------------------------ Transmission_Time: list of Time_Range applies to (bus); ------------------------------------------------------ Type_Source_Name: aadlstring applies to (data, port, subprogram); ------------------------------------------------------ Urgency: aadlinteger 0 .. value(Max_Urgency) applies to (port); ---------------------------------------------------- Word_Count: aadlinteger 0 .. value(Max_Word_Count) applies to (memory); ---------------------------------------------------- Word_Size: Size => 8 bits applies to (memory); ---------------------------------------------------- Word_Space: aadlinteger 1 .. value(Max_Word_Space) => 1 applies to (memory); ---------------------------------------------------- Write_Time: list of Time_Range applies to (memory); ---------------------------------------------------- ---------------------------------------------------- end AADL_Properties;