You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
6.4 KiB
PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<link type="text/css" href="style.css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Heptagon/BZR</title>
</head>
<body>
<?php include('toc.php'); ?>
<?php include('header.php'); ?>
<div id="content">
<p>
Heptagon is a synchronous dataflow language whose syntax and semantics is
inspired from <a href="http://www-verimag.imag.fr/Synchrone,30.html">Lustre</a>,
with a syntax allowing the expression of control structures (e.g., switch or
mode automata).
</p>
<p>
Heptagon is also a research compiler, whose aim is to facilitate
experimentation. The current version of the compiler includes the following
features:
<ul>
<li><strong>Inclusion of <em>discrete controller synthesis</em> within the
compilation</strong>: the language is equipped with a behavioral contract
mechanisms, where assumptions can be described, as well as an "enforce"
property part. The semantics of this latter is that the property should be
enforced by controlling the behaviour of the node equipped with the
contract. This property will be enforced by an automatically built controller,
which will act on free controllable variables given by the programmer. This
extension has been named <a href="http://bzr.inria.fr">BZR</a> in previous
works.</li>
<li><strong>Expression and compilation of array values with modular memory
optimization.</strong> The language allows the expression and operations on
arrays (access, modification, iterators). With the use of <em>location annotations</em>, the
programmer can avoid unnecessary array copies.</li>
</ul>
</p>
<p>
Heptagon is developed in
the <a href="http://www.di.ens.fr/ParkasTeam.html">Parkas (ENS)</a>
and <a href="http://team.inria.fr/ctrl-a">Ctrl-A (LIG/INRIA)</a> research teams.
</p>
<h2>How to get it or try it</h2>
<h3>Installation with OPAM</h3>
<p>The easiest and recommended way to install Heptagon/BZR is to use
the OCaml Package Manager (OPAM).</p>
<p>The installation sequence using OPAM is :
<ol>
<li>Install OPAM : the procedure depends on your system and is
described <a href="http://opam.ocaml.org/doc/Install.html">on
the OPAM webpage</a>.</li>
<li>(optional, for the graphical simulator) Install
the <i>gtk2.0</i> libraries (on debian systems, the package is
named <tt>libgtk2.0-dev</tt>)</li>
<li>Initialize OPAM:
<pre>
opam init
opam switch 4.02.3
eval `opam config env`
</pre>
</li>
<li>Install Heptagon:
<pre>opam install heptagon</pre>
</li>
</ol>
</p>
<p>To use the controller synthesis tool ReaX with Heptagon/BZR :
<ol>
<li>Install the <i>mpfr</i> and <i>gmp</i> libraries (on debian
systems, packages named <tt>libmpfr-devel</tt>
and <tt>libgmp-devel</tt>)</li>
<li>Add the repository for ReaX and its libraries (named here
nberth-repo) :
<pre>
opam repo add nberth-repo "http://nberth.space/opam-repo"
opam update
</pre>
</li>
<li>Install ReaX and its libraries, and the BZReaX script:
<pre>opam install fixpoint bddapron reatk bzreax</pre>
</li>
</ol>
</p>
<p>The source code is also available from <a
href="https://gitlab.inria.fr/synchrone/heptagon">the Heptagon/BZR repository</a> for manual
compilation and installation. Further indications about ReaX can
be found on <a href="http://reatk.gforge.inria.fr">the ReaX/ReaTk
page</a>.<br>
</p>
<h3>Manual installation</h3>
<h4>Download</h4>
<p>
Heptagon can be freely downloaded <a href="http://gforge.inria.fr/projects/heptagon">here</a>.
</p>
<h4>Technical requirements</h4>
<p>
The use of the Heptagon compiler by itself does not require any
additional tools. However, the usual use involves a compiler for the
generated code (target languages are currently C or Java).
</p>
<p>
To manually compile and install the Heptagon compiler, the following tools and libraries are needed:
<ul>
<li>ocamlfind</li>
<li>The <em>menhir</em> tool</li>
<li>The <em>ocamlgraph</em> library</li>
<li><em>camlp4</em></li>
<li>The <em>lablgtk</em> library (optional, for the graphical simulator)</li>
<li>The <em>reatk</em> library (optional, for the backend towards the ReaX controller synthesis too)</li>
</ul>
</p>
<p>
The tools below are optional or are related to some subparts of Heptagon:
<ul>
<li>The graphical display tool sim2chro can be obtained from
<a href="http://www-verimag.imag.fr/~raymond/edu/distrib/">
Verimag</a>. It can be used together with Heptagon's graphical simulator.</li>
<li> <a href="https://gforge.inria.fr/projects/bzr">Sigali</a>, the
controller synthesis tool, developed by the Espresso and Vertecs team at INRIA
Rennes. </li>
</ul>
</p>
<h4>Compilation and installation</h4>
<p>Once the previously described libraries and tools are installed, the Heptagon compiler and libraries can be installed with:
<pre>
./configure
make
make install
</pre>
</p>
<h2>Contact</h2>
<p>
Please
contact <a href="mailto:heptagon-developers@lists.gforge.inria.fr">us</a>
for further information.
</p>
<h2>Main participants</h2>
<table>
<tr>
<td>Gwena&euml;l Delaval</td>
<td>Assistant Prof. at <a href="http://www.univ-grenoble-alpes.fr/">UGA</a></td>
<td>+33 4 76 61 54 31</td>
<td><a href="mailto:gwenael.delaval@inria.fr">mail</a></td>
<td><a href="http://pop-art.inrialpes.fr/people/delaval/">web</a></td>
</tr>
<tr>
<td>Herv&eacute; Marchand</td>
<td>Researcher at <a href="http://www.inria.fr/">INRIA</a></td>
<td>+33 2 99 84 75 09</td>
<td><a href="mailto:herve.marchand@inria.fr">mail</a></td>
<td><a href="http://www.irisa.fr/prive/hmarchan/">web</a></td>
</tr>
<tr>
<td>Marc Pouzet</td>
<td>Professor at <a href="http://www.ens.fr/">ENS</a></td>
<td></td>
<td><a href="mailto:marc dot pouzet at ens dot fr">mail</a></td>
<td><a href="http://www.di.ens.fr/~pouzet/">web</a></td>
</tr>
<tr>
<td>Eric Rutten</td>
<td>Researcher at <a href="http://www.inria.fr/">INRIA</a></td>
<td>+33 4 76 61 55 50</td>
<td><a href="mailto:eric.rutten@inria.fr">mail</a></td>
<td><a href="http://sardes.inrialpes.fr/~rutten">web</a></td>
</tr>
</table>
</div>
</body>
</html>