Professional Documents
Culture Documents
page 3
Outline
Goal: introduce model-based analysis of embedded systems using
the AADLv2 Architecture Description Language
Part 1: Introduction to AADLv2 core (about 60’)
Syntax, semantics of the language
Part 2: introducing a case study (about 30’)
A radar illustrative case study
Part 3: Scheduling analysis (about 60’)
Introducing real-time scheduling theory and its use with
AADL
Part 4 : code generation (about 60’)
How to generate code from an AADL model and how to run it
page 4
Presentation of the AADL:
Architecture Analysis and
Design Language
Outline
page 2
Introduction
ADL, Architecture Description Language:
Goal : modeling software and hardware architectures
to master complexity … to perform analysis
Concepts : components, connections, configuration.
Many ADLs : formal/non formal, application domain,
…
page 3
AADL: Architecture Analysis & Design Language
International standard promoted by the SAE (Society of
Automotive Engineers), AS-2C committee, released as AS-
5506A.
Version 1.0 published in 2004, version 2 in 2009
http://aadl.info list all resources around AADL
Public wiki with lot of resources:
https://wiki.sei.cmu.edu/aadl/index.php/Main_Page
Include link to most research activities around AADL
Different representations :
Graphical (high-level view of the system),
Textual (to view all details),
XML (to ease processing by 3rd party tool)
page 4
A is for Analysis
AADL objectives are “to model a system”
With analysis in mind (different analysis)
To ease transition from well-defined
requirements to the final system : code
production
page 5
AADL components
AADL model : hierarchy/tree of components
AADL component:
Model a software or a hardware entity
Has a type/interface, one or several implementations
May be organized in packages (reusable)
May have subcomponents
May combine/extend/refine others
May have properties : valued attributes (source code file name,
priority, WCET, memory consumption, …)
Component interactions :
Modeled by component connections
AADL features are connection points
page 6
AADL components
How to declare a component:
Component type: name, category, properties, features.
Component implementation: internal structure (subcomponents),
properties
page 11
AADL concepts
AADL introduces many other concepts:
Related to embedded real-time distributed systems :
AADL flows: capture high-level data+execution flows
AADL modes: models an operational mode in the form of an alternative set
of active components/connections/…
To ease models design/management:
AADL packages (similar to Ada, renames, private/public)
AADL abstract component, component extension
…
page 12
Outline
page 13
A full AADL system : a tree of component
instances
Component types and
implementations only define a
library of entities (classifiers) Root System
An AADL model is a set of
component instances (of the Sub System Process Processor
classifiers)
System must be instantiated
through a hierarchy of Thread Data
subcomponents, from root
(system) to the leafs Subprogram
(subprograms, ..)
We must choose a system
implementation component as
the root system model !
page 14
Software components categories
thread : schedulable execution flow, Ada or VxWorks task,
Java or POSIX thread. Execute programs
data : data placeholder, e.g. C struct, C++ class, Ada record
process : address space. It must hold at least one thread
subprogram : a sequential execution flow. Associated to a
source code (C, Ada) or a model (SCADE, Simulink)
thread group : hierarchy of threads
page 15
Software components
Example of a process component : composed
of two threads
page 16
Software components
Example of a thread component : a thread
may call different subprograms
page 17
Hardware components categories
processor/virtual processor : schedule component
(combined CPU and RTOS scheduler). A processor may
contain multiple virtual processors.
memory : model data storage (memory, hard drive)
device : component that interacts with the environment.
Internals (e.g. firmware) is not modeled.
bus/virtual bus : data exchange mechanism between
components
bus Processor
Device Memory
page 18
« system » category
system :
1. Help structuring an architecture, with its own
hierarchy of subcomponents. A system can include
one or several subsystems.
2. Root system component.
3. Model the deployment of components inside the
component hierarchy. Concept of binding.
System
page 19
« system » category
subprogram Receiver_Spg … device antenna
thread receiver … end antenna;
page 22
AADL properties
Property:
Typed attribute, associated to one or more components
Property = name + type + associated components
Property association = property name + value.
Property sets :
Group property definitions.
Property sets part of the standard, e.g. AADL_Project.
Or user-defined, e.g. for new analysis: power, weight
Example :
property set Thread_Properties is
...
Deadline : aadlinteger applies to (thread, device, …);
Source_Text : inherit list of aadlstring applies to (data, port, thread, …);
...
end Thread_Properties;
page 24
AADL properties
Properties are typed with units to model physical
systems
page 25
AADL properties
Properties are associated to a component type
(1) or implementation (2), as part of a
subcomponent instance (3), or a contained
property association (4).
thread receiver
properties -- (1)
Compute_Execution_Time => 3 .. 4 ms; process implementation processing.others
subcomponents
Period => 150 ms; receive1 : thread receiver.impl;
end receiver; receive2 : thread receiver.impl
{Deadline => 200 ms;}; -- (3)
thread implementation receiver.impl
properties – (2) properties – (4)
Deadline => 150 ms; Deadline => 300 ms applies to receive1;
Period => 160 ms, end processing.others;
end receiver.impl;
page 26
Outline
page 27
Component connection
Component connection: model component interactions, control
flow and/or data flow. E.g. exchange of message, remote call (RPC),
page 28
Component connection
Features of subcomponents are connected in
the “connections” subclause of the enclosing
component
Ex: threads & thread connection on data port
thread analyser
features process implementation processing.others
analyser_out : out data port subcomponents
Target_Position.Impl; display : thread display_panel.impl;
end analyser; analyse : thread analyser.impl;
connections
thread display_panel port analyse.analyser_out -> display.display_in;
features end processing.others;
display_in : in data port Target_Position.Impl;
end display_panel;
page 29
Data connection policies
Multiple policies exist to control production
and consumption of data by threads:
page 30
Data connection policies
2. Immediate: receiver thread is immediately
awaken, and will read data when emitter finished
3. Delayed: actual transmission is delayed to the
next time frame
1. These two policies allow for deterministic
communication, hence stability of the computation
page 31
Component connection
Thread & subprogram connection
subprogram Receiver_Spg
features
thread implementation receiver.impl
spg_out : out parameter
calls {
Target_Distance;
RS: subprogram Receiver_Spg;
spg_in : in parameter
};
Target_Distance;
connections
end Receiver_Spg;
parameter RS.spg_out -> receiver_out;
parameter receiver_in -> RS.spg_in;
end receiver.impl; thread receiver
features
receiver_out : out data port
Target_Distance;
receiver_in : in data port
Target_Distance;
end receiver;
page 32
Component connection
Connecting threads and shared data:
data shared_var;
end shared_var;
thread Remote
features
MyCalc: provides subprogram access Calc;
end Remote;
thread caller
features
MyCalc: requires subprogram access Calc;
end caller;
page 34
Outline
page 35
AADL & Tools
Tools are mandatory to exploit any models
Otherwise, resort to traditional engineering, no value added
page 36
AADL & Tools
STOOD, ADELE (Ellidiss) http://www.ellidiss.com
Graphical editors for AADLv1 et v2, code/documentation
generation
page 37
AADL & Tools
Cheddar (UBO/Lab-STICC) http://beru.univ-brest.fr/~singhoff/cheddar/
Import of AADLV1 models
Performance analysis, dimensioning
Based on real-time scheduling theory, and queueing theory
page 38
AADL & Tools
AADLInspector (Ellidiss) http://www.ellidiss.com
Lightweight tool to inspect AADL models, in text form
Connection with Cheddar, Simulation Engine,
AADLv2 only
page 39
AADL & Tools
Ocarina (ISAE -- http://www.openaadl.org)
Command line tool, library to manipulate AADL models
AADLv1 & v2 parser, analyzer
Code generation for High-Integrity system, in C and Ada
Support for native, RTOS (RTEMS, RT-Linux), bare boards
Mapping to colored or timed Petri Nets, WCET, …
page 40
AADL : a radar case study
Back to radar case study
Goal: to model a simple radar system
Let us suppose we have the following
requirements
1. System implementation is composed by physical devices (Hardware entity):
antenna + processor + memory + bus
2. and software entity : running processes and threads + operating system
functionalities (scheduling) implemented in the processor that represent a
part of execution platform and physical devices in the same time.
3. The main process is responsible for signals processing : general pattern:
transmitter -> antenna -> receiver -> analyzer -> display
4. Analyzer is a periodic thread that compares transmitted and received
signals to perform detection, localization and identification.
5. [..]
page 2
Tools used for modeling
AADL syntax is both textual and graphical, with
several editors available
Modes exist for emacs, vi
OSATE2 provides a comprehensive IDE on top of
Eclipse, and additional plug-ins
IMV : Instance Model Viewer
Consistency checkers, statistics, etc.
Adele: graphical editor for Eclipse
PROCESS processing
-- …
END processing;
DEVICE antenna
-- …
END antenna;
END RADAR;
page 4
page 4
Radar case study
Hardware/Software breakdown: features
PROCESS processing in/out ports
FEATURES
to_screen : OUT EVENT PORT;
send_pulse : OUT EVENT PORT;
receive_pulse : IN DATA PORT;
get_angle : IN DATA PORT;
END processing;
DEVICE antenna
FEATURES
antenna_in : IN EVENT PORT; bus access
VME : REQUIRES BUS ACCESS VME;
END antenna;
page 5
page 5
Radar case study
Hardware/Software breakdown: connections
Logical cnx
Hardware cnx
page 6
page 6
Radar case study
Hardware/Software breakdown: connections
SYSTEM IMPLEMENTATION radar.simple
SUBCOMPONENTS
aerial : DEVICE antenna;
rotor : DEVICE motor;
monitor : DEVICE screen;
main : PROCESS processing.others;
cpu : PROCESSOR leon2;
VME : BUS VME;
RAM : MEMORY RAM;
CONNECTIONS
PORT aerial.antenna_out -> main.receive_pulse;
PORT rotor.motor_out -> main.get_angle;
PORT main.send_pulse -> aerial.antenna_in;
PORT main.to_screen -> monitor.screen_in;
BUS ACCESS VME -> aerial.VME;
BUS ACCESS VME -> rotor.VME;
BUS ACCESS VME -> monitor.VME;
BUS ACCESS VME -> cpu.VME;
page 7 BUS ACCESS VME -> RAM.VME;
Radar case study
Hardware/Software breakdown: bindings
PROPERTIES
Actual_Memory_Binding => reference (ram) applies to main;
Actual_Processor_Binding => reference (cpu) applies to main;
END radar.simple;
Bindings
page 8
page 8
Radar case study
Software elements
page 9
A few words on AADL usage
AADL is for architectural description, period
Not to be compared with UML suites
Behavior, types, link with source code is not required
page 10
AADL : about scheduling
analysis
Summary
page 2
Real-Time scheduling theory
1. A set of tasks models (to model functions of the system)
2. A set of analytical methods (feasibility tests)
E.g. Worst Case Response Time
Ri
Ri ≤ Deadline Ri = Ci + ∑ ⋅ C j
j∈hp ( i ) Pj
page 3
Real-Time scheduling theory is hard to apply
Real-Time scheduling theory
Theoretical results defined from 1974 to 1994:
feasibility tests exist for uniprocessor, periodic tasks,
shared resources
Extension through simulation for other cases
Now supported at a decent level by POSIX 1003
RTOS, ARINC653, …
Industry demanding
Yet, hard to use
page 4
Real-Time scheduling theory is hard to apply
Feasibility tests not always exist for modern architectures
Multi-cores, distributed, asynchronous, hierarchical
Requires strong theoretical knowledge
Numerous theoretical results: how to choose the right one ?
Numerous assumptions for each result.
How to abstract/model a system to access schedulability ? (e.g.
task dependency)
How to integrate scheduling analysis in the process ?
When to apply it ? What about tools ?
page 5
AADL to the rescue ?
AADL helps modeling a full system, including hardware,
task sets, connections, RTOS features, …
All of these elements are mandatory to apply real-time
scheduling theory
Example: an AADL model can include periodic tasks and usual
scheduling policies
Worst case execution time (or WCET), period, deadline
Fixed priority scheduling
page 6
Summary
page 7
Real-time scheduling theory : models of task
Task: sequence of statements + data + state.
page 10
Uniprocessor usual real-time scheduling
policies
On-line/off-line scheduling: the scheduling is
computed before or at execution time?
Fixed/dynamic priority scheduler: priorities may
change at execution time?
Preemptive or non preemptive scheduling: can we
stop a task during its execution ?
page 11
Uniprocessor fixed priority scheduling
Fixed priority scheduling :
Scheduling based on fixed priority => critical
applications.
Priorities are assigned at design time (off-line).
Efficient and simple feasibility tests.
Scheduler easy to implement into real-time operating
systems.
Rate Monotonic priority assignment :
Optimal assignment in the case of fixed priority
scheduling and uniprocessor.
Periodic tasks only.
page 12
Uniprocessor fixed priority scheduling
Two steps:
1. Rate monotonic priority assignment:
the highest priority tasks have the smallest periods. Priorities
are assigned off-line (e.g. at design time, before execution).
page 13
Uniprocessor fixed priority scheduling
Rate Monotonic assignment and preemptive
fixed priority scheduling:
=∑ / ≤ . (2 -1)
Rate Monotonic assignment and preemptive scheduling.
Sufficient but not necessary. Does not compute an exact
result.
3. Task worst case response time, noted ri : delay
between task release time and task end time. Sometime
an exact result. Any priority assignment but preemptive
scheduling.
page 15
Uniprocessor fixed priority scheduling
Compute ri, task i worst case response time:
Assumptions: preemptive scheduling, synchronous
periodic tasks.
page 16
Uniprocessor fixed priority scheduling
page 17
Uniprocessor fixed priority scheduling
Example: T1(P1=7, C1=3), T2 (P2=12, C2=2), T3 (P3=20, C3=5)
1 = 1 = 3 ⇒ "1 = 3
2 = 2=2
2 2
2 = C2 + . 1=2+ .3 = 5
1 7
2 5
2 = C2 + . 1=2+ . 3 = 5 ⇒ "2 = 5
1 7
3 = 3=5
3 3
3 = C3 + . 1+ . 2 = 10
1 2
3 3
3 = C3 + . 1+ . 2 = 13
1 2
3 3
3 = C3 + . 1+ . 2 = 15
1 2
3 3
3 = C3 + . 1+ . 2 = 18
1 2
3 3
3 = C3 + . 1+ . 2 = 18 ⇒ "3 = 18
1 2
page 18
Uniprocessor fixed priority scheduling
Example with the AADL case study:
“display_panel” thread which displays data. P=100, C=20.
“receiver” thread which sends data. P=250, C=50.
“analyser” thread which analyzes data. P=500, C=150.
page 20
Fixed priority and shared resources
Previous tasks were independent … does not
really exist in true life.
Task dependencies :
Shared resources.
E.g. with AADL: threads may wait for AADL protected data
component access.
Precedencies between tasks.
E.g with AADL: threads exchange data by data port
connections.
page 21
Fixed priority and shared resources
Shared resources are usually modeled by semaphores.
We use specific semaphores implementing inheritance protocols:
To take care of priority inversion.
To compute worst case task blocking time for the access to a
shared resource. Blocking time Bi.
Inheritance protocols:
PIP (Priority inheritance protocol), can not be used with more than
one shared resource due to deadlock.
PCP (Priority Ceiling Protocol) , implemented in most of real-time
operating systems (e.g. VxWorks).
Several implementations of PCP exists: OPCP, ICPP, …
page 22
Fixed priority and shared resources
What is Priority inversion: a low priority task blocks a
high priority task
Ri
Ri = Bi + Ci + ∑ ⋅ C j
j∈hp ( i ) Pj
page 25
To conclude on scheduling analysis
Many feasibility tests: depending on task, processor, scheduler, shared
resource parameters or dependencies. What about uniprocessor or
multiprocessor or hierarchical or distributed?
Ri
Ri = Ci + ∑ ⋅ C j
j∈hp ( i ) Pj
page 26
Summary
page 27
AADL to the rescue ?
Issues:
Ensure all required model elements are given for the analysis
Ensure model elements are compliant with analysis
requirements
Scheduling_Protocol:
inherit list of Supported_Scheduling_Protocols
applies to (virtual processor, processor);
-- RATE_MONOTONIC_PROTOCOL,
-- POSIX_1003_HIGHEST_PRIORITY_FIRST_PROTOCOL, ..
page 29
Property sets for scheduling analysis
Properties related to the threads/data:
Compute_Execution_Time: Time_Range
applies to (thread, subprogram, …);
Dispatch_Protocol: Supported_Dispatch_Protocols
applies to (thread);
-- Periodic, Sporadic, Timed, Hybrid, Aperiodic, Background,
...
Concurrency_Control_Protocol:
Supported_Concurrency_Control_Protocols applies to (data);
page 30
-- None, PCP, ICPP, …
Property sets for scheduling analysis
Example:
thread implementation receiver.impl process implementation processing.others
properties subcomponents
receiver : thread receiver.impl;
Dispatch_Protocol => Periodic; analyzer : thread analyzer.impl;
Compute_Execution_Time => 31 ms .. 50 ms; target : data target_position.impl;
Deadline => 250 ms; ...
Period => 250 ms; processor implementation leon2
end receiver.impl; properties
Scheduling_Protocol =>
data implementation target_position.impl RATE_MONOTONIC_PROTOCOL;
properties Preemptive_Scheduler => true;
Concurrency_Control_Protocol end leon2;
=> PRIORITY_CEILING_PROTOCOL; system implementation radar.simple
end target_position.impl; subcomponents
main : process processing.others;
cpu : processor leon2;
page 31 ...
Summary
page 32
Cheddar : a framework to access
schedulability
Cheddar tool =
analysis framework (queueing system theory & real-time scheduling theory)
+ internal ADL (architecture description language)
+ various standard ADL parsers (AADL, MARTE UML)
+ simple model editor.
Two versions :
Open source (Cheddar) : educational and research.
Industrial (AADLInspector) : Ellidiss Tech product.
Supports : Ellidiss Tech., Conseil régional de Bretagne, BMO,
EGIDE/Campus France, Thales Communication
page 34
A “design pattern” approach to increase
real-time scheduling usability
Specification of various design patterns:
• Time-triggered : time triggered architecture (data port
connection)
• Ravenscar : shared data and PCP (data component).
• Black board : readers/writers synchronization
• Queued buffer : producer/consumer synchronization
• …
• Compositions of design patterns.
page 35
The «Ravenscar» design pattern
Ravenscar:
Part of the Ada 1995 standard
A set of guidelines/constraints to enable efficient and deterministic task
scheduling of Ada programs
Later extended to Java RTSJ, C/POSIX, and AADL
page 38
AADL : about code generation
AADL objectives
AADL requirements document (SAE ARD 5296)
Analysis and Generation of systems
Generation can encompasses many dimensions
1. Generation of skeletons from AADL components
Like from UML class diagrams
2. Generation of system archetypes
Tasks, types, runtime configuration parameters, etc.
5
AADL: modeling data types
Solution: enhance definition of types
One step closer to source code
Note: irrelevant for scheduling analysis
subprogram Receiver_Spg
features
receiver_out : out parameter Target_Distance;
receiver_in : in parameter Target_Distance;
end Receiver_Spg;
data Target_Distance
properties
Data_Model::Data_Representation => integer;
end Target_Distance;
6
AADL and subprograms
Issue: how to bind user code ?
Solution: use default AADLv2 properties
subprogram Receiver_Spg
features
receiver_out : out parameter Target_Distance;
receiver_in : in parameter Target_Distance;
properties
Source_Language => (Ada95); -- defined in AADL_Project
Source_Name => "radar.receiver";
end Receiver_Spg;
7
AADL and programming languages
Issue: how to map source code ?
Solution: guidelines provided in the
programming language annex document
Mapping rules from AADL and the target language
Similarly OMG IDL mappings for CORBA
subprogram Receiver_Spg
features
receiver_out : out parameter Target_Distance;
receiver_in : in parameter Target_Distance;
end Receiver_Spg; procedure Receiver -- Ada
(Receiver_Out : out Target_Distance;
Receiver_In : Target_Distance);
void receiver /* C99 */
(target_distance *receiver_out,
target_distance receiver_in); 8
About AADL_Project
AADL_Project is a property set, project specific
Enumerators for particular configuration
Defined w.r.t. model processing tools
9
Attaching code to components
Connecting subprograms to threads
thread receiver
features
receiver_out : out data port radar_types::Target_Distance;
receiver_in : in data port radar_types::Target_Distance;
end receiver;
thread receiver2
features
receiver_in : in data port radar_types::Target_Distance
{Compute_Entrypoint => classifier (transmitter_spg);
-- Attaching subprogram to port, more precise
};
end receiver2;
11
Attaching code to components
Related properties
Activate_Entrypoint: upon thread activation
Compute_Entrypoint: dispatch
Finalize_Entrypoint: finalization
Initialize_Entrypoint: initialization of component
Recover_Entrypoint: in case of error
Exist for both textual symbols (<x>_Source_Text
property) or subprograms classifiers
Applied to thread, device, subprogram, event port, event
data port entities
12
AADL and code generation
Issue: How much code should we write ? Tasks
? Queues ?
Answer: the architecture says all
One can define a full framework and use it
Limited value
Generate as much things as possible
Reduce as much as possible error-prone and tedious tasks
14
Benefits of code generation ?
Is it worth a try ?
Of course yes !
One pivot notation based on a unique notation
A-priori validation, using Cheddar, BIP, TINA ..
Optimized code generation
Measures show a difference of 6% in size
16
The Radar case study v1
Model done with OSATE2
IMV for graphical view
17
Deployment on native target
AADL Processor: execution platform
processor cpu_leon2
properties
Scheduling_Protocol => (RMS);
-- Configuration of scheduler
Deployment::Execution_Platform => Native;
-- Target platform
end cpu_leon2;
page 18
Generating Cheddar + code
Result from Cheddar Traces from
execution./radar_v1/main/main
macbookair-hugues%
2) Feasibility test based on [ 0] Transmitter
worst case task response time : [ 0] Controller, motor is at angular position 1
[ 1] Analyser: target is at distance: 0 at angular
[ 1] Display_Panel: target is at ( 0, 0)
- Bound on task response time : [ 1] Receiver, target is at distance 1
main_analyse => 130 [ 500] Transmitter
main_display => 70 [ 1001] Transmitter
main_receive => 40 [ 1500] Transmitter
main_control_angle => 20 [ 1500] Receiver, target is at distance 2
main_transmit => 10 [ 1500] Controller, motor is at angular position 2
- All task deadlines will be met : [ 2000] Display_Panel: target is at ( 0, 0)
[ 2001] Transmitter
the task set is schedulable. [ 2500] Transmitter
[ 3000] Transmitter
[ 3000] Receiver, target is at distance 3
[ 3000] Controller, motor is at angular position 3
[ 3500] Transmitter
[ 4000] Transmitter
[ page
4000] Display_Panel: target is at ( 19
0, 0)
Assessment
It works ;)
Execution traces meet scheduling simulation
And expected behavior
Initial models use event ports
For each thread: one mutex + PCP is used
page 20
The Radar case study v2
Change port communication with shared
variable
21
Generating Cheddar + code
Result from Cheddar Traces from
execution./radar_v2/main/main
macbookair-hugues%
2) Feasibility test based on [ 0] Transmitter
worst case task response time : [ 0] Controller, motor is at angular position 1
[ 1] Analyser: target is at distance: 0 at angular
[ 1] Display_Panel: target is at ( 0, 0)
- Bound on task response time : [ 1] Receiver, target is at distance 1
main_analyse => 130 [ 500] Transmitter
main_display => 70 [ 1001] Transmitter
main_receive => 40 [ 1500] Transmitter
main_control_angle => 20 [ 1500] Receiver, target is at distance 2
main_transmit => 10 [ 1500] Controller, motor is at angular position 2
- All task deadlines will be met : [ 2000] Display_Panel: target is at ( 0, 0)
[ 2001] Transmitter
the task set is schedulable. [ 2500] Transmitter
[ 3000] Transmitter
[ 3000] Receiver, target is at distance 3
[ 3000] Controller, motor is at angular position 3
[ 3500] Transmitter
[ 4000] Transmitter
[ page
4000] Display_Panel: target is at ( 22
0, 0)
Assessment
It still works ;)
We can exploit models a little more
data PO_Target_Distance
features
-- …
properties
Concurrency_Control_Protocol => Priority_Ceiling;
-- Priority is not set, will use default value
-- of maximum priority
end PO_Target_Distance;
26
WCET computation
Three-step process
• Code generation: Ocarina / PolyORB-HI/Ada
• Analysis binary with Bound-T, retrofit to AADL models
• Evaluation using Cheddar
27
WCET computation
Three-step process
• Code generation: Ocarina / PolyORB-HI/Ada
• Analysis binary with Bound-T, retrofit to AADL models
• Evaluation using Cheddar
28
Integration to Ocarina
35
Architecture-driven process
Reverse option: architecture is defined first, then
a skeleton of the functional model is deduced,
then implemented
subprogram spg_scade
features
input: in parameter integer {Source_Name => "add_input";};
output: out parameter integer {Source_Name => "add_output";};
properties
source_name => "inc";
source_language => Scade;
source_location => "/path/to/scade-code/";
end spg_scade;
36
How to bind to AADL models ?
In both cases, we rely on standard AADLv2
patterns
Source_Language <-> SCADE or Simulink
Source_Name <-> SCADE node or Simulink block
Source_Location <-> path to kcg orSimulink Coder
generated code
38
Conclusion
page 2
Materials for this tutorial
All materials can be found in
http://www.aadl.info : updates on AADL standard
http://www.openaadl.org : resources around Ocarina
http://beru.univ-brest.fr/~singhoff/cheddar/: Cheddar
and real-time scheduling