5b1a286999
Fix bug of async calls of stateless functions
2020-12-25 13:17:31 +01:00
eca2974bba
Define global variables for async state
2020-12-24 06:41:47 +01:00
2bd04ed02d
Generate calls to async stub (with a dummy _async)
2020-12-24 06:01:48 +01:00
9687050f25
Remove MstepAsync and add stub function for calls
2020-12-24 05:28:47 +01:00
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
e9a718a868
Fix formatting issue for Easync in hept_printer.ml
2020-12-23 06:08:30 +01:00
fbad83a61d
Add and use atomic_memcpy for the AVR backend
2020-12-22 21:33:04 +01:00
f72a092af3
Add support for _local_in in cexprs
2020-12-22 20:54:16 +01:00
f864d10095
Update async example
...
The new example is more useful because it involves a memory.
2020-12-22 17:46:50 +01:00
622a55ed81
Use _local_out variable for _async_step method
2020-12-22 17:45:56 +01:00
e0fd48562b
Add argument for out variable name
2020-12-22 03:34:56 +01:00
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
34902b58f0
Add basic copy functions
...
Warning: These functions are not yet atomic.
2020-12-22 00:30:59 +01:00
5376d9993e
Add _in struct for async
2020-12-21 11:27:30 +01:00
fdee5b68c0
WIP: Add MstepAsync method to ObC
2020-12-21 00:16:04 +01:00
53cc7a739f
Add an example of the async keyword
2020-12-20 19:57:44 +01:00
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
df3238cd52
Add Easync to MiniLustre (cont.)
2020-12-20 19:34:25 +01:00
85d06d6d56
Add Easync to MiniLustre
2020-12-20 18:25:24 +01:00
a1390a5dae
Add an alias for ack_name type
2020-12-20 18:12:48 +01:00
9447e3566f
Handle Easync in heptagon/*
...
Warning: The code still doesn't compile.
2020-12-20 18:03:37 +01:00
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
Gwenaël Delaval
67abb99502
Merge branch 'generate-types-file' into 'master'
...
C backend: generate A_types.{h,c} when compiling A.epi
See merge request synchrone/heptagon!4
2019-10-31 14:54:28 +01:00
Gwenaël Delaval
91dd7af1a0
Merge branch 'web-update' into 'master'
...
Point to gitlab repo
See merge request synchrone/heptagon!3
2019-10-31 14:52:59 +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
f05c20aba9
web: point to gitlab repo
2019-10-13 12:28:33 +02:00
Gwenaël Delaval
239e23211f
Remove test t20.ept
2018-10-30 18:02:57 +01:00
Gwenaël Delaval
a304a9003b
Merge branch 'fix_boolop' into 'master'
...
Fix miscompilation of Pervasives.xor to C
See merge request gdelaval/heptagon!1
2018-10-30 17:49:53 +01:00
Gwenaël Delaval
89eddd77c4
Add test for xor operator
2018-10-30 17:15:35 +01:00
Gwenaël Delaval
d2234e64d8
Merge branch 'fix_heptc_script' into 'master'
...
Remove broken Python bit from heptc script
See merge request gdelaval/heptagon!2
2018-10-30 10:13:53 +01:00
Adrien Guatto
0435a2420d
Fix miscompilation of Pervasives.xor to C
2018-10-12 16:56:01 +02:00
Adrien Guatto
99460e24e5
Remove broken Python bit from heptc script
2018-10-12 16:05:09 +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
Gwenaël Delaval
24469c9ae1
Update .gitignore
2017-09-29 00:08:42 +02:00
Timothy Bourke
63289fe9f6
Allow semicolons after tel's
2017-09-29 00:08:42 +02:00
Timothy Bourke
fa4aaee865
Typedef for real in C target
2017-09-29 00:08:42 +02:00
Timothy Bourke
94badc5f01
Add an abbreviation for the 'real' type
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