<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://c4d.lias-lab.fr/index.php?action=history&amp;feed=atom&amp;title=WP6-15</id>
	<title>WP6-15 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://c4d.lias-lab.fr/index.php?action=history&amp;feed=atom&amp;title=WP6-15"/>
	<link rel="alternate" type="text/html" href="https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;action=history"/>
	<updated>2026-04-07T01:16:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=510&amp;oldid=prev</id>
		<title>Uniss: /* Multi-Dataflow Composer */</title>
		<link rel="alternate" type="text/html" href="https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=510&amp;oldid=prev"/>
		<updated>2022-10-03T15:02:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Multi-Dataflow Composer&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:02, 3 October 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot;&gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MDC has been extended with a new backend compatible with the OODK tool (Component WP6-13), where a wrapper surrounding the accelerator is generated, enabling a direct connection from MDC to OODK.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MDC has been extended with a new backend compatible with the OODK tool (Component WP6-13), where a wrapper surrounding the accelerator is generated, enabling a direct connection from MDC to OODK.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:MDC_interoperability_graph.png|300px|thumb|frame|center| MDC interoperability graph]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Current Status==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Current Status==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki-mediawiki-:diff::1.12:old-508:rev-510 --&gt;
&lt;/table&gt;</summary>
		<author><name>Uniss</name></author>
	</entry>
	<entry>
		<id>https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=508&amp;oldid=prev</id>
		<title>Uniss: /* Multi-Dataflow Composer */</title>
		<link rel="alternate" type="text/html" href="https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=508&amp;oldid=prev"/>
		<updated>2022-10-03T15:00:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Multi-Dataflow Composer&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:00, 3 October 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|   Input	||  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|   Input	||  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dataflow application specification(s)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dataflow application specification(s)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* HDL actor definition(s)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* HDL actor definition(s)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki-mediawiki-:diff::1.12:old-507:rev-508 --&gt;
&lt;/table&gt;</summary>
		<author><name>Uniss</name></author>
	</entry>
	<entry>
		<id>https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=507&amp;oldid=prev</id>
		<title>Uniss: Created page with &quot;= Multi-Dataflow Composer = {|class=&quot;wikitable&quot; |  ID|| WP6-MDC |- |   Contributor	|| UNISS |- |   Levels	|| Tool |- |   Require	|| Application definition and FPGA-based System-on-Chip |- |   Provide	|| Ready-to-use reconfigurable HW accelerator |- |   Input	||  | * Dataflow application specification(s) * HDL actor definition(s) * Communication protocol * Target architecture |- |   Output	||  * Multi-dataflow network * Coarse-grained reconfigurable accelerator RTL * Co-p...&quot;</title>
		<link rel="alternate" type="text/html" href="https://c4d.lias-lab.fr/index.php?title=WP6-15&amp;diff=507&amp;oldid=prev"/>
		<updated>2022-10-03T14:59:39Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Multi-Dataflow Composer = {|class=&amp;quot;wikitable&amp;quot; |  ID|| WP6-MDC |- |   Contributor	|| UNISS |- |   Levels	|| Tool |- |   Require	|| Application definition and FPGA-based System-on-Chip |- |   Provide	|| Ready-to-use reconfigurable HW accelerator |- |   Input	||  | * Dataflow application specification(s) * HDL actor definition(s) * Communication protocol * Target architecture |- |   Output	||  * Multi-dataflow network * Coarse-grained reconfigurable accelerator RTL * Co-p...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Multi-Dataflow Composer =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|  ID|| WP6-MDC&lt;br /&gt;
|-&lt;br /&gt;
|   Contributor	|| UNISS&lt;br /&gt;
|-&lt;br /&gt;
|   Levels	|| Tool&lt;br /&gt;
|-&lt;br /&gt;
|   Require	|| Application definition and FPGA-based System-on-Chip&lt;br /&gt;
|-&lt;br /&gt;
|   Provide	|| Ready-to-use reconfigurable HW accelerator&lt;br /&gt;
|-&lt;br /&gt;
|   Input	|| &lt;br /&gt;
|&lt;br /&gt;
* Dataflow application specification(s)&lt;br /&gt;
* HDL actor definition(s)&lt;br /&gt;
* Communication protocol&lt;br /&gt;
* Target architecture&lt;br /&gt;
|-&lt;br /&gt;
|   Output	|| &lt;br /&gt;
* Multi-dataflow network&lt;br /&gt;
* Coarse-grained reconfigurable accelerator RTL&lt;br /&gt;
* Co-processor RTL&lt;br /&gt;
* Programming tables&lt;br /&gt;
|-&lt;br /&gt;
|   C4D tooling		|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
|   TRL		|| 5/6&lt;br /&gt;
|-&lt;br /&gt;
|   License	|| Open-source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Description ==&lt;br /&gt;
&lt;br /&gt;
Although FPGA technology has the potential to satisfy the many performances, energy and predictability requirements of drone systems and applications, FPGA development is notoriously a complex task.&lt;br /&gt;
&lt;br /&gt;
To deal with this problematic, the baseline feature of this component revolves around the composition of coarse-grained reconfigurable HW accelerators (CGRA) starting from a set of dataflow applications. The baseline feature involves two main components:&lt;br /&gt;
&lt;br /&gt;
* '''Multi-Dataflow Generator (MDG)''': it merges together different dataflows into one unique reconfigurable multi-dataflow by the insertion of switching modules. Currently, two merging algorithms are supported: empiric and Moreano. The former is more suitable for non-recursive dataflows but less optimized than the latter.&lt;br /&gt;
* '''Platform composer (PC)''': it derives the RTL description of the CGRA from the multi-dataflow. It requires the user to define the communication protocol between actors in hardware (XML) and the RTL description of the actors involved in the dataflows (HDL Components Library, HCL).&lt;br /&gt;
This component also provides an automatic coprocessor generation, which automatically embeds the generated CGRA into a ready-to-use Xilinx IP. The user can choose among different options:&lt;br /&gt;
&lt;br /&gt;
* '''Processor''': soft-core (Microblaze) or hardcore (ARM)&lt;br /&gt;
* '''Processor-Coprocessor coupling''': Memory-mapped or FIFO-based&lt;br /&gt;
* '''Direct Access Memory Module''': enable or not the usage of DMA&lt;br /&gt;
&lt;br /&gt;
==Contribution and Improvements==&lt;br /&gt;
Regarding the contribution associated to C4D, this component will be extended to be able to automatically generate plug-and-play coarse-grained reconfigurable HW accelerators that can be used by WP6-13 component.&lt;br /&gt;
&lt;br /&gt;
In the specific case of UC5-D1, the MDC tool is used to model the application that needs to be accelerated on an FPGA so as to meet real-time responses: an AES encryption/decryption block provided by RO Technologies. To do so, the application is divided in sub-blocks (called actors) that will be automatically interconnected thanks to the code generation capabilities of the tool. Each of these actors have been implemented in Verilog/SystemVerilog. Additionally, since the tool automatically connects the actors using First-In-First-Out (FIFO) blocks (already available in the tool repository), pipelining is transparently and automatically enabled within the accelerator.&lt;br /&gt;
&lt;br /&gt;
== Interoperability with other C4D tools ==&lt;br /&gt;
&lt;br /&gt;
MDC has been extended with a new backend compatible with the OODK tool (Component WP6-13), where a wrapper surrounding the accelerator is generated, enabling a direct connection from MDC to OODK.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
MDC has been tested in the context of UC5-D1 to model the application that needs to be accelerated on an FPGA so as to meet real-time responses: an AES encryption/decryption block provided by RO Technologies. It has successfully achieved a performance improvement of 2x.&lt;br /&gt;
&lt;br /&gt;
==Design and Implementation==&lt;br /&gt;
&lt;br /&gt;
Considering the specific context of C4D, the tool output is directly connected to the OODK toolchain. Consequently, the design and implementation flow works as follows:&lt;br /&gt;
&lt;br /&gt;
* Define the three inputs that are required:&lt;br /&gt;
** Implement the task(s) to be accelerated using a dataflow approach.&lt;br /&gt;
** Define the HDL version of the actors composing the tasks (manually or with HLS tools).&lt;br /&gt;
** Define the communication protocol to be used inside and outside the accelerator.&lt;br /&gt;
* Using the MDG functionality, if more than one task has been specified, merge the tasks to be accelerated into a reconfigurable multi-dataflow.&lt;br /&gt;
* Depending on the target architecture, the user must select the files to be generated, that could include the accelerator RTL description and a wrapping logic surrounding the accelerator itself that could allow the user to 1) use the coarse-grained reconfigurable accelerator as a co-processor or 2) to plug the accelerator with an FPGA overlay, as in the case of this project.&lt;br /&gt;
* Run the automatically generated scripts to port the code to Vivado.&lt;br /&gt;
* Synthesize and implement it on the target FPGA device.&lt;/div&gt;</summary>
		<author><name>Uniss</name></author>
	</entry>
</feed>