[aadl]: Cyclic Immediate Connections in AADL
Peter Feiler
phf at sei.cmu.edu
Thu Dec 18 09:32:14 EST 2014
Andrew,
Immediate connection cycles is an interesting issue. It exists for connections between periodically sampling units, e.g., two threads, two devices, or a thread and a device.
The reason is that immediate says that one is to execute before the other in the same period and you cannot have both before the other.
In other words, it is best to check in the instance model.
If both are in the same enclosing component implementation we can check for it in the declarative model.
If threads are further down, e.g., in two different processes, then checking the connections between the two processes is not sufficient - each connection could be between two different pairs of threads (thread A and D in process P1 and B and C in process P2 with immediate connections A -> B and C -> D).
It gets more interesting. P1 and P2 are mapped into different ARINC653 partitions and they execute on a static time line, then P1 has to be before P2 and P2 before P1, i.e., we have a cycle. However, this cycle can be broken by giving each partition multiple windows and allocating the threads such that P1.A -> P2.B/C -> P1.A in a major frame.
Peter
-----Original Message-----
From: sae-aadl-users-bounces+phf=sei.cmu.edu at lists.sei.cmu.edu [mailto:sae-aadl-users-bounces+phf=sei.cmu.edu at lists.sei.cmu.edu] On Behalf Of Andrew Gacek
Sent: Thursday, December 18, 2014 9:00 AM
To: Julien Delange
Cc: sae-aadl-users at lists.sei.cmu.edu
Subject: Re: [aadl]: Cyclic Immediate Connections in AADL
I'm still a bit confused. Are cyclic immediate connections between two systems allowed? If we don't know what is inside the systems, we can't yet say if the cycle prohibits schedulability. Does it boil down to saying that there can't be any cyclic immediate connections among threads in a final instance model?
-Andrew
On Wed, Dec 17, 2014 at 5:30 PM, Julien Delange <jdelange at sei.cmu.edu> wrote:
> Hi Andrew,
>
>
>
> From what I remembered (Peter might have materials about that), there
> is no check in OSATE to you can declare them. However, as you
> mentioned, they cannot be realized from an implementation point of view.
>
> We can create an errata in the standard to add an explicit statement
> about them.
>
>
>
> Julien.
>
>
>
>
>
> From: sae-aadl-users-bounces+jdelange=sei.cmu.edu at lists.sei.cmu.edu
> [mailto:sae-aadl-users-bounces+jdelange=sei.cmu.edu at lists.sei.cmu.edu]
> On Behalf Of Andrew Gacek
> Sent: Wednesday, December 17, 2014 4:01 PM
> To: sae-aadl-users at lists.sei.cmu.edu
> Subject: [aadl]: Cyclic Immediate Connections in AADL
>
>
>
> Hi,
>
>
>
> Are cycles of immediate connections between subcomponents allowed in
> AADL? I couldn't find anything definitive in the AADL spec about it.
> The spec talks about scheduling in such a way that strongly suggests
> cyclic connections are not allowed, but no clear statement of it being
> disallowed. The best I've found is this line:
>
>
>
> "Cyclic sequences of immediate connections are not permitted since
> they cannot be achieved. "
>
>
>
> From "Pattern-Based Analysis of an Embedded Real-time System Architecture."
> Is there a definitive statement that such connection cycles are not allowed?
> I know OSATE doesn't complain about them:
>
>
>
> thread io
>
> features
>
> o : out data port;
>
> i : in data port;
>
> end io;
>
>
>
> process proc
>
> end proc;
>
>
>
> process implementation proc.impl
>
> subcomponents
>
> A: thread io;
>
> B: thread io;
>
>
>
> connections
>
> AtoB : port A.o -> B.i;
>
> BtoA : port B.o -> A.i;
>
> end proc.impl;
>
>
>
> Thanks,
>
> Andrew Gacek
More information about the Sae-aadl-users
mailing list