120 likes | 318 Views
Animation check for on-line presentations. Ellen M. Sentovich. Introduction. This is a short presentation to test animation capabilities in the video-presentation-on-web process. Disclaimer:
E N D
Animation check for on-line presentations Ellen M. Sentovich animation 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. animation check
Outline • Esterel : capabilities, example • ECL : language, compiler, capabilities, example • EsterelStudio • Technology & tool overview • Graphical formalism (SyncCharts) • Development tools (code generation, simulation, verification) animation 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 animation 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 animation check
loop abort [await A || await B] ; R R A B R emit O AB/O when R end B/O A/O Esterel : example concurrency pre-emption Specification: “Wait until both A and B have occurred, then output O, unless the reset R occurs” Explicit state machine: Esterel : Each reactive notion written once Number of states: exponential in inputs animation check
ECL Specification Esterel Code C - code Simulation Model Implementation in HW / SW ECL compilation C functions data handling reactive control Esterel Compiler to C Esterel Compiler to C/FSM animation check
while (1) { loop abort do { par await A; par await B; [await A || await B] ; emit O emit(O); when R end } abort(R); } ECL : example Specification: “Wait until both A and B have occurred, then output O, unless the reset R occurs” Esterel : ECL: concurrency pre-emption animation check
A program file.a file.b file.c Result 1 Analysis 2 Opt 1 Analysis 1 Analysis 3 De-proprietrized Flows Demo 3 Demo 1 Toolbox ! Demo 2 animation check
A program file.a file.b file.c Result 1 Analysis 2 Opt 1 Analysis 1 Analysis 3 De-proprietrized Flows Demo 4 animation check
Example : pre-compilation typedef { byte hdr[HSIZE]; byte data[DSIZE]; int crc; } frame_t; moduleframe_proc (inputbyte in, outputframe_t out) { signalframe_t frame;signalintbad_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 Reactive loop Concurrency Non-reactive loop animation check Pre-emption
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 */ moduleframe_proc: input in :byte; output out : frame_t; signalframe : frame_t, bad_crc:integer in var 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 awaitframe; crc_compute(crc, frame); if (crc != get_frame_crc(frame) then emit bad_crc end if;end loop || etc Compiled to C Compiled to Esterel Reactive loop Non-reactive loop animation check