Results 1 - 10
of
57
The synchronous dataflow programming language LUSTRE
- Proceedings of the IEEE
, 1991
"... This paper describes the language Lustre, which is a dataflow synchronous language, designed for programming reactive systems --- such as automatic control and monitoring systems --- as well as for describing hardware. The dataflow aspect of Lustre makes it very close to usual description tools in t ..."
Abstract
-
Cited by 420 (40 self)
- Add to MetaCart
This paper describes the language Lustre, which is a dataflow synchronous language, designed for programming reactive systems --- such as automatic control and monitoring systems --- as well as for describing hardware. The dataflow aspect of Lustre makes it very close to usual description tools in these domains (block-diagrams, networks of operators, dynamical samples-systems, etc: : : ), and its synchronous interpretation makes it well suited for handling time in programs. Moreover, this synchronous interpretation allows it to be compiled into an efficient sequential program. Finally, the Lustre formalism is very similar to temporal logics. This allows the language to be used for both writing programs and expressing program properties, which results in an original program verification methodology. 1 Introduction Reactive systems Reactive systems have been defined as computing systems which continuously interact with a given physical environment, when this environment is unable to sy...
Some efficient solutions to the affine scheduling problem -- Part I One-dimensional Time
, 1996
"... Programs and systems of recurrence equations may be represented as sets of actions which are to be executed subject to precedence constraints. In many cases, actions may be labelled by integral vectors in some iteration domain, and precedence constraints may be described by affine relations. A s ..."
Abstract
-
Cited by 192 (18 self)
- Add to MetaCart
Programs and systems of recurrence equations may be represented as sets of actions which are to be executed subject to precedence constraints. In many cases, actions may be labelled by integral vectors in some iteration domain, and precedence constraints may be described by affine relations. A schedule for such a program is a function which assigns an execution date to each action. Knowledge of such a schedule allows one to estimate the intrinsic degree of parallelism of the program and to compile a parallel version for multiprocessor architectures or systolic arrays. This paper deals with the problem of finding closed form schedules as affine or piecewise affine functions of the iteration vector. An efficient algorithm is presented which reduces the scheduling problem to a parametric linear program of small size, which can be readily solved by an efficient algorithm.
Dataflow Analysis of Array and Scalar References
- International Journal of Parallel Programming
, 1991
"... Given a program written in a simple imperative language (assignment statements, for loops, affine indices and loop limits), this paper presents an algorithm for analyzing the patterns along which values flow as the execution proceeds. For each array or scalar reference, the result is the name an ..."
Abstract
-
Cited by 188 (2 self)
- Add to MetaCart
Given a program written in a simple imperative language (assignment statements, for loops, affine indices and loop limits), this paper presents an algorithm for analyzing the patterns along which values flow as the execution proceeds. For each array or scalar reference, the result is the name and iteration vector of the source statement as a function of the iteration vector of the referencing statement. The paper discusses several applications of the method: conversion of a program to a set of recurrence equations, array and scalar expansion, program verification and parallel program construction. Keywords dataflow analysis, semantics analysis, array expansion. 1 Introduction It is a well known fact that scientific programs spend most of their running time in executing loops operating on arrays. Hence if a restructuring or optimizing compiler is to do a good job, it must be able to do a thorough analysis of the addressing patterns in such loops. If taken in full generality, ...
Functional Reactive Animation
, 1997
"... Fran (Functional Reactive Animation) is a collection of data types and functions for composing richly interactive, multimedia animations. The key ideas in Fran are its notions of behaviors and events. Behaviors are time-varying, reactive values, while events are sets of arbitrarily complex condition ..."
Abstract
-
Cited by 174 (27 self)
- Add to MetaCart
Fran (Functional Reactive Animation) is a collection of data types and functions for composing richly interactive, multimedia animations. The key ideas in Fran are its notions of behaviors and events. Behaviors are time-varying, reactive values, while events are sets of arbitrarily complex conditions, carrying possibly rich information. Most traditional values can be treated as behaviors, and when images are thus treated, they become animations. Although these notions are captured as data types rather than a programming language, we provide them with a denotational semantics, including a proper treatment of real time, to guide reasoning and implementation. A method to e#ectively and efficiently perform event detection using interval analysis is also described, which relies on the partial information structure on the domain of event times. Fran has been implemented in Hugs, yielding surprisingly good performance for an interpreter-based system. Several examples are given, including the ability to describe physical phenomena involving gravity, springs, velocity, acceleration, etc. using ordinary di#erential equations.
Design of Embedded Systems: Formal Models, Validation, and Synthesis
- PROCEEDINGS OF THE IEEE
, 1999
"... This paper addresses the design of reactive real-time embedded systems. Such systems are often heterogeneous in implementation technologies and design styles, for example by combining hardware ASICs with embedded software. The concurrent design process for such embedded systems involves solving the ..."
Abstract
-
Cited by 92 (8 self)
- Add to MetaCart
This paper addresses the design of reactive real-time embedded systems. Such systems are often heterogeneous in implementation technologies and design styles, for example by combining hardware ASICs with embedded software. The concurrent design process for such embedded systems involves solving the specification, validation, and synthesis problems. We review the variety of approaches to these problems that have been taken.
Programming and verifying real-time systems by means of the synchronous data-flow language LUSTRE
, 1994
"... We investigate the benefits of using a synchronous data-flow language for programming critical real-time systems. These benefits concern ergonomy --- since the dataflow approach meets traditional description tools used in this domain ---, and ability to support formal design and verification methods ..."
Abstract
-
Cited by 73 (10 self)
- Add to MetaCart
We investigate the benefits of using a synchronous data-flow language for programming critical real-time systems. These benefits concern ergonomy --- since the dataflow approach meets traditional description tools used in this domain ---, and ability to support formal design and verification methods. We show, on a simple example, how the language Lustre and its associated verification tool Lesar, can be used to design a program, to specify its critical properties, and to verify these properties. As the language Lustre and its use have been already published in several papers (e.g., [11, 18]), we put particular emphasis on program verification. A preliminary version of this paper has been published in [28]. 1 Introduction It is useless to repeat why real-time programs are among those in which errors can have the most dramatic consequences. Thus, these programs constitute a domain where there is a special need of rigorous design methods. We advocate a "language approach" to this problem...
An Overview of Temporal and Modal Logic Programming
- Proc. First Int. Conf. on Temporal Logic - LNAI 827
, 1994
"... . This paper presents an overview of the development of the field of temporal and modal logic programming. We review temporal and modal logic programming languages under three headings: (1) languages based on interval logic, (2) languages based on temporal logic, and (3) languages based on (multi)mo ..."
Abstract
-
Cited by 55 (6 self)
- Add to MetaCart
. This paper presents an overview of the development of the field of temporal and modal logic programming. We review temporal and modal logic programming languages under three headings: (1) languages based on interval logic, (2) languages based on temporal logic, and (3) languages based on (multi)modal logics. The overview includes most of the major results developed, and points out some of the similarities, and the differences, between languages and systems based on diverse temporal and modal logics. The paper concludes with a brief summary and discussion. Categories: Temporal and Modal Logic Programming. 1 Introduction In logic programming, a program is a set of Horn clauses representing our knowledge and assumptions about some problem. The semantics of logic programs as developed by van Emden and Kowalski [96] is based on the notion of the least (minimum) Herbrand model and its fixed-point characterization. As logic programming has been applied to a growing number of problem domai...
Synchronous Kahn Networks
, 1996
"... Synchronous data-flow is a programming paradigm which has been successfully applied in reactive systems. In this context, it can be characterized as some class of static bounded memory data-flow networks. In particular, these networks are not recursively defined, and obey some kind of "synchronous" ..."
Abstract
-
Cited by 49 (7 self)
- Add to MetaCart
Synchronous data-flow is a programming paradigm which has been successfully applied in reactive systems. In this context, it can be characterized as some class of static bounded memory data-flow networks. In particular, these networks are not recursively defined, and obey some kind of "synchronous" constraints (clock calculus). Based on Kahn's relationship between data-flow and stream functions, the synchronous constraints can be related to Wadler's listlessness, and can be seen as sufficient conditions ensuring listless evaluation. As a by-product, those networks enjoy efficient compiling techniques. In this paper, we show that it is possible to extend the class of static synchronous data-flow to higher order and dynamical networks, thus giving sense to a larger class of synchronous data-flow networks.
Generating Efficient Code From Data-Flow Programs
- In Third International Symposium on Programming Language Implementation and Logic Programming
, 1991
"... This paper presents the techniques applied in compiling the synchronous dataflow language Lustre. The most original technique consists in synthesising an efficient control structure, by simulating the behavior of boolean variables at compiletime. Here, the techniques are explained on a small subset ..."
Abstract
-
Cited by 24 (3 self)
- Add to MetaCart
This paper presents the techniques applied in compiling the synchronous dataflow language Lustre. The most original technique consists in synthesising an efficient control structure, by simulating the behavior of boolean variables at compiletime. Here, the techniques are explained on a small subset of Lustre. 1 Introduction Many authors [Kah74, Gra82, PP83, AW85] have advocated the advantages of data-flow languages, mainly due to their mathematical soundness, the ease of formal program construction and transformation and the absence of side effects. However, no such language is actually used, mainly because no good compilers exist for standard machines. The absence of assignment and control structures makes it difficult to produce efficient code from a data-flow program. We have argued elsewhere [BCHP86, CPHP87] that the declarative style allowed by data-flow languages makes them especially suitable for a class of real time programs: such programs can be found in domains (automatic co...
Synchronous Programming of Reactive Systems - A Tutorial and Commented Bibliography
- In Tenth International Conference on Computer-Aided Verification, CAV’98, Vancouver (B.C.), LNCS 1427
, 1998
"... to describe them as sets of concurrent processes. Cases (2) and (3) must be distinguished. In the later case, concurrency is nothing but a description facility; we call it logical concurrency. Generally, it has nothing to do with physical concurrency involved in case (2), and is not submitted to th ..."
Abstract
-
Cited by 22 (0 self)
- Add to MetaCart
to describe them as sets of concurrent processes. Cases (2) and (3) must be distinguished. In the later case, concurrency is nothing but a description facility; we call it logical concurrency. Generally, it has nothing to do with physical concurrency involved in case (2), and is not submitted to the same constraints. -- They are submitted to critical reliability requirements. In fact, most critical systems either are reactive, or contain reactive parts. ? This work has been partially supported by the ESPRIT-LTR project "SYRF". ?? Verimag is a joint laboratory of Universit'e Joseph Fourier (Grenoble I), CNRS and INPG ! Initialize Memory ? foreach input event do ! Compute Outputs ? ! Update Memory ? end ! Initialize Memory ? foreach period do ! Read Inputs ? ! Compute Outputs ? !<F

