Baseline MDC Core
The core functionality of MDC tool is in charge of mapping a set of dataflow specification onto a CGR substrate, automating the mapping process while minimizing hardware resources. This issue is known in literature as the datapath merging problem. MDC solves it by exploiting two different solutions: (1) a heuristic algorithm, or (2) the application of the moreano algorithm.
Each network is formed by the interconnection of actors: abstract representations that implement a specific functionality. A network can consist of atomic or complex actors. An atomic actor is an elementary unit that cannot further decomposed. A complex actor is instead a subnet of actors that, in turn, can be atomic or even complex.
The Baseline MDC Core heuristic algorithm identifies the similarities (the common actors) between networks of atomic actors and merges them together in a unique multi-functional network. Input ports, output ports or actors can be shared between different networks if identical (same functionality) and compatible (same ports width). Sharing the common elements is made possible by the insertion of additional dedicated switching actors. The outputs of the MDC front-end of MDC are:
- the multi-dataflow graph (i.e. multi-functional);
- the configuration table that keeps track of the programmability of the switching actors.
The back end of MDC is called Platform Composer Tool. Starting from the multi-dataflow network generated by the front end, it produces the HDL description of the overall multi-functional platform. System reconfiguration is achieved at the physical level by the adoption of the Switching Boxes (SBoxes). These latter correspond to the switching actors inserted by the front end during the merging phase of the flattened input networks. The proper configuration of the SBoxes, according to the information stored in the configuration table produced by the front-end, allows MDC correctly executing all the different functionalities originally implemented by the different stand-alone networks.
MDC does not provide High-Level Synthesis (i.e. direct compilation of RTL code from the CAL high-level specification), so it is not able to generate the HDL code of the coarse grained reconfigurable system in a completely autonomous manner.