Commit d3b4c877 authored by jdelange's avatar jdelange

* ocarina/tests/test042/test.aadl.out

   ocarina/tests/test042/test.aadl
   ocarina/resources/AADLv2/arinc653_properties.aadl
   ocarina/examples/real/safety/model.aadl
    - Update the testsuite to take into account the new
      ARINC653 properties.



git-svn-id: https://tecsw.estec.esa.int/svn/taste/trunk/ocarina@4606 129961e7-ef38-4bb5-a8f7-c9a525a55882
parent 2a4e0d26
......@@ -10,7 +10,7 @@ virtual processor partition
properties
POK::Scheduler => RR;
ARINC653::HM_Errors => (Partition_Init);
ARINC653::HM_Actions => (Partition_Stop);
ARINC653::HM_Partition_Recovery_Actions => (Partition_Stop);
end partition;
virtual processor implementation partition.impl
......@@ -31,7 +31,7 @@ properties
POK::Slots => (500ms, 500ms);
POK::Slots_Allocation => ( reference (part1), reference (part2));
ARINC653::HM_Errors => (Module_Config);
ARINC653::HM_Actions => (Module_Stop);
ARINC653::HM_Module_Recovery_Actions => (Stop);
end ppc.impl;
process myprocess
......@@ -66,7 +66,7 @@ properties
deadline => 500ms;
compute_execution_time => 0ms .. 1ms;
ARINC653::HM_Errors => (Illegal_Request);
ARINC653::HM_Actions => (Process_Stop);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop);
end mythread.impl1;
thread implementation mythread.impl2
......
-- Property set for the ARINC653 annex
-- This version comes with the annex draft issued on 20090727
-- This version comes with the annex draft issued on 12152010
property set ARINC653 is
......@@ -8,9 +8,9 @@ property set ARINC653 is
Slots_Allocation: list of reference (virtual processor)
applies to (processor);
Module_Major_Frame : Time applies to (processor);
Module_Major_Frame: Time applies to (processor);
Sampling_Refresh_Period : Time applies to (data port);
Sampling_Refresh_Period: Time applies to (data port);
Supported_Error_Code: type enumeration
(Module_Config, -- module level errors
......@@ -30,51 +30,57 @@ property set ARINC653 is
Power_Fail
);
Supported_Partition_Recovery_Action : type enumeration
Supported_Partition_Recovery_Action: type enumeration
(Ignore, Partition_Stop, Warm_Restart, Cold_Restart);
Supported_Process_Recovery_Action : type enumeration
Supported_Process_Recovery_Action: type enumeration
(Ignore, Confirm, Partition_Stop, Process_Stop,
Process_Stop_And_Start_Another, Process_Restart,
Nothing, Cold_Restart, Warm_Restart);
Supported_Module_Recovery_Action : type enumeration
Supported_Module_Recovery_Action: type enumeration
(Ignore, Stop, Reset);
HM_Module_Recovery_Actions : list of
ARINC653::Supported_Module_Recovery_Action applies to (processor);
HM_Module_Recovery_Actions: list of
ARINC653::Supported_Module_Recovery_Action
applies to (processor);
HM_Partition_Recovery_Actions : list of
ARINC653::Supported_Partition_Recovery_Action applies to (virtual processor);
HM_Partition_Recovery_Actions: list of
ARINC653::Supported_Partition_Recovery_Action
applies to (virtual processor);
HM_Process_Recovery_Actions : list of
ARINC653::Supported_Process_Recovery_Action applies to (thread);
HM_Process_Recovery_Actions: list of
ARINC653::Supported_Process_Recovery_Action
applies to (thread);
-- The difference between ignore and nothing is that ignore does
-- not perform anything but logs the error. On the contrary,
-- nothing will do nothing, the HM CallBack should do everything.
Supported_Access_Type : type enumeration (read, write, read_write);
Supported_Access_Type: type enumeration (read, write, read_write);
Supported_Memory_Type: type enumeration (Data_Memory, Code_Memory, IO_Memory);
HM_Errors : list of ARINC653::Supported_Error_Code
HM_Errors : list of ARINC653::Supported_Error_Code
applies to (processor, virtual processor, thread);
HM_Callback : classifier (subprogram Classifier)
HM_Callback : classifier (subprogram classifier)
applies to (thread, virtual processor, processor);
Memory_Type : list of ARINC653::Supported_Memory_Type
applies to (memory);
Access_Type : ARINC653::Supported_Access_Type applies to (memory);
Access_Type : ARINC653::Supported_Access_Type
applies to (memory);
Timeout : Time applies to (data port, event data port, event port, data access);
Supported_DAL_Type : type enumeration (LEVEL_A, LEVEL_B, LEVEL_C, LEVEL_D, LEVEL_E);
DAL : ARINC653::Supported_DAL_Type applies to (virtual processor);
DAL : ARINC653::Supported_DAL_Type
applies to (virtual processor);
System_Overhead_Time : Time applies to (processor, virtual processor);
System_Overhead_Time : Time
applies to (processor, virtual processor);
end ARINC653;
......@@ -17,7 +17,6 @@ end ordercmd;
data protected_data
properties
Concurrency_Control_Protocol => Protected_Access;
ARINC653::Queueing_Discipline => FIFO;
end protected_data;
......@@ -66,8 +65,8 @@ properties
Period => 20 ms;
Compute_Execution_Time => 10 ms .. 12 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Missed, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Actions => (Process_Stop_And_Reinit, Process_Stop_And_Reinit, Ignore, Ignore);
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Ignore, Ignore);
end sensor_temperature_thread;
thread implementation sensor_temperature_thread.impl
......@@ -84,8 +83,8 @@ properties
Period => 20 ms;
Compute_Execution_Time => 8 ms .. 10 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Missed, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Actions => (Process_Stop_And_Reinit, Process_Stop_And_Reinit, Process_Stop_And_Reinit, Process_Stop_And_Reinit);
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end sensor_receiveinput_thread;
thread implementation sensor_receiveinput_thread.impl
......@@ -106,8 +105,8 @@ properties
Period => 20 ms;
Compute_Execution_Time => 5 ms .. 7 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Missed, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Actions => (Process_Stop_And_Reinit, Process_Stop, Process_Stop, Process_Stop);
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end commandboard_receiveinput_thread;
thread commandboard_printinfos_thread
......@@ -123,17 +122,15 @@ properties
Period => 20 ms;
Compute_Execution_Time => 2 ms .. 6 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Missed, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Actions => (Process_Stop_And_Reinit, Process_Stop_And_Reinit, Process_Stop_And_Reinit, Process_Stop_And_Reinit);
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end commandboard_printinfos_thread;
-- Now, declare process that model partition address space
process partition1_process
features
queueingin: in event data port integer {Queue_Size => 4;
ARINC653::Timeout => 5ms;
ARINC653::Queueing_Discipline => FIFO;};
queueingin: in event data port integer {Queue_Size => 4;};
-- In the context of a event data port, the ARINC653::Timeout property
-- is the timeout we used in the APEX functions.
-- More, the Queue_Size property is used to compute the size of the queue
......@@ -155,7 +152,7 @@ end partition1_process.impl;
process partition2_process
features
queueingout: out event data port integer {ARINC653::Timeout => 10ms;};
queueingout: out event data port integer;
-- In the context of a event data port, the ARINC653::Timeout property
-- is the timeout we used in the APEX functions.
samplingin: in data port integer {ARINC653::Sampling_Refresh_Period => 10ms;};
......@@ -177,8 +174,8 @@ connections
eventconnectionexample: port receiver.newavg -> printer.newavg;
port printer.ordersensor -> queueingout;
port samplingin -> receiver.temp;
data access sem -> receiver.need_semaphore {ARINC653::Timeout => 20 ms;};
data access sem -> printer.need_semaphore {ARINC653::Timeout => 10 ms;};
data access sem -> receiver.need_semaphore;
data access sem -> printer.need_semaphore;
end partition2_process.impl;
-- Main runtime
......@@ -195,7 +192,7 @@ properties
ARINC653::Partition_Slots => (10ms, 10ms, 30ms);
ARINC653::Slots_Allocation => (reference (part1), reference (part2), reference (part1));
ARINC653::HM_Errors => (Power_Fail);
ARINC653::HM_Actions => (Module_Restart);
ARINC653::HM_Module_Recovery_Actions => (Reset);
end powerpc.impl;
......@@ -239,4 +236,4 @@ properties
end arincsystem.impl;
end PartitionedSystemExample;
\ No newline at end of file
end PartitionedSystemExample;
test.aadl:20:04: ARINC653::Queueing_Discipline (property association) does not point to anything
test.aadl:20:34: (property term) does not point to anything or to something unreachable
test.aadl:69:27: (property term) does not point to anything or to something unreachable
test.aadl:70:28: (property term) does not point to anything or to something unreachable
test.aadl:70:52: (property term) does not point to anything or to something unreachable
test.aadl:87:27: (property term) does not point to anything or to something unreachable
test.aadl:88:28: (property term) does not point to anything or to something unreachable
test.aadl:88:52: (property term) does not point to anything or to something unreachable
test.aadl:88:77: (property term) does not point to anything or to something unreachable
test.aadl:88:102: (property term) does not point to anything or to something unreachable
test.aadl:109:27: (property term) does not point to anything or to something unreachable
test.aadl:110:28: (property term) does not point to anything or to something unreachable
test.aadl:126:27: (property term) does not point to anything or to something unreachable
test.aadl:127:28: (property term) does not point to anything or to something unreachable
test.aadl:127:52: (property term) does not point to anything or to something unreachable
test.aadl:127:77: (property term) does not point to anything or to something unreachable
test.aadl:127:102: (property term) does not point to anything or to something unreachable
test.aadl:136:44: ARINC653::Queueing_Discipline (property association) does not point to anything
test.aadl:136:74: (property term) does not point to anything or to something unreachable
Cannot analyze AADL specifications
property set ARINC653 is
Partition_Slots : list of Time
applies to (processor);
Slots_Allocation : list of reference (
virtual processor)
applies to (processor);
Module_Major_Frame : Time
applies to (processor);
Sampling_Refresh_Period : Time
applies to (data port);
Supported_Error_Code : type enumeration (Module_Config, Module_Init, Module_Scheduling, Partition_Scheduling, Partition_Config, Partition_Handler, Partition_Init, Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request, Stack_Overflow, Memory_Violation, Hardware_Fault, Power_Fail);
Supported_Partition_Recovery_Action : type enumeration (Ignore, Partition_Stop, Warm_Restart, Cold_Restart);
Supported_Process_Recovery_Action : type enumeration (Ignore, Confirm, Partition_Stop, Process_Stop, Process_Stop_And_Start_Another, Process_Restart, Nothing, Cold_Restart, Warm_Restart);
Supported_Module_Recovery_Action : type enumeration (Ignore, Stop, Reset);
HM_Module_Recovery_Actions : list of ARINC653::Supported_Module_Recovery_Action
applies to (processor);
HM_Partition_Recovery_Actions : list of ARINC653::Supported_Partition_Recovery_Action
applies to (virtual processor);
HM_Process_Recovery_Actions : list of ARINC653::Supported_Process_Recovery_Action
applies to (thread);
Supported_Access_Type : type enumeration (read, write, read_write);
Supported_Memory_Type : type enumeration (Data_Memory, Code_Memory, IO_Memory);
HM_Errors : list of ARINC653::Supported_Error_Code
applies to (processor, virtual processor, thread);
HM_Callback : classifier (
subprogram classifier)
applies to (thread, virtual processor, processor);
Memory_Type : list of ARINC653::Supported_Memory_Type
applies to (memory);
Access_Type : ARINC653::Supported_Access_Type
applies to (memory);
Timeout : Time
applies to (data port, event data port, event port, component access);
Supported_DAL_Type : type enumeration (LEVEL_A, LEVEL_B, LEVEL_C, LEVEL_D, LEVEL_E);
DAL : ARINC653::Supported_DAL_Type
applies to (virtual processor);
System_Overhead_Time : Time
applies to (processor, virtual processor);
end ARINC653;
package PartitionedSystemExample
public
with ARINC653;
data integer
end integer;
data ordercmd
end ordercmd;
data protected_data
properties
Concurrency_Control_Protocol => Protected_Access;
end protected_data;
virtual processor partition1_rt
properties
Scheduling_Protocol => (EARLIEST_DEADLINE_FIRST_PROTOCOL);
end partition1_rt;
virtual processor implementation partition1_rt.impl
end partition1_rt.impl;
virtual processor partition2_rt
properties
Scheduling_Protocol => (RATE_MONOTONIC_PROTOCOL);
end partition2_rt;
virtual processor implementation partition2_rt.impl
end partition2_rt.impl;
subprogram sensor_temperature_spg
end sensor_temperature_spg;
subprogram sensor_receiveinput_spg
end sensor_receiveinput_spg;
subprogram commandboard_receiveinput_spg
end commandboard_receiveinput_spg;
subprogram commandboard_printinfos_spg
end commandboard_printinfos_spg;
thread sensor_temperature_thread
features
tempout : out data port integer;
order : in event data port ordercmd;
properties
Initialize_Entrypoint => classifier (PartitionedSystemExample::sensor_temperature_spg);
Priority => 42;
Source_Stack_Size => 100 Kbyte;
Period => 20 ms;
Compute_Execution_Time => 10 ms .. 12 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Ignore, Ignore);
end sensor_temperature_thread;
thread implementation sensor_temperature_thread.impl
end sensor_temperature_thread.impl;
thread sensor_receiveinput_thread
features
commandin : in event data port integer;
order : out event data port ordercmd;
properties
Initialize_Entrypoint => classifier (PartitionedSystemExample::sensor_receiveinput_spg);
Priority => 10;
Source_Stack_Size => 100 Kbyte;
Period => 20 ms;
Compute_Execution_Time => 8 ms .. 10 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end sensor_receiveinput_thread;
thread implementation sensor_receiveinput_thread.impl
end sensor_receiveinput_thread.impl;
thread commandboard_receiveinput_thread
features
temp : in data port integer;
tempavg : requires data access integer;
newavg : out event port;
need_semaphore : requires data access protected_data;
properties
Initialize_Entrypoint => classifier (PartitionedSystemExample::commandboard_receiveinput_spg);
Priority => 42;
Source_Stack_Size => 100 Kbyte;
Period => 20 ms;
Compute_Execution_Time => 5 ms .. 7 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end commandboard_receiveinput_thread;
thread commandboard_printinfos_thread
features
ordersensor : out event data port integer;
tempavg : requires data access integer;
newavg : in event port;
need_semaphore : requires data access protected_data;
properties
Initialize_Entrypoint => classifier (PartitionedSystemExample::commandboard_printinfos_spg);
Priority => 43;
Source_Stack_Size => 100 Kbyte;
Period => 20 ms;
Compute_Execution_Time => 2 ms .. 6 ms;
Deadline => 40 ms;
ARINC653::HM_Errors => (Deadline_Miss, Application_Error, Numeric_Error, Illegal_Request);
ARINC653::HM_Process_Recovery_Actions => (Process_Stop, Process_Stop, Process_Stop, Process_Stop);
end commandboard_printinfos_thread;
process partition1_process
features
queueingin : in event data port integer
{Queue_Size => 4;};
samplingout : out data port integer;
end partition1_process;
process implementation partition1_process.impl
subcomponents
temperature : thread sensor_temperature_thread.impl;
order : thread sensor_receiveinput_thread.impl;
connections
bufferconnectionexample : port order.order -> temperature.order;
port queueingin -> order.commandin;
port temperature.tempout -> samplingout;
end partition1_process.impl;
process partition2_process
features
queueingout : out event data port integer;
samplingin : in data port integer
{ARINC653::Sampling_Refresh_Period => 10 ms;};
end partition2_process;
process implementation partition2_process.impl
subcomponents
receiver : thread commandboard_receiveinput_thread;
printer : thread commandboard_printinfos_thread;
sem : data protected_data;
blackboard : data integer;
connections
blackboardconnection1 : data access blackboard -> printer.tempavg;
blackboardconnection2 : data access blackboard -> receiver.tempavg;
eventconnectionexample : port receiver.newavg -> printer.newavg;
port printer.ordersensor -> queueingout;
port samplingin -> receiver.temp;
data access sem -> receiver.need_semaphore;
data access sem -> printer.need_semaphore;
end partition2_process.impl;
processor powerpc
end powerpc;
processor implementation powerpc.impl
subcomponents
part1 : virtual processor partition1_rt.impl;
part2 : virtual processor partition2_rt.impl;
properties
ARINC653::Module_Major_Frame => 50 ms;
ARINC653::Partition_Slots => (10 ms, 10 ms, 30 ms);
ARINC653::Slots_Allocation => (reference ( part1 ), reference ( part2 ), reference ( part1 ));
ARINC653::HM_Errors => (Power_Fail);
ARINC653::HM_Module_Recovery_Actions => (Reset);
end powerpc.impl;
memory partition1_memory
properties
Base_Address => 0;
end partition1_memory;
memory partition2_memory
properties
Base_Address => 100;
end partition2_memory;
memory main_memory
end main_memory;
memory implementation main_memory.impl
subcomponents
part1mem : memory partition1_memory;
part2mem : memory partition2_memory;
end main_memory.impl;
system arincsystem
end arincsystem;
system implementation arincsystem.impl
subcomponents
mem : memory main_memory.impl;
cpu : processor powerpc.impl;
partition1_pr : process partition1_process.impl;
partition2_pr : process partition2_process.impl;
connections
samplingconnection : port partition1_pr.samplingout -> partition2_pr.samplingin;
queueingconnection : port partition2_pr.queueingout -> partition1_pr.queueingin;
properties
Actual_Processor_Binding => (reference ( cpu.part1 ))
applies to partition1_pr;
Actual_Processor_Binding => (reference ( cpu.part2 ))
applies to partition2_pr;
Actual_Memory_Binding => (reference ( mem.part1mem ))
applies to partition1_pr;
Actual_Memory_Binding => (reference ( mem.part2mem ))
applies to partition2_pr;
end arincsystem.impl;
end PartitionedSystemExample;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment