Channel mapping and interface refinement

In this (size=5.0Mbytes, duration=14m4s) example, YAPI FIFOs are mapped onto so-called TTL channels, thereby implicitly performing an API transformation of the process network. On top of this transformation, interface refinement is demonstrated.

First, an initial version of a generic mapping file is generated. This is modified such that YAPI FIFOs are mapped onto TTL channels - as defined by the TTL APISPECIFICATION - ; effectively mapping a YAPI process network into a TTL process network. Second, additional mapping directives specify interface refinement; variable mapping, and task mapping (+ howto synchronize newly created channels). For one process, the original source code and transformed source code is shown.

Potentially, interface refinement is a very powerfull technique to go from a functional specification towards efficient implementation. However, additional transformations are still required to improve the usability and user friendliness of this technique. An user interface for interface refinement in SCATE would be very welcome.

Commands issued during this demo:

> scotty -setup create toplevel Makefile for scotty
> e Makefile-ScottySetup edit toplevel Makefile
comment-out MPC since it is a well defined environment variable
check if CPP_INCLUDES path for YAPI is well defined
check if APISPECIFICATION is well defined for example at hand
provide symbol table file to scotty to speed up the parsing process
set default channel size on 2048
> make -f Makefile-ScottySetup create the required Makefile to execute the scotty tool
> make -f Makefile-Scotty execute the scotty tool via this generated Makefile
> mv JPEG.map JPEG.map.ttl rename the generated (generic) mapping file
> e JPEG.map.ttl edit the mapping file
replacing YAPI defined FIFOs by TTL defined Channels
> e Makefile-ScottySetup edit toplevel Makefile
add APISPECIFICATION of TTL
add mapping file
a default channel size is no longer needed since it is defined in JPEG.map.ttl
> make -f Makefile-ScottySetup create the required Makefile to execute the scotty tool
> make -f Makefile-Scotty execute the scotty tool via this generated Makefile
> e IZZ.cc.MPC show content intermediate process file
> e izz.cc show how the original content looked like
SCOPE defines the scope of functional transformations.
ENTRY / LEAVE defines the synchronization points after transformation
> diff JPEG.map.ttl JPEG.map.2to4.allinone diff w.r.t. a predefined mapping showing all extra info needed to do refinement i.e.; variable mapping, task mapping, and synchronization of newly created channels. It is this JPEG.map.2to4.allinone mapping file which will actually be used
> e $TRIPLEMROOT/share/mapping/transform.dat show which functional transformations are used
> e Makefile-ScottySetup edit toplevel Makefile
use predefined mapping file
use predefined functional transformations
add EXTRA_FLAGS for removal of unused ports / channels
> make -f Makefile-ScottySetup create the required Makefile to execute the scotty tool
> make -f Makefile-Scotty execute the scotty tool via this generated Makefile
> e IZZ.cc.MPC show task after transformation
> e izz.cc compare with task before transformation
Last modified: Fri Feb 10 13:24:55 CET 2006