Commit Graph

660 Commits

Author SHA1 Message Date
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
Cédric Pasteur 03f0d5d89a Fixed stupid bug #1 2011-04-18 17:14:50 +02:00
Leonard Gerard c0602c6df6 etuple removed 2011-04-18 16:09:07 +02:00
Leonard Gerard 5c831db40b removed warning 9 2011-04-18 15:47:25 +02:00
Cédric Pasteur c6aa63b444 Heptc compiles again
AFor now expects expressions instead of static exps
2011-04-18 15:38:42 +02:00
Cédric Pasteur c6991977a0 Missing case in normalize
Distribute also static tuples
2011-04-18 09:52:03 +02:00
Léonard Gérard 5d2f7dfa85 jeudi soir. still on mls2obc. 2011-04-14 20:14:21 +02:00
Cédric Pasteur f57d7f1589 Correct translation for Eupdate and Eupdate_field
As the language is SSA, we should assign each 
element only once.
2011-04-14 15:14:41 +02:00
Cédric Pasteur c23b9256f0 Also forgot to re-enable scalarize 2011-04-14 14:18:24 +02:00
Cédric Pasteur 975418ffff Missing part from last commit 2011-04-14 13:56:24 +02:00
Cédric Pasteur 57bc9f210b Added a generic onfiguration for backends
Each backend gives a function used to 
enable/disable passes, executed before the
beginning of the compilation
2011-04-14 13:53:30 +02:00
Cédric Pasteur 2f346f873c Control optimization as a pass on Obc
There is now a obc_compiler.ml file, as in hept
and minils.
2011-04-14 11:53:39 +02:00
Cédric Pasteur 6f0c9af006 First port of mls2obc
Does not compile yet
2011-04-14 11:17:12 +02:00
Cédric Pasteur e2e8a93656 Hept2mls ported and very simplified
Does not compile yet
2011-04-14 10:00:06 +02:00
Cédric Pasteur d2c4f09aa2 Indentation fixes + remove unnecessary code 2011-04-14 10:00:06 +02:00
Léonard Gérard 12bd4e9c45 Types. 2011-04-14 09:23:38 +02:00
Cédric Pasteur 6adb45c3ad Normalize in Heptagon compiles 2011-04-13 16:21:28 +02:00