<?xml version="1.0" encoding="utf-8"?>
<raweb xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" year="2014">
  <identification id="tea" isproject="true">
    <shortname>TEA</shortname>
    <projectName>Time, Events and Architectures</projectName>
    <theme-de-recherche>Embedded and Real-time Systems</theme-de-recherche>
    <domaine-de-recherche>Algorithmics, Programming, Software and Architecture</domaine-de-recherche>
    <datecreation type="Team">2014 January 01</datecreation>
    <dateupdate type="Project-Team">2015 January 01</dateupdate>
    <structure_exterieure type="Labs">
      <libelle>Institut de recherche en informatique et systèmes aléatoires (IRISA)</libelle>
    </structure_exterieure>
    <UR name="Rennes"/>
    <keywords>
      <term>Embedded Systems</term>
      <term>Formal Methods</term>
      <term>Time Modelling</term>
      <term>Concurrency Theory</term>
      <term>Programming Language</term>
      <term>Program Analysis</term>
      <term>Type Theory</term>
      <term>Code Generation</term>
      <term>Data-Flow Networks</term>
      <term>Synchronous Modelling</term>
      <term>Model-Driven Engineering</term>
      <term>Architecture Modelling</term>
      <term>Software Engineering</term>
    </keywords>
  </identification>
  <team id="uid1">
    <person key="tea-2014-idm28088">
      <firstname>Jean-Pierre</firstname>
      <lastname>Talpin</lastname>
      <categoryPro>Chercheur</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Team leader, Inria, Senior Researcher</moreinfo>
      <hdr>oui</hdr>
    </person>
    <person key="moais-2014-idm5672">
      <firstname>Thierry</firstname>
      <lastname>Gautier</lastname>
      <categoryPro>Chercheur</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria, Researcher</moreinfo>
    </person>
    <person key="tea-2014-idm25368">
      <firstname>Paul</firstname>
      <lastname>Le Guernic</lastname>
      <categoryPro>Chercheur</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria, Senior Researcher</moreinfo>
    </person>
    <person key="tea-2014-idp66648">
      <firstname>Loïc</firstname>
      <lastname>Besnard</lastname>
      <categoryPro>Technique</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>SED/CNRS, Senior Research Engineer</moreinfo>
    </person>
    <person key="tea-2014-idp67904">
      <firstname>Christophe</firstname>
      <lastname>Junke</lastname>
      <categoryPro>Technique</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria, granted by FUI project P</moreinfo>
    </person>
    <person key="tea-2014-idp69160">
      <firstname>Van-Chan</firstname>
      <lastname>Ngo</lastname>
      <categoryPro>PhD</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria, until Dec 2014, granted by ANR VeriSync project</moreinfo>
    </person>
    <person key="spades-2014-idp112384">
      <firstname>Adnan</firstname>
      <lastname>Bouakaz</lastname>
      <categoryPro>Enseignant</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Univ. Rennes I, until Sep 2014</moreinfo>
    </person>
    <person key="tea-2014-idp71664">
      <firstname>Tak Kuen John</firstname>
      <lastname>Koo</lastname>
      <categoryPro>Visiteur</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Univ. Rennes I, until July 2014</moreinfo>
    </person>
    <person key="panama-2014-idp82704">
      <firstname>Stéphanie</firstname>
      <lastname>Lemaile</lastname>
      <categoryPro>Assistant</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria</moreinfo>
    </person>
    <person key="tea-2014-idp74184">
      <firstname>Ke</firstname>
      <lastname>Sun</lastname>
      <categoryPro>PhD</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>Inria, until Oct 2014, granted by the Regional Council of Brittany</moreinfo>
    </person>
    <person key="tea-2014-idp75424">
      <firstname>Imré</firstname>
      <lastname>Frotier de La Mésselière</lastname>
      <categoryPro>Visiteur</categoryPro>
      <research-centre>Rennes</research-centre>
      <moreinfo>PhD student with Mines ParisTech under co-supervision</moreinfo>
    </person>
  </team>
  <presentation id="uid2">
    <bodyTitle>Overall Objectives</bodyTitle>
    <subsection id="uid3" level="1">
      <bodyTitle>Introduction</bodyTitle>
      <p>An embedded architecture is an artefact of heterogeneous constituants and at the crossing of several design viewpoints: software, embedded in hardware, interfaced with the physical world. Time takes different forms when observed from each of these viewpoints: continuous or discrete, event-based or time-triggered. Unfortunately, modelling and programming formalisms that represent software, hardware and physics significantly alter this perception of time. Moreover, time reasoning in system design is usually isolated to a specific design problem: simulation, profiling, performance, scheduling, parallelisation, simulation. All these tasks would benefit from modularity and compositionally gained by globally reasoning about time. The aim of project-team TEA is to define a conceptually unified semantic framework for time reasoning in embedded system design, and to put it to practice by revisiting common analysis and synthesis issues in real-time system design with the compositionality gained from that formalisation.
</p>
    </subsection>
    <subsection id="uid4" level="1">
      <bodyTitle>Motivations</bodyTitle>
      <p>Electronic appliances, embedded systems, or, more generally, Cyber-Physical Systems, abbreviated CPS, are systems that comprise sensors, to sense physical data; electronics, to digitise the sensed physical information; computing units, to monitor the physical process; actuators, to activate devices reacting with the physical world; and, finally, a mean of communication, interconnecting these components.</p>
      <p>As Lee acknowledges on his website <footnote id="uid5" id-text="1"><i>Cyber-physical systems</i>. E. A. Lee. Research Project, 2012. <ref xlink:href="http://cyberphysicalsystems.org" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>cyberphysicalsystems.<allowbreak/>org</ref></footnote>, the term cyber-physical system (CPS) was introduced by Helen Gill at the NSF referring to the integration of computation and physical processes. In CPS, embedded computers and networks monitor and control the physical processes, usually with feedback loops where physical processes affect computations and vice versa. The principal challenges in system design lie in this perpetual interaction of software, hardware and physics.</p>
      <p>Beyond the buzzword, a CPS is nothing new. In fact, it is an ubiquitous object of our everyday life. CPSs have evolved from individual independent units (e.g an ABS brake) to more and more integrated networks of units, which may be aggregated into larger components or sub-systems. For example, a transportation monitoring network aggregates monitored stations and trains through a large scale distributed system with relatively high latency. Each individual train is being controlled by a train control network, each car in the train has its own real-time bus to control embedded devices. More and more, CPSs are mixing real-time low latency technology with higher latency distributed computing technology.</p>
      <p>CPS safety is often critical for society. Their failure may entail threatening human beings life in many applications such as transportations (whether automotive, trains or airplanes), power distribution, medical equipment and tele-medicine. Whether or not life is threatened, failures may have huge economic impact (e.g. Toyota's defect car equipment). The development of reliable CPS has become a critical issue for the industry and society. Safety and security requirements must be satisfied by using strong validation tools. Requirements for quality of service, safety and security imply to have formally proved the required properties of the system before it is deployed.</p>
      <p>In the past 15 years, CPS development has moved towards Model Driven Engineering (MDE). With MDE methodology, first all requirements are gathered together with use cases, then a model of the system is built (sometimes several models) that satisfy the requirements. There are several modelling formalisms that have appeared in the past ten years with more or less success. The most successful are the <i>executable</i> models, models that can be exercised, tested and validated. This approach can be used for both software and hardware.</p>
      <p>A common feature found in CPSs is the ever presence of concurrency and parallelism in models. Development of concurrent and parallel systems has traditionally been clearly split in two different families. The first family is based on synchronous models, primarily targeting design of hardware circuits and/or embedded and reactive systems, often safety-critical. Esterel, Lustre, Signal and SCADE are examples of existing technologies of that nature, and in many places these have been connected with models of environments as required for CPS modelling. The second family addresses more loosely coupled systems, where communication between distributed entities is asynchronous by nature. Analysis of asynchronous systems has often greater complexity, because of the greater size of state spaces; process algebras such as CSP and CCS, or component models such as Fractal and GCM are more relevant here.</p>
      <p>Large systems are increasingly mixing both types of concurrency. Large systems are structured hierarchically and comprise multiple synchronous devices connected by buses or networks that communicate asynchronously. This led to the advent of so-called GALS (Globally Asynchronous, Locally Synchronous) models, or PALS (Physically Asynchronous, Logically Synchronous) systems, where reactive synchronous objects are communicating asynchronously. Still, these infrastructures, together with their programming models, share some fundamental concerns: parallelism and concurrency synchronisation, determinism and functional correctness, scheduling optimality and calculation time predictability.</p>
      <p>It should also be noted that CPSs are used essentially to monitor and control real-world processes, the dynamics of which are usually governed by well known physical laws. These laws are expressed by physicists as mathematical equations and formulas. Discrete CPS models cannot ignore these dynamics, but whereas the equations express the continuous behaviour usually using real numbers (irrational) variables, the models usually have to work with discrete time and approximate floating point variables.</p>
      <p>We consider that there are two key research directions, respectively, one for the theoretical basis underlying CPSs and one for the practical aspect of developing future applications that could be a major vector for scientific projects, developed in the next sections.
</p>
    </subsection>
    <subsection id="uid6" level="1">
      <bodyTitle>Challenge</bodyTitle>
      <p>A cyber-physical (or reactive, or embedded) system is the integration of heterogeneous components originating from several design viewpoints: reactive software, some of which is embedded in hardware, interfaced with the physical environment through mechanical parts. Time takes different forms when observed from each of these viewpoints: it is discrete and event-based in software, discrete and time-triggered in hardware, continuous in mechanics or physics. Design of CPS often benefits from concepts of multiform and logical time(s) for their natural description.</p>
      <p>High-level modelling and programming formalisms used to represent software, hardware and physic significantly alter this perception of time. In the model of the environment, the continuous evolution of time is represented by differential equations whose computerised resolution is inherently discrete. In hardware models, the system clock is an abstraction of the electrical behaviour of the circuit. It is usually further approximated by coarser-grain abstractions: register transfer level (RTL), transaction-level modelling (TLM) or system-level modelling.</p>
      <p>In system design, time is usually abstracted to serve the purpose of one of many design problem: simulation, profiling, performance analysis, scheduling analysis, parallelisation, distribution, simulation, or virtual prototyping. For example in non-real-time commodity software, timing abstraction such as number of instructions and algorithmic complexity is sufficient: software will run the same on different machines, except slower or faster. Alternatively, in cyber-physical extensions, multiple recurring instances of meaningful events may create as many dedicated logical clocks, on which to ground modelling and design practices.</p>
      <p>Time reasoning is further complicated by the inadequacy of conventional programming models for modern hardware, such as Network-On-Chips. As pointed out by Edward Lee in his position paper
<footnote id="uid7" id-text="2"><i>The Problem with Threads</i>. E. A. Lee. Technical Report UCB/EECS-2006-1. UC Berkeley, 2006. <ref xlink:href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>eecs.<allowbreak/>berkeley.<allowbreak/>edu/<allowbreak/>Pubs/<allowbreak/>TechRpts/<allowbreak/>2006/<allowbreak/>EECS-2006-1.<allowbreak/>html</ref></footnote>,
anyone experienced with multi-threaded programming can easily acknowledge the difficulty of designing and implementing concurrent software. Resolving concurrency, synchronisation, and coordination issues, and tackling the non-determinism germane in multi-threaded software is extremely difficult. Ensuring software correctness not only with respect to its specification, but also with regards to target hardware and environment, is a necessary yet even more challenging task.</p>
      <p>This challenge explains why the mitigation of time constraints arising from heterogeneous time models or domains is equally isolated to one specific design problem. For instance,</p>
      <simplelist>
        <li id="uid8">
          <p noindent="true">scheduling analysis aims at reconciling software logical time with discrete hardware resources;</p>
        </li>
        <li id="uid9">
          <p noindent="true">desynchronisation aims at reconciling the synchronous abstraction of software concurrency with the asynchronous abstraction of a distributed architecture;</p>
        </li>
        <li id="uid10">
          <p noindent="true">virtual prototyping aims at simulating hardware events using software;</p>
        </li>
        <li id="uid11">
          <p noindent="true">hybrid simulation mixes software time and simulated physical time.</p>
        </li>
      </simplelist>
      <p>None of these problems demand system-level timed reasoning. All these issues are usually addressed in isolation. Yet, all would benefit from modularity and compositionally gained by coordinated time reasoning. Proper handling of time requires a precise semantic foundations and the establishment of formal correctness properties. It allows powerful analysis and error-proof verification of functional behaviours and quantitative characteristics.</p>
      <p>Time abstraction increases efficiency in event-driven simulation or execution (i.e SystemC simulation models try to abstract time, from cycle-accurate to approximate-time, and to loosely-time), while attempting to retain functionality, but without any actual guarantee of valid accuracy (responsibility is left to the model designer). Functional determinism (a.k.a. conflict-freeness in Petri Nets, monotonicity in Kahn PNs, confluence in Milner's CCS, latency-insensitivity and elasticity in circuit design) allows for reducing to some amount the problem to that of many schedules of a single self-timed behaviour, and time in many systems studies is partitioned into models of computation and communication (MoCCs). Multiple, multiform time(s) raises the question of combination, abstraction or refinement between distinct time bases. The question of combining continuous time with discrete logical time calls for proper discretisation in simulation and implementation. While timed reasoning takes multiple forms, there is no unified foundation to reasoning about multi-form time in system design.</p>
      <p>The aim of project-team TEA is to develop formal calculi for reasoning about time in embedded system design. Equipped with these calculi, we will revisit typical problems and application in real-time system design, such as time determinism, memory ressources predictability, real-time scheduling, mixed-criticality and power management. Eventually, this will allow to prototype and deliver a tooled methodology for virtual prototyping embedded architectures.
</p>
    </subsection>
  </presentation>
  <fondements id="uid12">
    <bodyTitle>Research Program</bodyTitle>
    <subsection id="uid13" level="1">
      <bodyTitle>State of the Art</bodyTitle>
      <p>System design based on the “synchronous paradigm” has focused the attention of many academic and industrial actors on abstracting non-functional implementation details from system design. This design abstraction focuses on the logic of interaction in reactive programs rather than their timed behaviour, allowing to secure functional correctness while remaining an intuitive programming model for embedded systems.</p>
      <p>Maintaining the “synchronous hypothesis” on software at runtime, however, demands a quasi-synchronous model of execution (hardware or middleware) in order to be effectively implemented <footnote id="uid14" id-text="3"><i>A protocol for loosely time-triggered architectures</i>. A. Benveniste et al. Embedded Software Conference. ACM, 2002</footnote>. Strong software constraints to ensure functional correctness imply strong runtime restrictions and simple hardware.
If we look at recent features found in synchronous programming languages such as Quartz <footnote id="uid15" id-text="4">The Averest System <ref xlink:href="http://www.averest.org" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>averest.<allowbreak/>org</ref>.</footnote>, Lucid <footnote id="uid16" id-text="5">Lucid synchrone <ref xlink:href="http://www.di.ens.fr/~pouzet/lucid-synchrone" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>di.<allowbreak/>ens.<allowbreak/>fr/<allowbreak/>~pouzet/<allowbreak/>lucid-synchrone</ref>.</footnote> departing from the simpler semantics of Esterel <footnote id="uid17" id-text="6"><i>The Esterel synchronous programming language</i>. G. Berry, G. Gonthier. Science of Computer Programming, v. 19(2). Elsevier, 1992.</footnote> and Lustre <footnote id="uid18" id-text="7"><i>The synchronous data flow programming language Lustre</i>. Halbwachs, N., Caspi, P., Raymond, P., Pilaud, D. Proceedings of the IEEE v. 79(9), 1991.</footnote>, we observe that all try to cope in a way or another with the availability of more general execution architectures:
clock domains <footnote id="uid19" id-text="8"><i>A formal semantics of clock refinement in imperative synchronous languages</i>. Gemünde, M., Brandt, J., Schneider, K. Application of Concurrency to System Design. IEEE Press, 2010.</footnote>,
pipelining <footnote id="uid20" id-text="9"><i>Parallelism with futures in Lustre</i>. Cohen, A., Gérard, L., Pouzet, M. Embedded Software Conference. ACM, 2012.</footnote>,
streaming <footnote id="uid21" id-text="10"><i>N-synchronous Kahn networks</i>. Cohen, A., et al. Principles of Programming Languages. ACM, 2006.</footnote>.
Unfortunately, attempts to scale the simple "typed programming language" approach of the 90's <footnote id="uid22" id-text="11">A. Benveniste et al. <i>The Synchronous Languages Twelve Years Later</i>. Proceedings of the IEEE v. 91(1), 2003.</footnote> to the above purpose hit inherent computational complexity limits.
For example, a periodic clock operation like <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><msup><mn>0</mn><mrow><mo>(</mo><mn>1920</mn><mo>*</mo><mo>(</mo><mn>1080</mn><mo>-</mo><mn>480</mn><mo>)</mo><mo>)</mo></mrow></msup><msup><mrow><mo>{</mo><msup><mn>0</mn><mn>1200</mn></msup><msup><mn>1</mn><mn>720</mn></msup><mo>}</mo></mrow><mn>480</mn></msup></mrow></math></formula> in Lucy-n (<formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msup><mn>0</mn><mi>n</mi></msup></math></formula> means <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>n</mi></math></formula> zeros) yields an exponentially larger term <footnote id="uid23" id-text="12"><ref xlink:href="http://www.di.ens.fr/~guatto/slides_parkas_14_05_12.pdf" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>di.<allowbreak/>ens.<allowbreak/>fr/<allowbreak/>~guatto/<allowbreak/>slides_parkas_14_05_12.<allowbreak/>pdf</ref>, page 15.</footnote>.
This explains why team TEA opts for focusing on the semantics of time and concurrency in system design and on implementing the implied design methodologies using program analysis and abstract interpretation.</p>
      <p>By contrast with a synchronous hypothesis, the polychronous MoCC implemented in the specification language Signal, available in the Eclipse project POP <footnote id="uid24" id-text="13"><i>Polychrony on POLARSYS (POP)</i>, an Eclipse project in the POLARSYS Industry Working Group, 2013. <ref xlink:href="https://www.POLARSYS.org/projects/POLARSYS.pop" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>www.<allowbreak/>POLARSYS.<allowbreak/>org/<allowbreak/>projects/<allowbreak/>POLARSYS.<allowbreak/>pop</ref></footnote> and in the CCSL standard <footnote id="uid25" id-text="14"><i>Clock Constraints in UML/MARTE CCSL</i>. C. André, F. Mallet. Technical Report RR-6540. Inria, 2008. <ref xlink:href="http://hal.inria.fr/inria-00280941" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>inria-00280941</ref></footnote>, is inherently capable of describing circuits and systems with multiple clocks.</p>
      <p>The Eclipse project POP provides a tooled infrastructure to refine high-level specifications into real-time streaming applications or locally synchronous and globally asynchronous systems, through a series of model analysis and synthesis libraries.
These tool-supported refinement and transformation techniques can assist the system engineer from the earliest design stages of requirement specification to the latest stages of synthesis, scheduling and deployment. These characteristics make polychrony much closer to the required semantic for compositional, refinement-based, architecture-driven, system design.
</p>
    </subsection>
    <subsection id="uid26" level="1">
      <bodyTitle>Modelling Time</bodyTitle>
      <p>The elegant abstraction offered by the "synchronous hypothesis" <footnote id="uid27" id-text="15"><i>The synchronous languages 12 years later</i>. A. Benveniste, et al. Proceedings of IEEE, 91(1), 2003.</footnote>
has translated in famous leitmotivs like <i>"computation takes no time"</i> and <i>"communication is instantaneous"</i> and contributed to the impact and commercial success of Esterel Studio <footnote id="uid28" id-text="16"><i>Esterel Studio</i>, Sinfora. <ref xlink:href="http://www.synfora.com/products/esterelStudio.html" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>synfora.<allowbreak/>com/<allowbreak/>products/<allowbreak/>esterelStudio.<allowbreak/>html</ref>.</footnote>
and SCADE <footnote id="uid29" id-text="17"><i>Scade System</i>, ANSYS. <ref xlink:href="http://www.esterel-technologies.com/products/scade-system" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>esterel-technologies.<allowbreak/>com/<allowbreak/>products/<allowbreak/>scade-system</ref></footnote>.</p>
      <p>Meanwhile, proposals and standards have appeared to push the technical boundaries of synchronous concurrency, in order to address a larger spectrum of concerns related to modern, heterogeneous, many-core architectures. The challenge becomes more largely about representing time in system design, alongside with many, so called, non-functional properties: cost, power, heat, speed, throughput.</p>
      <p>One reference for the purpose of modelling timed hardware behaviour is PSL
<footnote id="uid30" id-text="18"><i>IEEE Standard for Property Specification Language</i>. IEEE, 2005. <ref xlink:href="http://dx.doi.org/10.1109/IEEESTD.2005.97780" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>dx.<allowbreak/>doi.<allowbreak/>org/<allowbreak/>10.<allowbreak/>1109/<allowbreak/>IEEESTD.<allowbreak/>2005.<allowbreak/>97780</ref>.</footnote>.
PSL is a formal specification language based on Kleene algebras that was originally designed to model regular hardware signal traces. The duality between automata and this formalism also makes it suitable to express requirements, formal properties and abstraction of program behaviours. It is widely used for modelling and verification of hardware systems.</p>
      <p>A more recent reference of broader spectrum is CCSL <footnote id="uid31" id-text="19"><i>CCSL: specifying clock constraints with UML/MARTE</i>, OMG, 2008. <ref xlink:href="http://www.omgmarte.org/node/66" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>omgmarte.<allowbreak/>org/<allowbreak/>node/<allowbreak/>66</ref>.</footnote>,
the clock constraints specification language of UML Marte. CCSL's core specification formalism is based on the Signal MoCC, it is synchronous and multi-clocked. Yet, CCSL supports extensions to model multi-rate, multi-periodic systems, that are adequate to represent hardware clocks, as well as asynchronous and continuous extensions (although largely unexploited in the related work).
Another well-developed model is that of Ptolemy <footnote id="uid32" id-text="20"><i>Ptolemy</i>, UC Berkeley. <ref xlink:href="http://ptolemy.eecs.berkeley.edu" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>ptolemy.<allowbreak/>eecs.<allowbreak/>berkeley.<allowbreak/>edu</ref>.</footnote>,
which represents time as a first-class citizen alongside data carried by streams in the modelled system. It relates to the notion of PRET <footnote id="uid33" id-text="21"><i>Precision Timed Computation in Cyber-Physical Systems</i>. E. A. Lee and S. A. Edwards, 2007. <ref xlink:href="http://ptolemy.eecs.berkeley.edu/publications/papers/07/PRET" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>ptolemy.<allowbreak/>eecs.<allowbreak/>berkeley.<allowbreak/>edu/<allowbreak/>publications/<allowbreak/>papers/<allowbreak/>07/<allowbreak/>PRET</ref>.</footnote>,
(precision time machine) to support real-time simulation.</p>
      <p>In the meantime, and from a totally different perspective, type theory has made considerable advances since the avent of effect systems <footnote id="uid34" id-text="22"><i>Polymorphic effect systems</i>. J. M. Lucassen , D. K. Gifford. Principles of Programming Languages. ACM, 1988.</footnote> to formally represent formal properties alongside with values. Hybrid types
<footnote id="uid35" id-text="23"><i>Hybrid type checking</i>. K.W. Knowles and C. Flanagan. ACM Transactions on Programming languages and systems, 32(2). ACM, 2010</footnote> (linked to interface and contract theories),
refinement types
<footnote id="uid36" id-text="24"><i>Abstract Refinement Types</i>. N. Vazou, P. Rondon, and R. Jhala. European Symposium on Programming. Springer, 2013.</footnote>,
value-dependant types, allow formal program properties, logical or temporal, to flow alongside with data-types during program analysis and verification. While a combination of all the above is yet unexplored, it offers an exciting venue for contributing in either/both of these fields with new theoretical developments on modelling time using principles of type theory.
</p>
    </subsection>
    <subsection id="uid37" level="1">
      <bodyTitle>Modelling Architectures</bodyTitle>
      <p>An architectural model represents components in a distributed system as boxes with well-defined interfaces, connections between ports on component interfaces, and specifies component properties that can be used in analytical reasoning about the model.
Models are hierarchically organised, so that each box can contain another system with its own set of boxes and connections between them. An architecture description language for embedded systems, for which timing and resource availability form an important part of the requirements, must in addition describe resources of the system platform, such as processors, memories, communication links, etc.
Several architectural modelling languages for embedded systems have emerged in recent years, including the SAE AADL <footnote id="uid38" id-text="25"><i>Architecture Analysis and Design Language</i>, AS-5506. SAE, 2004. <ref xlink:href="http://standards.sae.org/as5506b" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>standards.<allowbreak/>sae.<allowbreak/>org/<allowbreak/>as5506b</ref></footnote>, SysML <footnote id="uid39" id-text="26"><i>System Modelling Language</i>. OMG, 2007. <ref xlink:href="http://www.omg.org/spec/SysML" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>omg.<allowbreak/>org/<allowbreak/>spec/<allowbreak/>SysML</ref></footnote>, UML MARTE <footnote id="uid40" id-text="27"><i>UML Profile for MARTE</i>. OMG, 2009. <ref xlink:href="http://www.omg.org/spec/MARTE" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>omg.<allowbreak/>org/<allowbreak/>spec/<allowbreak/>MARTE</ref></footnote>.</p>
      <p>An architectural specification serves several important purposes. First, it breaks down a system model into manageable components to establish clear interfaces between components. In this way, complexity becomes manageable by hiding details that are not relevant at a given level of abstraction. Clear, formally defined, component interfaces allow us to avoid integration problems at the implementation phase. Connections between components, which specify how components affect each other, help propagate the effects of a change in one component to the linked components.</p>
      <p>Most importantly, an architectural model is a repository to share knowledge about the system being designed. This knowledge can be represented as requirements, design artefacts, component implementations, held together by a structural backbone. Such a repository enables automatic generation of analytical models for different aspects of the system, such as timing, reliability, security, performance, energy, etc. Since all the models are generated from the same source, the consistency of assumptions w.r.t. guarantees, of abstractions w.r.t. refinements, used for different analyses becomes easier, and can be properly ensured in a design methodology based on formal verification and synthesis methods.</p>
      <p>Related works in this aim, and closer in spirit to our approach (to focus on modelling time) are domain-specific languages such as Prelude <footnote id="uid41" id-text="28"><i>The Prelude language</i>. LIFL and ONERA, 2012. <ref xlink:href="http://www.lifl.fr/~forget/prelude.html" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>lifl.<allowbreak/>fr/<allowbreak/>~forget/<allowbreak/>prelude.<allowbreak/>html</ref></footnote> to model the real-time characteristics of embedded software architectures. Conversely, standard architecture description languages could be based on algebraic modelling tools, such as interface theories with the ECDAR tool <footnote id="uid42" id-text="29"><i>PyECDAR, timed games for timed specifications</i>. Inria, 2013. <ref xlink:href="https://project.inria.fr/pyecdar" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>project.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>pyecdar</ref></footnote>.
</p>
    </subsection>
    <subsection id="uid43" level="1">
      <bodyTitle>Time Scheduling</bodyTitle>
      <p>Cyber-physical systems are reactive systems whose correctness not only depends on a deterministic behavior but also on timing predictability. The timing parameters of a CPS are requirements that arise from the system’s specification (e.g. minimum throughput, maximum latency, deadlines) or timing properties of the physical and cyber-parts that restrict the CPS implementation. The design of a CPS must ensure that these timing requirements will be met, even in the worst-case scenario, through the different components and their timing properties.</p>
      <subsection id="idp2511760" level="2">
        <bodyTitle>Scheduling theory</bodyTitle>
        <p>Real-time scheduling theory provides tools for predicting the timing behaviour of a CPS which consists of many interacting software and hardware components. Expressing parallelism among software components is a crucial aspect of the design process of a CPS. It allows for efficient partition and exploitation of available resources. In the real-time scheduling theory literature, many models of computation have been proposed to express such parallelism, for instance:</p>
        <simplelist>
          <li id="uid44">
            <p noindent="true">Set of independent periodic, sporadic, or aperiodic tasks where each real-time task is generally characterised with some timing parameters: deadline, period, first start time, jitter, etc. The periodic and sporadic task models <footnote id="uid45" id-text="30"><i>Scheduling algorithms for multiprogramming in a hard-real-time environment</i>. C. L. Liu and J. W. Layland. Journal of the ACM 20(1), 1973.</footnote>
are very well studied task models since they allow to analytically reason about the timing behaviour of tasks. More expressive task models <footnote id="uid46" id-text="31"><i>The digraph real-time task model</i>. M. Stigge, P. Ekberg, N. Guan, and W. Yi. Real-Time and Embedded Technology and Applications Symposium. IEEE, 2011.</footnote>
such as the multi-frame and the recurring real-time task models have also emerged.</p>
          </li>
          <li id="uid47">
            <p noindent="true">Task graph models <footnote id="uid48" id-text="32"><i>Task graph scheduling using timed automata</i>. Y. Abdeddaïm, A. Kerbaa, and O. Maler. International Symposium on Parallel and Distributed Processing. IEEE, 2003.</footnote>
where precedence constraints among real-time tasks may exist.</p>
          </li>
          <li id="uid49">
            <p noindent="true">Data-flow graph models such as synchronous data-flow (SDF <footnote id="uid50" id-text="33"><i>Synchronous data-flow</i>. E. A. Lee and D. G. Messerschmitt. Proceedings of the IEEE, 1987.</footnote>)
and cyclo-static dataflow (CSDF <footnote id="uid51" id-text="34"><i>Cycle-static dataflow</i>. G. Blisen, M. Engels, R. Lauwereins, and J. Peperstraete. Transactions on Signal Processing</footnote>. IEEE, 1996.)
models where the set of tasks (also called actors) communicate with each other through FIFO channels. When it fires, an actor consumes a predefined number of tokens from its inputs and produces a predefined number of tokens on its outputs. The scheduling problem is hence more complex since data dependencies must be satisfied.</p>
          </li>
        </simplelist>
        <p>The literature about real-time scheduling of sets of independent real-time tasks <footnote id="uid52" id-text="35"><i>A survey of hard real-time scheduling for multiprocessor systems</i>. R. I. Davis and A. Burns. <i>ACM Computing Survey</i> 43(4), 2011.</footnote>
provides very mature schedulability tests regarding many scheduling strategies, preemptive or non-preemptive scheduling, uniprocessor or multiprocessor scheduling, etc. Historically, real-time systems where scheduled by cyclic executives (i.e. static scheduling). However, since this approach produces rigid and difficult to maintain systems and handles only periodic tasks, the research community has proposed many dynamic scheduling algorithms, which can be classified as fixed-priority scheduling (e.g. rate-monotonic scheduling, deadline monotonic scheduling) and dynamic priority scheduling (e.g. earliest-deadline first scheduling, least laxity scheduling). Multiprocessor scheduling can be further classified as partitioned scheduling (each task is allocated to a processor and no migration is allowed), global scheduling (a single job can migrate to and execute on different processors), or hybrid.</p>
        <p>Scheduling of data-flow graphs has also been extensively studied in the past decades. Static-periodic scheduling is the main scheduling approach, which consists in infinitely repeating a firing sequence of actors. This problem has been addressed with respect to many performance criteria: throughput maximisation <footnote id="uid53" id-text="36"><i>Throughput analysis of synchronous data-flow graphs</i>. Ghamarian, A.H. et al. Application of Concurrency to System Design. IEEE, 2006</footnote>,
latency minimisation <footnote id="uid54" id-text="37"><i>Latency minimization for synchronous data flow graphs</i>. A. H. Ghamarian, et al. Conference on Digital System Design Architectures, Methods and Tools. Euromicro, 2007.</footnote>,
buffer minimisation <footnote id="uid55" id-text="38"><i>Minimal memory schedules for data-flow networks</i>. M. Cubric and P. Panangaden. International Conference on Concurrency Theory. Springer, 1993.</footnote>,
code size minimisation <footnote id="uid56" id-text="39"><i>Looped schedules for dataflow descriptions of multirate signal processing algorithms</i>. S. S. Bhattacharyya and E. A. Lee. Journal of Formal Methods in System Design. Kluwer, 1994.</footnote>,
etc. Recently, real-time dynamic scheduling (fixed-priority and earliest-deadline first scheduling) of data-flow graphs has been addressed where actors are mapped to periodic real-time tasks and existing schedulability tests are adapted to synthesise the timing characteristics of actors
<footnote id="uid57" id-text="40"><i>Affine data-flow graphs for the synthesis of hard real-time applications</i>. A. Bouakaz, J.-P. Talpin, and J. Vitek. International Conference on Application of Concurrency to System Design. IEEE Press, 2012.</footnote>
<footnote id="uid58" id-text="41"><i>Hard-real-time scheduling of data-dependent tasks in embedded streaming applications</i>. M. Bamakhrama and T. Stefanov. International Conference on Embedded Software. ACM, 2011.</footnote>
</p>
      </subsection>
    </subsection>
    <subsection id="uid59" level="1">
      <bodyTitle>Virtual Prototyping</bodyTitle>
      <p>Virtual Prototyping is the technology of developing realistic simulators from models of a system under design; that is, an emulated device that captures most, if not all, of the required properties of the real system, based on its specifications. A virtual prototype should be run and tested like the real device. Ideally, the real application software would be run on the virtual prototyping platform and produce the same results as the real device with the same sequence of outputs and reported performance measurements. This may be true to some extent only. Some trade-offs have often to be made between the accuracy of the virtual prototype, and time to develop accurate models.</p>
      <p>A virtual prototyping platform must include operating system or hardware emulation technology since the hardware functions must be simulated at least to a minimum extent in order to run the software and evaluate the design alternatives. The hardware simulation engine is a key component of a virtual prototyping platform, which makes it possible to run the application software and produce output that can be analysed by other tools. Because electronic design tools (EDAs) simulate the hardware in every detail, it is possible to verify that the circuit operates properly and also to measure how many clock cycles will be required to achieve an operation. But because they simulate very low-level operations, simulation is much too slow to be usable for virtual prototyping. The authors of the FAST system <footnote id="uid60" id-text="42"><i>The fast methodology for high-speed SOC simulation.</i> D. Chiou, et al. International
conference on Computer-aided design. IEEE, 2007.</footnote>
and SocLib project reports
<footnote id="uid61" id-text="43"><i>Using binary translation in event driven simulation for fast and flexible MPSOC simulation.</i> M. Gligor, N. Fournel, and F. Pétrot. In CODES+ISSS, IEEE, 2009.</footnote>
speed-ups with a factor of several hundreds in a comparison between their cycle accurate simulator and their virtual prototyping framework. A factor of the order of 100 times faster than EDA tools is required for virtual prototyping.</p>
      <p>In order to speed-up simulation time, the virtual prototype must trade-off with something. Depending upon the application designers goals, one may be interested in trading some loss of accuracy in exchange for simulation speed, which leads to constructing simulation models that focus on some design aspects and provide abstraction of others. A simulation model can provide an abstraction of the simulated hardware in three directions:</p>
      <simplelist>
        <li id="uid62">
          <p noindent="true"><i>Computation abstraction</i>. A hardware component computes a high level function by carrying out a series of small steps executed by composing logical gates. In a virtual prototyping environment, it is often possible to compute the high level function directly by using the available computing resources on the simulation host machine, thus abstracting the hardware function.</p>
        </li>
        <li id="uid63">
          <p noindent="true"><i>Communication abstraction</i>. Hardware components communicate together using some wiring, and some protocol to transmit the data. Simulation of the communication and the particular protocol may be irrelevant for the purpose of virtual prototyping: communication can be abstracted into higher level data transmission functions.</p>
        </li>
        <li id="uid64">
          <p noindent="true"><i>Timing Abstraction</i>. In a cycle accurate simulator, there are multiple simulation tasks, and each task makes some progress on each clock cycle, but this is slowing down the simulation. In a virtual prototyping experiment, one may not need to so precise timing information: coarser time abstractions can be defined allowing for faster simulation.</p>
        </li>
      </simplelist>
      <p>The cornerstone of a virtual prototyping platform is the component that simulates the processor(s) of the platform, and its associated peripherals. Such simulation can be <i>static</i> or <i>dynamic</i>.
</p>
    </subsection>
    <subsection id="uid65" level="1">
      <bodyTitle>Research Objectives</bodyTitle>
      <p>The challenges addressed by team TEA support the claim that sound Cyber-Physical System design (including embedded, reactive, and concurrent systems altogether) should consider (logical, formal) time modelling as a central aspect.</p>
      <p>In this aim, architectural specifications found in software engineering are a natural focal point to start from. Architecture descriptions organise a system model into manageable components, establish clear interfaces between them, and help correct integration of these components during system design.</p>
      <p>The definition of a formal design methodology to support the heterogeneous modelling of time in architecture descriptions demands the elaboration of sound mathematical foundations and the development of formal calculi methods to instrument them that constitute the research program of team TEA.</p>
      <subsection id="uid66" level="2">
        <bodyTitle>Objective n. 1 – Semantics and specification of time in system design</bodyTitle>
        <p noindent="true" spacebefore="10.0pt"><b>Time systems</b>.
To mitigate and generalise algebraic representations of time, we propose to introduce the paradigm of "time system" (type systems to represent time). Just as a type system abstracts data carried along operations in a program, a time system abstracts the causal interaction of that program module or hardware element with its environment, its pre and post conditions, its assumptions and guarantees, either logical or numerical. Instances of the concept of time system we envision are the clock calculi found in data-flow synchronous languages like Signal, Lustre and its different incarnations. All are bound to a particular model of time.</p>
        <p>To gain generality and compositionality, we wish to proceed from recent developments on hybrid types
<footnote id="uid67" id-text="44"><i>Hybrid type checking</i>. K.W. Knowles and C. Flanagan. ACM Transactions on Programming languages and systems, 32(2). ACM, 2010</footnote> (linked to interface and contract theories),
refinement types
<footnote id="uid68" id-text="45"><i>Abstract Refinement Types</i>. N. Vazou, P. Rondon, and R. Jhala. European Symposium on Programming. Springer, 2013.</footnote>,
value-dependant type
<footnote id="uid69" id-text="46"><i>Secure distributed programming with value-dependent types</i>. N. Swamy, et al. International Conference on Functional Programming. Springer, 2011.</footnote>
theories,
to formally define a time system.</p>
        <p>The principle of these type systems is to allow data-types inferred in the program with properties, possibly temporal, pertaining, for instance, to the algebraic domain on their value, or any algebraic property related to its computation: effect, memory usage <footnote id="uid70" id-text="47"><i>Region-based memory management</i>. Tofte, M., Talpin, J.-P. Information and Computation, 132(2). Academic Press, 1997.</footnote>,
pre-post condition, value-range, cost, speed, time.</p>
        <p>In the quest of an appropriate algebra for time, we are studying both the CCSL and PSL standards and, more generally, Kleene algebras
<footnote id="uid71" id-text="48"><i>Automated reasoning in Kleene algebra</i>. P. Höfner and G. Struth. Conference on Automated Reasoning. Springer, 2007.</footnote>
which offer greater expressivity in the prospect of timed specification as well as refinement checking and verification
<footnote id="uid72" id-text="49"><i>Algebraic Verification Method for SEREs Properties via Groebner Bases Approaches</i>. N. Zhou, J. Wu, X. Gao. Journal of Applied Mathematics. Hindawi, 2013</footnote>
<footnote id="uid73" id-text="50"><i>From monadic logic to PSL</i>. M. Y. Vardi. Pillars of Computer Science, 2008.</footnote>.</p>
        <p>Being grounded on type and domain theories, a time system can naturally be equipped with program analysis techniques based on type inference (for data-type inference) or abstract interpretation (for program properties inference) <footnote id="uid74" id-text="51"><i>Timed polyhedra analysis for synchronous languages</i>. Besson, F., Jensen, T., Talpin, J.-P. Static Analysis Symposium. Springer, 1999.</footnote>.
We intend to use and learn from existing open-source implementations in this field of research <footnote id="uid75" id-text="52">The Microsoft F* project, <ref xlink:href="https://research.microsoft.com/en-us/projects/fstar" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>research.<allowbreak/>microsoft.<allowbreak/>com/<allowbreak/>en-us/<allowbreak/>projects/<allowbreak/>fstar</ref>.</footnote> in order to prototype our solution.</p>
        <p noindent="true" spacebefore="10.0pt"><b>Relating time systems</b>.
Just as a time system formally represents the timed behaviour of a given component, timing relations (abstraction and refinement) represent interaction among components. Logically, their specification should be the role of a module system, and verifying their conformance that of a module checking algorithm.</p>
        <p>Scalability and compositionality dictate the use of assume-guarantee reasoning, as found in interface automata and contract algebra, in order to facilitate composition by behavioural sub-typing, in the spirit of the (static) contract-based formalism proposed by Passerone et al.
<footnote id="uid76" id-text="53"><i>A contract-based formalism for the specification of heterogeneous systems</i>. L. Benvenistu, A. Ferrari, L. Mangeruca, E. Mazzi, R. Passerone, C. Sofronis. Forum on design languages, 2008</footnote>
<footnote id="uid77" id-text="54"><i>Moving from Specifications to Contracts in Component-Based Design.</i> S. Bauer, A. David, R. Hennicker, K. Larsen, A. Legay, U. Nyman, A. Wasowski. Fundamental Aspects in Software Engineering. Springer, 2012</footnote>.</p>
        <p>To further elaborate a formal verification approach, we will additionally consider notions of refinement calculi based on temporal logic
<footnote id="uid78" id-text="55"><i>Refinement Calculus: A Systematic Introduction</i>. R.J. Back, J. von Wright. Springer, 1998.</footnote>,
in order to possibly extend our interface and contract theories with liveness properties. The definition of a module/interface for timed architectures should hence proceed directly from the definition of its time system, using mostly existing theoretical results on the matter of module systems, interface and contract theories.</p>
        <p noindent="true" spacebefore="10.0pt"><b>Conformance of time relations</b>.
Verification problems encompassing heterogeneously timed specifications are common and of great variety: checking correctness between abstract and concrete time models relates to desynchronisation (from synchrony to asynchrony) and scheduling analysis (from synchrony to hardware). More generally, they can be perceived from heterogeneous timing viewpoints (e.g. mapping a synchronous-time software on a real-time middleware or hardware).</p>
        <p>This perspective demands capabilities not only to inject time models one into the other (by abstract interpretation, using refinement calculi), to compare time abstractions one another (using simulation, refinement, bisimulation, equivalence relations) but also to prove more specific properties (synchronisation, determinism, endochrony).</p>
        <p>In the spirit of our recent work developing an abstract scheduling theory, we want to develop a method of abstract interpretation
<footnote id="uid79" id-text="56"><i>La vérification de programmes par interprétation abstraite</i>. P. Cousot. Séminaire au Collège de France, 2008.</footnote>
to reason about the abstraction and refinement of heterogeneous timed specifications in the aim of checking their conformance. A source of inspiration in that prospect is the notion of contract abstraction <footnote id="uid80" id-text="57"><i>Compositional contract abstraction for system design</i>. A. Benveniste, D. Nickovic, T. Henzinger.</footnote>.
To this end, we plan to use SAT-SMT solving techniques to check conformance of abstracted time constraints, in a way which we previously experienced with the automated code generation validation of Polychrony
<footnote id="uid81" id-text="58"><i>Efficient deadlock detection for polychronous data-flow specifications</i>. C. Ngo, J.-P. Talpin, T. Gautier. Electronic System Level Synthesis Conference (ESLSYN'14). IEEE, 2014.</footnote>
<footnote id="uid82" id-text="59"><i>Formal verification of synchronous data-flow program transformations toward certified compilation</i>. V.-C. Ngo, J.-P. Talpin, Gautier, P. Le Guernic, L. Besnard. Frontiers of Computer Systems. Springer, 2013.</footnote>
<footnote id="uid83" id-text="60"><i>Enhancing the Compilation of Synchronous Dataflow Programs with a Combined Numerical-Boolean Abstraction</i>. P. Feautrier, A. Gamatié and L. Gonnord. Journal of Computing, 1(4). Computer Society of India, 2012.</footnote>.</p>
        <p>To check conformance between heterogeneously timed specifications, we will consider variants of the abstract interpretation framework proposed by Bertrane et al.
<footnote id="uid84" id-text="61"><i>Temporal Abstract Domains</i>. J. Bertrane. International Conference on Engineering of Complex Computer Systems. IEEE, 2011</footnote>
to inject properties from one time domain into another, be it continuous
<footnote id="uid85" id-text="62"><i>Abstract Interpretation of the Physical Inputs of Embedded Programs</i>. O. Bouissou, M. Martel. Verification, Model Checking, and Abstract Interpretation. LNCS 4905, Springer, 2008</footnote>
or discrete
<footnote id="uid86" id-text="63"><i>Proving the Properties of Communicating Imperfectly-Clocked Synchronous Systems</i>. J. Bertrane. Static Analysis Symposium. Springer, 2006</footnote>.</p>
        <p>This will for instance enable the possibility of verifying cross-domain properties, e.g. cost v.s. power v.s. performance v.s. software mapping. This will allow to formalise intuitions such as that this typical inter-domain constraint: the cost of a system has an impact on the system's controlability; and allow to formally explain why: lower cost means hardware with lower performances, which means longer WCRTs, which means longer end-to-end latency, which may result in a response-time longer than controllability limits.
This particular topic (which we could call cross-domain conformance checking) has not been studied in the related literature (on contract-based design, for instance), and could be based on both abstraction techniques, e.g. linear abstractions, or morphisms between domains or even discrete relations, e.g. a simple catalog or “price list” relating price and performance for a data-base of hardware components.</p>
      </subsection>
      <subsection id="uid87" level="2">
        <bodyTitle>Objective n. 2 – A standard for modelling time in system design</bodyTitle>
        <p>A second objective, to be developed in parallel and synergy to objective n. 1, is the definition of an architecture-specific specification formalism, that would serve as semantic foundation, structure and repository for tooling a component-based design methodology with semantic analysis, to synthesise component interfaces, and formal methods, to verify specified requirements.</p>
        <p>In project TEA, it will take form by the definition and tooling of a time annex for the AADL standard, based on the theory developed in objective n. 1. The aim of the AADL time annex is to formalise the logical and physical timing properties of architecture models and represent them as constraints expressed using regular grammars (like in PSL), or using the process calculus of CCSL.</p>
        <p>This is an objective reminiscent and in direct application of the principle of time system (objective n.1). We not only want to model time in the heterogeneous logical and physical constituents in an AADL specification, but relate them, and verify the correctness of their composition.</p>
        <p>Our aim is to start from the modelling standards AADL and CCSL to define a standard for time in system design. Our contribution will be formalised by a timing annex for the AADL and tools collaboratively developed to support its use.
Our first milestone in this prospect is a report
<footnote id="uid88" id-text="64"><i>"Logically timed specifications in the AADL – Recommendations to the SAE committee on AADL</i>. L. Besnard, E. Borde, P. Dissaux, T. Gautier, P. Le Guernic, J.-P. Talpin, H. Yu. Inria Technical Report n.446, 2014.</footnote>
of recommendations accepted by the AADL committee.
Our next step, the submission of a time annex by team TEA at the SAE consortium, will employ the principles exposed in objective n.1 in order to formally define a modular and scalable specification formalism to specify heterogeneous timing constraints in the AADL.</p>
        <p>Then, the specification of timing relations between AADL objects will be made explicit by contracts. Together with these contracts, we will then formally define abstraction and refinement relation in order to inject properties assumed by one component into the time model guaranteed by another, and vice versa. Lastly, conformance-checking abstracted contracts will be supported by state-of-the-art verification tools. This all will define a design methodology for time in the AADL, and our very last step will be to tool this methodology and provide a reference implementation.</p>
      </subsection>
      <subsection id="uid89" level="2">
        <bodyTitle>Objective n. 3 – Applications to real-time scheduling</bodyTitle>
        <p>As a prime application of formal methods for interacting time models, scheduling thousands of program blocks or modules found on modern embedded architecture poses a challenging problem. It simply defies known bounds of complexity theory in the field. It is an issue that requires a particular address, because it would find direct industrial impact in present collaborative projects in which we are involved.</p>
        <p>One recent milestone in the prospect of large-scale scheduling is the development of abstract affine scheduling <footnote id="uid90" id-text="65"><i>Buffer minimization in earliest-deadline first scheduling of dataflow graphs</i>. A. Bouakaz and J.-P. Talpin. Conference on Languages, Compilers and Tools for Embedded Systems. ACM, June 2013.</footnote>. It consists, first, of approximating threads communication patterns in Safety-Critical Java using cyclo-static data-flow graphs and affine functions. Then, it uses state of the art ILP techniques to find optimal schedules and concretise them as real-time schedules for Safety Critical Java programs <footnote id="uid91" id-text="66"><i>Affine data-flow graphs for the synthesis of hard real-time applications</i>. A. Bouakaz, J.-P. Talpin, and J. Vitek. Application of Concurrency to System Design. IEEE Press, June 2012.</footnote> <footnote id="uid92" id-text="67"><i>Design of Safety-Critical Java Level 1 Applications Using Affine Abstract Clocks</i>. A. Bouakaz and J.-P. Talpin. International Workshop on Software and Compilers for Embedded Systems. ACM, June 2013.</footnote></p>
        <p>To develop the underlying theory of this promising research topic, we first need to deepen the theoretical foundation to establish links between scheduling analysis and abstraction interpretation <footnote id="uid93" id-text="68"><i>Abstraction-Refinement for Priority-Driven Scheduling of Static Dataflow Graphs</i>. Submitted for publication, 2014.</footnote>.</p>
        <p>The theory of time system developed in objective n.1 offers the ideal framework to pursue this development. It amounts to representing scheduling constraints, inferred from programs, as types. It allows to formalise the target time model of the scheduler (the architecture, its middle-ware, its real-time system) and defines the basic concepts to verify assumptions made in one with promises offered by the other: contract verification or, in this case, synthesis. Objective n.3 is hence defined as a direct application of objective n.1.</p>
      </subsection>
      <subsection id="uid94" level="2">
        <bodyTitle>Objective n. 4 – Applications to virtual prototyping</bodyTitle>
        <p>A solution usually adopted to handle time in virtual prototyping is to manage hierarchical time scales, use component abstractions where possible to gain performance, use refinement to gain accuracy where needed. Localised time abstraction may not only yield faster simulation, but facilitate also verification and synthesis (e.g. synchronous abstractions of physically distributed systems). Such an approach requires computations and communications to be harmoniously discretised and abstracted from originally heterogeneous viewpoints onto a structuring, articulating, pivot model, for concerted reasoning about time and scheduling of events in a way that ensures global system specification correctness.</p>
        <p>Just as model checking usually employs goal-directed abstraction techniques, in order to approximate parts of the model that are not in the path of the property to check, we plan to equivalently define, possibly semi-automate, abstraction techniques to approximate the time model of system components that do not directly influence timing properties to evaluate.</p>
        <p>In the short term these component models could be based on libraries of predefined models of different levels of abstractions. Such abstractions are common in large programming workbench for hardware modelling, such as SystemC, but less so, because of the engineering required, for virtual prototyping platforms. Additionally, the level of abstraction required to simulate components could simply (and best) be specified manually by annotating the architecture specification.</p>
        <p>The approach of team TEA provides an additional ingredient in the form of rich component interfaces. It therefore dictates to further investigate the combined use of conventional virtual prototyping libraries, defined as executable abstractions of real hardware, with executable component simulators synthesised from rich interface specifications (using, e.g., conventional compiling techniques used for synchronous programs).</p>
        <p>Just as virtual integration consists of synthesising the verification model of an architecture specification, virtual prototyping can be seen as synthesising an executable simulator from a model in, e.g., the spirit of the A-350 DMS case study that was realised by team ESPRESSO in the frame of Artemisia project CESAR <footnote id="uid95" id-text="69"><i>System-level co-simulation of integrated avionics using polychrony</i>. Yu, H., Ma, Y., Glouche, Y., Talpin, J.-P., Besnard, L., Gautier, T., Le Guernic, P., Toom, A., and Laurent, O. ACM Symposium on Applied Computing. ACM, 2011.</footnote>.</p>
      </subsection>
    </subsection>
  </fondements>
  <domaine id="uid96">
    <bodyTitle>Application Domains</bodyTitle>
    <subsection id="uid97" level="1">
      <bodyTitle>Application Domains</bodyTitle>
      <p>From our continuous collaboration with major academic and industrial partners through projects TOPCASED, OPENEMBEDD, SPACIFY, CESAR, OPEES, P and CORAIL, our experience has primarily focused on the aerospace domain. The topics of time and architecture of team TEA extend to both avionics and automotive, as demonstrated from this section to section 8. Yet, the research focus on time in team TEA is central in any aspect of, cyber-physical, embedded system design in automotive, music synthesis, signal processing, software radio, circuit and system on a chip design; many application domains which, should more collaborators join the team, would definitely be worth investigating.</p>
      <p>Nonetheless, the application domains of our two direct collaborations with industry, avionics with Thales and automotive Toyota, are perfectly in line with the research objectives of team TEA and will allow us to quickly stream our theoretical results onto software and standards, which we will continue to distribute in open-source.</p>
      <p>Multi-scale, multi-aspect time modelling, analysis and software synthesis will greatly contribute to architecture modelling in these domains, with applications to optimised (distributed, parallel, multi-core) code generation for avionics (our project with Thales avionics, section 8) as well as modelling standards, real-time simulation and virtual integration in automotive (our project with Toyota, section 8).</p>
      <p>Together with the importance of open-source software, one of these project, the FUI Project P, demonstrated that a centralised model for system design could not just be a domain-specific programming language, such as discrete Simulink data-flows or a synchronous language. Synchronous languages implement a fixed model of time using logical clocks that are abstraction of time as sensed by software. They correspond to a fixed viewpoint in system design, and in a fixed hardware location in the system, which is not adequate to our purpose and must be extended.</p>
      <p>In project P, we first tried to define a centralised model for importing discrete-continuous models onto a simplified implementation of SIMULINK: P models. Certified code generators would then be developed from that format. Because this does not encompass all aspects being translated to P, the P meta-model is now being extended to architecture description concepts (of the AADL) in order to become better suited for the purpose of system design. Another example is the development of System Modeller on top of SCADE, which uses the more model-engineering flavoured formalism SysML to try to unambiguously represent architectures around SCADE modules.</p>
      <p>An abstract specification formalism, capable of representing time, timing relations, with which heterogeneous models can be abstracted, from which programs can be synthesised, naturally appears better suited for the purpose of virtual prototyping. RT-Builder, developed by TNI, was industrially proven and deployed for that purpose at Peugeot. It served to develop the virtual platform simulating all onboard electronics of PSA cars. This `hardware in the loop” simulator was used to test equipments supplied by other manufacturers with respect to virtual cars. In the avent of the related automotive standard, RT-Builder then became AUTOSAR-Builder.</p>
      <p>RT-Builder is the commercial implementation of Signal, whose industrial transfer with TNI was realised in the 90s by Paul Le Guernic and Albert Benveniste. As its actual industry usage has demonstrated, it is clear that the synchronous multi-clocked, or polychronous MoCC of Signal is an appropriate semantic core for the design of embedded software architectures.</p>
    </subsection>
  </domaine>
  <logiciels id="uid98">
    <bodyTitle>New Software and Platforms</bodyTitle>
    <subsection id="uid99" level="1">
      <bodyTitle>The Eclipse project POP</bodyTitle>
      <participants>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p>The distribution of project POP <footnote id="uid100" id-text="70"><i>Polychrony on POLARSYS (POP)</i>, an Eclipse project in the POLARSYS Industry Working Group, 2013. <ref xlink:href="https://www.POLARSYS.org/projects/POLARSYS.pop" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>www.<allowbreak/>POLARSYS.<allowbreak/>org/<allowbreak/>projects/<allowbreak/>POLARSYS.<allowbreak/>pop</ref></footnote> is a major achievement of the ESPRESSO project. The Eclipse project POP is a model-driven engineering front-end to our open-source toolset Polychrony. It was finalised in the frame of project OPEES, as a case study: by passing the POLARSYS qualification kit as a computer aided simulation and verification tool. This qualification was implemented by CS Toulouse in conformance with relevant generic (platform independent) qualification documents. Polychrony is now distributed by the Eclipse project POP on the platform of the POLARSYS industrial working group. Team TEA aims at continuing its dissemination to academic partners, as to its principles and features, and industrial partners, as to the services it can offer.</p>
      <p>Technically, project POP is composed of the Polychrony toolset, under GPL license, and its Eclipse framework, under EPL license.</p>
      <p noindent="true" spacebefore="10.0pt"><b>The Polychrony toolset</b>.
The Polychrony toolset is an Open Source development environment for critical/embedded systems.
It is based on Signal, a real-time polychronous dataflow language.
It provides a unified model-driven environment to perform design exploration
by using top-down and bottom-up design methodologies formally supported by design model
transformations from specification to implementation and from synchrony to asynchrony.
It can be included in heterogeneous design systems with various input formalisms and output languages.</p>
      <p>The Polychrony toolset provides a formal framework:</p>
      <simplelist>
        <li id="uid101">
          <p noindent="true">to validate a design at different levels, by the way of formal verification and/or simulation,</p>
        </li>
        <li id="uid102">
          <p noindent="true">to refine descriptions in a top-down approach,</p>
        </li>
        <li id="uid103">
          <p noindent="true">to abstract properties needed for black-box composition,</p>
        </li>
        <li id="uid104">
          <p noindent="true">to assemble heterogeneous predefined components (bottom-up with COTS),</p>
        </li>
        <li id="uid105">
          <p noindent="true">to generate executable code for various architectures.</p>
        </li>
      </simplelist>
      <p>The Polychrony toolset contains three main components and an experimental interface to GNU Compiler Collection (GCC):</p>
      <simplelist>
        <li id="uid106">
          <p noindent="true">The Signal toolbox, a batch compiler for the Signal language, and a structured API that provides a set of program transformations.
The Signal toolbox can be installed without other components.
The Signal toolbox is distributed under GPL V2 license.</p>
        </li>
        <li id="uid107">
          <p noindent="true">The Signal GUI, a Graphical User Interface to the Signal toolbox (editor + interactive access to compiling functionalities).
The Signal GUI is distributed under GPL V2 license.</p>
        </li>
        <li id="uid108">
          <p noindent="true">The SME/SSME platform, a front-end to the Signal toolbox in the Eclipse environment.
The SME/SSME platform is distributed under EPL license.</p>
        </li>
        <li id="uid109">
          <p noindent="true">GCCst, a back-end to GCC that generates Signal programs (not yet available for download).</p>
        </li>
      </simplelist>
      <p>In 2013, to be able to use the Signal GUI both as a specific tool and as a graphical view under Eclipse, the code of the Signal GUI has been restructured in three parts: a common part used by
both tools (28 classes), a specific part for the Signal GUI (2 classes), a specific part for Eclipse (2 classes). Such a structuration facilitates the maintenance of the products.</p>
      <p>The Polychrony toolset also provides:</p>
      <simplelist>
        <li id="uid110">
          <p noindent="true">libraries of Signal programs,</p>
        </li>
        <li id="uid111">
          <p noindent="true">a set of Signal program examples,</p>
        </li>
        <li id="uid112">
          <p noindent="true">user oriented and implementation documentations,</p>
        </li>
        <li id="uid113">
          <p noindent="true">facilities to generate new versions.</p>
        </li>
      </simplelist>
      <object id="uid114">
        <table>
          <tr>
            <td>
              <ressource xlink:href="IMG/PolychronyToolsetMapSSME.png" type="float" width="298.8987pt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" media="WEB"/>
            </td>
          </tr>
        </table>
        <caption>The Polychrony toolset high-level architecture</caption>
      </object>
      <p>Dassault Systèmes, supplies a commercial implementation of Polychrony, called RT-Builder, used for industrial scale projects.</p>
      <p>As part of its open-source release, the Polychrony toolset not only comprises source code libraries but also an important corpus of structured documentation, whose aim is not only to document each functionality and service, but also to help a potential developer to package a subset of these functionalities and services, and adapt them to developing a new application-specific tool: a new language front-end, a new back-end compiler. This multi-scale, multi-purpose documentation aims to provide different views of the software, from a high-level structural view to low-level descriptions of basic modules. It supports a distribution of the software “by apartment” (a functionality or a set of functionalities) intended for developers who would only be interested by part of the services of the toolset.</p>
      <p noindent="true" spacebefore="10.0pt"><b>The Eclipse POP Framework</b>.
We have developed a meta-model and interactive editor of Polychrony in Eclipse. Signal-Meta is the meta-model of the Signal language implemented with Eclipse/Ecore. It describes all syntactic elements specified in <footnote id="uid115" id-text="71"><i>SIGNAL V4-Inria version: Reference Manual</i>. Besnard, L., Gautier, T. and Le Guernic, P. <ref xlink:href="http://www.irisa.fr/espresso/Polychrony" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>irisa.<allowbreak/>fr/<allowbreak/>espresso/<allowbreak/>Polychrony</ref>, 2009</footnote>: all Signal operators (e.g. arithmetic, clock synchronization), model (e.g. process frame, module), and construction (e.g. iteration, type declaration).</p>
      <p>The meta-model primarily aims at making the language and services of the Polychrony environment available to inter-operation and composition with other components (e.g. AADL, Simulink, GeneAuto) within an Eclipse-based development toolchain. Polychrony now comprises the capability to directly import and export Ecore models instead of textual Signal programs, in order to facilitate interaction between components within such a toolchain.</p>
      <object id="uid116">
        <table>
          <tr>
            <td>
              <ressource xlink:href="IMG/Eclipse.png" type="float" width="298.8987pt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" media="WEB"/>
            </td>
          </tr>
        </table>
        <caption>The Eclipse POP Environment</caption>
      </object>
      <p>It also provides a graphical modelling framework allowing to design applications using a component-based approach. Application architectures can be easily described by just selecting components via drag and drop, creating some connections between them and specifying their parameters as component attributes. Using the modelling facilities provided with the Topcased framework, we have created a graphical environment for Polychrony called SME (Signal-Meta under Eclipse). To highlight the different parts of the modelling in Signal, we split the modelling of a Signal process in three diagrams: one to model the interface of the process, one to model the computation (or dataflow) part, and one to model all explicit clock relations and dependences. The SME environment is available through the ESPRESSO update site <footnote id="uid117" id-text="72"><i>Polychrony Update Site for Eclipse plug-ins</i>. <ref xlink:href="http://www.irisa.fr/espresso/Polychrony/update" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>irisa.<allowbreak/>fr/<allowbreak/>espresso/<allowbreak/>Polychrony/<allowbreak/>update</ref>, 2009.</footnote>. A new meta-model of Signal, called SSME (Syntactic Signal-Meta under Eclipse), closer to the Signal abstract syntax, has been defined and integrated in the Polychrony toolset.</p>
      <p>It should be noted that the Eclipse Foundation does not host code under GPL license. So, the Signal toolbox useful to compile Signal code from Eclipse is hosted on our web server.
For this reason, the building of the Signal toolbox, previously managed under Eclipse, has now been exported.
The interface of the Signal toolbox for Eclipse is now managed using the CMake tool like the Signal toolbox and the Signal GUI.</p>
    </subsection>
    <subsection id="uid118" level="1">
      <bodyTitle>Integrated Modular Avionics design using Polychrony</bodyTitle>
      <participants>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p>The Apex interface, defined in the ARINC standard  <footnote id="uid119" id-text="73"><i>ARINC Report 651-1: Design Guidance for Integrated Modular Avionics</i>. Airlines Electronic Engineering Committee, 1997</footnote>, provides an avionics application software with the set of basic services to access the operating-system and other system-specific resources. Its definition relies on the Integrated Modular Avionics approach (IMA). A main feature in an IMA architecture is that several avionics applications (possibly with different critical levels) can be hosted on a single, shared computer system. Of course, a critical issue is to ensure safe allocation of shared computer resources in order to prevent fault propagations from one hosted application to another. This is addressed through a functional partitioning of the applications with respect to available time and memory resources. The allocation unit that results from this decomposition is the <i>partition</i>.</p>
      <p>A partition is composed of <i>processes</i> which represent the executive units (an ARINC partition/process is akin to a  Unix process/task). When a partition is activated, its owned processes run concurrently to perform the functions associated with the partition. The process scheduling policy is priority preemptive. Each partition is allocated to a processor for a fixed time window within a major time frame maintained by the operating system. Suitable mechanisms and devices are provided for communication and synchronization between processes (e.g. <i>buffer</i>, <i>event</i>, <i>semaphore</i>) and partitions (e.g. <i>ports</i> and <i>channels</i>). The specification of the ARINC 651-653 services in Signal <ref xlink:href="#tea-2014-bid0" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/> is now part of the Polychrony distribution and offers a complete implementation of the Apex communication, synchronization, process management and partitioning services. Its Signal implementation consists of a library of generic, parameterizable Signal modules.</p>
    </subsection>
    <subsection id="uid120" level="1">
      <bodyTitle>Safety-Critical Java Level 1 Code generation from Dataflow Graph Specifications</bodyTitle>
      <participants>
        <person key="spades-2014-idp112384">
          <firstname>Adnan</firstname>
          <lastname>Bouakaz</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p>We have proposed a dataflow design model <ref xlink:href="#tea-2014-bid1" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/> of SCJ/L1 applications <footnote id="uid121" id-text="74"><i>Safety critical Java technology specification</i>. JSR-302, Year = 2010</footnote> in which handlers (periodic and aperiodic actors) communicate only through lock-free channels. Hence, each mission is modeled as a dataflow graph. The presented dataflow design model comes with a development tool integrated in the Eclipse IDE for easing the development of SCJ/L1 applications and enforcing the restrictions imposed by the design model. It consists of a GMF editor where applications are designed graphically and timing and buffering parameters can be synthesized. Indeed, abstract affine scheduling is first applied on the dataflow subgraph, that consists only of periodic actors, to compute timeless scheduling constraints (e.g. relation between the speeds of two actors) and buffering parameters. Then, symbolic fixed-priority schedulability analysis (i.e., synthesis of timing and scheduling parameters of actors) considers both periodic and aperiodic actors.</p>
      <p>Through a model-to-text transformation, using Acceleo, the SCJ code for missions, interfaces of handlers, and the mission sequencer is automatically generated in addition to the annotations needed by the memory checker. Channels are implemented as cyclic arrays or cyclical asynchronous buffers; and a fixed amount of memory is hence reused to store the infinite streams of tokens. The user must provide the SCJ code of all the <tt>handleAsyncEvent()</tt> methods. We have integrated the SCJ memory checker <footnote id="uid122" id-text="75"><i>Static checking of safety critical Java annotations</i>. Tang, D. Plsek, A. and Vitek, J. International Workshop on Java Technologies for Real-Time and Embedded Systems, 2010</footnote> in our tool so that potential dangling pointers can be highlighted at compile-time. To enhance functional determinism, we would like to develop an ownership type system to ensure that actors are strongly isolated and communicate only through buffers.</p>
    </subsection>
  </logiciels>
  <resultats id="uid123">
    <bodyTitle>New Results</bodyTitle>
    <subsection id="uid124" level="1">
      <bodyTitle>Highlights of the Year</bodyTitle>
      <p>This year's effort has been mainly devoted to the successful creation of project-team TEA and the definition of its new research perspective on Time, Events and Architectures in CPS design.</p>
      <p>The SAE committee on the AADL adopted our recommendations to implement a timed and synchronous behavioural annex <ref xlink:href="#tea-2014-bid2" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, <ref xlink:href="#tea-2014-bid3" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/> for standardisation <ref xlink:href="#tea-2014-bid4" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>. The specification and reference implementation of this revised behavioral annex will be the focus of most our attention next year.</p>
      <p>Adnan Bouakaz published and implemented more of the original results from his PhD. work on abstract affine scheduling <ref xlink:href="#tea-2014-bid5" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, <ref xlink:href="#tea-2014-bid6" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>.
</p>
    </subsection>
    <subsection id="uid125" level="1">
      <bodyTitle>Priority-Driven Scheduling of Static Dataflow Graphs through Time Abstraction</bodyTitle>
      <participants>
        <person key="spades-2014-idp112384">
          <firstname>Adnan</firstname>
          <lastname>Bouakaz</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p>Static dataflow graph models, such as SDF <footnote id="uid126" id-text="76"><i>Synchronous data-flow</i>. E. A. Lee and D. G. Messerschmitt. Proceedings of the IEEE, 1987.</footnote> and CSDF <footnote id="uid127" id-text="77"><i>Cycle-static data-flow</i>. Blisen, G. and Engels, M. and Lauwereins, R. and Peperstraete, Transactions on Signal Processing, v.2. 1996.</footnote>, are widely used to design concurrent real-time streaming applications due to their inherent functional determinism and predictable performances. The state of the art usually advocates static-periodic scheduling of dataflow graphs over dynamic scheduling. Through the past decades, a considerable effort has been made to solve this problem <footnote id="uid128" id-text="78"><i>Software synthesis from dataflow graphs</i>. Battacharyya, S. and Lee, E. and Murthy, P. Kluwer Academic Publishers, 1996.</footnote>. Ensuring boundedness and liveness is the essence of the proposed algorithms in addition to optimizing some nonfunctional performance metrics (e.g. buffer minimization, throughput maximization, etc.).</p>
      <p>Nowadays real-time streaming applications on MPSoCs are increasingly complex; and runtime systems are more needed to handle resource sharing, task priorities, etc. Therefore, recent works <footnote id="uid129" id-text="79"><i>Affine Data-Flow Graphs for the Synthesis of Hard Real-Time Applications</i>. International Conference on Application of Concurrency to System Design. IEEE Press, 2012</footnote> <footnote id="uid130" id-text="80"><i>Temporal analysis flow based on an enabling rate characterization for multi-rate applications executed on MPSoCs with non-starvation-free schedulers</i>. Hausmans, J., et al. International Workshop on Software and Compilers for Embedded Systems, 2014.</footnote> <footnote id="uid131" id-text="81"><i>Hard-real-time scheduling of data-dependent tasks in embedded streaming applications.</i> Bamakhrama, M. and Stefanov, T. Embedded Systems Conference. ACM, 2011</footnote> are considering dynamic scheduling policies (e.g. earliest-deadline first scheduling, deadline monotonic scheduling, etc.) for dataflow graphs. The main motivations of these works are: (1) most existing real-time operating systems support such scheduling policies; (2) applicability of the existing schedulability theory <footnote id="uid132" id-text="82"><i>Real time scheduling theory: a historical perspective</i>. Sha, L. et al. Real-Time Systems Conference. IEEE, 2004</footnote> <footnote id="uid133" id-text="83"><i>A survey of hard real-time scheduling for multiprocessor systems.</i> Davis, R. and Burns, A. ACM Computing Surveys, v. 4, 2011</footnote>; and (3) with such dynamic approach, multiple and independent applications, each designed as a dataflow graph, can run concurrently on the same platform.</p>
      <p>Our work <footnote id="uid134" id-text="84"><i>Buffer Minimization in Earliest-First Scheduling of Dataflow Graphs</i>. A. Bouakaz, J-P. Talpin. ACM conference on languages, compilers and tools for embedded systems. ACM Press, 2013.</footnote> <footnote id="uid135" id-text="85"><i>Design of Safety-Critical Java Level 1 Applications Using Affine Abstract Clocks</i>. A. Bouakaz, J-P. Talpin. International Workshop on Software and Compilers for Embedded Systems, 2013.</footnote> <ref xlink:href="#tea-2014-bid5" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, <ref xlink:href="#tea-2014-bid6" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/> proposes a sequence-based framework in which a large class of priority-driven schedules can be uniformly expressed and analyzed. Infinite sequences are used to describe the dataflow graphs (e.g. rate sequences, execution time sequences) and both concrete and abstract schedules (e.g. activation clocks, priority sequences, activation relations, etc.). The framework can be then easily adapted for specific needs (e.g. affine scheduling). Our schedule construction approach is based on two steps. The first step consists in computing an abstract schedule which consists of a set of priority sequences, processor allocation sequences, and activation relations. An activation relation between two actors describes the relative order of their activations, and hence allows us to compute safe sizes of channels between them using worst-case overflow/underflow scenarios. This step must satisfy some correctness constraints such as consistency and exclusion of overflow and underflow exceptions. Once the best abstract schedule (w.r.t. to a performance metric) is computed, the schedule is refined by computing the actual periods and phases that ensure schedulability on the target architecture.</p>
    </subsection>
    <subsection id="uid136" level="1">
      <bodyTitle>Formal Verification of a Synchronous Data-flow Compiler: from Signal to C</bodyTitle>
      <participants>
        <person key="tea-2014-idp69160">
          <firstname>Van-Chan</firstname>
          <lastname>Ngo</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
      </participants>
      <p>Translation validation <footnote id="uid137" id-text="86"><i>Translation validation.</i> Pnueli A., Siegel M., and Singerman E. In Proceedings of TACAS'98, 1998.</footnote> <footnote id="uid138" id-text="87"><i>Translation validation: From signal to c.</i> M. Siegel A. Pnueli and E. Singeman. In Correct Sytem Design Recent Insights and Advances, 2000.</footnote> is a technique that attempts to verify that program transformations preserve the program semantics. It is obvious to prove globally that the source program and its final compiled program have the same semantics. However, we believe that a better approach is to separate concerns and prove each analysis and transformation stage separately with respect to ad-hoc data-structures to carry the semantic information relevant to that phase.</p>
      <p>In the case of the Signal compiler <ref xlink:href="#tea-2014-bid7" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, <ref xlink:href="#tea-2014-bid8" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/><ref xlink:href="#tea-2014-bid9" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, the preservation of the semantics can be decomposed into the preservation of clock semantics at the <i>clock calculation</i> phase and that of data dependencies at the <i>static scheduling</i> phase, and, finally, value-equivalence of variables at the <i>code generation</i> phase.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Translation Validation for Clock Transformations in a Synchronous Compiler.</b>
In this work, the clock semantics of the source and transformed programs are formally represented as <i>clock models</i>. A clock model is a first-order logic formula that characterizes the presence/absence status of all signals in a Signal program at a given instant. Given two clock models, a <i>clock refinement</i> between them is defined which expresses the semantic preservation of clock semantics. A method to check the existence of clock refinement is defined as a satisfiability problem which can be automatically and efficiently proved
by a SMT solver.</p>
      <p>Let <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>C</mi><msup><mi>p</mi><mrow><mi>s</mi><mi>i</mi><mi>g</mi></mrow></msup></mrow></math></formula> and <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>V</mi><mi>a</mi><msub><mi>l</mi><mrow><mi>c</mi><mi>l</mi><mi>k</mi></mrow></msub></mrow></math></formula> be the functions which define the Signal compiler and a validator, respectively. The following function defines a formally verified compiler for the <i>clock calculation and Boolean abstraction</i> phase. We write <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>C</mi><msub><mo>⊑</mo><mrow><mi>c</mi><mi>l</mi><mi>k</mi></mrow></msub><mi>A</mi></mrow></math></formula> to denote that there exists a refinement between <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>A</mi></math></formula> and <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>C</mi></math></formula>.</p>
      <formula textype="displaymath" type="display">
        <math xmlns="http://www.w3.org/1998/Math/MathML" mode="display" overflow="scroll">
          <mrow>
            <mi>C</mi>
            <msubsup>
              <mi>p</mi>
              <mrow>
                <mi>V</mi>
                <mi>a</mi>
                <msub>
                  <mi>l</mi>
                  <mrow>
                    <mi>c</mi>
                    <mi>l</mi>
                    <mi>k</mi>
                  </mrow>
                </msub>
              </mrow>
              <mrow>
                <mi>s</mi>
                <mi>i</mi>
                <mi>g</mi>
              </mrow>
            </msubsup>
            <mrow>
              <mo>(</mo>
              <mi>A</mi>
              <mo>)</mo>
            </mrow>
            <mo>=</mo>
            <mfenced separators="" open="{" close="">
              <mtable>
                <mtr>
                  <mtd columnalign="left">
                    <mi>C</mi>
                  </mtd>
                  <mtd columnalign="left">
                    <mrow>
                      <mtext>if</mtext>
                      <mspace width="4.pt"/>
                      <mi>C</mi>
                      <msup>
                        <mi>p</mi>
                        <mrow>
                          <mi>s</mi>
                          <mi>i</mi>
                          <mi>g</mi>
                        </mrow>
                      </msup>
                      <mrow>
                        <mo>(</mo>
                        <mi>A</mi>
                        <mo>)</mo>
                      </mrow>
                      <mo>=</mo>
                      <mi>C</mi>
                      <mspace width="4.pt"/>
                      <mtext>and</mtext>
                      <mspace width="4.pt"/>
                      <mi>V</mi>
                      <mi>a</mi>
                      <msub>
                        <mi>l</mi>
                        <mrow>
                          <mi>c</mi>
                          <mi>l</mi>
                          <mi>k</mi>
                        </mrow>
                      </msub>
                      <mrow>
                        <mo>(</mo>
                        <mi>A</mi>
                        <mo>,</mo>
                        <mi>C</mi>
                        <mo>)</mo>
                      </mrow>
                      <mo>=</mo>
                      <mi>t</mi>
                      <mi>r</mi>
                      <mi>u</mi>
                      <mi>e</mi>
                    </mrow>
                  </mtd>
                </mtr>
                <mtr>
                  <mtd columnalign="left">
                    <mrow>
                      <mi>E</mi>
                      <mi>r</mi>
                      <mi>r</mi>
                      <mi>o</mi>
                      <mi>r</mi>
                    </mrow>
                  </mtd>
                  <mtd columnalign="left">
                    <mrow>
                      <mtext>if</mtext>
                      <mspace width="4.pt"/>
                      <mi>C</mi>
                      <msup>
                        <mi>p</mi>
                        <mrow>
                          <mi>s</mi>
                          <mi>i</mi>
                          <mi>g</mi>
                        </mrow>
                      </msup>
                      <mrow>
                        <mo>(</mo>
                        <mi>A</mi>
                        <mo>)</mo>
                      </mrow>
                      <mo>=</mo>
                      <mi>C</mi>
                      <mspace width="4.pt"/>
                      <mtext>and</mtext>
                      <mspace width="4.pt"/>
                      <mi>V</mi>
                      <mi>a</mi>
                      <msub>
                        <mi>l</mi>
                        <mrow>
                          <mi>c</mi>
                          <mi>l</mi>
                          <mi>k</mi>
                        </mrow>
                      </msub>
                      <mrow>
                        <mo>(</mo>
                        <mi>A</mi>
                        <mo>,</mo>
                        <mi>C</mi>
                        <mo>)</mo>
                      </mrow>
                      <mo>=</mo>
                      <mi>f</mi>
                      <mi>a</mi>
                      <mi>l</mi>
                      <mi>s</mi>
                      <mi>e</mi>
                    </mrow>
                  </mtd>
                </mtr>
                <mtr>
                  <mtd columnalign="left">
                    <mrow>
                      <mi>E</mi>
                      <mi>r</mi>
                      <mi>r</mi>
                      <mi>o</mi>
                      <mi>r</mi>
                    </mrow>
                  </mtd>
                  <mtd columnalign="left">
                    <mrow>
                      <mtext>if</mtext>
                      <mspace width="4.pt"/>
                      <mi>C</mi>
                      <msup>
                        <mi>p</mi>
                        <mrow>
                          <mi>s</mi>
                          <mi>i</mi>
                          <mi>g</mi>
                        </mrow>
                      </msup>
                      <mrow>
                        <mo>(</mo>
                        <mi>A</mi>
                        <mo>)</mo>
                      </mrow>
                      <mo>=</mo>
                      <mi>E</mi>
                      <mi>r</mi>
                      <mi>r</mi>
                      <mi>o</mi>
                      <mi>r</mi>
                    </mrow>
                  </mtd>
                </mtr>
              </mtable>
            </mfenced>
          </mrow>
        </math>
      </formula>
      <p noindent="true">where <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>V</mi><mi>a</mi><msub><mi>l</mi><mrow><mi>c</mi><mi>l</mi><mi>k</mi></mrow></msub><mrow><mo>(</mo><mi>A</mi><mo>,</mo><mi>C</mi><mo>)</mo></mrow><mo>=</mo></mrow></math></formula> true if and only if <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>C</mi><msub><mo>⊑</mo><mrow><mi>c</mi><mi>l</mi><mi>k</mi></mrow></msub><mi>A</mi></mrow></math></formula>.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Precise Deadlock Detection for Polychronous Data-flow Specifications.</b>
Dependency graphs are a commonly used data structure to encode the streams of values in data-flow programs and play a central role in scheduling instructions during auto-mated code generation from such specifications. In this work <ref xlink:href="#tea-2014-bid10" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, we propose a precise and effective method that combines a structure of dependency graph and first order logic formulas to check whether multi-clocked data-flow specifications are deadlock free before generating code from them. We represent the flow of values in the source programs by means of a dependency graph and attach first-order logic formulas to condition these dependencies. We use an SMT solver <footnote id="uid139" id-text="88"><i>Satisfiability modulo theories: An appetizer.</i> L. de Moura and N. Bjorner. In Brazilian Symposium on Formal Methods, 2009.</footnote> to effectively reason about the implied formulas and check deadlock freedom.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Evaluating SDVG translation validation: from Signal to C.</b>
This work focuses on proving that every output signal in the source program and the corresponding variable in the compiled program, the generated C program, have the same values. The computations of all signals and their compiled counterparts are represented by a shared value-graph, called <i>Synchronous Data-flow Value-Graph</i> (SDVG).</p>
      <p>Given a SDVG, assume that we want to show that two variables have the same value. We simply need to check that they are represented by the same sub-graph, meaning that they point to the same graph node. If all output signals in the source program <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>A</mi></math></formula> and the corresponding variables in the generated <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>C</mi></math></formula> program have the same value, then we say that <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>C</mi></math></formula> refines <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>A</mi></math></formula>, denoted by <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>C</mi><msub><mo>⊑</mo><mrow><mi>v</mi><mi>a</mi><mi>l</mi></mrow></msub><mi>A</mi></mrow></math></formula>.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Implementation and Experiments</b>.
At a high level, our tool <i>SigCert</i> (<ref xlink:href="https://scm.gforge.inria.fr/svn/sigcert" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>scm.<allowbreak/>gforge.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>svn/<allowbreak/>sigcert</ref>) developed in OCaml checks the correctness of the compilation of Signal compiler w.r.t clock semantics, data dependence, and value-equivalence as given in Figure <ref xlink:href="#uid140" location="intern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>.</p>
      <object id="uid140">
        <table>
          <tr>
            <td>
              <ressource xlink:href="IMG/verificationprocess.png" type="float" width="427.0pt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" media="WEB"/>
            </td>
          </tr>
        </table>
        <caption>Our Integration within Polychrony Toolset</caption>
      </object>
    </subsection>
    <subsection id="uid141" level="1">
      <bodyTitle>Ongoing integration of Polychrony with the P toolset</bodyTitle>
      <participants>
        <person key="tea-2014-idp67904">
          <firstname>Christophe</firstname>
          <lastname>Junke</lastname>
        </person>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p noindent="true" spacebefore="10.0pt"><b>Current state of P.</b>
The FUI project P has been extended until September 2015. Partners in the project now focus on code generation aspects, leaving software architecture aspects aside. The qualifiable model-based code generator, previously known as P toolset, is now named QGen
(QGen is developped mostly in Ada 2012 and Python).</p>
      <p noindent="true" spacebefore="10.0pt"><b>Model transformation (P2S).</b>
We developped a transformation tool hereafter named <tt>P2S</tt> for expressing P system models as Signal processes.
Our work is based on EMF (Eclipse Modelling Framework), taking advantage of the existing Ecore metamodels available for both P and SSME.</p>
      <p>The <tt>P2S</tt> tool is written in Clojure, which is a dialect of Lisp running on the Java Virtual Machine.
This approach allows to benefits from a terse and expressive language while remaining fully interoperable with existing Java libraries (including Eclipse plugins and especially Polychrony ones).</p>
      <p noindent="true" spacebefore="10.0pt"><b>SSME abstraction layer.</b><tt>P2S</tt> uses an abstraction layer to simplify the creation of SSME elements, while taking into account EMF idioms.
For example, the following expression creates a <tt>ProcessModel</tt> instance using the currently registered EMF factory:</p>
      <p noindent="true">
        <tt>(process "TestProcess"</tt>
      </p>
      <p noindent="true">
        <tt>         :in '[boolean h integer x]</tt>
      </p>
      <p noindent="true">
        <tt>         :out '[integer y]</tt>
      </p>
      <p noindent="true">
        <tt>         :body (sigdef</tt>
      </p>
      <p noindent="true">
        <tt>                (id 'y)</tt>
      </p>
      <p noindent="true">
        <tt>                (when* (id 'x) (id 'h))))</tt>
      </p>
      <p>The newly created object can be saved as an XMI file using EMF utilities (the XMI file is 40 lines long and not shown here).
This object and its children represent the following Signal process expression <footnote id="uid142" id-text="89">Even using the dedicated <tt>signalTreeAPI</tt> utility class, the same example would require many more lines of Java code.</footnote>:</p>
      <p noindent="true">
        <tt>process TestProcess =</tt>
      </p>
      <p noindent="true">
        <tt>  (? boolean h; integer x;</tt>
      </p>
      <p noindent="true">
        <tt>   ! integer y; )</tt>
      </p>
      <p noindent="true">
        <tt>  (| y := (x when h) |);</tt>
      </p>
      <p noindent="true" spacebefore="10.0pt"><b>Transformation to P.</b>
Conversion from P to Signal relies on Clojure's multimethods.
We defined a <tt>convert</tt> multimethod which dispatches on the type of its argument and possibly on additional modifiers.
This mechanism allows to convert expressions differently depending on whether we want to produce a Signal declaration or an expression.
For example, the following method specializer converts a P port as a signal declaration:</p>
      <p noindent="true">
        <tt>(defmethod convert [Port :declaration] [port &amp; _]</tt>
      </p>
      <p noindent="true">
        <tt>  (ssme/signal-declarations</tt>
      </p>
      <p noindent="true">
        <tt>   (convert (.getDataType port))</tt>
      </p>
      <p noindent="true">
        <tt>     (ssme/with-comment</tt>
      </p>
      <p noindent="true">
        <tt>       [(readable-name port :declaration) :post]</tt>
      </p>
      <p noindent="true">
        <tt>       (ssme/id (p-name port)))))</tt>
      </p>
      <p>Since the specializer contains the <tt>:declaration</tt> keyword, the previous conversion is applied only when called with that keyword given as an extra argument, as follows:</p>
      <p noindent="true">
        <tt>(convert some-port :declaration)</tt>
      </p>
      <p>The more general specializer, which is defined below, is meant to be used inside Signal expressions and, as such, only returns a Signal identifier:</p>
      <p noindent="true">
        <tt>(defmethod convert Port [port]</tt>
      </p>
      <p noindent="true">
        <tt>   (ssme/id (p-name port)))</tt>
      </p>
      <p>Note also that thanks to class inheritance, the above methods are sufficient to convert all kind of P ports (input/output, data/control).</p>
      <p>The naming scheme for the resulting SSME elements is handled by the <tt>p-name</tt> multi-method and relies on XMI identifiers of the original P elements:
XMI identifiers generated by QGen are string representations of positive integers.
Moreover, those identifiers are guaranteed to be unique in a model.
These two properties allows to generate valid Signal identifiers while ensuring traceability (e.g. signal <tt>P101</tt> links to the unique port of the original model having 101 as a unique identifier).</p>
      <p>Datatypes are currently converted as Signal predefineds types, which do not always match exactly the original types.
Another partially implemented option consists in translating them as <tt>external</tt> types in Signal.
Some types, like arrays, are converted the same way with both approaches:</p>
      <p noindent="true">
        <tt>(defmethod convert TArray [a]</tt>
      </p>
      <p noindent="true">
        <tt>  (reduce (fn [base dim]</tt>
      </p>
      <p noindent="true">
        <tt>            (ssme/array-type base (convert dim :signal)))</tt>
      </p>
      <p noindent="true">
        <tt>          (convert (.getBaseType a))</tt>
      </p>
      <p noindent="true">
        <tt>          (.getDimensions a)))</tt>
      </p>
      <p>Conversion of arithmetic operations may also lead to predefined Signal operators (by default) or externally defined functions (incomplete).
The current approach has been tested on QGen's test models and successfully translates 208 of the 227 models.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Partial block sequencing.</b>
The conversion from P models to Signal takes into account block dependencies as computed by QGen.
Unfortunately, QGen's block sequencer produces a total order between blocks, with leads to over-constrained Signal models.
We contributed to the model compiler by writing an alternative (Ada) package which provides:
(i) a way to parameterize block sequencing, and
(ii) partial ordering options.</p>
      <p>Our implementation is not part of the qualified compiler, but available as a standalone (non-qualifiable) executable.
However, during the development of this block sequencer, we were able to find and correct existing bugs in QGen's sequencer.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Perspectives.</b>
From a software development point of view, our current work needs to be packaged and better integrated with the build system of Polychrony.
By the way, that existing build process itself could be slightly improved by using Maven configuration files instead of Eclipse manual plug-in management.</p>
      <p>The use of a functional language on top of the Java Virtual Machine is an interesting aspect of our work.
By allowing the abstraction layer, which currently works at the SSME level, to also access the existing Signal library, we could provide an API for writing and compiling Signal code using a domain-specific language expressed in Clojure (there already exist JNI bindings with the native library).
This feature could help developpers hook into, or interact with, the existing Signal compiler in order to customize parts of the code generation strategies.</p>
      <p>Regarding the P project, we still need to test code distribution strategies on industrial use-cases and determine how it can be exploited at the system-model level.</p>
    </subsection>
    <subsection id="uid143" level="1">
      <bodyTitle>A synchronous annex for the AADL</bodyTitle>
      <participants>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
      </participants>
      <p>The SAE committee on the AADL adopted our recommendations to implement a timed and synchronous behavioural annex for the standard <ref xlink:href="#tea-2014-bid4" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>. The specification and reference implementation of this revised behavioral annex will be the focus of most our attention next year.</p>
      <p>We propose a synchronous timing annex for the SAE standard AADL. Our approach consists of building a synchronous model of computation and communication that best fits the semantics and expressive capability of the AADL and its behavioral annex and yet requires little to know (syntactic) extension to it, i.e. to identify a synchronous core of the AADL (which prerequisites a formal definition of synchrony at hand) and define a formal design methodology to use the AADL in a way that supports formal analysis, verification and synthesis.</p>
      <p>Our approach first identifies the core AADL concepts from which time events can be described. Then, is considers the behavior annex (BA) as the mean to model synchronous signals and traces through automata. Finally, we consider elements of the constraint annex to reason about abstractions of these signals and traces by clocks and relations among them.
To support the formal presentation of these elements, we define a model of automata that comprises a transition system to express explicit transitions and constraints, in the form of a boolean formula on time, to implicitly constraint its behavior. The implementation of such an automaton amounts to composing its explicit transition system with that of the controller synthesised from its specified constraints.
</p>
    </subsection>
    <subsection id="uid144" level="1">
      <bodyTitle>New features of Polychrony</bodyTitle>
      <participants>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idm25368">
          <firstname>Paul</firstname>
          <lastname>Le Guernic</lastname>
        </person>
      </participants>
      <p noindent="true" spacebefore="10.0pt"><b>Reduction of communications.</b>
We have developed, as a general functionality of the Signal toolbox,
a means to reduce communications between two graphs,
using assignment clocks and utility clocks.</p>
      <p>For a given signal <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula>, its assignment clock represents the instants
at which it may be modified (otherwise than keeping its previous value <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>x</mi><mi>$</mi></mrow></math></formula>)
while its utility clock in a given graph represents the instants at which it is
effectively used in this graph.</p>
      <p>Considering two graphs <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>i</mi></msub></math></formula> and <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>j</mi></msub></math></formula> with a signal <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula> sent
from <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>i</mi></msub></math></formula> to <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>j</mi></msub></math></formula>, containers are built above <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>i</mi></msub></math></formula> and <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>j</mi></msub></math></formula>
in order to minimize the clock at which <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula> must be communicated.
On the sender side, the signal which has to be sent
can be reduced to <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>x</mi><mi>j</mi></msub></math></formula> with <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><msub><mi>x</mi><mi>j</mi></msub><mspace width="0.166667em"/><mo>:</mo><mo>=</mo><mspace width="0.166667em"/><mi>x</mi><mspace width="0.166667em"/><mi>𝚠𝚑𝚎𝚗</mi><mspace width="0.166667em"/><mi>h</mi></mrow></math></formula>,
where <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>h</mi></math></formula> is the lower bound of the assignment clock of <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula>
and the utility clock of <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula> in <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>j</mi></msub></math></formula>.
On the receiver side, <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mi>x</mi></math></formula> is replaced in <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><msub><mi>G</mi><mi>j</mi></msub></math></formula> by <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>x</mi><mo>_</mo><mi>r</mi></mrow></math></formula>
with <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mrow><mi>x</mi><mo>_</mo><mi>r</mi><mspace width="0.166667em"/><mo>:</mo><mo>=</mo><mspace width="0.166667em"/><msub><mi>x</mi><mi>j</mi></msub><mspace width="0.166667em"/><mi>𝚍𝚎𝚏𝚊𝚞𝚕𝚝</mi><mspace width="0.166667em"/><mi>x</mi><mo>_</mo><mi>r</mi><mi>$</mi></mrow></math></formula>.</p>
      <p>Note that this reduction is not always possible because
it may introduce cycles between signals and clocks.</p>
      <p>Experiments have been made on programs intended to the distribution
of Quartz applications, with a gain of up to 40on some of them <ref xlink:href="#tea-2014-bid11" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>.</p>
      <p noindent="true" spacebefore="10.0pt"><b>Polychronous automata.</b>
We have defined a new model of polychronous constrained automata
that has been provided as semantic model for our proposal of
an extension of the AADL behavioural annex <ref xlink:href="#tea-2014-bid4" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>.
An algebra of regular expressions is also defined to represent
abstractions of constrained automata or, more specifically,
their time constraints.</p>
      <p>An experimental implementation of the semantic features of this
“timing annex” will be provided through the Polychrony framework.
For that purpose, representations of automata are introduced in
the Signal toolbox of Polychrony.
In a first step, we have decided to provide only a minimal extension
of the Signal language itself. A new syntactic category of process model,
which is an automaton model, has been introduced. States are described
by the association of labels with subprocesses, as it is available
in Signal, and transitions between states, at a given clock,
are written as calls to <i>intrinsic</i> (predefined) processes.
Constraints described as regular expressions on events should
also be introduced using intrinsic processes.</p>
      <p>Automata will be used in different ways related to stategies
of compilation.
In particular, they will serve as an alternative model for
the code generation.
For that purpose, polychronous programs are rewritten thanks
to valuations of memorized boolean signals. The resulting partially
valuated programs are the states of a control automaton.</p>
      <p>Such techniques can be applied to implement endo-isochronous programs.
Currently, code may be generated only for endochronous programs,
for which clock hierarchy is a tree. Endo-isochronous programs
are compositions of endochronous programs the “intersection”
of which is also endochronous.
For example, an automaton can be built to generate code when
two signals are known to alternate.</p>
    </subsection>
    <subsection id="uid145" level="1">
      <bodyTitle>Optimized Distribution of Synchronous Programs via a Polychronous Model</bodyTitle>
      <participants>
        <person key="tea-2014-idp74184">
          <firstname>Ke</firstname>
          <lastname>Sun</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
      </participants>
      <p>We propose a distribution methodology for synchronous programs <ref xlink:href="#tea-2014-bid11" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>, applied in particular on programs written in the Quartz language <footnote id="uid146" id-text="90"><i>The Synchronous Programming Language Quartz</i>. K. Schneider, Technical Report n. 375. University of Kaiserslautern, 2009</footnote>. The given program is first transformed into an intermediate model of guarded actions. After user-specified partitioning, the generated sub-models are transformed into equivalent Signal processes <ref xlink:href="#tea-2014-bid8" location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>. Then, the unnecessary constraints are eliminated from the processes to avoid unnecessary synchronization. Finally, within the Signal framework, the minimal frequencies of communication and computation are computed via multi-clock calculation. This operation can efficiently reduce the communication quantity and the computation load, with no change to the interface behaviors. Along this way, an optimized data-flow network over desynchronized processing locations can be constructed.</p>
      <p>The presented methodology has been implemented within the integrated framework Quartz/Averest + Signal/Polychrony. To illustrate and validate this methodology, a series of examples served as case studies. Each of them has been written in the Quartz language and distributed over different processing locations using the presented optimization methodology. These case studies confirm that the optimization can bring in significant communication reduction. In the sequel, the efficient utilization of distributed systems is substantially updated.
</p>
    </subsection>
    <subsection id="uid147" level="1">
      <bodyTitle>Component-based Design of Multi-rate Systems</bodyTitle>
      <participants>
        <person key="tea-2014-idp74184">
          <firstname>Ke</firstname>
          <lastname>Sun</lastname>
        </person>
        <person key="tea-2014-idm28088">
          <firstname>Jean-Pierre</firstname>
          <lastname>Talpin</lastname>
        </person>
        <person key="moais-2014-idm5672">
          <firstname>Thierry</firstname>
          <lastname>Gautier</lastname>
        </person>
        <person key="tea-2014-idp66648">
          <firstname>Loïc</firstname>
          <lastname>Besnard</lastname>
        </person>
      </participants>
      <p>The Synchronous language Quartz is well suited for modeling mono-clocked systems. However, as based on the model of computation (MoC) synchrony, its parallelism feature excessively strengthens the synchronization. Such synchronous parallelism in particular restricts independent component design. That is, the modeling of connected components should constantly refer to each other to guarantee the achievement of desired system behavior. Hence, Quartz cannot support well the component-based system design, in particular for the distributed systems that are generally deployed over desynchronized processing locations with multi-rate clocks.</p>
      <p>In contrast to Quartz, the polychronous language Signal is based on the MoC polychrony. As its name suggests, a polychronous program makes use of multi-rate clocks to drive its execution. One can consider that each component in the program holds its own master clock, and there is no longer a master clock for the whole program. The resulted architecture is named globally asynchronous locally synchronous (GALS) architecture.</p>
      <p>Through integrating Quartz with Signal, a component-based methodology is proposed for designing multi-rate systems: at first, components are modeled independently to achieve local behaviors; secondly, inter-component communications are adjusted using Signal to realize intermittent synchronization. In this way, the modeling approach for mono-clocked systems evolves into a component-based modeling methodology. Such significant progress not only facilitates the component coordination, but also enhances the component reusability, in particular for modeling large scale systems.
</p>
    </subsection>
  </resultats>
  <contrats id="uid148">
    <bodyTitle>Bilateral Contracts and Grants with Industry</bodyTitle>
    <subsection id="uid149" level="1">
      <bodyTitle>Bilateral Contracts with Industry</bodyTitle>
      <subsection id="idp2821744" level="2">
        <bodyTitle>
          <b>Toyota Info-Technology Centre (2014-2016)</b>
        </bodyTitle>
        <sanspuceslist>
          <li id="uid150">
            <p noindent="true">Title: Co-Modeling of Safety-Critical Multi-threaded Embedded Software for Multi-Core Embedded Platforms</p>
          </li>
          <li id="uid151">
            <p noindent="true">Inria principal investigator: Jean-Pierre Talpin</p>
          </li>
          <li id="uid152">
            <p noindent="true">International Partner (Institution - Laboratory - Researcher):</p>
            <sanspuceslist>
              <li id="uid153">
                <p noindent="true">Virginia Tech Research Laboratories, Arlington (United States)</p>
              </li>
              <li id="uid154">
                <p noindent="true">Embedded Systems Group, Teschnische Universität Kaiserslautern (Germany)</p>
              </li>
            </sanspuceslist>
          </li>
          <li id="uid155">
            <p noindent="true">Duration: 2014 - 2016</p>
          </li>
          <li id="uid156">
            <p noindent="true">Abstract: We started a new project in April 2014 funded by Toyota ITC, California, to work with Huafeng Yu (a former post-doctorate of team ESPRESSO) and with VTRL as US partner. The main topic of our project is the semantic-based model integration of automotive architectures, virtual integration, toward formal verification and automated code synthesis. This year, Toyota ITC is sponsoring our submission for the standardisation of a time annex in the SAE standard AADL.</p>
            <p>In a second work-package, we aim at elaborating a standardised solution to virtually integrate and simulate a car based on heterogeneous models of its components. This year, it will be exemplified by the elaboration of a case study in collaboration with Virginia Tech. The second phase of the project will consist of delivering an open-source, reference implementation, of the proposed AADL standard and validate it with a real-scale model of the initial case-study.</p>
          </li>
        </sanspuceslist>
      </subsection>
    </subsection>
  </contrats>
  <partenariat id="uid157">
    <bodyTitle>Partnerships and Cooperations</bodyTitle>
    <subsection id="uid158" level="1">
      <bodyTitle>National Initiatives</bodyTitle>
      <subsection id="uid159" level="2">
        <bodyTitle>ANR</bodyTitle>
        <sanspuceslist>
          <li id="uid160">
            <p noindent="true">Program: ANR</p>
          </li>
          <li id="uid161">
            <p noindent="true">Project acronym: <b>VeriSync</b></p>
          </li>
          <li id="uid162">
            <p noindent="true">Project title: Vérification formelle d'un générateur de code pour un langage synchrone</p>
          </li>
          <li id="uid163">
            <p noindent="true">Duration: Nov. 2010 - Oct. 2013</p>
          </li>
          <li id="uid164">
            <p noindent="true">Coordinator: IRIT</p>
          </li>
          <li id="uid165">
            <p noindent="true">Other partners: IRIT</p>
          </li>
          <li id="uid166">
            <p noindent="true">URL: <ref xlink:href="http://www.irit.fr/Verisync/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>irit.<allowbreak/>fr/<allowbreak/>Verisync/</ref></p>
          </li>
          <li id="uid167">
            <p noindent="true">Abstract:</p>
            <p>The VeriSync project aims at improving the safety and reliability assessment of code produced for embedded software using synchronous programming environments developed under the paradigm of Model Driven Engineering. This is achieved by formally proving the correctness of essential transformations that a source model undergoes during its compilation into executable code.</p>
            <p>Our contribution to VeriSync consists of revisiting the seminal work of Pnueli et al. on translation validation and equip the Polychrony environment with updated verification techniques to scale it to possibly large, sequential or distributed, C programs generated from the Signal compiler. Our study covers the definition of simulation and bisimulation equivalence relations capable of assessing the correspondence between a source Signal specification and the sequential or concurrent code generated from it, as well as both specific abstract model-checking techniques allowing to accelerate verification and counter-example search techniques, to filter spurious verification failures obtained from excessive abstracted exploration.</p>
          </li>
        </sanspuceslist>
        <sanspuceslist>
          <li id="uid168">
            <p noindent="true">——</p>
          </li>
        </sanspuceslist>
        <sanspuceslist>
          <li id="uid169">
            <p noindent="true">Program: ANR</p>
          </li>
          <li id="uid170">
            <p noindent="true">Project acronym: <b>Feever</b></p>
          </li>
          <li id="uid171">
            <p noindent="true">Project title: Faust Environment Everyware</p>
          </li>
          <li id="uid172">
            <p noindent="true">Duration: 2014-2016</p>
          </li>
          <li id="uid173">
            <p noindent="true">Coordinator:</p>
          </li>
          <li id="uid174">
            <p noindent="true">Other partners:</p>
          </li>
          <li id="uid175">
            <p noindent="true">URL: <ref xlink:href="http://www.feever.fr" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>feever.<allowbreak/>fr</ref></p>
          </li>
          <li id="uid176">
            <p noindent="true">Abstract:</p>
            <p>The aim of project FEEVER is to ready the Faust music synthesis language for the Web. In this context, we collaborate with Mines ParisTech to define a type system suitable to model music signals timed at multiple rates and to formally support playing music synthesised from different physical locations.</p>
          </li>
        </sanspuceslist>
      </subsection>
      <subsection id="uid177" level="2">
        <bodyTitle>Competitivity Clusters</bodyTitle>
        <sanspuceslist>
          <li id="uid178">
            <p noindent="true">Program: FUI</p>
          </li>
          <li id="uid179">
            <p noindent="true">Project acronym: P</p>
          </li>
          <li id="uid180">
            <p noindent="true">Project title: Project P</p>
          </li>
          <li id="uid181">
            <p noindent="true">Duration: March 2011 - Sept. 2015</p>
          </li>
          <li id="uid182">
            <p noindent="true">Coordinator: Continental Automotive France</p>
          </li>
          <li id="uid183">
            <p noindent="true">Other partners: 19 partners (Airbus, Astrium, Rockwell Collins, Safran, Thales Alenia Space, Thales Avionics...)</p>
          </li>
          <li id="uid184">
            <p noindent="true">URL: <ref xlink:href="http://www.open-do.org/projects/p/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>open-do.<allowbreak/>org/<allowbreak/>projects/<allowbreak/>p/</ref></p>
          </li>
          <li id="uid185">
            <p noindent="true">Abstract:</p>
            <p>The aim of project P is 1/ to aid industrials to deploy model-driven
engineering technology for the development of safety-critical embedded
applications, 2/ to contribute on initiatives such as ITEA2 OPEES 
and Artemisia CESAR 
to develop support for tools inter-operability, and 3/ to provide
state-of-the-art automated code generation techniques from multiple,
heterogeneous, system-levels models. The focus of project P is the
development of a code generation toolchain starting from
domain-specific modeling languages for embedded software design and to
deliver the outcome of this development as an open-source
distribution, in the aim of gaining an impact similar to GCC for
general-purpose programming, as well as a kit to aid with the
qualification of that code generation toolchain.</p>
            <p>The contribution of project-team TEA in project P is to bring the
necessary open-source technology of the Polychrony environment to
allow for the synthesis of symbolic schedulers for software
architectures modeled with P in a manner ensuring global asynchronous deterministic execution..</p>
          </li>
        </sanspuceslist>
      </subsection>
      <subsection id="uid186" level="2">
        <bodyTitle>PAI CORAC</bodyTitle>
        <sanspuceslist>
          <li id="uid187">
            <p noindent="true">Program: CORAC</p>
          </li>
          <li id="uid188">
            <p noindent="true">Project acronym: CORAIL</p>
          </li>
          <li id="uid189">
            <p noindent="true">Project title: Composants pour l'Avionique Modulaire Étendue</p>
          </li>
          <li id="uid190">
            <p noindent="true">Duration: July 2013 - May 2017</p>
          </li>
          <li id="uid191">
            <p noindent="true">Coordinator: Thales Avionics</p>
          </li>
          <li id="uid192">
            <p noindent="true">Other partners: Airbus, Dassault Aviation, Eurocopter, Sagem...</p>
          </li>
          <li id="uid193">
            <p noindent="true">URL: <ref xlink:href="http://www.corac-ame.com/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>corac-ame.<allowbreak/>com/</ref></p>
          </li>
          <li id="uid194">
            <p noindent="true">Abstract:</p>
            <p>The CORAIL project aims at defining components for Extended Modular Avionics.
The contribution of project-team TEA is to define a specification method
and to provide a generator of multi-task applications.</p>
          </li>
        </sanspuceslist>
      </subsection>
    </subsection>
    <subsection id="uid195" level="1">
      <bodyTitle>International Initiatives</bodyTitle>
      <subsection id="uid196" level="2">
        <bodyTitle>International Project Grants</bodyTitle>
        <subsection id="idp2867720" level="3">
          <bodyTitle>USAF Office for Scientific Research – Grant FA8655-13-1-3049</bodyTitle>
          <sanspuceslist>
            <li id="uid197">
              <p noindent="true">Title: Co-Modeling of Safety-Critical Multi-threaded Embedded Software for Multi-Core Embedded Platforms</p>
            </li>
            <li id="uid198">
              <p noindent="true">Inria principal investigator: Jean-Pierre Talpin</p>
            </li>
            <li id="uid199">
              <p noindent="true">International Partner (Institution - Laboratory - Researcher):</p>
              <sanspuceslist>
                <li id="uid200">
                  <p noindent="true">Virginia Tech Research Laboratories, Arlington (United States)</p>
                </li>
                <li id="uid201">
                  <p noindent="true">Embedded Systems Group, Teschnische Universität Kaiserslautern (Germany)</p>
                </li>
              </sanspuceslist>
            </li>
            <li id="uid202">
              <p noindent="true">Duration: 2013 - 2016</p>
            </li>
            <li id="uid203">
              <p noindent="true">See also: <ref xlink:href="http://www.irisa.fr/espresso/Polycore" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>irisa.<allowbreak/>fr/<allowbreak/>espresso/<allowbreak/>Polycore</ref></p>
            </li>
            <li id="uid204">
              <p noindent="true">Abstract: The aim of the USAF OSR Grant FA8655-13-1-3049 is to support collaborative research entitled “Co-Modeling of safety-critical multi-threaded embedded software for multi-core embedded platforms” between Inria project-team ESPRESSO, the VTRL Fermat Laboratory and the TUKL embedded system research group, under the program of the Polycore associate-project.</p>
            </li>
          </sanspuceslist>
        </subsection>
      </subsection>
      <subsection id="uid205" level="2">
        <bodyTitle>Inria International Partners</bodyTitle>
        <subsection id="uid206" level="3">
          <bodyTitle>Declared Inria International Partners</bodyTitle>
          <subsection id="idp2877632" level="4">
            <bodyTitle>The University of Hong Kong</bodyTitle>
            <sanspuceslist>
              <li id="uid207">
                <p noindent="true">Title: Virtual Prototyping of embedded software architectures</p>
              </li>
              <li id="uid208">
                <p noindent="true">International Partner (Institution - Laboratory - Researcher):</p>
                <sanspuceslist>
                  <li id="uid209">
                    <p noindent="true">The University of Hong Kong (Hong ,Kong)</p>
                  </li>
                </sanspuceslist>
              </li>
              <li id="uid210">
                <p noindent="true">Duration: 2012 - now</p>
              </li>
              <li id="uid211">
                <p noindent="true">We collaborate with John Koo at the University of Hong Kong (HKU) and the LIAMA since two years through visiting grants of the Chinese Academy of Science and of the University of Rennes on the topics of heterogeneous time modelling and virtual prototyping. We submitted an ANR project proposal on this topic.</p>
                <p>An engineer of SIAT, Riu Li, has developed a pilot project to evaluate Polychrony in the context of virtual prototyping and real-time simulation of automotive systems (the controller of a V6 turbo-charged engine model in LMS <footnote id="uid212" id-text="91">LMS by Siemens <ref xlink:href="http://www.plm.automation.siemens.com/en_us/products/lms" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>plm.<allowbreak/>automation.<allowbreak/>siemens.<allowbreak/>com/<allowbreak/>en_us/<allowbreak/>products/<allowbreak/>lms</ref></footnote>). Our collaboration started in 2011 at the occasion of a joint Summer School on Embedded Systems organised by SIAT and LIAMA at SIAT. John Koo was invited scientist at Inria-Rennes in Summer 2012 and Jean-Pierre Talpin invited at SIAT by the Chinese Academy of Science from December 2012 to August 2013.</p>
                <p>The partners submitted a PHC proposal and intend to resubmit a joint project proposal for the ANR-HK international program.
A longer term goal of our collaboration is to setup, within the IET, a joint laboratory with Inria, in order to both disseminate formal methods for embedded system design on a specific Master program, and jointly contribute to an open-source system design platform with European and Asian industrial partners which are sponsoring the IET.</p>
              </li>
            </sanspuceslist>
          </subsection>
          <subsection id="idp2886416" level="4">
            <bodyTitle>Virginia Tech Research Laboratories</bodyTitle>
            <sanspuceslist>
              <li id="uid213">
                <p noindent="true">Title: Models of computation for embedded software design</p>
              </li>
              <li id="uid214">
                <p noindent="true">International Partner (Institution - Laboratory - Researcher):</p>
                <sanspuceslist>
                  <li id="uid215">
                    <p noindent="true">Virginia Tech Research Laboratories (USA)</p>
                  </li>
                </sanspuceslist>
              </li>
              <li id="uid216">
                <p noindent="true">Duration: 2003 - now</p>
              </li>
              <li id="uid217">
                <p noindent="true">Team TEA collaborates with Sandeep Shukla, Virginia Tech, since 2002. First, in the frame of the NSF-Inria program with Rajesh Gupta, UCSD, until 2004; Inria's associated project BALBOA, until 2007; with the sabbatical of Sandeep Shukla at IRISA in 2008-2009 (funded by Inria-Rennes, the University of Rennes 1, Inria's scientific board); and, from 2011 to 2013, in the context of the associate-project POLYCORE, together with the ESG group at TU Kaiserslautern.</p>
                <p>Following up Sandeep's sabbatical, the Fermat Laboratory was awarded a series of research grant by the US Air Force Research Laboratory (AFRL) to develop a modelling environment based on Polychrony. In this context, Virginia Tech hired a former PhD. of team ESPRESSO, Julien Ouy, to contribute and coordinate this project's work. Since 2013, the scope of our collaboration has extended with the three years grant awarded to team TEA by the USAF Office for Scientific Research (AFOSR).</p>
                <p>To date, our fruitful and sustained collaboration has yield the creation of the ACM-IEEE MEMOCODE conference series <footnote id="uid218" id-text="92">ACM-IEEE MEMOCODE conference series. <ref xlink:href="http://memocode-conference.com" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>memocode-conference.<allowbreak/>com</ref></footnote> in 2003, of the ACM-SIGDA FMGALS workshop series, and of a full-day tutorial at ACM-IEEE DATE'09 on formal methods in system design. We have jointly edited two books with Springer <footnote id="uid219" id-text="93"><i>Formal methods and models for system design</i>, R. Gupta, S. Shukla, J.-P. Talpin, Eds. ISBN 1-4020-8051-4. Springer, 2004.</footnote> <footnote id="uid220" id-text="94"><i>Synthesis of embedded systems</i>. S. Shukla, J.-P. Talpin, Eds. ISBN 978-1-4419-6399-4. Springer, 2010</footnote>, two special issues of the IEEE Transactions on Computers and one of the IEEE Transactions on Industrial Informatics, and published more than 30 joint papers in international scientific journals and conferences.</p>
              </li>
            </sanspuceslist>
          </subsection>
        </subsection>
        <subsection id="uid221" level="3">
          <bodyTitle>Informal International Partners</bodyTitle>
          <subsection id="idp2897680" level="4">
            <bodyTitle>Technische Universitaet Kaiserslautern (DE)</bodyTitle>
            <p>We collaborate with Klaus Schneider, leader of the ESG group at Uni. Kaiserslautern, since 2011 in the frame of the POLYCORE associate project. Our aim is to develop a joint, open-source, toolchain based on the Averest (ESG) and POP (TEA) environments. Our collaboration has been quite fruitful with several recent journal publications <footnote id="uid222" id-text="95"><i>Embedding polychrony into synchrony</i>. J. Brandt, M. Gemünde, K. Schneider, S. Shukla, and J.-P. Talpin. In Transactions on Software Engineering (TSE). IEEE, 2012.</footnote> <footnote id="uid223" id-text="96"><i>Representation of synchronous, asynchronous, and polychronous components by clocked guarded Actions</i>. J. Brandt, M. Gemünde, K. Schneider, S. Shukla, and J.-P. Talpin. In Design Automation for Embedded Systems (DAES), Special Issue on Languages, Models and Model Based Design for Embedded Systems. Springer, 2012.</footnote>. Numerous visits and exchanges of personnel between team TEA and the ESG have allowed us to develop ONYX, a cross-compiler between the Averest and POP environments.</p>
            <p>Onyx mixes imperative Quartz modules and declarative Signal networks to specify multi-clocked systems. We intend to further its development by the submission of a joint ANR or European project. Our objective is to develop an environment capable of synthesising distributed, loosely synchronised executives from imperative Quartz modules whose schedules are specified by multi-clocked data-flow specifications. A new version of this front-end, developed by Sun Ke, will be integrated in the POP environment.</p>
          </subsection>
        </subsection>
      </subsection>
    </subsection>
    <subsection id="uid224" level="1">
      <bodyTitle>International Research Visitors</bodyTitle>
      <subsection id="uid225" level="2">
        <bodyTitle>Visits to International Teams</bodyTitle>
        <subsection id="uid226" level="3">
          <bodyTitle>Research stays abroad</bodyTitle>
          <p>Jean-Pierre Talpin was awarded a visiting researcher grant by the US Air Force Research Laboratories for collaborative research with the Virginia Tech Research Laboratories. In this context, he visited the Arlington and Falls Church VT campuses in Spring, Summer and Fall 2014 for a duration of two and a half months.</p>
        </subsection>
      </subsection>
    </subsection>
  </partenariat>
  <diffusion id="uid227">
    <bodyTitle>Dissemination</bodyTitle>
    <subsection id="uid228" level="1">
      <bodyTitle>Promoting Scientific Activities</bodyTitle>
      <subsection id="uid229" level="2">
        <bodyTitle>Scientific events organisation</bodyTitle>
        <subsection id="uid230" level="3">
          <bodyTitle>member of the organizing committee</bodyTitle>
          <p>Jean-Pierre Talpin is a member of the steering committee of the ACM-IEEE Conference on Methods and Models for System Design (MEMOCODE).</p>
        </subsection>
        <subsection id="uid231" level="3">
          <bodyTitle>responsable of the conference program committee</bodyTitle>
          <p>Jean-Pierre Talpin co-chaired the program committee of the 12th. ACM-IEEE MEMOCODE conference and the 5th. IEEE RTSS workshop AVICPS.</p>
        </subsection>
        <subsection id="uid232" level="3">
          <bodyTitle>member of the conference program committee</bodyTitle>
          <p>Jean-Pierre Talpin served the program committee of the 12th. ACM EMSOFT'14, ACM LCTES'14, and SCOPES'14 conferences, as well as the MODELS workshop ACVI'14.</p>
          <p>Thierry Gautier served as program commitee member for the 2014 Electronic System Level Synthesis Conference, ESLsyn 2014 (<ref xlink:href="http://www.ecsi.org/eslsyn" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>ecsi.<allowbreak/>org/<allowbreak/>eslsyn</ref>) and for the 12th ACM-IEEE International Conference on Formal Methods and Models for System Design, MEMOCODE'14 (<ref xlink:href="http://memocode.irisa.fr" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>memocode.<allowbreak/>irisa.<allowbreak/>fr</ref>).</p>
        </subsection>
      </subsection>
      <subsection id="uid233" level="2">
        <bodyTitle>Journal</bodyTitle>
        <subsection id="uid234" level="3">
          <bodyTitle>member of the editorial board</bodyTitle>
          <p>Jean-Pierre Talpin is Associate Editor with the ACM Transactions for Embedded Computing Systems (TECS);
he is also Associate Editor with the Springer journal on Frontiers of Computer Science (FCS)
and Associate Editor with EURASIP journal of embedded systems.</p>
        </subsection>
        <subsection id="uid235" level="3">
          <bodyTitle>reviewer</bodyTitle>
          <p>Jean-Pierre Talpin reviewed for Acta Informatica and Science of Computer Programming.
</p>
        </subsection>
      </subsection>
    </subsection>
    <subsection id="uid236" level="1">
      <bodyTitle>Teaching - Supervision - Juries</bodyTitle>
      <subsection id="uid237" level="2">
        <bodyTitle>Supervision</bodyTitle>
        <simplelist>
          <li id="uid238">
            <p noindent="true"><i>PhD advisory of Chan Ngo</i> by Jean-Pierre Talpin, Paul Le Guernic and Thierry Gautier, entitled "<i>Vérification formelle d'un générateur de code pour les spécifications polychrones</i>", defended in December 2014.</p>
          </li>
          <li id="uid239">
            <p noindent="true"><i>PhD advisory of Sun Ke</i> by Jean-Pierre Talpin, Paul Le Guernic and Thierry Gautier, entitled "<i>Conception conjointe de modules synchrones et de réseaux flot-de-données polychrones</i>", since 2011.</p>
          </li>
          <li id="uid240">
            <p noindent="true"><i>PhD co-advisory of Imré Frotier de la Messelière</i> by Jean-Pierre Talpin and Pierre Jouvelot (Mines ParisTech), entitled "<i>Conception et implémentation d'applications musicales innovantes pour les nouvelles technologies multimédia</i>", since October 2013.</p>
          </li>
        </simplelist>
      </subsection>
      <subsection id="uid241" level="2">
        <bodyTitle>Juries</bodyTitle>
        <p>Jean-Pierre Talpin served as Referee at the Thesis Defence of Vincent Gaudel (UBO), entitled "<i>Des patrons de conception pour assurer l'analyse d'architectures : un exemple avec l'analyse d'ordonnancement</i>",
December 2014.</p>
      </subsection>
    </subsection>
  </diffusion>
  <biblio id="bibliography" html="bibliography" numero="10" titre="Bibliography">
    
    <biblStruct id="tea-2014-bid7" type="incollection" rend="refer" n="refercite:besnard:inria-00540493">
      <identifiant type="doi" value="10.1007/978-1-4419-6400-7_1"/>
      <identifiant type="hal" value="inria-00540493"/>
      <analytic>
        <title level="a">Compilation of Polychronous Data Flow Equations</title>
        <author>
          <persName key="tea-2014-idp66648">
            <foreName>Loïc</foreName>
            <surname>Besnard</surname>
            <initial>L.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>Sandeep K.</foreName>
            <surname>Shukla</surname>
            <initial>S. K.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </editor>
        <title level="m">Synthesis of Embedded Software</title>
        <imprint>
          <publisher>
            <orgName>Springer</orgName>
          </publisher>
          <dateStruct>
            <year>2010</year>
          </dateStruct>
          <biblScope type="pages">1-40</biblScope>
          <ref xlink:href="http://hal.inria.fr/inria-00540493" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>inria-00540493</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid1" type="inproceedings" rend="refer" n="refercite:bouakaz:hal-00916487">
      <identifiant type="doi" value="10.1145/2463596.2463600"/>
      <identifiant type="hal" value="hal-00916487"/>
      <analytic>
        <title level="a">Design of Safety-Critical Java Level 1 Applications Using Affine Abstract Clocks</title>
        <author>
          <persName key="spades-2014-idp112384">
            <foreName>Adnan</foreName>
            <surname>Bouakaz</surname>
            <initial>A.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">International Workshop on Software and Compilers for Embedded Systems</title>
        <loc>St. Goar, Germany</loc>
        <imprint>
          <dateStruct>
            <month>June</month>
            <year>2013</year>
          </dateStruct>
          <biblScope type="pages">58-67</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-00916487" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-00916487</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid19" type="article" rend="refer" n="refercite:Brunette2009233">
      <identifiant type="doi" value="10.1016/j.jlap.2008.11.005"/>
      <analytic>
        <title level="a">A metamodel for the design of polychronous systems</title>
        <author>
          <persName>
            <foreName>Christian</foreName>
            <surname>Brunette</surname>
            <initial>C.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Abdoulaye</foreName>
            <surname>Gamatié</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">The Journal of Logic and Algebraic Programming</title>
        <imprint>
          <biblScope type="volume">78</biblScope>
          <biblScope type="number">4</biblScope>
          <dateStruct>
            <year>2009</year>
          </dateStruct>
          <biblScope type="pages">233 - 259</biblScope>
          <ref xlink:href="http://www.sciencedirect.com/science/article/pii/S1567832608000957" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>www.<allowbreak/>sciencedirect.<allowbreak/>com/<allowbreak/>science/<allowbreak/>article/<allowbreak/>pii/<allowbreak/>S1567832608000957</ref>
        </imprint>
      </monogr>
      <note type="bnote">IFIP WG1.8 Workshop on Applying Concurrency Research in Industry</note>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid0" type="article" rend="refer" n="refercite:tosem07">
      <identifiant type="doi" value="10.1145/1217295.1217298"/>
      <analytic>
        <title level="a">Polychronous Design of Embedded Real-Time Applications</title>
        <author>
          <persName>
            <foreName>Abdoulaye</foreName>
            <surname>Gamatié</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">ACM Transactions on Software Engineering and Methodology (TOSEM)</title>
        <imprint>
          <biblScope type="volume">16</biblScope>
          <biblScope type="number">2</biblScope>
          <dateStruct>
            <month>April</month>
            <year>2007</year>
          </dateStruct>
          <ref xlink:href="http://doi.acm.org/10.1145/1217295.1217298" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>doi.<allowbreak/>acm.<allowbreak/>org/<allowbreak/>10.<allowbreak/>1145/<allowbreak/>1217295.<allowbreak/>1217298</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid18" type="article" rend="refer" n="refercite:gamatie:inria-00522794">
      <identifiant type="doi" value="10.1109/TPDS.2009.125"/>
      <identifiant type="hal" value="inria-00522794"/>
      <analytic>
        <title level="a">The Signal Synchronous Multiclock Approach to the Design of Distributed Embedded Systems</title>
        <author>
          <persName>
            <foreName>Abdoulaye</foreName>
            <surname>Gamatié</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">IEEE Transactions on Parallel and Distributed Systems</title>
        <imprint>
          <biblScope type="volume">21</biblScope>
          <biblScope type="number">5</biblScope>
          <dateStruct>
            <year>2010</year>
          </dateStruct>
          <biblScope type="pages">641-657</biblScope>
          <ref xlink:href="http://hal.inria.fr/inria-00522794" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>inria-00522794</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid20" type="article" rend="refer" n="refercite:gamatie:hal-00541523">
      <identifiant type="hal" value="hal-00541523"/>
      <analytic>
        <title level="a">Synchronous design of avionic applications based on model refinements</title>
        <author>
          <persName>
            <foreName>Abdoulaye</foreName>
            <surname>Gamatié</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of Embedded Computing (IOS Press)</title>
        <imprint>
          <biblScope type="volume">2</biblScope>
          <biblScope type="number">3-4</biblScope>
          <dateStruct>
            <year>2006</year>
          </dateStruct>
          <biblScope type="pages">273-289</biblScope>
          <ref xlink:href="http://hal.archives-ouvertes.fr/hal-00541523" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>archives-ouvertes.<allowbreak/>fr/<allowbreak/>hal-00541523</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid17" type="article" rend="refer" n="refercite:Potop-Butucaru:2011:CMP:2362088.2362094">
      <analytic>
        <title level="a">From Concurrent Multi-clock Programs to Deterministic Asynchronous Implementations</title>
        <author>
          <persName>
            <foreName>Dumitru</foreName>
            <surname>Potop-Butucaru</surname>
            <initial>D.</initial>
          </persName>
          <persName key="aoste-2014-idp64176">
            <foreName>Yves</foreName>
            <surname>Sorel</surname>
            <initial>Y.</initial>
          </persName>
          <persName key="aoste-2014-idp62696">
            <foreName>Robert</foreName>
            <surname>de Simone</surname>
            <initial>R.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Fundamenta Informaticae</title>
        <imprint>
          <biblScope type="volume">108</biblScope>
          <biblScope type="number">1-2</biblScope>
          <dateStruct>
            <month>January</month>
            <year>2011</year>
          </dateStruct>
          <biblScope type="pages">91–118</biblScope>
          <ref xlink:href="http://dl.acm.org/citation.cfm?id=2362088.2362094" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>dl.<allowbreak/>acm.<allowbreak/>org/<allowbreak/>citation.<allowbreak/>cfm?id=2362088.<allowbreak/>2362094</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid21" type="article" rend="refer" n="refercite:talpin:hal-00768341">
      <identifiant type="doi" value="10.1016/j.scico.2010.06.006"/>
      <identifiant type="hal" value="hal-00768341"/>
      <analytic>
        <title level="a">Compositional design of isochronous systems</title>
        <author>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Julien</foreName>
            <surname>Ouy</surname>
            <initial>J.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idp66648">
            <foreName>Loïc</foreName>
            <surname>Besnard</surname>
            <initial>L.</initial>
          </persName>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-editorial-board="yes" x-international-audience="yes">
        <title level="j">Science of Computer Programming</title>
        <imprint>
          <biblScope type="volume">77</biblScope>
          <biblScope type="number">2</biblScope>
          <dateStruct>
            <month>February</month>
            <year>2012</year>
          </dateStruct>
          <biblScope type="pages">113-128</biblScope>
          <ref xlink:href="http://hal.archives-ouvertes.fr/hal-00768341" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>archives-ouvertes.<allowbreak/>fr/<allowbreak/>hal-00768341</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid8" type="article" rend="refer" n="refercite:Jcsc03">
      <identifiant type="hal" value="docs"/>
      <analytic>
        <title level="a">Polychrony for system design</title>
        <author>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>J.-C.</foreName>
            <surname>Le Lann</surname>
            <initial>J.-C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of Circuits, Systems and Computers, Special Issue on Application Specific Hardware Design</title>
        <imprint>
          <biblScope type="volume">12</biblScope>
          <biblScope type="number">03</biblScope>
          <dateStruct>
            <month>June</month>
            <year>2003</year>
          </dateStruct>
          <ref xlink:href="http://hal.inria.fr/docs/00/07/18/71/PDF/RR-4715.pdf" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>docs/<allowbreak/>00/<allowbreak/>07/<allowbreak/>18/<allowbreak/>71/<allowbreak/>PDF/<allowbreak/>RR-4715.<allowbreak/>pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid16" type="phdthesis" rend="year" n="cite:ngo:tel-01067477">
      <identifiant type="hal" value="tel-01067477"/>
      <monogr>
        <title level="m">Formal verification of a synchronous data-flow compiler : from Signal to C</title>
        <author>
          <persName key="tea-2014-idp69160">
            <foreName>Van Chan</foreName>
            <surname>Ngô</surname>
            <initial>V. C.</initial>
          </persName>
        </author>
        <imprint>
          <publisher>
            <orgName type="school">Université Rennes 1</orgName>
          </publisher>
          <dateStruct>
            <month>July</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://tel.archives-ouvertes.fr/tel-01067477" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>tel.<allowbreak/>archives-ouvertes.<allowbreak/>fr/<allowbreak/>tel-01067477</ref>
        </imprint>
      </monogr>
      <note type="typdoc">Theses</note>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid3" type="article" rend="year" n="cite:besnard:hal-01095010">
      <identifiant type="hal" value="hal-01095010"/>
      <analytic>
        <title level="a">Timed behavioural modelling and affine scheduling of embedded software architectures in the AADL using Polychrony</title>
        <author>
          <persName key="tea-2014-idp66648">
            <foreName>Loïc</foreName>
            <surname>Besnard</surname>
            <initial>L.</initial>
          </persName>
          <persName key="spades-2014-idp112384">
            <foreName>Adnan</foreName>
            <surname>Bouakaz</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName>
            <foreName>Paul Le</foreName>
            <surname>Guernic</surname>
            <initial>P. L.</initial>
          </persName>
          <persName>
            <foreName>Yue</foreName>
            <surname>Ma</surname>
            <initial>Y.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Huafeng</foreName>
            <surname>Yu</surname>
            <initial>H.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-editorial-board="yes" x-international-audience="yes" id="rid01754">
        <idno type="issn">0167-6423</idno>
        <title level="j">Science of Computer Programming</title>
        <imprint>
          <dateStruct>
            <month>July</month>
            <year>2014</year>
          </dateStruct>
          <biblScope type="pages">20</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-01095010" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01095010</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid9" type="article" rend="year" n="cite:talpin:hal-01095004">
      <identifiant type="hal" value="hal-01095004"/>
      <analytic>
        <title level="a">Constructive Polychronous Systems</title>
        <author>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Jens</foreName>
            <surname>Brandt</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>Mike</foreName>
            <surname>Gemünde</surname>
            <initial>M.</initial>
          </persName>
          <persName>
            <foreName>Klaus</foreName>
            <surname>Schneider</surname>
            <initial>K.</initial>
          </persName>
          <persName>
            <foreName>Sandeep</foreName>
            <surname>Shukla</surname>
            <initial>S.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-editorial-board="yes" x-international-audience="yes" id="rid01754">
        <idno type="issn">0167-6423</idno>
        <title level="j">Science of Computer Programming</title>
        <imprint>
          <dateStruct>
            <month>September</month>
            <year>2014</year>
          </dateStruct>
          <biblScope type="pages">20</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-01095004" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01095004</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid2" type="article" rend="year" n="cite:yang:hal-01095002">
      <identifiant type="hal" value="hal-01095002"/>
      <analytic>
        <title level="a">From AADL to timed abstract state machine: a certified model transformation</title>
        <author>
          <persName>
            <foreName>Zhibin</foreName>
            <surname>Yang</surname>
            <initial>Z.</initial>
          </persName>
          <persName>
            <foreName>Kai</foreName>
            <surname>Hu</surname>
            <initial>K.</initial>
          </persName>
          <persName>
            <foreName>Dianfu</foreName>
            <surname>Ma</surname>
            <initial>D.</initial>
          </persName>
          <persName>
            <foreName>Jean-Paul</foreName>
            <surname>Bodeveix</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Lei</foreName>
            <surname>Pi</surname>
            <initial>L.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-editorial-board="yes" x-international-audience="yes" id="rid01278">
        <idno type="issn">0164-1212</idno>
        <title level="j">Journal of Systems and Software</title>
        <imprint>
          <dateStruct>
            <month>July</month>
            <year>2014</year>
          </dateStruct>
          <biblScope type="pages">20</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-01095002" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01095002</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid5" type="inproceedings" rend="year" n="cite:bouakaz:hal-01088205">
      <identifiant type="doi" value="10.1109/MEMCOD.2014.6961838"/>
      <identifiant type="hal" value="hal-01088205"/>
      <analytic>
        <title level="a">An abstraction-refinement framework for priority-driven scheduling of static dataflow graphs</title>
        <author>
          <persName key="spades-2014-idp112384">
            <foreName>Adnan</foreName>
            <surname>Bouakaz</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">International Conference on Formal Methods and Models for System Design</title>
        <loc>Lausanne, Switzerland</loc>
        <title level="s">2014 Twelfth ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE)</title>
        <imprint>
          <publisher>
            <orgName>IEEE Press</orgName>
          </publisher>
          <dateStruct>
            <month>October</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01088205" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01088205</ref>
        </imprint>
        <meeting id="cid25831">
          <title>ACM-IEEE International Conference on Formal Methods and Models for Codesign</title>
          <num>12</num>
          <abbr type="sigle">MEMOCODE</abbr>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid6" type="inproceedings" rend="year" n="cite:bouakaz:hal-01092606">
      <identifiant type="hal" value="hal-01092606"/>
      <analytic>
        <title level="a">Earliest-Deadline First Scheduling of Multiple Independent Dataflow Graphs</title>
        <author>
          <persName key="spades-2014-idp112384">
            <foreName>Adnan</foreName>
            <surname>Bouakaz</surname>
            <initial>A.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">2014 IEEE Workshop on Signal Processing Systems (SiPS)</title>
        <loc>Belfast, United Kingdom</loc>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01092606" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01092606</ref>
        </imprint>
        <meeting id="cid96927">
          <title>IEEE Workshop on Signal Processing Systems</title>
          <num>2014</num>
          <abbr type="sigle">SiPS</abbr>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid14" type="inproceedings" rend="year" n="cite:messeliere:hal-01094998">
      <identifiant type="hal" value="hal-01094998"/>
      <analytic>
        <title level="a">A constraint-solving approach to Faust program type checking</title>
        <author>
          <persName>
            <foreName>Imré Frotier de la</foreName>
            <surname>Messelière</surname>
            <initial>I. F. d. l.</initial>
          </persName>
          <persName>
            <foreName>Pierre</foreName>
            <surname>Jouvelot</surname>
            <initial>P.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">Constraint Programming meets Verification</title>
        <loc>Lyon, France</loc>
        <title level="s">Constraint Programming meets Verification</title>
        <imprint>
          <publisher>
            <orgName type="organisation"> The 20th International Conference on Principles and Practice of Constraint Programming</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01094998" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01094998</ref>
        </imprint>
        <meeting id="cid624793">
          <title>Constraint Programming meets Verification</title>
          <num>2014</num>
          <abbr type="sigle"/>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid10" type="inproceedings" rend="year" n="cite:ngo:hal-01086843">
      <identifiant type="doi" value="10.1109/ESLsyn.2014.6850379"/>
      <identifiant type="hal" value="hal-01086843"/>
      <analytic>
        <title level="a">Precise deadlock detection for polychronous data-flow specifications</title>
        <author>
          <persName key="tea-2014-idp69160">
            <foreName>Van Chan</foreName>
            <surname>Ngo</surname>
            <initial>V. C.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">ESLsyn - DAC 2014</title>
        <loc>San Francisco, United States</loc>
        <imprint>
          <dateStruct>
            <month>May</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01086843" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01086843</ref>
        </imprint>
        <meeting id="cid555496">
          <title>Electronic System Level Synthesis Conference</title>
          <num>2014</num>
          <abbr type="sigle">ESLsyn</abbr>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid11" type="inproceedings" rend="year" n="cite:sun:hal-01088953">
      <identifiant type="doi" value="10.1109/MEMCOD.2014.6961842"/>
      <identifiant type="hal" value="hal-01088953"/>
      <analytic>
        <title level="a">Optimized Distribution of Synchronous Programs via a Polychronous Model</title>
        <author>
          <persName key="tea-2014-idp74184">
            <foreName>Ke</foreName>
            <surname>Sun</surname>
            <initial>K.</initial>
          </persName>
          <persName key="tea-2014-idp66648">
            <foreName>Loïc</foreName>
            <surname>Besnard</surname>
            <initial>L.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">Formal Methods and Models for System Design (MEMOCODE'14)</title>
        <loc>Lausanne, Switzerland</loc>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>2014</year>
          </dateStruct>
          <biblScope type="pages">42 - 51</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-01088953" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01088953</ref>
        </imprint>
        <meeting id="cid25831">
          <title>ACM-IEEE International Conference on Formal Methods and Models for Codesign</title>
          <num>12</num>
          <abbr type="sigle">MEMOCODE</abbr>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid13" type="inproceedings" rend="year" n="cite:yu:hal-01094995">
      <identifiant type="hal" value="hal-01094995"/>
      <analytic>
        <title level="a">Towards an architecture-centric approach dedicated to model-based virtual integration for embedded software systems</title>
        <author>
          <persName>
            <foreName>Huafeng</foreName>
            <surname>Yu</surname>
            <initial>H.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName>
            <foreName>Sandeep</foreName>
            <surname>Shukla</surname>
            <initial>S.</initial>
          </persName>
          <persName>
            <foreName>Prachi</foreName>
            <surname>Joshi</surname>
            <initial>P.</initial>
          </persName>
          <persName>
            <foreName>Shin'Ichi</foreName>
            <surname>Shiraishi</surname>
            <initial>S.</initial>
          </persName>
        </author>
      </analytic>
      <monogr x-scientific-popularization="no" x-international-audience="yes" x-proceedings="yes" x-invited-conference="no" x-editorial-board="yes">
        <title level="m">Workshop on Architecture Centric Virtual Integration</title>
        <loc>Valencia, Spain</loc>
        <title level="s">Workshop on Architecture Centric Virtual Integration</title>
        <imprint>
          <publisher>
            <orgName>CEUR Workshop Proceedings</orgName>
          </publisher>
          <publisher>
            <orgName type="organisation">MODELS 2014</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01094995" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01094995</ref>
        </imprint>
        <meeting id="cid624794">
          <title>Workshop on Architecture Centric Virtual Integration</title>
          <num>1</num>
          <abbr type="sigle">ACVI</abbr>
        </meeting>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid4" type="techreport" rend="year" n="cite:besnard:hal-00970244">
      <identifiant type="hal" value="hal-00970244"/>
      <monogr>
        <title level="m">Logically timed specifications in the AADL : a synchronous model of computation and communication (recommendations to the SAE committee on AADL)</title>
        <author>
          <persName key="tea-2014-idp66648">
            <foreName>Loïc</foreName>
            <surname>Besnard</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>Etienne</foreName>
            <surname>Borde</surname>
            <initial>E.</initial>
          </persName>
          <persName>
            <foreName>Pierre</foreName>
            <surname>Dissaux</surname>
            <initial>P.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
          <persName key="tea-2014-idm25368">
            <foreName>Paul</foreName>
            <surname>Le Guernic</surname>
            <initial>P.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
        </author>
        <imprint>
          <biblScope type="number">RT-0446</biblScope>
          <dateStruct>
            <month>April</month>
            <year>2014</year>
          </dateStruct>
          <biblScope type="pages">27</biblScope>
          <ref xlink:href="https://hal.inria.fr/hal-00970244" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-00970244</ref>
        </imprint>
      </monogr>
      <note type="typdoc">Technical Report</note>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid12" type="unpublished" rend="year" n="cite:ngo:hal-01087795">
      <identifiant type="hal" value="hal-01087795"/>
      <monogr>
        <title level="m">Translation Validation for Clock Transformations in a Synchronous Compiler</title>
        <author>
          <persName key="tea-2014-idp69160">
            <foreName>Van Chan</foreName>
            <surname>Ngo</surname>
            <initial>V. C.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
        <imprint>
          <dateStruct>
            <month>December</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01087795" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01087795</ref>
        </imprint>
      </monogr>
    </biblStruct>
    
    <biblStruct id="tea-2014-bid15" type="unpublished" rend="year" n="cite:ngo:hal-01087801">
      <identifiant type="hal" value="hal-01087801"/>
      <monogr>
        <title level="m">Translation Validation for Synchronous Data-flow Specification in the SIGNAL Compiler</title>
        <author>
          <persName key="tea-2014-idp69160">
            <foreName>Van Chan</foreName>
            <surname>Ngo</surname>
            <initial>V. C.</initial>
          </persName>
          <persName key="tea-2014-idm28088">
            <foreName>Jean-Pierre</foreName>
            <surname>Talpin</surname>
            <initial>J.-P.</initial>
          </persName>
          <persName key="moais-2014-idm5672">
            <foreName>Thierry</foreName>
            <surname>Gautier</surname>
            <initial>T.</initial>
          </persName>
        </author>
        <imprint>
          <dateStruct>
            <month>November</month>
            <year>2014</year>
          </dateStruct>
          <ref xlink:href="https://hal.inria.fr/hal-01087801" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://<allowbreak/>hal.<allowbreak/>inria.<allowbreak/>fr/<allowbreak/>hal-01087801</ref>
        </imprint>
      </monogr>
    </biblStruct>
  </biblio>
</raweb>
