<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Multi-core Code Generation from Polychronous Programs with Time-Predictable Properties</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Zhibin Yang</string-name>
          <email>Zhibin.Yang@irit.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jean-Paul Bodeveix</string-name>
          <email>bodeveix@irit.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mamoun Filali</string-name>
          <email>filali@irit.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IRIT-CNRS, Universite de Toulouse</institution>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Synchronous programming models capture concurrency in computation quite naturally, especially in its data ow multi-clock (polychronous) avor. With the rising importance of multi-core processors in safety-critical embedded systems or cyber-physical systems (CPS), there is a growing need for model-driven generation of multi-threaded code for multi-core systems. This paper proposes a build method of timepredictable system on multi-core, based on synchronous-model development. At the modeling level, the synchronous abstraction allows deterministic time semantics. Thus synchronous programming is a good choice for time-predictable system design. At the compiler level, the veri ed compiler from the synchronous language SIGNAL to our intermediate representation (S-CGA, a variant of guarded actions) and to multi-threaded code, preserves the time predictability. At the platform level, we propose a time-predictable multi-core architecture model in AADL (Architecture Analysis and Design Language), and then we map the multi-threaded code to this model. Therefore, our method integrates time predictability across several design layers.</p>
      </abstract>
      <kwd-group>
        <kwd>Synchronous languages</kwd>
        <kwd>SIGNAL</kwd>
        <kwd>Guarded actions</kwd>
        <kwd>Veried compiler</kwd>
        <kwd>Multi-core</kwd>
        <kwd>Time predictability</kwd>
        <kwd>AADL</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Safety-critical embedded systems or cyber-physical systems (CPS) distinguish
themselves from general purpose computing systems by several characteristics,
such as failure to meet deadlines may cause a catastrophic or at least highly
undesirable system failure. Time-predictable system design [
        <xref ref-type="bibr" rid="ref1 ref20 ref21">1, 21, 20</xref>
        ] is concerned
with the challenge of building systems in such a way that timing requirements
can be guaranteed from the design. This means we can predict the system timing
statically. With the widespread advent of multi-core processors in this category
of systems, it further aggravates the complexity of timing analysis.
      </p>
      <p>
        The synchronous abstraction allows deterministic time semantics. Therefore
synchronous programming is a good choice for time-predictable system design.
There are several synchronous languages, such as ESTEREL [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], LUSTRE [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
and QUARTZ [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] based on the perfect synchrony paradigm, and SIGNAL [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
based on the polychrony paradigm.
      </p>
      <p>
        An integration infrastructure for di erent synchronous languages has gained
a lot of interests in recent years [
        <xref ref-type="bibr" rid="ref19 ref6">6, 19</xref>
        ]. A classical solution is to use an
intermediate representation. Guarded commands [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], also called asynchronous guarded
actions by J. Brandt et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], are a well-established concept for the
description of concurrent systems. In the spirit of the guarded commands, J. Brandt
et al. propose synchronous guarded actions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] as an intermediate representation
for their QUARTZ compiler. As the name suggests, it follows the synchronous
model. Hence, the behavior (control ow as well as data ow) is basically
described by sets of guarded actions of the form h ) Ai. The boolean condition
is called the guard and A is called the action. To support the integration of
synchronous, polychronous and asynchronous models (such as CAOS or SHIM),
they propose an extended intermediate representation, that is clocked guarded
actions [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] where one can declare explicitly a set of clocks. They also show how
clocked guarded actions can be used for veri cation by symbolic model checking
(SMV) and simulation by SystemC. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] presents an embedding of polychronous
programs into synchronous ones. The embedding gives us access to the methods
and tools that already exist for synchronous speci cations.
For a safety-critical system, it is required that the compiler must be veri ed
to ensure that the source program semantics is preserved. Our work mainly
focuses on the SIGNAL language. We would like to extract a veri ed SIGNAL
compiler from a correctness proof developed within the theorem prover Coq
as it has been done in the GENEAUTO project for a part of the SIMULINK
compiler. Our intermediate representation is a variant of clocked guarded actions
(called S-CGA), and currently the target is multi-core code. In [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], we have
already presented the compilation of sequential code and the proof of semantics
preservation of the transformation from the kernel SIGNAL to S-CGA. There
exist several semantics for SIGNAL, such as denotational semantics based on
traces (called trace semantics) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], denotational semantics based on tags which
puts forward a partial order view of time (called tagged model semantics) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ],
structural operational semantics de ning inductively a set of possible transitions
[
        <xref ref-type="bibr" rid="ref11 ref4">4, 11</xref>
        ], etc. In [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], we have studied the equivalence between the trace semantics
and the tagged model semantics, to assert a determined and precise semantics
of the SIGNAL language. The relation between our work and related work is
shown in Fig. 1.
      </p>
      <p>
        The contribution of this paper is to propose a build method of time-predictable
system on multi-core, based on synchronous-model development. At the
modeling level, synchronous programming is a good choice for time-predictable system
design. At the compiler level, the veri ed compiler from the synchronous
language SIGNAL to our intermediate representation (S-CGA, a variant of guarded
actions) and thus to multi-threaded code, preserves the time predictability. At
the platform level, we propose a time-predictable multi-core architecture model
in AADL (Architecture Analysis and Design Language) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], and then we map
the multi-threaded code to this model.
      </p>
      <p>The rest of this paper is structured as follows. Section 2 presents the abstract
syntax and the semantics of S-CGA. Section 3 gives the multi-threaded code
generation schema from S-CGA. The time-predictable multi-core architecture
model and the mapping from multi-threaded code to that model are presented
in Section 4. Section 5 gives some concluding remarks.
2</p>
      <p>
        S-CGA
In papers such as [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], clocked guarded actions has been de ned as a common
representation for synchronous (via synchronous guarded actions), polychronous
and asynchronous (via asynchronous guarded actions) models. It has a
multiclocked feature. However, in contrast to the SIGNAL language, clocked guarded
actions can evaluate a variable even if its clock does not hold [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for supporting
the asynchronous view. Since we focus on the polychronous view, we introduce
S-CGA, which is a variant of clocked guarded actions. S-CGA constrains variable
accesses as done by SIGNAL. In this section, we rst present the syntax of
SCGA, and then we give the denotational semantics of S-CGA based on the trace
model.
      </p>
      <p>S-CGA has the same structure as clocked guarded actions, but they have
di erent semantics.</p>
      <p>De nition 1 (S-CGA). A S-CGA system is represented by a set of guarded
actions of the form h ) Ai de ned over a set of variables X. The Boolean
condition is called the guard and A is called the action. Guarded actions can
be of the following forms:
) x = (immediate)
) next(x) = (delayed)
) assume( ) (assumption)
where
{ the guard is a Boolean condition over the variables of X, their respective
clocks (for a variable x 2 X, we denote its clock x^), and their respective
initial clocks (denoted init(x^)),
{
{
is an expression over X,
is a Boolean expression over the variables of X and their clocks.</p>
      <p>An immediate assignment x = writes the value of immediately to the
variable x. The form (1) implicitly imposes that if is de ned1 and its value is
true, then x is present and is de ned. Moreover, init(x^) exactly holds the rst
instant when x is present.</p>
      <p>A delayed assignment next(x) = evaluates in the given instant but
changes the value of the variable x at next time clock x^ ticks.</p>
      <p>The form (3) de nes a constraint. It determines a Boolean condition which
has to hold when is de ned and true. All the execution traces must satisfy this
constraint. Otherwise, they are ignored.</p>
      <p>Guarded actions are composed by using the parallel operator k.
An S-CGA example 2 (Example 1) is shown as follows.</p>
      <p>true ) assume(y^1 = x^)
init(y^1) ) y1 = 1
y^1 ) next(y1) = x
true ) assume(y^2 = x^)
init(y^2) ) y2 = 2
y^2 ) next(y2) = x
true ) assume(x^ = z^)
s^1 ) assume(z^ ^ z)
z^ ^ z ) s1 = f (y1)
s^2 ) s2 = s1 + 1
s^1 ) assume(s^2)
s^3 ) assume(z^ ^ (not z))
z^ ^ (not z) ) s3 = f (y2)
s^4 ) s4 = s3 + 2
s^3 ) assume(s^4)
De nition 2 (Trace semantics of S-CGA). The trace semantics of a
SCGA system is de ned as a set of traces, that is JSCGAK = fS j 8scga 2
SCGA; JscgaKS = trueg. We have the following semantics rules,
(1)
(2)
(3)</p>
      <p>J ) x = KS =</p>
      <p>8i 2 N; JcKS;i ^ J KS;i
J ) next(x) = KS =
8i1 &lt; i2 2 N;
! (JcxKS;i ^ JcKS;i ^ JxKS;i = J KS;i)
((8i0 2 N; i1 &lt; i0 &lt; i2 ! :JcxKS;i0 ) ^ JcKS;i1 ^ J KS;i1 )
! (JcxKS;i1 ^ JcKS;i1 ^ (JcxKS;i2 ! JxKS;i2 = J KS;i1 ))
J ) assume( )KS =</p>
      <p>8i 2 N; JcKS;i ^ J KS;i ! JcKS;i ^ J KS;i
{ Rule (1): when is present, and the value of is true, x and are both
present, and the value of x is that of .
{ Rule (2): when is present and the value of is true at instant i1, x and
are present at i1, and if i2 is the next instant where x is present, then the
value of x at i2 is that of at instant i1.
1 An expression is said to be de ned if all the variables it contains are present.
2 If two guarded actions update the same variables, the guards must be exclusive.
{ Rule (3): when</p>
      <p>is present, and the value of is true, is present and true.</p>
      <p>The semantics of S-CGA composition is de ned as Jscga1 k scga2KS =
Jscga1KS ^ Jscga2KS .</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], we have already presented the translation rules from the kernel
SIGNAL to S-CGA, and give the proof of the semantics preservation in Coq.
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>From S-CGA to Multi-threaded Code</title>
      <p>The SIGNAL compilation process contains one major analysis called clock
calculus from which code generation directly follows. Moreover, the clock calculus
contains several steps, such as the synchronization of each process, i.e., an
equation system over clocks; the resolution of the system of clock equations; the
construction of a clock hierarchy on which the automatic code generation
strongly relies. Our goal here is to adapt the clock calculus to S-CGA.</p>
      <p>Based on the semantics of S-CGA, we can get the equation system over
clocks. The general rules are given as follows.</p>
      <p>S-CGA
) x =
) next(x) =
) assume( )</p>
      <p>Clock Equations
^ ^ ! x^ ^ ^
^ ^ ! x^ ^ ^
^ ^ ! ^ ^
init(x^) ! x^ (8x 2 X)</p>
      <p>As a rst step, we just consider the endochrony property 3, namely we can
construct a clock hierarchy based on the resolution of the system of clock
equations. The clock hierarchy of Example 1 (with three clock equivalence classes
C0, C1, and C2) is shown in Fig. 2. In the gure, for instance clk x denotes x^.</p>
      <p>Moreover, we construct the data-dependency graph (DDG, as shown in Fig.
3) based on the variables reading and writing.</p>
      <p>
        Finally, the multi-threaded code generation is based on both the clock
hierarchy and the data dependency graph. First, we map the guarded actions to
threads (i.e. partitions, as shown in Fig. 3). As presented in Fig. 4, we would like
to treat the partition methods generally, this means di erent partition methods
(such as the vertical way [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] for a concurrent execution, the horizontal way [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
3 The weak endochrony [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] property will be considered in the future.
for a pipelined execution, etc) don't a ect the proof (here we don't consider
performance). Second, in each thread, we organize the guarded actions based on
the clock hierarchy. For example, the two guards in Thread2 belong to the same
clock equivalence class, so they are merged inside the same control condition
in the generated code. Third, we add wait/notify synchronization among the
threads. A code fragment of Thread2 is given as follows.
      </p>
      <p>= T hread 2 =
void step()
f
wait(T hread1);
if(C1)f
s1 = f(y1);
s2 = s1 + 1; g
notify(T hread4);
g
4</p>
      <p>Mapping Multi-threaded Code to Multi-core
To allow for static prediction of the system timing, we need time-predictable
processor architectures, thus we know all the architecture details such as the
pipeline and the memory hierarchy to analyze the execution time of programs.
Furthermore, the mapping from multi-threaded code to multi-core architectures
should be also static and deterministic.
4.1</p>
      <p>
        A time-predictable multi-core architecture model
With the advent of multi-core architectures, interference between threads on
shared resources further complicates analysis. There are some recommendations
from R. Wilhelm et al. [
        <xref ref-type="bibr" rid="ref20 ref21">21, 20</xref>
        ], i.e., the better way is to reduce the time
interference: (1) pipeline with static branch prediction and with in-order execution;
(2) separation of caches (instruction and data caches); (3) LRU (Least Recently
Used) cache replacement policy; and (4) access of main memory via a TDMA
(Time Division Multiple Access) scheme. In the EC funded project T-CREST 4,
M. Schoeberl et al. [
        <xref ref-type="bibr" rid="ref17 ref18">18, 17</xref>
        ] propose a new form of organization for the
instruction cache, named method cache (MC), and split data caches (including stack
cache (SC), static data cache (SDC), constants data cache (CDC), and heap
allocated data cache (HC)), to increase the time predictability and to tighten the
WCET. The method cache stores complete methods and cache misses occur only
on method invocation and return. They split the data cache for di erent data
areas, thus data cache analysis can be performed individually for the di erent
areas. In our work, heap is avoided to be used because we don't use dynamic
memory allocation in our multi-threaded code.
      </p>
      <p>
        Based on these existing work, we would like to model a time-predictable
multi-core architecture in AADL. AADL is an SAE (Society of Automotive
Engineers) architecture description language standard for embedded real-time
systems, and supports several kinds of system analysis such as schedulability
analysis. Moreover, we have already worked on the semantics of di erent AADL
subsets such as [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. So we envision how to validate semantically the mapping
from the language level to the architecture level.
      </p>
      <p>Our multi-core architecture model is illustrated in Fig. 5. Inside the core,
we consider static branch prediction and in-order execution in the pipeline. A
simpli ed instruction set (get instruction, compute, write data, and read data)
is used. As a rst step, we just consider a rst level cache (i.e. without L2 and
L3). Each core is associated with a method cache, a stack cache, a static data
cache, and a constants data cache. However, the same principle of cache splitting
can be applied to L2 and L3 caches. The extension of the timing analysis for a
cache hierarchy is straight forward. Moreover, TDMA-based resource arbitration
allocates statically-computed slots to the cores.</p>
      <p>
        As proposed by [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], a core is associated with an AADL processor component
and a multi-core processor with an AADL system component containing
multiple AADL processor subcomponents, each one representing a separate core.
This modeling approach provides exibility: an AADL system can contain other
components to represent cache, and shared bus, etc. For that purpose, we de ne
speci c modeling patterns with new properties (such as Multi Core Properties ).
A part of AADL speci cation is given in Fig. 6.
4 Time-predictable Multi-Core Architecture for Embedded Systems
processor core
features
MC : requires bus access cache_bus ;
SC : requires bus access cache_bus ;
SDC : requires bus access cache_bus ;
CDC : requires bus access cache_bus ;
end core ;
processor implementation core . impl
properties
Multi_Core_Properties :: Branch_Prediction =&gt; Static ;
Multi_Core_Properties :: Execution_Order =&gt; In_Order ;
end core . impl ;
system multicore
features
ExtMem : provides bus access shared_bus . impl ;
end multicore ;
To preserve the time predictability, we consider static mapping and scheduling.
Take the example shown in the last section. It generates a con guration le
(such as num of threads=4 ) in multi-threaded code generation. Moreover, we
have a manual con guration le for the time-predictable multi-core architecture
model, for example num of cores=4. Thus, we can generate a static mapping
and scheduling, for instance:
{ Thread1 7! Core1, Thread2 7! Core2, Thread3 7! Core3, and Thread4 7! Core4.
{ Thread1: notify(Thread2), notify(Thread3);
      </p>
      <p>Thread2: wait(Thread1), notify(Thread4);
Thread3: wait(Thread1), notify(Thread4);
Thread4: wait(Thread2), wait(Thread3).</p>
      <p>Based on the simpli ed instruction set (considered in the architecture model),
the multi-core code can be generated. Thanks to the mechanizations such as
method cache, split data caches, TDMA and static scheduling, the execution
time of the multi-core code can be bounded.
5</p>
    </sec>
    <sec id="sec-3">
      <title>Conclusion and Future Work</title>
      <p>
        With the widespread advent of multi-core processors in safety-critical embedded
systems or cyber-physical systems (CPS), it further aggravates the complexity of
timing analysis. This paper proposes a build method of time-predictable system
on multi-core, based on synchronous-model development. Our method integrates
time predictability across several design layers, i.e., synchronous programming,
veri ed compiler, and time-predictable multi-core architecture model.
Interaction among cores might also arm software isolation layers, such as the one de ned
in ARINC653. Thanks to the existing work such as [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] on AADL
modeling on multi-core architectures and their association with ARINC653, we would
like to associate our work with partitioned architectures in the future.
      </p>
      <p>Acknowledgments: This work was supported by the RTRA STAE
Foundation in France (http://www.fondation-stae.net/).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>P.</given-names>
            <surname>Axer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Ernst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Falk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Girault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Grund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Guan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Jonsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Marwedel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Reineke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Rochange</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sebastian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. V.</given-names>
            <surname>Hanxleden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wilhelm</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Yi</surname>
          </string-name>
          .
          <article-title>Building timing predictable embedded systems</article-title>
          .
          <source>ACM Trans. Embed. Comput. Syst.</source>
          ,
          <volume>13</volume>
          (
          <issue>4</issue>
          ):
          <volume>82</volume>
          :1{
          <fpage>82</fpage>
          :
          <fpage>37</fpage>
          ,
          <string-name>
            <surname>Mar</surname>
          </string-name>
          .
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>D.</given-names>
            <surname>Baudisch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Brandt</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider.</surname>
          </string-name>
          <article-title>Multithreaded code from synchronous programs: Extracting independent threads for OpenMP</article-title>
          .
          <source>DATE '10</source>
          , pages
          <fpage>949</fpage>
          {
          <fpage>952</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>D.</given-names>
            <surname>Baudisch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Brandt</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider.</surname>
          </string-name>
          <article-title>Multithreaded code from synchronous programs: Generating software pipelines for OpenMP</article-title>
          . In M. Dietrich, editor,
          <source>MBMV</source>
          , pages
          <volume>11</volume>
          {
          <fpage>20</fpage>
          . Fraunhofer Verlag,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>A.</given-names>
            <surname>Benveniste</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. L.</given-names>
            <surname>Guernic</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Jacquemot</surname>
          </string-name>
          .
          <article-title>Synchronous programming with events and relations: the signal language and its semantics</article-title>
          .
          <source>Science of Computer Programming</source>
          ,
          <volume>16</volume>
          :
          <fpage>103</fpage>
          {
          <fpage>149</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>F.</given-names>
            <surname>Boussinot</surname>
          </string-name>
          and R. de Simone.
          <article-title>The esterel language</article-title>
          .
          <source>Proceedings of the IEEE</source>
          ,
          <volume>79</volume>
          (
          <issue>9</issue>
          ):
          <volume>1293</volume>
          {
          <fpage>1304</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>J.</given-names>
            <surname>Brandt</surname>
          </string-name>
          , M. Gemunde,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Shukla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Talpin</surname>
          </string-name>
          .
          <article-title>Representation of synchronous, asynchronous, and polychronous components by clocked guarded actions</article-title>
          .
          <source>Design Automation for Embedded Systems</source>
          , pages
          <fpage>1</fpage>
          {
          <fpage>35</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>J.</given-names>
            <surname>Brandt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gemunde</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Shukla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Talpin</surname>
          </string-name>
          .
          <article-title>Embedding polychrony into synchrony</article-title>
          .
          <source>IEEE Trans. Software Eng.</source>
          ,
          <volume>39</volume>
          (
          <issue>7</issue>
          ):
          <volume>917</volume>
          {
          <fpage>929</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>J.</given-names>
            <surname>Brandt</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider</surname>
          </string-name>
          .
          <article-title>Separate translation of synchronous programs to guarded actions</article-title>
          .
          <source>Internal Report 382/11</source>
          , Department of Computer Science, University of Kaiserslautern,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Delange</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Feiler</surname>
          </string-name>
          .
          <article-title>Design and analysis of multi-core architecture for cyberphysical systems</article-title>
          .
          <source>In 5th Embedded Real Time Software and Systems</source>
          , ERTS'
          <volume>14</volume>
          ,
          <year>February 2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>E. W.</given-names>
            <surname>Dijkstra</surname>
          </string-name>
          .
          <article-title>Guarded commands, nondeterminacy and formal derivation of programs</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>18</volume>
          (
          <issue>8</issue>
          ):
          <volume>453</volume>
          {
          <fpage>457</fpage>
          ,
          <year>1975</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>A.</given-names>
            <surname>Gamatie</surname>
          </string-name>
          .
          <article-title>Designing embedded systems with the SIGNAL programming language</article-title>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>N.</given-names>
            <surname>Halbwachs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Caspi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Raymond</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Pilaud</surname>
          </string-name>
          .
          <article-title>The synchronous data- ow programming language lustre</article-title>
          .
          <source>Proceedings of the IEEE</source>
          ,
          <volume>79</volume>
          (
          <issue>9</issue>
          ):
          <volume>1305</volume>
          {
          <fpage>1320</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. J. Hugues.
          <article-title>AADLib, a library of reusable AADL models</article-title>
          .
          <source>In SAE Aerotech 2013 Congress &amp; Exhibition</source>
          (Montreal, Canada),
          <year>September 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. D.
          <string-name>
            <surname>Potop-Butucaru</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Caillaud</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Benveniste</surname>
          </string-name>
          .
          <article-title>Concurrency in synchronous systems</article-title>
          .
          <source>Formal Methods in System Design</source>
          ,
          <volume>28</volume>
          (
          <issue>2</issue>
          ):
          <volume>111</volume>
          {
          <fpage>130</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. SAE.
          <article-title>AS5506A: Architecture Analysis and Design Language (AADL) Version 2</article-title>
          .0.
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>K.</given-names>
            <surname>Schneider</surname>
          </string-name>
          .
          <article-title>The synchronous programming language quartz</article-title>
          .
          <source>Internal report</source>
          , Department of Computer Science, University of Kaiserslautern, Germany,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>M.</given-names>
            <surname>Schoeberl</surname>
          </string-name>
          .
          <article-title>A time predictable instruction cache for a Java processor</article-title>
          . In R. Meersman,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Tari</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A</surname>
          </string-name>
          . Corsaro, editors,
          <source>On the Move to Meaningful Internet Systems</source>
          <year>2004</year>
          :
          <article-title>OTM 2004 Workshops</article-title>
          , volume
          <volume>3292</volume>
          of Lecture Notes in Computer Science, pages
          <volume>371</volume>
          {
          <fpage>382</fpage>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>M. Schoeberl</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Huber</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <article-title>Pu tsch. Data cache organization for accurate timing analysis</article-title>
          .
          <source>Real-Time Systems</source>
          ,
          <volume>49</volume>
          (
          <issue>1</issue>
          ):1{
          <fpage>28</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>J.-P. Talpin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Brandt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Gemunde, K. Schneider, and</article-title>
          <string-name>
            <given-names>S.</given-names>
            <surname>Shukla</surname>
          </string-name>
          .
          <article-title>Constructive polychronous systems</article-title>
          .
          <source>In Logical Foundations of Computer Science</source>
          , volume
          <volume>7734</volume>
          of Lecture Notes in Computer Science, pages
          <volume>335</volume>
          {
          <fpage>349</fpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>L.</given-names>
            <surname>Thiele</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wilhelm</surname>
          </string-name>
          .
          <article-title>Design for timing predictability</article-title>
          .
          <article-title>Real-Time Syst</article-title>
          .,
          <volume>28</volume>
          (
          <issue>2-3</issue>
          ):
          <volume>157</volume>
          {
          <fpage>177</fpage>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>R.</given-names>
            <surname>Wilhelm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Engblom</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ermedahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Holsti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Thesing</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Whalley</surname>
          </string-name>
          , G. Bernat,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ferdinand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heckmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mitra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mueller</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Puaut</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Puschner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Staschulat</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Stenstro</surname>
          </string-name>
          <article-title>m. The worst-case execution-time problem: Overview of methods and survey of tools</article-title>
          .
          <source>ACM Trans. Embed. Comput. Syst.</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <volume>36</volume>
          :1{
          <fpage>36</fpage>
          :
          <fpage>53</fpage>
          , May
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Bodeveix</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Filali</surname>
          </string-name>
          .
          <article-title>A comparative study of two formal semantics of the SIGNAL language</article-title>
          .
          <source>Frontiers of Computer Science</source>
          ,
          <volume>7</volume>
          (
          <issue>5</issue>
          ):
          <volume>673</volume>
          {
          <fpage>693</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Bodeveix</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Filali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kai</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Ma</surname>
          </string-name>
          .
          <article-title>A veri ed transformation: From polychronous programs to a variant of clocked guarded actions</article-title>
          .
          <source>In International Workshop on Software and Compilers for Embedded Systems (SCOPES)</source>
          ,
          <source>SCOPES '14</source>
          , pages
          <fpage>128</fpage>
          {
          <fpage>137</fpage>
          . ACM,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Ma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Bodeveix</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Pi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Talpin</surname>
          </string-name>
          .
          <article-title>From AADL to timed abstract state machines: A veri ed model transformation</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>93</volume>
          :
          <fpage>42</fpage>
          {
          <fpage>68</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>