Genny, or “the ZOTI code generator”, is a synthesis flow tasked with
solving the problem of translating declarative system models into
deployable target code. This problem can be visualized as below as
transforming a graph-like model capturing relations between
constituent components, into a blocks structure representing glue and
boilerplate code.
In accordance to the ZOTI design goals, Genny decomposes
the translation problem (shown above) into a sequence of sub-problems
formulated as model-to-model transformations (shown below). As such,
Genny can be the base for various model-to-text tools tailored for
arbitrary custom target platforms from (virtually) the same input
format.
The sub-problems associated with tools can be formulated as follows:
is the extraction of the solved system model into a parsable
graph-based intermediate format. In this case, a solved system model1
captures every aspect of an implementation, e.g., application,
mapping, scheduling, resource allocation, etc., such that the
remaining process is only a matter of clerical translation to a
deployable (SW) artifact. For this purpose, in our use cases we use
an instance of ZOTI-Graph.
is the extraction of target-agnostic type information for all data
flowing through the system, for the purpose of generating
target-specific glue code, In our use-cases we use the
ZOTI-FTN format.
Graph-to-Blocks translation
represents custom-tailored scripts which gradually translate the
graph format into a blocks structure. In our use cases the scripts
are making heavy use of the APIs of ZOTI-Graph and
ZOTI-FTN, and the target format is meant to be parsed by
ZOTI-Gen.
is the final stage of translating the blocks structure into
consistent target code. This is peformed by selecting and expanding
templates from libraries of pre-written target-specific boilerplate
code and combining them based on the previously-generated
target-specific glue code. In our use cases we use the
ZOTI-Gen template expander.
Check the Examples page
for a list of published use-cases that implement instances of Genny.
possibly the output of a design space exploration process ↩