Status

Home ] About ECL ] [ Status ] Code ] People ] Links ] ContactUs ]

logo_footer.gif (1496 bytes)

Go to SourceForge ECL Project


Status

This file contains varied information on the current status of the ECL compiler as of 12 March 2001:

  • Regression Test Status

    • constants.ecl may fail on Unix with Esterel v6. The fix is to get v6_01
    • stdio_sizeof.ecl will fail on NT. This is probably a Microsoft bug, see Known Problems below.
    • char_problem.ecl fails for Esterel simulation. This is a longterm TODO, to fix it we have to automatically generate Esterel simulation functions (to_text, etc).
  • TODO -- short term

    • Assignments inside expressions don't work unless they are the first node.
    • Add error messages.
    • Add type checking.
    • Add: mutex() and implies() to support Esterel relations and implications.
    • Since the yield() function now exists in Whitebox C in VCC, add support for it in ECL. This is like await(tick) or pause in Esterel.
  • TODO -- long term

    • ECL:
      • Get gcc debugging working on NT.
      • Currently NT seems to only allow up to 9 arguments on the command line.  If this becomes a limitation for us, it will have to be fixed.
      • Add passing signal presences to C functions.  It seems that it is useful to pass signal presence statuses
        also. Why shouldn't I be able to write

        ECL:
        signal int a;
        signal pure o, p;
        for (i = 0; i < a; i++) {
          present(o) {stmt1;}
          present(p) {stmt2;}
        }

        Extracted Esterel:
        boolean o_bool, p_bool;
        present o then o_bool := true;
        present p then p_bool := true;
        my_extracted(i, a, o_bool, p_bool);

        Extracted C:
        my_extracted(i, a, o, p) {for (i = 0; i < a; i++) {if (o) stmt1; if (p) stmt2;}
      • Add window-based command entry and option specification.
      • We could make the parser code more compact (there is a lot of redundancy) but this would adversely affect readability, and with the latest version of java_cup it seems to be efficient enough.
      • We might one day like to provide auxiliary .h files to transform ECL input into a similar syntax, but one that is parsable by a standard ANSI-C parser.
        Substitutions:
        abort(sig_exp)
        ® while(_abort(sig_exp))  (same for weak_abort, suspend, and handle)
        halt()
        ® do await(); while (1)
        present(sig_exp)
        ® if (_present(sig_exp))
        break
        ® _break() (same for continue)
        boolean and pure are defined to be int

        We also might want to provide a header file that provides some Esterel-programmer conveniences.
        Example: loop
        ® for(;;) /* optional */
    • Esterel related:
      • xes: take current state, simply, then highlight active paths according to inputs/outputs
    • VCC related:
      • VCC Import of code with stdio.h: user must add (properties of white.c,platforms, NT) library name by hand, include files, WINNT option.
      • Eventual SHIFT production for data and control: we need to generate the user-defined types in a library referenced by the cds.lib file in order for the SHIFT flow to find the type definitions and work properly.
  • Known Problems

    • Related to VCC:
      • The Whitebox C compilation still does not handle function pointers correctly. In debug node in ECL (-G), the file.c and file.h files are not included in white.c. They are compiled separately and must be linked in.
      • vccPrintPdxDebugInfo does not work on debug models. This function cannot be used outside of a white.c file.  As long as it has no extern declaration, it can be used and the files will link and compile, but the printing is not done.
      • Sometimes the .h files do not exist when we need them for ECL, and the user needs to compile the white view by hand to create them. For creating the .h files, Max says:
        fxtype2ctype -cdslib cds.lib typelib mytype
        you will see in workspace\mytypelib\mytype\type_definition\ the files type.def, mytpelib_mytype.h, mytype.h.  Note that mytpelib_mytype.h mytype.h are identical but having both allows for including the type header by cell name only or by lib and cell name.
    • Related to Esterel:
      • Bug: an Esterel program with only a procedure call in the body fails on NT. Example:
        b.strl :
        module b :
        procedure my_proc()();
        input a;
        output b;
        call my_proc()()
        end module
        b.h :
        #include <stdio.h>
        void my_proc()
        {
          (void) fprintf(stdout, "Did it !\n");
        }
        Commands to run: esterel -simul b.strl; cl b.c /link /nodefaultlib %ESTEREL%\lib\libcsimul.a -subsystem:console msvcrt.lib; b.exe; ; (in simulator).   Bug sent to Esterel team on 1/29/01. This causes regression/stdio_sizeof.ecl to fail on NT. The Esterel team thinks it is a bug from Microsoft, since the following works: cl -c /Z7 /Od /MD b.c
      • Bug: constants.ecl fails on Unix when run with esterel v6. Bug sent to Esterel team on 1/29/01. Apparently v6_00 is obsolete.