ZOTI

Zero Overhead Topology Infrastructure

  • Flows
  • Tools
  • Examples
  • Acknowledgements
  • View the Project on GitHub Ericsson/zoti

    Genny

    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.

    Illustration of the translation problem. The
	declarative specification model usually depicts a graph-like
	structure describing components and relations between them. On the
	other hand, the target model shows a structure which represents
	hierarchical blocks of code consistently glued together. Most
	often the original structure does not resemble to the resulted
	one, much rather needs to undergo a series of transformations that
	preserve the declared semantics in terms of target mechanisms.
    Illustration of the translation problem. The declarative specification model usually depicts a graph-like structure describing components and relations between them. On the other hand, the target model shows a structure which represents hierarchical blocks of code consistently glued together. Most often the original structure does not resemble to the resulted one, much rather needs to undergo a series of transformations that preserve the declared semantics in terms of target mechanisms.

    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 Genny synthesis flow. Each circle represents the
	problem domain of a specific tool. The flow starts with an
	unambiguous description of a system containing all implementation
	details. The generated artifacts are meant to be handed over to
	platform-specific CAD tools, e.g., compilers, deploy agents,
	etc.
    The Genny synthesis flow. Each circle represents the problem domain of a specific tool. The flow starts with an unambiguous description of a system containing all implementation details. The generated artifacts are meant to be handed over to platform-specific CAD tools, e.g., compilers, deploy agents, etc.

    The sub-problems associated with tools can be formulated as follows:

    Graph Description (ZOTI-Graph)
    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.
    Flexible Type Description (ZOTI-FTN)
    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.
    Template Expansion (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.


    1. possibly the output of a design space exploration process