Closed ethantmcgee closed 11 years ago
I agree the message is not user friendly. Basically your model is incomplete: your model is made of systems and processes, two categories of components without behavior. Hence, the backend bugs on an incomplete model, you needs threads to have a working model. Please review the examples in Ocarina distribution.
Thanks.
Perhaps you might answer one further question about an error. I'm getting a Thread Implementation unknown error after adding in the threads and an appropriate subprogram.
package vehicle
public
data on_off
end on_off;
------------------------------------------------------------------------------------------
subprogram vehicle_subprogram
features
input: in parameter on_off;
output: out parameter on_off;
end vehicle_subprogram;
subprogram implementation vehicle_subprogram.impl
properties
Compute_Execution_Time => 1 Us .. 1 Us;
end vehicle_subprogram.impl;
------------------------------------------------------------------------------------------
thread computation
features
input: in data port on_off;
output: out data port on_off;
end computation;
thread implementation computation.standard
calls
Main: {
computation: subprogram vehicle_subprogram.impl;
};
connections
parameter input -> computation.input;
parameter computation.output -> output;
properties
Dispatch_Protocol => Periodic;
Period => 10 Ms;
Compute_Execution_Time => 1 Us .. 1 Us;
end computation.standard;
------------------------------------------------------------------------------------------
process control
features
command_data: out data port on_off;
engage: out data port on_off;
disengage: out data port on_off;
end control;
process implementation control.standard
subcomponents
computation: thread computation.standard;
end control.standard;
------------------------------------------------------------------------------------------
feature group vehicle_cmd_out
features
speed_command: in data port on_off;
position_command: in data port on_off;
airbag_command: in data port on_off;
direction_command: in data port on_off;
end vehicle_cmd_out;
system vehicle
features
vehicle_cmd_input: feature group vehicle_cmd_out;
end vehicle;
system implementation vehicle.standard
subcomponents
speed_controller: process control.standard;
position_controller: process control.standard;
airbag_controller: process control.standard;
direction_controller: process control.standard;
connections
event_distribution1: port vehicle_cmd_input.speed_command -> speed_controller.command_data;
event_distribution2: port vehicle_cmd_input.position_command -> position_controller.command_data;
event_distribution3: port vehicle_cmd_input.airbag_command -> airbag_controller.command_data;
event_distribution4: port vehicle_cmd_input.direction_command -> direction_controller.command_data;
end vehicle.standard;
system root
end root;
system implementation root.impl
subcomponents
vehicle: system vehicle.standard;
end root.impl;
end vehicle;
The exact error with line number and stack trace is:
------------------------------------------
------ Ocarina Petri Nets Generator ------
------------------------------------------
+========================== OCARINA BUG DETECTED =========================+
| Detected exception: CONSTRAINT_ERROR |
| Error: ocarina-me_aadl-aadl_instances-nodes.adb:98 index check failed |
| Please refer to the User's Guide for more details. |
+=========================================================================+
Exception name: CONSTRAINT_ERROR
Message: ocarina-me_aadl-aadl_instances-nodes.adb:98 index check failed
Call stack traceback locations:
0x83c3562 0x80da621 0x80da4ac 0x80d9c2b 0x80d73a0 0x80d71d5 0x80d71a0 0x80d71a0 0x80d3c8d
0x833d514 0x833d71e 0x829c00b 0x806901e 0x8066b4f 0xb7672e44
Finally, I look at a several of the examples. Most of them, as far as I can tell, fail to pass through Ocarina. Is there an example within the distribution (written in AADLv2) that will successfully return? If so, would you mind posting the path to it within the distribution.
I updated an AADL1.0 example to v2 in commit d1c0a477c43588a550a2b163e1e754450c4de13b
Note your second model is also incomplete, I'll update the error message as well
Regarding the second test case, Ocarina now reports this: test2.aadl:24:09 Backends: fatal error : This IN port is not connected to any destination
and actually, ports of the threads are not connected to the corresponding ports of the enclosing process. If you have further inquiries, please open a separate issue.
Thank you very much for the upgraded example. I understand now what was causing the code to fail. Thanks for the quick responses and upgraded error messages.
While trying to compile aadl v2 code into a petri net I run into the following error.
The aadl code is as follows:
The command used to launch ocarina is
Not sure if the error is on my end or if this is something wrong in ocarina. Thanks for any assistance that you are able to offer.