Design and implementation I

Monday, July 09, 2007

Basic design description
Once the specifications are closed, the next step is the design process.
At this point is time to remember that our system has some input parameters in a design space, then the simulation runs, and at the end we have output data in terms of Latency and throughput.

Input parameters ---> Simulation ---> Output (Latency and Throughput)

The design approach is to design with modularity and flexibility goals in mind.
To achieve these goals the implementation is based on a C++ Object Oriented Code with a strong use of STL (Standard Template Library). With the Object Oriented Code an invisibility top-to-bottom is pursued as is shown in the figure.

One of the conclusions of the study of NoC was that the design space was huge in architectural possibilities. So it isn't realistic to design a system covering all the possibilities.
The goal is to design a base system, in which it is possible to add modules that describes some NoC architectural behaviour. Thus, the base system would cover a big design space, but the thesis would implement just one module for each NoC characteristic. So an implementation for many topologies, arbiters, flow control, commutation, routing and traffics rules is, as it is said before, ruled out.
The challenge is to built a good Base system. A good base system needs a study of common parts in the NoC design space. So each architectural main characteristic needs an examination to identify common parts between the different implementations.
After deciding which is the design space your base system is going to cover, the next step is to design the system. This design should have in mind one big quote "Adding new architectural descriptions must be easy if they are on the original design space".
One way of facing this quote is designing a modular system, in which each module describes a new behaviour of one NoC characteristic. Since the modules should be simple, the system needs an environment that implements functions to make easy adding modules to it.

My solution for these challenges was implementing modularity based on derived classes:

-System's core accesses the base class.
-All design space possibilities implemented in derived classes.

As an example, with this implementation the routing element is able to have modules describing X-Y routing algorithm, modules describing the XY- Adaptative routing algorithm and others describing other type of routing algorithm. All these description would be implemented in derived classes of routing.

Posted by Rayco Hern├índez Moreno at 8:38 PM  


My name is Rishi Divecha and I needed to know what are the different types of simulators that can be used for the implementation for the NoC 2D mesh network. Basically I am a student at NYU and am doing a project regarding the same. Please d reply me at

Anonymous said...
12/03/2008 3:03 PM  

Post a Comment