Giter VIP home page Giter VIP logo

networkonchip's Introduction

NetworkOnChip

Development of a Network on Chip Simulation using SystemC.

This is the final project of the course Silicon Systems Modelling at University of Brasília @ 01/2017.

Objectives

This project has as final objective the development of a NoC with the following characteristics:

Router Architecture

The NoC Router will have the following characteristics:

  • Routing - Using XY-Algorithm.
  • Switching Scheme - Wormhole Switching.
  • Flow Control - Handshaking Signal based.
  • Arbiter Scheme - Round-Robin Algorithm. *
  • Using VC (Virtual Channel)

*As a development decision the arbiter scheme changed from FCFS (First Come First Serve).

The messages will be divide in packets with N-flits with 32-bits depth. The first flit will be used as header to allocate network resources to be used by the following data flits.

The Header flit will divided as:

------------------------------------------------------------------------------------------

| source ID (8 bits) | destination ID (8 bits) | packet size (16 bits) |

------------------------------------------------------------------------------------------

The subsequently flits after the header will be responsible to only carry the data.

A packet size can range its size from 2 to 2^16 + 1.

Currently the message only has a single packet. #ISSUE-15

Network Interface Architecture

The NoC NI will have the following characteristics:

  • Back-End - Responsible for encapsulate/desencapsulate the message in a group of packets to be send by the router.
  • Front-End - Used as wrapper to make sure the different PE can communicate through the NoC.

Processor Elements

The NoC will be used in MpSoC with elements developed by other groups. The following PE are expected to be connected in our NoC:

  • Risc-V Processor
  • MIPS Processor
  • Graphic Unit
  • Shared Memory
  • Criptographic Unit

Group Members

  • Jessé Barreto
  • Javier Sánchez
  • João Carlos Passos
  • Pedro
  • Adalberto Gualeve (Group Supervisor)

Compilation Process

This project was developed and tested in GNU-Linux OS using SystemC=2.3, C++11 and CMake>=2.8. To compile this project follow these steps:

  • Install Gnu Make: sudo apt-get install make
  • Install CMake: sudo apt-get install cmake
  • Install SystemC from: http://accellera.org/images/downloads/standards/systemc/systemc-2.3.1a.tar.gz
  • Make sure there is a copy of SystemC library at /opt/systemc-2.3.1a
    • Or feel free to change the CMakeLists.txt and change systemc path in your system.
  • Create a build folder: mkdir build && cd build
  • Run CMake to configure a make file in the build folder: cmake ..
  • Run Make to Compile the project: make
  • Run the test executable bin: ./NoC

Bibliography

  • SUDEEP PASRICHA & NIKIL DUTT, On-Chip Communication Architectures - System On Chip Interconnect, Morgan-Kauffmann, 2008, Chap. 12
  • Agarwal, Ankur, Cyril Iskander, and Ravi Shankar. "Survey of network on chip (noc) architectures & contributions." Journal of engineering, Computing and Architecture 3.1 (2009): 21-27.
  • Zeferino, Cesar Albenes, Márcio Eduardo Kreutz, and Altamiro Amadeu Susin. "RASoC: A router soft-core for networks-on-chip." Design, Automation and Test in Europe Conference and Exhibition, 2004. Proceedings. Vol. 3. IEEE, 2004.
  • Dimitrakopoulos, Giorgos, Psarras, Anastasios, and Ioannis Seitanidis, Microarchitecture of Network-onChip Routers - A Designer's Perspective, Springer, 2015.

networkonchip's People

Contributors

gualeve avatar jessebarreto avatar jpassos92 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

networkonchip's Issues

Develop Flow Control

Flow Control Algorithm

The NoC has to have some sort of synchronisation mechanism to data transverse though.

Example: Buffered Flow Control Handshake Validation [Preferable]

Refactor RouterChannel

Fix the data transmission scheme in router channels.

Data can come and go at the same time in the routers.

Encapsulate the flit into a Class

The Flit should also carry information for debug purposes in simulation time.

Members of the Flit:

  • Flit data

  • Flit id on simulation

  • Flit id on packet

Develop the Routing algorithm.

Routing Algorithm

The router has to have a routing algorithm to decide the path which a flit has to follow to go from the source router to the destination router.

Example: XY routing algorithm [Preferable].

Example

The Receiver and Sender are mixed up.

Develop Arbiter Algorithm

Arbiter Algorithm

The Router has to have an arbiter algorithm which is capable of decide which flit has to be sent first given a conflict.

Possibilities are: RR (Round Robin) and FCFS (First Come First Serve) [Preferable]

Include bibliography

Include the bibliography used in the project .

Also, document the basic structure.

Memory Size

On noc_common.h, line 40, this memory_size was used in the old code to setup the the mips' memory size, which isn' t necessary in this version, as the memory is been build by another group.

Documentation

  1. Generate simple documentation about the interface used by the PE modules (shell and kernel) with a example as reference to the other groups. (22/06)
  2. General description about the project: indroduction, methodology, conslusion and etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.