Status
This file contains varied information on the current status
of the ECL compiler as of 12 March 2001:
-
- 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).
-
- 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.
-
- 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.
-
- 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.
|