Project

General

Profile

Download (2.3 KB) Statistics
| Branch: | Tag: | Revision:
1
* TODO refactoring + doc
2
- separate lustre types from machine types in different files
3
- split basic libs into backend specific files
4
- define mli for core steps: normalization and machine code
5
- define mli for lustre_type and machine_type (Garion)
6

    
7
* TODO
8
** include files
9
** main function
10
*** add a clean test to forbid array arguments for main node
11
    (no available input/output methods)
12
** test suite
13
*** for complex dependency graphs (notably mem/mem cyclic dependencies)
14
*** for clocks
15
*** for arrays (non-generic nodes)
16
** compare with lus2c (verimag)
17
** extension
18
*** array access: done
19
*** add an option to dynamically check array accesses: done
20
*** power operator: done
21
*** automaton
22
*** annotations to ACSL
23
** init checking
24
*** to be done !!!
25
** normalization
26
*** sub-expression sharing seems to be not totally working: fixed
27
*** improve behavior for power and access operators:done
28
*** more type-directed normalization (notably to improve code gen for arrays): done
29
*** reuse of dead vars instead of systematically allocating new local vars
30
*** add a clean test for used but undefined nodes
31
** typing
32
*** correct typing of arith ops (real/int with subtyping ?)
33
*** display array dimensions with correct names: done
34
*** clocks must not be static inputs: done
35
** clock calculus
36
*** extension from named clocks to valued clocks ?
37
*** static inputs should be polymorphic, as global constants are: done
38

    
39
* Horn backend
40
** enum types for automaton
41
   - issues with MBranches and clocks
42
     - control-on-clock generates a "if cond then expr else nothing
43
     - it has to be expressed in a functional way to enable its expression as
44
       horn
45

    
46

    
47
-  The issue seems mainly to lie in the out = f(in) every cond
48
   this generates the follwoingg imperative statements
49
   if cond then f_reset(*mem) else {(nothing, ie. not reset)}
50
   f_step(in,*put,*mem)
51

    
52
   In the machine code, this is done by generating the sequence of 2 instructions
53
   1. if cond then MReset() else {}  (* creation of a conditional statement *)
54
   2. MStep()
55

    
56
- For Xavier: Syntactically, how could you "reset" an arrow? When we see an
57
  Expr_arrow, we introduce a MReset instance to the set of instruction on the
58
  reset function of the current node, but is there any mean to do it with
59
  "every" ?
60

    
61

    
62

    
63

    
64
x = expr when c
65

    
66
if c then
67
  x= expr
68

    
69
else {}
70

    
71
x = if c then expr else x
(11-11/13)