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
Léonard Gérard
ab3823874c
Feature: Java main will give bin args as static params to the main.
...
consider having a main node like this one:
node main<<i : int; b : bool>> () returns...
Then if to call the generated program, you'll need ot give an int and a bool.
Furthermore, if you give an additional arg, it'll be used as the wanted
iteration number.
Conflicts:
compiler/obc/java/java_main.ml
2011-07-08 11:26:05 +02:00
Léonard Gérard
4ac4347dc8
Add an error (in java main) when the specified main node is incorrect.
...
Conflicts:
compiler/obc/java/java_main.ml
2011-07-08 11:18:39 +02:00
Léonard Gérard
1c428e7fe1
Forgot to remove the comments around static scoping for interfaces.
2011-07-08 11:18:39 +02:00
Brice Gelineau
10115684d9
bugfix for reset calls in C
2011-07-08 10:51:10 +02:00
Léonard Gérard
f40dc66e57
Patch typing.ml from brice email 27/06/11.
2011-07-07 16:21:48 +02:00
Brice Gelineau
b6aecf9869
Bugfix for reset calls in C
2011-07-07 16:18:25 +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
Cédric Pasteur
34b65c1234
Do not generate for loops
...
These loops are already present in the Obc code.
2011-07-05 18:08:21 +02:00
Cédric Pasteur
bb6b9868b0
Use the variable type to add or not an indirection
2011-07-05 17:46:43 +02:00
Léonard Gérard
5837f3906f
Multidimensional iterators in java.
2011-06-28 17:50:42 +02:00
Léonard Gérard
f2ca353cac
Pour que ca marche sur clocked_inputs (cela vient de memalloc)
2011-06-28 17:50:42 +02:00
Léonard Gérard
c5fbcbe765
removing white spaces
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
Cédric Pasteur
e754493364
Fixed stateful bit for iterated nodes
2011-06-23 10:51:25 +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
c3382e4284
Small present bugfix.
2011-06-09 14:40:31 +02:00
Léonard Gérard
b60e8ab4bb
Better automata variable names.
2011-06-09 14:40:31 +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
Adrien Guatto
4794045208
Reworked Obc AST: from right patterns to extvalues.
...
I introduced a notion of extended values in Obc expressions,
replacing the Epattern constructor. Patterns may now only
occur at their rightful place, on the left of an assignment.
This change allows to index global constant arrays.
2011-05-30 16:25:00 +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
Léonard Gérard
fbfa6eda1a
Add Ewhen to the minils ast, And clocking of iterators.
...
Ewhen is now the only case of possible recursion for minils exps.
This add was motivated by equations like :
(y,z) = f(x) when c
This equation to be correctly normalized in minils before needed :
y',z' = f(x)
y = y' when c
z = z' when c
But this new variables where needless since the final translation of when c
is the identity.
2011-05-26 15:56:59 +02:00
Léonard Gérard
87dc76f113
Code formating fixes (typos, tabs, spaces at endofline,...)
2011-05-26 15:56:59 +02:00
Léonard Gérard
efcb2b01bb
Fix global_printer to follow Format conventions.
2011-05-26 15:56:59 +02:00
Léonard Gérard
b786cbe4ec
Fix partial application syntax : <(x)> instead of (<x>).
2011-05-26 15:56:59 +02:00
Léonard Gérard
de49540a76
clean signature printing.
2011-05-26 15:56:59 +02:00
Léonard Gérard
74cc367a0e
correct base_clock and signature.
2011-05-26 15:56:59 +02:00
Léonard Gérard
4c2a5121e4
remove useless ml folder.
2011-05-26 15:56:59 +02:00
Léonard Gérard
9a17648516
good clocks in signatures
2011-05-26 15:56:59 +02:00
Léonard Gérard
40fcb4d73e
improve syntax
2011-05-26 15:56:58 +02:00
Leonard Gerard
88497a2da3
parsing clocks.
2011-05-26 15:56:58 +02:00
Leonard Gerard
a8215c8083
compile ! nearly all tests passed.
2011-05-26 15:56:58 +02:00
Leonard Gerard
22354aca0a
a_clock in signatures
2011-05-26 15:56:58 +02:00
Adrien Guatto
fdbe6445a7
User-friendly error message for top-level redefinitions.
2011-05-25 13:26:39 +02:00
Cédric Pasteur
f0f67dacf4
Raise an error when using linear type without memalloc
2011-05-25 09:12:16 +02:00
Cédric Pasteur
a48981f72c
Fix memalloc_apply
2011-05-25 09:12:16 +02:00
Cédric Pasteur
192572ea67
This should fix some bugs in causality
...
This should all be rewritten anyway
2011-05-25 09:12:16 +02:00
Cédric Pasteur
90be09f259
Give correct linearity to generate vars
2011-05-25 09:12:16 +02:00
Cédric Pasteur
d39e883e08
Filter outputs removed by memalloc
2011-05-25 09:12:16 +02:00
Cédric Pasteur
de3a61557b
Improvements on Schedule_Interf
...
Only take into account optimized types.
Reuse code from Interference to compute uses.
2011-05-25 09:12:16 +02:00
Cédric Pasteur
840f6672df
Fixed linear typing of const tuples
2011-05-25 09:12:16 +02:00
Cédric Pasteur
b7ba8e7913
Remove useless case
...
As targeting is only done for linear variables,
this case is already dealt with by
coalesce_linear_vars
2011-05-25 09:12:15 +02:00
Cédric Pasteur
d1a68c5df3
Missing file
2011-05-25 09:12:15 +02:00
Cédric Pasteur
75b4fa9ddc
Fixed bug in the interference of fold
2011-05-25 09:12:15 +02:00
Cédric Pasteur
1ea4290f9e
Added scheduler that tries to minimize interferences
2011-05-25 09:12:15 +02:00
Cédric Pasteur
a2c2a3a619
Fixed typing of if then else
...
First try as T * at r * T -> at r and then as
T * T * at r
2011-05-25 09:12:15 +02:00
Cédric Pasteur
c70861b874
Small fixes
2011-05-25 09:12:15 +02:00
Cédric Pasteur
90648f61ff
Fixed linear typing of automata
...
Each state must be typed in the global environment
and then the accumulator must be joined.
2011-05-25 09:12:15 +02:00
Cédric Pasteur
ebf8b354bd
Fixed conflict in parsing with split
2011-05-25 09:12:15 +02:00
Cédric Pasteur
2b2cba8e2d
Added split operator
2011-05-25 09:12:14 +02:00
Cédric Pasteur
9686e2db01
Oops, forgot to recurse on the pattern of Acall
2011-05-25 09:12:14 +02:00
Cédric Pasteur
db8c87ff07
Fix generation of bounds check expression
2011-05-25 09:12:14 +02:00
Cédric Pasteur
28b9eaa203
Fixed problems with types
2011-05-25 09:12:14 +02:00
Cédric Pasteur
c3d47f4d4b
Fixed error in computation of targeting
2011-05-25 09:12:14 +02:00
Cédric Pasteur
6f32564ad5
Added a sepecial case to deal with iterators
2011-05-25 09:12:14 +02:00
Cédric Pasteur
41d2a1e3cb
Added check for unicity of init
2011-05-25 09:12:14 +02:00
Cédric Pasteur
6332ac7a10
Added init construct
...
It is part of a pattern, eg:
(init<<r>> x, y, init<<r2>>) = f()
2011-05-25 09:12:13 +02:00
Cédric Pasteur
d5218ff91c
Causality check for linear types
2011-05-25 09:12:13 +02:00
Cédric Pasteur
0728f3dae7
More work on code generation
2011-05-25 09:12:13 +02:00
Cédric Pasteur
822e87605b
One step closer to code generation with memalloc
2011-05-25 09:12:13 +02:00
Cédric Pasteur
3f29e8623d
Interaction between linear typing and memalloc
2011-05-25 09:12:13 +02:00
Cédric Pasteur
cf34234ed5
Fixed linear typing of iterators
2011-05-25 09:12:13 +02:00
Cédric Pasteur
ec18040cf4
Linear typing
2011-05-25 09:12:13 +02:00
Cédric Pasteur
6c9d9e90d1
Linearity annotations in the AST
2011-05-25 09:12:13 +02:00
Cédric Pasteur
0b9dc1fc01
Correct fix
2011-05-25 09:12:12 +02:00
Cédric Pasteur
7d2b1e5865
Fixed bug in disjoint clock
2011-05-25 09:12:12 +02:00
Cédric Pasteur
285abc48bf
Fixed some bugs
2011-05-25 09:12:12 +02:00
Cédric Pasteur
dec8cb69c8
Fixed bug in computation of live vars
2011-05-25 09:12:12 +02:00
Cédric Pasteur
68e1fe1ee8
Always check if a var should be optimized
2011-05-25 09:12:12 +02:00
Cédric Pasteur
66386ddca2
Fixed some bugs
2011-05-25 09:12:12 +02:00
Cédric Pasteur
c994e58e06
Fixed bug in listing colors
2011-05-25 09:12:11 +02:00
Cédric Pasteur
032fe693ef
Deadcode removal pass
2011-05-25 09:12:11 +02:00
Cédric Pasteur
448c163181
Dsatur coloring algorithm
...
It is not completely generic, as we need to know
the difference between affinity and interference
edges.
2011-05-25 09:12:11 +02:00
Cédric Pasteur
3f9918b570
Added memory alloc application pass
2011-05-25 09:12:11 +02:00
Cédric Pasteur
a7015a9bf4
Fix for interference
...
Works on a simple program
2011-05-25 09:12:11 +02:00
Cédric Pasteur
9a7f9254d2
Added memalloc pass to the compiler
2011-05-25 09:12:11 +02:00
Cédric Pasteur
1059329c0e
Interference compiles
2011-05-25 09:12:11 +02:00
Cédric Pasteur
197e24b73e
Rename Graph to Sgraph
...
The Graph module name is already used
in OCamlGraph
2011-05-25 09:12:10 +02:00
Cédric Pasteur
7787428f34
Compile fixes
2011-05-25 09:12:10 +02:00
Cédric Pasteur
3ee0e5e7b4
First version of interference.ml
2011-05-25 09:12:10 +02:00
Cédric Pasteur
e9316bbf1b
Interference graph ported to OCamlGraph
2011-05-25 09:12:10 +02:00
Léonard Gérard
d7553b9db0
Fix static_scoping with locally defined types.
2011-05-24 18:33:05 +02:00
Cédric Pasteur
96054a67b6
Correct order for indices in array declaration
...
In C, the order in the declaration of variables
is the same as for access
2011-05-24 11:16:27 +02:00
Léonard Gérard
aea82e79b0
col<100
2011-05-21 15:38:09 +02:00
Cédric Pasteur
72892a9d82
Fixed missing case in Obc_mapfold
2011-05-16 17:30:48 +02:00
Adrien Guatto
36d93a411d
Fix generated C code calling between().
2011-05-12 16:32:52 +02:00
Adrien Guatto
a15276f053
Compile with proper include to pervasives.h.
2011-05-12 16:32:52 +02:00
Gwenal Delaval
acad16b98a
Graphical simulator hepts
...
Added graphical simulator hepts
Added option -hepts to the compiler: this option formats the output of the simulation loop
to fit with hepts (currently working only on C target code). Typically, suppresses all
"decoration" output, like input or output names, and prints output on single lines.
Currently not implemented in hepts: array types.
Usage: to simulate the node Modulename.f:
heptc -target c -s f -hepts modulename.ept
gcc modulename_c/*.c -o ./f_sim
hepts -mod Modulename -node f -exec ./f_sim
2011-05-12 10:08:13 +02:00
Gwenal Delaval
bf4d80c5a3
Correction of Mls_compare for new AST
2011-05-11 14:25:45 +02:00
Leonard Gerard
a9aa794b18
Reset optim
2011-05-10 20:52:32 +02:00
Leonard Gerard
75b7ceab5a
Allows easy debugging printing of Envs.
2011-05-10 20:29:01 +02:00
Leonard Gerard
1d390848fe
real good switch fix.
...
The order switch then reset was wrong, since some reset reset slower inner blocks and equations, to have reset correct after switch it would have been necessary to sample the reset condition correctly (use r when c) using the level_ck... anyway the order seems now irrelevant considering code size.
2011-05-10 20:28:39 +02:00
Leonard Gerard
09b5e8e54a
Rerefixfix switch vd_env
2011-05-10 17:22:24 +02:00
Gwenal Delaval
da648254d8
Added type string to pervasives, with string constants in AST
2011-05-10 17:07:17 +02:00
Gwenaël Delaval
a1be8130ce
Inline pass re-activated
2011-05-10 17:07:16 +02:00
Cédric Pasteur
568dfc59fd
Fixed generation of includes in C
...
The module names must be uncapitalized in includes
2011-05-09 09:50:18 +02:00
Cédric Pasteur
2a9c72154c
Fixed renaming of var_dec in Switch
...
Instead of creating new var_decs for renamed variables,
just copy the one from the original var to
avoid losing other information
2011-05-05 17:57:57 +02:00
Gwenal Delaval
9e41fcf71f
Current Boolean pass for Heptagon
2011-05-05 11:54:38 +02:00
Cédric Pasteur
c8055cd1ff
Fixed bugs with static records in C generation
2011-05-03 13:21:27 +02:00
Cédric Pasteur
b47dc918ec
Fixed bug with loading modules
...
Do not forget to remember loaded modules
2011-05-02 14:27:42 +02:00
Cédric Pasteur
fd347cb4e4
Fix generation of bounds check expression
2011-05-02 11:24:12 +02:00
Cédric Pasteur
f110727568
Better fix for Normalize_mem
...
We have to modify the var_dec and arg as they may
have other fields that need to be kept
2011-05-02 11:20:37 +02:00
Léonard Gérard
d2eeeee73f
fix reset.
2011-04-29 16:24:08 +02:00
Cédric Pasteur
a533b0b3f4
Proper fix for init of outputs with last
2011-04-29 15:21:12 +02:00
Cédric Pasteur
29d3c75d55
Proper fix for the problem of scoping of Svar
2011-04-29 15:21:12 +02:00
Cédric Pasteur
59c8106e46
Also use idents for Ewhen in Heptagon
2011-04-29 15:21:12 +02:00
Cédric Pasteur
aae38a7844
Use idents for Emerge in Heptagon
2011-04-29 15:21:12 +02:00
Léonard Gérard
670d8962df
add useful files
2011-04-29 15:17:01 +02:00
Léonard Gérard
9fa8e7e6ff
mk_equation in hept computes the stateful field.
2011-04-29 15:04:47 +02:00
Léonard Gérard
219c4dbf8d
cosmetic
2011-04-29 15:04:47 +02:00
Adrien Guatto
10418197c8
Initial support for return-less external functions.
...
The compiler still does not support unsafe functions that well. For example, putting an assert()/exit() in an automaton's state does not work correctly.
2011-04-28 15:24:35 +02:00
Cédric Pasteur
bed729b448
Fixed typing of const def
...
Like values, the typed version should be put in
the environment.
2011-04-28 09:28:07 +02:00
Léonard Gérard
ba1ff2c06d
Fix qualify Svar
2011-04-27 16:37:45 +02:00
Adrien Guatto
aa1041319f
C backend: do not use memory structs for combinatorial main() functions.
2011-04-27 15:29:33 +02:00
Léonard Gérard
f532ccc84c
really fix unification
2011-04-27 15:16:17 +02:00
Léonard Gérard
b8ee46d58f
fix normalize_mem
2011-04-27 14:29:21 +02:00
Adrien Guatto
00cb203dd9
Revert "C generation: fixed struct field name in step() call."
...
This reverts commit fc920d88ea
.
2011-04-27 14:02:50 +02:00
Adrien Guatto
fc920d88ea
C generation: fixed struct field name in step() call.
2011-04-27 11:53:44 +02:00
Cédric Pasteur
014bc19ab2
Fixed bug in init analysis
2011-04-26 12:43:03 +02:00
Cédric Pasteur
401aaeeb89
Type declarations should also be typed
...
This is necessary so that the static expressions
appearing in those types are correctly typed.
2011-04-21 16:29:24 +02:00
Léonard Gérard
6b86b86e9d
really fix normalize_mem.
...
in the old fix was missing the renaming, and there was wrong equations
order :
f () returns x
[here rename x by mem_x]
mem_x = fby ...
x = mem_x
so the simplest was :
f () returns out_x
var x;
[ nothing to do]
out_x = x
x = fby ...
pay attention to the order of equations since we are after the
scheduling..
probably it should be done before the scheduling anyway ?
2011-04-20 20:47:06 +02:00
Léonard Gérard
5fb518d8ed
Java bugfix
2011-04-20 17:33:50 +02:00
Léonard Gérard
73abbad1f9
small java module fix
2011-04-20 17:24:09 +02:00
Cédric Pasteur
2757e7c1bf
Fixed normalized_mem
...
It inverted the order of equations
2011-04-20 16:23:44 +02:00
Gwenal Delaval
8c4217ab83
Rebase bzr branch on old decade
2011-04-20 14:50:09 +02:00
Gwenaël Delaval
243fe4b4c7
Keyword "inlined" for nodes
...
Added a keyword "inlined": "inlined f(x)" is intended to
inline only this application. (not effective yet)
2011-04-20 12:47:29 +02:00
Gwenaël Delaval
85bbe21d6c
Sigali pass into compiler + added a_id field to applications
...
- Added "z3z" target language, calling sigali code generation
- a_id is application id, so as to identify node applications; added
to Minils AST. a_id is given on hept2mls pass.
This is needed for the controller execution from controller synthesis.
2011-04-20 12:47:28 +02:00
Gwenaël Delaval
da37fd8e58
Sigali code generation
...
Sigali AST and Sigalimain module for sigali code generation
from normalized and Boolean minils program
2011-04-20 12:28:38 +02:00
Gwenaël
ac9715ad90
Correction of Boolean pass
...
Correction of Boolean pass: correct translation of variable declarations,
including full clock translation (in two passes for variable declarations:
one to build the env, one for clock translation).
2011-04-20 12:28:38 +02:00
Gwenal Delaval
0f6ddb739b
Correction of Boolean pass
...
Corrections to handle modifications on AST
(fresh/gen_fresh on idents, Tunit type,
e_base_ck = Cbase everywhere)
2011-04-20 12:28:37 +02:00
Gwenal Delaval
4e267d82c6
Boolean transformation pass (translate every enumeration type to boolean tuples)
2011-04-20 12:28:37 +02:00
Léonard Gérard
d6240e1c67
100 and java scalarized
2011-04-19 18:45:56 +02:00
Cédric Pasteur
802178fb28
Added a pass to normalize memories
...
This adds a copy for outputs that are also
memories.
2011-04-19 17:19:40 +02:00
Cédric Pasteur
845d084658
Preserve the order of type and classes definitions
2011-04-19 13:08:35 +02:00
Cédric Pasteur
073ccc2603
Better handling of static arrays
2011-04-19 12:58:41 +02:00
Leonard Gerard
220db42076
java readded
2011-04-19 11:39:37 +02:00
Cédric Pasteur
740114764c
Fixed stupid bug in the order of args
2011-04-19 10:38:48 +02:00
Leonard Gerard
3618ccc8ed
parser fix
2011-04-19 10:14:19 +02:00
Cédric Pasteur
a2303ec7e1
Other compile fixes
...
The java backend is disabled temporarily
2011-04-19 09:49:00 +02:00
Cédric Pasteur
3c8fc39745
Fix C backend with new obc ast
2011-04-19 09:23:52 +02:00
Cédric Pasteur
028dfe0468
Fix for nested if and merge with tuples
2011-04-19 09:04:36 +02:00
Leonard Gerard
8da5ce4648
no order in declarations
2011-04-18 19:20:35 +02:00