5 mar 001animation check animation check for on-line presentations ellen m. sentovich
TRANSCRIPT
5 Mar 00 1animation check
Animation check for on-line presentations
Ellen M. Sentovich
5 Mar 00 2animation check
Introduction
This is a short presentation to test animation capabilities in the video-presentation-on-web process.
Disclaimer:
– The slides are taken from several different presentations on similar topics, and now make no sense whatsoever.
– The author accepts no responsibility for the use of their content in any design flows.
Many types of animation are mixed together on purpose.
– The author accepts no responsibility for viewers who may be subsequently overwhelmed or confused by the images.
5 Mar 00 3animation check
Outline Technology & tool overview
– Esterel : capabilities, example
– ECL : language, compiler, capabilities, example
– EsterelStudio
– Graphical formalism (SyncCharts)
– Development tools (code generation, simulation, verification)
5 Mar 00 4animation check
People
ECL
– CBL : Luciano Lavagno, Ellen Sentovich, Roberto Passerone
Esterel
– CMA (France) : Gérard Berry et al
– CBL has a research contract with CMA
EsterelStudio
– Simulog (France)
– Research project (French gov’t) with Cadence
5 Mar 00 5animation check
Esterel
Features
– Language: efficient for specifying state machines
– signal communication, pre-emption, concurrency
– Semantics: formal, clean, underlying deterministic FSM
– advanced analysis tools available
– HW or SW implementation possible
– Compiler: well-developed (10+ years), implicit (efficient)
– Tools : graphical simulation, verification, code generation
– free access to binaries
5 Mar 00 6animation check
Esterel : example
Specification: “Wait until both A and B have occurred, then output O, unless the reset R occurs”
A
B/O
B
A/O
AB/O
RR
R
Number of states: exponential in inputs
[await A || await B] ;
emit O
abort
when R
loop
end
Explicit state machine: Esterel :
Each reactive notion written once
concurrency pre-emption
5 Mar 00 7animation check
ECL compilation
Implementationin HW / SW
ECLSpecification
Esterel Code C - code
C functionsdata handling reactive control
Simulation Model
EsterelCompiler to C
EsterelCompiler to C/FSM
5 Mar 00 8animation check
ECL : example
Specification: “Wait until both A and B have occurred, then output O, unless the reset R occurs”
[await A || await B] ;
emit O
abort
when R
loop
end
Esterel :concurrency
pre-emption
while (1) {
}
do {
} abort(R);
emit(O);
par await A;par await B;
ECL:
5 Mar 00 9animation check
De-proprietrized Flows
file.a
file.b file.c
Result 1
Demo 1
Analysis 1 Analysis 2
Demo 3
A program
Analysis 3 Opt 1
Demo 2
Toolbox !
5 Mar 00 10animation check
De-proprietrized Flows
file.a
file.b file.c
Result 1
A program
Analysis 1 Analysis 2
Demo 4
Analysis 3 Opt 1
5 Mar 00 11animation check
Example : pre-compilationtypedef { byte hdr[HSIZE]; byte data[DSIZE]; int crc; } frame_t;module frame_proc (input byte in, output frame_t out){ signal frame_t frame; signal int bad_crc; byte buf[SIZE]; frame_t f; int crc; par { while (1) { /* get bytes into frame */ for (i = 0; i < SIZE; i++) {await (in); buf[i] = in;} create_frame_from_buffer(&f, buf); emit (frame, f); } while (1) { /* check CRC */ await (frame); for (i = 0; i < HSIZE; i++) crc ^= frame.hdr[i]; if (crc != frame.crc) emit (bad_crc); } while (1) { /* process address (if correct) */ await (frame); do { /* … */; emit (out, frame) } abort (bad_crc); } }}
C data type
Pre-emption
Non-reactive loop
Reactive loop
Concurrency
5 Mar 00 12animation check
Example : post-compilation
typedef { byte hdr[HSIZE]; data[DSIZE]; int crc } frame_t;void crc_compute(int crc, frame_t frame) { for (i = 0; i < HSIZE; i++) crc ^= frame.hdr[i]; }/* plus interface functions such as set_buffer_i */
module frame_proc:input in : byte;output out : frame_t;signal frame : frame_t, bad_crc:integer invar buf : frame_t, crc:integer in loop % get bytes into frame trap DONE in cnt := 0; loop {await in; set_buffer_i(buffer, i, in); if (cnt < SIZE) else exit DONE end if;} end loop emit frame(?buffer); end trap; end loop|| loop % check CRC await frame; crc_compute(crc, frame); if (crc != get_frame_crc(frame) then emit bad_crc end if; end loop || etc
Compiled to C
Compiled toEsterel
Reactive loop
Non-reactive loop