|
The new Interface Generator creates highly customized channels for data
communication between modules and threads in your design. This greatly improves the process of converting single-threaded C++
algorithms to multi-thread or multi-module hardware architectures.
In order to meet throughput and latency goals, it is typically
necessary to convert C++ algorithms into multiple SystemC threads
that execute in parallel, either in a single module or across
multiple modules. Each thread can begin processing as soon as enough
required data is available, rather than wait for the earlier parts
of the algorithm to finish processing all of the data. Cynthesizer
has always supported multi-thread and multi-module designs.
Cynthesizer's Interface Generator makes it much easier to set up data
communications across multiple threads, especially when trying to meet
tight area and performance requirements. Such communications require correct
storage definitions (FIFOs, circular buffers, streams etc.) and
correct synchronization across threads (to avoid dropping data or
overwriting inputs etc.).
The new Interface Generator automatically generates a correct,
safe and efficient mechanism of data transfer between multiple
threads and modules. The Interface Generator is a GUI application
that is part of the Cynthesizer Workbench. It is used to build
custom SystemC channels that reside in libraries. These channels are
used by the user-written threads to transfer data safely, using a
standard set of functions. These channels are synthesized together
with the algorithm threads to RTL by Cynthesizer.
The Interface Generator supports several types of custom
channels, such as streaming, circular buffers, shared memories and
so on. Each channel itself can be customized in terms of its
specific data type, capacity, synchronization mechanism and other
parameters. This technology makes it very easy to build fully
synthesizable data-transfer channels that are highly customized to
your specific algorithm, resulting in efficient RTL quickly. It also
makes it easy to substitute different channels for different
configurations, thus allowing you to explore the optimum
architecture of your system.
 |