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 |