MASC/Elastic System
Elastic System Tutorial
This tutorial is to demonstrate how to create an Elastic System design using the default MASC synthesis flow. The first you need, if you're not yet, is to familiarize with the concept of Elastic System, the following papers should give a good introduction to the topic SELF, LI_BDN and LIDs. Once you know enough about the concept of Elastic Systems, you need to get access to the RTL repo of the MASC lab (mascrtl), check instructions [GIT_Repository here].
A couple of remarks that may be useful for mapping the contents of the papers into the vocabulary used here. The names Elastic Systems, Latency Insensitive and Synchronous with Handshakes are different names used in the literature, but indicate the same thing (or almost the same thing). These approached have an automated flow that convert regular synchronous RTL code into elastic systems. That basically means that, there is a tool that automatically creates the handshake signals. There is also a pair of signals, one forward and one backward, but the names vary. Typically, the signals are named 'valid' (indicating that the data in the channel is valid) and 'stop' (indicating that the sender should stop sending data). The approach this tutorial discusses is a bit different, since in it, you are required to specify the
There is a few steps needed before actually getting into writing the elastic RTL code: create a project in the default MASC flow, import the files for the MASC elastic buffers (that we call stages).
== Creating