Gwenaël Delaval
ef00823cf7
Added Marc as co-author
2012-06-29 01:43:15 +02:00
Gwenaël Delaval
c080ad6cf3
Controller call only when controllables
...
Avoid built of dummy empty controllers
2012-06-29 01:41:13 +02:00
Gwenaël Delaval
58086190eb
Headers and license file for GPL
...
Headers for every source file (excluding examples), mentioning
authors, copyright and license (GPL)
COPYING file with GPLv3 content.
2012-06-27 18:14:29 +02:00
Cédric Pasteur
5e1dad630b
Force fby to be scheduled at the end
2012-06-20 17:09:30 +02:00
Cédric Pasteur
7a10ba028a
Fixed disjoint clock computation
2012-06-20 17:09:17 +02:00
Cédric Pasteur
ffeb81f529
Use idents instead of ivars in scheduling
2012-06-20 16:33:06 +02:00
Cédric Pasteur
8815a2cd03
Better handling of clocks in memalloc
...
- We can do a better allocation if we take into
account 'when' in extvalues
(test/good/memalloc_clocks.ept shows the
improvement)
- Fixed a bug with memalloc on records: if we
translate:
o = { a with .f = u }
to
o = a; o.f = u
then we cannot share u and o.f
2012-06-20 09:17:13 +02:00
Cédric Pasteur
ed2c08315b
Should be affinity, not copy
2012-06-19 09:33:27 +02:00
Gwenal Delaval
cf22ba3989
Optional block in contracts
...
Optional let...tel block in contracts
Sink state in sigali
2012-06-07 17:48:31 +02:00
Gwenal Delaval
2bd31db883
Causality and scheduling with contracts
...
Correction of the causality analysis and scheduling (with interference)
to take contracts into account.
2012-06-07 15:27:07 +02:00
Gwenal Delaval
2956002f85
Correction and simplification of the sigali pass
...
Added a "Contracts" pass, after inlining, taking care of the
contracts of the nodes called in the body of a node. This pass
"inlines" the code and assume/guarantee parts of these subcontracts.
The "Sigali" pass both generates the sigali ("z3z") code and add the call to
the controller (which is a node generated further by the sigali tool).
Therefore this pass has been included into the mls compiler, and removed
from the targets (a "z3z" dummy target has been kept for backward compatibility
reasons).
2012-06-06 15:59:08 +02:00
Gwenal Delaval
bb0bc8bfe5
Added local assume/guarantee
...
Added local assume/guarantee in contracts.
No syntax associated to these local asume/guarantee: internal use only.
2012-05-29 14:14:46 +02:00
Adrien Guatto
8153bc4eb5
Fixed Tomato: did not reconstruct internal clocks of extvalues
2012-03-30 14:47:47 +02:00
Léonard Gérard
61e14546df
Interf scheduling tries harder with arrays
2012-03-19 17:45:06 +01:00
Adrien Guatto
44d3a639e5
Internal error for unknown clocks.
2012-03-02 17:12:30 +01:00
Adrien Guatto
699b3c68e9
Tomato: bug fix, node inputs were not properly considered different.
2012-03-01 14:46:33 +01:00
Léonard Gérard
8a78bc7d7d
Add [external] in the signatures. fix callgraph acordingly.
2012-02-21 16:07:29 +01:00
Adrien Guatto
5ac3a7f028
Redisable interference of scalars during scheduling
2012-02-10 11:33:09 +01:00
Cédric Pasteur
6e2e2a9f47
Fixed bug in interference computation
...
To know the variables read by an equation, we should
only look at the clock of variables. Otherwise,
there could be a problem for node calls that
define new clocks.
2012-02-09 11:48:36 +01:00
Cédric Pasteur
7866321089
Fixed bug in interference
2012-02-09 11:06:28 +01:00
Adrien Guatto
3aeb499cc2
Re-enable interference for enums
2012-02-08 11:13:02 +01:00
Cédric Pasteur
f66c9045df
Special case for merge in the scheduling
...
For merge equations, the generated code will be
on a different rate than the activation clock of
the equation.
2012-02-01 11:19:25 +01:00
Adrien Guatto
1cb4b1154b
Memory allocation: do not share enums (and thus clocks).
2012-01-30 17:48:47 +01:00
Adrien Guatto
946a1f8228
Inline extvalues: do not inline array literals.
2012-01-30 16:37:42 +01:00
Adrien Guatto
84ca123361
Extvalue inlining: rogue debug message.
2012-01-26 13:23:01 +01:00
Adrien Guatto
964f6ca605
Extvalue inlining: fix point computation
2012-01-26 13:21:17 +01:00
Adrien Guatto
53de6cd915
Bug fix in extvalue inlining
2012-01-25 16:11:22 +01:00
Adrien Guatto
bca8664d2f
Tomato: do not forget eq_base_ck when reconstructing
2012-01-25 13:19:09 +01:00
Cédric Pasteur
2f993a602c
Fixed base clock in code generation
...
Put the base clock inside the equation where it
belongs.
2012-01-25 09:34:58 +01:00
Cédric Pasteur
3f80f844c7
Schedule with clocks first
...
First optimize clocks and then look at life ranges
2012-01-24 15:33:54 +01:00
Cédric Pasteur
06e997e0c8
Fix for -mall
...
Do not share memories and outputs if they are not
arrays, as it might make the register allocation
by the C compiler less efficient.
2012-01-24 10:29:05 +01:00
Cédric Pasteur
b1bd6dbd57
Compare clock repr
...
Not sure this is necessary but it doesn't hurt to
check twice.
2012-01-23 16:03:01 +01:00
Cédric Pasteur
2b59ec754a
Fix for memories with no uses
...
Add a fake use to make sure they interfere with
other memories and outputs
2012-01-23 16:02:34 +01:00
Adrien Guatto
cad8a0149f
Option to perform type inference on all types
2012-01-23 13:36:24 +01:00
Léonard Gérard
c75236b688
miscs
2011-12-12 12:06:46 +01:00
Léonard Gérard
da3147151d
Better check signature error message
2011-12-12 11:30:18 +01:00
Léonard Gérard
f0cbbccc2a
unsafe in minils node
2011-12-12 11:27:18 +01:00
Léonard Gérard
b86555e013
global env misc
2011-12-12 11:08:47 +01:00
Léonard Gérard
ba5f336a6f
Fix antidependance calculation
2011-12-12 11:01:22 +01:00
Cédric Pasteur
2fc0435393
Added simple printf
...
Typing and clocking done
2011-12-12 10:36:24 +01:00
Adrien Guatto
8c6926c5bd
TOMATO was confused about having several empty patterns in the equations
...
of a node.
He should be better now.
2011-12-06 15:44:21 +01:00
Léonard Gérard
fe1f02402b
Test to watch sampling of returned stateful exps.
2011-12-06 15:44:20 +01:00
Cédric Pasteur
f76667e042
Second part of the fix
2011-12-06 15:44:20 +01:00
Léonard Gérard
2b9d3828b1
debut de la correction du when.
...
test :
node f(c :bool) returns (out :int)
let
out = (0 fby 1) when c
tel
et
node f(x :int) returns (out : int)
let
out = 0 fby x
tel
node g(c :bool) returns (out :int)
let
out = f(0) when c
tel
2011-12-06 15:44:20 +01:00
Léonard Gérard
646cfab82b
Enforce style : no tab, no trailing whitespace.
2011-11-21 03:26:27 +01:00
Léonard Gérard
a08da94edc
Scheduling bonus for array updates.
2011-11-21 03:26:26 +01:00
Léonard Gérard
b49c37f7bf
Add ways to declare unsafe functions + unsafe fix
2011-11-21 03:26:26 +01:00
Léonard Gérard
bdd85f5f81
mapfold over var_ident.
2011-11-18 12:32:36 +01:00
Cédric Pasteur
1a28ed96e8
Improvement for normalize memories
...
Only create necessary copies (for outputs
and recursive registers).
2011-11-16 16:07:36 +01:00
Adrien Guatto
1a9dc17618
Fixed clocking annotations.
...
1. Transmit annotations to extvaluese in Hept2mls.
2. Handle a pre-existing w_ck when clocking extvalues.
2011-11-10 15:36:54 +01:00
Léonard Gérard
ffe2b23a82
new sheduler by default
2011-10-23 17:42:26 +02:00
Léonard Gérard
81ad14ab7b
changed interf_schedule to use clocks correctly
2011-10-20 16:52:50 +02:00
Cédric Pasteur
21433f6416
Only do one copy for two recursive registers
2011-10-20 09:16:51 +02:00
Cédric Pasteur
72cac326a8
Fixed normalization of fby
...
We should normalize not only outputs but also
other fbys to generate correct code. The test shows
a program that was compiled incorrectly.
2011-10-19 16:31:40 +02:00
Cédric Pasteur
85be1252b0
Another try to fix causality of linear ifs
2011-10-17 18:10:38 +02:00
Adrien Guatto
1ec97d187b
Adapted minimization to reinit.
2011-10-17 15:43:55 +02:00
Cédric Pasteur
04b8853a1d
Added a new reinit operator
...
It has type:
reinit: t at r * t -> t at r
It can be used to put a constant value in a
location.
2011-10-17 15:28:04 +02:00
Cédric Pasteur
0f403e3694
Fix for wrong number of expected args
2011-10-17 10:17:18 +02:00
Léonard Gérard
ef4478e37e
removed some stupid warnings.
2011-10-14 13:33:34 +02:00
Adrien Guatto
ee2f5ca443
Tomato: simplification + update signature via modules.
...
test/good/linear_init.ept now compiles.
2011-10-10 17:01:08 +02:00
Adrien Guatto
3269a04052
Do not inline linear extended values.
2011-10-06 16:18:48 +02:00
Adrien Guatto
30089e7d0f
Fixed extvalue inlining w.r.t. linear copy
2011-10-05 17:44:01 +02:00
Adrien Guatto
d0ed09c3e5
Ext-value inlining pass.
2011-10-04 15:14:02 +02:00
Cédric Pasteur
902cbaf7a1
Fixed error with memalloc and const value with when
2011-10-04 14:34:44 +02:00
Adrien Guatto
2fb27770b8
Fixed iterator minimization bug.
2011-10-03 10:54:50 +02:00
Cédric Pasteur
70787757aa
Fixed normalization of fby
...
The incorrect behaviour was introduced in commit
6b86b86e9d
.
We should have:
o = v fby e
becomes
mem_o = v fby e;
o = mem_o
The old way would break with:
v = true fby false fby v
that would generate unschedulable code.
2011-09-08 11:45:43 +02:00
Cédric Pasteur
81947eca40
Made linearity field not optional
...
This helped solve a few bugs with linear types,
for instance when using automata.
The intermediate code is not well-typed (wrt to
linear types only), after the encoding of automata.
2011-09-07 17:51:31 +02:00
Cédric Pasteur
9d1702587a
Fix interaction between tomato and memalloc
...
Take linearity into account when comparing exps
2011-09-07 14:15:33 +02:00
Cédric Pasteur
caa43f163f
Added dependency from a read to a linear read
...
This got lost along the way when porting memalloc
to the new branch
2011-09-07 14:14:59 +02:00
Cédric Pasteur
7ac567cc35
Update the signature instead of recreating it
...
This avoids losing additional info in the
signature (such as linearity)
2011-09-07 11:32:16 +02:00
Cédric Pasteur
8cc879be7a
Generate code from interface (.epi) files
...
It includes the definition of types, constants
and prototypes defined in the interface.
2011-09-06 11:55:06 +02:00
Gwenaël Delaval
c57b71b6aa
Merge branch 'bzr' into decade
...
- Added Boolean module (enum types to boolean vectors)
- Added Hept_clocking analysis, called before Boolean
- Added z3z target from minils (sigali format)
- Bug corrections in Normalize, Normalize_mem
Conflicts:
compiler/heptagon/analysis/typing.ml
compiler/heptagon/heptagon.ml
compiler/heptagon/parsing/hept_parser.mly
compiler/heptagon/parsing/hept_parsetree.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/main/hept2mls.ml
compiler/main/heptc.ml
compiler/main/mls2seq.ml
compiler/minils/minils.ml
compiler/minils/transformations/normalize_mem.ml
test/check
2011-08-04 13:37:33 +02:00
Gwenal Delaval
2c4be9d42c
Correct scoping and typing with contracts
2011-07-27 16:13:45 +02:00
Gwenal Delaval
c77386d517
Active Boolean pass and Sigali backend
2011-07-27 11:21:34 +02:00
Cédric Pasteur
7d95b95ed7
Merge branch 'memalloc' into decade
...
Conflicts:
compiler/global/signature.ml
compiler/heptagon/analysis/typing.ml
compiler/heptagon/hept_printer.ml
compiler/heptagon/hept_utils.ml
compiler/heptagon/heptagon.ml
compiler/heptagon/parsing/hept_parser.mly
compiler/heptagon/parsing/hept_parsetree.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/heptagon/transformations/switch.ml
compiler/main/hept2mls.ml
compiler/minils/minils.ml
compiler/minils/mls_printer.ml
compiler/obc/c/cgen.ml
compiler/obc/control.ml
compiler/utilities/misc.mli
2011-07-21 08:50:45 +02:00
Léonard Gérard
57155b45e2
remove the ; _ } from ocaml 3.12 ...
2011-07-08 15:31:17 +02:00
Adrien Guatto
1e95cc4098
patch tomato wrong merge.
2011-07-08 15:27:17 +02:00
Adrien Guatto
40e64b305d
Tomato: disable debug messages by default
2011-07-08 11:56:38 +02:00
Adrien Guatto
7d9e31a83b
Tomato checking in check.sh
2011-07-08 11:56:38 +02:00
Adrien Guatto
d1c2789574
Tomato: properly handle n-ary functions.
2011-07-08 11:56:38 +02:00
Adrien Guatto
8f0ef3a256
Properly use clocking information in corner cases.
2011-07-08 11:56:38 +02:00
Adrien Guatto
2283fcdfaa
Properly handle fused outputs.
2011-07-08 11:56:38 +02:00
Adrien Guatto
3657018861
Tomato: finer equivalence classes for Eapp and
...
Eiterator when a reset variable is present.
2011-07-08 11:56:38 +02:00
Adrien Guatto
3c5bb4e8b7
Tomato working with clocks and when.
2011-07-08 11:56:37 +02:00
Adrien Guatto
891174d73c
All-new and fresh tomato!
...
Not working ATM:
* tuples
* when
2011-07-08 11:56:37 +02:00
Léonard Gérard
0518ecafe6
Merge branch 'multidimensional' into decade
...
Conflicts:
compiler/obc/c/cgen.ml
compiler/obc/java/java_main.ml
2011-07-08 11:36:46 +02:00
Brice Gelineau
42c2936040
Bugfix for the clocking analysis of iterators
2011-07-06 15:56:56 +02:00
Adrien Guatto
cedcabfbc4
Fix memory normalization: the correct clock was
...
missing.
2011-07-06 11:50:02 +02:00
Léonard Gérard
5837f3906f
Multidimensional iterators in java.
2011-06-28 17:50:42 +02:00
Brice Gelineau
c70d34ec06
Preliminary version of multidimensional iterators.
2011-06-28 17:50:42 +02:00
Léonard Gérard
83b0182874
Merge branch 'clocked_inputs' into decade
...
Conflicts:
compiler/heptagon/analysis/typing.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/heptagon/parsing/hept_static_scoping.ml
compiler/main/mls2obc.ml
compiler/obc/c/cmain.ml
2011-06-28 14:46:43 +02:00
Léonard Gérard
108981c0eb
Static constraints in the source. Equal removed
...
( = ) in pervasives is a stub, it will be typed in a polymorphic way.
This is necessary to have a simple way to transform exp into a static_exp
even when there is the = operator.
2011-06-09 14:53:40 +02:00
Léonard Gérard
46ed39b7b3
Remove some warnings.
2011-06-09 14:40:31 +02:00
Cédric Pasteur
f45e30d207
Yet another special case for iterators
2011-06-07 10:49:36 +02:00
Brice Gelineau
938e8897b2
n-ary Sarray_power Earray_fill
2011-05-26 18:43:30 +02:00
Léonard Gérard
fe74030f78
Fix clocking of iterators.
2011-05-26 16:08:59 +02:00
Léonard Gérard
b73e6502a6
resets are now without constraint.
2011-05-26 15:56:59 +02:00
Léonard Gérard
d7d7552be4
Fix printing and parsing of clocks
2011-05-26 15:56:59 +02:00
Léonard Gérard
fd00f099f5
correct reset and level clock
2011-05-26 15:56:59 +02:00
Léonard Gérard
2a2b363bf7
Real asynchronous resets.
2011-05-26 15:56:59 +02:00