Commit Graph

971 Commits

Author SHA1 Message Date
jeltz e23fce0285
WIP: Call reset method on global async objects
It will probably be necessary to disable interrupts before calling
the reset method.
2020-12-30 01:28:36 +01:00
jeltz 215b602383
Add a simple_simul compiler option 2020-12-30 01:10:45 +01:00
jeltz bbe74e7ffe
Add a pass to check for invalid async nesting 2020-12-28 04:38:40 +01:00
jeltz e536ec17d6
Use external linkage for global async variables 2020-12-26 04:28:39 +01:00
jeltz 74f5e9a2e8
Generate run_timers with correct timing 2020-12-25 23:06:30 +01:00
jeltz 5346c720d2
WIP: Generate the body of run_timers 2020-12-25 22:24:45 +01:00
jeltz 58e6a951e4
Declaration of static variables in Cfundef 2020-12-25 21:54:58 +01:00
jeltz 1ba3284031
Extract timers from obj_dec.o_ack 2020-12-25 19:44:01 +01:00
jeltz 9b44a7a7ab
Create run_timers function for async calls 2020-12-25 15:36:05 +01:00
jeltz 5b1a286999
Fix bug of async calls of stateless functions 2020-12-25 13:17:31 +01:00
jeltz eca2974bba
Define global variables for async state 2020-12-24 06:41:47 +01:00
jeltz 2bd04ed02d
Generate calls to async stub (with a dummy _async) 2020-12-24 06:01:48 +01:00
jeltz 9687050f25
Remove MstepAsync and add stub function for calls 2020-12-24 05:28:47 +01:00
jeltz 73db32c6be
Fix bug and generate MstepAsync call in MiniLS
Easync applications were not flowing throw some Heptagon passes.
2020-12-23 13:08:10 +01:00
jeltz e9a718a868
Fix formatting issue for Easync in hept_printer.ml 2020-12-23 06:08:30 +01:00
jeltz fbad83a61d
Add and use atomic_memcpy for the AVR backend 2020-12-22 21:33:04 +01:00
jeltz f72a092af3
Add support for _local_in in cexprs 2020-12-22 20:54:16 +01:00
jeltz 622a55ed81
Use _local_out variable for _async_step method 2020-12-22 17:45:56 +01:00
jeltz e0fd48562b
Add argument for out variable name 2020-12-22 03:34:56 +01:00
jeltz c36ab43ab1
WIP: Add _async_step method
Copy functions are called, but the body doesn't use the good variable
names.
2020-12-22 01:54:19 +01:00
jeltz 34902b58f0
Add basic copy functions
Warning: These functions are not yet atomic.
2020-12-22 00:30:59 +01:00
jeltz 5376d9993e
Add _in struct for async 2020-12-21 11:27:30 +01:00
jeltz fdee5b68c0
WIP: Add MstepAsync method to ObC 2020-12-21 00:16:04 +01:00
jeltz efd6bebf91
Add basic Easync support to heptagon/*
Warning: While the project compiles, async code is not yet generated.
2020-12-20 19:35:22 +01:00
jeltz df3238cd52
Add Easync to MiniLustre (cont.) 2020-12-20 19:34:25 +01:00
jeltz 85d06d6d56
Add Easync to MiniLustre 2020-12-20 18:25:24 +01:00
jeltz a1390a5dae
Add an alias for ack_name type 2020-12-20 18:12:48 +01:00
jeltz 9447e3566f
Handle Easync in heptagon/*
Warning: The code still doesn't compile.
2020-12-20 18:03:37 +01:00
jeltz 830f8e4bfa
Add async call syntax to the parser
Warning: The code doesn't compile at this stage.
2020-12-20 15:02:12 +01:00
Adrien Guatto 54cbec9190 C backend: generate A_types.{h,c} when compiling A.epi
Before this commit, the C backend would put the translated definitions
of an interface file A.epi into A.{h,c}. This is inconsistent with the
C code generated for source files, which expects to find A_types.{h,c}.
2019-10-13 13:27:52 +02:00
Adrien Guatto 0435a2420d Fix miscompilation of Pervasives.xor to C 2018-10-12 16:56:01 +02:00
Gwenaël Delaval e0d1900f3a Version 1.05.00
- Option -simple-scheduler active for scheduling post-ctrln code generation
 - Handle implication operator in Sigali backend
 - Compatibility with reatk >= 0.14
2018-06-19 22:07:03 +02:00
Gwenaël Delaval b51c292231 Allow use of simple scheduler after control synthesis code generation
The -simple-scheduler option now imply the use of simple scheduler
both before and after control synthesis code generation.
2018-06-07 11:57:51 +02:00
Nicolas Berthier 7abe92dc0d Adapt to new interface of reatk.ctrlNbac (≥ 0.14) 2018-06-06 14:45:50 +01:00
Nicolas Berthier 8872bb3998 Do not remove sub-directories in `Compiler_utils.clean_dir' 2018-03-02 14:27:15 +00:00
Nicolas Berthier 95bb1a72ad Handle implication operator in Sigali backend 2018-03-02 14:26:10 +00:00
Gwenaël Delaval 95c9eb699b Version 1.04.00 2017-09-29 14:58:37 +02:00
Timothy Bourke 63289fe9f6 Allow semicolons after tel's 2017-09-29 00:08:42 +02:00
Timothy Bourke 0747494c7a Fix line counting. Ignore kind2 property comments 2017-09-29 00:08:42 +02:00
Timothy Bourke abfc038b6b Accept single line "--" comments 2017-09-29 00:08:42 +02:00
Timothy Bourke 2d9fb52bec Fix a mistake in new when patterns 2017-09-29 00:08:42 +02:00
Timothy Bourke 4dadf6b4d6 Enforce well-formedness of clocks
For a clock (ck on x) to be well-formed in an environment H, we must
have H x = ck, i.e., the clock of x is the same as the clock ck of the
stream being sampled.

This constraint is guaranteed by construction for fully inferred clocks
(by the rules for when and merge), but nothing guarantees that user
declarations be well-formed. This can lead to problems.

For instance, this invalid program is incorrectly accepted:

    node f (x : bool; a : bool :: . on b;
		      b : bool :: . on a) returns (y:bool);
    let
	y = true;
    tel

as is this one:

    node f(a: bool :: . on a; b: bool :: . on a)
    returns (z: bool);
    var w : bool;
    let
	w = a when b;
	z = false fby w;
    tel

This invalid program is incorrectly accepted and leads to an internal
compiler error:

    node f (x : bool) returns (y:bool);
    var a : bool :: . on b;
	b : bool :: . on a;
    let
	y = true;
	a = true;
	b = true;
    tel

This patch enforces the well-formedness constraint. It gives a sensible
error message when the constraint cannot be satisfied.
2017-09-29 00:08:42 +02:00
Timothy Bourke cae38d0e60 Accept when-syntax for declaring clocks
The parameter or local declaration:
    x : bool :: . on y

Can now be made using the 'standard' Lustre syntax:
    x : bool when y

In this case, the translation gives x the clock:
    'a on y

and relies on the (MiniLS) Clocking pass to instantiate the fresh clock
variables.
2017-09-29 00:08:42 +02:00
Timothy Bourke 0ef0ac5529 Allow "and" as a synonym for "&" 2017-09-29 00:08:42 +02:00
Timothy Bourke 3d75602a0d Accept "e when not x" for "e whenot x" 2017-09-29 00:08:42 +02:00
Timothy Bourke 9de1a96843 Allow (optional) semicolon after returns clause 2017-09-29 00:08:42 +02:00
Timothy Bourke 685c3aa862 Accept .lus file extension 2017-09-29 00:08:42 +02:00
Timothy Bourke 66da5f4b5c Minor fix to Merlin improvements. 2017-09-29 00:08:42 +02:00
Timothy Bourke f8afddd0d9 Work better with merlin 2017-09-29 00:08:42 +02:00
Nicolas Berthier 100c08ee36 Bug correction in normalization of merge: fix propagation of type annotations
Minils.CtrlNbacGen relies on such type annotations to generat
Controllable-Nbac nodes.  This fix allows the use of ReaX to enforce
contracts of nodes involving merge operations on tuples over multiple
data types, such as:

  (a, b) = merge c
           (true -> ((true when c), (0 when c)))
           (false -> ((false whenot c), (2 whenot c)));

This kind of code previously led to erroneous Controllable-Nbac code.
2017-09-21 16:29:06 +01:00