Cocospec: parsing, normalizing and processing machines for contracts.
Some progress on compiling cocospec contract.Contract resolution still need to be done as well as dealing with the machine code level and so on.
Some progress on EMF bqckend. Refactoring machines code
Cleaning up stuff in normalization. Mainly replace arguments with only required elementsnode_Table hashtbl is now only available through functions of the corelang.mli
Added include directive that directly inject a lustre source file in the prog
Merge branch 'unstable' into lustrec-seal
Pretty serious update:- a bug in regressio ntest Simulink/integrator_ext_IC_matrix_test revealed the following (serious issue): when building the list of instruction (in the machine code) the access to variable were hardcoded to LocalVar or StateVAr depending whether the variables was part of the identified memories....
Removed Contract contruct: imported node should be enough. Solved some warning at compile time
Merge branch 'cocospec_to_be_merged' into unstableMainly adapting to new cocospec syntax for contracts
SEAL: compute the projection to switched systems. Some issues with intermediate variables and a better selection of split guard have to be addressed
- Global type env and clock env now availble as a global reference (Global module)- Adapted the parsing of specification with a cocospec compatible one- The data structure of contracts is now almost cocospec compatible- Lustrec-test has been updated to use the newest syntax
Some refactoringAdapted the parser/types/constructors for cocospec syntax
[bug solved] do not normalize eexpr in annotations, only in specification.
Merge branch 'vhdl' of https://cavale.enseeiht.fr/git/lustrec into lustrec-seal
bug wrt normalization. Didn't take clock into account.
Moved mk_fresh_var from normalization to corelang
- Makefile: solved dependency problem when compiling include lusi- Renamed type declarations as lustre_types and machine_code_types
- Normalization parameters (alias and unfold_array) are now provided as parameter- program type renamed as program_t- Initiating the lustrev tool with dependencies to z3 and seal.
Conditional activation of machine type plugin. currently a little buggy. Shall be desactivated.
[general] large modification: added machine types, a second typing phase dealing with machine types (eg uint8) typing was transformed as a functor and parametrized by basic types (int/real/bool) it can also be applied multiple times on the same program
[global] reordered local vars, keeping the declared ones before the others. Was mandatory for clocked expressions in compiled automata.
[general] Refactor get_node_eqs to produce (eqs, auts) with automatons
Normalization: force normalization of "every" arguments
New global option to normalize simple call to std lib functions (+,-,*, comparison ops, etc).This is used in EMF backend.
Added a feature to alias ite contructs argument. To be used by EMF backend
forcing introduction of new equations for fcn calls in asserts
nice bug correction wrt constants with a large number of digits. Would raise exception when comparing these constants
full merge of salsa/mpfr and master
Bug fixed for horn traces option with stateful asserts
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@454 041b043f-8d7c-46b2-b46e-ef0dd855326e
do not use lusi for horn, and some logging for horn
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@451 041b043f-8d7c-46b2-b46e-ef0dd855326e
Major revision due to severe limitations and bugs of inlining capabilities: - destination dir should now work properly - lusic files now have a version number, to avoid nasty segfaults when loading lusic files created by an older compiler version - inlining should now work with generic nodes and generic array library...
LOTS of bug correction wrt inlining, still a work in progress... - global constants were not accounted for - no good avoidance of name capture when inlining - static parameters (array sizes and clocks) not handled - ill-typed generated expressions, when inlining array expressions...
Changed the option horntraces to a general traces optionThis annotation phases would have to be moved in optimization of normalized code
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@415 041b043f-8d7c-46b2-b46e-ef0dd855326e
Reactivated the generation of traceability informationChanged the test-compile to use the horn-traces and the horn-queries option
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@414 041b043f-8d7c-46b2-b46e-ef0dd855326e
Solved bug found by Teme about asserts.
Previously assert expression containing -> would lead to unnormalized ite. Now each expression within the assert is normalized and may bind new node equations.This could be later optimized but is working now.
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@406 041b043f-8d7c-46b2-b46e-ef0dd855326e
- corrected a bug in optimizating mode (option -O 3) - changed the printing of unused variables
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@338 041b043f-8d7c-46b2-b46e-ef0dd855326e
- corrected bug in node reset clock - cleaner (but heavier !) code generation scheme for automata
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@337 041b043f-8d7c-46b2-b46e-ef0dd855326e
- Added major feature: Lustre V6 automata !!! - one automata example added - changed the reset condition in node calls (now a simple bool expr) - bug corrected in clock calculus - bug corrected in traceability info - added field in variables to test whether they are original...
- work in progress for automata...
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@333 041b043f-8d7c-46b2-b46e-ef0dd855326e
This is a major revision: - added interface files (.lusi) in the language, that can be compiled on their own, giving an object file (.lusic) and a header file (.h) - modular code generation, from Lustre to C level included. - nice amount of code refactoring...
- started refactoring type definitions in .lus/.lusi, in order to ease the way .lusi interface files are handled.
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@321 041b043f-8d7c-46b2-b46e-ef0dd855326e
- added missing constraint check when sub-clocking tuple expressions - added an algorithm that reuses dead or clock-disjoint variables instead of declaring/using new ones. - NOT carefully tested. Use option -O 3 if you want to give it a try...
Updated the licence info and header for each file.Moved backends in separate folders
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@313 041b043f-8d7c-46b2-b46e-ef0dd855326e
- many bugs/limitations in lifting operators to tuples have been worked out: - typing/clock calculus/normalization now work properly - still, a bug in annot generation (this one is for Ploc !!) in file normalization, line 396 - bug corrected in subtyping...
Merged horn_traces branch
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@303 041b043f-8d7c-46b2-b46e-ef0dd855326e
Prepared first stage of code reorg:1. moved type def in lustrespec.ml2. moved constructor and basic functions in corelang3. Modified eexpr with prenext quantifiers
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/branches/specification_reorg_corelang_parser@297 041b043f-8d7c-46b2-b46e-ef0dd855326e
Added the lustre backendStill some work on adapating the instruction scheduling
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/branches/cleaner_backend@279 041b043f-8d7c-46b2-b46e-ef0dd855326e
- corrected causality bug (cf. previous commit)
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@227 041b043f-8d7c-46b2-b46e-ef0dd855326e
improved code generation by factorizing out arrows
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@207 041b043f-8d7c-46b2-b46e-ef0dd855326e
- work in progress for stateless/stateful status computation (to turn conditionals into merges, which yield more efficient C code)
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@198 041b043f-8d7c-46b2-b46e-ef0dd855326e
Merge (if it works) of the lustre interfaces branche providing lusi files into trunk
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@123 041b043f-8d7c-46b2-b46e-ef0dd855326e
Moved files to trunk in lustre_compiler
git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@116 041b043f-8d7c-46b2-b46e-ef0dd855326e