Skip to content
Snippets Groups Projects
  1. Aug 29, 2019
  2. May 22, 2019
  3. May 03, 2019
  4. Mar 25, 2018
  5. Aug 18, 2017
    • erwan's avatar
      Do dep-loop checking before removing alias, otherwise some variables disappear ! · b13c9efb
      erwan authored
      And it is now done only by Lic2soc (L2lCheckLoops is not used anymore)
      
      Also, during this change, I was bitten again by the « "__" versus "::" in ident
      names » problem again.
      
      The core of this problem is due to the fact that I use LicDump both for
      (1) dealing with internal ident names
      (2) generating lustre files
      
      Because of (2), ident names may depend on the ec or the v4 option. hence, internal
      names were sometimes translated with "__" instead of "::".
      
      To (try to) fix that, I've added a boolean flag to all "to_string" functions that
      states whether the function is used for internal purposes, or for generating lustre
      files.
      
      It was quite a boring change, that triggered other problems, that I've fixed
      in this (too long) commit :
       - -esa should force -en, otherwise bad things happen (-esa is used for -ec anyway)
       - in -esa mode, #/nor inputs tuples of bool, not arrays
       - fix the list of predi op that returns a type different that its arg (SocPredef)
      b13c9efb
  6. Jul 05, 2017
    • erwan's avatar
      More work on the -eeb option. · 6f975e9b
      erwan authored
      It was generetaing wrong code in conjunction with -ec.
      
      In particular, it was generating n-any "and" instead of binary "and".
      
      Also, I needed (in L2LExpandEnum) to generated a Lic.ARRAY of const
      instead of a Lic.Array_const_eff so that LicDump properly generated
      ec code.
      6f975e9b
  7. Jul 04, 2017
    • erwan's avatar
      More work on the -eeb option. · a6fab49a
      erwan authored
      To do that, I have created a new dedicated module L2lExpandEnum, that
      actually also deals with -eei (which was probably wrong, even if I
      have not counter-exemple).
      
      Use 1-hot encoding instead of log-encoding
      
      I've fixed a bug in L2lExpandArrays that occurs on equation such as
        some_bool = (some_array1 = some_array2);
      
      Also, I've rewritten Lv6Compile for more readability
      
      Remove duplicated code when using SocMap.find and co
      a6fab49a
  8. Mar 09, 2017
  9. Jan 09, 2017
  10. Nov 30, 2016
  11. Sep 20, 2016
    • Erwan Jahier's avatar
      -2cw7: generate C annotations (as comments) for Lesar/w7 · aa6d74b5
      Erwan Jahier authored
      so that w7/lesar can help otawa/ilp to prune path in the binary.
      
      nb : not working on the convertible example:
       - sometimes the module name still appear in the ident (enums)
       - clocks are not well supported by Lesar actually. More thinking is necessary.
      aa6d74b5
  12. Sep 13, 2016
  13. Sep 09, 2016
  14. Sep 05, 2016
  15. Aug 26, 2016
  16. Jun 01, 2016
  17. May 31, 2016
  18. May 27, 2016
  19. Jan 14, 2016
  20. Jul 01, 2015
  21. Feb 27, 2015
  22. Jan 21, 2015
    • Erwan Jahier's avatar
      Fix a couple of bugs in the -oite option. · 6af23f41
      Erwan Jahier authored
      - predef Lustre op were declared as memoryful.
      - expr like "if true then ..." were badly translated
      - The clock and types of some expressions created by L2lOptimIte had
        a bad arity (in presence of tuples)
      - in order to perform the -oite optim, also check that each branch is safe.
      6af23f41
  23. Jan 19, 2015
    • Erwan Jahier's avatar
      Add a --optimize-ite/-oite option that transforms if/then/else into merge when possible. · d783b03e
      Erwan Jahier authored
      Indeed it is possible when each branch of the ite updates no memory.
      This is done in the new L2lOptimIte module.
      
      For the time being, it does detect when the node has no memory. It
      only looks at the declaration: nodes have memory, and not functions.
      
      I should infer that information and raise warnings or errors if what
      I infer is not compatible with waht is declared (will come later).
      
      Also split ActionsDep into ActionsDep and Action.
      
      Also fix a bug in L2lsplit where deeply nested (>2) merge were not
      splitted.
      d783b03e
  24. Jan 07, 2015
    • Erwan Jahier's avatar
      Merge does not generate soc anymore ! · fcf73b92
      Erwan Jahier authored
      Also fix a bug in Lic2soc.make_e2a_elt where some deps and some
      actions were lost. Actually, this bug ought to be triggered only with
      nested calls. So this affects only programs executed via the
      -knc/-keep-nested-calls option. and -2c is not supposed to work in
      conjunction with -knc ! Hence this fix does not fix anything. But
      still it fixes potentially future code if I (or someone else) decide
      to handle nested calls in the lic one day.
      fcf73b92
  25. Nov 17, 2014
  26. Sep 02, 2014
    • Erwan Jahier's avatar
      -ei (and thus -ec): Fix a bug when translating condact. · 5ee67626
      Erwan Jahier authored
      The translation was faithfull to the comment, but the comment was wrong :
      in order to translate a condact, we need clocks (when) !
      
      node condact_toto(i0:bool; i1:int; i2:int) returns (o0:int) = Lustre::condact<<toto, 0>>;
      
      is now translated into:
      
      condact_toto(i0:bool; i1:int; i2:int) returns (o0:int)
      let
        o0 = if i0 then current(toto(i1 when i0, i2 when i0) ) else (0 fby o0);
      tel
      5ee67626
  27. Aug 26, 2014
  28. Aug 14, 2014
    • Erwan Jahier's avatar
      lic2soc: fix the translation of the current operator into SOC. · d3061085
      Erwan Jahier authored
      nb : the -exec mode was working because I did not use the generated soc,
      which was completely wrong.
      
      Note that to do that, I have modified the CURRENT variant of
      Lic.val_exp, to attach it the clock the current holds on. Indeed, the
      clock is mandatory to generated correct code...
      
      In an ideal world, this clock information may have explicitely been
      set by the user ("current(clk_of_X,X)" instead of "current(X)"), but
      for historical reason, it is not the case.
      
      Hence, this information is added as soon as it is available, namely,
      during clock checking.
      d3061085
  29. Jun 04, 2013
  30. May 21, 2013
  31. Apr 26, 2013
  32. Apr 12, 2013
    • Erwan Jahier's avatar
      lus2lic is now working from ldbg and ltop. · fa71e77c
      Erwan Jahier authored
      As far as ldbg is concerned, it only traces the toplevel node, at
      call event.
      
      Note that I needed to rename quite a lot of modules to avoid name clashes
      between lus2lic.a and ltop.
      
      I've also merged the Verbose module with the one of Lutin so that
      they can be shared (there were sharing 95% already).
      fa71e77c
  33. Apr 10, 2013
  34. Apr 04, 2013
    • Erwan Jahier's avatar
      The -exec mode now supports the merge statement. · 1ca66bc0
      Erwan Jahier authored
      In order to do that, I've generalised the type of merge : now the clock
      argument can be any expression. Some assert false still prevent its use,
      but it should be easy to get rid of them (I'll do that latter).
      1ca66bc0
  35. Apr 03, 2013
  36. Mar 27, 2013
    • Erwan Jahier's avatar
      Rework the type of Lic expressions w.r.t. predef expressions. · 28f47082
      Erwan Jahier authored
      1) At the Lic level, there's no reason to distinguish betwenn node
      calls, and predef node calls. Indeed it makes things simpler and more
      homogeneous afterwards.
      
      2) int strings are only converted when necessary (constant evaluation).
      
      3) const are handled directly under Lic.by_pos_op instead of being under
         PREDEF_CALL, which make things easier and more logical.
      28f47082
  37. Mar 25, 2013
  38. Mar 19, 2013
  39. Mar 05, 2013
  40. Feb 25, 2013
Loading