Polychrony Releases Notes
V4.16/V4.15.10--(February 2010)
- This new version integrates the corrections of the signaled bugs.
- Some options of the batch compiler have been renamed (use the command signal -h).
- To facilitate the building of the Polychrony environment on the various platforms (Linux, Windows, MacOS),
the use of the cmake tool has been integrated. It is used to manage the source but also the exporting
of the versions reduced to the binaries. It is also used to define the genMake command (provided for the simulation of the Signal program).
- The connection with the visualization tools based on the VCD IEEE format (Value Change Dump) has been developped and integrated in this version.
During the simulation of an application, a VCD file is generated. It can be used as input by viewers such that
gtkwave or IVI . IVI is transitioning to
using the Eclipse application framework. The viewing can be done after a complete simulation or interactively (gtkwave) during the simulation.
V4.15.10/V4.15.9--(December 2008)
GUI
- Corrections of the signaled bugs.
Compiler
- Corrections of the signaled bugs.
- Code generation (code distribution): The code generation with threads was added in the previous
Release. This code generation is the basis of the distributed code generation available in this release. The
tests have been done using the MPI library. Some examples are provided in the Examples/Distribution directory
of the distribution.
- Pragmas The names of the pragmas have been revisited:
- COMMENT -> Comment
- unexpanded -> Unexpanded
- separate -> Separate
- Black_Box -> BlackBox
- Grey_Box -> GreyBox
- C_CODE -> C_Code
- CPP_CODE -> CPP_Code
- Java_CODE -> Java_Code
- PROCESSOR_TYPE -> ProcessorType
- SIGALI -> Sigali
- Defined_clock_hierarchy -> DefinedClockHierarchy
- XMI Translator The SIGNAL/XMI translator produces the representation of a textual SIGNAL Program
into its representation in XMI, according to the meta-model of the SIGNAL language (Eclipse plugin). The option
-xmi (batch compiler) must be used to produce such a representation.
- Sigali library has been completed. It includes the interface for the CTL logic. See the definition
of the Sigali interface in the file Signal/lib/Sigali/SIGALI.SIG provided In the distribution.
V4.15.9/V4.15.8--(November 2007)
Polychrony is provided for Linux, Solaris, Windows, and MacOs (Powerpc/Intel architectures) operating systems.
GUI
- Corrections of the signaled bugs.
Compiler
- Corrections of the signaled bugs.
- Exclusive clocks: A new algorithm for the computation of the exclusive clocks of a program has been
implemented. This new algorithm takes into account the inclusion properties induced by the clock hierarchy:
- For two exclusive clocks h1, h2, all the clocks of the sub-tree with h1 as root and of the sub-tree with
h2 as root are exclusive.
- For two non exclusive clocks h1, h2, all the clocks of the sub-tree with h1 as root and of the sub-tree
with h2 as root are non exclusive
The application of these properties have allowed to reduce the computation time (divided by 10 for some
applications) of the exclusive clocks of a program.
- Code generation: We have also added in this version a new code generation service in Polychrony.
Until this year, Polychrony allowed several cases of code generation for a sequential simulation code
- Mono-block code for autonomous execution
- Code partitioned in clusters, with static scheduling of the clusters, for autonomous execution.
- Mono-block code for separate compilation
- Clusters with static scheduling, for separate compilation
We have added a code generation with threads , based on the partitioning of the graph in clusters:
- Clusters are defined such that each flow of a given cluster depends on the same set of input flows
- A cluster can be executed atomically as soon as its inputs are available
- There is a specific cluster for state variables updating (called "Cluster delays")
This partitioning is used for a multi-thread simulation code, with a dynamical scheduling:
- One task per cluster + one task per input/output + one task that manages the steps
- The code of clusters is left unchanged, but synchronizations are added
- One semaphore Sem(i) per task T(i)
- At the beginning of each iteration step of a task T(i): as many wait(Sem(i)) as T(i) has
predecessors
- At the end of each iteration step of a task T(i): one signal(Sem(k)) for each T(k) successor
of T(i)
- The iteration step is managed by a specific task that executes a signal() on the semaphores
associated with the tasks that have no predecessor, and then, a wait() on its own semaphore (a
signal() on this latter is executed at the end of the task corresponding to the "Cluster delays")
To use it, use the "-threads" option.
This new code generation will be the basis of the distributed code generation currently developed.
V4.15.8/V4.15.7--(October 2006)
Polychrony is provided for Linux, Solaris, Windows, and MacOs (Powerpc/Intel archirtectures) operating systems.
GUI
- Corrections of bugs, in particular, on Windows, the tool ended unexpectedly when a syntax error was
detected.
- Syntax errors are displayed.
Compiler
- Corrections of bugs.
- The affine clock calculus (See chapter VIII-3 of the SIGNAL reference
manual) has been partly integrated in Polychrony. It is an extension of the boolean clock Calculus based
on free boolean conditions. The affine relations allow to express that successive values of some signal are
provided at specific micro-instants between any two successive macro-instants in a regular manner. An
elementary example is provided .
- To make the simulation program portable, the graphical part is written in Java. The predefined graphical
library defined in Signal and provided in Polychrony has been extended and many examples have been ported using
this graphical library. Note: for Windows version, all the examples are not yet (graphically) available.
- Implementation of assertions (See chapter VIII-1 of the SIGNAL reference
manual).
V4.15.7/V4.15.5 -- (April 2005)
- Correction of errors.
- Implementation of assertions (See chapter VIII-1 of the SIGNAL reference manual).
Some examples
are provided.
- Optimizations for code generation has been implemented:
x and zx, where zx is a 1-delayed signal of x, are merged in the same variable if the adding of dependences
from the successors of zx to the node of x does not insert a cycle in the graph. This optimization can be
inhibited by using the "udo" option.
- WINDOWS version is provided. Note that all the examples are not yet (graphically) available.
- MacOs version is provided.