Nicolas Berthier
8497bafa2e
Minor but correction in sigali output.
...
- Translation to z3z now evaluates constant expressions instead of
abstracting them. This non-feature could cause "false" synthesis
failures due to non-translatable yet constant expressions possibly
introduced by tomato (or manually), for instance `not false' in node
`n' bellow:
node n (a: bool) returns (ok: bool)
contract assume true enforce ok with ()
let
ok = a or not false;
tel
2013-04-11 17:30:30 +02:00
Nicolas Berthier
899d33afb6
Corrected a bug in generation of C records.
...
Corrected a somewhat unnoticeable but ugly bug in the generation of C
records, that could mess up the field names when they were not
assigned in the same order as in the declaration of the type.
2013-03-15 09:31:19 +01:00
Nicolas Berthier
9db97de879
Bug correction in `Sigalimain.translate_eq'.
...
- In Sigalimain: untranslatable non-boolean expressions should not be
added as inputs of the controller.
- Avoided some compiler warnings in the same module (with OCaml ≥ 4).
2013-03-12 16:53:52 +01:00
Gwenal Delaval
9b3ba83bb1
Bug correction in java generation
2013-03-11 16:04:12 +01:00
Gwenaël Delaval
f60b00e9e3
Bug correction in Inline_extvalues
...
Added handling of controllable variables in Inline_extvalues
2013-02-08 14:42:26 +01:00
Gwenal Delaval
e7f85d6b25
Configuration for binary release
...
- custom bytecode compilation
- added suffix (OS, cpu) in binary distrib
2013-01-28 15:55:56 +01:00
Gwenal Delaval
2be4e287b9
Take into account the -nosink option in Sigali
...
Corrected bug: do not suppress the last state
variable when -nosink is on.
2013-01-28 15:54:27 +01:00
Gwenaël Delaval
5a9b27d6a9
Correct handling of local assume/enforce of contracts
2012-12-11 08:20:04 +01:00
Gwenal Delaval
ce2e2bdcd0
Added -nbvars option for performance evaluation
2012-11-26 10:05:20 +01:00
Gwenaël Delaval
ef536f412d
Added option -nosink (CS optimisation)
...
The -nosink option suppress the sink state of sigali equations.
This optimizes the controller synthesis, but work only
when the synthesis objective instantaneoulsy depends only
on the current state (and not on current inputs).
2012-11-23 12:23:17 +01:00
Gwenaël Delaval
5bdd891105
Handling of controllables in tomato
...
Added controllable variables as "inputs" in the
tomato pass.
2012-11-22 18:52:21 +01:00
Gwenaël Delaval
0e60d2e839
Boolean transformation: added inputs/outputs
...
Non transformation of inputs/outputs during
Boolean pass lead to bugs.
2012-11-22 18:49:12 +01:00
Gwenaël Delaval
e42ff23a4b
Corrected abstraction for z3z target
2012-11-22 18:37:32 +01:00
Gwenaël Delaval
3e8af67e07
Added Java 1.4 target (experimental)
...
Experimental : remains some bugs on arrays
2012-11-17 23:29:19 +01:00
Gwenal Delaval
74a760ee0a
Handling of controllables in Normalize_mem
2012-11-17 23:01:49 +01:00
Léonard Gérard
db89208f22
Translate last before removing automatons.
2012-11-05 10:10:32 +01:00
Guillaume Baudart
355998bab3
Fix printf typing
2012-10-31 15:59:26 +01:00
Léonard Gérard
b0e2e41299
Schedule: do only count optimized variables in costs.
2012-10-17 12:02:00 +02:00
Gwenaël Delaval
6dd1c743d6
Records in Java
...
Added support of records in Java
2012-09-30 01:40:18 +02:00
Gwenal Delaval
6a21e5d701
Iostream for Java
...
Added support of Iostream.printf (not fprintf)
for Java code gen.
2012-09-28 15:26:01 +02:00
Gwenal Delaval
eddeb1f4de
Bug correction tentative (itfusion)
...
Tentative of correction of itfusion bug:
The itfusion pass adds some "anonymous" nodes into the module.
This correction adds the signature of these created nodes.
This only shifts the bug (towards clocking pass).
2012-09-28 13:06:46 +02:00
Gwenal Delaval
b176384952
Java code generation: lexicography
...
Handling of weird lexical elements (e.g., idents with ', infix names...)
2012-09-28 13:04:08 +02:00
Cédric Pasteur
36bfa81b17
Fix for memalloc
...
Take the simplified versions of types (i.e.
with constants instantiated) to check the
equality of types
2012-09-14 16:08:26 +02:00
Cédric Pasteur
96e233b64c
Fix for tuples of consts used as args
2012-09-14 15:42:49 +02:00
Gwenal Delaval
9334b73ef1
Naive abstraction for sigali
2012-08-08 18:16:33 +02:00
Gwenal Delaval
b199de202b
Removed '~>' in clock prints
...
'~>' (representing links between clock variables)
are printed when -fti option is on.
2012-08-08 18:14:05 +02:00
Gwenal Delaval
b60ee4b91d
Bug correction in Completion pass
...
Completion pass: do not propagate defnames to
other equations
(see test test_option_flatten_t4 : flatten t4, compile C target code)
2012-08-06 12:04:39 +02:00
Gwenal Delaval
857dccd0b2
Corrected Boolean pass
...
e_level_ck correctly translated
Hept_clocking on stateless functions
2012-08-02 17:24:30 +02:00
Gwenal Delaval
41fccc66fb
Bugs corrections
...
- callgraph: add idents used for instantiated nodes
- cgen : added Idents.enter_node
- cmain : removed error when simulated node does not exist (existence
of simulated node was tested for every program, comprising loaded ones)
2012-08-01 17:08:58 +02:00
Gwenal Delaval
b858f0e987
Reads and writes of records in main simulation
2012-07-31 16:58:22 +02:00
Gwenal Delaval
ccab6f7aad
Normalization of record consts
...
Normalization of records as constant to ease the compilation:
f({ x = e })
->
v = { x = e };
f(v)
2012-07-31 16:58:22 +02:00
Gwenaël Delaval
ccc07cc7b9
Unalias missing in obc translation
2012-07-31 15:22:38 +02:00
Gwenaël Delaval
35bea85bf7
Boolean: no transformation on inputs/outputs
...
Only translate local variables, so as to not
modify node interfaces.
2012-07-26 01:45:38 +02:00
Gwenaël Delaval
72b1bd8de3
Typo in error message
2012-07-26 01:33:32 +02:00
Gwenaël Delaval
90dda27a3a
Bug correction in Schedule_interf
...
Bug due to the fact that a variable can be "defined" and "read"
(in scheduling sense) by the same equation, without being a memory:
e.g., a clock defined as the result of a node application, together
with another result on this same clock.
Bug correction: basically removed the "assert false" on killed_vars,
decr_uses; do not count as "use" the self reads.
2012-07-26 01:29:22 +02:00
Gwenal Delaval
5ed07e1e5a
Removed systematic qual. of infix op as pervasives
...
Bug: every infix operator was systematically qualified
as pervasive.
2012-07-24 17:09:51 +02:00
Gwenal Delaval
70cb94d0bd
Unroll correction
...
Order of statement was incorrect
2012-07-23 17:35:20 +02:00
Gwenal Delaval
7e90dccc0a
Cleared java simulation output
2012-07-16 11:37:50 +02:00
Gwenaël Delaval
a15e17c02d
Cleared simulation output
2012-07-16 00:58:40 +02:00
Gwenaël Delaval
e103d60c26
Removed eprintf in schedule_interf
...
eprintf -> Interference.print_debug
2012-07-14 14:31:46 +02:00
Cédric Pasteur
84e502d7a9
Made val optional for functions
...
external val node f is a little bit too long
2012-07-04 17:26:38 +02:00
Gwenaël Delaval
bf03077cd9
Correct output toward hepts
2012-06-29 02:01:49 +02:00
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
ee7d60120b
Fixed bug in translation to minils
2012-06-19 15:56:54 +02:00
Cédric Pasteur
ed2c08315b
Should be affinity, not copy
2012-06-19 09:33:27 +02:00
Gwenal Delaval
502c5e446f
Makefile correction (install target)
...
Makefile correction: install target for simulator
2012-06-13 15:13:53 +02:00
Gwenal Delaval
352bad4735
Correction of Inline pass
...
- correction of Hept_mapfold : inclusion of mapfold for b_defnames (blocks)
- Inlining : deep replacement of idents
2012-06-13 15:06:05 +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
1e46c2a73c
Makefile : removed target "all" from target "install"
...
On some systems, the targets "all" and "install" must be
made with different rights. Then "all" cannot be a dependendy of
"install", especially since ocamlbuild try to read/modify some
files even if there is no compilation to perform.
2012-06-06 15:55:23 +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
fc1edf91f0
OOPS forgot compiler_timings
2012-03-07 17:51:06 +01:00
Adrien Guatto
834e16cad5
Fix: replace opt with native in build system
2012-03-07 17:48:30 +01:00
Adrien Guatto
e05f3732a0
Timing framework.
2012-03-07 17:48:08 +01:00
Adrien Guatto
f09792485e
Hept2mls: fixed missing enter_node
2012-03-07 17:48:08 +01:00
Adrien Guatto
9640acb3a4
More efficient ident handling.
2012-03-07 17:48:08 +01:00
Adrien Guatto
6870ea62c9
Inlining: fix issue with nesting of blocks.
2012-03-07 17:48:08 +01:00
Adrien Guatto
3e8e54f42b
Perform inlining before causality/init analysis.
2012-03-07 17:48:08 +01:00
Adrien Guatto
44d3a639e5
Internal error for unknown clocks.
2012-03-02 17:12:30 +01:00
Adrien Guatto
3b0ebf2dbf
print_ident: use the function from Idents
2012-03-02 17:12:30 +01:00
Adrien Guatto
557d00f501
Inlining: do not forget when, merge or last.
2012-03-02 17:12:30 +01:00
Adrien Guatto
ba1b134640
Static evaluation of modulo.
2012-03-02 14:11:19 +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
Léonard Gérard
c1b8e47ffb
Fixed escape of string in java
2012-02-21 14:39:35 +01:00
Adrien Guatto
070d2eab55
Revert "Changed linear typing for merge."
...
This reverts commit 0abb050a23
.
2012-02-14 14:36:47 +01:00
Adrien Guatto
5ac3a7f028
Redisable interference of scalars during scheduling
2012-02-10 11:33:09 +01:00
Adrien Guatto
0abb050a23
Changed linear typing for merge.
...
The new rule accepts that some branches of a linearly typed merge have linear
type Top, provided that at least one has type "lin". E.g.:
node f(x : int at r) returns (o : int at r)
var ck : bool;
let
ck = true;
o = merge ck (x whenot ck) 0;
tel
is now deemed valid.
2012-02-09 16:23:36 +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
f43fcb78f6
Only inline integer extvalues when unrolling
2012-02-08 18:31:51 +01:00
Adrien Guatto
ec0274cc82
C backend: do not inline consts by default.
2012-02-08 17:49:21 +01:00
Adrien Guatto
fa09d86dc1
Unrolling in C backend.
2012-02-08 17:47:28 +01:00
Adrien Guatto
76ae2f4518
Loop unrolling.
2012-02-08 16:16:41 +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
1910e7f868
Static exp evaluation: missing +. and -.
2012-01-26 13:42:03 +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
a7e3f4a973
Added test for clocking in automata
2012-01-25 18:13:43 +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
Adrien Guatto
998b3b0b89
Generate C89
2012-01-25 12:42:14 +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
db5f55b221
Fixed when of stateful exp with memalloc
...
As the expression inside the when will be called
on a faster rhythm, we have to make sure not to
share it with a variable on the slow clock.
We do this by creating a new equation for the
stateful exp.
2012-01-25 09:33:08 +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
0aad3ac466
eclipse stuff
2011-12-15 20:02:38 +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
24c394d2cb
pretty print clocks with links.
2011-12-12 11:01:46 +01:00
Léonard Gérard
ba5f336a6f
Fix antidependance calculation
2011-12-12 11:01:22 +01:00
Cédric Pasteur
80fbe6be5f
Fixed linear typing of printf
2011-12-12 10:36:24 +01:00
Cédric Pasteur
54cde301f6
C code generation for printf
2011-12-12 10:36:24 +01:00
Cédric Pasteur
2fc0435393
Added simple printf
...
Typing and clocking done
2011-12-12 10:36:24 +01:00
Adrien Guatto
0f71dbe145
Bitwise or.
2011-12-06 17:46:35 +01:00
Adrien Guatto
8d772e20e2
Bitwise and.
2011-12-06 15:44:21 +01:00
Adrien Guatto
1ec15b9409
Bitwise operators on integers.
2011-12-06 15:44:21 +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
Adrien Guatto
5097c62449
C backend: put memory of the main node in a global variable.
2011-12-05 10:18:50 +01:00
Cédric Pasteur
add09fe465
Fixed complexity of control optimization
2011-11-29 13:34:50 +01:00
Léonard Gérard
45fbd18fe8
Fix automaton initialization.
2011-11-28 15:12:27 +01:00
Léonard Gérard
d5f72c278c
mls2obc bug fix
...
y = (if then else) when c
ou bien
y = f() when c
ne compilait pas.
2011-11-28 15:12:22 +01:00
Léonard Gérard
5be7a6acc2
java main void return handling
2011-11-25 18:56:15 +01:00
Léonard Gérard
05750352f8
pat_ty ne semble pas fiable. Voir t19.ept
2011-11-25 18:55:12 +01:00
Cédric Pasteur
3369f6dffc
Don't forget to optimise control recursively
2011-11-24 16:10:14 +01:00
Adrien Guatto
1b73f3444e
Clock before dumping .epci
2011-11-24 11:41:11 +01:00
Léonard Gérard
57f7da94c2
Deal with const ref in Java.
2011-11-21 11:42:26 +01:00
Cédric Pasteur
641b76133d
Don't inline all const
2011-11-21 10:55:53 +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
fdab1ac55c
Strict-SSA option to switch array encoding.
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
1962cd2df4
Typing bug fix
2011-11-21 03:26:26 +01:00
Léonard Gérard
adc47c536a
Improve Java printing and main.
...
genToString is a fully generic to string function
dealing with arrays, primitive arrays, etc.
2011-11-21 03:26:25 +01:00
Léonard Gérard
25ce5edbd0
debugger_script_gen
2011-11-21 03:26:25 +01:00
Léonard Gérard
442f38b196
stronger heptc and clean_heptc
...
It may be symlinked.
Moreover, when heptc is called with java as first param, it will set the
right target and call javac right after
2011-11-21 03:26:13 +01:00
Léonard Gérard
7b281317f4
fix scalarize
2011-11-20 22:37:00 +01:00
Léonard Gérard
9d8a0be512
Improve scalarize
2011-11-18 12:33:37 +01:00
Léonard Gérard
ca711274c0
Remove infusion from the default optima options.
2011-11-18 12:33:37 +01:00
Léonard Gérard
8ebb75f8bf
New debugger script with a partial generator.
2011-11-18 12:33:37 +01:00
Léonard Gérard
efa6b5cf70
Correct scalarize and java load_conf
2011-11-18 12:32:37 +01:00
Léonard Gérard
be28156de9
Add a simplify pass to Obc
2011-11-18 12:32:37 +01:00
Léonard Gérard
9274ef24aa
Java support type alias.
2011-11-18 12:32:37 +01:00
Léonard Gérard
35a9a24467
Correct obc_mapfold
2011-11-18 12:32:37 +01:00
Léonard Gérard
2a6dab836a
Add alias to obc vd.
2011-11-18 12:32:37 +01:00
Léonard Gérard
fa956a00ad
Remarques pour Control
2011-11-18 12:32:37 +01:00
Léonard Gérard
5a263b0cbd
Fix signature printing.
2011-11-18 12:32:37 +01:00
Léonard Gérard
4e3c58bb40
Allow symbolic static_exp eval.
2011-11-18 12:32:36 +01:00
Léonard Gérard
bdd85f5f81
mapfold over var_ident.
2011-11-18 12:32:36 +01:00
Léonard Gérard
d5858d6dd2
Optimize static evaluation
...
It greatly reduce the amount of constraints kept.
Indeed, all the constraints : x = x, x /y = x/y, etc
were kept when x and y were local params.
2011-11-18 12:32:36 +01:00